xserver: Branch 'xorg-server-1.4-apple' - 3 commits
Jeremy Huddleston
jeremyhu at kemper.freedesktop.org
Fri Aug 15 14:47:29 PDT 2008
configure.ac | 2
hw/xquartz/X11Application.m | 41 +++++++------
hw/xquartz/bundle/Info.plist | 6 -
hw/xquartz/darwin.c | 13 ++--
hw/xquartz/darwinEvents.c | 134 +++++++++++++++++--------------------------
hw/xquartz/quartzKeyboard.c | 99 ++++++++++++++++---------------
hw/xquartz/quartzKeyboard.h | 2
7 files changed, 143 insertions(+), 154 deletions(-)
New commits:
commit 5fcfeee41bff87fa949b28bd8ee36cf2e7c4808e
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date: Fri Aug 15 13:29:35 2008 -0700
1.4.2-apple9
diff --git a/configure.ac b/configure.ac
index bcc39f6..1c13cac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.4.2-apple8, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.4.2-apple9, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
AM_MAINTAINER_MODE
commit 8fb6a1cf44c35a20dfb0c05c9824f94898f88da7
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date: Fri Aug 15 13:28:58 2008 -0700
XQuartz: More input fixes
stuck-modifier fixes (capslock)
3button-emulation now doesn't send the modifier key with the click
Added other options to fake_button2 and fake_button3 defaults options:
({l,r}{control,alt,command,shift})
diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index 0783ef2..9096f3d 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -836,6 +836,8 @@ convert_flags (unsigned int nsflags) {
return xflags;
}
+extern int darwin_modifier_flags; // darwinEvents.c
+
static void send_nsevent (NSEventType type, NSEvent *e) {
NSRect screen;
NSPoint location;
@@ -862,26 +864,34 @@ static void send_nsevent (NSEventType type, NSEvent *e) {
tilt_x = 0;
tilt_y = 0;
+ /* We don't receive modifier key events while out of focus, and 3button
+ * emulation mucks this up, so we need to check our modifier flag state
+ * on every event... ugg
+ */
+ if(darwin_modifier_flags != [e modifierFlags])
+ DarwinUpdateModKeys([e modifierFlags]);
+
switch (type) {
- case NSMouseMoved: ev_button=0; ev_type=MotionNotify; goto check_subtype;
- case NSLeftMouseDown: ev_button=1; ev_type=ButtonPress; goto check_subtype;
- case NSOtherMouseDown: ev_button=2; ev_type=ButtonPress; goto check_subtype;
- case NSRightMouseDown: ev_button=3; ev_type=ButtonPress; goto check_subtype;
- case NSLeftMouseUp: ev_button=1; ev_type=ButtonRelease; goto check_subtype;
- case NSOtherMouseUp: ev_button=2; ev_type=ButtonRelease; goto check_subtype;
- case NSRightMouseUp: ev_button=3; ev_type=ButtonRelease; goto check_subtype;
- case NSLeftMouseDragged: ev_button=1; ev_type=MotionNotify; goto check_subtype;
- case NSOtherMouseDragged: ev_button=2; ev_type=MotionNotify; goto check_subtype;
- case NSRightMouseDragged: ev_button=3; ev_type=MotionNotify; goto check_subtype;
+ case NSMouseMoved: ev_button=0; ev_type=MotionNotify; goto check_subtype;
+ case NSLeftMouseDown: ev_button=1; ev_type=ButtonPress; goto check_subtype;
+ case NSOtherMouseDown: ev_button=2; ev_type=ButtonPress; goto check_subtype;
+ case NSRightMouseDown: ev_button=3; ev_type=ButtonPress; goto check_subtype;
+ case NSLeftMouseUp: ev_button=1; ev_type=ButtonRelease; goto check_subtype;
+ case NSOtherMouseUp: ev_button=2; ev_type=ButtonRelease; goto check_subtype;
+ case NSRightMouseUp: ev_button=3; ev_type=ButtonRelease; goto check_subtype;
+ case NSLeftMouseDragged: ev_button=1; ev_type=MotionNotify; goto check_subtype;
+ case NSOtherMouseDragged: ev_button=2; ev_type=MotionNotify; goto check_subtype;
+ case NSRightMouseDragged: ev_button=3; ev_type=MotionNotify; goto check_subtype;
check_subtype:
if ([e subtype] != NSTabletPointEventSubtype)
goto handle_mouse;
// fall through to get tablet data
+
case NSTabletPoint:
- pressure = [e pressure];
- tilt_x = [e tilt].x;
- tilt_y = [e tilt].y;
+ pressure = [e pressure];
+ tilt_x = [e tilt].x;
+ tilt_y = [e tilt].y;
goto handle_mouse;
// fall through to normal mouse handling
@@ -904,9 +914,6 @@ handle_mouse:
DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
break;
- case NSFlagsChanged:
- DarwinUpdateModKeys([e modifierFlags]);
- break;
- default: break; /* for gcc */
+ default: break; /* for gcc */
}
}
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index d1e3b6f..a1f3df2 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -106,8 +106,13 @@ char *darwinKeymapFile = "USA.keymapping";
int darwinSyncKeymap = FALSE;
// modifier masks for faking mouse buttons
+#ifdef NX_DEVICELCMDKEYMASK
+int darwinFakeMouse2Mask = NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK;
+int darwinFakeMouse3Mask = NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK;
+#else
int darwinFakeMouse2Mask = NX_ALTERNATEMASK;
int darwinFakeMouse3Mask = NX_COMMANDMASK;
+#endif
// devices
DeviceIntPtr darwinPointer = NULL;
@@ -142,7 +147,7 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]);
#define XSERVER_VERSION "?"
#endif
-const char *__crashreporter_info__ = "X.Org X Server " XSERVER_VERSION "Build Date: " BUILD_DATE;
+const char *__crashreporter_info__ = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE;
void DDXRingBell(int volume, int pitch, int duration) {
// FIXME -- make some noise, yo
@@ -498,9 +503,9 @@ int DarwinParseModifierList(
while (p) {
modifier = strsep(&p, " ,+&|/"); // allow lots of separators
- nxkey = DarwinModifierStringToNXKey(modifier);
- if (nxkey != -1)
- result |= DarwinModifierNXKeyToNXMask(nxkey);
+ nxkey = DarwinModifierStringToNXMask(modifier);
+ if(nxkey)
+ result |= nxkey;
else
ErrorF("fakebuttons: Unknown modifier \"%s\"\n", modifier);
}
diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index 2b8e8de..cb4a214 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -30,6 +30,8 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+#include "sanitizedCarbon.h"
+
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -77,7 +79,7 @@ in this Software without prior written authorization from The Open Group.
/* FIXME: Abstract this better */
void QuartzModeEQInit(void);
-static int modifier_flags = 0; // last known modifier state
+int darwin_modifier_flags = 0; // last known modifier state
#define FD_ADD_MAX 128
static int fd_add[FD_ADD_MAX];
@@ -139,89 +141,55 @@ static inline void darwinEvents_unlock(void) {
}
/*
- * DarwinPressModifierMask
- * Press or release the given modifier key, specified by its mask (one of NX_*MASK constants)
+ * DarwinPressModifierKey
+ * Press or release the given modifier key (one of NX_MODIFIERKEY_* constants)
*/
-static void DarwinPressModifierMask(int pressed, int mask) {
- int keycode;
- int key = DarwinModifierNXMaskToNXKey(mask);
-
- if (key != -1) {
- keycode = DarwinModifierNXKeyToNXKeycode(key, 0);
- if (keycode != 0)
- DarwinSendKeyboardEvents(pressed, keycode);
- }
-}
-
-#ifdef NX_DEVICELCTLKEYMASK
-#define CONTROL_MASK(flags) (flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK))
-#define NX_CONTROLMASK_FULL (NX_CONTROLMASK | NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK)
-#else
-#define CONTROL_MASK(flags) (NX_CONTROLMASK)
-#define NX_CONTROLMASK_FULL NX_CONTROLMASK
-#endif /* NX_DEVICELCTLKEYMASK */
+static void DarwinPressModifierKey(int pressed, int key) {
+ int keycode = DarwinModifierNXKeyToNXKeycode(key, 0);
-#ifdef NX_DEVICELSHIFTKEYMASK
-#define SHIFT_MASK(flags) (flags & (NX_DEVICELSHIFTKEYMASK|NX_DEVICERSHIFTKEYMASK))
-#define NX_SHIFTMASK_FULL (NX_SHIFTMASK | NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK)
-#else
-#define SHIFT_MASK(flags) (NX_SHIFTMASK)
-#define NX_SHIFTMASK_FULL NX_SHIFTMASK
-#endif /* NX_DEVICELSHIFTKEYMASK */
-
-#ifdef NX_DEVICELCMDKEYMASK
-#define COMMAND_MASK(flags) (flags & (NX_DEVICELCMDKEYMASK|NX_DEVICERCMDKEYMASK))
-#define NX_COMMANDMASK_FULL (NX_COMMANDMASK | NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK)
-#else
-#define COMMAND_MASK(flags) (NX_COMMANDMASK)
-#define NX_COMMANDMASK_FULL NX_COMMANDMASK
-#endif /* NX_DEVICELCMDKEYMASK */
+ if (keycode == 0) {
+ ErrorF("DarwinPressModifierKey bad keycode: key=%d\n", pressed == KeyPress ? "press" : "release", key, keycode);
+ return;
+ }
-#ifdef NX_DEVICELALTKEYMASK
-#define ALTERNATE_MASK(flags) (flags & (NX_DEVICELALTKEYMASK|NX_DEVICERALTKEYMASK))
-#define NX_ALTERNATEMASK_FULL (NX_ALTERNATEMASK | NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK)
-#else
-#define ALTERNATE_MASK(flags) (NX_ALTERNATEMASK)
-#define NX_ALTERNATEMASK_FULL NX_ALTERNATEMASK
-#endif /* NX_DEVICELALTKEYMASK */
+ DarwinSendKeyboardEvents(pressed, keycode);
+}
/*
* DarwinUpdateModifiers
* Send events to update the modifier state.
*/
+
+static int modifier_mask_list[] = {
+ NX_SECONDARYFNMASK, NX_NUMERICPADMASK, NX_HELPMASK,
+#ifdef NX_DEVICELCMDKEYMASK
+ NX_DEVICELCTLKEYMASK, NX_DEVICERCTLKEYMASK,
+ NX_DEVICELSHIFTKEYMASK, NX_DEVICERSHIFTKEYMASK,
+ NX_DEVICELCMDKEYMASK, NX_DEVICERCMDKEYMASK,
+ NX_DEVICELALTKEYMASK, NX_DEVICERALTKEYMASK,
+#else
+ NX_CONTROLMASK, NX_SHIFTMASK, NX_COMMANDMASK, NX_ALTERNATEMASK,
+#endif
+ 0
+};
+
static void DarwinUpdateModifiers(
int pressed, // KeyPress or KeyRelease
int flags ) // modifier flags that have changed
{
- if (flags & NX_ALPHASHIFTMASK) {
- DarwinPressModifierMask(pressed, NX_ALPHASHIFTMASK);
- }
- if (flags & NX_COMMANDMASK_FULL) {
- DarwinPressModifierMask(pressed, COMMAND_MASK(flags));
- }
- if (flags & NX_CONTROLMASK_FULL) {
- DarwinPressModifierMask(pressed, CONTROL_MASK(flags));
- }
- if (flags & NX_ALTERNATEMASK_FULL) {
- DarwinPressModifierMask(pressed, ALTERNATE_MASK(flags));
- }
- if (flags & NX_SHIFTMASK_FULL) {
- DarwinPressModifierMask(pressed, SHIFT_MASK(flags));
- }
- if (flags & NX_SECONDARYFNMASK) {
- DarwinPressModifierMask(pressed, NX_SECONDARYFNMASK);
- }
-}
+ int *f;
-/*
- * DarwinReleaseModifiers
- * This hacky function releases all modifier keys. It should be called when X11.app
- * is deactivated (kXquartzDeactivate) to prevent modifiers from getting stuck if they
- * are held down during a "context" switch -- otherwise, we would miss the KeyUp.
- */
-static void DarwinReleaseModifiers(void) {
- ErrorF("DarwinReleaseModifiers\n");
- DarwinUpdateModifiers(KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1));
+ /* 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.
+ */
+ if(NX_ALPHASHIFTMASK & flags) {
+ DarwinPressModifierKey(KeyPress, NX_MODIFIERKEY_ALPHALOCK);
+ DarwinPressModifierKey(KeyRelease, NX_MODIFIERKEY_ALPHALOCK);
+ }
+
+ for(f=modifier_mask_list; *f; f++)
+ if(*f & flags)
+ DarwinPressModifierKey(pressed, DarwinModifierNXMaskToNXKey(*f));
}
/* Generic handler for Xquartz-specifc events. When possible, these should
@@ -263,7 +231,6 @@ static void DarwinEventHandler(int screenNum, xEventPtr xe, DeviceIntPtr dev, in
case kXquartzDeactivate:
DEBUG_LOG("kXquartzDeactivate\n");
- DarwinReleaseModifiers();
AppleWMSendEvent(AppleWMActivationNotify,
AppleWMActivationNotifyMask,
AppleWMIsInactive, 0);
@@ -476,20 +443,29 @@ void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int poin
DarwinSendPointerEvents(ButtonRelease, darwinFakeMouseButtonDown, pointer_x, pointer_y, pressure, tilt_x, tilt_y);
darwinFakeMouseButtonDown=0;
}
- if ((modifier_flags & darwinFakeMouse2Mask) == darwinFakeMouse2Mask) {
+ if (darwin_modifier_flags & darwinFakeMouse2Mask) {
ev_button = 2;
darwinFakeMouseButtonDown = 2;
- } else if ((modifier_flags & darwinFakeMouse3Mask) == darwinFakeMouse3Mask) {
+ DarwinUpdateModKeys(darwin_modifier_flags & ~darwinFakeMouse2Mask);
+ } else if (darwin_modifier_flags & darwinFakeMouse3Mask) {
ev_button = 3;
darwinFakeMouseButtonDown = 3;
+ DarwinUpdateModKeys(darwin_modifier_flags & ~darwinFakeMouse3Mask);
}
}
if (ev_type == ButtonRelease && ev_button == 1) {
if(darwinFakeMouseButtonDown) {
ev_button = darwinFakeMouseButtonDown;
- darwinFakeMouseButtonDown = 0;
}
+
+ if(darwinFakeMouseButtonDown == 2) {
+ DarwinUpdateModKeys(darwin_modifier_flags & ~darwinFakeMouse2Mask);
+ } else if(darwinFakeMouseButtonDown == 3) {
+ DarwinUpdateModKeys(darwin_modifier_flags & ~darwinFakeMouse3Mask);
+ }
+
+ darwinFakeMouseButtonDown = 0;
}
DarwinPrepareValuators(valuators, screen, pointer_x, pointer_y, pressure, tilt_x, tilt_y);
@@ -509,7 +485,7 @@ void DarwinSendKeyboardEvents(int ev_type, int keycode) {
return;
}
- if (modifier_flags == 0 && darwinSyncKeymap && darwinKeymapFile == NULL) {
+ if (darwinSyncKeymap && darwinKeymapFile == NULL) {
/* See if keymap has changed. */
static unsigned int last_seed;
@@ -589,9 +565,9 @@ void DarwinSendScrollEvents(float count_x, float count_y,
/* Send the appropriate KeyPress/KeyRelease events to GetKeyboardEvents to
reflect changing modifier flags (alt, control, meta, etc) */
void DarwinUpdateModKeys(int flags) {
- DarwinUpdateModifiers(KeyRelease, modifier_flags & ~flags);
- DarwinUpdateModifiers(KeyPress, ~modifier_flags & flags);
- modifier_flags = flags;
+ DarwinUpdateModifiers(KeyRelease, darwin_modifier_flags & ~flags);
+ DarwinUpdateModifiers(KeyPress, ~darwin_modifier_flags & flags);
+ darwin_modifier_flags = flags;
}
/*
diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index b721085..85d15b1 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -71,8 +71,6 @@
#include "X11/keysym.h"
#include "keysym2ucs.h"
-#include <Availability.h>
-
void QuartzXkbUpdate(DeviceIntPtr pDev);
enum {
@@ -1014,28 +1012,6 @@ int DarwinModifierNXMaskToNXKey(int mask) {
return -1;
}
-static const char *DarwinModifierNXMaskTostring(int mask) {
- switch (mask) {
- case NX_ALPHASHIFTMASK: return "NX_ALPHASHIFTMASK";
- case NX_SHIFTMASK: return "NX_SHIFTMASK";
- case NX_DEVICELSHIFTKEYMASK: return "NX_DEVICELSHIFTKEYMASK";
- case NX_DEVICERSHIFTKEYMASK: return "NX_DEVICERSHIFTKEYMASK";
- case NX_CONTROLMASK: return "NX_CONTROLMASK";
- case NX_DEVICELCTLKEYMASK: return "NX_DEVICELCTLKEYMASK";
- case NX_DEVICERCTLKEYMASK: return "NX_DEVICERCTLKEYMASK";
- case NX_ALTERNATEMASK: return "NX_ALTERNATEMASK";
- case NX_DEVICELALTKEYMASK: return "NX_DEVICELALTKEYMASK";
- case NX_DEVICERALTKEYMASK: return "NX_DEVICERALTKEYMASK";
- case NX_COMMANDMASK: return "NX_COMMANDMASK";
- case NX_DEVICELCMDKEYMASK: return "NX_DEVICELCMDKEYMASK";
- case NX_DEVICERCMDKEYMASK: return "NX_DEVICERCMDKEYMASK";
- case NX_NUMERICPADMASK: return "NX_NUMERICPADMASK";
- case NX_HELPMASK: return "NX_HELPMASK";
- case NX_SECONDARYFNMASK: return "NX_SECONDARYFNMASK";
- }
- return "unknown mask";
-}
-
/*
* DarwinModifierNXKeyToNXMask
* Returns 0 if key is not a known modifier key.
@@ -1043,21 +1019,20 @@ static const char *DarwinModifierNXMaskTostring(int mask) {
int DarwinModifierNXKeyToNXMask(int key) {
switch (key) {
case NX_MODIFIERKEY_ALPHALOCK: return NX_ALPHASHIFTMASK;
+#ifdef NX_DEVICELSHIFTKEYMASK
+ case NX_MODIFIERKEY_SHIFT: return NX_DEVICELSHIFTKEYMASK;
+ case NX_MODIFIERKEY_RSHIFT: return NX_DEVICERSHIFTKEYMASK;
+ case NX_MODIFIERKEY_CONTROL: return NX_DEVICELCTLKEYMASK;
+ case NX_MODIFIERKEY_RCONTROL: return NX_DEVICERCTLKEYMASK;
+ case NX_MODIFIERKEY_ALTERNATE: return NX_DEVICELALTKEYMASK;
+ case NX_MODIFIERKEY_RALTERNATE: return NX_DEVICERALTKEYMASK;
+ case NX_MODIFIERKEY_COMMAND: return NX_DEVICELCMDKEYMASK;
+ case NX_MODIFIERKEY_RCOMMAND: return NX_DEVICERCMDKEYMASK;
+#else
case NX_MODIFIERKEY_SHIFT: return NX_SHIFTMASK;
-#ifdef NX_MODIFIERKEY_RSHIFT
- case NX_MODIFIERKEY_RSHIFT: return NX_SHIFTMASK;
-#endif
case NX_MODIFIERKEY_CONTROL: return NX_CONTROLMASK;
-#ifdef NX_MODIFIERKEY_RCONTROL
- case NX_MODIFIERKEY_RCONTROL: return NX_CONTROLMASK;
-#endif
case NX_MODIFIERKEY_ALTERNATE: return NX_ALTERNATEMASK;
-#ifdef NX_MODIFIERKEY_RALTERNATE
- case NX_MODIFIERKEY_RALTERNATE: return NX_ALTERNATEMASK;
-#endif
case NX_MODIFIERKEY_COMMAND: return NX_COMMANDMASK;
-#ifdef NX_MODIFIERKEY_RCOMMAND
- case NX_MODIFIERKEY_RCOMMAND: return NX_COMMANDMASK;
#endif
case NX_MODIFIERKEY_NUMERICPAD: return NX_NUMERICPADMASK;
case NX_MODIFIERKEY_HELP: return NX_HELPMASK;
@@ -1067,16 +1042,42 @@ int DarwinModifierNXKeyToNXMask(int key) {
}
/*
- * DarwinModifierStringToNXKey
- * Returns -1 if string is not a known modifier.
+ * DarwinModifierStringToNXMask
+ * Returns 0 if string is not a known modifier.
*/
-int DarwinModifierStringToNXKey(const char *str) {
- if (!strcasecmp(str, "shift")) return NX_MODIFIERKEY_SHIFT;
- else if (!strcasecmp(str, "control")) return NX_MODIFIERKEY_CONTROL;
- else if (!strcasecmp(str, "option")) return NX_MODIFIERKEY_ALTERNATE;
- else if (!strcasecmp(str, "command")) return NX_MODIFIERKEY_COMMAND;
- else if (!strcasecmp(str, "fn")) return NX_MODIFIERKEY_SECONDARYFN;
- else return -1;
+int DarwinModifierStringToNXMask(const char *str) {
+#ifdef NX_DEVICELSHIFTKEYMASK
+ if (!strcasecmp(str, "shift")) return NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK;
+ else if (!strcasecmp(str, "control")) return NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK;
+ else if (!strcasecmp(str, "option")) return NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK;
+ else if (!strcasecmp(str, "command")) return NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK;
+ else if (!strcasecmp(str, "lshift")) return NX_DEVICELSHIFTKEYMASK;
+ else if (!strcasecmp(str, "rshift")) return NX_DEVICERSHIFTKEYMASK;
+ else if (!strcasecmp(str, "lcontrol")) return NX_DEVICELCTLKEYMASK;
+ else if (!strcasecmp(str, "rcontrol")) return NX_DEVICERCTLKEYMASK;
+ else if (!strcasecmp(str, "loption")) return NX_DEVICELALTKEYMASK;
+ else if (!strcasecmp(str, "roption")) return NX_DEVICERALTKEYMASK;
+ else if (!strcasecmp(str, "lcommand")) return NX_DEVICELCMDKEYMASK;
+ else if (!strcasecmp(str, "rcommand")) return NX_DEVICERCMDKEYMASK;
+#else
+ if (!strcasecmp(str, "shift")) return NX_SHIFTMASK;
+ else if (!strcasecmp(str, "control")) return NX_CONTROLMASK;
+ else if (!strcasecmp(str, "option")) return NX_ALTERNATEMASK;
+ else if (!strcasecmp(str, "command")) return NX_COMMANDMASK;
+ else if (!strcasecmp(str, "lshift")) return NX_SHIFTMASK;
+ else if (!strcasecmp(str, "rshift")) return NX_SHIFTMASK;
+ else if (!strcasecmp(str, "lcontrol")) return NX_CONTROLMASK;
+ else if (!strcasecmp(str, "rcontrol")) return NX_CONTROLMASK;
+ else if (!strcasecmp(str, "loption")) return NX_ALTERNATEMASK;
+ else if (!strcasecmp(str, "roption")) return NX_ALTERNATEMASK;
+ else if (!strcasecmp(str, "lcommand")) return NX_COMMANDMASK;
+ else if (!strcasecmp(str, "rcommand")) return NX_COMMANDMASK;
+#endif
+ else if (!strcasecmp(str, "lock")) return NX_ALPHASHIFTMASK;
+ else if (!strcasecmp(str, "fn")) return NX_SECONDARYFNMASK;
+ else if (!strcasecmp(str, "help")) return NX_HELPMASK;
+ else if (!strcasecmp(str, "numlock")) return NX_NUMERICPADMASK;
+ else return 0;
}
/*
@@ -1092,7 +1093,7 @@ Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
/* TODO: Not thread safe */
unsigned int QuartzSystemKeymapSeed(void) {
static unsigned int seed = 0;
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
+#if defined(__x86_64__) || defined(__ppc64__)
static TISInputSourceRef last_key_layout = NULL;
TISInputSourceRef key_layout;
@@ -1159,7 +1160,7 @@ static KeySym make_dead_key(KeySym in) {
}
Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
-#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+#if !defined(__x86_64__) && !defined(__ppc64__)
KeyboardLayoutRef key_layout;
#endif
const void *chr_data = NULL;
@@ -1179,11 +1180,11 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef);
}
-#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+#if !defined(__x86_64__) && !defined(__ppc64__)
if (chr_data == NULL) {
ErrorF("X11.app: Error detected in determining keyboard layout. Please report this error at http://xquartz.macosforge.org\n");
ErrorF("X11.app: Debug Info: keyboard_type=%u, currentKeyLayoutRef=%p, currentKeyLayoutDataRef=%p, chr_data=%p\n",
- keyboard_type, currentKeyLayoutRef, currentKeyLayoutDataRef, chr_data);
+ (unsigned)keyboard_type, currentKeyLayoutRef, currentKeyLayoutDataRef, chr_data);
KLGetCurrentKeyboardLayout (&key_layout);
KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data);
@@ -1194,7 +1195,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
}
if (chr_data == NULL) {
- ErrorF("X11.app: Debug Info: kKLuchrData fallback failed, trying kKLKCHRData.\n", currentKeyLayoutRef, chr_data);
+ ErrorF("X11.app: Debug Info: kKLuchrData fallback failed, trying kKLKCHRData.\n");
KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data);
is_uchr = 0;
num_keycodes = 128;
diff --git a/hw/xquartz/quartzKeyboard.h b/hw/xquartz/quartzKeyboard.h
index 964ea01..3a892ba 100644
--- a/hw/xquartz/quartzKeyboard.h
+++ b/hw/xquartz/quartzKeyboard.h
@@ -57,7 +57,7 @@ int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide);
int DarwinModifierNXKeyToNXKeycode(int key, int side);
int DarwinModifierNXKeyToNXMask(int key);
int DarwinModifierNXMaskToNXKey(int mask);
-int DarwinModifierStringToNXKey(const char *string);
+int DarwinModifierStringToNXMask(const char *string);
/* Provided for darwin.c */
void DarwinKeyboardInit(DeviceIntPtr pDev);
commit eedecba0b882bb07931e8d9168589f5be7a08a69
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date: Thu Aug 14 09:34:12 2008 -0700
XQuartz: Updated bundle version to 2.3.1
diff --git a/hw/xquartz/bundle/Info.plist b/hw/xquartz/bundle/Info.plist
index f06a30d..2582b92 100644
--- a/hw/xquartz/bundle/Info.plist
+++ b/hw/xquartz/bundle/Info.plist
@@ -19,11 +19,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>2.3.0</string>
+ <string>2.3.1</string>
<key>CFBundleVersion</key>
- <string>2.3.0</string>
+ <string>2.3.1</string>
<key>CFBundleVersionString</key>
- <string>2.3.0</string>
+ <string>2.3.1</string>
<key>CFBundleSignature</key>
<string>x11a</string>
<key>CSResourcesFileMapped</key>
More information about the xorg-commit
mailing list