# bindKey (Compartido)

> Asocia una tecla a una función o a un comando. La función se ejecuta cuando la tecla se pulsa, se suelta o ambas.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Función Lua
- **Lado**: Compartido
- **Categoría**: Teclado
- **URL**: https://wiki.mymp.gg/es/bindKey

## Sintaxis

```lua
bool bindKey(player thePlayer, string key, string keyState, function|string handler, any ...)
```

## Parámetros

| Nombre | Tipo | Descripción |
| --- | --- | --- |
| `thePlayer` | `player` | Solo en el servidor: el jugador al que pertenece el bind. En el cliente, no pases este argumento. |
| `key` | `string` | El nombre de la tecla, sin distinguir mayúsculas: `a` a `z`, `0` a `9`, `F1` a `F12`, `mouse1` a `mouse5`, `mouse_wheel_up`, `mouse_wheel_down`, `arrow_l`, `num_0`, `space`, `enter`, `lshift` y otras. |
| `keyState` | `string` | Cuándo dispararse: `"down"` al pulsar, `"up"` al soltar o `"both"` en ambos casos. |
| `handler` | `function\|string` | La función que se llama o el nombre del comando que se ejecuta. |
| `...` | `any` | Con una función, argumentos extra que se le pasan. Con un comando, un texto con los argumentos del comando. |

## Retorno

`true` si se creó el bind. `false` si ya existía o si el comando está vacío.

La función recibe `(tecla, estado, ...)`, con el jugador delante en el servidor, y el estado es `"down"` o `"up"`. Un comando asociado en el cliente se ejecuta como si se escribiera en la consola; en el servidor, ejecuta los handlers de `addCommandHandler` con el jugador. Un bind del servidor solo se dispara cuando el cliente avisa de la tecla, cosa que no hace si se canceló `onClientKey`. Los binds de un recurso desaparecen cuando se detiene, y los de un jugador cuando se va.

## Ejemplo

```lua
local function toggleEngine(player, key, state)
    local vehicle = getPedOccupiedVehicle(player)
    if vehicle then
        setVehicleEngineState(vehicle, not getVehicleEngineState(vehicle))
    end
end

addEventHandler("onPlayerJoin", root, function()
    bindKey(source, "k", "down", toggleEngine)
end)
```

## Ver también

- [unbindKey (Compartido)](https://wiki.mymp.gg/es/unbindKey.md): Quita binds que este recurso creó en una tecla.
- [isKeyBound (Compartido)](https://wiki.mymp.gg/es/isKeyBound.md): Dice si este recurso asoció una función a una tecla.
- [addCommandHandler (Compartido)](https://wiki.mymp.gg/es/addCommandHandler.md): Registra una función que se ejecuta cuando se escribe el comando en la consola. Los argumentos llegan como textos separados por espacios.
- [onClientKey (Cliente)](https://wiki.mymp.gg/es/onClientKey.md): Se dispara cuando se pulsa o se suelta una tecla o un botón del ratón. Cancelar el evento impide los binds de esa tecla y, al pulsar, oculta la tecla al juego mientras se mantiene.
