Dispositivos de teclado

Android es compatible con una variedad de dispositivos de teclado, incluidos teclados con funciones especiales (controles de volumen y encendido), teclados QWERTY integrados compactos y teclados externos estilo PC con todas las funciones.

Este documento describe únicamente los teclados físicos. Consulte el SDK de Android para obtener información sobre los teclados virtuales (editores de métodos de entrada).

Clasificación del teclado

Un dispositivo de entrada se clasifica como teclado si se cumple alguna de las siguientes condiciones:

  • El dispositivo de entrada informa la presencia de cualquier código de tecla de Linux utilizado en los teclados, incluidos 0 a 0xff o KEY_OK a KEY_MAX .

  • El dispositivo de entrada informa la presencia de cualquier código de tecla de Linux utilizado en joysticks y gamepads, incluidos BTN_0 a BTN_9 , BTN_TRIGGER a BTN_DEAD o BTN_A a BTN_THUMBR .

Actualmente, los joysticks se clasifican como teclados porque los eventos EV_KEY informan sobre los botones del joystick y del gamepad de la misma manera que se informan las teclas del teclado. Por lo tanto, los joysticks y gamepads también utilizan archivos de mapas de teclas para la configuración.

Una vez que un dispositivo de entrada ha sido clasificado como teclado, el sistema carga el archivo de configuración del dispositivo de entrada y el diseño del teclado para el teclado.

A continuación, el sistema intenta determinar características adicionales del dispositivo.

  • Si el dispositivo de entrada tiene teclas asignadas a KEYCODE_Q , se considera que el dispositivo tiene un teclado alfabético (en lugar de numérico). La capacidad del teclado alfabético se informa en el objeto de Configuration del recurso como KEYBOARD_QWERTY .

  • Si el dispositivo de entrada tiene teclas asignadas a KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT , KEYCODE_DPAD_RIGHT y KEYCODE_DPAD_CENTER (todas deben estar presentes), se considera que el dispositivo tiene un teclado direccional. La capacidad del teclado direccional se informa en el objeto de Configuration del recurso como NAVIGATION_DPAD .

  • Si el dispositivo de entrada tiene teclas asignadas a KEYCODE_BUTTON_A u otras teclas relacionadas con el gamepad, se considera que el dispositivo tiene un gamepad.

Requisitos del controlador de teclado

  1. Los controladores de teclado solo deben registrar códigos de teclas para las teclas que realmente admiten. El registro de códigos de teclas en exceso puede confundir el algoritmo de clasificación del dispositivo o hacer que el sistema detecte incorrectamente las capacidades de teclado admitidas del dispositivo.

  2. Los controladores de teclado deben usar EV_KEY para informar sobre las pulsaciones de teclas, utilizando un valor de 0 para indicar que se suelta una tecla, un valor de 1 para indicar que se pulsa una tecla y un valor mayor o igual a 2 para indicar que la tecla se ha pulsado. repitiéndose automáticamente.

  3. Android realiza su propia repetición de teclado. La funcionalidad de repetición automática debe estar deshabilitada en el controlador.

  4. Los controladores de teclado pueden indicar opcionalmente el uso de HID o el código de escaneo de bajo nivel enviando EV_MSC con MSC_SCANCODE y un valor que indica el uso o el código de escaneo cuando se presiona la tecla. Esta información no es utilizada actualmente por Android.

  5. Los controladores de teclado deben admitir la configuración de estados LED cuando se escribe EV_LED en el dispositivo. El controlador hid-input maneja esto automáticamente. En el momento de escribir este artículo, Android usa LED_CAPSLOCK , LED_SCROLLLOCK y LED_NUMLOCK . Estos LED solo necesitan ser compatibles cuando el teclado realmente tiene las luces indicadoras asociadas.

  6. Los controladores de teclado para teclados integrados (por ejemplo, usando una matriz GPIO) deben asegurarse de enviar eventos EV_KEY con un valor de 0 para cualquier tecla que aún esté presionada cuando el dispositivo se vaya a dormir. De lo contrario, las teclas podrían atascarse y repetirse automáticamente para siempre.

Operación del teclado

El siguiente es un breve resumen del funcionamiento del teclado en Android.

  1. EventHub lee eventos sin procesar del controlador evdev y asigna códigos de teclas de Linux (a veces denominados códigos de escaneo) en códigos de teclas de Android utilizando el mapa de diseño de teclas del teclado.

  2. InputReader consume los eventos sin procesar y actualiza el estado de la clave meta. Por ejemplo, si se presiona o suelta la tecla de mayúsculas a la izquierda, el lector establecerá o restablecerá los bits META_SHIFT_LEFT_ON y META_SHIFT_ON según corresponda.

  3. InputReader notifica a InputDispatcher sobre el evento clave.

  4. InputDispatcher le pregunta a WindowManagerPolicy qué hacer con el evento clave llamando a WindowManagerPolicy.interceptKeyBeforeQueueing . Este método es parte de una ruta crítica que se encarga de activar el dispositivo cuando se presionan ciertas teclas. EventHub mantiene efectivamente un bloqueo de activación a lo largo de esta ruta crítica para garantizar que se ejecute hasta su finalización.

  5. Si un InputFilter está actualmente en uso, InputDispatcher le da la oportunidad de consumir o transformar la clave. El InputFilter se puede usar para implementar políticas de accesibilidad de todo el sistema de bajo nivel.

  6. InputDispatcher pone en cola la clave para su procesamiento en el subproceso de envío.

  7. Cuando InputDispatcher quita la cola de la clave, le da a WindowManagerPolicy una segunda oportunidad de interceptar el evento clave llamando a WindowManagerPolicy.interceptKeyBeforeDispatching . Este método maneja accesos directos del sistema y otras funciones.

  8. Luego, InputDispatcher identifica el objetivo del evento clave (la ventana enfocada) y espera a que esté listo. Luego, InputDispatcher entrega el evento clave a la aplicación.

  9. Dentro de la aplicación, el evento clave se propaga por la jerarquía de vistas hasta la vista enfocada para el envío de claves previo al IME.

  10. Si el evento clave no se maneja en el envío previo al IME y se está utilizando un IME, el evento clave se envía al IME.

  11. Si el evento clave no fue consumido por el IME, entonces el evento clave se propaga hacia abajo en la jerarquía de vistas a la vista enfocada para el envío de claves estándar.

  12. La aplicación informa al InputDispatcher si se consumió el evento clave. Si el evento no se consumió, InputDispatcher llama a WindowManagerPolicy.dispatchUnhandledKey para aplicar el comportamiento de "retroceso". Dependiendo de la acción de reserva, el ciclo de despacho de eventos clave puede reiniciarse utilizando un código de clave diferente. Por ejemplo, si una aplicación no maneja KEYCODE_ESCAPE , el sistema puede volver a enviar el evento clave como KEYCODE_BACK en su lugar.

Configuración del teclado

El comportamiento del teclado está determinado por la disposición de las teclas del teclado, el mapa de caracteres de las teclas y la configuración del dispositivo de entrada.

Consulte las siguientes secciones para obtener más detalles sobre los archivos que participan en la configuración del teclado:

Propiedades

Las siguientes propiedades de configuración del dispositivo de entrada se utilizan para los teclados.

keyboard.layout

Definición: keyboard.layout = <nombre>

Especifica el nombre del archivo de diseño de teclas asociado con el dispositivo de entrada, sin incluir la extensión .kl . Si no se encuentra este archivo, el sistema de entrada utilizará el diseño de teclas predeterminado en su lugar.

Los espacios en el nombre se convierten en guiones bajos durante la búsqueda.

Consulte la documentación del archivo de distribución de teclas para obtener más detalles.

keyboard.characterMap

Definición: keyboard.characterMap = <nombre>

Especifica el nombre del archivo de mapa de caracteres clave asociado con el dispositivo de entrada, sin incluir la extensión .kcm . Si no se encuentra este archivo, el sistema de entrada utilizará el mapa de caracteres clave predeterminado en su lugar.

Los espacios en el nombre se convierten en guiones bajos durante la búsqueda.

Consulte la documentación del archivo de mapa de caracteres clave para obtener más detalles.

keyboard.orientationAware

Definición: keyboard.orientationAware = 0 | 1

Especifica si el teclado debe reaccionar a los cambios de orientación de la pantalla.

  • Si el valor es 1 , las teclas del teclado direccional giran cuando cambia la orientación de la pantalla asociada.

  • Si el valor es 0 , el teclado es inmune a los cambios de orientación de la pantalla.

