Asistente de combinaciones de teclas

La Asistencia de combinaciones de teclas permite que los usuarios descubran combinaciones de teclas para la plataforma y apps abiertas. Publica las combinaciones de teclas de tu app en la Ayuda de combinaciones de teclas para mejorar la productividad y la facilidad de uso de los usuarios.

Los usuarios presionan Meta+/ para abrir la pantalla de combinaciones de teclas, que está disponible en Android 7.0 (nivel de API 24) y versiones posteriores.

Figura 1: Ayuda sobre combinaciones de teclas.

Cómo proporcionar combinaciones de teclas para el Asistente de combinaciones de teclas

Puedes proporcionar listas de combinaciones de teclas disponibles al Asistente de combinaciones de teclas anulando la devolución de llamada de la ventana onProvideKeyboardShortcuts(). En el siguiente fragmento, se muestra una implementación de onProvideKeyboardShortcuts() para agregar un grupo de cuatro accesos directos:

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 describe una combinación de teclas. La lista de combinaciones de teclas se une como un objeto KeyboardShortcutGroup. Las apps notifican las combinaciones de teclas disponibles al Asistente de combinaciones de teclas agregando los objetos KeyboardShortcutGroup a la lista mutable que se pasa como primer parámetro del método.

Organiza combinaciones de teclas en grupos

El asistente de combinación de teclas muestra las combinaciones de teclas en grupos separados para que los usuarios puedan encontrarlas por caso de uso o para pantallas de tu app. En la Figura 2, se muestran las combinaciones de teclas categorizadas en dos grupos: movimiento del cursor y edición de mensajes.

Figura 2: Categorías en la Ayuda de combinaciones de teclas.

Tu app registra dos o más grupos de combinaciones de teclas creando un objeto KeyboardShortcutGroup para cada grupo. En el siguiente fragmento, se agregan dos objetos KeyboardShortCutGroup a la lista mutable que se pasa al método onProvideKeyboardShortcuts(). Los objetos se muestran como categorías en la Ayuda de combinaciones de teclas, como se muestra en la 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 el Asistente de combinaciones de teclas desde el código

Las apps muestran la pantalla de combinaciones de teclas llamando al método requestShowKeyboardShortcuts(). En el siguiente fragmento, se abre la Ayuda de combinaciones de teclas cuando los usuarios presionan el botón o hacen clic en él, o presionan la tecla Intro.

val activity = LocalContext.current as Activity

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