Dispositivos de teclado

O Android oferece suporte a vários dispositivos de teclado, incluindo teclados de função especial (controles de volume e energia), teclados QWERTY compactos incorporados e teclados externos completos no estilo de PC.

Este documento descreve apenas teclados físicos. Consulte o SDK do Android para informações sobre teclados virtuais (editores de método de entrada).

Classificação do teclado

Um dispositivo de entrada é classificado como um teclado se uma das seguintes condições for verdadeira:

  • O dispositivo de entrada informa a presença de qualquer código de tecla do Linux usado em teclados, incluindo 0 a 0xff ou KEY_OK a KEY_MAX.

  • O dispositivo de entrada informa a presença de qualquer código de tecla do Linux usado em joysticks e gamepads, incluindo BTN_0 a BTN_9, BTN_TRIGGER a BTN_DEAD ou BTN_A a BTN_THUMBR.

Atualmente, os joysticks são classificados como teclados porque os botões de joystick e gamepad são informados por eventos EV_KEY da mesma forma que as teclas do teclado. Assim, joysticks e gamepads também usam arquivos de mapeamento de teclas para configuração.

Depois que um dispositivo de entrada é classificado como um teclado, o sistema carrega o arquivo de configuração do dispositivo de entrada e o layout do teclado.

Em seguida, o sistema tenta determinar outras características do dispositivo.

  • Se o dispositivo de entrada tiver teclas mapeadas para KEYCODE_Q, ele será considerado como tendo um teclado alfabético (em vez de numérico). O recurso de teclado alfabético é informado no objeto Configuration do recurso como KEYBOARD_QWERTY.

  • Se o dispositivo de entrada tiver teclas mapeadas para KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT e KEYCODE_DPAD_CENTER (todas precisam estar presentes), o dispositivo será considerado como tendo um teclado direcional. O recurso do teclado direcional é informado no objeto Configuration do recurso como NAVIGATION_DPAD.

  • Se o dispositivo de entrada tiver teclas mapeadas para KEYCODE_BUTTON_A ou outras teclas relacionadas ao gamepad, ele será considerado como tendo um gamepad.

Requisitos do driver do teclado

  1. Os drivers de teclado só devem registrar códigos de tecla para as teclas que oferecem suporte. O registro de códigos de tecla em excesso pode confundir o algoritmo de classificação do dispositivo ou fazer com que o sistema detecte incorretamente os recursos de teclado compatíveis do dispositivo.

  2. Os drivers de teclado precisam usar EV_KEY para informar pressionamentos de tecla, usando um valor 0 para indicar que uma tecla foi liberada, um valor 1 para indicar que uma tecla foi pressionada e um valor maior ou igual a 2 para indicar que a tecla está sendo repetida automaticamente.

  3. O Android executa a repetição do teclado. A funcionalidade de repetição automática precisa ser desativada no driver.

  4. Os drivers de teclado podem indicar opcionalmente o uso do HID ou o código de verificação de nível baixo enviando EV_MSC com MSC_SCANCODE e um valor indicando o uso ou o código de verificação quando a tecla é pressionada. No momento, essas informações não são usadas pelo Android.

  5. Os drivers de teclado precisam oferecer suporte à configuração de estados de LED quando EV_LED for gravado no dispositivo. O driver hid-input faz isso automaticamente. No momento em que este artigo foi escrito, o Android usava LED_CAPSLOCK, LED_SCROLLLOCK e LED_NUMLOCK. Esses LEDs só precisam de suporte quando o teclado tem as luzes indicadoras associadas.

  6. Os drivers de teclado para teclados integrados (por exemplo, usando uma matriz GPIO) precisam enviar eventos EV_KEY com um valor de 0 para todas as teclas que ainda estiverem pressionadas quando o dispositivo for para o modo de suspensão. Caso contrário, as teclas podem ficar presas e repetir automaticamente para sempre.

Operação do teclado

Confira a seguir um breve resumo da operação do teclado no Android.

  1. O EventHub lê eventos brutos do driver evdev e mapeia códigos de tecla do Linux (às vezes chamados de códigos de verificação) para códigos de tecla do Android usando o mapa de layout de teclas do teclado.

  2. O InputReader consome os eventos brutos e atualiza o estado da metachave. Por exemplo, se a tecla de deslocamento para a esquerda for pressionada ou solta, o leitor vai definir ou redefinir os bits META_SHIFT_LEFT_ON e META_SHIFT_ON de acordo.

  3. O InputReader notifica o InputDispatcher sobre o evento principal.

  4. O InputDispatcher pergunta ao WindowManagerPolicy o que fazer com o evento principal chamando WindowManagerPolicy.interceptKeyBeforeQueueing. Esse método faz parte de um caminho crítico responsável por ativar o dispositivo quando determinadas teclas são pressionadas. O EventHub mantém uma trava de ativação ao longo desse caminho crítico para garantir que ele seja concluído.

  5. Se uma InputFilter estiver em uso, o InputDispatcher vai dar a ela a chance de consumir ou transformar a chave. O InputFilter pode ser usado para implementar políticas de acessibilidade de baixo nível em todo o sistema.

  6. O InputDispatcher enfileira a chave para processamento na linha de execução.

  7. Quando o InputDispatcher retira a chave da fila, ele dá ao WindowManagerPolicy uma segunda chance de interceptar o evento de tecla chamando WindowManagerPolicy.interceptKeyBeforeDispatching. Esse método processa atalhos do sistema e outras funções.

  8. O InputDispatcher identifica o alvo do evento principal (a janela em foco) e aguarda até que ele esteja pronto. Em seguida, o InputDispatcher envia o evento principal para o aplicativo.

  9. No aplicativo, o evento de tecla se propaga pela hierarquia de visualização até a visualização em foco para o envio de teclas pré-IME.

  10. Se o evento de tecla não for processado no envio antes do IME e um IME estiver em uso, o evento de tecla será enviado ao IME.

  11. Se o evento de tecla não for consumido pelo IME, ele será propagado pela hierarquia de visualização até a visualização em foco para o envio de tecla padrão.

  12. O aplicativo informa ao InputDispatcher se o evento chave foi consumido. Se o evento não for consumido, o InputDispatcher vai chamar WindowManagerPolicy.dispatchUnhandledKey para aplicar o comportamento "padrão". Dependendo da ação de fallback, o ciclo de envio de eventos principais pode ser reiniciado usando um código de chave diferente. Por exemplo, se um aplicativo não processar KEYCODE_ESCAPE, o sistema poderá reenviar o evento principal como KEYCODE_BACK.

Configuração do teclado

O comportamento do teclado é determinado pelo layout das teclas, pelo mapa de caracteres e pela configuração do dispositivo de entrada.

Consulte as seções a seguir para mais detalhes sobre os arquivos que participam da configuração do teclado:

Propriedades

As propriedades de configuração do dispositivo de entrada a seguir são usadas para teclados.

keyboard.layout

Definição:keyboard.layout = <name>

Especifica o nome do arquivo de layout de chave associado ao dispositivo de entrada, excluindo a extensão .kl. Se esse arquivo não for encontrado, o sistema de entrada usará o layout de teclas padrão.

Os espaços no nome são convertidos em sublinhados durante a pesquisa.

Consulte a documentação do arquivo de layout de chave para mais detalhes.

keyboard.characterMap

Definição:keyboard.characterMap = <name>

Especifica o nome do arquivo de mapa de caracteres de chave associado ao dispositivo de entrada, excluindo a extensão .kcm. Se esse arquivo não for encontrado, o sistema de entrada usará o mapa de caracteres de chave padrão.

