diff options
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoakeymapper.mm | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoakeymapper.mm b/src/plugins/platforms/cocoa/qcocoakeymapper.mm index 97f1df151b..2cb2fd0255 100644 --- a/src/plugins/platforms/cocoa/qcocoakeymapper.mm +++ b/src/plugins/platforms/cocoa/qcocoakeymapper.mm @@ -84,34 +84,23 @@ Qt::KeyboardModifiers QCocoaKeyMapper::fromCocoaModifiers(NSEventModifierFlags c return swapModifiersIfNeeded(qtModifiers); } -static constexpr std::tuple<int, Qt::KeyboardModifier> carbonModifierMap[] = { - { shiftKey, Qt::ShiftModifier }, - { rightShiftKey, Qt::ShiftModifier }, - { controlKey, Qt::ControlModifier }, - { rightControlKey, Qt::ControlModifier }, - { cmdKey, Qt::MetaModifier }, - { optionKey, Qt::AltModifier }, - { rightOptionKey, Qt::AltModifier }, - { kEventKeyModifierNumLockMask, Qt::KeypadModifier } -}; - using CarbonModifiers = UInt32; // As opposed to EventModifiers which is UInt16 -Qt::KeyboardModifiers fromCarbonModifiers(CarbonModifiers carbonModifiers) -{ - Qt::KeyboardModifiers qtModifiers = Qt::NoModifier; - for (const auto &[carbonModifier, qtModifier] : carbonModifierMap) { - if (carbonModifiers & carbonModifier) - qtModifiers |= qtModifier; - } - - return swapModifiersIfNeeded(qtModifiers); -} - static CarbonModifiers toCarbonModifiers(Qt::KeyboardModifiers qtModifiers) { qtModifiers = swapModifiersIfNeeded(qtModifiers); + static constexpr std::tuple<int, Qt::KeyboardModifier> carbonModifierMap[] = { + { shiftKey, Qt::ShiftModifier }, + { rightShiftKey, Qt::ShiftModifier }, + { controlKey, Qt::ControlModifier }, + { rightControlKey, Qt::ControlModifier }, + { cmdKey, Qt::MetaModifier }, + { optionKey, Qt::AltModifier }, + { rightOptionKey, Qt::AltModifier }, + { kEventKeyModifierNumLockMask, Qt::KeypadModifier } + }; + CarbonModifiers carbonModifiers = 0; for (const auto &[carbonModifier, qtModifier] : carbonModifierMap) { if (qtModifiers & qtModifier) @@ -394,7 +383,7 @@ QCocoaKeyMapper::~QCocoaKeyMapper() Qt::KeyboardModifiers QCocoaKeyMapper::queryKeyboardModifiers() { - return fromCarbonModifiers(GetCurrentKeyModifiers()); + return fromCocoaModifiers(NSEvent.modifierFlags); } bool QCocoaKeyMapper::updateKeyboard() |