Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cacbc87 authored by David Padlipsky's avatar David Padlipsky
Browse files

Create new flag to separate talkback and magnifier shortcut changes

Bug: 375277034
Test: atest + Manually on device
Flag: com.android.hardware.input.enable_talkback_and_magnifier_key_gestures

Change-Id: Ifda3e2870b40dbfdcfa4a9e7fef8d07c2d3f0fee
parent fd1412ee
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ flag {
flag {
  name: "keyboard_a11y_shortcut_control"
  namespace: "input"
  description: "Adds shortcuts to toggle and control a11y features"
  description: "Adds shortcuts to toggle and control a11y keyboard features"
  bug: "373458181"
}

@@ -165,3 +165,10 @@ flag {
  description: "Turns three-finger touchpad taps into a customizable shortcut."
  bug: "365063048"
}

flag {
  name: "enable_talkback_and_magnifier_key_gestures"
  namespace: "input"
  description: "Adds key gestures for talkback and magnifier"
  bug: "375277034"
}
 No newline at end of file
+7 −5
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.server.input;

import static android.hardware.input.InputGestureData.createKeyTrigger;

import static com.android.hardware.input.Flags.enableTalkbackAndMagnifierKeyGestures;
import static com.android.hardware.input.Flags.keyboardA11yShortcutControl;
import static com.android.server.flags.Flags.newBugreportKeyboardShortcut;
import static com.android.window.flags.Flags.enableMoveToNextDisplayShortcut;
@@ -209,12 +211,12 @@ final class InputGestureManager {
                    KeyGestureEvent.KEY_GESTURE_TYPE_MOVE_TO_NEXT_DISPLAY
            ));
        }
        if (keyboardA11yShortcutControl()) {
            systemShortcuts.add(createKeyGesture(
                    KeyEvent.KEYCODE_T,
        if (enableTalkbackAndMagnifierKeyGestures()) {
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_T,
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK
            ));
                    KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK));
        }
        if (keyboardA11yShortcutControl()) {
            if (InputSettings.isAccessibilityBounceKeysFeatureEnabled()) {
                systemShortcuts.add(createKeyGesture(
                        KeyEvent.KEYCODE_3,
+4 −3
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ import static android.view.WindowManagerGlobal.ADD_PERMISSION_DENIED;
import static android.view.contentprotection.flags.Flags.createAccessibilityOverlayAppOpEnabled;

import static com.android.hardware.input.Flags.emojiAndScreenshotKeycodesAvailable;
import static com.android.hardware.input.Flags.enableTalkbackAndMagnifierKeyGestures;
import static com.android.hardware.input.Flags.keyboardA11yShortcutControl;
import static com.android.hardware.input.Flags.modifierShortcutDump;
import static com.android.hardware.input.Flags.useKeyGestureEventHandler;
@@ -3612,7 +3613,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                break;
            case KeyEvent.KEYCODE_T:
                if (keyboardA11yShortcutControl()) {
                if (enableTalkbackAndMagnifierKeyGestures()) {
                    if (firstDown && event.isMetaPressed() && event.isAltPressed()) {
                        mTalkbackShortcutController.toggleTalkback(mCurrentUserId,
                                TalkbackShortcutController.ShortcutSource.KEYBOARD);
@@ -4112,7 +4113,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                        return mDefaultDisplayPolicy.isAwake() && mAccessibilityShortcutController
                                .isAccessibilityShortcutAvailable(false);
                    case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK:
                        return keyboardA11yShortcutControl();
                        return enableTalkbackAndMagnifierKeyGestures();
                    case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_SLOW_KEYS:
                        return InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()
                                && keyboardA11yShortcutControl();
@@ -4345,7 +4346,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                return true;
            case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK:
                if (keyboardA11yShortcutControl()) {
                if (enableTalkbackAndMagnifierKeyGestures()) {
                    if (complete) {
                        mTalkbackShortcutController.toggleTalkback(mCurrentUserId,
                                TalkbackShortcutController.ShortcutSource.KEYBOARD);
+2 −2
Original line number Diff line number Diff line
@@ -397,7 +397,7 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_KEYBOARD_A11Y_SHORTCUT_CONTROL)
    @EnableFlags(Flags.FLAG_ENABLE_TALKBACK_AND_MAGNIFIER_KEY_GESTURES)
    @DisableFlags(com.android.hardware.input.Flags.FLAG_USE_KEY_GESTURE_EVENT_HANDLER)
    public void testToggleTalkbackPress() {
        testShortcutInternal("Meta + Alt + T -> Toggle talkback",
@@ -745,7 +745,7 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase {
    }

    @Test
    @EnableFlags(com.android.hardware.input.Flags.FLAG_KEYBOARD_A11Y_SHORTCUT_CONTROL)
    @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_TALKBACK_AND_MAGNIFIER_KEY_GESTURES)
    public void testKeyGestureToggleTalkback() {
        Assert.assertTrue(
                sendKeyGestureEventComplete(KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK));