From 2ad2222c8352246d14ed0ed993833f11e82b71c3 Mon Sep 17 00:00:00 2001 From: loki Date: Thu, 16 Jan 2020 23:57:36 +0100 Subject: [PATCH] Use Scan codes instead of Virtual Keys to improve keyboard support in games --- sunshine/platform/windows.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sunshine/platform/windows.cpp b/sunshine/platform/windows.cpp index 8859de13..284b39b6 100755 --- a/sunshine/platform/windows.cpp +++ b/sunshine/platform/windows.cpp @@ -76,13 +76,19 @@ void keyboard(input_t &input, uint16_t modcode, bool release) { i.type = INPUT_KEYBOARD; auto &ki = i.ki; -// ki.dwFlags = KEYEVENTF_SCANCODE; + // For some reason, MapVirtualKey(VK_LWIN, MAPVK_VK_TO_VSC) doesn't seem to work :/ + if(modcode != VK_LWIN && modcode != VK_RWIN) { + ki.wScan = MapVirtualKey(modcode, MAPVK_VK_TO_VSC); + ki.dwFlags = KEYEVENTF_SCANCODE; + } + else { + ki.wVk = modcode; + } + if(release) { ki.dwFlags = KEYEVENTF_KEYUP; } - ki.wVk = modcode; - auto send = SendInput(1, &i, sizeof(INPUT)); if(send != 1) { BOOST_LOG(warning) << "Couldn't send moue movement input"sv;