mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 18:59:09 +00:00
Fix #82
It seems that silly Adam was storing a UINT scan code because MapVirtualKey wanted a UINT. However, WM_CHAR only has a BYTE scan code in its lParam. Therefore, we got garbage on repeated key events, which bungled up the key binding parser.
This commit is contained in:
@ -281,15 +281,14 @@ void plInputManager::HandleWin32ControlEvent(UINT message, WPARAM Wparam, LPARAM
|
||||
Wparam == KEY_TAB || Wparam == 0x0D)
|
||||
break;
|
||||
|
||||
UINT scan = Lparam >> 16;
|
||||
scan = MapVirtualKeyEx(scan, MAPVK_VSC_TO_VK, nil);
|
||||
if (scan == 0) scan = -1;
|
||||
BYTE scan = Lparam >> 16;
|
||||
UINT vkey = MapVirtualKey(scan, MAPVK_VSC_TO_VK);
|
||||
|
||||
bExtended = Lparam >> 24 & 1;
|
||||
hsBool bRepeat = ((Lparam >> 29) & 0xf) != 0;
|
||||
bool down = !(Lparam >> 31);
|
||||
for (int i=0; i<fInputDevices.Count(); i++)
|
||||
fInputDevices[i]->HandleKeyEvent( CHAR_MSG, (plKeyDef)scan, down, bRepeat, (wchar_t)Wparam );
|
||||
fInputDevices[i]->HandleKeyEvent( CHAR_MSG, (plKeyDef)vkey, down, bRepeat, (wchar_t)Wparam );
|
||||
}
|
||||
break;
|
||||
case MOUSEWHEEL:
|
||||
|
Reference in New Issue
Block a user