[Bug 8683] section sign key input not working in WoW

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jan 18 19:27:31 CST 2008


http://bugs.winehq.org/show_bug.cgi?id=8683





--- Comment #6 from Fábio Capela <fabio.capela at yahoo.com>  2008-01-18 19:27:30 ---
(In reply to comment #5)
> Does adding a symlink /usr/lib32/locale -> /usr/lib/locale help?

At least in my case it doesn't change anything (I'm also having the same
problem, with both the <`> (left of 1), <'> (right of ;) and shift-6 keys, in
both WoW and Guild Wars).

If my bug is the same as the other posters, I have reliably reproduced the bug
with Armagetron Advanced (www.armagetronad.net, less than 3MB). If you set the
keyboard to something without deadkey, for example the US one (setxkbmap us),
you can enter the console from the menu by pressing <`>. Now if you set the
keyboard to something with deadkeys, such as the US-International one
(setxkbmap us -variant alt-intl), you can't enter the console anymore by
pressing just <`>, you need to press AltGr+<`>.

This happens because of the:

        if (XFilterEvent( &event, None )) continue;  /* filtered, ignore it */

line in dlls/winex11.drv/event.c . It is completely discarding all deadkey
keypresses; to solve the problem you need to let deadkey keypresses generate
WM_KEYDOWN messages (and then, to not break the deadkey handling in wine, you
have to catch and store the result of XFilterEvent to pass to the
TranslateMessage function when it is eventually called to handle the
WM_KEYDOWN; this is what my patch tries to do, although it will fail to
correctly pass this information if either you have more than 10 keypress
events, or two keypress events for the same key and different string results,
before the program calls TranslateMessage).

(combining it with your patch posted in bug 4923, which enforces that at all
times there's at most one input event in the wine server queue, would
theoretically solve my patch's failures, although I don't think that is the
right way to proceed.)

(BTW, I was thinking about how to create a testcase for this bug, but I don't
see a way to do it with the current implementation of X11DRV_SendInput in
dlls/winex11.drv/event.c - the bug is in converting X keypress events to
WM_KEYDOWN messages, and X11DRV_SendInput creates the messages directly,
bypassing the conversion step.)


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.


More information about the wine-bugs mailing list