From 6f339a2253d3a347fa05e41e898674e2913f3fce Mon Sep 17 00:00:00 2001 From: David Griswold Date: Wed, 26 Nov 2025 10:24:42 +0300 Subject: [PATCH] direction kept with axis mapping --- .../citra/citra_emu/activities/EmulationActivity.kt | 3 +++ .../settings/model/view/InputBindingSetting.kt | 13 ++++++++++--- src/android/app/src/main/res/values/strings.xml | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index f23147dd8..232a7fe60 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -338,6 +338,7 @@ class EmulationActivity : AppCompatActivity() { preferences.getInt(InputBindingSetting.getInputAxisButtonKey(axis), -1) val guestOrientation = preferences.getInt(InputBindingSetting.getInputAxisOrientationKey(axis), -1) + val inverted = preferences.getBoolean(InputBindingSetting.getInputAxisInvertedKey(axis),false); if (nextMapping == -1 || guestOrientation == -1) { // Axis is unmapped continue @@ -346,6 +347,8 @@ class EmulationActivity : AppCompatActivity() { // Skip joystick wobble value = 0f } + if (inverted) value = -value; + when (nextMapping) { NativeLibrary.ButtonType.STICK_LEFT -> { axisValuesCirclePad[guestOrientation] = value diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt index 64827d89d..da3caef86 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt @@ -167,6 +167,7 @@ class InputBindingSetting( .remove(oldKey) // Used for button mapping .remove(oldKey + "_GuestOrientation") // Used for axis orientation .remove(oldKey + "_GuestButton") // Used for axis button + .remove(oldKey + "_Inverted") // used for axis inversion .apply() } } @@ -200,7 +201,7 @@ class InputBindingSetting( /** * Helper function to write a gamepad axis mapping for the setting. */ - private fun writeAxisMapping(axis: Int, value: Int) { + private fun writeAxisMapping(axis: Int, value: Int, inverted: Boolean) { // Cleanup old mapping removeOldMapping() @@ -208,6 +209,7 @@ class InputBindingSetting( preferences.edit() .putInt(getInputAxisOrientationKey(axis), if (isHorizontalOrientation()) 0 else 1) .putInt(getInputAxisButtonKey(axis), value) + .putBoolean(getInputAxisInvertedKey(axis),inverted) // Write next reverse mapping for future cleanup .putString(reverseKey, getInputAxisKey(axis)) .apply() @@ -251,8 +253,8 @@ class InputBindingSetting( } else { buttonCode } - writeAxisMapping(motionRange.axis, button) - val uiString = "${device.name}: Axis ${motionRange.axis}" + writeAxisMapping(motionRange.axis, button, axisDir == '-') + val uiString = "${device.name}: Axis ${motionRange.axis}" + axisDir value = uiString } @@ -307,6 +309,11 @@ class InputBindingSetting( */ fun getInputAxisButtonKey(axis: Int): String = "${getInputAxisKey(axis)}_GuestButton" + /** + * Helper function to get the settings key for an whether a gamepad axis is inverted. + */ + fun getInputAxisInvertedKey(axis: Int): String = "${getInputAxisKey(axis)}_Inverted" + /** * Helper function to get the settings key for an gamepad axis orientation. */ diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index f60fdd0e3..36c65bea1 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -133,8 +133,8 @@ Press or move an input. Input Binding Press or move an input to bind it to %1$s. - Move your joystick up or down. - Move your joystick left or right. + Move your joystick down + Move your joystick right A B SELECT