winex11.drv: Do not ignore the keysyms assigned to a group switch, it leads to side effects like missing KeyRelease events

Dmitry Timoshkov dmitry at codeweavers.com
Tue Mar 6 02:53:39 CST 2007


Hello,

as reported in the bug #7609, the switch to using XmbLookupString only on
KeyPress events leads to not missing KeyRelease events in the cases when
a keysym is assigned to a group switch. There is a good explanation in
the comment #9 why it worked before.

Changelog:
    winex11.drv: Do not ignore the keysyms assigned to a group switch,
    it leads to side effects like missing KeyRelease events.

---
 dlls/winex11.drv/keyboard.c |   14 ++------------
 1 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
index 7fbbca8..218919f 100644
--- a/dlls/winex11.drv/keyboard.c
+++ b/dlls/winex11.drv/keyboard.c
@@ -1373,16 +1373,6 @@ void X11DRV_KeyEvent( HWND hwnd, XEvent *xev )
         ascii_chars = XLookupString(event, Str, sizeof(Str), &keysym, NULL);
     wine_tsx11_unlock();
 
-    /* Ignore some unwanted events */
-    if ((keysym >= XK_ISO_Lock && keysym <= XK_ISO_Last_Group_Lock) ||
-         keysym == XK_Mode_switch)
-    {
-        wine_tsx11_lock();
-        TRACE("Ignoring %s keyboard event\n", XKeysymToString(keysym));
-        wine_tsx11_unlock();
-        return;
-    }
-
     TRACE_(key)("state = %X nbyte = %d, status 0x%x\n", event->state, ascii_chars, status);
 
     if (status == XBufferOverflow)
@@ -2555,9 +2545,9 @@ INT X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
 		ksname = "No Name";
 	    if ((keysym >> 8) != 0xff)
 		{
-		ERR("Please report: no char for keysym %04lX (%s) :\n",
+		WARN("no char for keysym %04lX (%s) :\n",
                     keysym, ksname);
-		ERR("(virtKey=%X,scanCode=%X,keycode=%X,state=%X)\n",
+		WARN("virtKey=%X, scanCode=%X, keycode=%X, state=%X\n",
                     virtKey, scanCode, e.keycode, e.state);
 		}
 	    }
-- 
1.5.0.2






More information about the wine-patches mailing list