Códigos de tecla numéricos en JavaScript

Cada tecla numérica con su event.key, event.code y el obsoleto keyCode. Los dígitos de la fila superior usan keyCode 48–57; los del teclado numérico, 96–105 y event.code Numpad0–Numpad9.

Actualizado el

Teclaevent.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

Detectar un dígito de cualquiera de las dos filas

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

En los teclados AZERTY franceses, la fila superior escribe símbolos (&, é, " …) sin Shift, así que e.key no es un dígito ahí; otra razón para comprobar e.key en lugar de asumir posiciones.

Preguntas frecuentes

¿event.key es en mayúscula o minúscula en el caso de number?
Las letras siguen a Shift y Bloq Mayús: event.key es “a” normalmente y “A” con Shift. event.code sigue siendo KeyA en ambos casos.
¿Los códigos de tecla cambian con la distribución del teclado?
event.key cambia según la distribución (en un teclado AZERTY francés, la posición de la A escribe Q); event.code siempre nombra la tecla física.
¿Aún debo usar keyCode?
No, está obsoleto. Usa event.key para caracteres y event.code para posiciones.