Skip to content

Commit

Permalink
(WIN32) Fix Pause vs NumLock in dinput/sdl2 (#15533)
Browse files Browse the repository at this point in the history
  • Loading branch information
sonninnos authored Jul 30, 2023
1 parent fbd8498 commit cf42a20
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions gfx/common/win32_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -1081,9 +1081,16 @@ static LRESULT CALLBACK wnd_proc_common_internal(HWND hwnd,
uint16_t mod = 0;
unsigned keycode = 0;
unsigned keysym = (lparam >> 16) & 0xff;
bool extended = (lparam >> 24) & 0x1;

/* extended keys will map to dinput if the high bit is set */
if ((lparam >> 24 & 0x1))
if (extended)
keysym |= 0x80;

/* NumLock vs Pause correction */
if (GetKeyState(VK_NUMLOCK) & 0x80 && extended)
keysym &= ~0x80;
else if (GetKeyState(VK_PAUSE) & 0x80 && !extended)
keysym |= 0x80;

keycode = input_keymaps_translate_keysym_to_rk(keysym);
Expand Down Expand Up @@ -1327,9 +1334,16 @@ static LRESULT CALLBACK wnd_proc_common_dinput_internal(HWND hwnd,
uint16_t mod = 0;
unsigned keycode = 0;
unsigned keysym = (lparam >> 16) & 0xff;
bool extended = (lparam >> 24) & 0x1;

/* extended keys will map to dinput if the high bit is set */
if ((lparam >> 24 & 0x1))
if (extended)
keysym |= 0x80;

/* NumLock vs Pause correction */
if (GetKeyState(VK_NUMLOCK) & 0x80 && extended)
keysym &= ~0x80;
else if (GetKeyState(VK_PAUSE) & 0x80 && !extended)
keysym |= 0x80;

keycode = input_keymaps_translate_keysym_to_rk(keysym);
Expand Down

0 comments on commit cf42a20

Please sign in to comment.