http://bugs.winehq.org/show_bug.cgi?id=8683
--- Comment #7 from Dmitry Timoshkov dmitry@codeweavers.com 2008-01-19 04:16:21 --- (In reply to comment #6)
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+<`>.
Isn't that exactly the same behaviour as you would get using native X11 applications, or just xev for testing?
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;
Wine relies on native dead keys support on the X11 side, so your patch would simply break it.