Element: evento keydown
=======================

El evento **`keydown`** se activa cuando se presiona una tecla.

A diferencia del evento obsoleto `keypress` (en-US), el evento `keydown` se activa para todas las teclas, independientemente de si producen un valor de carácter.

Los eventos `keydown` y `keyup` proporcionan un código que indica qué tecla se presiona, mientras que `keypress` indica qué carácter se ingresó. Por ejemplo, una "a" minúscula será reportada como 65 por `keydown` y `keyup`, pero como 97 por `keypress`. Todos los eventos notifican una "A" mayúscula como 65.

Los eventos de teclado solo son generados por `<input>`, `<textarea>`, `<summary>` y cualquier cosa con el atributo `contentEditable` o `tabindex`. Si no se detectan, burbujean por el árbol DOM hasta llegar a `Document`.

Desde Firefox 65, los eventos `keydown` y `keyup` ahora se activan durante la composición del IME (en-US), para mejorar la compatibilidad entre navegadores para los usuarios de CJKT (error 354358 en Firefox). Para ignorar todos los eventos `keydown` que forman parte de la composición, haga algo como esto (229 es un valor especial establecido para un `keyCode` relacionado con un evento que ha sido procesado por un IME):


```js
eventTarget.addEventListener("keydown", (event) => {
  if (event.isComposing || event.keyCode === 229) {
    return;
  }
  // hacer algo
});
```

Sintaxis
--------

Utilice el nombre del evento en métodos como `addEventListener()`, o establezca una propiedad de controlador de eventos.


```js
addEventListener("keydown", (event) => {});

onkeydown = (event) => {};
```

Tipo de evento
--------------

`KeyboardEvent`. Hereda de `Event`.

Event

UIEvent

KeyboardEventPropiedades del evento
----------------------

*Esta interfaz también hereda las propiedades de sus padres, `UIEvent` y `Event`.*

`KeyboardEvent.altKey` (en-US) Read only 

Devuelve un valor booleano que es `true` si la tecla `Alt` (`Opción` ó `⌥` en macOS) estaba activa cuando se generó el evento.

`KeyboardEvent.code` (en-US) Read only 

Devuelve una cadena con el valor del código de la tecla física representada por el evento.

**Advertencia:** Esto ignora el diseño del teclado del usuario, de modo que si el usuario presiona la tecla en la posición "Y" en un diseño de teclado QWERTY (cerca del medio de la fila sobre la fila de inicio), esto siempre devolverá "KeyY", incluso si el el usuario tiene un teclado QWERTZ (lo que significaría que el usuario espera una "Z" y todas las demás propiedades indicarían una "Z") o un diseño de teclado Dvorak (donde el usuario esperaría una "F"). Si desea mostrar las pulsaciones de teclas correctas al usuario, puede usar `Keyboard.getLayoutMap()` (en-US).

`KeyboardEvent.ctrlKey` (en-US) Read only 

Devuelve un valor booleano que es `true` si la tecla `Ctrl` estaba activa cuando se generó el evento.

`KeyboardEvent.isComposing` (en-US) Read only 

Devuelve un valor booleano que es `true` si el evento se activa después de `compositionstart` y antes de `compositionend`.

`KeyboardEvent.key` (en-US) Read only 

Devuelve una cadena que representa el valor clave de la tecla representada por el evento.

`KeyboardEvent.locale` Read only 

Devuelve una cadena que representa una cadena de configuración regional que indica la configuración regional para la que está configurado el teclado. Esta puede ser la cadena vacía si el navegador o el dispositivo no conocen la configuración regional del teclado.

**Nota:** Esto no describe la configuración regional de los datos que se ingresan. Un usuario puede estar usando un diseño de teclado mientras escribe texto en un idioma diferente.

`KeyboardEvent.location` (en-US) Read only 

Devuelve un número que representa la ubicación de la tecla en el teclado u otro dispositivo de entrada.

`KeyboardEvent.metaKey` Read only 

Devuelve un valor booleano que es `true` si la tecla `Meta` (en teclados Mac, la tecla `⌘ Command`; en teclados Windows, la tecla Windows (`⊞`)) estaba activo cuando se generó el evento.

`KeyboardEvent.repeat` (en-US) Read only 

Devuelve un valor booleano que es `true` si la tecla se mantiene presionada de manera que se repite automáticamente.

`KeyboardEvent.shiftKey` (en-US) Read only 

Devuelve un valor booleano que es `true` si la tecla `Shift` estaba activa cuando se generó el evento.

Ejemplos
--------

### Ejemplo con addEventListener

Este ejemplo registra el valor `KeyboardEvent.code` (en-US) cada vez que presiona una tecla dentro del elemento `<input>`.


```html
<input placeholder="Haga clic aquí, luego presione una tecla." size="40" />
<p id="log"></p>
```



```js
const input = document.querySelector("input");
const log = document.getElementById("log");

input.addEventListener("keydown", logKey);

function logKey(e) {
  log.textContent += ` ${e.code}`;
}
```

### Equivalente con onkeydown


```js
input.onkeydown = logKey;
```

Especificaciones
----------------

| Specification |
| --- |
| UI Events # event-type-keydown |
| HTML Standard # handler-onkeydown |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Véase también
-------------

* `input`
* `keypress` (en-US)
* `keyup`