diff --git a/app/src/main/java/com/droiddeck/launcher/input/BackQamInput.kt b/app/src/main/java/com/droiddeck/launcher/input/BackQamInput.kt index ef8042aa6..83e1adafb 100644 --- a/app/src/main/java/com/droiddeck/launcher/input/BackQamInput.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/BackQamInput.kt @@ -37,7 +37,7 @@ class BackQamInput(private val setPressed: (Boolean) -> Unit, private val onTap: if (!alreadyHeld) setPressed(true) } presses[device] = Press(hold, used = presses.values.any { it.held }) - handler.postDelayed(hold, 500) + handler.postDelayed(hold, 700) true } KeyEvent.ACTION_UP -> { diff --git a/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt index 5ea179ea1..b526bea28 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt @@ -607,9 +607,6 @@ internal fun SessionDrawer(open: Boolean, requestedPage: SessionDrawerPage, cont if (a.steam) ChoiceRow(host, "back-actions", stringResource(R.string.mode_back), null, listOf(false to stringResource(SessionPrefs.BACK_MENU_THEN_QAM), true to stringResource(SessionPrefs.BACK_QAM_THEN_MENU)), a.backActionsInverted, chipModifier = focus.track(page, "back-actions"), onPick = a.onBackActionsInverted) - if (a.steam && a.padType in listOf(SessionPrefs.CONTROLLER_DECK, SessionPrefs.CONTROLLER_STEAM)) { - Note(stringResource(R.string.back_native_qam_hint)) - } if (a.steam && a.unfoldedControls != null) ToggleRow(host, "unfolded-controls", stringResource(R.string.unfolded_controls), stringResource(R.string.unfolded_controls_hint), a.unfoldedControls, chipModifier = focus.track(page, "unfolded-controls"), onChange = a.onUnfoldedControls) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e600fceb..840e26ebb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -306,7 +306,7 @@ Xbox 360 controller Deck: Quick Access button and gyro. Steam Controller: the same, with grip sense on the back buttons. DualShock 4 and DualSense: gyro, and the trackpads as their touchpad. Xbox 360: open Quick Access with Guide+A. Back - Hold Back for 500 ms, then press another button for Steam shortcuts. Single and double taps keep the selected actions. + Hold Back for 700 ms, then press another button for Steam shortcuts. Single and double taps keep the selected actions. Allow brightness control Tap to allow Steam to change Android screen brightness. Menu → QAM diff --git a/app/src/test/java/com/droiddeck/launcher/input/BackQamInputTest.kt b/app/src/test/java/com/droiddeck/launcher/input/BackQamInputTest.kt index 3b3c45992..8006a495b 100644 --- a/app/src/test/java/com/droiddeck/launcher/input/BackQamInputTest.kt +++ b/app/src/test/java/com/droiddeck/launcher/input/BackQamInputTest.kt @@ -40,9 +40,9 @@ class BackQamInputTest { assertTrue(changes.isEmpty()) } - @Test fun aHoldStartsAt500msAndNeverProducesATap() { + @Test fun aHoldStartsAt700msAndNeverProducesATap() { assertTrue(send(KeyEvent.ACTION_DOWN)) - advance(499) + advance(699) assertTrue(changes.isEmpty()) advance(1) for (repeat in 1..10) assertTrue(send(KeyEvent.ACTION_DOWN, repeat = repeat)) @@ -54,12 +54,21 @@ class BackQamInputTest { assertTrue(taps.isEmpty()) } + @Test fun releasingBetween500And700msStillProducesASingleTap() { + send(KeyEvent.ACTION_DOWN) + advance(600) + send(KeyEvent.ACTION_UP) + advance(500) + assertEquals(listOf(false), taps) + assertTrue(changes.isEmpty()) + } + @Test fun holdingTheSecondPressCancelsTheFirstTap() { send(KeyEvent.ACTION_DOWN) send(KeyEvent.ACTION_UP) advance(400) send(KeyEvent.ACTION_DOWN) - advance(499) + advance(699) assertTrue(taps.isEmpty()) advance(1) assertEquals(listOf(true), changes) @@ -70,7 +79,7 @@ class BackQamInputTest { @Test fun otherButtonsAndSelectPassThroughWhileBackIsHeld() { send(KeyEvent.ACTION_DOWN) - advance(500) + advance(700) for (code in listOf(KeyEvent.KEYCODE_BUTTON_X, KeyEvent.KEYCODE_BUTTON_SELECT)) { for (action in listOf(KeyEvent.ACTION_DOWN, KeyEvent.ACTION_UP)) { assertFalse(input.onKeyEvent(KeyEvent(action, code), true)) @@ -90,7 +99,7 @@ class BackQamInputTest { @Test fun losingFocusReleasesQamAndConsumesTheLateRelease() { send(KeyEvent.ACTION_DOWN) - advance(500) + advance(700) input.cancel() input.cancel() assertTrue(send(KeyEvent.ACTION_DOWN, repeat = 1, enabled = false)) @@ -120,7 +129,7 @@ class BackQamInputTest { @Test fun openingAnOverlayReleasesQamBeforeRoutingItsNextKey() { send(KeyEvent.ACTION_DOWN) - advance(500) + advance(700) assertFalse(input.onKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_B), false)) assertTrue(send(KeyEvent.ACTION_UP, enabled = false)) assertEquals(listOf(true, false), changes) @@ -128,13 +137,13 @@ class BackQamInputTest { @Test fun repeatsAfterCancellationCannotReassertQam() { send(KeyEvent.ACTION_DOWN) - advance(500) + advance(700) input.cancel() assertTrue(send(KeyEvent.ACTION_DOWN, repeat = 1)) advance(1000) assertEquals(listOf(true, false), changes) assertTrue(send(KeyEvent.ACTION_DOWN)) - advance(500) + advance(700) assertTrue(send(KeyEvent.ACTION_UP)) assertEquals(listOf(true, false, true, false), changes) } @@ -151,7 +160,7 @@ class BackQamInputTest { @Test fun removingOneDeviceDoesNotReleaseAnotherDevicesHold() { send(KeyEvent.ACTION_DOWN, device = 4) send(KeyEvent.ACTION_DOWN, device = 5) - advance(500) + advance(700) input.onDeviceRemoved(4) assertEquals(listOf(true), changes) send(KeyEvent.ACTION_UP, device = 5)