Buscador de códigos de tecla JavaScript

Pulsa cualquier tecla del teclado para ver sus propiedades de evento JavaScript.

Pulsa una tecla…

30 años de historia de eventos de teclado en JavaScript

Ninguna tecla pulsada por ahora

Cómo funciona

  1. Pulsa una tecla: haz clic en la zona de entrada y pulsa cualquier tecla, letras, cifras, teclas de función, flechas, modificadoras o teclas especiales.
  2. Lee los códigos de tecla: la herramienta muestra al instante los valores event.key, event.code, event.keyCode (heredado) y charCode de la tecla.
  3. Usa en tu código: copia los valores exactos necesarios para tus escuchadores de eventos de teclado o tus implementaciones de atajos.

¿Por qué usar el detector de keycode?

Los eventos de teclado en JavaScript exponen varias propiedades distintas (key, code, keyCode, charCode y which) y saber cuál usar y contra qué valor comparar es sistemáticamente delicado. El detector de KeyCode elimina las conjeturas permitiéndote pulsar una tecla y ver de inmediato todas sus propiedades de evento. Valioso para construir atajos de teclado, gestionar teclas especiales, implementar hotkeys y depurar escuchadores de eventos de teclado.

Funcionalidades

Preguntas frecuentes

¿Cuál es la diferencia entre event.key y event.keyCode?

event.key es la norma moderna, devuelve una cadena legible como «ArrowLeft» o «Enter». event.keyCode es un código numérico heredado (obsoleto pero aún admitido). Usa event.key para código nuevo; event.keyCode para mantener compatibilidad con navegadores antiguos.

¿Cómo detectar Ctrl+S u otras combinaciones de teclas?

Las combinaciones de teclado usan event.key combinado con comprobaciones de modificadores: if (event.ctrlKey && event.key === "s"). Pulsa Ctrl+S en esta herramienta para ver todos los valores y reproduce la misma condición en tu escuchador de eventos.

¿Por qué algunas teclas muestran el mismo keyCode?

Los valores de keyCode no se han estandarizado y algunas teclas comparten códigos según el contexto. event.code es más fiable, identifica la posición física de la tecla (p. ej. «KeyA») independientemente de la distribución del teclado, mientras que event.key refleja el carácter producido por esa tecla.

30 años de historia de eventos de teclado en JavaScript

Los eventos de teclado tienen una historia notoriamente caótica en el DOM. Netscape Navigator 2 (1995) introdujo los manejadores originales onkeydown, onkeypress y onkeyup con una propiedad numérica keyCode, que no tenía especificación; los navegadores inventaron cada uno sus propios valores. Internet Explorer 4 (1997) implementó su propia variante con event.keyCode como única propiedad, mientras que Netscape mantuvo event.which. DOM Level 2 Events (W3C, noviembre 2000) estandarizó el flujo de eventos (captura/burbuja) pero explícitamente dejó de lado los eventos de teclado porque los vendedores no podían ponerse de acuerdo. El resultado: los desarrolladores escribieron código como e.keyCode || e.which durante más de una década. DOM Level 3 Events (W3C Working Draft 2003, Recomendación 2018) finalmente introdujo el moderno event.key (carácter Unicode o tecla nombrada como «ArrowLeft») y event.code (posición física de tecla como «KeyA», independiente del layout), junto con la deprecación de keyCode, charCode y which. La especificación UI Events (W3C, en curso) es el hogar moderno de este trabajo. Los navegadores se pusieron al día gradualmente: Chrome 51 (mayo 2016), Firefox 47 (junio 2016), Safari 10.1 (marzo 2017) todos enviaron soporte para event.code. El evento legacy keypress está deprecado en favor de los eventos beforeinput e input.

Las 5 propiedades, decodificadas

Dónde la búsqueda de keycode realmente importa

Errores comunes en manejo de eventos de teclado

Más preguntas frecuentes

¿Por qué mi manejador de tecla no se dispara cuando el usuario tiene teclado no-US?

Casi siempre porque estás revisando event.key para un carácter que solo existe con Shift en ese layout. En un teclado alemán QWERTZ, «/» es Shift+7 (no su propia tecla); en AZERTY francés, los dígitos 0-9 se tecletean con Shift+la-fila-de-arriba. Usa event.code (tecla física) para atajos basados en posición, o event.key para atajos basados en contenido (donde realmente quieres el carácter que el usuario acaba de teclear).

¿Cómo manejo Cmd+K / Ctrl+K consistentemente entre plataformas?

El idioma estándar: if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { e.preventDefault(); openPalette(); }. En macOS, e.metaKey es la tecla Cmd; en Windows/Linux, e.ctrlKey es lo que los usuarios esperan. Acepta ambos. Siempre preventDefault porque el navegador liga Cmd+K a «foco barra de direcciones» en algunos navegadores. Añade !e.repeat para evitar dispararse en mantenimiento de tecla.

¿Puede JavaScript detectar pulsaciones globales fuera de la página?

No, y esto es por diseño por seguridad. El navegador solo dispara eventos de teclado para la página o elemento enfocado. Las extensiones de navegador pueden escuchar con alcance más amplio usando la API chrome.commands. Las apps nativas en Electron, Tauri, etc., pueden usar hooks globales a nivel de SO. Las apps bancarias y 2FA dependen de esta aislación: una pestaña maliciosa no puede keylogger tu gestor de contraseñas.

¿Cuál es la forma correcta de detectar «recién presionado» vs «siendo mantenido»?

Para toggles, revisa !e.repeat en el manejador keydown: el primer evento tiene repeat: false, eventos subsecuentes de auto-repetición tienen repeat: true. Para acciones continuas (movimiento de juego), rastrea estado de teclas en un Set: añade en keydown, remueve en keyup, luego en tu bucle de renderizado revisa keysHeld.has("KeyW"). Esto desacopla la entrada del framerate y maneja múltiples teclas simultáneas (moverse + saltar).

¿Se envía algo a un servidor cuando presiono teclas aquí?

No. Los eventos de tecla son capturados localmente por JavaScript y mostrados en esta página sin ninguna petición de red. Abre la pestaña Network en DevTools, teclea; verás cero tráfico saliente. Seguro para probar en cualquier contexto, incluyendo descubrir lo que producen contraseñas o atajos sensibles en tu teclado.

Herramientas relacionadas