From e633127a0f0ed56bf8ed636bb856b5d633cfd197 Mon Sep 17 00:00:00 2001 From: VDm Date: Fri, 8 Aug 2025 00:58:24 +0400 Subject: [PATCH] feat(os): improve keyboard key handling on Windows --- src/os/win/Input.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/os/win/Input.cpp b/src/os/win/Input.cpp index 2869146..4f704c2 100644 --- a/src/os/win/Input.cpp +++ b/src/os/win/Input.cpp @@ -671,11 +671,22 @@ int32_t OsWindowProc(void* window, uint32_t message, uintptr_t wparam, intptr_t auto keyDown = message == WM_KEYDOWN || message == WM_SYSKEYDOWN; if (wparam == VK_SHIFT) { - // TODO + if (!keyDown) { + OsQueuePut(OS_INPUT_KEY_UP, 0, 0, 0, 0); + OsQueuePut(OS_INPUT_KEY_UP, 1, 0, 0, 0); + return 0; + } + + static uint32_t scanCode = 0; + if (scanCode == 256) { + scanCode = MapVirtualKeyA(VK_RSHIFT, MAPVK_VK_TO_VSC); + } + + wparam = ((lparam >> 24) & 0xFF) != scanCode ? VK_LSHIFT : VK_RSHIFT; } else if (wparam == VK_CONTROL) { - // TODO + wparam = ((lparam >> 24) & 0x01) | 0xA2; } else if (wparam == VK_MENU) { - // TODO + wparam = ((lparam >> 24) & 0x01) | 0xA4; } KEY key;