http://bugs.winehq.org/show_bug.cgi?id=28168
Summary: VK_OEM_3 (0xC0) not converted into (0xC0) if US keyboard requested Product: Wine Version: 1.3.26 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winex11.drv AssignedTo: wine-bugs@winehq.org ReportedBy: Sebastian.Riemer@gmx.de
E.g.: Carmageddon TDR 2000 requests an US keyboard layout no matter for which language version of the game. It also gets this for most keys.
But for the cheating console the VK_OEM_3 (0xC0) is needed and MapVirtualKeyExW() in dlls/user32/input.c has to return 0xC0, too.
But instead it returns 0x5E (^) on my German KDE4 openSUSE 11.3 amd64 system - so this key isn't converted to US keyboard layout. On my German Windows XP it works as expected (0xC0 is returned).
I've also tried to enable the KDE4 keyboard layouts and to switch to US layout with that, but this didn't help.
Here is my dirty fix with which I've tested it:
UINT WINAPI MapVirtualKeyExW(UINT code, UINT maptype, HKL hkl) { TRACE_(keyboard)("(%X, %d, %p)\n", code, maptype, hkl);
/* dirty fix for testing VK_OEM_3 */ if (code == 0xC0) return 0xC0;
return USER_Driver->pMapVirtualKeyEx(code, maptype, hkl); }