Skip to main content

Controls & shortcuts

Every player key is an InputMap action, so it shows up — and can be rebound — in Settings → Controls. The keybind menu (ui/menu_config/menu_config.gd) builds its list automatically from InputMap.get_actions() and saves the player's choices to user://inputs.map. There is no hard-coded key in gameplay code: inputs are read with event.is_action_pressed("…") / Input.is_action_pressed("…").

Main shortcuts (default keys)

Several keys are contextual — the same key does one thing on foot and another in a vehicle.

DefaultActionOn footDriving a vehicle
EactionPick up / drop a prop, enter a seat
YexitLeave the vehicle
Ltoggle_flashlight / vehicle_lightsTorch on/offHead lights on/off
Spacejump / brakeJumpBrake — hold at low speed = hand brake
Rvehicle_resetFlip the vehicle upright
2zapetteToggle the admin cleanup tool ("Zapette")(same)

Movement (move_forward/back/left/right), sprint, crouch, interact, mining (toggle_tool, aim, perforate), chat (toggle_chat, write_in_chat) and pause are actions too — see the full list (and rebind them) in Settings → Controls.

Carrying, cargo & lights

A crate in a vehicle bed is grabbed with E (the carry prompt shows [E] Carry). While carrying, look up / down to raise or lower the held object — to set it on the ground or stack it on a shelf — and it drops on its own if you drag it out of reach (e.g. left stuck behind a wall). On the in-cab HUD the active shortcuts are listed live (e.g. [L] lights, [Space] brake).

Chat

The message log is visible by default; F12 (toggle_chat) hides/shows the whole panel. The input bar (channel selector + text field) stays hidden until you write.

To write, press Enter (write_in_chat): the input bar appears; press Enter again to send the message and close it. Escape (or a mouse click) closes the input without sending — Escape here cancels typing rather than opening the pause menu.

While typing, Tab cycles between the channels you can post to (today only the global channel — group/alliance/region come later). Tab and Escape here are fixed text-field keys, like in any chat box, so — unlike toggle_chat and write_in_chat — they are not listed in Settings → Controls and cannot be rebound.

Adding a shortcut (for developers)

Always add a new key as an InputMap action — never a raw keycode. A raw event.keycode == KEY_X is invisible to the settings menu and can't be rebound.

  1. Add the action in Project Settings → Input Map (or project.godot [input]), with a default key. Name it readably — the menu label is the action name upper-cased with _ → spaces.
  2. Read it with event.is_action_pressed("my_action") (events) or Input.is_action_pressed("my_action") (polling).

It then appears in Settings → Controls and is rebindable + persisted, with zero menu code.

Exception: dev/bench tools

Bench and debug-only keys (e.g. the test bench's T/N, F4, F10) may stay raw keycodes — they are developer tools, not part of the player's control settings.