Auxiliar de atalhos do teclado

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

Os usuários pressionam Meta+/ para abrir a tela de atalhos de 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

É possível fornecer listas de atalhos de teclado disponíveis para o Assistente de Atalhos de Teclado substituindo o callback de janela onProvideKeyboardShortcuts(). O snippet abaixo 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 do teclado. A lista de atalhos do teclado é agrupada como um objeto KeyboardShortcutGroup. Os apps notificam os atalhos de teclado disponíveis ao assistente 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 Assistente de Atalhos do Teclado mostra os atalhos em grupos separados para que os usuários possam encontrá-los por caso de uso ou para telas do seu app. A Figura 2 mostra os atalhos do 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.

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