https://bugs.winehq.org/show_bug.cgi?id=45766
--- Comment #3 from Sven Arvidsson sa@whiz.se --- Created attachment 70635 --> https://bugs.winehq.org/attachment.cgi?id=70635 hack for X11DRV_ToUnicodeEx
I finally had time to look into this and it turns out the game is stuck in an infinite loop in ToUnicodeEx when looking up keymappings. Specifically this call:
0024:trace:keyboard:ToUnicodeEx virt 186, scan 27, state 0226F054, str 0226F154, size 5, flags 0, layout 08090809.
In my (Swedish) keyboard layout this maps to a dead_diaeresis.
On Windows a second consecutive call to ToUnicodeEx with a dead key should return a positive result (similar to pressing the key twice on the keyboard) this is unimplemented in Wine which keeps returning -1, and the game is stuck there.
Another issue is that changing the keyboard layout on the fly is not enough to reproduce or work around the bug. X11DRV_ToUnicodeEx keeps looking up the key for the original keyboard layout.
I'm attaching a small patch that works around the problem with the game, but it's just a hack that returns 1 for a second call with the same dead key.
I'm not sure where the bug should be reassigned, winex11.drv?