WinRT: fallback to scancode key detection, if VirtualKey/VK detection fails

This commit is contained in:
David Ludwig 2014-10-25 08:50:41 -04:00
parent 20b19aac86
commit ed2fff6bef
1 changed files with 6 additions and 0 deletions

View File

@ -292,6 +292,7 @@ TranslateKeycode(int keycode, unsigned int nativeScancode)
/* Try to get a documented, WinRT, 'VirtualKey' next (as documented at /* Try to get a documented, WinRT, 'VirtualKey' next (as documented at
http://msdn.microsoft.com/en-us/library/windows/apps/windows.system.virtualkey.aspx ). http://msdn.microsoft.com/en-us/library/windows/apps/windows.system.virtualkey.aspx ).
If that fails, fall back to a Win32 virtual key. If that fails, fall back to a Win32 virtual key.
If that fails, attempt to fall back to a scancode-derived key.
*/ */
if (keycode < SDL_arraysize(WinRT_Official_Keycodes)) { if (keycode < SDL_arraysize(WinRT_Official_Keycodes)) {
scancode = WinRT_Official_Keycodes[keycode]; scancode = WinRT_Official_Keycodes[keycode];
@ -299,6 +300,11 @@ TranslateKeycode(int keycode, unsigned int nativeScancode)
if (scancode == SDL_SCANCODE_UNKNOWN) { if (scancode == SDL_SCANCODE_UNKNOWN) {
scancode = WINRT_TranslateUnofficialKeycode(keycode); scancode = WINRT_TranslateUnofficialKeycode(keycode);
} }
if (scancode == SDL_SCANCODE_UNKNOWN) {
if (nativeScancode < SDL_arraysize(windows_scancode_table)) {
scancode = windows_scancode_table[nativeScancode];
}
}
if (scancode == SDL_SCANCODE_UNKNOWN) { if (scancode == SDL_SCANCODE_UNKNOWN) {
SDL_Log("WinRT TranslateKeycode, unknown keycode=%d\n", (int)keycode); SDL_Log("WinRT TranslateKeycode, unknown keycode=%d\n", (int)keycode);
} }