キーボード ショートカット ヘルパー

キーボード ショートカット ヘルパーを使用すると、プラットフォームと開いているアプリのキーボード ショートカットを見つけることができます。アプリのショートカットをキーボード ショートカット ヘルパーに公開すると、ユーザーの生産性と使いやすさが向上します。

ユーザーは Meta+/ を押して、キーボード ショートカット画面を開きます。この画面は Android 7.0(API レベル 24)以降で利用できます。

デバイスでアプリを開き、システムのショートカットを表示している様子。
図 1.キーボード ショートカット ヘルパー。

キーボード ショートカット ヘルパーにショートカットを提供する

`onProvideKeyboardShortcuts()` ウィンドウ コールバックをオーバーライドすることで、使用可能なキーボード ショートカットのリストを キーボード ショートカット ヘルパーに提供できます。 次のスニペットは、4 つのショートカットのグループを追加する 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 は、カーソル移動とメッセージ編集の 2 つのグループに分類されたキーボード ショートカットを示しています。

ショートカット グループが表示されているデバイスで開いているアプリ。
図 2.キーボード ショートカット ヘルパーのカテゴリ。

アプリは、グループごとに KeyboardShortcutGroup オブジェクトを作成することで、2 つ以上のキーボード ショートカット グループを登録します。 次のスニペットでは、onProvideKeyboardShortcuts() メソッドに渡される可変リストに 2 つの KeyboardShortCutGroup オブジェクトが追加されています。 これらのオブジェクトは、図 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 = LocalActivity.current

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