- From: Charles McCathieNevile <charles@w3.org>
- Date: Mon, 8 Nov 1999 17:48:32 -0500 (EST)
- To: Sam <mrsam@geocities.com>
- cc: www-amaya@w3.org
Does this solve the problem that with numlock on AMaya stops accepting
input? (Which would be very cool)
Charles McCN
On Tue, 2 Nov 1999, Sam wrote:
Amaya 2.2's keyboard functions are not working at all with XFree86 3.3.5
or Metrolink/Red Hat Motif 2.1.2. None of the edit boxes (XmKey, I think)
are processing any keyboard input.
Here's what's happening. Either XFree86, or this particular Motif
library, I'm not sure which one is the culprit, is setting some bits in
XKeyEvent->state to garbage. The manual page for XKeyEvent(3X11) states
the following:
The state member is set to indicate the logical state of
the pointer buttons and modifier keys just prior to the
event, which is the bitwise inclusive OR of one or more of
the button or modifier key masks: Button1Mask,
Button2Mask, Button3Mask, Button4Mask, Button5Mask,
ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
Mod3Mask, Mod4Mask, and Mod5Mask.
There are some additional bits in the state field which are used for other
kinds of events, and what's happening is that those other bits are not
being cleared. Subsequent to that, TtaXLookupString() gets hopelessly
confused.
The following patch fixes this problem, at least on English keyboards.
Actually, it's only the line #543 that needs to be added. The remaining
diffs get rid of some egcs 1.1.2 warning messages.
--
Sam
--- thotlib/dialogue/interface.c.orig Tue Oct 19 06:50:48 1999
+++ thotlib/dialogue/interface.c Tue Nov 2 23:06:07 1999
@@ -491,7 +491,7 @@
{0, 0, 0},
};
-#define NB_MK (sizeof(mk_tab) / sizeof(Multi_Key))
+#define NB_MK (int)((sizeof(mk_tab) / sizeof(Multi_Key)))
#ifndef _WINDOWS
static Display *TtaDisplay = NULL;
@@ -531,7 +531,7 @@
if (event == NULL)
return (0);
- if (event->keycode < TtaMinKeyCode || event->keycode > TtaMaxKeyCode)
+ if ((int)event->keycode < TtaMinKeyCode || (int)event->keycode > TtaMaxKeyCode)
{
if (keysym != NULL)
*keysym = 0;
@@ -540,6 +540,8 @@
keycode = event->keycode - TtaMinKeyCode;
state = event->state;
+ state= state & (ShiftMask | LockMask | Mod1Mask | Mod3Mask);
+
/* search for the keysym depending on the state flags */
if (state == 0)
{
--Charles McCathieNevile mailto:charles@w3.org
phone: +1 617 258 0992 http://www.w3.org/People/Charles
W3C Web Accessibility Initiative http://www.w3.org/WAI
MIT/LCS - 545 Technology sq., Cambridge MA, 02139, USA
Received on Monday, 8 November 1999 17:48:40 UTC