Códigos de teclas JavaScript
Prime qualquer tecla para ver os valores JavaScript event.key, event.code, keyCode, which e location, com modificadores, histórico e tabela completa.
Clica em «Começar a capturar teclas» ou na caixa abaixo e prime qualquer tecla. Clica fora da caixa para devolver o teclado à página.
- event.key
- –
- event.code
- –
- event.keyCode
- –
- event.which
- –
- event.location
- –
- event.repeat
- –
- Teclas de bloqueio ativas
- –
| Evento | key | code | keyCode | location | Modificadores | repeat |
|---|
| key | code | keyCode | location | Nota |
|---|
os valores de key são os de um esquema dos EUA sem modificadores; outros esquemas produzem outros caracteres para o mesmo code. keyCode e which estão obsoletos, mas continuam muito usados.
Como descobrir o código de uma tecla
- Clica em Começar a capturar teclas ou na caixa grande. Um contorno colorido mostra que está à escuta.
- Prime qualquer tecla ou atalho. O visor grande mostra o valor
keye o antigokeyCode, e os cartões abaixo indicamevent.key,event.code,event.keyCode,event.which,event.location,event.repeate as Teclas de bloqueio ativas (Caps Lock, Num Lock, AltGraph). - Os indicadores de Modificadores acendem-se para
ctrlKey,shiftKey,altKeyemetaKey. - Copia o Snippet JavaScript para esta tecla. Em Comparar com, escolhe entre
event.key,event.codeouevent.keyCode (obsoleto). - Percorre o Histórico de teclas (mais recentes primeiro) para comparar vários toques. Marca Registar também os eventos keyup para veres também quando as teclas são largadas.
- Consulta ou filtra a Tabela de códigos de teclas (US QWERTY) quando precisas de um valor sem premir a tecla.
Enquanto a caixa tem o foco, a ação predefinida de cada tecla fica bloqueada: Tab, as setas, Backspace ou Ctrl+S são capturados em vez de mudarem o foco ou abrirem uma janela. Clica em qualquer sítio fora da caixa para devolver o teclado à página. Alguns atalhos são tratados pelo sistema operativo antes de chegarem ao navegador (Alt+Tab, Ctrl+Alt+Del, Cmd+Tab e muitas vezes Print Screen), por isso nenhuma página web os consegue ler.
key, code ou keyCode: qual deves usar?
Um KeyboardEvent traz vários valores que respondem a perguntas diferentes:
| Propriedade | O que indica | Exemplo (a tecla A num teclado AZERTY) |
|---|---|---|
key |
O carácter ou a tecla nomeada produzida, depois do esquema e dos modificadores | "a", "A" com Shift |
code |
A posição física da tecla, independente do esquema | "KeyQ" |
keyCode / which |
Um número antigo, normalmente o código ASCII da letra maiúscula | 65 |
location |
0 padrão, 1 esquerda, 2 direita, 3 teclado numérico | 0 |
Usa key quando o que importa é o significado: Enter para submeter, Escape para fechar, «?» para abrir uma ajuda. Usa code em jogos e atalhos que dependem da posição das teclas, como o movimento WASD, que deve ficar no mesmo sítio num teclado AZERTY francês ou QWERTZ alemão. No teclado português, por exemplo, a tecla «ç» ocupa o lugar do ponto e vírgula americano, por isso o seu code é Semicolon. Evita keyCode e which em código novo: estão obsoletos, os valores variam entre navegadores na pontuação (o Firefox envia 59 para o ponto e vírgula, onde o Chrome envia 186) e não distinguem o Shift esquerdo do direito nem as duas teclas Enter. Continua a ser útil conhecê-los para manter código antigo, e é por isso que esta ferramenta os mostra.
Sobre o snippet
O listener gerado corresponde exatamente à tecla que premiste, incluindo Ctrl, Alt e Meta. Para caracteres imprimíveis comparados com key, o Shift fica de fora porque já faz parte do valor: Shift+1 dá "!" num esquema dos EUA. Quando premes um modificador sozinho, o snippet não repete a respetiva flag. Lembra-te de que metaKey é a tecla Cmd no Mac e a tecla Windows num PC, por isso os atalhos multiplataforma testam normalmente event.ctrlKey || event.metaKey.
Perguntas frequentes
Porque é que o keyCode mostra o mesmo número para caracteres diferentes?
O keyCode identifica a tecla, não o carácter. O algarismo 1 e «!» partilham o 49, e «a» e «A» partilham o 65. Lê key para obteres o carácter real.
Porque é que uma tecla aparece com um code de outra letra?
O code dá nome às teclas segundo a sua posição num teclado US QWERTY. A tecla com a etiqueta A num teclado francês fica onde está o Q num teclado americano, por isso o seu code é KeyQ enquanto o key é «a».
O que significa «Dead» em event.key?
É uma tecla morta, como o acento agudo, o til ou o acento circunflexo do teclado português, que espera pela tecla seguinte para formar uma letra acentuada. O carácter final chega com o evento de tecla seguinte ou com o evento input de um campo de texto.
Porque é que event.repeat diz sim?
Estás a manter a tecla premida e o sistema operativo está a enviar repetições automáticas. Verifica event.repeat para as ignorares, por exemplo para disparares um atalho só uma vez.
O que escrevo fica registado ou é enviado?
Não. Os eventos de teclado são lidos por esta página no teu navegador e nunca são enviados para lado nenhum. O histórico desaparece quando recarregas ou sais da página.
Ferramentas relacionadas
- Testar teclado Teste de teclado gratuito que acende cada tecla premida, mostra os valores key, code e location, mede o rollover e deteta teclas presas.
- Testador de regex Testa expressões regulares JavaScript em tempo real, com correspondências destacadas, grupos de captura, substituição e explicação de cada parte.
- Explorador de AST JavaScript Cola JavaScript e explora a árvore sintática abstrata (ESTree, gerada pelo Acorn) no navegador. Clica nos nós para ver o código e exporta a AST em JSON.