kb-mouse-map · git:20260912.c744f27 · 2026-09-12 · sha256 34280c94e4a9723a

kb-mouse-map git:20260912.c744f27A

Immutable. This exact content never changes and is served at /api/v1/blob/34280c94e4a9723a.

---
name: kb-mouse-map
description: Map keyboard and mouse roles per game type. Mouse aims, clicks, or does neither. Keyboard walks or is a button box. Use when the user mentions WASD, keybinds, or mouse look.
---

# Keyboard × mouse map

Ask the genre column first. Do not copy a finished title's default.ini into the rules.

| Column | Keyboard does | Mouse does | Do not |
|---|---|---|---|
| fighter-plane | arrows / WASD = walk + motion; UIO/JKL = buttons | optional UI only | mouse-aim the punch |
| fps-look | WASD move; space jump; shift sprint | look + fire (LMB) + alt-fire (RMB) | bind look to keys unless accessibility |
| tps-orbit | WASD move relative to camera | orbit camera + lock optional | let LMB be both attack and camera drag |
| twin-stick-kb | WASD move | mouse aim independently | snap aim to walk |
| click-world | hotkeys for verbs | select, move-order, camera-drag | require hold-W to walk |
| race-line | arrows / WASD steer + accel | look-behind or UI, not steer | mouse-steer unless a column says so |
| platform-side | arrows / WASD run + jump | unused in play, UI only | mouse-click to jump |
| menu-heavy | confirm / cancel / skip | click widgets | fight and menu on the same click |
| build-sim | hotkeys + camera WASD | pick tiles, rotate, confirm | hide every verb behind a right-click tree |

## Split of labor

1. **Look** and **move** are two axes. If mouse owns look, keyboard owns move. If keyboard owns motion-gestures (fighter), mouse does not own look.
2. **LMB** is one job in play: fire, or confirm-click, or attack. Never fire + orbit-drag on the same press.
3. **RMB** is the other job: aim-down, camera-drag, or cancel. Publish it.
4. **WASD** is either world movement *or* fight-plane movement. Switching mid-match is a bug.
5. Numpad / extra mouse buttons are extras. Core verbs must work with WASD + mouse + Space + LMB + RMB + Esc.
6. Rebind keeps the grammar (`input-design`). Swapping W and Jump is legal; making Jump also Confirm is not.
7. Accessibility: hold-to-toggle sprint, mouse-keys, and remap of look-to-stick must not change cancel windows.

## Street-fighter-like 3D (worked example, not a clone)

```
column: fighter-plane
W/S or Up/Down   = jump / crouch   (plane, not free 3D fly)
A/D or Left/Right = walk the plane
U I O / J K L     = punches / kicks
mouse             = menus + replay only
```

If they later pick full-3D sidestep, switch column to a walk-strafe keyboard and give mouse *camera only* or no mouse look. Do not keep motion-gestures and mouse-aim on the same actor.

## Accept

A player can say in one sentence what WASD does and what the mouse does. Unplugging the mouse still lets a fighter walk and attack. Unplugging the keyboard still lets an FPS look around (but not walk).