mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2025-03-12 04:01:17 +01:00
prefer virtual keycodes over scancodes for extended keys
This commit is contained in:
parent
195b8bd8ee
commit
34769abd46
@ -82,15 +82,9 @@
|
||||
#endif
|
||||
|
||||
static SDL_Scancode
|
||||
WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam)
|
||||
VKeytoScancode(WPARAM vkey)
|
||||
{
|
||||
SDL_Scancode code;
|
||||
char bIsExtended;
|
||||
int nScanCode = (lParam >> 16) & 0xFF;
|
||||
|
||||
/* 0x45 here to work around both pause and numlock sharing the same scancode, so use the VK key to tell them apart */
|
||||
if (nScanCode == 0 || nScanCode == 0x45) {
|
||||
switch(wParam) {
|
||||
switch (vkey) {
|
||||
case VK_CLEAR: return SDL_SCANCODE_CLEAR;
|
||||
case VK_MODECHANGE: return SDL_SCANCODE_MODE;
|
||||
case VK_SELECT: return SDL_SCANCODE_SELECT;
|
||||
@ -145,6 +139,18 @@ WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam)
|
||||
}
|
||||
}
|
||||
|
||||
static SDL_Scancode
|
||||
WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam)
|
||||
{
|
||||
SDL_Scancode code;
|
||||
char bIsExtended;
|
||||
int nScanCode = (lParam >> 16) & 0xFF;
|
||||
|
||||
/* 0x45 here to work around both pause and numlock sharing the same scancode, so use the VK key to tell them apart */
|
||||
if (nScanCode == 0 || nScanCode == 0x45) {
|
||||
return VKeytoScancode(wParam);
|
||||
}
|
||||
|
||||
if (nScanCode > 127)
|
||||
return SDL_SCANCODE_UNKNOWN;
|
||||
|
||||
@ -178,6 +184,11 @@ WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
/* prefer virtual keycodes over scancodes for extended keys */
|
||||
} else {
|
||||
SDL_Scancode vc = VKeytoScancode(wParam);
|
||||
if (vc != SDL_SCANCODE_UNKNOWN) {
|
||||
code = vc;
|
||||
} else {
|
||||
switch (code) {
|
||||
case SDL_SCANCODE_RETURN:
|
||||
@ -194,6 +205,7 @@ WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user