Os espaços no nome são convertidos em sublinhados durante a pesquisa.

Consulte a documentação do arquivo de mapa de caracteres de chave para mais detalhes.

keyboard.orientationAware

Definição:keyboard.orientationAware = 0 | 1

Especifica se o teclado precisa reagir às mudanças de orientação da tela.

  • Se o valor for 1, as teclas do teclado direcional serão giradas quando a orientação da tela associada mudar.

  • Se o valor for 0, o teclado não será afetado por mudanças na orientação da tela.

O valor padrão é 0.

A detecção de orientação é usada para oferecer suporte à rotação das teclas do teclado direcional, como no Motorola Droid. Por exemplo, quando o dispositivo é girado no sentido horário em 90 graus a partir da orientação natural, KEYCODE_DPAD_UP é remapeado para produzir KEYCODE_DPAD_RIGHT, já que a tecla "para cima" aponta para "direita" quando o dispositivo é mantido nessa orientação.

keyboard.builtIn

Definição:keyboard.builtIn = 0 | 1

Especifica se o teclado é integrado (fisicamente conectado) ou não.

O valor padrão é 1 se o nome do dispositivo terminar com -keypad. Caso contrário, será 0.

O teclado integrado sempre recebe um ID de dispositivo de 0. Outros teclados que não são integrados recebem IDs de dispositivos exclusivos diferentes de zero.

O uso de um ID de 0 para o teclado integrado é importante para manter a compatibilidade com o campo KeyCharacterMap.BUILT_IN_KEYBOARD, que especifica o ID do teclado integrado e tem um valor de 0. Esse campo foi descontinuado na API, mas os aplicativos mais antigos ainda podem usá-lo.

Um teclado de função especial (cujo mapeamento de caracteres de tecla especifica um tipo de SPECIAL_FUNCTION) nunca será registrado como o teclado integrado, independentemente da configuração dessa propriedade. Isso ocorre porque um teclado de função especial não é destinado a ser usado para digitação geral.

Exemplos de configurações

# 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

Observações sobre compatibilidade

Antes do Honeycomb, o mapeador de entrada de teclado não usava propriedades de configuração. Todos os teclados foram considerados conectados fisicamente e com orientação. O layout padrão e o mapa de caracteres da chave foram nomeados como qwerty em vez de Generic. O formato do mapa de caracteres também era muito diferente, e o framework não oferecia suporte a teclados completos ou externos no estilo PC.

Ao fazer upgrade de dispositivos para o Honeycomb, crie ou atualize a configuração necessária e os arquivos de mapa de chaves.

Usos de HID, códigos de chave do Linux e códigos de chave do Android

O sistema se refere a chaves usando vários identificadores diferentes, dependendo da camada de abstração.

Para dispositivos HID, cada chave tem um uso HID associado. O driver hid-input do Linux e os drivers HID específicos do fornecedor e do dispositivo são responsáveis por analisar relatórios HID e mapear usos HID para códigos de chave do Linux.

À medida que o Android lê eventos EV_KEY do kernel do Linux, ele traduz cada código de chave do Linux no código de chave do Android correspondente, de acordo com o arquivo de layout de chave do dispositivo.

Quando o evento de tecla é enviado a um aplicativo, a instância android.view.KeyEvent informa o código de tecla do Linux como o valor de getScanCode() e o código de tecla do Android como o valor de getKeyCode(). Para os fins do framework, apenas o valor de getKeyCode() é importante.

As informações de uso do HID não são usadas pelo próprio Android nem transmitidas para os aplicativos.

Tabelas de código

As tabelas a seguir mostram como os usos de HID, os códigos de tecla do Linux e os códigos de tecla do Android estão relacionados.

A coluna LKC especifica o código de chave do Linux em hexadecimal.

A coluna AKC especifica o código de chave do Android em hexadecimal.

A coluna "Anotações" se refere às anotações postadas após a tabela.

A coluna "Versão" especifica a primeira versão da plataforma Android que incluiu essa chave no mapa de chaves padrão. Várias linhas são mostradas nos casos em que o mapa de teclas padrão mudou entre as versões. A versão mais antiga indicada é 1.6.

  • No Gingerbread (2.3) e em versões anteriores, o mapa de teclas padrão era qwerty.kl. Esse mapa de teclas foi destinado apenas ao uso com o Android Emulator e não foi projetado para oferecer suporte a teclados externos arbitrários. No entanto, alguns OEMs adicionaram suporte a teclados Bluetooth à plataforma e usaram qwerty.kl para fornecer os mapeamentos de teclado necessários. Consequentemente, esses mapeamentos mais antigos podem ser interessantes para OEMs que estão criando periféricos para esses dispositivos específicos. Os mapeamentos são substancialmente diferentes dos atuais, principalmente no que diz respeito ao tratamento da chave HOME. É recomendável que todos os novos periféricos sejam desenvolvidos de acordo com o Honeycomb ou mapas de teclas mais recentes (ou seja, HID padrão).

  • A partir do Honeycomb (3.0), o mapa de teclas padrão é Generic.kl. Esse mapa de teclas foi projetado para oferecer suporte a teclados completos de PC. A maioria das funcionalidades dos teclados HID padrão deve funcionar imediatamente.

O mapeamento do código da chave pode variar de acordo com as versões do kernel do Linux e do Android. Quando as mudanças são conhecidas nos mapas de teclas padrão do Android, elas são indicadas na coluna "Versão".

Os drivers HID específicos do dispositivo e os mapas de teclas podem aplicar mapeamentos diferentes do que os indicados aqui.

Página de teclado e teclado numérico HID (0x07)

