diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PhysicalControllerManager.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PhysicalControllerManager.kt index 12f7a1e43..45517e672 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PhysicalControllerManager.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PhysicalControllerManager.kt @@ -2,6 +2,7 @@ package org.ryujinx.android import android.view.KeyEvent import android.view.MotionEvent +import org.ryujinx.android.viewmodels.QuickSettings class PhysicalControllerManager(val activity: MainActivity) { private var controllerId: Int = -1 @@ -54,11 +55,12 @@ class PhysicalControllerManager(val activity: MainActivity) { } private fun getGamePadButtonInputId(keycode: Int): GamePadButtonInputId { + val quickSettings = QuickSettings(activity) return when (keycode) { - KeyEvent.KEYCODE_BUTTON_A -> GamePadButtonInputId.B - KeyEvent.KEYCODE_BUTTON_B -> GamePadButtonInputId.A - KeyEvent.KEYCODE_BUTTON_X -> GamePadButtonInputId.X - KeyEvent.KEYCODE_BUTTON_Y -> GamePadButtonInputId.Y + KeyEvent.KEYCODE_BUTTON_A -> if (!quickSettings.useSwitchLayout) GamePadButtonInputId.A else GamePadButtonInputId.B + KeyEvent.KEYCODE_BUTTON_B -> if (!quickSettings.useSwitchLayout) GamePadButtonInputId.B else GamePadButtonInputId.A + KeyEvent.KEYCODE_BUTTON_X -> if (!quickSettings.useSwitchLayout) GamePadButtonInputId.X else GamePadButtonInputId.Y + KeyEvent.KEYCODE_BUTTON_Y -> if (!quickSettings.useSwitchLayout) GamePadButtonInputId.Y else GamePadButtonInputId.X KeyEvent.KEYCODE_BUTTON_L1 -> GamePadButtonInputId.LeftShoulder KeyEvent.KEYCODE_BUTTON_L2 -> GamePadButtonInputId.LeftTrigger KeyEvent.KEYCODE_BUTTON_R1 -> GamePadButtonInputId.RightShoulder diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/QuickSettings.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/QuickSettings.kt index 49ece0b3c..0c2d0925d 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/QuickSettings.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/QuickSettings.kt @@ -16,6 +16,7 @@ class QuickSettings(val activity: Activity) { var enableTextureRecompression: Boolean var resScale : Float var isGrid : Boolean + var useSwitchLayout : Boolean // Logs var enableDebugLogs: Boolean @@ -41,6 +42,7 @@ class QuickSettings(val activity: Activity) { resScale = sharedPref.getFloat("resScale", 1f) useVirtualController = sharedPref.getBoolean("useVirtualController", true) isGrid = sharedPref.getBoolean("isGrid", true) + useSwitchLayout = sharedPref.getBoolean("useSwitchLayout", true) enableDebugLogs = sharedPref.getBoolean("enableDebugLogs", false) enableStubLogs = sharedPref.getBoolean("enableStubLogs", false) @@ -66,6 +68,7 @@ class QuickSettings(val activity: Activity) { editor.putFloat("resScale", resScale) editor.putBoolean("useVirtualController", useVirtualController) editor.putBoolean("isGrid", isGrid) + editor.putBoolean("useSwitchLayout", useSwitchLayout) editor.putBoolean("enableDebugLogs", enableDebugLogs) editor.putBoolean("enableStubLogs", enableStubLogs) diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/SettingsViewModel.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/SettingsViewModel.kt index 1dd73fd54..f81489060 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/SettingsViewModel.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/SettingsViewModel.kt @@ -54,6 +54,7 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main resScale: MutableState, useVirtualController: MutableState, isGrid: MutableState, + useSwitchLayout: MutableState, enableDebugLogs: MutableState, enableStubLogs: MutableState, enableInfoLogs: MutableState, @@ -76,6 +77,7 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main resScale.value = sharedPref.getFloat("resScale", 1f) useVirtualController.value = sharedPref.getBoolean("useVirtualController", true) isGrid.value = sharedPref.getBoolean("isGrid", true) + useSwitchLayout.value = sharedPref.getBoolean("useSwitchLayout", true) enableDebugLogs.value = sharedPref.getBoolean("enableDebugLogs", false) enableStubLogs.value = sharedPref.getBoolean("enableStubLogs", false) @@ -99,6 +101,7 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main resScale: MutableState, useVirtualController: MutableState, isGrid: MutableState, + useSwitchLayout: MutableState, enableDebugLogs: MutableState, enableStubLogs: MutableState, enableInfoLogs: MutableState, @@ -121,7 +124,7 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main editor.putFloat("resScale", resScale.value) editor.putBoolean("useVirtualController", useVirtualController.value) editor.putBoolean("isGrid", isGrid.value) - + editor.putBoolean("useSwitchLayout", useSwitchLayout.value) editor.putBoolean("enableDebugLogs", enableDebugLogs.value) editor.putBoolean("enableStubLogs", enableStubLogs.value) diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt index b8cfac9af..832dab8be 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt @@ -120,6 +120,7 @@ class SettingViews { mutableStateOf(mainViewModel.firmwareVersion) } val isGrid = remember { mutableStateOf(true) } + val useSwitchLayout = remember { mutableStateOf(true) } val enableDebugLogs = remember { mutableStateOf(true) } val enableStubLogs = remember { mutableStateOf(true) } @@ -140,6 +141,7 @@ class SettingViews { resScale, useVirtualController, isGrid, + useSwitchLayout, enableDebugLogs, enableStubLogs, enableInfoLogs, @@ -171,6 +173,7 @@ class SettingViews { resScale, useVirtualController, isGrid, + useSwitchLayout, enableDebugLogs, enableStubLogs, enableInfoLogs, @@ -854,6 +857,21 @@ class SettingViews { useVirtualController.value = !useVirtualController.value }) } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(8.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Use Switch Controller Layout", + modifier = Modifier.align(Alignment.CenterVertically) + ) + Switch(checked = useSwitchLayout.value, onCheckedChange = { + useSwitchLayout.value = !useSwitchLayout.value + }) + } } } ExpandableView(onCardArrowClick = { }, title = "Log") { @@ -1004,6 +1022,7 @@ class SettingViews { resScale, useVirtualController, isGrid, + useSwitchLayout, enableDebugLogs, enableStubLogs, enableInfoLogs,