mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-09-10 12:02:53 +02:00
Fix GetKeyboardState not recognizing Shift presses
This commit is contained in:
parent
32da5a586d
commit
f037df0378
3 changed files with 19 additions and 0 deletions
|
@ -60,6 +60,7 @@ MiniFFI_GetFunctionHandle(void *lib, const char *func)
|
|||
CAPTURE(SetWindowTextA);
|
||||
CAPTURE(GetWindowRect);
|
||||
CAPTURE(RegisterHotKey);
|
||||
CAPTURE(GetKeyboardState);
|
||||
#endif
|
||||
return SDL_LoadFunction(lib, func);
|
||||
}
|
||||
|
|
|
@ -142,4 +142,19 @@ MKXP_RegisterHotKey(HWND hWnd,
|
|||
UINT fsModifiers,
|
||||
UINT vk)
|
||||
NOP_VAL(true)
|
||||
|
||||
// Shift key from GetKeyboardState doesn't work for whatever reason
|
||||
BOOL __stdcall
|
||||
MKXP_GetKeyboardState(PBYTE lpKeyState)
|
||||
{
|
||||
bool rc = GetKeyboardState(lpKeyState);
|
||||
if (rc)
|
||||
{
|
||||
const char *sdlkeystate = (const char*)SDL_GetKeyboardState(0);
|
||||
lpKeyState[VK_LSHIFT] = sdlkeystate[SDL_SCANCODE_LSHIFT] << 7;
|
||||
lpKeyState[VK_RSHIFT] = sdlkeystate[SDL_SCANCODE_RSHIFT] << 7;
|
||||
lpKeyState[VK_SHIFT] = (lpKeyState[VK_LSHIFT] || lpKeyState[VK_RSHIFT]) ? 0x80 : 0;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -74,4 +74,7 @@ MKXP_RegisterHotKey(HWND hWnd,
|
|||
int id,
|
||||
UINT fsModifiers,
|
||||
UINT vk);
|
||||
|
||||
BOOL __stdcall
|
||||
MKXP_GetKeyboardState(PBYTE lpKeyState);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue