fixed key shortcut to start/end game (broken by regression)
authorHolger Schemel <info@artsoft.org>
Mon, 14 Sep 2020 19:42:59 +0000 (21:42 +0200)
committerHolger Schemel <info@artsoft.org>
Mon, 14 Sep 2020 22:28:58 +0000 (00:28 +0200)
This change fixes a regression of commit 888ee049 (and 35da46e4) that
causes problems when handling text input in situations unrelated to
the Android screen keyboard, like entering key shortcuts to start and
end a game on non-Android platforms.

This commit fixes a bug that results in restarting the game when the
player has died and the "space" key (or other configured key) was used
to return to the main menu (or level editor).

src/events.c
src/libgame/sdl.h

index 2df4eb7bc3a3a4320f6ed4a36b79419b6e06e093..c18a8a468a3b24ac32d7c21e7b7ecd7573eb1a98 100644 (file)
@@ -1386,6 +1386,10 @@ static boolean checkTextInputKey(Key key)
   if (game_status == GAME_MODE_PLAYING)
     return FALSE;
 
+  // ignore raw keys as text input when not in text input mode
+  if (KSYM_RAW(key) && !textinput_status)
+    return FALSE;
+
   // else handle all printable keys as text input
   return KSYM_PRINTABLE(key);
 }
index 9fb16338fefba1760664a21e7ade264a1a190161..dfdd4a407e239f84ecd3f0593715983600be7505 100644 (file)
@@ -350,6 +350,12 @@ typedef struct UserEventInfo       UserEvent;
 #define KSYM_FKEY_LAST         KSYM_F12
 #define KSYM_NUM_FKEYS         (KSYM_FKEY_LAST - KSYM_FKEY_FIRST + 1)
 
+#define KSYM_RAW(k)            (((k) >= KSYM_a &&                      \
+                                 (k) <= KSYM_z)        ||              \
+                                ((k) >= KSYM_0 &&                      \
+                                 (k) <= KSYM_9)        ||              \
+                                (k) == KSYM_space)
+
 #define KSYM_PRINTABLE(k)      (((k) >= KSYM_space &&                  \
                                  (k) <= KSYM_z)        ||              \
                                 (k) == KSYM_Adiaeresis ||              \