mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-01-12 15:59:58 -05:00
Fix using modifier keys
* 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
This commit is contained in:
parent
1150b69836
commit
58615d78bd
@ -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();
|
||||
@ -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();
|
||||
|
@ -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);
|
||||
@ -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();
|
||||
|
@ -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);
|
||||
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user