[Windows] Fix left/right Shift key regression

Fixes #101384 by checking the latest state of the Shift keys before sending the KEYUP event.
This commit is contained in:
Daniel 2025-01-18 15:31:00 +00:00 committed by SupSuper
parent 7b1ed520bd
commit 17423e9899

View file

@ -4684,7 +4684,9 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
// If multiple Shifts are held down at the same time,
// Windows natively only sends a KEYUP for the last one to be released.
if (raw->data.keyboard.Flags & RI_KEY_BREAK) {
if (!mods.has_flag(WinKeyModifierMask::SHIFT)) {
// Make sure to check the latest key state since
// we're in the middle of the message queue.
if (GetAsyncKeyState(VK_SHIFT) < 0) {
// A Shift is released, but another Shift is still held
ERR_BREAK(key_event_pos >= KEY_EVENT_BUFFER_SIZE);