From 0bde9879e87f3c6835e7191ae43357900f3f3641 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Wed, 23 Jun 2021 20:04:50 +0300
Subject: [PATCH] put back Keysym20to12 in if0'ed out form and added
KeysymFromSDL2 macro:
In its current state, it is new behavior after PR #97.
If #if 0 is flipped to 1, it is the old behavior before PR #97.
Helps with testing for now.
---
src/SDL12_compat.c | 95 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 93 insertions(+), 2 deletions(-)
diff --git a/src/SDL12_compat.c b/src/SDL12_compat.c
index 087385a..bf812fc 100644
--- a/src/SDL12_compat.c
+++ b/src/SDL12_compat.c
@@ -2429,6 +2429,96 @@ SDL_GetKeyName(SDL12Key key)
return (char *) "unknown key";
}
+#if 0 /* https://github.com/libsdl-org/sdl12-compat/pull/97 */
+# define KeysymFromSDL2(_ev20) Keysym20to12((_ev20)->key.keysym.sym)
+static SDL12Key
+Keysym20to12(const SDL_Keycode keysym20)
+{
+ if (((int) keysym20) < 127) { /* (most of) low-ASCII maps directly */
+ if (keysym20 == SDLK_PAUSE) {
+ return SDLK12_PAUSE;
+ } else if (keysym20 == SDLK_CLEAR) {
+ return SDLK12_CLEAR;
+ }
+ return (SDL12Key) keysym20;
+ }
+
+ switch (keysym20) {
+ #define CASEKEYSYM20TO12(k20, k12) case SDLK_##k20: return SDLK12_##k12
+ CASEKEYSYM20TO12(KP_0, KP0);
+ CASEKEYSYM20TO12(KP_1, KP1);
+ CASEKEYSYM20TO12(KP_2, KP2);
+ CASEKEYSYM20TO12(KP_3, KP3);
+ CASEKEYSYM20TO12(KP_4, KP4);
+ CASEKEYSYM20TO12(KP_5, KP5);
+ CASEKEYSYM20TO12(KP_6, KP6);
+ CASEKEYSYM20TO12(KP_7, KP7);
+ CASEKEYSYM20TO12(KP_8, KP8);
+ CASEKEYSYM20TO12(KP_9, KP9);
+ CASEKEYSYM20TO12(NUMLOCKCLEAR, NUMLOCK);
+ CASEKEYSYM20TO12(SCROLLLOCK, SCROLLOCK);
+ CASEKEYSYM20TO12(RGUI, RMETA);
+ CASEKEYSYM20TO12(LGUI, LMETA);
+ CASEKEYSYM20TO12(PRINTSCREEN, PRINT);
+ #undef CASEKEYSYM20TO12
+
+ #define CASEKEYSYM20TO12(k) case SDLK_##k: return SDLK12_##k
+ CASEKEYSYM20TO12(CLEAR);
+ CASEKEYSYM20TO12(PAUSE);
+ CASEKEYSYM20TO12(KP_PERIOD);
+ CASEKEYSYM20TO12(KP_DIVIDE);
+ CASEKEYSYM20TO12(KP_MULTIPLY);
+ CASEKEYSYM20TO12(KP_MINUS);
+ CASEKEYSYM20TO12(KP_PLUS);
+ CASEKEYSYM20TO12(KP_ENTER);
+ CASEKEYSYM20TO12(KP_EQUALS);
+ CASEKEYSYM20TO12(UP);
+ CASEKEYSYM20TO12(DOWN);
+ CASEKEYSYM20TO12(RIGHT);
+ CASEKEYSYM20TO12(LEFT);
+ CASEKEYSYM20TO12(INSERT);
+ CASEKEYSYM20TO12(HOME);
+ CASEKEYSYM20TO12(END);
+ CASEKEYSYM20TO12(PAGEUP);
+ CASEKEYSYM20TO12(PAGEDOWN);
+ CASEKEYSYM20TO12(F1);
+ CASEKEYSYM20TO12(F2);
+ CASEKEYSYM20TO12(F3);
+ CASEKEYSYM20TO12(F4);
+ CASEKEYSYM20TO12(F5);
+ CASEKEYSYM20TO12(F6);
+ CASEKEYSYM20TO12(F7);
+ CASEKEYSYM20TO12(F8);
+ CASEKEYSYM20TO12(F9);
+ CASEKEYSYM20TO12(F10);
+ CASEKEYSYM20TO12(F11);
+ CASEKEYSYM20TO12(F12);
+ CASEKEYSYM20TO12(F13);
+ CASEKEYSYM20TO12(F14);
+ CASEKEYSYM20TO12(F15);
+ CASEKEYSYM20TO12(CAPSLOCK);
+ CASEKEYSYM20TO12(RSHIFT);
+ CASEKEYSYM20TO12(LSHIFT);
+ CASEKEYSYM20TO12(RCTRL);
+ CASEKEYSYM20TO12(LCTRL);
+ CASEKEYSYM20TO12(RALT);
+ CASEKEYSYM20TO12(LALT);
+ CASEKEYSYM20TO12(MODE);
+ CASEKEYSYM20TO12(HELP);
+ CASEKEYSYM20TO12(SYSREQ);;
+ CASEKEYSYM20TO12(MENU);
+ CASEKEYSYM20TO12(POWER);
+ CASEKEYSYM20TO12(UNDO);
+ #undef CASEKEYSYM20TO12
+ default: break;
+ }
+
+ FIXME("nothing maps to SDLK12_COMPOSE, SDLK12_BREAK, or SDLK12_EURO ...?");
+ FIXME("map some of the SDLK12_WORLD keys");
+ return SDLK12_UNKNOWN;
+}
+#else
+# define KeysymFromSDL2(_ev20) Scancode20toKeysym12((_ev20)->key.keysym.scancode)
static SDL12Key
Scancode20toKeysym12(const SDL_Scancode scancode20)
{
@@ -2573,6 +2663,7 @@ Scancode20toKeysym12(const SDL_Scancode scancode20)
FIXME("map some of the SDLK12_WORLD keys");
return SDLK12_UNKNOWN;
}
+#endif
static Uint8
Scancode20to12(SDL_Scancode sc)
@@ -2837,7 +2928,7 @@ EventFilter20to12(void *data, SDL_Event *event20)
if (event20->key.repeat) {
return 1; /* ignore 2.0-style key repeat events */
}
- event12.key.keysym.sym = Scancode20toKeysym12(event20->key.keysym.scancode);
+ event12.key.keysym.sym = KeysymFromSDL2(event20);
KeyState[event12.key.keysym.sym] = event20->key.state;
@@ -2859,7 +2950,7 @@ EventFilter20to12(void *data, SDL_Event *event20)
return 1; /* ignore 2.0-style key repeat events */
}
- PendingKeydownEvent.key.keysym.sym = Scancode20toKeysym12(event20->key.keysym.scancode);
+ PendingKeydownEvent.key.keysym.sym = KeysymFromSDL2(event20);
KeyState[PendingKeydownEvent.key.keysym.sym] = event20->key.state;