- From: <Irene.Vatton@inrialpes.fr>
- Date: Tue, 09 Nov 1999 10:20:44 +0100
- To: mrsam@geocities.com
- cc: www-amaya@w3.org
Hi Sam, I integrated your patch. Thanks a lot Irene In-reply-to: Your message of Tue, 02 Nov 1999 23:36:37 -0500." <Pine.LNX.4.10.9911022317430.381-100000@ny.email-scan.com> > > 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) > { > >
Received on Tuesday, 9 November 1999 04:20:49 UTC