Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSourceTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ import android.view.KeyEvent.KEYCODE_BACK import android.view.KeyEvent.KEYCODE_HOME import android.view.KeyEvent.KEYCODE_RECENT_APPS import android.view.KeyEvent.KEYCODE_TAB import android.view.KeyEvent.KEYCODE_W import android.view.KeyEvent.META_ALT_ON import android.view.KeyEvent.META_CTRL_ON import android.view.KeyEvent.META_META_ON import android.view.KeyEvent.META_SHIFT_ON import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading Loading @@ -161,6 +164,26 @@ class SystemShortcutsSourceTest : SysuiTestCase() { } } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_CLOSE_TASK_KEYBOARD_SHORTCUT) fun shortcutGroups_containsCloseWindowShortcut() { testScope.runTest { val groups = source.shortcutGroups(TEST_DEVICE_ID) val shortcuts = groups.flatMap { it.items }.map { c -> Triple(c.label, c.modifiers, c.keycode) } val closeWindowShortcut = Triple( context.getString(R.string.group_system_close_window), META_META_ON or META_CTRL_ON, KEYCODE_W, ) assertThat(shortcuts).contains(closeWindowShortcut) } } private companion object { private const val TEST_DEVICE_ID = 1234 } Loading packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2510,6 +2510,8 @@ <string name="group_system_lock_screen">Lock screen</string> <!-- User visible title for the keyboard shortcut that pulls up Notes app for quick memo. [CHAR LIMIT=70] --> <string name="group_system_quick_memo">Take a note</string> <!-- User visible title for the keyboard shortcut that closes a focused task [CHAR LIMIT=70] --> <string name="group_system_close_window">Close current window</string> <!-- User visible title for the multitasking keyboard shortcuts list. [CHAR LIMIT=70] --> <string name="keyboard_shortcut_group_system_multitasking">Multitasking</string> Loading packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt +4 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MINIMIZE_FREEFORM import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MOVE_TO_NEXT_DISPLAY import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_SHORTCUT_HELPER import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_SNAP_LEFT_FREEFORM_WINDOW Loading Loading @@ -73,6 +74,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to System, KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to System, KEY_GESTURE_TYPE_ALL_APPS to System, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to System, // Multitasking Category KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER to MultiTasking, Loading Loading @@ -117,6 +119,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_LOCK_SCREEN to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_ALL_APPS to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_LAUNCH_SYSTEM_SETTINGS to R.string.shortcut_helper_category_system_apps, KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.shortcut_helper_category_system_apps, Loading Loading @@ -183,6 +186,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.group_system_access_google_assistant, KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to R.string.group_system_access_google_assistant, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to R.string.group_system_close_window, // Multitasking Category KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER to R.string.group_system_cycle_forward, Loading packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt +12 −0 Original line number Diff line number Diff line Loading @@ -33,11 +33,14 @@ import android.view.KeyEvent.KEYCODE_RECENT_APPS import android.view.KeyEvent.KEYCODE_S import android.view.KeyEvent.KEYCODE_SLASH import android.view.KeyEvent.KEYCODE_TAB import android.view.KeyEvent.KEYCODE_W import android.view.KeyEvent.META_ALT_ON import android.view.KeyEvent.META_CTRL_ON import android.view.KeyEvent.META_META_ON import android.view.KeyEvent.META_SHIFT_ON import android.view.KeyboardShortcutGroup import android.view.KeyboardShortcutInfo import android.window.DesktopExperienceFlags import com.android.hardware.input.Flags.enableQuickSettingsPanelShortcut import com.android.systemui.Flags.shortcutHelperKeyGlyph import com.android.systemui.dagger.qualifiers.Main Loading Loading @@ -207,6 +210,15 @@ constructor(@Main private val resources: Resources, private val inputManager: In command(META_META_ON, KEYCODE_L) } ) if (DesktopExperienceFlags.CLOSE_TASK_KEYBOARD_SHORTCUT.isTrue()) { // Close focused task: // - Meta + Ctrl + W add( shortcutInfo(resources.getString(R.string.group_system_close_window)) { command(META_META_ON or META_CTRL_ON, KEYCODE_W) } ) } } private fun systemAppsShortcuts() = Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSourceTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ import android.view.KeyEvent.KEYCODE_BACK import android.view.KeyEvent.KEYCODE_HOME import android.view.KeyEvent.KEYCODE_RECENT_APPS import android.view.KeyEvent.KEYCODE_TAB import android.view.KeyEvent.KEYCODE_W import android.view.KeyEvent.META_ALT_ON import android.view.KeyEvent.META_CTRL_ON import android.view.KeyEvent.META_META_ON import android.view.KeyEvent.META_SHIFT_ON import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading Loading @@ -161,6 +164,26 @@ class SystemShortcutsSourceTest : SysuiTestCase() { } } @Test @EnableFlags(com.android.window.flags.Flags.FLAG_CLOSE_TASK_KEYBOARD_SHORTCUT) fun shortcutGroups_containsCloseWindowShortcut() { testScope.runTest { val groups = source.shortcutGroups(TEST_DEVICE_ID) val shortcuts = groups.flatMap { it.items }.map { c -> Triple(c.label, c.modifiers, c.keycode) } val closeWindowShortcut = Triple( context.getString(R.string.group_system_close_window), META_META_ON or META_CTRL_ON, KEYCODE_W, ) assertThat(shortcuts).contains(closeWindowShortcut) } } private companion object { private const val TEST_DEVICE_ID = 1234 } Loading
packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2510,6 +2510,8 @@ <string name="group_system_lock_screen">Lock screen</string> <!-- User visible title for the keyboard shortcut that pulls up Notes app for quick memo. [CHAR LIMIT=70] --> <string name="group_system_quick_memo">Take a note</string> <!-- User visible title for the keyboard shortcut that closes a focused task [CHAR LIMIT=70] --> <string name="group_system_close_window">Close current window</string> <!-- User visible title for the multitasking keyboard shortcuts list. [CHAR LIMIT=70] --> <string name="keyboard_shortcut_group_system_multitasking">Multitasking</string> Loading
packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt +4 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MINIMIZE_FREEFORM import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MOVE_TO_NEXT_DISPLAY import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_SHORTCUT_HELPER import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_SNAP_LEFT_FREEFORM_WINDOW Loading Loading @@ -73,6 +74,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to System, KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to System, KEY_GESTURE_TYPE_ALL_APPS to System, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to System, // Multitasking Category KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER to MultiTasking, Loading Loading @@ -117,6 +119,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_LOCK_SCREEN to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_ALL_APPS to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to R.string.shortcut_helper_category_system_controls, KEY_GESTURE_TYPE_LAUNCH_SYSTEM_SETTINGS to R.string.shortcut_helper_category_system_apps, KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.shortcut_helper_category_system_apps, Loading Loading @@ -183,6 +186,7 @@ class InputGestureMaps @Inject constructor(private val context: Context) { KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.group_system_access_google_assistant, KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to R.string.group_system_access_google_assistant, KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK to R.string.group_system_close_window, // Multitasking Category KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER to R.string.group_system_cycle_forward, Loading
packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt +12 −0 Original line number Diff line number Diff line Loading @@ -33,11 +33,14 @@ import android.view.KeyEvent.KEYCODE_RECENT_APPS import android.view.KeyEvent.KEYCODE_S import android.view.KeyEvent.KEYCODE_SLASH import android.view.KeyEvent.KEYCODE_TAB import android.view.KeyEvent.KEYCODE_W import android.view.KeyEvent.META_ALT_ON import android.view.KeyEvent.META_CTRL_ON import android.view.KeyEvent.META_META_ON import android.view.KeyEvent.META_SHIFT_ON import android.view.KeyboardShortcutGroup import android.view.KeyboardShortcutInfo import android.window.DesktopExperienceFlags import com.android.hardware.input.Flags.enableQuickSettingsPanelShortcut import com.android.systemui.Flags.shortcutHelperKeyGlyph import com.android.systemui.dagger.qualifiers.Main Loading Loading @@ -207,6 +210,15 @@ constructor(@Main private val resources: Resources, private val inputManager: In command(META_META_ON, KEYCODE_L) } ) if (DesktopExperienceFlags.CLOSE_TASK_KEYBOARD_SHORTCUT.isTrue()) { // Close focused task: // - Meta + Ctrl + W add( shortcutInfo(resources.getString(R.string.group_system_close_window)) { command(META_META_ON or META_CTRL_ON, KEYCODE_W) } ) } } private fun systemAppsShortcuts() = Loading