https://bugs.winehq.org/show_bug.cgi?id=15350
--- Comment #34 from Dmitry Timoshkov dmitry@baikal.ru --- I've modified the attached source to force loading of french keyboard layout, and under windows its output is different from the one under Linux. Under linux for testing it's required to execute 'setxkbmap fr' before running the test since switching and activating a different keyboard layout isn't implemented in wine.
under linux (with 'setxkbmap fr') I get: keydown wParam: 0x41 (A) lParam: 0x100001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = A DI key 0x1e (state 0x80) keydown wParam: 0x5a (Z) lParam: 0x110001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = Z DI key 0x2c (state 0x80) keydown wParam: 0x45 (E) lParam: 0x120001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = E DI key 0x12 (state 0x80) keydown wParam: 0x52 (R) lParam: 0x130001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = R DI key 0x13 (state 0x80) keydown wParam: 0x54 (T) lParam: 0x140001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = T DI key 0x14 (state 0x80)
under windows: keydown wParam: 0x41 (A) lParam: 0x100001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = A DI key 0x10 (state 0x80) keydown wParam: 0x5a (Z) lParam: 0x110001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = Z DI key 0x11 (state 0x80) keydown wParam: 0x45 (E) lParam: 0x120001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = E DI key 0x12 (state 0x80) keydown wParam: 0x52 (R) lParam: 0x130001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = R DI key 0x13 (state 0x80) keydown wParam: 0x54 (T) lParam: 0x140001. MapVirtualKeyW(MAPVK_VK_TO_CHAR) = T DI key 0x14 (state 0x80)
Notice the difference in generated DI key codes.
After reverting the commit 304ff3c7280a53b7cbadfa83eaeda458ff5959d1 or just commenting out the call to map_dik_code() in dlls/dinput/keyboard.c output under linux matches what I get under windows.
The patch that has caused the regression should be reverted, it's clearly wrong.