diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 9bf45d69e0..8dc11ffd90 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1698,7 +1698,23 @@ static void android_input_poll(void *data) && input_state > 0) { } - else if (android->onBackPressed) + else if (g_settings.input.back_behavior == BACK_BUTTON_QUIT) + { + *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } + else if (g_settings.input.back_behavior == BACK_BUTTON_GUI_TOGGLE) + { + int action = AKeyEvent_getAction(event); + if (action == AKEY_EVENT_ACTION_DOWN) + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); + else if (action == AKEY_EVENT_ACTION_UP) + *lifecycle_state &= ~(1ULL << RARCH_MENU_TOGGLE); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } + else if (android->onBackPressed && g_settings.input.back_behavior == BACK_BUTTON_MENU_TOGGLE) { RARCH_LOG("Invoke onBackPressed through JNI.\n"); JNIEnv *env = jni_thread_getenv(); diff --git a/android/phoenix/res/values/array.xml b/android/phoenix/res/values/array.xml index 9faa68841b..d34d91f5b6 100644 --- a/android/phoenix/res/values/array.xml +++ b/android/phoenix/res/values/array.xml @@ -2,12 +2,14 @@ @string/quit + @string/gui_toggle @string/menu_toggle 0 1 + 2 diff --git a/android/phoenix/res/values/strings.xml b/android/phoenix/res/values/strings.xml index ae7f54440d..45aef0eefa 100644 --- a/android/phoenix/res/values/strings.xml +++ b/android/phoenix/res/values/strings.xml @@ -85,6 +85,7 @@ Quit + GUI toggle Menu toggle diff --git a/input/input_common.h b/input/input_common.h index 8c354dfa28..3ce49342e9 100644 --- a/input/input_common.h +++ b/input/input_common.h @@ -54,6 +54,7 @@ bool input_translate_coord_viewport(int mouse_x, int mouse_y, enum back_button_enums { BACK_BUTTON_QUIT = 0, + BACK_BUTTON_GUI_TOGGLE, BACK_BUTTON_MENU_TOGGLE, }; #endif