At 06:04 AM 12/8/00 -0500, you wrote:
<snip>
>Agent 16: I cannot get any "@" into it. Someone has broken the keyboard 
>definitions (up from 2000-11-25 2:00 to 2000-12-02 on any date).

It's the same for me with any program in fact.
Could you test the following patch on your system  to see if it's 
the same problem ?

--- keyboard.c.orig     Wed Nov 29 02:36:35 2000
+++ keyboard.c  Sat Dec  9 23:31:40 2000
@@ -1543,18 +1543,6 @@
             ret = 0;
         }
 
-        /* more areas where X returns characters but Windows does not
-           CTRL + number or CTRL + symbol*/
-        if (lpKeyState[VK_CONTROL] & 0x80)
-        {
-            if (((keysym>=33) && (keysym < 'A')) ||
-                ((keysym > 'Z') && (keysym < 'a')))
-            {
-                *(char*)lpChar = 0;
-                ret = 0;
-            }
-        }
-
         /* We have another special case for delete key (XK_Delete) on an
          extended keyboard. X returns a char for it, but Windows doesn't */
         if (keysym == XK_Delete)             

I think it's best to give the additional information (for the people using
an US keyboard) that with a french keyboard - and I *guess* with a
german keyboard too, the @ key is obtained with Alt Gr, specifically
Alt Gr 0 (VK0 - the one that is not on the numeric pad)

Call user32.605: TranslateMessage(40576e3c) ret=004205aa fs=008f
trace:key:MSG_DoTranslateMessage (WM_KEYDOWN, 0030, 000B0001)
trace:key:MSG_DoTranslateMessage Translating key VK_0 (0030), scancode 0b
Call x11drv.30: ToUnicode(00000030,0000000b,40758e80,40576d48,00000002,00000000) 
ret=40704289 fs=008f
trace:key:X11DRV_ToUnicode (0030, 000B) : faked state = 2010
trace:keyboard:X11DRV_ToUnicode Found keycode 19 (0x13)
trace:key:X11DRV_ToUnicode XLookupString error for 13
trace:key:X11DRV_ToUnicode more areas for bugs
trace:key:X11DRV_ToUnicode ToUnicode about to return 0 with char 8770 

I don't understand why the VK_CONTROL flag is set in this case -
to get this key I have certainly not to press the control key.
What's is obvious is that bufW is never set and the returned value
(8770) is whatever garbage was passed by the caller .

Any keyboard expert out there ?

Gerard


Reply via email to