Loading core/java/android/hardware/input/KeyGestureEvent.java +4 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,7 @@ public final class KeyGestureEvent { public static final int KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS = 76; public static final int KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK = 77; public static final int KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK = 78; public static final int KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL = 79; public static final int FLAG_CANCELLED = 1 << 0; public static final int FLAG_LONG_PRESS = 1 << 1; Loading Loading @@ -224,6 +225,7 @@ public final class KeyGestureEvent { KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS, KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK, KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, }) @Retention(RetentionPolicy.SOURCE) public @interface KeyGestureType { Loading Loading @@ -820,6 +822,8 @@ public final class KeyGestureEvent { return "KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK"; case KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK: return "KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK"; case KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL: return "KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL"; default: return Integer.toHexString(value); } Loading core/java/android/hardware/input/input_framework.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -222,3 +222,10 @@ flag { description: "Enables per-app overrides compatibility for mouse to touch" bug: "413207127" } flag { name: "enable_quick_settings_panel_shortcut" namespace: "input" description: "Enables shortcut for quick settings panel" bug: "423899230" } packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt +4 −0 Original line number Diff line number Diff line Loading @@ -549,6 +549,7 @@ object TestShortcuts { simpleShortcutCategory(System, "System apps", "Open settings"), simpleShortcutCategory(System, "System controls", "Lock screen"), simpleShortcutCategory(System, "System controls", "View notifications"), simpleShortcutCategory(System, "System controls", "View quick settings"), simpleShortcutCategory(System, "System controls", "Take screenshot"), simpleShortcutCategory(System, "System controls", "Go back"), simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"), Loading Loading @@ -580,6 +581,9 @@ object TestShortcuts { simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT ), Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyevent/SysUIKeyGestureEventInitializerTest.kt +33 −6 Original line number Diff line number Diff line Loading @@ -21,13 +21,13 @@ import android.hardware.input.InputManager.KeyGestureEventHandler import android.hardware.input.KeyGestureEvent import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.CommandQueue import com.android.window.flags.Flags import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Rule Loading Loading @@ -59,18 +59,28 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, ) fun start_flagEnabled_registerKeyGestureEvents() { underTest.start() verify(inputManager).registerKeyGestureEventHandler(keyGestureEventsCaptor.capture(), any()) keyGestureEventsCaptor.value.let { keyGestureEvents -> assertThat(keyGestureEvents).containsExactly(KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL) assertThat(keyGestureEvents) .containsExactly( KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, ) } } @Test @DisableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @DisableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, ) fun start_flagDisabled_noRegisterKeyGestureEvents() { underTest.start() Loading @@ -78,7 +88,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_eventTypeToggleNotificationPanel_toggleNotificationPanel() { underTest.start() verify(inputManager) Loading @@ -95,7 +105,24 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT) fun handleKeyGestureEvent_eventTypeToggleQuickSettingsPanel_toggleQuickSettingsPanel() { underTest.start() verify(inputManager) .registerKeyGestureEventHandler(any(), keyGestureEventHandlerCaptor.capture()) keyGestureEventHandlerCaptor.value.handleKeyGestureEvent( KeyGestureEvent.Builder() .setKeyGestureType(KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL) .build(), /* focusedToken= */ null, ) verify(commandQueue).toggleQuickSettingsPanel() } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_otherEventTypeToggleNotificationPanel_noInteraction() { underTest.start() verify(inputManager) Loading packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2460,6 +2460,8 @@ <!-- User visible title for the keyboard shortcut that triggers the notification shade. [CHAR LIMIT=70] --> <string name="group_system_access_notification_shade">View notifications</string> <!-- User visible title for the keyboard shortcut that triggers the quick settings panel. [CHAR LIMIT=70] --> <string name="group_system_access_quick_settings_panel">View quick settings</string> <!-- User visible title for the keyboard shortcut that takes a full screenshot. [CHAR LIMIT=70] --> <string name="group_system_full_screenshot">Take screenshot</string> <!-- User visible title for the keyboard shortcut that access list of system / apps shortcuts. [CHAR LIMIT=70] --> Loading Loading
core/java/android/hardware/input/KeyGestureEvent.java +4 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,7 @@ public final class KeyGestureEvent { public static final int KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS = 76; public static final int KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK = 77; public static final int KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK = 78; public static final int KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL = 79; public static final int FLAG_CANCELLED = 1 << 0; public static final int FLAG_LONG_PRESS = 1 << 1; Loading Loading @@ -224,6 +225,7 @@ public final class KeyGestureEvent { KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS, KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK, KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, }) @Retention(RetentionPolicy.SOURCE) public @interface KeyGestureType { Loading Loading @@ -820,6 +822,8 @@ public final class KeyGestureEvent { return "KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK"; case KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK: return "KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK"; case KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL: return "KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL"; default: return Integer.toHexString(value); } Loading
core/java/android/hardware/input/input_framework.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -222,3 +222,10 @@ flag { description: "Enables per-app overrides compatibility for mouse to touch" bug: "413207127" } flag { name: "enable_quick_settings_panel_shortcut" namespace: "input" description: "Enables shortcut for quick settings panel" bug: "423899230" }
packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt +4 −0 Original line number Diff line number Diff line Loading @@ -549,6 +549,7 @@ object TestShortcuts { simpleShortcutCategory(System, "System apps", "Open settings"), simpleShortcutCategory(System, "System controls", "Lock screen"), simpleShortcutCategory(System, "System controls", "View notifications"), simpleShortcutCategory(System, "System controls", "View quick settings"), simpleShortcutCategory(System, "System controls", "Take screenshot"), simpleShortcutCategory(System, "System controls", "Go back"), simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"), Loading Loading @@ -580,6 +581,9 @@ object TestShortcuts { simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT ), Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyevent/SysUIKeyGestureEventInitializerTest.kt +33 −6 Original line number Diff line number Diff line Loading @@ -21,13 +21,13 @@ import android.hardware.input.InputManager.KeyGestureEventHandler import android.hardware.input.KeyGestureEvent import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.CommandQueue import com.android.window.flags.Flags import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Rule Loading Loading @@ -59,18 +59,28 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, ) fun start_flagEnabled_registerKeyGestureEvents() { underTest.start() verify(inputManager).registerKeyGestureEventHandler(keyGestureEventsCaptor.capture(), any()) keyGestureEventsCaptor.value.let { keyGestureEvents -> assertThat(keyGestureEvents).containsExactly(KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL) assertThat(keyGestureEvents) .containsExactly( KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, ) } } @Test @DisableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @DisableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, ) fun start_flagDisabled_noRegisterKeyGestureEvents() { underTest.start() Loading @@ -78,7 +88,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_eventTypeToggleNotificationPanel_toggleNotificationPanel() { underTest.start() verify(inputManager) Loading @@ -95,7 +105,24 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT) fun handleKeyGestureEvent_eventTypeToggleQuickSettingsPanel_toggleQuickSettingsPanel() { underTest.start() verify(inputManager) .registerKeyGestureEventHandler(any(), keyGestureEventHandlerCaptor.capture()) keyGestureEventHandlerCaptor.value.handleKeyGestureEvent( KeyGestureEvent.Builder() .setKeyGestureType(KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL) .build(), /* focusedToken= */ null, ) verify(commandQueue).toggleQuickSettingsPanel() } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_otherEventTypeToggleNotificationPanel_noInteraction() { underTest.start() verify(inputManager) Loading
packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2460,6 +2460,8 @@ <!-- User visible title for the keyboard shortcut that triggers the notification shade. [CHAR LIMIT=70] --> <string name="group_system_access_notification_shade">View notifications</string> <!-- User visible title for the keyboard shortcut that triggers the quick settings panel. [CHAR LIMIT=70] --> <string name="group_system_access_quick_settings_panel">View quick settings</string> <!-- User visible title for the keyboard shortcut that takes a full screenshot. [CHAR LIMIT=70] --> <string name="group_system_full_screenshot">Take screenshot</string> <!-- User visible title for the keyboard shortcut that access list of system / apps shortcuts. [CHAR LIMIT=70] --> Loading