+ if (checkTextInputKey(key))
+ {
+ // process printable keys (with uppercase etc.) in text input mode
+ HandleKey(key, KEY_PRESSED);
+ HandleKey(key, KEY_RELEASED);
+ }
+}
+
+void HandlePauseResumeEvent(PauseResumeEvent *event)
+{
+ if (event->type == SDL_APP_WILLENTERBACKGROUND)
+ {
+ Mix_PauseMusic();
+ }
+ else if (event->type == SDL_APP_DIDENTERFOREGROUND)
+ {
+ Mix_ResumeMusic();
+ }
+}
+
+void HandleKeyEvent(KeyEvent *event)
+{
+ int key_status = (event->type == EVENT_KEYPRESS ? KEY_PRESSED : KEY_RELEASED);
+ boolean with_modifiers = (game_status == GAME_MODE_PLAYING ? FALSE : TRUE);
+ Key key = GetEventKey(event, with_modifiers);
+ Key keymod = (with_modifiers ? GetEventKey(event, FALSE) : key);
+
+#if DEBUG_EVENTS_KEY
+ Debug("event:key", "key was %s, keysym.scancode == %d, keysym.sym == %d, keymod = %d, GetKeyModState() = 0x%04x, resulting key == %d (%s)",
+ event->type == EVENT_KEYPRESS ? "pressed" : "released",
+ event->keysym.scancode,
+ event->keysym.sym,
+ keymod,
+ GetKeyModState(),
+ key,
+ getKeyNameFromKey(key));
+#endif
+
+#if defined(PLATFORM_ANDROID)
+ if (key == KSYM_Back)
+ {
+ // always map the "back" button to the "escape" key on Android devices
+ key = KSYM_Escape;
+ }
+ else if (key == KSYM_Menu)
+ {
+ // the "menu" button can be used to toggle displaying virtual buttons
+ if (key_status == KEY_PRESSED)
+ SetOverlayEnabled(!GetOverlayEnabled());
+ }
+ else if (!textinput_status)
+ {
+ // for any other "real" key event, disable virtual buttons
+ SetOverlayEnabled(FALSE);
+
+ // for any other "real" key event, disable overlay touch buttons
+ runtime.uses_touch_device = FALSE;
+ }