From bb421a0ea0c59bb55575bb889f7f04e97a030c97 Mon Sep 17 00:00:00 2001 From: Simon Hofmann Date: Sun, 13 Mar 2022 12:23:31 +0100 Subject: [PATCH] Reverted keyboardInput to use scancodes again, but not toggle betweek make and brake codes --- src/win32/keypress.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/win32/keypress.c b/src/win32/keypress.c index f09c021..2f2ba56 100644 --- a/src/win32/keypress.c +++ b/src/win32/keypress.c @@ -4,12 +4,10 @@ #include /* For isupper() */ -/* Convenience wrappers around ugly APIs. */ -#define WIN32_KEY_EVENT_WAIT(key, flags) \ - (win32KeyEvent(key, flags), Sleep(DEADBEEF_RANDRANGE(0, 63))) - void win32KeyEvent(int key, MMKeyFlags flags) { + UINT scan = MapVirtualKey(key & 0xff, MAPVK_VK_TO_VSC); + /* Set the scan code for extended keys */ switch (key) { @@ -53,9 +51,11 @@ void win32KeyEvent(int key, MMKeyFlags flags) INPUT keyboardInput; keyboardInput.type = INPUT_KEYBOARD; + keyboardInput.ki.wScan = (WORD)scan; keyboardInput.ki.wVk = (WORD)key; - keyboardInput.ki.dwFlags = flags; - SendInput(1, &keyboardInput, sizeof(INPUT)); + keyboardInput.ki.dwFlags = KEYEVENTF_SCANCODE | flags; + keyboardInput.ki.time = 0; + SendInput(1, &keyboardInput, sizeof(keyboardInput)); } void toggleKeyCode(MMKeyCode code, const bool down, MMKeyFlags flags) @@ -66,19 +66,19 @@ void toggleKeyCode(MMKeyCode code, const bool down, MMKeyFlags flags) { /* Parse modifier keys. */ if (flags & MOD_META) - WIN32_KEY_EVENT_WAIT(K_META, dwFlags); + win32KeyEvent(K_META, dwFlags); if (flags & MOD_ALT) - WIN32_KEY_EVENT_WAIT(K_ALT, dwFlags); + win32KeyEvent(K_ALT, dwFlags); if (flags & MOD_CONTROL) - WIN32_KEY_EVENT_WAIT(K_CONTROL, dwFlags); + win32KeyEvent(K_CONTROL, dwFlags); if (flags & MOD_SHIFT) - WIN32_KEY_EVENT_WAIT(K_SHIFT, dwFlags); + win32KeyEvent(K_SHIFT, dwFlags); - WIN32_KEY_EVENT_WAIT(code, dwFlags); + win32KeyEvent(code, dwFlags); } else { - WIN32_KEY_EVENT_WAIT(code, dwFlags); + win32KeyEvent(code, dwFlags); /* Parse modifier keys. */ if (flags & MOD_META)