#if defined(TARGET_SDL2)
case SDL_CONTROLLERBUTTONDOWN:
case SDL_CONTROLLERBUTTONUP:
+ // for any game controller button event, disable overlay buttons
+ SetOverlayEnabled(FALSE);
+
HandleSpecialGameControllerButtons(event);
+
/* FALL THROUGH */
case SDL_CONTROLLERDEVICEADDED:
case SDL_CONTROLLERDEVICEREMOVED:
key_joystick_mapping = 0;
for (i = 0; i < MAX_PLAYERS; i++)
stored_player[i].action = 0;
+
+ ClearJoystickState();
}
void SleepWhileUnmapped()
"KEY_PRESSED");
int i;
+ // for any touch input event, enable overlay buttons (if activated)
+ SetOverlayEnabled(TRUE);
+
Error(ERR_DEBUG, "::: key '%s' was '%s' [fingerId: %lld]",
getKeyNameFromKey(key), key_status_name, event->fingerId);
#endif
#if defined(PLATFORM_ANDROID)
- // always map the "back" button to the "escape" key on Android devices
if (key == KSYM_Back)
+ {
+ // always map the "back" button to the "escape" key on Android devices
key = KSYM_Escape;
+ }
+ else
+ {
+ // for any key event other than "back" button, disable overlay buttons
+ SetOverlayEnabled(FALSE);
+ }
#endif
HandleKeyModState(keymod, key_status);
int i;
#if defined(TARGET_SDL2)
- /* map special "play/pause" media key to default key for play/pause actions */
+ /* map special keys (media keys / remote control buttons) to default keys */
if (key == KSYM_PlayPause)
key = KSYM_space;
+ else if (key == KSYM_Select)
+ key = KSYM_Return;
#endif
HandleSpecialGameControllerKeys(key, key_status);
static boolean element_dropped[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE };
int pnr;
+ /* initialize unifying snap and drop buttons (EM engine) */
+ game_em.use_single_button = game_em.use_single_button_initial;
+
for (pnr = 0; pnr < MAX_PLAYERS; pnr++)
{
byte key_action = 0;
if (tape.single_step && tape.recording && tape.pausing)
{
+ /* do not unify snap and drop buttons in single-step mode (EM engine) */
+ game_em.use_single_button = FALSE;
+
if (key_status == KEY_PRESSED && key_action & KEY_MOTION)
{
TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
if (level.game_engine_type == GAME_ENGINE_TYPE_EM ||
level.game_engine_type == GAME_ENGINE_TYPE_SP)
{
-
if (level.game_engine_type == GAME_ENGINE_TYPE_SP &&
getRedDiskReleaseFlag_SP() == 0)
stored_player[pnr].action &= ~KEY_BUTTON_DROP;