Uso de HID Nome de uso do HID LKC Nome do código de chave do Linux Versão AKC Nome do código de chave do Android Observações
0x07 0x0001 Erro de rolagem do teclado
0x07 0x0002 Falha no POST do teclado
0x07 0x0003 Erro do teclado indefinido
0x07 0x0004 Teclado a e A 0x001e KEY_A 1.6 0x001d KEYCODE_A 1
0x07 0x0005 Teclado b e B 0x0030 KEY_B 1.6 0x001e KEYCODE_B 1
0x07 0x0006 Teclado c e C 0x002e KEY_C 1.6 0x001f KEYCODE_C 1
0x07 0x0007 Teclado d e D 0x0020 KEY_D 1.6 0x0020 KEYCODE_D 1
0x07 0x0008 Teclado e E 0x0012 KEY_E 1.6 0x0021 KEYCODE_E 1
0x07 0x0009 Teclado f e F 0x0021 KEY_F 1.6 0x0022 KEYCODE_F 1
0x07 0x000a Teclado g e G 0x0022 KEY_G 1.6 0x0023 KEYCODE_G 1
0x07 0x000b Teclado h e H 0x0023 KEY_H 1.6 0x0024 KEYCODE_H 1
0x07 0x000c Teclado i e I 0x0017 KEY_I 1.6 0x0025 KEYCODE_I 1
0x07 0x000d Teclado j e J 0x0024 KEY_J 1.6 0x0026 KEYCODE_J 1
0x07 0x000e Tecla "k" e "K" 0x0025 KEY_K 1.6 0x0027 KEYCODE_K 1
0x07 0x000f Teclado l e L 0x0026 KEY_L 1.6 0x0028 KEYCODE_L 1
0x07 0x0010 Teclado m e M 0x0032 KEY_M 1.6 0x0029 KEYCODE_M 1
0x07 0x0011 Teclado n e N 0x0031 KEY_N 1.6 0x002a KEYCODE_N 1
0x07 0x0012 Teclado o e O 0x0018 KEY_O 1.6 0x002b KEYCODE_O 1
0x07 0x0013 Teclado p e P 0x0019 KEY_P 1.6 0x002c KEYCODE_P 1
0x07 0x0014 Tecla q e Q do teclado 0x0010 KEY_Q 1.6 0x002d KEYCODE_Q 1
0x07 0x0015 Teclado r e R 0x0013 KEY_R 1.6 0x002e KEYCODE_R 1
0x07 0x0016 Teclado s e S 0x001f KEY_S 1.6 0x002f KEYCODE_S 1
0x07 0x0017 Teclado t e T 0x0014 KEY_T 1.6 0x0030 KEYCODE_T 1
0x07 0x0018 Teclado u e U 0x0016 KEY_U 1.6 0x0031 KEYCODE_U 1
0x07 0x0019 Teclado v e V 0x002f KEY_V 1.6 0x0032 KEYCODE_V 1
0x07 0x001a Teclado w e W 0x0011 KEY_W 1.6 0x0033 KEYCODE_W 1
0x07 0x001b Teclado x e X 0x002d KEY_X 1.6 0x0034 KEYCODE_X 1
0x07 0x001c Teclado y e Y 0x0015 KEY_Y 1.6 0x0035 KEYCODE_Y 1
0x07 0x001d Teclado z e Z 0x002c KEY_Z 1.6 0x0036 KEYCODE_Z 1
0x07 0x001e Teclado 1 e ! 0x0002 KEY_1 1.6 0x0008 KEYCODE_1 1
0x07 0x001f Teclado 2 e @ 0x0003 KEY_2 1.6 0x0009 KEYCODE_2 1
0x07 0x0020 Teclado 3 e # 0x0004 KEY_3 1.6 0x000a KEYCODE_3 1
0x07 0x0021 Teclado 4 e $ 0x0005 KEY_4 1.6 0x000b KEYCODE_4 1
0x07 0x0022 Teclado 5 e % 0x0006 KEY_5 1.6 0x000c KEYCODE_5 1
0x07 0x0023 Teclado 6 e ^ 0x0007 KEY_6 1.6 0x000d KEYCODE_6 1
0x07 0x0024 Teclado 7 e & 0x0008 KEY_7 1.6 0x000e KEYCODE_7 1
0x07 0x0025 Teclado 8 e * 0x0009 KEY_8 1.6 0x000f KEYCODE_8 1
0x07 0x0026 Teclado 9 e ( 0x000a KEY_9 1.6 0x0010 KEYCODE_9 1
0x07 0x0027 Teclado 0 e ) 0x000b KEY_0 1.6 0x0007 KEYCODE_0 1
0x07 0x0028 Teclado Return (ENTER) 0x001c KEY_ENTER 1.6 0x0042 KEYCODE_ENTER 1
0x07 0x0029 Tecla ESCAPE 0x0001 KEY_ESC 3.0 0x006f KEYCODE_ESCAPE
"" "" "" "" 2.3 0x0004 KEYCODE_BACK
0x07 0x002a Tecla DELETE (Backspace) do teclado 0x000e KEY_BACKSPACE 1.6 0x0043 KEYCODE_DEL
0x07 0x002b Guia "Teclado" 0x000f KEY_TAB 1.6 0x003d KEYCODE_TAB
0x07 0x002c Barra de espaço do teclado 0x0039 KEY_SPACE 1.6 0x003e KEYCODE_SPACE
0x07 0x002d Teclado - e _ 0x000c KEY_MINUS 1.6 0x0045 KEYCODE_MINUS 1
0x07 0x002e Teclado = e + 0x000d KEY_EQUAL 1.6 0x0046 KEYCODE_EQUALS 1
0x07 0x002f Teclado [ e { 0x001a KEY_LEFTBRACE 1.6 0x0047 KEYCODE_LEFT_BRACKET 1
0x07 0x0030 Teclado ] e } 0x001b KEY_RIGHTBRACE 1.6 0x0048 KEYCODE_RIGHT_BRACKET 1
0x07 0x0031 Teclado \ e | 0x002b KEY_BACKSLASH 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0032 Teclado não americano # e ~ 0x002b KEY_BACKSLASH 1.6 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0033 Tecla ; e : 0x0027 KEY_SEMICOLON 1.6 0x004a KEYCODE_SEMICOLON 1
0x07 0x0034 Teclado ' e " 0x0028 KEY_APOSTROPHE 1.6 0x004b KEYCODE_APOSTROPHE 1
0x07 0x0035 Tecla ` e ~ 0x0029 KEY_GRAVE 3.0 0x0044 KEYCODE_GRAVE 1
0x07 0x0036 Teclado , e < 0x0033 KEY_COMMA 1.6 0x0037 KEYCODE_COMMA 1
0x07 0x0037 Teclado . e > 0x0034 KEY_DOT 1.6 0x0038 KEYCODE_PERIOD 1
0x07 0x0038 Teclado / e ? 0x0035 KEY_SLASH 1.6 0x004c KEYCODE_SLASH 1
0x07 0x0039 Caps Lock do teclado 0x003a KEY_CAPSLOCK 3.0 0x0073 KEYCODE_CAPS_LOCK
0x07 0x003a Teclado F1 0x003b KEY_F1 3.0 0x0083 KEYCODE_F1
"" "" "" "" 1.6 0x0052 KEYCODE_MENU
0x07 0x003b Teclado F2 0x003c KEY_F2 3.0 0x0084 KEYCODE_F2
"" "" "" "" 1.6 0x0002 KEYCODE_SOFT_RIGHT
0x07 0x003c Teclado F3 0x003d KEY_F3 3.0 0x0085 KEYCODE_F3
"" "" "" "" 1.6 0x0005 KEYCODE_CALL
0x07 0x003d Teclado F4 0x003e KEY_F4 3.0 0x0086 KEYCODE_F4
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x003e Tecla F5 do teclado 0x003f KEY_F5 3.0 0x0087 KEYCODE_F5
0x07 0x003f Tecla F6 0x0040 KEY_F6 3.0 0x0088 KEYCODE_F6
0x07 0x0040 Teclado F7 0x0041 KEY_F7 3.0 0x0089 KEYCODE_F7
0x07 0x0041 Tecla F8 0x0042 KEY_F8 3.0 0x008a KEYCODE_F8
0x07 0x0042 Tecla F9 0x0043 KEY_F9 3.0 0x008b KEYCODE_F9
0x07 0x0043 Teclado F10 0x0044 KEY_F10 3.0 0x008c KEYCODE_F10
"" "" "" "" 2.3 0x0052 KEYCODE_MENU
0x07 0x0044 Teclado F11 0x0057 KEY_F11 3.0 0x008d KEYCODE_F11
0x07 0x0045 Teclado F12 0x0058 KEY_F12 3.0 0x008e KEYCODE_F12
0x07 0x0046 Print Screen do teclado 0x0063 KEY_SYSRQ 3.0 0x0078 KEYCODE_SYSRQ
0x07 0x0047 Scroll Lock do teclado 0x0046 KEY_SCROLLLOCK 3.0 0x0074 KEYCODE_SCROLL_LOCK
0x07 0x0048 Pausa do teclado 0x0077 KEY_PAUSE 3.0 0x0079 KEYCODE_BREAK
0x07 0x0049 Inserir no teclado 0x006e KEY_INSERT 3.0 0x007c KEYCODE_INSERT
0x07 0x004a Teclado Home 0x0066 KEY_HOME 3.0 0x007a KEYCODE_MOVE_HOME
"" "" "" "" 1.6 0x0003 KEYCODE_HOME
0x07 0x004b Tecla Page Up do teclado 0x0068 KEY_PAGEUP 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x004c Tecla de excluir para frente do teclado 0x006f KEY_DELETE 3.0 0x0070 KEYCODE_FORWARD_DEL
0x07 0x004d Teclado "End" 0x006b KEY_END 3.0 0x007b KEYCODE_MOVE_END
"" "" "" "" 1.6 0x0006 KEYCODE_ENDCALL
0x07 0x004e Tecla Page Down 0x006d KEY_PAGEDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x004f Seta para a direita do teclado 0x006a KEY_RIGHT 1.6 0x0016 KEYCODE_DPAD_RIGHT
0x07 0x0050 Seta para a esquerda do teclado 0x0069 KEY_LEFT 1.6 0x0015 KEYCODE_DPAD_LEFT
0x07 0x0051 Seta para baixo do teclado 0x006c KEY_DOWN 1.6 0x0014 KEYCODE_DPAD_DOWN
0x07 0x0052 Seta para cima do teclado 0x0067 KEY_UP 1.6 0x0013 KEYCODE_DPAD_UP
0x07 0x0053 Tecla Num Lock e Limpar 0x0045 KEY_NUMLOCK 3.0 0x008f KEYCODE_NUM_LOCK
0x07 0x0054 Teclado / 0x0062 KEY_KPSLASH 3.0 0x009a KEYCODE_NUMPAD_DIVIDE
0x07 0x0055 Teclado * 0x0037 KEY_KPASTERISK 3.0 0x009b KEYCODE_NUMPAD_MULTIPLY
0x07 0x0056 Teclado: 0x004a KEY_KPMINUS 3.0 0x009c KEYCODE_NUMPAD_SUBTRACT
0x07 0x0057 Teclado + 0x004e KEY_KPPLUS 3.0 0x009d KEYCODE_NUMPAD_ADD
0x07 0x0058 Tecla ENTER do teclado 0x0060 KEY_KPENTER 3.0 0x00a0 KEYCODE_NUMPAD_ENTER
0x07 0x0059 Teclado 1 e Fim 0x004f KEY_KP1 3.0 0x0091 KEYCODE_NUMPAD_1
0x07 0x005a Teclado 2 e seta para baixo 0x0050 KEY_KP2 3.0 0x0092 KEYCODE_NUMPAD_2
0x07 0x005b Teclado 3 e PageDn 0x0051 KEY_KP3 3.0 0x0093 KEYCODE_NUMPAD_3
0x07 0x005c Teclado 4 e seta para a esquerda 0x004b KEY_KP4 3.0 0x0094 KEYCODE_NUMPAD_4
0x07 0x005d Teclado 5 0x004c KEY_KP5 3.0 0x0095 KEYCODE_NUMPAD_5
0x07 0x005e Teclado 6 e seta para a direita 0x004d KEY_KP6 3.0 0x0096 KEYCODE_NUMPAD_6
0x07 0x005f Teclado 7 e botão Home 0x0047 KEY_KP7 3.0 0x0097 KEYCODE_NUMPAD_7
0x07 0x0060 Teclado 8 e seta para cima 0x0048 KEY_KP8 3.0 0x0098 KEYCODE_NUMPAD_8
0x07 0x0061 Teclado 9 e Page Up 0x0049 KEY_KP9 3.0 0x0099 KEYCODE_NUMPAD_9
0x07 0x0062 Teclado 0 e Inserir 0x0052 KEY_KP0 3.0 0x0090 KEYCODE_NUMPAD_0
0x07 0x0063 Teclado . e Excluir 0x0053 KEY_KPDOT 3.0 0x009e KEYCODE_NUMPAD_DOT
0x07 0x0064 Teclado não americano: \ e | 0x0056 KEY_102ND 4.0 0x0049 KEYCODE_BACKSLASH 1
0x07 0x0065 Aplicativo de teclado 0x007f KEY_COMPOSE 3.0 0x0052 KEYCODE_MENU
"" "" "" "" 1.6 0x0054 KEYCODE_SEARCH
0x07 0x0066 Alimentação do teclado 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x07 0x0067 Teclado = 0x0075 KEY_KPEQUAL 3.0 0x00a1 KEYCODE_NUMPAD_EQUALS
0x07 0x0068 Teclado F13 0x00b7 KEY_F13
0x07 0x0069 Teclado F14 0x00b8 KEY_F14
0x07 0x006a Teclado F15 0x00b9 KEY_F15
0x07 0x006b Teclado F16 0x00ba KEY_F16
0x07 0x006c Teclado F17 0x00bb KEY_F17
0x07 0x006d Teclado F18 0x00bc KEY_F18
0x07 0x006e Teclado F19 0x00bd KEY_F19
0x07 0x006f Teclado F20 0x00be KEY_F20
0x07 0x0070 Teclado F21 0x00bf KEY_F21
0x07 0x0071 Teclado F22 0x00c0 KEY_F22
0x07 0x0072 Teclado F23 0x00c1 KEY_F23
0x07 0x0073 Teclado F24 0x00c2 KEY_F24
0x07 0x0074 Execução do teclado 0x0086 KEY_OPEN
0x07 0x0075 Ajuda do teclado 0x008a KEY_HELP
0x07 0x0076 Menu do teclado 0x0082 KEY_PROPS
0x07 0x0077 Selecionar teclado 0x0084 KEY_FRONT
0x07 0x0078 Parar o teclado 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x0079 Teclado novamente 0x0081 KEY_AGAIN
0x07 0x007a Desfazer no teclado 0x0083 KEY_UNDO
0x07 0x007b Corte do teclado 0x0089 KEY_CUT
0x07 0x007c Copiar teclado 0x0085 KEY_COPY
0x07 0x007d Colar no teclado 0x0087 KEY_PASTE
0x07 0x007e Pesquisa no teclado 0x0088 KEY_FIND
0x07 0x007f Desativar som do teclado 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x0080 Aumentar volume do teclado 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x0081 Diminuir volume do teclado 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x0082 Caps Lock de bloqueio do teclado
0x07 0x0083 Tecla Num Lock para bloqueio do teclado
0x07 0x0084 Bloqueio do teclado Scroll Lock
0x07 0x0085 Vírgula do teclado 0x0079 KEY_KPCOMMA 3.0 0x009f KEYCODE_NUMPAD_COMMA
0x07 0x0086 Sinal de igual do teclado
0x07 0x0087 Teclado internacional1 0x0059 KEY_RO
0x07 0x0088 Teclado internacional2 0x005d KEY_KATAKANAHIRAGANA
0x07 0x0089 Teclado internacional3 0x007c KEY_YEN
0x07 0x008a Teclado internacional4 0x005c KEY_HENKAN
0x07 0x008b Teclado internacional5 0x005e KEY_MUHENKAN
0x07 0x008c Teclado internacional6 0x005f KEY_KPJPCOMMA
0x07 0x008d Teclado internacional7
0x07 0x008e Teclado internacional8
0x07 0x008f Teclado internacional9
0x07 0x0090 Teclado LANG1 0x007a KEY_HANGEUL
0x07 0x0091 Teclado LANG2 0x007b KEY_HANJA
0x07 0x0092 Teclado LANG3 0x005a KEY_KATAKANA
0x07 0x0093 Teclado LANG4 0x005b KEY_HIRAGANA
0x07 0x0094 Teclado LANG5 0x0055 KEY_ZENKAKUHANKAKU
0x07 0x0095 Teclado LANG6
0x07 0x0096 Teclado LANG7
0x07 0x0097 Teclado LANG8
0x07 0x0098 Teclado LANG9
0x07 0x0099 Teclado com exclusão alternativa
0x07 0x009a Tecla SysReq/Attention do teclado
0x07 0x009b Cancelar teclado
0x07 0x009c Limpar teclado
0x07 0x009d Prioridade do teclado
0x07 0x009e Retorno do teclado
0x07 0x009f Separador de teclado
0x07 0x00a0 Teclado fora
0x07 0x00a1 Teclado Oper
0x07 0x00a2 Limpar/Novamente no teclado
0x07 0x00a3 Teclado CrSel/Props
0x07 0x00a4 Teclado ExSel
0x07 0x00b0 Teclado 00
0x07 0x00b1 Teclado 000
0x07 0x00b2 Separador de milhares
0x07 0x00b3 Separador decimal
0x07 0x00b4 Unidade monetária
0x07 0x00b5 Subunidade da moeda
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 Keypad {
0x07 0x00b9 Teclado }
0x07 0x00ba Guia "Keypad"
0x07 0x00bb Tecla backspace do 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 XOR do teclado
0x07 0x00c3 Teclado ^
0x07 0x00c4 Teclado %
0x07 0x00c5 Teclado <
0x07 0x00c6 Teclado >
0x07 0x00c7 Teclado e
0x07 0x00c8 Teclado
0x07 0x00c9 Teclado |
0x07 0x00ca Teclado ||
0x07 0x00cb Teclado :
0x07 0x00cc Teclado #
0x07 0x00cd Espaço no teclado
0x07 0x00ce Teclado @
0x07 0x00cf Teclado !
0x07 0x00d0 Repositório de memória do teclado
0x07 0x00d1 Recall de memória do teclado
0x07 0x00d2 Limpar memória do teclado
0x07 0x00d3 Adicionar memória do teclado
0x07 0x00d4 Subtração de memória do teclado
0x07 0x00d5 Multiplicação da memória do teclado
0x07 0x00d6 Divisão de memória do teclado
0x07 0x00d7 Teclado +/-
0x07 0x00d8 Limpar teclado
0x07 0x00d9 Limpar entrada do teclado
0x07 0x00da Teclado binário
0x07 0x00db Teclado Octal
0x07 0x00dc Teclas decimais
0x07 0x00dd Teclado hexadecimal
0x07 0x00e0 Controle esquerdo do teclado 0x001d KEY_LEFTCTRL 3.0 0x0071 KEYCODE_CTRL_LEFT
0x07 0x00e1 Tecla Shift esquerda 0x002a KEY_LEFTSHIFT 1.6 0x003b KEYCODE_SHIFT_LEFT
0x07 0x00e2 Alt esquerdo do teclado 0x0038 KEY_LEFTALT 1.6 0x0039 KEYCODE_ALT_LEFT
0x07 0x00e3 GUI do teclado esquerdo 0x007d KEY_LEFTMETA 3.0 0x0075 KEYCODE_META_LEFT
0x07 0x00e4 Controle direito do teclado 0x0061 KEY_RIGHTCTRL 3.0 0x0072 KEYCODE_CTRL_RIGHT
0x07 0x00e5 Tecla Shift direita 0x0036 KEY_RIGHTSHIFT 1.6 0x003c KEYCODE_SHIFT_RIGHT
0x07 0x00e6 Alt direito do teclado 0x0064 KEY_RIGHTALT 1.6 0x003a KEYCODE_ALT_RIGHT
0x07 0x00e7 GUI do teclado direito 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 KEY_PREVIOUSSONG 3.0 0x0058 KEYCODE_MEDIA_PREVIOUS
0x07 0x00eb 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x07 0x00ec 0x00a1 KEY_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x07 0x00ed 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x07 0x00ee 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x07 0x00ef 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x07 0x00f0 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x07 0x00f1 0x009e KEY_BACK 1.6 0x0004 KEYCODE_BACK
0x07 0x00f2 0x009f KEY_FORWARD 3.0 0x007d KEYCODE_FORWARD
0x07 0x00f3 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x07 0x00f4 0x0088 KEY_FIND
0x07 0x00f5 0x00b1 KEY_SCROLLUP 3.0 0x005c KEYCODE_PAGE_UP
0x07 0x00f6 0x00b2 KEY_SCROLLDOWN 3.0 0x005d KEYCODE_PAGE_DOWN
0x07 0x00f7 0x00b0 KEY_EDIT
0x07 0x00f8 0x008e KEY_SLEEP
0x07 0x00f9 0x0098 KEY_COFFEE 4.0 0x001a KEYCODE_POWER
0x07 0x00fa 0x00ad KEY_REFRESH
0x07 0x00fb 0x008c KEY_CALC 4.0.3 0x00d2 KEYCODE_CALCULATOR

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

Uso de HID Nome de uso do HID LKC Nome do código de chave do Linux Versão AKC Nome do código de chave do Android Observações
0x01 0x0081 Desligar o sistema 0x0074 KEY_POWER 1.6 0x001a KEYCODE_POWER
0x01 0x0082 Suspensão do sistema 0x008e KEY_SLEEP 4.0 0x001a KEYCODE_POWER
0x01 0x0083 Despertar o sistema 0x008f KEY_WAKEUP 4.0 0x001a KEYCODE_POWER
0x01 0x0084 Menu de contexto do sistema
0x01 0x0085 Menu principal do sistema
0x01 0x0086 Menu do app do sistema
0x01 0x0087 Ajuda do menu do sistema
0x01 0x0088 Sair do menu do sistema
0x01 0x0089 Seleção do menu do sistema
0x01 0x008a Menu do sistema à direita
0x01 0x008b Menu do sistema à esquerda
0x01 0x008c Menu do sistema para cima
0x01 0x008d Menu do sistema inativo
0x01 0x008e Reinicialização a frio do sistema
0x01 0x008f Reinicialização com estado salvo do sistema
0x01 0x00a0 Base do sistema
0x01 0x00a1 Desafixação do sistema
0x01 0x00a2 Configuração do sistema
0x01 0x00a3 Falha do sistema
0x01 0x00a4 Interrupção do depurador do sistema
0x01 0x00a5 Intervalo do aplicativo
0x01 0x00a6 Intervalo do depurador de aplicativos
0x01 0x00a7 Desativação do alto-falante do sistema
0x01 0x00a8 Hibernação do sistema
0x01 0x00b0 Inversão da tela do sistema
0x01 0x00b1 Tela interna do sistema
0x01 0x00b2 Tela externa do sistema
0x01 0x00b3 Tela do sistema: ambos
0x01 0x00b4 Tela do sistema Dual
0x01 0x00b5 Alternar tela do sistema Int/Ext
0x01 0x00b6 Troca de tela do sistema Prim./Seg.
0x01 0x00b7 Escalação automática do visor de LCD do sistema

Página de consumidor HID (0x0c)

Uso de HID Nome de uso do HID LKC Nome do código de chave do Linux Versão AKC Nome do código de chave do Android Observações
0x0c 0x0030 Energia
0x0c 0x0031 Redefinir
0x0c 0x0032 Sono
0x0c 0x0033 Sono após
0x0c 0x0034 Modo de suspensão 0x008e KEY_SLEEP 4.0 0x001a KEYCODE_POWER
0x0c 0x0040 Menu 0x008b KEY_MENU 1.6 0x0052 KEYCODE_MENU
0x0c 0x0041 Escolha de menu
0x0c 0x0042 Menu Up
0x0c 0x0043 Menu para baixo
0x0c 0x0044 Menu à esquerda
0x0c 0x0045 Menu à direita 0x0181 KEY_RIGHT
0x0c 0x0046 Menu Escape
0x0c 0x0047 Aumento do valor do menu
0x0c 0x0048 Menu Value Decrease
0x0c 0x0067 Ativar o picture-in-picture 0x00ab KEYCODE_WINDOW Adicionado em aosp/1365553
0x0c 0x0069 Botão de menu vermelho 0x18e KEY_RED 0x00b7 KEYCODE_PROG_RED Adicionado em aosp/1388616
0x0c 0x006a Botão de menu verde 0x18f KEY_GREEN 0x00b8 KEYCODE_PROG_GREEN Adicionado em aosp/1388616
0x0c 0x006b Botão de menu azul 0x191 KEY_BLUE 0x00ba KEYCODE_PROG_BLUE Adicionado em aosp/1388616
0x0c 0x006c Botão de menu amarelo 0x190 KEY_YELLOW 0x00b9 KEYCODE_PROG_YELLOW Adicionado em aosp/1388616
0x0c 0x0081 Atribuir seleção
0x0c 0x0082 Etapa do modo
0x0c 0x0083 Recall Last 0x0195 KEY_LAST 0xe5 KEYCODE_LAST_CHANNEL Adicionado em aosp/1365551
0x0c 0x0084 Entrar no canal
0x0c 0x0085 Pedir filme
0x0c 0x0088 Computador Media Select 0x0178 KEY_PC
0x0c 0x0089 Media Select TV 0x0179 KEY_TV 3.0 0x00aa KEYCODE_TV
0x0c 0x008a Media Select WWW 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x0c 0x008b DVD do Media Select 0x0185 KEY_DVD
0x0c 0x008c Media Select Telephone 0x00a9 KEY_PHONE 3.0 0x0005 KEYCODE_CALL
0x0c 0x008d Guia de programação do Media Select 0x016a KEY_PROGRAM 3.0 0x00ac KEYCODE_GUIDE
0x0c 0x008e Media Select Video Phone 0x01a0 KEY_VIDEOPHONE
0x0c 0x008f Jogos do Media Select 0x01a1 KEY_GAMES
0x0c 0x0090 Mensagens de seleção de mídia 0x018c KEY_MEMO
0x0c 0x0091 CD do Media Select 0x017f KEY_CD
0x0c 0x0092 Media Select VCR 0x017b KEY_VCR
0x0c 0x0093 Sintonizador de seleção de mídia 0x0182 KEY_TUNER
0x0c 0x0094 Sair 0x00ae KEY_EXIT
0x0c 0x0095 Ajuda 0x008a KEY_HELP
0x0c 0x0096 Fita de seleção de mídia 0x0180 KEY_TAPE
0x0c 0x0097 Cabo de seleção de mídia 0x017a KEY_TV2
0x0c 0x0098 Satélite Media Select 0x017d KEY_SAT
0x0c 0x0099 Segurança do Media Select
0x0c 0x009a Media Select Home 0x016e KEY_PVR 3.0 0x00ad KEYCODE_DVR
0x0c 0x0061 Legenda 0x0172 KEY_SUBTITLE 0x00af KEYCODE_CAPTIONS Adicionado em aosp/1365552
0x0c 0x009c Incremento do canal 0x0192 KEY_CHANNELUP 3.0 0x00a6 KEYCODE_CHANNEL_UP
0x0c 0x009d Decremento do canal 0x0193 KEY_CHANNELDOWN 3.0 0x00a7 KEYCODE_CHANNEL_DOWN
0x0c 0x009e Media Select SAP
0x0c 0x00a0 VCR Plus 0x017c KEY_VCR2
0x0c 0x00a1 Uma vez
0x0c 0x00a2 Diariamente
0x0c 0x00a3 Semanal
0x0c 0x00a4 Mensal
0x0c 0x00b0 Reproduzir 0x00cf KEY_PLAY 3.0 0x007e KEYCODE_MEDIA_PLAY
0x0c 0x00b1 Pausar 0x0077 KEY_PAUSE 3.0 0x0079 KEYCODE_BREAK
0x0c 0x00b2 Gravar 0x00a7 KEY_RECORD 3.0 0x0082 KEYCODE_MEDIA_RECORD
0x0c 0x00b3 Avançar rapidamente 0x00d0 KEY_FASTFORWARD 3.0 0x005a KEYCODE_MEDIA_FAST_FORWARD
0x0c 0x00b4 Retroceder 0x00a8 KEY_REWIND 3.0 0x0059 KEYCODE_MEDIA_REWIND
0x0c 0x00b5 Ler a próxima faixa 0x00a3 KEY_NEXTSONG 3.0 0x0057 KEYCODE_MEDIA_NEXT
0x0c 0x00b6 Procurar faixa anterior 0x00a5 KEY_PREVIOUSSONG 3.0 0x0058 KEYCODE_MEDIA_PREVIOUS
0x0c 0x00b7 Parar 0x00a6 KEY_STOPCD 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x00b8 Ejetar 0x00a1 KEY_EJECTCD 3.0 0x0081 KEYCODE_MEDIA_EJECT
0x0c 0x00b9 Reprodução aleatória
0x0c 0x00ba Selecionar disco
0x0c 0x00bb Enter Disc
0x0c 0x00bc Repetir 0x01b7 KEY_MEDIA_REPEAT
0x0c 0x00be Acompanhar normalmente
0x0c 0x00c0 Frame para frente
0x0c 0x00c1 Frame de volta
0x0c 0x00c2 Marca
0x0c 0x00c3 Marca clara
0x0c 0x00c4 Repetir a partir da marca
0x0c 0x00c5 Retorno à marca
0x0c 0x00c6 Marcação de pesquisa para frente
0x0c 0x00c7 Marcação de pesquisa para trás
0x0c 0x00c8 Redefinição do contador
0x0c 0x00c9 Mostrar contador
0x0c 0x00ca Acompanhamento do incremento
0x0c 0x00cb Incremento de rastreamento
0x0c 0x00cc Parar / ejetar
0x0c 0x00cd Reproduzir/Pausar 0x00a4 KEY_PLAYPAUSE 3.0 0x0055 KEYCODE_MEDIA_PLAY_PAUSE
0x0c 0x00ce Reproduzir / Pular
0x0c 0x00e2 Desativar som 0x0071 KEY_MUTE 3.0 0x00a4 KEYCODE_VOLUME_MUTE
0x0c 0x00e5 Realçar graves 0x00d1 KEY_BASSBOOST
0x0c 0x00e6 Modo surround
0x0c 0x00e7 Intensidade
0x0c 0x00e8 MPX
0x0c 0x00e9 Aumento de volume 0x0073 KEY_VOLUMEUP 1.6 0x0018 KEYCODE_VOLUME_UP
0x0c 0x00ea Diminuir volume 0x0072 KEY_VOLUMEDOWN 1.6 0x0019 KEYCODE_VOLUME_DOWN
0x0c 0x0173 Incremento de áudio alternativo 0x00de KEYCODE_MEDIA_AUDIO_TRACK Adicionado em aosp/1365554
0x0c 0x0181 Configuração do botão de início da AL. Ferramenta
0x0c 0x0182 Configuração de botão programável de AL. 0x009c KEY_BOOKMARKS 3.0 0x00ae KEYCODE_BOOKMARK
0x0c 0x0183 Configuração do controle do consumidor de AL. 0x00ab KEY_CONFIG 4.0.3 0x00d1 KEYCODE_MUSIC
0x0c 0x0184 Processador de texto AL 0x01a5 KEY_WORDPROCESSOR
0x0c 0x0185 Editor de texto AL 0x01a6 KEY_EDITOR
0x0c 0x0186 Planilha AL 0x01a7 KEY_SPREADSHEET
0x0c 0x0187 Editor de gráficos da AL 0x01a8 KEY_GRAPHICSEDITOR
0x0c 0x0188 App de apresentação de IA 0x01a9 KEY_PRESENTATION
0x0c 0x0189 App de banco de dados de IA 0x01aa KEY_DATABASE
0x0c 0x018a Leitor de e-mail do AL 0x009b KEY_MAIL 1.6 0x0041 KEYCODE_ENVELOPE
0x0c 0x018b AL Newsreader 0x01ab KEY_NEWS
0x0c 0x018c AL Voicemail 0x01ac KEY_VOICEMAIL
0x0c 0x018d AL Contacts / Address Book 0x01ad KEY_ADDRESSBOOK 4.0.3 0x00cf KEYCODE_CONTACTS
0x0c 0x018e Agenda / programação 0x018d KEY_CALENDAR 4.0.3 0x00d0 KEYCODE_CALENDAR
0x0c 0x018f Gerente de tarefas / projeto de AL
0x0c 0x0190 Registro / diário / cartão de ponto
0x0c 0x0191 AL Checkbook / Finance 0x00db KEY_FINANCE
0x0c 0x0192 Calculadora de AL 0x008c KEY_CALC 4.0.3 0x00d2 KEYCODE_CALCULATOR
0x0c 0x0193 AL A/V Capture / Playback
0x0c 0x0194 Navegador de máquina local do AL 0x0090 KEY_FILE
0x0c 0x0195 Navegador LAN/WAN AL
0x0c 0x0196 Navegador AL Internet 0x0096 KEY_WWW 1.6 0x0040 KEYCODE_EXPLORER
0x0c 0x0197 AL Remote Networking/ISP Connect
0x0c 0x0198 Conferência de rede da AL
0x0c 0x0199 Chat de rede AL 0x00d8 KEY_CHAT
0x0c 0x019a AL Telephony / Dialer
0x0c 0x019b AL Logon
0x0c 0x019c Desconexão do AL 0x01b1 KEY_LOGOFF
0x0c 0x019d AL Logon / Logoff
0x0c 0x019e AL Terminal Lock / Screensaver 0x0098 KEY_COFFEE 4.0 0x001a KEYCODE_POWER
0x0c 0x019f Painel de controle do AL
0x0c 0x01a0 Processador de linha de comando / Execução de AL
0x0c 0x01a1 Gerenciador de tarefas / processo de IA
0x0c 0x01a2 AL Select Task / Application
0x0c 0x01a3 Próxima tarefa / aplicativo da AL
0x0c 0x01a4 Tarefa / aplicativo anterior da IA
0x0c 0x01a5 Tarefa / app de interrupção preventiva de AL.
0x0c 0x01a6 Central de Ajuda integrada do AL 0x008a KEY_HELP
0x0c 0x01a7 Documentos do AL 0x00eb KEY_DOCUMENTS
0x0c 0x01a8 Dicionário de sinônimos e antônimos do AL
0x0c 0x01a9 Dicionário de AL
0x0c 0x01aa AL Desktop
0x0c 0x01ab Verificação ortográfica AL 0x01b0 KEY_SPELLCHECK
0x0c 0x01ac Verificação gramatical do AL
0x0c 0x01ad Status da rede sem fio AL
0x0c 0x01ae Layout do teclado AL
0x0c 0x01af Proteção contra vírus AL
0x0c 0x01b0 Criptografia AL
0x0c 0x01b1 Protetor de tela do AL
0x0c 0x01b2 Alarmes AL
0x0c 0x01b3 Relógio AL
0x0c 0x01b4 Navegador de arquivos AL
0x0c 0x01b5 Status de energia do AL
0x0c 0x01b6 Navegador de imagens AL 0x00e2 KEY_MEDIA 3.0 0x004f KEYCODE_HEADSETHOOK
0x0c 0x01b7 Navegador de áudio AL 0x00d5 KEY_SOUND 4.0.3 0x00d1 KEYCODE_MUSIC
0x0c 0x01b8 AL Movie Browser
0x0c 0x01b9 AL Digital Rights Manager
0x0c 0x01ba Carteira digital da AL
0x0c 0x01bc Mensagens instantâneas do AL 0x01ae KEY_MESSENGER
0x0c 0x01bd AL OEM Features / Tips Browser 0x0166 KEY_INFO
0x0c 0x01be Ajuda do OEM de AL
0x0c 0x01bf Comunidade on-line da AL
0x0c 0x01c0 Navegador de conteúdo de entretenimento AL
0x0c 0x01c1 Navegador de compras on-line AL
0x0c 0x01c2 AL SmartCard Information / Help
0x0c 0x01c3 Navegador de mercado / finanças AL
0x0c 0x01c4 AL Customized Corp. News Browser
0x0c 0x01c5 Navegador de atividades on-line do AL
0x0c 0x01c6 AL Research / Search Browser
0x0c 0x01c7 AL Audio Player
0x0c 0x0201 AC New 0x00b5 KEY_NEW
0x0c 0x0202 AC aberto 0x0086 KEY_OPEN
0x0c 0x0203 AC fechar 0x00ce KEY_CLOSE
0x0c 0x0204 Saída de CA 0x00ae KEY_EXIT
0x0c 0x0205 AC Maximize
0x0c 0x0206 Minimizar AC
0x0c 0x0207 Economia de energia 0x00ea KEY_SAVE
0x0c 0x0208 AC Print 0x00d2 KEY_PRINT
0x0c 0x0209 Propriedades de AC 0x0082 KEY_PROPS
0x0c 0x021a Desfazer AC 0x0083 KEY_UNDO
0x0c 0x021b Texto do AC 0x0085 KEY_COPY
0x0c 0x021c Corte de AC 0x0089 KEY_CUT
0x0c 0x021d AC Paste 0x0087 KEY_PASTE
0x0c 0x021e AC Selecionar tudo
0x0c 0x021f Encontrar AC 0x0088 KEY_FIND
0x0c 0x0220 AC Localizar e substituir
0x0c 0x0221 Pesquisa de AC 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 para frente 0x009f KEY_FORWARD 3.0 0x007d KEYCODE_FORWARD
0x0c 0x0226 Parada de AC 0x0080 KEY_STOP 3.0 0x0056 KEYCODE_MEDIA_STOP
0x0c 0x0227 Atualização de AC 0x00ad KEY_REFRESH
0x0c 0x0228 AC Previous Link
0x0c 0x0229 AC Next Link
0x0c 0x022a Favoritos do AC 0x009c KEY_BOOKMARKS 3.0 0x00ae KEYCODE_BOOKMARK
0x0c 0x022b Histórico de AC
0x0c 0x022c Assinaturas de AC
0x0c 0x022d Zoom In AC 0x01a2 KEY_ZOOMIN
0x0c 0x022e AC Zoom Out 0x01a3 KEY_ZOOMOUT
0x0c 0x022f Zoom AC 0x01a4 KEY_ZOOMRESET 2
0x0c 0x0230 Tela cheia do AC
0x0c 0x0231 Visão normal de AC
0x0c 0x0232 Alternar visualização de AC
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 Movimento rápido para a esquerda
0x0c 0x0237 Movimento rápido para a direita
0x0c 0x0239 AC Nova janela
0x0c 0x023a AC Tile Horizontally
0x0c 0x023b AC Tile Vertically
0x0c 0x023c Formato de AC
0x0c 0x023d Edição de AC
0x0c 0x023e AC Bold
0x0c 0x023f AC Italics
0x0c 0x0240 Sublinha AC
0x0c 0x0241 Tachado AC
0x0c 0x0242 Subscrito AC
0x0c 0x0243 AC sobrescrito
0x0c 0x0244 AC All Caps
0x0c 0x0245 Rotação de AC
0x0c 0x0246 Redimensionamento de AC
0x0c 0x0247 AC Virar horizontal
0x0c 0x0248 AC Flip Vertical
0x0c 0x0249 Espelho horizontal com ar condicionado
0x0c 0x024a Espelho vertical com ar condicionado
0x0c 0x024b Selecionar fonte AC
0x0c 0x024c Cor da fonte do AC
0x0c 0x024d Tamanho da fonte do AC
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 Diminuição do recuo de AC
0x0c 0x0257 Aumento do recuo AC
0x0c 0x0258 Lista numerada de AC
0x0c 0x0259 Numeração de reinicializações do AC
0x0c 0x025a Lista com marcadores AC
0x0c 0x025b Promoção de AC
0x0c 0x025c AC Demote
0x0c 0x025d Sim, AC
0x0c 0x025e AC No
0x0c 0x025f Cancelamento de AC 0x00df KEY_CANCEL
0x0c 0x0260 Catálogo de AC
0x0c 0x0261 Compra / finalização de compra
0x0c 0x0262 AC Add to Cart
0x0c 0x0263 Expansão de AC
0x0c 0x0264 AC Expand All
0x0c 0x0265 Colapso de AC
0x0c 0x0266 AC Recolher tudo
0x0c 0x0267 Visualização de impressão do AC
0x0c 0x0268 AC Colar especial
0x0c 0x0269 Modo de inserção de CA
0x0c 0x026a Exclusão de AC
0x0c 0x026b Bloqueio de ar condicionado
0x0c 0x026c Desbloqueio de AC
0x0c 0x026d AC Protect
0x0c 0x026e AC Unprotect
0x0c 0x026f AC Attach Comment
0x0c 0x0270 AC Excluir comentário
0x0c 0x0271 AC View Comment
0x0c 0x0272 AC Select Word
0x0c 0x0273 Frase de seleção de AC
0x0c 0x0274 AC Select Paragraph
0x0c 0x0275 AC Selecionar coluna
0x0c 0x0276 Linha de seleção de AC
0x0c 0x0277 Tabela de seleção de AC
0x0c 0x0278 AC Select Object
0x0c 0x0279 Refazer / repetir 0x00b6 KEY_REDO
0x0c 0x027a Classificação de AC
0x0c 0x027b AC Ordenar em ordem crescente
0x0c 0x027c AC Sort Descending
0x0c 0x027d Filtro de CA
0x0c 0x027e Relógio de ajuste de CA
0x0c 0x027f Relógio AC View
0x0c 0x0280 AC Selecionar fuso horário
0x0c 0x0281 AC Edit Time Zones
0x0c 0x0282 AC Set Alarm
0x0c 0x0283 Alarme de desativação do AC
0x0c 0x0284 Alarme de soneca
0x0c 0x0285 Alarme de redefinição de AC
0x0c 0x0286 Sincronizar o ar-condicionado
0x0c 0x0287 Enviar/receber AC
0x0c 0x0288 AC Send To
0x0c 0x0289 Resposta AC 0x00e8 KEY_REPLY
0x0c 0x028a AC Responder a todos
0x0c 0x028b AC Forward Msg 0x00e9 KEY_FORWARDMAIL
0x0c 0x028c Envio de AC 0x00e7 KEY_SEND
0x0c 0x028d AC Attach File
0x0c 0x028e Upload de AC
0x0c 0x028f Download de AC (salvar destino como)
0x0c 0x0290 AC Set Borders
0x0c 0x0291 Linha de inserção de AC
0x0c 0x0292 Coluna de inserção de AC
0x0c 0x0293 Inserir arquivo de AC
0x0c 0x0294 AC Inserir imagem
0x0c 0x0295 Objeto de inserção de AC
0x0c 0x0296 Símbolo de inserção de AC
0x0c 0x0297 AC Save and Close
0x0c 0x0298 Renomear AC
0x0c 0x0299 Fusão de AC
0x0c 0x029a Divisão de ar condicionado
0x0c 0x029b AC Distribuir horizontalmente
0x0c 0x029c AC Distribuir vertical

Outros mapeamentos não HID

Esses mapeamentos descrevem funções que não aparecem no HID, mas para as quais os códigos de chave do Linux existem.

LKC Nome do código de chave do Linux Versão AKC Nome do código de chave do Android Observações
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

Chaves legadas sem suporte

Esses mapeamentos apareceram em versões anteriores do Android, mas eram inconsistentes com o HID ou usavam códigos de chave não padrão do Linux. Eles não são mais compatíveis.

LKC Nome do código de chave do Linux Versão AKC Nome do código de chave do Android Observações
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

Observações

  1. O código de chave do Android associado a chaves alfanuméricas e simbólicas comuns pode variar de acordo com o layout e o idioma do teclado. Por motivos históricos, os códigos de verificação física e os usos de HID associados às teclas de um teclado geralmente são definidos de forma posicional, embora os rótulos impressos nessas teclas possam variar de um idioma para outro.

    Em um teclado em inglês dos EUA (QWERTY), a tecla alfabética no canto superior esquerdo é identificada como Q. Em um teclado francês (AZERTY), a tecla na mesma posição é identificada como A. Apesar do rótulo, em ambos os teclados, a chave alfabética no canto superior esquerdo é referenciada usando o uso HID 0x07 0x0014, que é mapeado para o código de chave KEY_Q do Linux.

    Quando o Android está configurado com um layout de teclado em inglês dos EUA, o código de tecla KEY_Q do Linux é mapeado para o código de tecla KEYCODE_Q do Android e produz os caracteres "Q" e "q". No entanto, quando o Android é configurado com um layout de teclado francês, o código de tecla KEY_Q do Linux é mapeado para o código de tecla KEYCODE_A do Android e produz os caracteres 'A' e 'a'.

    O código de chave do Android normalmente reflete a interpretação da chave específica da linguagem. Portanto, um código de chave do Android diferente pode ser usado para diferentes idiomas.

  2. 0x0c 0x022f AC Zoom é definido no HID como um controle linear, mas o kernel o mapeia como uma chave, o que provavelmente está incorreto.

  3. As teclas de função KEY_FN_* do Linux são mapeadas para códigos de tecla mais simples, mas são enviadas com o bit de metaestado META_FUNCTION definido como verdadeiro.

  4. Antes do Android Ice Cream Sandwich 4.0, o layout de teclas padrão continha mapeamentos para alguns códigos de teclas extras que não eram definidos nos cabeçalhos do kernel do Linux. Esses mapeamentos foram removidos porque esses códigos de chaves indefinidos foram atribuídos a significados diferentes em versões mais recentes do kernel do Linux.

Fontes

  1. Tabelas de uso de HID USB v1.12
  2. Kernel do Linux 2.6.39: include/linux/input.h, drivers/hid/hid-input.c
  3. Android ICS: qwerty.kl, Generic.kl, KeyEvent.java