# CyberM.input — client runtime

Runs inside the game process. Reads and presentation are local; anything that changes shared state has to go through the server.

2 functions.

## isCaptured

```lua
CyberM.input.isCaptured()
```

`GAME` — Requires a live game instance.

Whether another WebUI currently owns keyboard input.

Contextual actions should become inert while this is true so chat and menu typing cannot activate gameplay.

Returns: `boolean`, `reason when permission is refused`

Registered in `ResourceHost.cpp` (line 6758) as `LuaInputCaptured`.

## isDown

```lua
CyberM.input.isDown(key)
```

`GAME` — Requires a live game instance.

Whether an allowlisted contextual action key is currently held.

Requires `input.actions`. Supported keys are A-Z, 0-9, SPACE, ENTER/RETURN, and arrows. Prefer a press edge or hold timer over firing every frame.

| Parameter | Type | Required | Default |
|---|---|---|---|
| `key` | `string` | required | — |

Returns: `boolean`, `reason when the key or permission is refused`

Registered in `ResourceHost.cpp` (line 6757) as `LuaInputKeyDown`.

