XQuartz: Fixed a stuck modifier key bug.
(cherry picked from commit eeb6e5a9e98dcf045ec230f160d5992080dceba6)
This commit is contained in:
parent
1770c85374
commit
8b9ed7dec2
|
@ -898,7 +898,7 @@ handle_mouse:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSKeyDown: case NSKeyUp:
|
case NSKeyDown: case NSKeyUp:
|
||||||
DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
|
DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSFlagsChanged:
|
case NSFlagsChanged:
|
||||||
|
|
|
@ -151,32 +151,38 @@ static void DarwinPressModifierMask(int pressed, int mask) {
|
||||||
if (keycode != 0)
|
if (keycode != 0)
|
||||||
DarwinSendKeyboardEvents(pressed, keycode);
|
DarwinSendKeyboardEvents(pressed, keycode);
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorF("DarwinPressModifierMask pressed=%s, mask=%d, key=%d, keycode=%d\n", pressed == KeyPress ? "press" : "release", mask, key, keycode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NX_DEVICELCTLKEYMASK
|
#ifdef NX_DEVICELCTLKEYMASK
|
||||||
#define CONTROL_MASK(flags) (flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK))
|
#define CONTROL_MASK(flags) (flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK))
|
||||||
|
#define NX_CONTROLMASK_FULL (NX_CONTROLMASK | NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK)
|
||||||
#else
|
#else
|
||||||
#define CONTROL_MASK(flags) (NX_CONTROLMASK)
|
#define CONTROL_MASK(flags) (NX_CONTROLMASK)
|
||||||
|
#define NX_CONTROLMASK_FULL NX_CONTROLMASK
|
||||||
#endif /* NX_DEVICELCTLKEYMASK */
|
#endif /* NX_DEVICELCTLKEYMASK */
|
||||||
|
|
||||||
#ifdef NX_DEVICELSHIFTKEYMASK
|
#ifdef NX_DEVICELSHIFTKEYMASK
|
||||||
#define SHIFT_MASK(flags) (flags & (NX_DEVICELSHIFTKEYMASK|NX_DEVICERSHIFTKEYMASK))
|
#define SHIFT_MASK(flags) (flags & (NX_DEVICELSHIFTKEYMASK|NX_DEVICERSHIFTKEYMASK))
|
||||||
|
#define NX_SHIFTMASK_FULL (NX_SHIFTMASK | NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK)
|
||||||
#else
|
#else
|
||||||
#define SHIFT_MASK(flags) (NX_SHIFTMASK)
|
#define SHIFT_MASK(flags) (NX_SHIFTMASK)
|
||||||
|
#define NX_SHIFTMASK_FULL NX_SHIFTMASK
|
||||||
#endif /* NX_DEVICELSHIFTKEYMASK */
|
#endif /* NX_DEVICELSHIFTKEYMASK */
|
||||||
|
|
||||||
#ifdef NX_DEVICELCMDKEYMASK
|
#ifdef NX_DEVICELCMDKEYMASK
|
||||||
#define COMMAND_MASK(flags) (flags & (NX_DEVICELCMDKEYMASK|NX_DEVICERCMDKEYMASK))
|
#define COMMAND_MASK(flags) (flags & (NX_DEVICELCMDKEYMASK|NX_DEVICERCMDKEYMASK))
|
||||||
|
#define NX_COMMANDMASK_FULL (NX_COMMANDMASK | NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK)
|
||||||
#else
|
#else
|
||||||
#define COMMAND_MASK(flags) (NX_COMMANDMASK)
|
#define COMMAND_MASK(flags) (NX_COMMANDMASK)
|
||||||
|
#define NX_COMMANDMASK_FULL NX_COMMANDMASK
|
||||||
#endif /* NX_DEVICELCMDKEYMASK */
|
#endif /* NX_DEVICELCMDKEYMASK */
|
||||||
|
|
||||||
#ifdef NX_DEVICELALTKEYMASK
|
#ifdef NX_DEVICELALTKEYMASK
|
||||||
#define ALTERNATE_MASK(flags) (flags & (NX_DEVICELALTKEYMASK|NX_DEVICERALTKEYMASK))
|
#define ALTERNATE_MASK(flags) (flags & (NX_DEVICELALTKEYMASK|NX_DEVICERALTKEYMASK))
|
||||||
|
#define NX_ALTERNATEMASK_FULL (NX_ALTERNATEMASK | NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK)
|
||||||
#else
|
#else
|
||||||
#define ALTERNATE_MASK(flags) (NX_ALTERNATEMASK)
|
#define ALTERNATE_MASK(flags) (NX_ALTERNATEMASK)
|
||||||
|
#define NX_ALTERNATEMASK_FULL NX_ALTERNATEMASK
|
||||||
#endif /* NX_DEVICELALTKEYMASK */
|
#endif /* NX_DEVICELALTKEYMASK */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -187,21 +193,19 @@ static void DarwinUpdateModifiers(
|
||||||
int pressed, // KeyPress or KeyRelease
|
int pressed, // KeyPress or KeyRelease
|
||||||
int flags ) // modifier flags that have changed
|
int flags ) // modifier flags that have changed
|
||||||
{
|
{
|
||||||
fprintf(stderr, "DarwinUpdateModifiers pressed=%s, flags=%x\n", pressed == KeyPress ? "press" : "release", flags);
|
|
||||||
|
|
||||||
if (flags & NX_ALPHASHIFTMASK) {
|
if (flags & NX_ALPHASHIFTMASK) {
|
||||||
DarwinPressModifierMask(pressed, NX_ALPHASHIFTMASK);
|
DarwinPressModifierMask(pressed, NX_ALPHASHIFTMASK);
|
||||||
}
|
}
|
||||||
if (flags & NX_COMMANDMASK) {
|
if (flags & NX_COMMANDMASK_FULL) {
|
||||||
DarwinPressModifierMask(pressed, COMMAND_MASK(flags));
|
DarwinPressModifierMask(pressed, COMMAND_MASK(flags));
|
||||||
}
|
}
|
||||||
if (flags & NX_CONTROLMASK) {
|
if (flags & NX_CONTROLMASK_FULL) {
|
||||||
DarwinPressModifierMask(pressed, CONTROL_MASK(flags));
|
DarwinPressModifierMask(pressed, CONTROL_MASK(flags));
|
||||||
}
|
}
|
||||||
if (flags & NX_ALTERNATEMASK) {
|
if (flags & NX_ALTERNATEMASK_FULL) {
|
||||||
DarwinPressModifierMask(pressed, ALTERNATE_MASK(flags));
|
DarwinPressModifierMask(pressed, ALTERNATE_MASK(flags));
|
||||||
}
|
}
|
||||||
if (flags & NX_SHIFTMASK) {
|
if (flags & NX_SHIFTMASK_FULL) {
|
||||||
DarwinPressModifierMask(pressed, SHIFT_MASK(flags));
|
DarwinPressModifierMask(pressed, SHIFT_MASK(flags));
|
||||||
}
|
}
|
||||||
if (flags & NX_SECONDARYFNMASK) {
|
if (flags & NX_SECONDARYFNMASK) {
|
||||||
|
|
Loading…
Reference in New Issue