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

Commit eb66f058 authored by Katie Dektar's avatar Katie Dektar
Browse files

[A11y] Update magnification panning keyboard bindings

After an email discussion, it has been decidd that split screen
focus changing keyboard keys will be removed, and magnification
can have action + alt + arrows to be consistent with magnification
zooming with action + alt + plus/minus.

This change updates split screen focus keyboard keys since they
are not yet deprecated to ctrl + alt + left/right arrow, and
sets the magnification keys to the agreed-upon combination.

In addition, renames "magnifier" to "magnification" to avoid
confusion with the Pixel magnifier app, separate from
magnification.

Bug: 384514582
Test: `atest KeyGestureControllerTests` and manual on device
Flag: com.android.hardware.input.enable_talkback_and_magnifier_key_gestures
Change-Id: I583bc604cd78c60c681ec0c5ef499b0afadb199c
parent d3057f0d
Loading
Loading
Loading
Loading
+24 −24
Original line number Diff line number Diff line
@@ -119,16 +119,16 @@ public final class KeyGestureEvent {
    public static final int KEY_GESTURE_TYPE_SNAP_RIGHT_FREEFORM_WINDOW = 69;
    public static final int KEY_GESTURE_TYPE_MINIMIZE_FREEFORM_WINDOW = 70;
    public static final int KEY_GESTURE_TYPE_TOGGLE_MAXIMIZE_FREEFORM_WINDOW = 71;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN = 72;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT = 73;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN = 72;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT = 73;
    public static final int KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION = 74;
    public static final int KEY_GESTURE_TYPE_ACTIVATE_SELECT_TO_SPEAK = 75;
    public static final int KEY_GESTURE_TYPE_MAXIMIZE_FREEFORM_WINDOW = 76;
    public static final int KEY_GESTURE_TYPE_TOGGLE_DO_NOT_DISTURB = 77;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT = 78;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT = 79;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP = 80;
    public static final int KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN = 81;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT = 78;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT = 79;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP = 80;
    public static final int KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN = 81;

    public static final int FLAG_CANCELLED = 1;

@@ -215,16 +215,16 @@ public final class KeyGestureEvent {
            KEY_GESTURE_TYPE_SNAP_RIGHT_FREEFORM_WINDOW,
            KEY_GESTURE_TYPE_MINIMIZE_FREEFORM_WINDOW,
            KEY_GESTURE_TYPE_TOGGLE_MAXIMIZE_FREEFORM_WINDOW,
            KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN,
            KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT,
            KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN,
            KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT,
            KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION,
            KEY_GESTURE_TYPE_ACTIVATE_SELECT_TO_SPEAK,
            KEY_GESTURE_TYPE_MAXIMIZE_FREEFORM_WINDOW,
            KEY_GESTURE_TYPE_TOGGLE_DO_NOT_DISTURB,
            KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT,
            KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT,
            KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP,
            KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN,
            KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT,
            KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT,
            KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP,
            KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface KeyGestureType {
@@ -787,10 +787,10 @@ public final class KeyGestureEvent {
                return "KEY_GESTURE_TYPE_MINIMIZE_FREEFORM_WINDOW";
            case KEY_GESTURE_TYPE_TOGGLE_MAXIMIZE_FREEFORM_WINDOW:
                return "KEY_GESTURE_TYPE_TOGGLE_MAXIMIZE_FREEFORM_WINDOW";
            case KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN:
                return "KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN";
            case KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT:
                return "KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT";
            case KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN";
            case KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT";
            case KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION:
                return "KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION";
            case KEY_GESTURE_TYPE_ACTIVATE_SELECT_TO_SPEAK:
@@ -799,14 +799,14 @@ public final class KeyGestureEvent {
                return "KEY_GESTURE_TYPE_MAXIMIZE_FREEFORM_WINDOW";
            case KEY_GESTURE_TYPE_TOGGLE_DO_NOT_DISTURB:
                return "KEY_GESTURE_TYPE_TOGGLE_DO_NOT_DISTURB";
            case KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT:
                return "KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT";
            case KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT:
                return "KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT";
            case KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP:
                return "KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP";
            case KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN:
                return "KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN";
            case KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT";
            case KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT";
            case KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP";
            case KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN:
                return "KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN";
            default:
                return Integer.toHexString(value);
        }
+12 −12
Original line number Diff line number Diff line
@@ -261,27 +261,27 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo
                            ? event.getDisplayId() : Display.DEFAULT_DISPLAY;

                    switch (gestureType) {
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN:
                                mAms.getMagnificationController().scaleMagnificationByStep(
                                        displayId, MagnificationController.ZOOM_DIRECTION_IN);
                            return true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT:
                                mAms.getMagnificationController().scaleMagnificationByStep(
                                        displayId, MagnificationController.ZOOM_DIRECTION_OUT);
                            return true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT:
                            mAms.getMagnificationController().panMagnificationByStep(
                                    displayId, MagnificationController.PAN_DIRECTION_LEFT);
                            return true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT:
                            mAms.getMagnificationController().panMagnificationByStep(
                                    displayId, MagnificationController.PAN_DIRECTION_RIGHT);
                            return true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP:
                            mAms.getMagnificationController().panMagnificationByStep(
                                    displayId, MagnificationController.PAN_DIRECTION_UP);
                            return true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN:
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN:
                            mAms.getMagnificationController().panMagnificationByStep(
                                    displayId, MagnificationController.PAN_DIRECTION_DOWN);
                            return true;
@@ -292,12 +292,12 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo
                @Override
                public boolean isKeyGestureSupported(int gestureType) {
                    return switch (gestureType) {
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN -> true;
                        case KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP,
                             KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN -> true;
                        default -> false;
                    };
                }
+12 −12
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ final class InputGestureManager {
                ),
                createKeyGesture(
                        KeyEvent.KEYCODE_DPAD_LEFT,
                        KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                        KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                        KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_LEFT
                ),
                createKeyGesture(
@@ -183,7 +183,7 @@ final class InputGestureManager {
                ),
                createKeyGesture(
                        KeyEvent.KEYCODE_DPAD_RIGHT,
                        KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                        KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                        KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_RIGHT
                ),
                createKeyGesture(
@@ -217,22 +217,22 @@ final class InputGestureManager {
                    KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_MINUS,
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT));
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_EQUALS,
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN));
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_DPAD_LEFT,
                    KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT));
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_DPAD_RIGHT,
                    KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT));
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_DPAD_UP,
                    KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP));
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_DPAD_DOWN,
                    KeyEvent.META_CTRL_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN));
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN));
            systemShortcuts.add(createKeyGesture(KeyEvent.KEYCODE_M,
                    KeyEvent.META_META_ON | KeyEvent.META_ALT_ON,
                    KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION));
