SDL: emscripten: Let SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT accept "#none"

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);