¿De qué va?
Un mini-proyecto para practicar eventos de teclado en la web. Al presionar una tecla, la página muestra sus datos más útiles (p. ej., key, code, keyCode —este último está deprecado—, además de modificadores como ctrlKey). Es perfecto para entender qué envía el navegador cuando el usuario interactúa con el teclado (o con lectores de pantalla que emulan key events).
Qué aprenderás
-
Escuchar keydown a nivel de ventana.
-
Diferencias entre event.key, event.code y event.keyCode (este último solo por compatibilidad).
-
Leer modificadores: ctrlKey, shiftKey, altKey, metaKey.
-
Mostrar datos en una tarjeta clara y responsiva (CSS Grid + utilidades).
Código (3 archivos)
1) index.html
2) style.css
3) script.js
¿Cómo funciona (y por qué así)?
-
keydown: dispara tan pronto se presiona una tecla (antes que keypress o keyup), ideal para leer datos sin esperar a que se “suelte”.
-
event.key: es el valor legible para humanos (“a”, “Enter”, “ArrowLeft”, “ñ”). Cambia con el layout del teclado.
-
event.code: es el código físico de la tecla (“KeyA”, “Enter”, “ArrowLeft”), estable respecto al layout (útil si necesitas atajos por posición).
-
event.keyCode: deprecado (se mantiene por compatibilidad). Aún se usa en ejemplos viejos; aquí lo mostramos solo informativo.
-
Modificadores y otros:
-
event.location: dónde está la tecla (p. ej., numpad).
-
event.repeat: si el sistema la está repitiendo por mantenerla presionada.
-
ctrlKey, altKey, shiftKey, metaKey: si ese modificador estaba activo.
-
Accesibilidad & UX
-
Anunciamos cambios con aria-live="polite" y mantenemos el foco en el contenedor principal.
-
Evitamos que Space o ArrowUp/Down hagan scroll poniendo preventDefault() para esos casos.
-
El diseño es responsivo con Grid y tipografías que escalan con clamp().
Ejemplo
Finalmente aquí hay un ejemplo de la implementación de este proyecto.
Extra: Personaliza en 30 segundos
-
Dark/light: cambia los colores --bg, --card, --txt.
-
Más campos: agrega otro <article> con event.which (también legado) o la hora del evento (Date.now()).
-
Copiar al portapapeles: pon un botón que copie event.code para pegarlo en tus atajos.a
Event KeyCodes