summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoakeymapper.mm
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-02 15:23:50 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-02 15:35:18 +0200
commit0a52eba3c0ba1c3ddaa263f83db8b64c3058824c (patch)
tree45f8a211fd4ded1b528df1a526f8ba35ebda4f7f /src/plugins/platforms/cocoa/qcocoakeymapper.mm
parent0ad35db302a4945edeb057cb77da69b3af63671d (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.mm17
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 },