From 67382e9c839a41188dc06e0b8089445123453611 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 15 Jan 2025 07:39:05 -0800 Subject: [PATCH] Fixed detection of function keys on Emscripten Fixes https://github.com/libsdl-org/SDL/issues/11973 --- src/video/emscripten/SDL_emscriptenevents.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/video/emscripten/SDL_emscriptenevents.c b/src/video/emscripten/SDL_emscriptenevents.c index 8084ed2fe3..834bca8beb 100644 --- a/src/video/emscripten/SDL_emscriptenevents.c +++ b/src/video/emscripten/SDL_emscriptenevents.c @@ -482,6 +482,17 @@ static EM_BOOL Emscripten_HandleTouch(int eventType, const EmscriptenTouchEvent return preventDefault; } +static bool IsFunctionKey(SDL_Scancode scancode) +{ + if (scancode >= SDL_SCANCODE_F1 && scancode <= SDL_SCANCODE_F12) { + return true; + } + if (scancode >= SDL_SCANCODE_F13 && scancode <= SDL_SCANCODE_F24) { + return true; + } + return false; +} + /* This is a great tool to see web keyboard events live: * https://w3c.github.io/uievents/tools/key-event-viewer.html */ @@ -557,7 +568,7 @@ static EM_BOOL Emscripten_HandleKey(int eventType, const EmscriptenKeyboardEvent (scancode == SDL_SCANCODE_UP) || (scancode == SDL_SCANCODE_RIGHT) || (scancode == SDL_SCANCODE_DOWN) || - ((scancode >= SDL_SCANCODE_F1) && (scancode <= SDL_SCANCODE_F15)) || + IsFunctionKey(scancode) || keyEvent->ctrlKey) { is_nav_key = true; }