# bindKey (Compartilhado)

> Liga uma tecla a uma função ou a um comando. A função roda quando a tecla é apertada, solta ou os dois.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Função Lua
- **Lado**: Compartilhado
- **Categoria**: Teclado
- **URL**: https://wiki.mymp.gg/pt/bindKey

## Sintaxe

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

## Parâmetros

| Nome | Tipo | Descrição |
| --- | --- | --- |
| `thePlayer` | `player` | Só no servidor: o jogador dono do bind. No cliente, não passe este argumento. |
| `key` | `string` | O nome da tecla, sem diferença entre maiúsculas e minú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` e outras. |
| `keyState` | `string` | Quando disparar: `"down"` ao apertar, `"up"` ao soltar ou `"both"` nos dois. |
| `handler` | `function\|string` | A função chamada ou o nome do comando a rodar. |
| `...` | `any` | Com uma função, argumentos extras passados a ela. Com um comando, um texto com os argumentos do comando. |

## Retorno

`true` se criou o bind. `false` se ele já existia ou se o comando está vazio.

A função recebe `(tecla, estado, ...)`, com o jogador na frente no servidor, e o estado é `"down"` ou `"up"`. Um comando ligado no cliente roda como se fosse digitado no console; no servidor, roda os handlers de `addCommandHandler` com o jogador. Um bind do servidor só dispara quando o cliente avisa da tecla, o que não acontece se `onClientKey` foi cancelado. Os binds de um recurso somem quando ele para, e os de um jogador quando ele sai.

## Exemplo

```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)
```

## Veja também

- [unbindKey (Compartilhado)](https://wiki.mymp.gg/pt/unbindKey.md): Desfaz binds que este recurso criou numa tecla.
- [isKeyBound (Compartilhado)](https://wiki.mymp.gg/pt/isKeyBound.md): Diz se este recurso ligou uma função a uma tecla.
- [addCommandHandler (Compartilhado)](https://wiki.mymp.gg/pt/addCommandHandler.md): Registra uma função que roda quando o comando é digitado no console. Os argumentos chegam como textos separados por espaço.
- [onClientKey (Cliente)](https://wiki.mymp.gg/pt/onClientKey.md): Disparado quando uma tecla ou botão do mouse é apertado ou solto. Cancelar o evento impede os binds dessa tecla e, no aperto, esconde a tecla do jogo enquanto ela fica apertada.
