diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-02 15:23:50 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-02 15:35:18 +0200 |
commit | 0a52eba3c0ba1c3ddaa263f83db8b64c3058824c (patch) | |
tree | 45f8a211fd4ded1b528df1a526f8ba35ebda4f7f /src/plugins/platforms/cocoa/qcocoakeymapper.mm | |
parent | 0ad35db302a4945edeb057cb77da69b3af63671d (diff) |
macOS: Move Cocoa modifier mapping logic to QCocoaKeyMapper
Along with similar logic for Carbon.
Change-Id: Ie32f8ffa336006387d50d3b9e8491816aba4ea04
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoakeymapper.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoakeymapper.mm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoakeymapper.mm b/src/plugins/platforms/cocoa/qcocoakeymapper.mm index 86143f275b..40d13e2d6a 100644 --- a/src/plugins/platforms/cocoa/qcocoakeymapper.mm +++ b/src/plugins/platforms/cocoa/qcocoakeymapper.mm @@ -50,6 +50,23 @@ Q_LOGGING_CATEGORY(lcQpaKeyMapper, "qt.qpa.keymapper"); Q_LOGGING_CATEGORY(lcQpaKeyMapperKeys, "qt.qpa.keymapper.keys"); Q_LOGGING_CATEGORY(lcQpaKeyMapperModifiers, "qt.qpa.keymapper.modifiers"); +Qt::KeyboardModifiers QCocoaKeyMapper::fromCocoaModifiers(NSEventModifierFlags cocoaModifiers) +{ + const bool dontSwapCtrlAndMeta = qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta); + Qt::KeyboardModifiers qtMods =Qt::NoModifier; + if (cocoaModifiers & NSEventModifierFlagShift) + qtMods |= Qt::ShiftModifier; + if (cocoaModifiers & NSEventModifierFlagControl) + qtMods |= dontSwapCtrlAndMeta ? Qt::ControlModifier : Qt::MetaModifier; + if (cocoaModifiers & NSEventModifierFlagOption) + qtMods |= Qt::AltModifier; + if (cocoaModifiers & NSEventModifierFlagCommand) + qtMods |= dontSwapCtrlAndMeta ? Qt::MetaModifier : Qt::ControlModifier; + if (cocoaModifiers & NSEventModifierFlagNumericPad) + qtMods |= Qt::KeypadModifier; + return qtMods; +} + static constexpr std::tuple<int, Qt::KeyboardModifier> carbonModifierMap[] = { { shiftKey, Qt::ShiftModifier }, { rightShiftKey, Qt::ShiftModifier }, |