El valor predeterminado es 0 .

El conocimiento de la orientación se utiliza para respaldar la rotación de las teclas del teclado direccional, como en el Motorola Droid. Por ejemplo, cuando el dispositivo se gira 90 grados en el sentido de las agujas del reloj desde su orientación natural, KEYCODE_DPAD_UP se reasigna para producir KEYCODE_DPAD_RIGHT ya que la tecla 'arriba' termina apuntando a la 'derecha' cuando el dispositivo se mantiene en esa orientación.

keyboard.builtIn

Definición: keyboard.builtIn = 0 | 1

Especifica si el teclado es el teclado integrado (conectado físicamente).

El valor predeterminado es 1 si el nombre del dispositivo termina con -keypad , 0 en caso contrario.

Al teclado incorporado siempre se le asigna una identificación de dispositivo de 0 . A otros teclados que no están integrados se les asignan identificadores de dispositivo únicos distintos de cero.

El uso de una identificación de 0 para el teclado integrado es importante para mantener la compatibilidad con el campo KeyCharacterMap.BUILT_IN_KEYBOARD , que especifica la identificación del teclado integrado y tiene un valor de 0 . Este campo ha quedado obsoleto en la API, pero es posible que las aplicaciones más antiguas aún lo utilicen.

Un teclado de función especial (uno cuyo mapa de caracteres de teclas especifica un tipo de SPECIAL_FUNCTION ) nunca se registrará como teclado incorporado, independientemente de la configuración de esta propiedad. Esto se debe a que, por definición, un teclado de funciones especiales no está destinado a ser utilizado para escribir con fines generales.

Configuraciones de ejemplo

# This is an example input device configuration file for a built-in
# keyboard that has a DPad.

# The keyboard is internal because it is part of the device.
device.internal = 1

# The keyboard is the default built-in keyboard so it should be assigned
# an id of 0.
keyboard.builtIn = 1

# The keyboard includes a DPad which is mounted on the device.  As the device
# is rotated the orientation of the DPad rotates along with it, so the DPad must
# be aware of the display orientation.  This ensures that pressing 'up' on the
# DPad always means 'up' from the perspective of the user, even when the entire
# device has been rotated.
keyboard.orientationAware = 1

Notas de compatibilidad

Antes de Honeycomb, el mapeador de entrada de teclado no usaba ninguna propiedad de configuración. Se asumió que todos los teclados estaban conectados físicamente y conscientes de la orientación. El diseño de teclas predeterminado y el mapa de caracteres clave se llamaron qwerty en lugar de Generic . El formato del mapa de caracteres clave también era muy diferente y el marco no admitía teclados completos estilo PC o teclados externos.

Al actualizar dispositivos a Honeycomb, asegúrese de crear o actualizar la configuración necesaria y los archivos de asignación de claves.

Usos de HID, códigos clave de Linux y códigos clave de Android

El sistema se refiere a claves usando varios identificadores diferentes, dependiendo de la capa de abstracción.

Para dispositivos HID, cada clave tiene un uso HID asociado. El controlador hid-input Linux y los controladores HID específicos del dispositivo y del proveedor relacionado son responsables de analizar los informes de HID y asignar los usos de HID a los códigos clave de Linux.

A medida que Android lee los eventos EV_KEY del kernel de Linux, traduce cada código de tecla de Linux a su correspondiente código de tecla de Android de acuerdo con el archivo de diseño de teclas del dispositivo.

Cuando el evento clave se envía a una aplicación, la instancia android.view.KeyEvent informa el código clave de Linux como el valor de getScanCode() y el código clave de Android como el valor de getKeyCode() . A los efectos del marco, solo es importante el valor de getKeyCode() .

Tenga en cuenta que Android no usa la información de uso de HID ni la pasa a las aplicaciones.

Tablas de códigos

Las siguientes tablas muestran cómo se relacionan entre sí los usos de HID, los códigos de clave de Linux y los códigos de clave de Android.

La columna LKC especifica el código clave de Linux en hexadecimal.

La columna AKC especifica el código clave de Android en hexadecimal.

La columna Notas hace referencia a las notas que se publican después de la tabla.

La columna Versión especifica la primera versión de la plataforma Android que ha incluido esta clave en su mapa de claves predeterminado. Se muestran varias filas en los casos en que el mapa de teclas predeterminado ha cambiado entre versiones. La versión más antigua indicada es la 1.6.

  • En Gingerbread (2.3) y versiones anteriores, el mapa de teclas predeterminado era qwerty.kl . Este mapa de teclas solo estaba diseñado para usarse con el emulador de Android y no para admitir teclados externos arbitrarios. Sin embargo, algunos OEM agregaron soporte de teclado Bluetooth a la plataforma y confiaron en qwerty.kl para proporcionar las asignaciones de teclado necesarias. En consecuencia, estas asignaciones más antiguas pueden ser de interés para los OEM que están construyendo periféricos para estos dispositivos en particular. Tenga en cuenta que las asignaciones son sustancialmente diferentes de las actuales, particularmente con respecto al tratamiento de la tecla HOME . Se recomienda que todos los periféricos nuevos se desarrollen de acuerdo con Honeycomb o mapas de teclas más recientes (es decir, HID estándar).

  • A partir de Honeycomb (3.0), el mapa de teclas predeterminado es Generic.kl . Este mapa de teclas se diseñó para admitir teclados completos de estilo PC. La mayoría de las funciones de los teclados HID estándar deberían funcionar de inmediato.

La asignación de códigos clave puede variar según las versiones del kernel de Linux y Android. Cuando se sabe que se han producido cambios en los mapas de teclas predeterminados de Android, se indican en la columna de versión.

Los controladores HID específicos del dispositivo y los mapas de teclas pueden aplicar mapas diferentes a los que se indican aquí.

Teclado HID y página de teclado numérico (0x07)

