From 2c333c7355349e7110089b04dfc61be90beebf03 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 30 Jun 2024 23:52:47 -0700
Subject: [PATCH] The mode modifier only affects character keys
---
src/events/SDL_keymap.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/events/SDL_keymap.c b/src/events/SDL_keymap.c
index c1eb39bf5112d..6dc233b520635 100644
--- a/src/events/SDL_keymap.c
+++ b/src/events/SDL_keymap.c
@@ -199,10 +199,6 @@ SDL_Keycode SDL_GetDefaultKeyFromScancode(SDL_Scancode scancode, SDL_Keymod mods
return SDLK_UNKNOWN;
}
- if (modstate & SDL_KMOD_MODE) {
- return SDLK_UNKNOWN;
- }
-
if (scancode < SDL_SCANCODE_A) {
return SDLK_UNKNOWN;
}
@@ -219,6 +215,9 @@ SDL_Keycode SDL_GetDefaultKeyFromScancode(SDL_Scancode scancode, SDL_Keymod mods
shifted = !shifted;
}
#endif
+ if (modstate & SDL_KMOD_MODE) {
+ return SDLK_UNKNOWN;
+ }
if (!shifted) {
return (SDL_Keycode)('a' + scancode - SDL_SCANCODE_A);
} else {
@@ -229,6 +228,9 @@ SDL_Keycode SDL_GetDefaultKeyFromScancode(SDL_Scancode scancode, SDL_Keymod mods
if (scancode < SDL_SCANCODE_CAPSLOCK) {
SDL_bool shifted = (modstate & SDL_KMOD_SHIFT) ? SDL_TRUE : SDL_FALSE;
+ if (modstate & SDL_KMOD_MODE) {
+ return SDLK_UNKNOWN;
+ }
if (!shifted) {
return normal_default_symbols[scancode - SDL_SCANCODE_1];
} else {