From 558d803b2966c2e44345a80e635e091dc3e49f02 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sun, 27 Sep 2009 18:25:57 -0700 Subject: [PATCH] XQuartz: Force a keymap resync on the first keypress to workaround XKB mucking with our keymap. We need to find a better way to work with XKB on this. (cherry picked from commit ceaa5c779ceed3de5ea53727649613be3133b24e) --- hw/xquartz/X11Application.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 9fb192648..3cf7a7799 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -1180,6 +1180,17 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe break; case NSKeyDown: case NSKeyUp: + { + /* XKB clobbers our keymap at startup, so we need to force it on the first keypress. + * TODO: Make this less of a kludge. + */ + static int force_resync_keymap = YES; + if(force_resync_keymap) { + DarwinSendDDXEvent(kXquartzReloadKeymap, 0); + force_resync_keymap = NO; + } + } + if(darwinSyncKeymap) { #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 TISInputSourceRef key_layout = TISCopyCurrentKeyboardLayoutInputSource();