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.