From 2cb798ec7beb52170c91193517cfac849d690345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 30 Sep 2022 16:24:51 +0200 Subject: [PATCH] macOS: Pass on native virtual key (key code) for modifier keys Regression after f563203f60f2cb4d03650af3a357e988aa6bce32. Unlike the characters and charactersIgnoringModifiers properties, the keyCode property of an NSEventTypeFlagsChanged event can be read without causing an NSInternalInconsistencyException. Fixes: QTBUG-69608 Change-Id: Id3679a468fbc609112bd8fb37aa7acc526492d19 Reviewed-by: Timur Pocheptsov (cherry picked from commit 3b22e6a8e07170a7a7280107d30ce86005523284) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/cocoa/qnsview_keys.mm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/cocoa/qnsview_keys.mm b/src/plugins/platforms/cocoa/qnsview_keys.mm index ee118a5a079..3eb8e2f4d6b 100644 --- a/src/plugins/platforms/cocoa/qnsview_keys.mm +++ b/src/plugins/platforms/cocoa/qnsview_keys.mm @@ -213,9 +213,16 @@ KeyEvent::KeyEvent(NSEvent *nsevent) default: break; // Must be manually set } - if (nsevent.type == NSEventTypeKeyDown || nsevent.type == NSEventTypeKeyUp) { + switch (nsevent.type) { + case NSEventTypeKeyDown: + case NSEventTypeKeyUp: + case NSEventTypeFlagsChanged: nativeVirtualKey = nsevent.keyCode; + default: + break; + } + if (nsevent.type == NSEventTypeKeyDown || nsevent.type == NSEventTypeKeyUp) { NSString *charactersIgnoringModifiers = nsevent.charactersIgnoringModifiers; NSString *characters = nsevent.characters;