键盘快捷键助手

键盘快捷键助手使用户能够发现平台和打开的应用程序的键盘快捷键。在键盘快捷键助手发布应用程序的快捷键,以提高用户效率和易用性。

用户按下 Meta+/ 以打开键盘快捷键屏幕,该屏幕在 Android 7.0 (API 级别 24) 及更高版本上可用。

Application open on a device showing system shortcuts.
图 1. 键盘快捷键助手。

向键盘快捷键助手提供快捷键

您可以通过重写 onProvideKeyboardShortcuts() 窗口回调,向键盘快捷键助手提供可用的键盘快捷键列表。以下代码片段演示了 onProvideKeyboardShortcuts() 的实现方式,用于添加一组四个快捷键

class MainActivity : ComponentActivity() {
    // Activity codes such as overridden onStart method.

    override fun onProvideKeyboardShortcuts(
        data: MutableList<KeyboardShortcutGroup>?,
        menu: Menu?,
        deviceId: Int
    ) {
        val shortcutGroup = KeyboardShortcutGroup(
            "Cursor movement",
            listOf(
                KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
            )
        )
        data?.add(shortcutGroup)
    }
}

KeyboardShortcutInfo 描述了一个键盘快捷键。键盘快捷键列表作为 KeyboardShortcutGroup 对象进行包装。应用程序通过将 KeyboardShortcutGroup 对象添加到作为方法第一个参数传递的可变列表中,来向键盘快捷键助手通知可用的键盘快捷键。

按组组织键盘快捷键

键盘快捷键助手将键盘快捷键显示在不同的组中,以便用户可以根据应用程序的用例或屏幕找到快捷键。图 2 显示了分类为两组的键盘快捷键:光标移动和消息编辑。

Application open on a device showing shortcut groups.
图 2. 键盘快捷键助手中的类别。

您的应用程序通过为每个组创建 KeyboardShortcutGroup 对象来注册两组或更多组键盘快捷键。在以下代码片段中,两个 KeyboardShortCutGroup 对象被添加到传递给 onProvideKeyboardShortcuts() 方法的可变列表中。这些对象在键盘快捷键助手以 图 2 所示的方式显示为类别。

override fun onProvideKeyboardShortcuts(
    data: MutableList<KeyboardShortcutGroup>?,
    menu: Menu?,
    deviceId: Int
) {
    val cursorMovement = KeyboardShortcutGroup(
        "Cursor movement",
        listOf(
            KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
        )
    )

    val messageEdit = KeyboardShortcutGroup(
        "Message editing",
        listOf(
            KeyboardShortcutInfo("Select All", KeyEvent.KEYCODE_A, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Send a message", KeyEvent.KEYCODE_ENTER, KeyEvent.META_SHIFT_ON)
        )
    )

    data?.add(cursorMovement)
    data?.add(messageEdit)
}

从代码中打开键盘快捷键助手

应用程序通过调用 requestShowKeyboardShortcuts() 方法来显示键盘快捷键屏幕。在以下代码片段中,当用户点击或单击按钮或按下 Enter 键时,将打开键盘快捷键助手。

val activity = LocalContext.current as Activity

Button(onClick = { activity.requestShowKeyboardShortcuts() }) {
    Text(text = "Show keyboard shortcuts")
}