diff options
-rw-r--r-- | hw/xquartz/X11Application.m | 7 | ||||
-rw-r--r-- | hw/xquartz/darwinEvents.c | 11 |
2 files changed, 8 insertions, 10 deletions
diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index cd5ab5c2b..2cebd2aff 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -977,13 +977,6 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe modifierFlags = [e modifierFlags]; - /* These are the "only" modifier keys we care about */ - modifierFlags &= (NX_COMMANDMASK | NX_CONTROLMASK | NX_ALTERNATEMASK | NX_SHIFTMASK | - NX_SECONDARYFNMASK | NX_ALPHASHIFTMASK | NX_NUMERICPADMASK | - NX_HELPMASK | NX_DEVICELCTLKEYMASK | NX_DEVICELSHIFTKEYMASK | - NX_DEVICERSHIFTKEYMASK | NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK | - NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK | NX_DEVICERCTLKEYMASK); - #ifdef NX_DEVICELCMDKEYMASK /* This is to workaround a bug in the VNC server where we sometimes see the L * modifier and sometimes see no "side" diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c index 7fc390d1e..37f0bfb45 100644 --- a/hw/xquartz/darwinEvents.c +++ b/hw/xquartz/darwinEvents.c @@ -146,7 +146,6 @@ static void DarwinPressModifierKey(int pressed, int key) { */ static int modifier_mask_list[] = { - NX_SECONDARYFNMASK, NX_NUMERICPADMASK, NX_HELPMASK, #ifdef NX_DEVICELCMDKEYMASK NX_DEVICELCTLKEYMASK, NX_DEVICERCTLKEYMASK, NX_DEVICELSHIFTKEYMASK, NX_DEVICERSHIFTKEYMASK, @@ -163,6 +162,7 @@ static void DarwinUpdateModifiers( int flags ) // modifier flags that have changed { int *f; + int key; /* Capslock is special. This mask is the state of capslock (on/off), * not the state of the button. Hopefully we can find a better solution. @@ -173,8 +173,13 @@ static void DarwinUpdateModifiers( } for(f=modifier_mask_list; *f; f++) - if(*f & flags) - DarwinPressModifierKey(pressed, DarwinModifierNXMaskToNXKey(*f)); + if(*f & flags) { + key = DarwinModifierNXMaskToNXKey(*f); + if(key == -1) + ErrorF("DarwinUpdateModifiers: Unsupported NXMask: 0x%x\n", *f); + else + DarwinPressModifierKey(pressed, key); + } } /* Generic handler for Xquartz-specifc events. When possible, these should |