+22 −22
Original line number Diff line number Diff line
@@ -466,27 +466,27 @@ class KeyGestureControllerTests {
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + DPAD_LEFT -> Change Splitscreen Focus Left",
                "CTRL + ALT + DPAD_LEFT -> Change Splitscreen Focus Left",
                intArrayOf(
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_LEFT
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_LEFT,
                intArrayOf(KeyEvent.KEYCODE_DPAD_LEFT),
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + CTRL + DPAD_RIGHT -> Change Splitscreen Focus Right",
                "CTRL + ALT + DPAD_RIGHT -> Change Splitscreen Focus Right",
                intArrayOf(
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_RIGHT
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_RIGHT,
                intArrayOf(KeyEvent.KEYCODE_DPAD_RIGHT),
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
@@ -735,25 +735,25 @@ class KeyGestureControllerTests {
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + '-' -> Magnifier Zoom Out",
                "META + ALT + '-' -> Magnification Zoom Out",
                intArrayOf(
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_MINUS
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT,
                intArrayOf(KeyEvent.KEYCODE_MINUS),
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + '=' -> Magnifier Zoom In",
                "META + ALT + '=' -> Magnification Zoom In",
                intArrayOf(
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_EQUALS
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN,
                intArrayOf(KeyEvent.KEYCODE_EQUALS),
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
@@ -785,49 +785,49 @@ class KeyGestureControllerTests {
            TestData(
                "META + ALT + 'Down' -> Magnification Pan Down",
                intArrayOf(
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_DOWN
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN,
                intArrayOf(KeyEvent.KEYCODE_DPAD_DOWN),
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + 'Up' -> Magnification Pan Up",
                intArrayOf(
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_UP
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP,
                intArrayOf(KeyEvent.KEYCODE_DPAD_UP),
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + 'Left' -> Magnification Pan Left",
                intArrayOf(
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_LEFT
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT,
                intArrayOf(KeyEvent.KEYCODE_DPAD_LEFT),
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
            TestData(
                "META + ALT + 'Right' -> Magnification Pan Right",
                intArrayOf(
                    KeyEvent.KEYCODE_CTRL_LEFT,
                    KeyEvent.KEYCODE_META_LEFT,
                    KeyEvent.KEYCODE_ALT_LEFT,
                    KeyEvent.KEYCODE_DPAD_RIGHT
                ),
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT,
                KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT,
                intArrayOf(KeyEvent.KEYCODE_DPAD_RIGHT),
                KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON,
                KeyEvent.META_META_ON or KeyEvent.META_ALT_ON,
                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
            ),
        )