Re: XFree86 3.3.5/Metrolink Motif 2.1.2 patch for Amaya 2.2

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