Skip to content

Controls

These are the shipped default bindings. Tutorials and lessons show the current binding through input_hint(...), so rebinding an action updates both the control and the on-screen hint.

Movement

Action Default
Forward W
Backward S
Left A
Right D
Yaw left Q
Yaw right E
Speed boost Shift

The same movement set applies to walking and to driving. A vehicle first needs to be possessed; selection alone does not send input to it.

Actions

Action Default
Context action F
Thrust / brake Space
Release G
Switch mode V
Pause P
Cancel Backspace or Escape
Delete selection Delete

Space is both thrust and brake depending on the controlled vehicle and mode. The active control mode decides which effect applies.

Camera and selection

Action Default
Look / orbit Hold right mouse button and move
Select Left click
Extend selection Shift + left click
Remove from selection Ctrl + left click
Drill into an assembly Alt + Shift + left click
Add route point Alt + left click
Route context menu Right click

Middle-button look is available when configured. The default look button is the right mouse button.

Workbench shortcuts

Action Default
Find navigation target Ctrl + P
Find action Ctrl + Shift + P
Navigate back Alt + ←
Navigate forward Alt + →
Save document Ctrl + S
Save as Ctrl + Shift + S
Close document Ctrl + W
New document Ctrl + N
Open file Ctrl + O
Compile F5
Undo Ctrl + Z
Redo Ctrl + Shift + Z or Ctrl + Y

Rebinding

Open Settings → Keybindings and change the action, not the physical key in a tutorial. The authored defaults are the input-bindings document discovered by kind lunco.input-bindings.v1; in a source checkout that document is assets/config/keybindings.json. Your edits persist in the input_bindings section of settings.json, not in the authored asset.

A lesson that uses input_hint("forward") displays the effective binding. A lesson that hardcodes a key name is not using the controller-owned binding contract.

A Twin can displace a conflicting lower-priority physical binding while it is active. The displaced action and the winning action are reported in Recent Events; your global preference stays stored and returns when the Twin closes.

Gamepad and alternate input

The input layer maps semantic intents, so an alternate device or a remapped keyboard supplies the same actions. The UI and lessons consume the intent, not the raw key. If an added device does not respond, check that it is mapped to the same intent in the input settings.