From 923123a52764f98bf4775b9d103c256ca27cbd95 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
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 7a2938efe8ce5..994143cc1c496 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 5f2b6bf8d5a8f..d4c3dfa030eae 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);