From 0a52eba3c0ba1c3ddaa263f83db8b64c3058824c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 2 Jul 2020 15:23:50 +0200 Subject: macOS: Move Cocoa modifier mapping logic to QCocoaKeyMapper Along with similar logic for Carbon. Change-Id: Ie32f8ffa336006387d50d3b9e8491816aba4ea04 Reviewed-by: Timur Pocheptsov --- src/plugins/platforms/cocoa/qcocoakeymapper.mm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/plugins/platforms/cocoa/qcocoakeymapper.mm') 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 carbonModifierMap[] = { { shiftKey, Qt::ShiftModifier }, { rightShiftKey, Qt::ShiftModifier }, -- cgit v1.2.3