Auxiliar de atalhos do teclado

O auxiliar de atalhos do teclado permite que os usuários descubram atalhos de teclado para a plataforma e abram apps. Publique os atalhos do seu app no auxiliar de atalhos do teclado para melhorar a produtividade e a facilidade de uso.

Os usuários pressionam Meta+/ para abrir a tela de atalhos do teclado, que está disponível no Android 7.0 (nível 24 da API) e versões mais recentes.

Aplicativo aberto em um dispositivo mostrando atalhos do sistema.
Figura 1. Auxiliar de atalhos do teclado.

Fornecer atalhos para o auxiliar de atalhos do teclado

Você pode fornecer listas de atalhos de teclado disponíveis para o auxiliar de atalhos do teclado substituindo o onProvideKeyboardShortcuts() callback da janela. O snippet a seguir demonstra uma implementação de onProvideKeyboardShortcuts() para adicionar um grupo de quatro atalhos:

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 descreve um atalho de teclado. A lista de atalhos de teclado é encapsulada como um KeyboardShortcutGroup objeto. Os apps notificam os atalhos de teclado disponíveis para o auxiliar de atalhos do teclado adicionando os objetos KeyboardShortcutGroup à lista mutável transmitida como o primeiro parâmetro do método.

Organizar atalhos de teclado com grupos

O auxiliar de atalhos do teclado mostra atalhos de teclado em grupos separados para que os usuários possam encontrar atalhos por caso de uso ou para telas do seu app. A Figura 2 mostra os atalhos de teclado categorizados em dois grupos: movimento do cursor e edição de mensagens.

Aplicativo aberto em um dispositivo mostrando grupos de atalhos.
Figura 2. Categorias no auxiliar de atalhos do teclado.

Seu app registra dois ou mais grupos de atalhos de teclado criando um objeto KeyboardShortcutGroup para cada grupo. No snippet a seguir, dois KeyboardShortCutGroup objetos são adicionados à lista mutável transmitida ao método onProvideKeyboardShortcuts(). Os objetos são mostrados como categorias no auxiliar de atalhos do teclado, conforme mostrado na Figura 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)
}

Abrir o auxiliar de atalhos do teclado no código

Os apps mostram a tela de atalhos do teclado chamando o método requestShowKeyboardShortcuts(). No snippet a seguir, o auxiliar de atalhos do teclado é aberto quando os usuários tocam ou clicam no botão ou pressionam a tecla Enter.

val activity = LocalActivity.current

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