From 923123a52764f98bf4775b9d103c256ca27cbd95 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 18 Jan 2025 06:19:27 -0800 Subject: [PATCH] emscripten: Let SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT accept "#none" This is used to say "don't even try to listen for keypresses," for apps that are managing this outside of SDL. Fixes #10292. --- include/SDL3/SDL_hints.h | 2 +- src/video/emscripten/SDL_emscriptenevents.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h index 7a2938efe8..994143cc1c 100644 --- a/include/SDL3/SDL_hints.h +++ b/include/SDL3/SDL_hints.h @@ -730,7 +730,7 @@ extern "C" { * - "#document": the javascript document object * - "#screen": the javascript window.screen object * - "#canvas": the WebGL canvas element - * - "": Don't bind anything at all + * - "#none": Don't bind anything at all * - any other string without a leading # sign applies to the element on the * page with that ID. * diff --git a/src/video/emscripten/SDL_emscriptenevents.c b/src/video/emscripten/SDL_emscriptenevents.c index 5f2b6bf8d5..d4c3dfa030 100644 --- a/src/video/emscripten/SDL_emscriptenevents.c +++ b/src/video/emscripten/SDL_emscriptenevents.c @@ -1029,11 +1029,11 @@ void Emscripten_RegisterEventHandlers(SDL_WindowData *data) // Keyboard events are awkward keyElement = SDL_GetHint(SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT); - if (!keyElement) { + if (!keyElement || !*keyElement) { keyElement = EMSCRIPTEN_EVENT_TARGET_WINDOW; } - if (*keyElement) { + if (SDL_strcmp(keyElement, "#none") != 0) { emscripten_set_keydown_callback(keyElement, data, 0, Emscripten_HandleKey); emscripten_set_keyup_callback(keyElement, data, 0, Emscripten_HandleKey); emscripten_set_keypress_callback(keyElement, data, 0, Emscripten_HandleKeyPress);