1 diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
2 index a034bbd..e81ea4d 100644
3 --- a/gdk/quartz/gdkkeys-quartz.c
4 +++ b/gdk/quartz/gdkkeys-quartz.c
5 @@ -812,9 +812,41 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
7 _gdk_quartz_keys_event_type (NSEvent *event)
9 - unsigned short keycode;
11 + unsigned short keycode = [event keyCode];
12 + unsigned int flags = [event modifierFlags];
13 + CFArrayRef global_keys = NULL;
14 + unsigned int eventmods = (flags & NSCommandKeyMask ? cmdKey : 0) |
15 + (flags & NSAlternateKeyMask ? optionKey : 0) |
16 + (flags & NSControlKeyMask ? controlKey : 0) |
17 + (flags & NSShiftKeyMask ? shiftKey : 0);
20 + if (CopySymbolicHotKeys (&global_keys) == noErr && global_keys != NULL)
22 + CFIndex length = CFArrayGetCount (global_keys);
24 + for (i = 0; i < length; i++)
26 + CFDictionaryRef key_info = CFArrayGetValueAtIndex (global_keys, i);
28 + CFNumberRef code = CFDictionaryGetValue (key_info, kHISymbolicHotKeyCode);
29 + CFNumberRef mods = CFDictionaryGetValue (key_info, kHISymbolicHotKeyModifiers);
30 + CFBooleanRef enabled = CFDictionaryGetValue (key_info, kHISymbolicHotKeyEnabled);
33 + gushort tmp_keycode;
35 + CFNumberGetValue (mods, kCFNumberSInt32Type, &mod_value);
36 + CFNumberGetValue (code, kCFNumberShortType, &tmp_keycode);
38 + if (CFBooleanGetValue (enabled) && keycode == tmp_keycode && mod_value == eventmods)
45 + CFRelease (global_keys);
49 @@ -830,9 +862,6 @@ _gdk_quartz_keys_event_type (NSEvent *event)
51 /* For flags-changed events, we have to find the special key that caused the
52 * event, and see if it's in the modifier mask. */
53 - keycode = [event keyCode];
54 - flags = [event modifierFlags];
56 for (i = 0; i < G_N_ELEMENTS (modifier_keys); i++)
58 if (modifier_keys[i].keycode == keycode)