Códigos das teclas numéricas em JavaScript

Cada tecla numérica com seu event.key, event.code e o keyCode obsoleto. Os dígitos da linha superior usam keyCode 48–57; os dígitos do teclado numérico, 96–105 e event.code Numpad0–Numpad9.

Atualizado em

Keyevent.keyevent.codekeyCode
00Digit0 / Numpad048 / 96
11Digit1 / Numpad149 / 97
22Digit2 / Numpad250 / 98
33Digit3 / Numpad351 / 99
44Digit4 / Numpad452 / 100
55Digit5 / Numpad553 / 101
66Digit6 / Numpad654 / 102
77Digit7 / Numpad755 / 103
88Digit8 / Numpad856 / 104
99Digit9 / Numpad957 / 105

Detectando um dígito em qualquer linha

document.addEventListener('keydown', (e) => {
  if (/^[0-9]$/.test(e.key)) {
    console.log('digit', Number(e.key)); // top row or numpad
  }
});

Em teclados AZERTY franceses, a linha superior digita símbolos (&, é, " …) sem Shift, então e.key não é um dígito ali — mais um motivo para testar e.key em vez de presumir posições.

Perguntas frequentes

O event.key de números muda entre maiúsculas e minúsculas?
As letras seguem Shift e Caps Lock: o event.key é “a” normalmente e “A” com Shift. O event.code continua KeyA em ambos os casos.
Os códigos das teclas mudam com o layout do teclado?
O event.key muda conforme o layout (em um teclado AZERTY francês, a posição A digita Q); o event.code sempre nomeia a tecla física.
Ainda devo usar keyCode?
Não — ele está obsoleto. Use event.key para caracteres e event.code para posições.