From c473df4393cd25a2356fe93e7ed355a84ecebf29 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 15 Jan 2022 12:16:18 +0530 Subject: [PATCH] Ignore NSEventModifierFlagFunction when parsing global shortcuts --- glfw/cocoa_init.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/glfw/cocoa_init.m b/glfw/cocoa_init.m index a0b330a22..07d096d4a 100644 --- a/glfw/cocoa_init.m +++ b/glfw/cocoa_init.m @@ -554,6 +554,8 @@ typedef enum AppleShortcutNames { kSHKUnknown = 0, // } AppleShortcutNames; +#define USEFUL_MODS(x) (x & (NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand | NSEventModifierFlagControl)) + static void build_global_shortcuts_lookup(void) { NSMutableDictionary *temp = [NSMutableDictionary dictionaryWithCapacity:128]; // will be autoreleased @@ -579,6 +581,7 @@ build_global_shortcuts_lookup(void) { NSInteger ch = [parameters[0] isKindOfClass:[NSNumber class]] ? [parameters[0] integerValue] : 0xffff; NSInteger vk = [parameters[1] isKindOfClass:[NSNumber class]] ? [parameters[1] integerValue] : 0xffff; NSEventModifierFlags mods = ([parameters count] > 2 && [parameters[2] isKindOfClass:[NSNumber class]]) ? [parameters[2] unsignedIntegerValue] : 0; + mods = USEFUL_MODS(mods); static char buf[64]; if (ch == 0xffff) { if (vk == 0xffff) continue; @@ -600,7 +603,7 @@ is_shiftable_shortcut(int scv) { static int is_active_apple_global_shortcut(NSEvent *event) { if (global_shortcuts == nil) build_global_shortcuts_lookup(); - NSEventModifierFlags modifierFlags = [event modifierFlags] & (NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand | NSEventModifierFlagControl); + NSEventModifierFlags modifierFlags = USEFUL_MODS([event modifierFlags]); static char lookup_key[64]; if ([event.charactersIgnoringModifiers length] == 1) { const unichar ch = [event.charactersIgnoringModifiers characterAtIndex:0];