diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 9cd31572da..b078765941 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -143,8 +143,17 @@ static void android_input_poll(void *data) } else { - int meta = AKeyEvent_getMetaState(event); - if (!(meta & AMETA_ALT_ON)) + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INPUT_XPERIA_PLAY_HACK)) + { + int meta = AKeyEvent_getMetaState(event); + if (!(meta & AMETA_ALT_ON)) + { + *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } + } + else { *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); AInputQueue_finishEvent(android_app->inputQueue, event, handled); diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index d61a9066c5..c00f404493 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -664,6 +664,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } else if (strstr(name_buf, "keypad-zeus") || (strstr(name_buf, "keypad-game-zeus"))) { + g_extern.lifecycle_mode_state |= (1ULL << MODE_INPUT_XPERIA_PLAY_HACK); /* Xperia Play */ /* X/o/square/triangle/R1/L1/D-pad */ keycode_lut[AKEYCODE_DPAD_CENTER] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); diff --git a/general.h b/general.h index fb72f45184..2a44f45d69 100644 --- a/general.h +++ b/general.h @@ -134,6 +134,9 @@ enum menu_enums MODE_EXTLAUNCH_MULTIMAN, MODE_EXIT, MODE_EXITSPAWN, +#ifdef ANDROID + MODE_INPUT_XPERIA_PLAY_HACK, +#endif MODE_VIDEO_TRIPLE_BUFFERING_ENABLE, MODE_VIDEO_FLICKER_FILTER_ENABLE, MODE_VIDEO_SOFT_FILTER_ENABLE,