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

Commit 8bb30a4a authored by Daichi Hirono's avatar Daichi Hirono
Browse files

Add "Close active window" to shortcut helper

This CL adds the "Close active window" shortcut (Meta+Ctrl+W) to the
keyboard shortcut helper screen. This makes the feature, which was
added in a previous CL, discoverable to users.

Bug: 416437920
Test: Manually trigger shortcut helper (Meta+/) and verify the "Close
active window" shortcut is listed.
Flag: com.android.window.flags.close_task_keyboard_shortcut

Change-Id: I479a4bd14d9aebf3732cc117f3c6f88d4fb46061
parent a9995ca9
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
    }
+2 −0
Original line number Diff line number Diff line
@@ -2507,6 +2507,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>
+4 −0
Original line number Diff line number Diff line
@@ -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
@@ -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,
@@ -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,
@@ -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,
+12 −0
Original line number Diff line number Diff line
@@ -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
@@ -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() =