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.
Buscador de Keycodes JavaScript
Pulsa cualquier tecla y mira al instante todas las propiedades del evento de teclado, con un fragmento keydown listo para copiar para tus atajos.