On Fri, 24 Mar 2006, Dmitry Timoshkov wrote:

? I do understand why this happens: X11DRV_ToUnicodeEx uses the global,
static variable AltGrMask. Is this a bug?

In X11DRV_ToUnicodeEx we need to restore XKeyEvent from the previous
KeyPress event. If you have a better idea how to do it without using
global variables please let us know.

What about using the thread_input->keystate, just as for Shift, Control, and NumLock?

ToUnicodeEx does have a lpKeyState argument, so to me, it seems very wrong that a static, global variable is needed as well.

TranslateMessage calls GetKeyboardState just before ToUnicode. MSDN documents GetKeyboardState as: "The status changes as a thread removes keyboard messages from its message queue." My interpretation is that this means that ToUnicodeEx consider how the modifiers *was* rather then what they *are*.

The current implementation has another drawback: AltGr key presses never reaches the applications. In Windows, applications recieves VK_CONTROL, VK_MENU when AltGr is pressed.

--
Peter Åstrand           ThinLinc Chief Developer
Cendio                  http://www.cendio.se
Teknikringen 3
583 30 Linköping        Phone: +46-13-21 46 00


Reply via email to