Loading core/java/android/hardware/input/KeyGestureEvent.java +4 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ public final class KeyGestureEvent { public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK = 80; public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK = 81; public static final int KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN = 82; public static final int KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT = 83; public static final int FLAG_CANCELLED = 1 << 0; public static final int FLAG_LONG_PRESS = 1 << 1; Loading Loading @@ -232,6 +233,7 @@ public final class KeyGestureEvent { KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK, KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK, KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN, KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT, }) @Retention(RetentionPolicy.SOURCE) public @interface KeyGestureType { Loading Loading @@ -836,6 +838,8 @@ public final class KeyGestureEvent { return "KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK"; case KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN: return "KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN"; case KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT: return "KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT"; 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 @@ -256,6 +256,13 @@ flag { bug: "403531245" } flag { name: "enable_partial_screenshot_keyboard_shortcut" namespace: "input" description: "Enables keyboard shortcut for taking partial screenshots via large screen capture UI" bug: "420714826" } flag { name: "keyboard_backlight_shortcuts" namespace: "desktop_input" Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,7 @@ object TestShortcuts { simpleShortcutCategory(System, "System controls", "View notifications"), simpleShortcutCategory(System, "System controls", "View quick settings"), simpleShortcutCategory(System, "System controls", "Take screenshot"), simpleShortcutCategory(System, "System controls", "Take partial screenshot"), simpleShortcutCategory(System, "System controls", "Go back"), simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"), simpleShortcutCategory( Loading Loading @@ -587,6 +588,9 @@ object TestShortcuts { simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT ), simpleInputGestureData(keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_BACK), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyevent/SysUIKeyGestureEventInitializerTest.kt +21 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.input.InputManager.KeyGestureEventHandler import android.hardware.input.InputManager.KeyGestureEventListener import android.hardware.input.KeyGestureEvent import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT 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.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TASKBAR Loading Loading @@ -81,6 +82,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { @EnableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT, ) fun start_flagEnabled_registerKeyGestureEvents() { underTest.start() Loading @@ -91,6 +93,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { .containsExactly( KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT, ) } } Loading @@ -99,6 +102,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { @DisableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT, ) fun start_flagDisabled_noRegisterKeyGestureEvents() { underTest.start() Loading Loading @@ -142,6 +146,23 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { verify(commandQueue).toggleQuickSettingsPanel() } @Test @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT) fun handleKeyGestureEvent_eventTypeTakePartialScreenshot_opensScreenCaptureUi() { underTest.start() verify(inputManager) .registerKeyGestureEventHandler(any(), keyGestureEventHandlerCaptor.capture()) keyGestureEventHandlerCaptor.value.handleKeyGestureEvent( KeyGestureEvent.Builder() .setKeyGestureType(KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT) .build(), /* focusedToken= */ null, ) // TODO(b/420714826) Verify screen capture UI is launched. } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_otherEventTypeToggleNotificationPanel_noInteraction() { Loading packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2545,6 +2545,8 @@ <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 begins a partial screenshot. [CHAR LIMIT=70] --> <string name="group_system_partial_screenshot">Take partial screenshot</string> <!-- User visible title for the keyboard shortcut that access list of system / apps shortcuts. [CHAR LIMIT=70] --> <string name="group_system_access_system_app_shortcuts">Show shortcuts</string> <!-- User visible title for the keyboard shortcut that goes back to previous state. [CHAR LIMIT=70] --> Loading Loading
core/java/android/hardware/input/KeyGestureEvent.java +4 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ public final class KeyGestureEvent { public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK = 80; public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK = 81; public static final int KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN = 82; public static final int KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT = 83; public static final int FLAG_CANCELLED = 1 << 0; public static final int FLAG_LONG_PRESS = 1 << 1; Loading Loading @@ -232,6 +233,7 @@ public final class KeyGestureEvent { KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK, KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK, KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN, KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT, }) @Retention(RetentionPolicy.SOURCE) public @interface KeyGestureType { Loading Loading @@ -836,6 +838,8 @@ public final class KeyGestureEvent { return "KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK"; case KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN: return "KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN"; case KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT: return "KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT"; 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 @@ -256,6 +256,13 @@ flag { bug: "403531245" } flag { name: "enable_partial_screenshot_keyboard_shortcut" namespace: "input" description: "Enables keyboard shortcut for taking partial screenshots via large screen capture UI" bug: "420714826" } flag { name: "keyboard_backlight_shortcuts" namespace: "desktop_input" Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,7 @@ object TestShortcuts { simpleShortcutCategory(System, "System controls", "View notifications"), simpleShortcutCategory(System, "System controls", "View quick settings"), simpleShortcutCategory(System, "System controls", "Take screenshot"), simpleShortcutCategory(System, "System controls", "Take partial screenshot"), simpleShortcutCategory(System, "System controls", "Go back"), simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"), simpleShortcutCategory( Loading Loading @@ -587,6 +588,9 @@ object TestShortcuts { simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT ), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT ), simpleInputGestureData(keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_BACK), simpleInputGestureData( keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyevent/SysUIKeyGestureEventInitializerTest.kt +21 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.input.InputManager.KeyGestureEventHandler import android.hardware.input.InputManager.KeyGestureEventListener import android.hardware.input.KeyGestureEvent import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT 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.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TASKBAR Loading Loading @@ -81,6 +82,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { @EnableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT, ) fun start_flagEnabled_registerKeyGestureEvents() { underTest.start() Loading @@ -91,6 +93,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { .containsExactly( KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL, KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL, KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT, ) } } Loading @@ -99,6 +102,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { @DisableFlags( com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI, com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT, com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT, ) fun start_flagDisabled_noRegisterKeyGestureEvents() { underTest.start() Loading Loading @@ -142,6 +146,23 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() { verify(commandQueue).toggleQuickSettingsPanel() } @Test @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT) fun handleKeyGestureEvent_eventTypeTakePartialScreenshot_opensScreenCaptureUi() { underTest.start() verify(inputManager) .registerKeyGestureEventHandler(any(), keyGestureEventHandlerCaptor.capture()) keyGestureEventHandlerCaptor.value.handleKeyGestureEvent( KeyGestureEvent.Builder() .setKeyGestureType(KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT) .build(), /* focusedToken= */ null, ) // TODO(b/420714826) Verify screen capture UI is launched. } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI) fun handleKeyGestureEvent_otherEventTypeToggleNotificationPanel_noInteraction() { Loading
packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2545,6 +2545,8 @@ <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 begins a partial screenshot. [CHAR LIMIT=70] --> <string name="group_system_partial_screenshot">Take partial screenshot</string> <!-- User visible title for the keyboard shortcut that access list of system / apps shortcuts. [CHAR LIMIT=70] --> <string name="group_system_access_system_app_shortcuts">Show shortcuts</string> <!-- User visible title for the keyboard shortcut that goes back to previous state. [CHAR LIMIT=70] --> Loading