Quando um KeyboardEvent
dispara, você pode testar qual tecla foi pressionada porque esse evento contém informações nas quais você pode escrever a lógica.
document.addEventListener("keydown", function(event) ( console.log(event.which); ))
Por exemplo, pressionando “a”, você obterá 65
. Aparentemente, é melhor escrever uma lógica contra a qual, já que keyCode e charCode são complicados:
A propriedade event.which normaliza event.keyCode e event.charCode. Recomenda-se assistir event.which para entrada de tecla do teclado.
E:
Em um evento de pressionamento de tecla, o valor Unicode da tecla pressionada é armazenado na propriedade keyCode ou charCode, nunca em ambos. Se a tecla pressionada gerar um caractere (por exemplo, 'a'), charCode é definido com o código desse caractere, respeitando a caixa das letras. (ou seja, charCode leva em consideração se a tecla shift está pressionada). Caso contrário, o código da tecla pressionada é armazenado em keyCode.
Ferramenta de teste
Veja o testador Pen event.keyCode de Chris Coyier (@chriscoyier) no CodePen.
Valores de código-chave
Aqui está uma tabela que contém os valores de event.which
.
|
|
|
Zell Liew notou que 3 desses códigos-chave eram diferentes no Firefox do resto dos navegadores
;
é 59 no Firefox, mas 186 em outros navegadores.=
é 61 no Firefox, mas 187 em outros navegadores.-
é 173 no Firefox, mas 189 em outros navegadores.
Observação importante: esses valores de código-chave são válidos apenas durante os eventos in keydown
e keyup
. No Mac, os keypress
eventos fornecem um conjunto de códigos completamente diferente.
Por exemplo:
Chave | event.which em keydown | event.which no teclado |
uma | 65 | 97 |
b | 66 | 98 |
c | 67 | 99 |