diff options
-rw-r--r-- | hw/darwin/darwinEvents.c | 13 | ||||
-rw-r--r-- | hw/darwin/darwinKeyboard.c | 42 | ||||
-rw-r--r-- | hw/darwin/quartz/quartzKeyboard.c | 2 |
3 files changed, 36 insertions, 21 deletions
diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index d376624b9..c9f7a925f 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -3,6 +3,7 @@ */ /* Copyright (c) 2002 Torrey T. Lyons. All Rights Reserved. +Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved. This file is based on mieq.c by Keith Packard, which contains the following copyright: @@ -108,16 +109,20 @@ static void DarwinUpdateModifiers( DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); } if (flags & NX_COMMANDMASK) { - DarwinPressModifierMask(xe, NX_COMMANDMASK); + DarwinPressModifierMask(xe, + flags & (NX_DEVICELCMDKEYMASK|NX_DEVICERCMDKEYMASK)); } if (flags & NX_CONTROLMASK) { - DarwinPressModifierMask(xe, NX_CONTROLMASK); + DarwinPressModifierMask(xe, + flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK)); } if (flags & NX_ALTERNATEMASK) { - DarwinPressModifierMask(xe, NX_ALTERNATEMASK); + DarwinPressModifierMask(xe, + flags & (NX_DEVICELALTKEYMASK|NX_DEVICERALTKEYMASK)); } if (flags & NX_SHIFTMASK) { - DarwinPressModifierMask(xe, NX_SHIFTMASK); + DarwinPressModifierMask(xe, + flags & (NX_DEVICELSHIFTKEYMASK|NX_DEVICERSHIFTKEYMASK)); } if (flags & NX_SECONDARYFNMASK) { DarwinPressModifierMask(xe, NX_SECONDARYFNMASK); diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c index 39c5ba58f..904c4068f 100644 --- a/hw/darwin/darwinKeyboard.c +++ b/hw/darwin/darwinKeyboard.c @@ -2,6 +2,7 @@ // // Keyboard support for the Darwin X Server // +// Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved. // Copyright (c) 2001-2003 Torrey T. Lyons. All Rights Reserved. // Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved. // @@ -684,7 +685,7 @@ DarwinBuildModifierMaps( break; case XK_Shift_R: - info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][1] = i; + info->modifierKeycodes[NX_MODIFIERKEY_RSHIFT][0] = i; info->modMap[MIN_KEYCODE + i] = ShiftMask; break; @@ -694,7 +695,7 @@ DarwinBuildModifierMaps( break; case XK_Control_R: - info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][1] = i; + info->modifierKeycodes[NX_MODIFIERKEY_RCONTROL][0] = i; info->modMap[MIN_KEYCODE + i] = ControlMask; break; @@ -709,7 +710,7 @@ DarwinBuildModifierMaps( break; case XK_Alt_R: - info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][1] = i; + info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i; info->modMap[MIN_KEYCODE + i] = Mod1Mask; break; @@ -723,7 +724,7 @@ DarwinBuildModifierMaps( break; case XK_Meta_R: - info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][1] = i; + info->modifierKeycodes[NX_MODIFIERKEY_RCOMMAND][0] = i; info->modMap[MIN_KEYCODE + i] = Mod2Mask; break; @@ -750,11 +751,6 @@ DarwinBuildModifierMaps( break; } } - -#if ALT_IS_MODE_SWITCH - if (k[0] == XK_Alt_L || k[0] == XK_Alt_R) - k[0] = XK_Mode_switch; -#endif } } @@ -844,14 +840,22 @@ int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) int DarwinModifierNXMaskToNXKey(int mask) { switch (mask) { - case NX_ALPHASHIFTMASK: return NX_MODIFIERKEY_ALPHALOCK; - case NX_SHIFTMASK: return NX_MODIFIERKEY_SHIFT; - case NX_CONTROLMASK: return NX_MODIFIERKEY_CONTROL; - case NX_ALTERNATEMASK: return NX_MODIFIERKEY_ALTERNATE; - case NX_COMMANDMASK: return NX_MODIFIERKEY_COMMAND; - case NX_NUMERICPADMASK: return NX_MODIFIERKEY_NUMERICPAD; - case NX_HELPMASK: return NX_MODIFIERKEY_HELP; - case NX_SECONDARYFNMASK: return NX_MODIFIERKEY_SECONDARYFN; + case NX_ALPHASHIFTMASK: return NX_MODIFIERKEY_ALPHALOCK; + case NX_SHIFTMASK: return NX_MODIFIERKEY_SHIFT; + case NX_DEVICELSHIFTKEYMASK: return NX_MODIFIERKEY_SHIFT; + case NX_DEVICERSHIFTKEYMASK: return NX_MODIFIERKEY_RSHIFT; + case NX_CONTROLMASK: return NX_MODIFIERKEY_CONTROL; + case NX_DEVICELCTLKEYMASK: return NX_MODIFIERKEY_CONTROL; + case NX_DEVICERCTLKEYMASK: return NX_MODIFIERKEY_RCONTROL; + case NX_ALTERNATEMASK: return NX_MODIFIERKEY_ALTERNATE; + case NX_DEVICELALTKEYMASK: return NX_MODIFIERKEY_ALTERNATE; + case NX_DEVICERALTKEYMASK: return NX_MODIFIERKEY_RALTERNATE; + case NX_COMMANDMASK: return NX_MODIFIERKEY_COMMAND; + case NX_DEVICELCMDKEYMASK: return NX_MODIFIERKEY_COMMAND; + case NX_DEVICERCMDKEYMASK: return NX_MODIFIERKEY_RCOMMAND; + case NX_NUMERICPADMASK: return NX_MODIFIERKEY_NUMERICPAD; + case NX_HELPMASK: return NX_MODIFIERKEY_HELP; + case NX_SECONDARYFNMASK: return NX_MODIFIERKEY_SECONDARYFN; } return -1; } @@ -865,9 +869,13 @@ int DarwinModifierNXKeyToNXMask(int key) switch (key) { case NX_MODIFIERKEY_ALPHALOCK: return NX_ALPHASHIFTMASK; case NX_MODIFIERKEY_SHIFT: return NX_SHIFTMASK; + case NX_MODIFIERKEY_RSHIFT: return NX_SHIFTMASK; case NX_MODIFIERKEY_CONTROL: return NX_CONTROLMASK; + case NX_MODIFIERKEY_RCONTROL: return NX_CONTROLMASK; case NX_MODIFIERKEY_ALTERNATE: return NX_ALTERNATEMASK; + case NX_MODIFIERKEY_RALTERNATE: return NX_ALTERNATEMASK; case NX_MODIFIERKEY_COMMAND: return NX_COMMANDMASK; + case NX_MODIFIERKEY_RCOMMAND: return NX_COMMANDMASK; case NX_MODIFIERKEY_NUMERICPAD: return NX_NUMERICPADMASK; case NX_MODIFIERKEY_HELP: return NX_HELPMASK; case NX_MODIFIERKEY_SECONDARYFN: return NX_SECONDARYFNMASK; diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index c434d227f..d6a79b578 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -69,9 +69,11 @@ const static struct { {57, XK_Caps_Lock}, {58, XK_Alt_L}, {59, XK_Control_L}, + {60, XK_Shift_R}, {61, XK_Alt_R}, {62, XK_Control_R}, + {63, XK_Meta_R}, {122, XK_F1}, {120, XK_F2}, |