Skip to content

Commit

Permalink
Fix using modifier keys
Browse files Browse the repository at this point in the history
* Fix error in regex that prevented use of modifier keys in general.
* Added '#' modifier to press the "Meta" button. This correlates to the Windows key on Windows and Command key on macOS.
* Fix #6695 - send proper modifier keys based on documentation
  • Loading branch information
droidmonkey committed Feb 9, 2022
1 parent 1150b69 commit 58615d7
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/autotype/AutoType.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ AutoType::parseSequence(const QString& entrySequence, const Entry* entry, QStrin
// Group 3 = inner placeholder (allows nested placeholders)
// Group 4 = repeat (opt)
// Group 5 = character
QRegularExpression regex("([+%^]*)({((?>[^{}]+?|(?2))+?)(?:\\s+(\\d+))?})|(.)");
QRegularExpression regex("([+%^#]*)(?:({((?>[^{}]+?|(?2))+?)(?:\\s+(\\d+))?})|(.))");
auto results = regex.globalMatch(sequence);
while (results.hasNext()) {
auto match = results.next();
Expand All @@ -569,6 +569,9 @@ AutoType::parseSequence(const QString& entrySequence, const Entry* entry, QStrin
if (match.captured(1).contains('%')) {
modifiers |= Qt::AltModifier;
}
if (match.captured(1).contains('#')) {
modifiers |= Qt::MetaModifier;
}

const auto fullPlaceholder = match.captured(2);
auto placeholder = match.captured(3).toLower();
Expand Down
6 changes: 6 additions & 0 deletions src/autotype/mac/AutoTypeMac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@ AutoTypeAction::Result AutoTypeExecutorMac::execType(const AutoTypeKey* action)
if (action->modifiers & Qt::AltModifier) {
m_platform->sendKey(Qt::Key_Alt, true);
}
if (action->modifiers & Qt::MetaModifier) {
m_platform->sendKey(Qt::Key_Meta, true);
}

if (action->key != Qt::Key_unknown) {
m_platform->sendKey(action->key, true);
Expand All @@ -250,6 +253,9 @@ AutoTypeAction::Result AutoTypeExecutorMac::execType(const AutoTypeKey* action)
if (action->modifiers & Qt::AltModifier) {
m_platform->sendKey(Qt::Key_Alt, false);
}
if (action->modifiers & Qt::MetaModifier) {
m_platform->sendKey(Qt::Key_Meta, false);
}

Tools::sleep(execDelayMs);
return AutoTypeAction::Result::Ok();
Expand Down
6 changes: 6 additions & 0 deletions src/autotype/windows/AutoTypeWindows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,9 @@ AutoTypeAction::Result AutoTypeExecutorWin::execType(const AutoTypeKey* action)
if (action->modifiers & Qt::AltModifier) {
m_platform->sendKey(Qt::Key_Alt, true);
}
if (action->modifiers & Qt::MetaModifier) {
m_platform->sendKey(Qt::Key_Meta, true);
}

if (action->key != Qt::Key_unknown) {
m_platform->sendKey(action->key, true);
Expand All @@ -297,6 +300,9 @@ AutoTypeAction::Result AutoTypeExecutorWin::execType(const AutoTypeKey* action)
if (action->modifiers & Qt::AltModifier) {
m_platform->sendKey(Qt::Key_Alt, false);
}
if (action->modifiers & Qt::MetaModifier) {
m_platform->sendKey(Qt::Key_Meta, false);
}

Tools::sleep(execDelayMs);
return AutoTypeAction::Result::Ok();
Expand Down
4 changes: 4 additions & 0 deletions src/gui/osutils/macutils/MacUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,10 @@ uint16 MacUtils::qtToNativeKeyCode(Qt::Key key)
case Qt::Key_Shift:
return kVK_Shift;
case Qt::Key_Control:
return kVK_Control;
case Qt::Key_Alt:
return kVK_Option;
case Qt::Key_Meta:
return kVK_Command;
case Qt::Key_Backspace:
return kVK_Delete;
Expand Down
2 changes: 2 additions & 0 deletions src/gui/osutils/winutils/WinUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,8 @@ WORD WinUtils::qtToNativeKeyCode(Qt::Key key)
return VK_DELETE; // 0x2E
case Qt::Key_Help:
return VK_HELP; // 0x2F
case Qt::Key_Meta:
return VK_LWIN; // 0x5B

case Qt::Key_F1:
return VK_F1; // 0x70
Expand Down

0 comments on commit 58615d7

Please sign in to comment.