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