Uso HID Nombre de uso de HID LKC Nombre del código de clave de Linux Versión AKC Nombre del código clave de Android notas
0x07 0x0001 Error de teclado al pasar por encima
0x07 0x0002 Error de POST del teclado
0x07 0x0003 Error de teclado indefinido
0x07 0x0004 Teclado a y A 0x001e CLAVE_A 1.6 0x001d CÓDIGO CLAVE_A 1
0x07 0x0005 Teclado b y b 0x0030 CLAVE_B 1.6 0x001e CÓDIGO_CLAVE_B 1
0x07 0x0006 Teclado c y c 0x002e CLAVE_C 1.6 0x001f CÓDIGO_CLAVE_C 1
0x07 0x0007 Teclado d y d 0x0020 CLAVE_D 1.6 0x0020 CÓDIGO_CLAVE_D 1
0x07 0x0008 Teclado e y E 0x0012 CLAVE_E 1.6 0x0021 CÓDIGO_CLAVE_E 1
0x07 0x0009 Teclado f y f 0x0021 CLAVE_F 1.6 0x0022 CÓDIGO_CLAVE_F 1
0x07 0x000a Teclado g y g 0x0022 CLAVE_G 1.6 0x0023 CÓDIGO_CLAVE_G 1
0x07 0x000b Teclado h y H 0x0023 CLAVE_H 1.6 0x0024 CÓDIGO_CLAVE_H 1
0x07 0x000c Teclado yo y yo 0x0017 CLAVE_I 1.6 0x0025 KEYCODE_I 1
0x07 0x000d Teclado j y j 0x0024 CLAVE_J 1.6 0x0026 CÓDIGO_CLAVE_J 1
0x07 0x000e Teclado k y k 0x0025 CLAVE_K 1.6 0x0027 CÓDIGO_CLAVE_K 1
0x07 0x000f Teclado l y L 0x0026 CLAVE_L 1.6 0x0028 CÓDIGO_CLAVE_L 1
0x07 0x0010 Teclado m y M 0x0032 CLAVE_M 1.6 0x0029 CÓDIGO_CLAVE_M 1
0x07 0x0011 Teclado n y n 0x0031 CLAVE_N 1.6 0x002a CÓDIGO_CLAVE_N 1
0x07 0x0012 Teclado o y O 0x0018 CLAVE_O 1.6 0x002b CÓDIGO_CLAVE_O 1
0x07 0x0013 Teclado p y p 0x0019 CLAVE_P 1.6 0x002c CÓDIGO_CLAVE_P 1
0x07 0x0014 Teclado q y q 0x0010 CLAVE_Q 1.6 0x002d CÓDIGO_CLAVE_Q 1
0x07 0x0015 Teclado r y R 0x0013 CLAVE_R 1.6 0x002e KEYCODE_R 1
0x07 0x0016 Teclado s y S 0x001f LLAVES 1.6 0x002f KEYCODE_S 1
0x07 0x0017 Teclado t y t 0x0014 CLAVE_T 1.6 0x0030 CÓDIGO_CLAVE_T 1
0x07 0x0018 teclado u y u 0x0016 CLAVE_U 1.6 0x0031 KEYCODE_U 1
0x07 0x0019 Teclado v y v 0x002f CLAVE_V 1.6 0x0032 CÓDIGO_CLAVE_V 1
0x07 0x001a Teclado w y w 0x0011 CLAVE_W 1.6 0x0033 CÓDIGO_CLAVE_W 1
0x07 0x001b Teclado x y x 0x002d CLAVE_X 1.6 0x0034 CÓDIGO_CLAVE_X 1
0x07 0x001c Teclado y e Y 0x0015 CLAVE_Y 1.6 0x0035 CÓDIGO_CLAVE_Y 1
0x07 0x001d Teclado z y z 0x002c CLAVE_Z 1.6 0x0036 KEYCODE_Z 1
0x07 0x001e Teclado 1 y ! 0x0002 CLAVE_1 1.6 0x0008 CÓDIGO CLAVE_1 1
0x07 0x001f Teclado 2 y @ 0x0003 CLAVE_2 1.6 0x0009 CÓDIGO_LLAVE_2 1
0x07 0x0020 Teclado 3 y # 0x0004 CLAVE_3 1.6 0x000a CÓDIGO CLAVE_3 1
0x07 0x0021 Teclado 4 y $ 0x0005 CLAVE_4 1.6 0x000b CÓDIGO CLAVE_4 1
0x07 0x0022 Teclado 5 y % 0x0006 CLAVE_5 1.6 0x000c CÓDIGO CLAVE_5 1
0x07 0x0023 Teclado 6 y ^ 0x0007 CLAVE_6 1.6 0x000d CÓDIGO_LLAVE_6 1
0x07 0x0024 Teclado 7 y & 0x0008 CLAVE_7 1.6 0x000e CÓDIGO CLAVE_7 1
0x07 0x0025 Teclado 8 y * 0x0009 CLAVE_8 1.6 0x000f CÓDIGO CLAVE_8 1
0x07 0x0026 Teclado 9 y ( 0x000a CLAVE_9 1.6 0x0010 CÓDIGO_LLAVE_9 1
0x07 0x0027 Teclado 0 y ) 0x000b CLAVE_0 1.6 0x0007 CÓDIGO CLAVE_0 1
0x07 0x0028 Retorno del teclado (ENTER) 0x001c TECLA_ENTRAR 1.6 0x0042 CÓDIGO_CLAVE_ENTRAR 1
0x07 0x0029 ESCAPE del teclado 0x0001 CLAVE_ESC 3.0 0x006f KEYCODE_ESCAPE
"" "" "" "" 2.3 0x0004 KEYCODE_BACK
0x07 0x002a Teclado ELIMINAR (retroceso) 0x000e TECLA_RETROCESO 1.6 0x0043 KEYCODE_DEL
0x07 0x002b Pestaña de teclado 0x000f KEY_TAB 1.6 0x003d KEYCODE_TAB
0x07 0x002c Barra espaciadora del teclado 0x0039 CLAVE_ESPACIO 1.6 0x003e CÓDIGO_CLAVE_ESPACIO
0x07 0x002d Teclado - y _ 0x000c CLAVE_MINUS 1.6 0x0045 CÓDIGO_CLAVE_MINUS 1
0x07 0x002e Teclado = y + 0x000d CLAVE_IGUAL 1.6 0x0046 KEYCODE_EQUALS 1
0x07 0x002f Teclado [ y { 0x001a CLAVE_LEFTBRACE 1.6 0x0047 KEYCODE_LEFT_BRACKET 1
0x07 0x0030 Teclado ] y } 0x001b KEY_RIGHTBRACE 1.6 0x0048 KEYCODE_RIGHT_BRACKET 1
0x07 0x0031 Teclado \ y | 0x002b CLAVE_RETROCESO 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0032 Teclado fuera de EE. UU. # y ~ 0x002b CLAVE_RETROCESO 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0033 Teclado ; y : 0x0027 CLAVE_PUNTO Y COMA 1.6 0x004a CÓDIGO_CLAVE_PUNTO Y COMA 1
0x07 0x0034 Teclado ' y " 0x0028 CLAVE_APOSTROFE 1.6 0x004b CÓDIGO_CLAVE_APOSTROFE 1
0x07 0x0035 Teclado ` y ~ 0x0029 LLAVE_GRAVE 3.0 0x0044 KEYCODE_GRAVE 1
0x07 0x0036 Teclado y < 0x0033 CLAVE_COMA 1.6 0x0037 CÓDIGO_CLAVE_COMA 1
0x07 0x0037 Teclado . y > 0x0034 CLAVE_PUNTO 1.6 0x0038 CÓDIGO_CLAVE_PERIODO 1
0x07 0x0038 Teclado / y ? 0x0035 CLAVE_SLASH 1.6 0x004c KEYCODE_SLASH 1
0x07 0x0039 Bloqueo de mayúsculas del teclado 0x003a KEY_BLOQ MAYÚS 3.0 0x0073 KEYCODE_CAPS_LOCK
0x07 0x003a Teclado F1 0x003b CLAVE_F1 3.0 0x0083 CÓDIGO_CLAVE_F1
"" "" "" "" 1.6 0x0052 KEYCODE_MENU
0x07 0x003b Teclado F2 0x003c CLAVE_F2 3.0 0x0084 CÓDIGO_CLAVE_F2
"" "" "" "" 1.6 0x0002 KEYCODE_SOFT_RIGHT
0x07 0x003c Teclado F3 0x003d CLAVE_F3 3.0 0x0085 CÓDIGO_CLAVE_F3
"" "" "" "" 1.6 0x0005 KEYCODE_CALL
0x07 0x003d Teclado F4 0x003e CLAVE_F4 3.0 0x0086 CÓDIGO_CLAVE_F4
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x003e Teclado F5 0x003f CLAVE_F5 3.0 0x0087 CÓDIGO_CLAVE_F5
0x07 0x003f Teclado F6 0x0040 CLAVE_F6 3.0 0x0088 CÓDIGO_CLAVE_F6
0x07 0x0040 Teclado F7 0x0041 CLAVE_F7 3.0 0x0089 CÓDIGO_CLAVE_F7
0x07 0x0041 Teclado F8 0x0042 CLAVE_F8 3.0 0x008a CÓDIGO_CLAVE_F8
0x07 0x0042 Teclado F9 0x0043 CLAVE_F9 3.0 0x008b CÓDIGO_CLAVE_F9
0x07 0x0043 Teclado F10 0x0044 CLAVE_F10 3.0 0x008c CÓDIGO_CLAVE_F10
"" "" "" "" 2.3 0x0052 KEYCODE_MENU
0x07 0x0044 Teclado F11 0x0057 CLAVE_F11 3.0 0x008d CÓDIGO_CLAVE_F11
0x07 0x0045 Teclado F12 0x0058 CLAVE_F12 3.0 0x008e CÓDIGO_CLAVE_F12
0x07 0x0046 Pantalla de impresión de teclado 0x0063 CLAVE_SYSRQ 3.0 0x0078 KEYCODE_SYSRQ
0x07 0x0047 Bloqueo de desplazamiento del teclado 0x0046 BLOQUEO_DESPLAZAMIENTO 3.0 0x0074 KEYCODE_SCROLL_LOCK
0x07 0x0048 Pausa del teclado 0x0077 CLAVE_PAUSA 3.0 0x0079 KEYCODE_BREAK
0x07 0x0049 Inserción de teclado 0x006e INSERTAR_LLAVE 3.0 0x007c CÓDIGO_CLAVE_INSERTAR
0x07 0x004a Inicio del teclado 0x0066 CLAVE_INICIO 3.0 0x007a KEYCODE_MOVE_HOME
"" "" "" "" 1.6 0x0003 KEYCODE_HOME
0x07 0x004b Página del teclado hacia arriba 0x0068 KEY_PAGEUP 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x004c Teclado Eliminar Adelante 0x006f KEY_DELETE 3.0 0x0070 KEYCODE_FORWARD_DEL
0x07 0x004d Fin del teclado 0x006b CLAVE_END 3.0 0x007b KEYCODE_MOVE_END
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x004e Avance de página del teclado 0x006d KEY_PAGEDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x004f Flecha derecha del teclado 0x006a CLAVE_DERECHA 1.6 0x0016 KEYCODE_DPAD_DERECHO
0x07 0x0050 Flecha izquierda del teclado 0x0069 CLAVE_IZQUIERDA 1.6 0x0015 KEYCODE_DPAD_LEFT
0x07 0x0051 Flecha hacia abajo del teclado 0x006c TECLA_ABAJO 1.6 0x0014 KEYCODE_DPAD_DOWN
0x07 0x0052 Flecha arriba del teclado 0x0067 TECLA ARRIBA 1.6 0x0013 KEYCODE_DPAD_UP
0x07 0x0053 Bloqueo numérico y borrado del teclado 0x0045 KEY_NUMLOCK 3.0 0x008f KEYCODE_NUM_LOCK
0x07 0x0054 Teclado / 0x0062 CLAVE_KPSLASH 3.0 0x009a KEYCODE_NUMPAD_DIVIDE
0x07 0x0055 Teclado * 0x0037 CLAVE_KPASTERISK 3.0 0x009b KEYCODE_NUMPAD_MULTIPLY
0x07 0x0056 teclado - 0x004a CLAVE_KPMINUS 3.0 0x009c KEYCODE_NUMPAD_SUBTRACT
0x07 0x0057 Teclado + 0x004e CLAVE_KPPLUS 3.0 0x009d KEYCODE_NUMPAD_ADD
0x07 0x0058 Teclado ENTER 0x0060 CLAVE_KPENTER 3.0 0x00a0 KEYCODE_NUMPAD_ENTER
0x07 0x0059 Teclado 1 y Fin 0x004f CLAVE_KP1 3.0 0x0091 KEYCODE_NUMPAD_1
0x07 0x005a Teclado 2 y flecha hacia abajo 0x0050 CLAVE_KP2 3.0 0x0092 KEYCODE_NUMPAD_2
0x07 0x005b Teclado 3 y PageDn 0x0051 CLAVE_KP3 3.0 0x0093 KEYCODE_NUMPAD_3
0x07 0x005c Teclado 4 y flecha izquierda 0x004b CLAVE_KP4 3.0 0x0094 KEYCODE_NUMPAD_4
0x07 0x005d Teclado 5 0x004c CLAVE_KP5 3.0 0x0095 KEYCODE_NUMPAD_5
0x07 0x005e Teclado 6 y flecha derecha 0x004d CLAVE_KP6 3.0 0x0096 KEYCODE_NUMPAD_6
0x07 0x005f Teclado 7 y Inicio 0x0047 CLAVE_KP7 3.0 0x0097 KEYCODE_NUMPAD_7
0x07 0x0060 Teclado 8 y flecha arriba 0x0048 CLAVE_KP8 3.0 0x0098 KEYCODE_NUMPAD_8
0x07 0x0061 Teclado 9 y Re Pág 0x0049 CLAVE_KP9 3.0 0x0099 KEYCODE_NUMPAD_9
0x07 0x0062 Teclado 0 e Insertar 0x0052 CLAVE_KP0 3.0 0x0090 KEYCODE_NUMPAD_0
0x07 0x0063 teclado y Eliminar 0x0053 CLAVE_KPDOT 3.0 0x009e KEYCODE_NUMPAD_DOT
0x07 0x0064 Teclado no estadounidense \ y | 0x0056 CLAVE_102ND 4.0 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0065 Aplicación de teclado 0x007f CLAVE_COMPOSE 3.0 0x0052 KEYCODE_MENU
"" "" "" "" 1.6 0x0054 CÓDIGO_CLAVE_BÚSQUEDA
0x07 0x0066 Potencia del teclado 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x07 0x0067 Teclado = 0x0075 CLAVE_KPIGUAL 3.0 0x00a1 KEYCODE_NUMPAD_EQUALS
0x07 0x0068 Teclado F13 0x00b7 CLAVE_F13
0x07 0x0069 Teclado F14 0x00b8 CLAVE_F14
0x07 0x006a Teclado F15 0x00b9 CLAVE_F15
0x07 0x006b Teclado F16 0x00ba CLAVE_F16
0x07 0x006c Teclado F17 0x00bb CLAVE_F17
0x07 0x006d Teclado F18 0x00bc CLAVE_F18
0x07 0x006e Teclado F19 0x00bd CLAVE_F19
0x07 0x006f Teclado F20 0x00be CLAVE_F20
0x07 0x0070 Teclado F21 0x00bf CLAVE_F21
0x07 0x0071 Teclado F22 0x00c0 CLAVE_F22
0x07 0x0072 Teclado F23 0x00c1 CLAVE_F23
0x07 0x0073 Teclado F24 0x00c2 CLAVE_F24
0x07 0x0074 Ejecutar teclado 0x0086 LLAVE_ABRIR
0x07 0x0075 Ayuda del teclado 0x008a CLAVE_AYUDA
0x07 0x0076 Menú del teclado 0x0082 KEY_PROPS
0x07 0x0077 Selección de teclado 0x0084 CLAVE_FRONTAL
0x07 0x0078 Parada de teclado 0x0080 CLAVE_PARADA 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x0079 Teclado otra vez 0x0081 CLAVE_DE NUEVO
0x07 0x007a Deshacer teclado 0x0083 CLAVE_DESHACER
0x07 0x007b Corte de teclado 0x0089 CORTE_LLAVE
0x07 0x007c Copia de teclado 0x0085 COPIA_CLAVE
0x07 0x007d Pegar teclado 0x0087 CLAVE_PEGAR
0x07 0x007e Buscar teclado 0x0088 ENCONTRAR_LLAVE
0x07 0x007f Silencio del teclado 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x0080 Subir volumen del teclado 0x0073 LLAVE_VOLUMEN ARRIBA 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x0081 Bajar volumen del teclado 0x0072 BAJAR_VOLUMEN CLAVE 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x0082 Bloqueo de teclado Bloqueo de mayúsculas
0x07 0x0083 Bloqueo de teclado Bloq Num
0x07 0x0084 Bloqueo de teclado Bloqueo de desplazamiento
0x07 0x0085 Coma del teclado 0x0079 CLAVE_KPCOMMA 3.0 0x009f KEYCODE_NUMPAD_COMMA
0x07 0x0086 Signo igual del teclado
0x07 0x0087 Teclado Internacional1 0x0059 CLAVE_RO
0x07 0x0088 Teclado internacional2 0x005d CLAVE_KATAKANAHIRAGANA
0x07 0x0089 Teclado Internacional3 0x007c CLAVE_YEN
0x07 0x008a Teclado Internacional4 0x005c CLAVE_HENKAN
0x07 0x008b Teclado Internacional5 0x005e CLAVE_MUHENKAN
0x07 0x008c Teclado internacional6 0x005f CLAVE_KPJPCOMMA
0x07 0x008d Teclado Internacional7
0x07 0x008e Teclado Internacional8
0x07 0x008f Teclado Internacional9
0x07 0x0090 Teclado LANG1 0x007a CLAVE_CAMBIO
0x07 0x0091 Teclado LANG2 0x007b CLAVE_HANJA
0x07 0x0092 Teclado LANG3 0x005a CLAVE_KATAKANA
0x07 0x0093 Teclado LANG4 0x005b CLAVE_HIRAGANA
0x07 0x0094 Teclado LANG5 0x0055 KEY_ZENKAKUHANKAKU
0x07 0x0095 Teclado LANG6
0x07 0x0096 Teclado LANG7
0x07 0x0097 Teclado LANG8
0x07 0x0098 Teclado LAN9
0x07 0x0099 Borrado alternativo del teclado
0x07 0x009a Teclado SysReq/Atención
0x07 0x009b Teclado Cancelar
0x07 0x009c Borrar teclado
0x07 0x009d Teclado anterior
0x07 0x009e Retorno del teclado
0x07 0x009f Separador de teclado
0x07 0x00a0 Teclado fuera
0x07 0x00a1 Operador de teclado
0x07 0x00a2 Borrar teclado/otra vez
0x07 0x00a3 Teclado CrSel/Accesorios
0x07 0x00a4 Teclado ExSel
0x07 0x00b0 Teclado 00
0x07 0x00b1 Teclado 000
0x07 0x00b2 Separador de miles
0x07 0x00b3 Separador decimal
0x07 0x00b4 Unidad monetaria
0x07 0x00b5 Subunidad de moneda
0x07 0x00b6 Teclado ( 0x00b3 KEY_KPLEFTPAREN 3.0 0x00a2 KEYCODE_NUMPAD_LEFT_PAREN
0x07 0x00b7 teclado) 0x00b4 KEY_KPRIGHTPAREN 3.0 0x00a3 KEYCODE_NUMPAD_RIGHT_PAREN
0x07 0x00b8 Teclado {
0x07 0x00b9 Teclado }
0x07 0x00ba Pestaña Teclado
0x07 0x00bb Retroceso del teclado
0x07 0x00bc Teclado A
0x07 0x00bd Teclado B
0x07 0x00be Teclado C
0x07 0x00bf Teclado D
0x07 0x00c0 Teclado E
0x07 0x00c1 Teclado F
0x07 0x00c2 Teclado XOR
0x07 0x00c3 Teclado ^
0x07 0x00c4 % del teclado
0x07 0x00c5 Teclado <
0x07 0x00c6 Teclado >
0x07 0x00c7 Teclado y
0x07 0x00c8 Teclado &&
0x07 0x00c9 Teclado |
0x07 0x00ca Teclado ||
0x07 0x00cb Teclado:
0x07 0x00cc Teclado #
0x07 0x00cd Espacio del teclado
0x07 0x00ce Teclado @
0x07 0x00cf ¡Teclado!
0x07 0x00d0 Almacenamiento de memoria del teclado
0x07 0x00d1 Recuperación de la memoria del teclado
0x07 0x00d2 Borrado de la memoria del teclado
0x07 0x00d3 Agregar memoria de teclado
0x07 0x00d4 Resta de memoria del teclado
0x07 0x00d5 Multiplicación de memoria del teclado
0x07 0x00d6 División de memoria del teclado
0x07 0x00d7 Teclado +/-
0x07 0x00d8 Borrar teclado
0x07 0x00d9 Entrada clara del teclado
0x07 0x00da Binario del teclado
0x07 0x00db teclado octal
0x07 0x00cc Decimales del teclado
0x07 0x00dd Teclado Hexadecimal
0x07 0x00e0 Control izquierdo del teclado 0x001d CLAVE_LEFTCTRL 3.0 0x0071 KEYCODE_CTRL_IZQUIERDA
0x07 0x00e1 Desplazamiento a la izquierda del teclado 0x002a TECLA_MAYÚS IZQUIERDA 1.6 0x003b CÓDIGO_CLAVE_MAYÚS_IZQUIERDA
0x07 0x00e2 Alt izquierdo del teclado 0x0038 TECLA_ALTA IZQUIERDA 1.6 0x0039 CÓDIGO_CLAVE_ALT_IZQUIERDA
0x07 0x00e3 Interfaz gráfica de usuario izquierda del teclado 0x007d KEY_LEFTMETA 3.0 0x0075 KEYCODE_META_LEFT
0x07 0x00e4 Control derecho del teclado 0x0061 CLAVE_DERECHACTRL 3.0 0x0072 KEYCODE_CTRL_DERECHO
0x07 0x00e5 Desplazamiento a la derecha del teclado 0x0036 TECLA_MAYÚS DERECHA 1.6 0x003c CÓDIGO_CLAVE_MAYÚS_DERECHA
0x07 0x00e6 Alt derecho del teclado 0x0064 KEY_RIGHTALT 1.6 0x003a KEYCODE_ALT_RIGHT
0x07 0x00e7 Interfaz gráfica de usuario derecha del teclado 0x007e KEY_RIGHTMETA 3.0 0x0076 KEYCODE_META_RIGHT
0x07 0x00e8 0x00a4 KEY_PLAYPAUSE 3.0 0x0055 KEYCODE_MEDIA_PLAY_PAUSE
0x07 0x00e9 0x00a6 KEY_STOPCD 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x00ea 0x00a5 CLAVE_CANCIÓN ANTERIOR 3.0 0x0058 CÓDIGO_CLAVE_MEDIA_ANTERIOR
0x07 0x00eb 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x07 0x00ec 0x00a1 CLAVE_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x07 0x00ed 0x0073 LLAVE_VOLUMEN ARRIBA 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x00ee 0x0072 BAJAR_VOLUMEN CLAVE 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x00ef 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x00f0 0x0096 CLAVE_WWW 1.6 0x0040 KEYCODE_EXPLORADOR
0x07 0x00f1 0x009e CLAVE_ATRÁS 1.6 0x0004 KEYCODE_BACK
0x07 0x00f2 0x009f CLAVE_ADELANTE 3.0 0x007d KEYCODE_FORWARD
0x07 0x00f3 0x0080 CLAVE_PARADA 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x00f4 0x0088 ENCONTRAR_LLAVE
0x07 0x00f5 0x00b1 LLAVE_DESPLAZAMIENTO 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x00f6 0x00b2 TECLA_DESPLAZARSE 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x00f7 0x00b0 EDITAR CLAVE
0x07 0x00f8 0x008e CLAVE_SLEEP
0x07 0x00f9 0x0098 CLAVE_CAFÉ 4.0 0x001a KEYCODE_POWER
0x07 0x00fa 0x00ad CLAVE_REFRESH
0x07 0x00fb 0x008c CLAVE_CALC 4.0.3 0x00d2 CÓDIGO_CLAVE_CALCULADORA

Página de escritorio genérica de HID (0x01)

Uso HID Nombre de uso de HID LKC Nombre del código de clave de Linux Versión AKC Nombre del código clave de Android notas
0x01 0x0081 Apagado del sistema 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x01 0x0082 Suspensión del sistema 0x008e CLAVE_SLEEP 4.0 0x001a KEYCODE_POWER
0x01 0x0083 Activación del sistema 0x008f CLAVE_DESPERTAR 4.0 0x001a KEYCODE_POWER
0x01 0x0084 Menú contextual del sistema
0x01 0x0085 Menú principal del sistema
0x01 0x0086 Menú de la aplicación del sistema
0x01 0x0087 Ayuda del menú del sistema
0x01 0x0088 Salir del menú del sistema
0x01 0x0089 Selección de menú del sistema
0x01 0x008a Menú del sistema a la derecha
0x01 0x008b Menú del sistema a la izquierda
0x01 0x008c Menú del sistema arriba
0x01 0x008d Menú del sistema abajo
0x01 0x008e Reinicio en frío del sistema
0x01 0x008f Reinicio en caliente del sistema
0x01 0x00a0 Muelle del sistema
0x01 0x00a1 Desacoplamiento del sistema
0x01 0x00a2 Configuración del sistema
0x01 0x00a3 Ruptura del sistema
0x01 0x00a4 Interrupción del depurador del sistema
0x01 0x00a5 Descanso de aplicación
0x01 0x00a6 Descanso del depurador de aplicaciones
0x01 0x00a7 Silencio del altavoz del sistema
0x01 0x00a8 Hibernación del sistema
0x01 0x00b0 Invertir pantalla del sistema
0x01 0x00b1 Pantalla del sistema interna
0x01 0x00b2 Pantalla del sistema externa
0x01 0x00b3 Pantalla del sistema Ambos
0x01 0x00b4 Pantalla del sistema doble
0x01 0x00b5 Cambio de pantalla del sistema Int/Ext
0x01 0x00b6 Cambio de pantalla del sistema Prim./Seg.
0x01 0x00b7 Pantalla del sistema LCD Escala automática

Página de consumidor HID (0x0c)

Uso HID Nombre de uso de HID LKC Nombre del código de clave de Linux Versión AKC Nombre del código clave de Android notas
0x0c 0x0030 Energía
0x0c 0x0031 Reiniciar
0x0c 0x0032 Dormir
0x0c 0x0033 Dormir después
0x0c 0x0034 Modo de sueño 0x008e CLAVE_SLEEP 4.0 0x001a KEYCODE_POWER
0x0c 0x0040 Menú 0x008b KEY_MENU 1.6 0x0052 KEYCODE_MENU
0x0c 0x0041 Selección de menú
0x0c 0x0042 menú arriba
0x0c 0x0043 menú abajo
0x0c 0x0044 Menú a la izquierda
0x0c 0x0045 Menú a la derecha 0x0181 CLAVE_DERECHA
0x0c 0x0046 Escape del menú
0x0c 0x0047 Aumento del valor del menú
0x0c 0x0048 Disminución del valor del menú
0x0c 0x0067 Cambio de imagen en imagen 0x00ab KEYCODE_WINDOW Agregado en aosp/1365553
0x0c 0x0069 Botón de menú rojo 0x18e CLAVE_RED 0x00b7 KEYCODE_PROG_RED Agregado en aosp/1388616
0x0c 0x006a Botón de menú verde 0x18f CLAVE_VERDE 0x00b8 CÓDIGO_CLAVE_PROG_VERDE Agregado en aosp/1388616
0x0c 0x006b Botón de menú azul 0x191 CLAVE_AZUL 0x00ba KEYCODE_PROG_BLUE Agregado en aosp/1388616
0x0c 0x006c Botón de menú amarillo 0x190 CLAVE_AMARILLA 0x00b9 KEYCODE_PROG_YELLOW Agregado en aosp/1388616
0x0c 0x0081 Asignar selección
0x0c 0x0082 Paso de modo
0x0c 0x0083 Recuperar último 0x0195 CLAVE_ÚLTIMO 0xe5 CÓDIGO_CLAVE_ÚLTIMO_CANAL Agregado en aosp/1365551
0x0c 0x0084 Introducir canal
0x0c 0x0085 Pedir película
0x0c 0x0088 Equipo de selección de medios 0x0178 CLAVE_PC
0x0c 0x0089 TV de selección de medios 0x0179 CLAVE_TV 3.0 0x00aa KEYCODE_TV
0x0c 0x008a Selección de medios WWW 0x0096 CLAVE_WWW 1.6 0x0040 KEYCODE_EXPLORADOR
0x0c 0x008b DVD de selección de medios 0x0185 CLAVE_DVD
0x0c 0x008c Teléfono de selección de medios 0x00a9 LLAVE_TELÉFONO 3.0 0x0005 KEYCODE_CALL
0x0c 0x008d Guía de programas de selección de medios 0x016a PROGRAMA_CLAVE 3.0 0x00ac KEYCODE_GUIDE
0x0c 0x008e Videoteléfono de selección de medios 0x01a0 CLAVE_VIDEOTELÉFONO
0x0c 0x008f Juegos de selección de medios 0x01a1 JUEGOS_CLAVE
0x0c 0x0090 Mensajes de selección de medios 0x018c CLAVE_MEMO
0x0c 0x0091 CD de selección de medios 0x017f CLAVE_CD
0x0c 0x0092 Videograbadora de selección de medios 0x017b CLAVE_VCR
0x0c 0x0093 Sintonizador de selección de medios 0x0182 KEY_TUNER
0x0c 0x0094 Abandonar 0x00ae CLAVE_SALIR
0x0c 0x0095 Ayuda 0x008a CLAVE_AYUDA
0x0c 0x0096 Cinta de selección de medios 0x0180 CINTA_LLAVE
0x0c 0x0097 Cable de selección de medios 0x017a CLAVE_TV2
0x0c 0x0098 Satélite de selección de medios 0x017d CLAVE_SAT
0x0c 0x0099 Seguridad de selección de medios
0x0c 0x009a Inicio de selección de medios 0x016e CLAVE_PVR 3.0 0x00ad KEYCODE_DVR
0x0c 0x0061 Subtítulos 0x0172 SUBTÍTULO_CLAVE 0x00af KEYCODE_CAPTIONS Agregado en aosp/1365552
0x0c 0x009c Incremento de canal 0x0192 KEY_CHANNELUP 3.0 0x00a6 KEYCODE_CHANNEL_UP
0x0c 0x009d Decremento de canal 0x0193 CLAVE_CANAL ABAJO 3.0 0x00a7 KEYCODE_CHANNEL_DOWN
0x0c 0x009e Selección de medios SAP
0x0c 0x00a0 Videograbadora Plus 0x017c CLAVE_VCR2
0x0c 0x00a1 Una vez
0x0c 0x00a2 Diariamente
0x0c 0x00a3 Semanalmente
0x0c 0x00a4 Mensual
0x0c 0x00b0 Tocar 0x00cf KEY_PLAY 3.0 0x007e KEYCODE_MEDIA_PLAY
0x0c 0x00b1 Pausa 0x0077 CLAVE_PAUSA 3.0 0x0079 KEYCODE_BREAK
0x0c 0x00b2 Registro 0x00a7 CLAVE_REGISTRO 3.0 0x0082 KEYCODE_MEDIA_RECORD
0x0c 0x00b3 Avance rápido 0x00d0 CLAVE_AVANCE RÁPIDO 3.0 0x005a KEYCODE_MEDIA_FAST_FORWARD
0x0c 0x00b4 Rebobinar 0x00a8 TECLA_REBOBINADO 3.0 0x0059 KEYCODE_MEDIA_REWIND
0x0c 0x00b5 Escanear siguiente pista 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x0c 0x00b6 Escanear pista anterior 0x00a5 CLAVE_CANCIÓN ANTERIOR 3.0 0x0058 CÓDIGO_CLAVE_MEDIA_ANTERIOR
0x0c 0x00b7 Deténgase 0x00a6 KEY_STOPCD 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x00b8 Expulsar 0x00a1 CLAVE_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x0c 0x00b9 Reproducción aleatoria
0x0c 0x00ba Seleccionar disco
0x0c 0x00bb Introducir disco
0x0c 0x00bc Repetir 0x01b7 KEY_MEDIA_REPEAT
0x0c 0x00be Pista normal
0x0c 0x00c0 Fotograma adelante
0x0c 0x00c1 Parte posterior del marco
0x0c 0x00c2 Marca
0x0c 0x00c3 borrar marca
0x0c 0x00c4 Repetir desde marca
0x0c 0x00c5 volver a marcar
0x0c 0x00c6 Buscar Marcar adelante
0x0c 0x00c7 Buscar marca al revés
0x0c 0x00c8 Restablecimiento del contador
0x0c 0x00c9 Mostrar contador
0x0c 0x00ca Incremento de seguimiento
0x0c 0x00cb Decremento de seguimiento
0x0c 0x00cc Detener / Expulsar
0x0c 0x00cd Reproducir pausar 0x00a4 KEY_PLAYPAUSE 3.0 0x0055 KEYCODE_MEDIA_PLAY_PAUSE
0x0c 0x00ce Reproducir / Saltar
0x0c 0x00e2 Silencio 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x0c 0x00e5 Refuerzo de graves 0x00d1 KEY_BASSBOOST
0x0c 0x00e6 Modo envolvente
0x0c 0x00e7 Volumen
0x0c 0x00e8 MPX
0x0c 0x00e9 Incremento de volumen 0x0073 LLAVE_VOLUMEN ARRIBA 1.6 0x0018 KEYCODE_VOLUME_UP
0x0c 0x00ea Disminución de volumen 0x0072 BAJAR_VOLUMEN CLAVE 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x0c 0x0173 Incremento de audio alternativo 0x00de KEYCODE_MEDIA_AUDIO_TRACK Agregado en aosp/1365554
0x0c 0x0181 Configuración del botón de lanzamiento AL. Herramienta
0x0c 0x0182 Configuración de botones programables AL. 0x009c MARCADORES_CLAVE 3.0 0x00ae CÓDIGO CLAVE_MARCADOR
0x0c 0x0183 Configuración de control del consumidor AL. 0x00ab CLAVE_CONFIG 4.0.3 0x00d1 CÓDIGO_CLAVE_MÚSICA
0x0c 0x0184 Procesador de textos AL 0x01a5 CLAVE_PROCESADOR DE PALABRAS
0x0c 0x0185 Editor de texto AL 0x01a6 EDITOR_CLAVE
0x0c 0x0186 Hoja de cálculo AL 0x01a7 CLAVE_HOJA DE CÁLCULO
0x0c 0x0187 Editor de gráficos AL 0x01a8 KEY_GRAPHICSEDITOR
0x0c 0x0188 Aplicación de presentación AL 0x01a9 CLAVE_PRESENTACIÓN
0x0c 0x0189 Aplicación de base de datos AL 0x01aa CLAVE_BASE DE DATOS
0x0c 0x018a Lector de correo electrónico AL 0x009b KEY_MAIL 1.6 0x0041 CÓDIGO_LLAVE_SOBRE
0x0c 0x018b Lector de noticias AL 0x01ab CLAVE_NOTICIAS
0x0c 0x018c Correo de voz AL 0x01ac KEY_VOICEMAIL
0x0c 0x018d AL Contactos / Libreta de direcciones 0x01anuncio KEY_ADDRESSBOOK 4.0.3 0x00cf CÓDIGO_CLAVE_CONTACTOS
0x0c 0x018e AL Calendario / Horario 0x018d CLAVE_CALENDARIO 4.0.3 0x00d0 CÓDIGO_CLAVE_CALENDARIO
0x0c 0x018f Administrador de tareas/proyectos AL
0x0c 0x0190 Registro AL / Diario / Tarjeta de tiempo
0x0c 0x0191 AL Talonario de cheques / Finanzas 0x00db CLAVE_FINANZAS
0x0c 0x0192 Calculadora AL 0x008c CLAVE_CALC 4.0.3 0x00d2 CÓDIGO_CLAVE_CALCULADORA
0x0c 0x0193 AL A/V Captura / Reproducción
0x0c 0x0194 Navegador de máquina local AL 0x0090 ARCHIVO DE CLAVE
0x0c 0x0195 AL Navegador LAN/WAN
0x0c 0x0196 Navegador de Internet AL 0x0096 CLAVE_WWW 1.6 0x0040 KEYCODE_EXPLORADOR
0x0c 0x0197 Red remota AL/Conexión ISP
0x0c 0x0198 Conferencia de la Red AL
0x0c 0x0199 Charla en red AL 0x00d8 CLAVE_CHAT
0x0c 0x019a AL Telefonía / Marcador
0x0c 0x019b Inicio de sesión AL
0x0c 0x019c Cierre de sesión AL 0x01b1 KEY_LOGOFF
0x0c 0x019d Inicio/cierre de sesión AL
0x0c 0x019e Bloqueo de terminal AL / Protector de pantalla 0x0098 CLAVE_CAFÉ 4.0 0x001a KEYCODE_POWER
0x0c 0x019f Panel de control AL
0x0c 0x01a0 Procesador de línea de comandos AL / Ejecutar
0x0c 0x01a1 Proceso AL / Administrador de tareas
0x0c 0x01a2 AL Seleccionar tarea/aplicación
0x0c 0x01a3 AL Siguiente Tarea/Aplicación
0x0c 0x01a4 AL Tarea anterior/Aplicación
0x0c 0x01a5 AL Tarea/aplicación de parada preventiva.
0x0c 0x01a6 Centro de ayuda integrado AL 0x008a CLAVE_AYUDA
0x0c 0x01a7 Documentos AL 0x00eb DOCUMENTOS_CLAVE
0x0c 0x01a8 AL diccionario de sinónimos
0x0c 0x01a9 Diccionario AL
0x0c 0x01aa Escritorio AL
0x0c 0x01ab Corrector ortográfico AL 0x01b0 CLAVE_CHEQUEO ORTOGRAFICO
0x0c 0x01ac Verificación de gramática AL
0x0c 0x01ad Estado inalámbrico AL
0x0c 0x01ae Disposición del teclado AL
0x0c 0x01af Protección contra virus AL
0x0c 0x01b0 Cifrado AL
0x0c 0x01b1 Protector de pantalla AL
0x0c 0x01b2 AL Alarmas
0x0c 0x01b3 Reloj AL
0x0c 0x01b4 Navegador de archivos AL
0x0c 0x01b5 Estado de alimentación AL
0x0c 0x01b6 Navegador de imágenes AL 0x00e2 CLAVE_MEDIA 3.0 0x004f KEYCODE_HEADSETHOOK
0x0c 0x01b7 Navegador de audio AL 0x00d5 SONIDO CLAVE 4.0.3 0x00d1 CÓDIGO_CLAVE_MÚSICA
0x0c 0x01b8 AL Movie Browser
0x0c 0x01b9 AL Digital Rights Manager
0x0c 0x01ba AL Digital Wallet
0x0c 0x01bc AL Instant Messaging 0x01ae KEY_MESSENGER
0x0c 0x01bd AL OEM Features / Tips Browser 0x0166 KEY_INFO
0x0c 0x01be AL OEM Help
0x0c 0x01bf AL Online Community
0x0c 0x01c0 AL Entertainment Content Browser
0x0c 0x01c1 AL Online Shopping Browser
0x0c 0x01c2 AL SmartCard Information / Help
0x0c 0x01c3 AL Market / Finance Browser
0x0c 0x01c4 AL Customized Corp. News Browser
0x0c 0x01c5 AL Online Activity Browser
0x0c 0x01c6 AL Research / Search Browser
0x0c 0x01c7 AL Audio Player
0x0c 0x0201 AC New 0x00b5 KEY_NEW
0x0c 0x0202 AC Open 0x0086 KEY_OPEN
0x0c 0x0203 AC Close 0x00ce KEY_CLOSE
0x0c 0x0204 AC Exit 0x00ae KEY_EXIT
0x0c 0x0205 AC Maximize
0x0c 0x0206 AC Minimize
0x0c 0x0207 AC Save 0x00ea KEY_SAVE
0x0c 0x0208 AC Print 0x00d2 KEY_PRINT
0x0c 0x0209 AC Properties 0x0082 KEY_PROPS
0x0c 0x021a AC Undo 0x0083 KEY_UNDO
0x0c 0x021b AC Copy 0x0085 KEY_COPY
0x0c 0x021c AC Cut 0x0089 KEY_CUT
0x0c 0x021d AC Paste 0x0087 KEY_PASTE
0x0c 0x021e AC Select All
0x0c 0x021f AC Find 0x0088 KEY_FIND
0x0c 0x0220 AC Find and Replace
0x0c 0x0221 AC Search 0x00d9 KEY_SEARCH 1.6 0x0054 KEYCODE_SEARCH
0x0c 0x0222 AC Go To 0x0162 KEY_GOTO
0x0c 0x0223 AC Home 0x00ac KEY_HOMEPAGE 3.0 0x0003 KEYCODE_HOME
0x0c 0x0224 AC Back 0x009e KEY_BACK 1.6 0x0004 KEYCODE_BACK
0x0c 0x0225 AC Forward 0x009f KEY_FORWARD 3.0 0x007d KEYCODE_FORWARD
0x0c 0x0226 AC Stop 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x0227 AC Refresh 0x00ad KEY_REFRESH
0x0c 0x0228 AC Previous Link
0x0c 0x0229 AC Next Link
0x0c 0x022a AC Bookmarks 0x009c KEY_BOOKMARKS 3.0 0x00ae KEYCODE_BOOKMARK
0x0c 0x022b AC History
0x0c 0x022c AC Subscriptions
0x0c 0x022d AC Zoom In 0x01a2 KEY_ZOOMIN
0x0c 0x022e AC Zoom Out 0x01a3 KEY_ZOOMOUT
0x0c 0x022f AC Zoom 0x01a4 KEY_ZOOMRESET 2
0x0c 0x0230 AC Full Screen View
0x0c 0x0231 AC Normal View
0x0c 0x0232 AC View Toggle
0x0c 0x0233 AC Scroll Up 0x00b1 KEY_SCROLLUP 3.0 0x005c KEYCODE_PAGE_UP
0x0c 0x0234 AC Scroll Down 0x00b2 KEY_SCROLLDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x0c 0x0236 AC Pan Left
0x0c 0x0237 AC Pan Right
0x0c 0x0239 AC New Window
0x0c 0x023a AC Tile Horizontally
0x0c 0x023b AC Tile Vertically
0x0c 0x023c AC Format
0x0c 0x023d AC Edit
0x0c 0x023e AC Bold
0x0c 0x023f AC Italics
0x0c 0x0240 AC Underline
0x0c 0x0241 AC Strikethrough
0x0c 0x0242 AC Subscript
0x0c 0x0243 AC Superscript
0x0c 0x0244 AC All Caps
0x0c 0x0245 AC Rotate
0x0c 0x0246 AC Resize
0x0c 0x0247 AC Flip horizontal
0x0c 0x0248 AC Flip Vertical
0x0c 0x0249 AC Mirror Horizontal
0x0c 0x024a AC Mirror Vertical
0x0c 0x024b AC Font Select
0x0c 0x024c AC Font Color
0x0c 0x024d AC Font Size
0x0c 0x024e AC Justify Left
0x0c 0x024f AC Justify Center H
0x0c 0x0250 AC Justify Right
0x0c 0x0251 AC Justify Block H
0x0c 0x0252 AC Justify Top
0x0c 0x0253 AC Justify Center V
0x0c 0x0254 AC Justify Bottom
0x0c 0x0255 AC Justify Block V
0x0c 0x0256 AC Indent Decrease
0x0c 0x0257 AC Indent Increase
0x0c 0x0258 AC Numbered List
0x0c 0x0259 AC Restart Numbering
0x0c 0x025a AC Bulleted List
0x0c 0x025b AC Promote
0x0c 0x025c AC Demote
0x0c 0x025d AC Yes
0x0c 0x025e AC No
0x0c 0x025f AC Cancel 0x00df KEY_CANCEL
0x0c 0x0260 AC Catalog
0x0c 0x0261 AC Buy / Checkout
0x0c 0x0262 AC Add to Cart
0x0c 0x0263 AC Expand
0x0c 0x0264 AC Expand All
0x0c 0x0265 AC Collapse
0x0c 0x0266 AC Collapse All
0x0c 0x0267 AC Print Preview
0x0c 0x0268 AC Paste Special
0x0c 0x0269 AC Insert Mode
0x0c 0x026a AC Delete
0x0c 0x026b AC Lock
0x0c 0x026c AC Unlock
0x0c 0x026d AC Protect
0x0c 0x026e AC Unprotect
0x0c 0x026f AC Attach Comment
0x0c 0x0270 AC Delete Comment
0x0c 0x0271 AC View Comment
0x0c 0x0272 AC Select Word
0x0c 0x0273 AC Select Sentence
0x0c 0x0274 AC Select Paragraph
0x0c 0x0275 AC Select Column
0x0c 0x0276 AC Select Row
0x0c 0x0277 AC Select Table
0x0c 0x0278 AC Select Object
0x0c 0x0279 AC Redo / Repeat 0x00b6 KEY_REDO
0x0c 0x027a AC Sort
0x0c 0x027b AC Sort Ascending
0x0c 0x027c AC Sort Descending
0x0c 0x027d AC Filter
0x0c 0x027e AC Set Clock
0x0c 0x027f AC View Clock
0x0c 0x0280 AC Select Time Zone
0x0c 0x0281 AC Edit Time Zones
0x0c 0x0282 AC Set Alarm
0x0c 0x0283 AC Clear Alarm
0x0c 0x0284 AC Snooze Alarm
0x0c 0x0285 AC Reset Alarm
0x0c 0x0286 AC Synchronize
0x0c 0x0287 AC Send/Receive
0x0c 0x0288 AC Send To
0x0c 0x0289 AC Reply 0x00e8 KEY_REPLY
0x0c 0x028a AC Reply All
0x0c 0x028b AC Forward Msg 0x00e9 KEY_FORWARDMAIL
0x0c 0x028c AC Send 0x00e7 KEY_SEND
0x0c 0x028d AC Attach File
0x0c 0x028e AC Upload
0x0c 0x028f AC Download (Save Target As)
0x0c 0x0290 AC Set Borders
0x0c 0x0291 AC Insert Row
0x0c 0x0292 AC Insert Column
0x0c 0x0293 AC Insert File
0x0c 0x0294 AC Insert Picture
0x0c 0x0295 AC Insert Object
0x0c 0x0296 AC Insert Symbol
0x0c 0x0297 AC Save and Close
0x0c 0x0298 AC Rename
0x0c 0x0299 AC Merge
0x0c 0x029a AC Split
0x0c 0x029b AC Distribute Horizontally
0x0c 0x029c AC Distribute Vertically

Additional non-HID Mappings

These mappings describe functions that do not appear in HID but for which Linux key codes exist.

LKC Linux Key Code Name Versión AKC Android Key Code Name notas
0x01d0 KEY_FN 3.0 0x0077 KEYCODE_FUNCTION
0x01d1 KEY_FN_ESC 3.0 0x006f KEYCODE_ESCAPE 3
0x01d2 KEY_FN_F1 3.0 0x0083 KEYCODE_F1 3
0x01d3 KEY_FN_F2 3.0 0x0084 KEYCODE_F2 3
0x01d4 KEY_FN_F3 3.0 0x0085 KEYCODE_F3 3
0x01d5 KEY_FN_F4 3.0 0x0086 KEYCODE_F4 3
0x01d6 KEY_FN_F5 3.0 0x0087 KEYCODE_F5 3
0x01d7 KEY_FN_F6 3.0 0x0088 KEYCODE_F6 3
0x01d8 KEY_FN_F7 3.0 0x0089 KEYCODE_F7 3
0x01d9 KEY_FN_F8 3.0 0x008a KEYCODE_F8 3
0x01da KEY_FN_F9 3.0 0x008b KEYCODE_F9 3
0x01db KEY_FN_F10 3.0 0x008c KEYCODE_F10 3
0x01dc KEY_FN_F11 3.0 0x008d KEYCODE_F11 3
0x01dd KEY_FN_F12 3.0 0x008e KEYCODE_F12 3
0x01de KEY_FN_1 3.0 0x0008 KEYCODE_1 3
0x01df KEY_FN_2 3.0 0x0009 KEYCODE_2 3
0x01e0 KEY_FN_D 3.0 0x0020 KEYCODE_D 3
0x01e1 KEY_FN_E 3.0 0x0021 KEYCODE_E 3
0x01e2 KEY_FN_F 3.0 0x0022 KEYCODE_F 3
0x01e3 KEY_FN_S 3.0 0x002f KEYCODE_S 3
0x01e4 KEY_FN_B 3.0 0x001e KEYCODE_B 3

Legacy Unsupported Keys

These mappings appeared in previous versions of Android but were inconsistent with HID or used non-standard Linux key codes. They are no longer supported.

LKC Linux Key Code Name Versión AKC Android Key Code Name notas
0x00db KEY_EMAIL 1.6 0x004d KEYCODE_AT 4
"" "" 4.0 4
0x00e3 KEY_STAR 1.6 0x0011 KEYCODE_STAR 4
"" "" 4.0 4
0x00e4 KEY_SHARP 1.6 0x0012 KEYCODE_POUND 4
"" "" 4.0 4
0x00e5 KEY_SOFT1 1.6 0x0052 KEYCODE_MENU 4
"" "" 4.0 4
0x00e6 KEY_SOFT2 1.6 0x0002 KEYCODE_SOFT_RIGHT 4
"" "" 4.0 4
0x00e7 KEY_SEND 1.6 0x0005 KEYCODE_CALL 4
"" "" 4.0 4
0x00e8 KEY_CENTER 1.6 0x0017 KEYCODE_DPAD_CENTER 4
"" "" 4.0 4
0x00e9 KEY_HEADSETHOOK 1.6 0x004f KEYCODE_HEADSETHOOK 4
"" "" 4.0 4
0x00ea KEY_0_5 1.6 4
0x00eb KEY_2_5 1.6 4

notas

  1. The Android key code associated with common alphanumeric and symbolic keys may vary based on the keyboard layout and language. For historical reasons, the physical scan codes and HID usages associated with keys on a keyboard are often defined positionally even though the labels printed on those keys may vary from one language to another.

    On a US English (QWERTY) keyboard, the top-left alphabetic key is labeled Q. On a French (AZERTY) keyboard, the key in the same position is labeled A. Despite the label, on both keyboards the top-left alphabetic key is referred to using the HID usage 0x07 0x0014 which is mapped to the Linux key code KEY_Q.

    When Android is configured with a US English keyboard layout, then the Linux key code KEY_Q will be mapped to the Android key code KEYCODE_Q and will produce the characters 'Q' and 'q'. However, when Android is configured with a French keyboard layout, then the Linux key code KEY_Q will be mapped to the Android key code KEYCODE_A and will produce the characters 'A' and 'a'.

    The Android key code typically reflects the language-specific interpretation of the key, so a different Android key code may be used for different languages.

  2. 0x0c 0x022f AC Zoom is defined in the HID as a linear control but the kernel maps it as a key, which is probably incorrect.

  3. The Linux function keys KEY_FN_* are mapped to simpler key codes but are dispatched with the META_FUNCTION meta state bit set to true.

  4. Prior to Android Ice Cream Sandwich 4.0, the default key layout contained mappings for some extra key codes that were not defined in the mainline Linux kernel headers. These mappings have since been removed because these previously undefined key codes have since been assigned different meanings in more recent versions of the Linux kernel.

Sources

  1. USB HID Usage Tables v1.12
  2. Linux 2.6.39 kernel: include/linux/input.h, drivers/hid/hid-input.c
  3. Android ICS: qwerty.kl, Generic.kl, KeyEvent.java