From fabb4fdadc302493d02bb23485dbc15d7988834b Mon Sep 17 00:00:00 2001 From: rinsuki <428rinsuki+git@gmail.com> Date: Tue, 11 Feb 2025 16:47:17 +0900 Subject: [PATCH] Fix INTERNATIONAL keys wouldn't work properly since those keys aren't exist in US keyboard, we shouldn't treat (and convert) as a US keyboard keycodes (on Sunshine). --- app/streaming/input/keyboard.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/streaming/input/keyboard.cpp b/app/streaming/input/keyboard.cpp index 0abdf831..33003017 100644 --- a/app/streaming/input/keyboard.cpp +++ b/app/streaming/input/keyboard.cpp @@ -148,6 +148,7 @@ void SdlInputHandler::handleKeyEvent(SDL_KeyboardEvent* event) { short keyCode; char modifiers; + bool shouldNotConvertToScanCodeOnServer = false; if (event->repeat) { // Ignore repeat key down events @@ -402,8 +403,9 @@ void SdlInputHandler::handleKeyEvent(SDL_KeyboardEvent* event) case SDL_SCANCODE_LEFTBRACKET: keyCode = 0xDB; break; - case SDL_SCANCODE_BACKSLASH: case SDL_SCANCODE_INTERNATIONAL3: + shouldNotConvertToScanCodeOnServer = true; + case SDL_SCANCODE_BACKSLASH: keyCode = 0xDC; break; case SDL_SCANCODE_RIGHTBRACKET: @@ -412,8 +414,9 @@ void SdlInputHandler::handleKeyEvent(SDL_KeyboardEvent* event) case SDL_SCANCODE_APOSTROPHE: keyCode = 0xDE; break; - case SDL_SCANCODE_NONUSBACKSLASH: case SDL_SCANCODE_INTERNATIONAL1: + shouldNotConvertToScanCodeOnServer = true; + case SDL_SCANCODE_NONUSBACKSLASH: keyCode = 0xE2; break; case SDL_SCANCODE_LANG1: @@ -438,8 +441,9 @@ void SdlInputHandler::handleKeyEvent(SDL_KeyboardEvent* event) m_KeysDown.remove(keyCode); } - LiSendKeyboardEvent(0x8000 | keyCode, + LiSendKeyboardEvent2(0x8000 | keyCode, event->state == SDL_PRESSED ? KEY_ACTION_DOWN : KEY_ACTION_UP, - modifiers); + modifiers, + shouldNotConvertToScanCodeOnServer ? SS_KBE_FLAG_NON_NORMALIZED : 0); }