Ported RP412's bindings design and made it the DEFAULT: the letter and number rows are the MFD button banks laid out WHERE THEY SIT ON THE PANEL, flight moves to the numpad so the board stays free, F1-F12 are the map's two columns, and G/B stay unbound as the physical gap between the lower clusters. Expressed in BT's OWN grammar (slew/deflect/set, the Turn channel) -- bindings.txt is a documented compatibility surface and was not touched. Coverage: 61 of 72 addresses on the keyboard, and the 11 absent ones are exactly those the pod never wired (0x16/0x17/0x1E/0x1F column gaps, 0x38-0x3E intercom/door). All 72 stay clickable on the panel. It lands on BT's addresses unreasonably well: 1-4 + QWER are the ENTIRE coolant system (Condensers 1-6, flush, balance), F6/F7 the display and control-mode cycles, F9-F12 Generators A-D, F4 the crouch button reconstructed earlier today. THE DELIBERATE COST. A bound key is removed from the authentic 1995 typed-hotkey channel so it cannot double-dispatch, and this board binds nearly everything -- so 5 (Quad page), z (Eng1), t/y/u/i/o (pilot select) and +/- (target zoom) are given up. Unbind a key to get its 1995 meaning back. Documented in the file header, the markdown and the page. NEW RULE: A BINDINGS ROW WINS OVER A BUILT-IN CONVENIENCE KEY (PadRIO::KeyHasBinding). V and J/K/L are board buttons now, and those polls read GetAsyncKeyState directly -- without this they would have fired BOTH the button and the built-in. View toggle lives on BACKTICK alone. CONTROLS.MAP rewritten to mirror the board so glass/pod/dev still feel identical (the 2026-07-21 settlement): 90 bindings, 0 parse complaints. HAT LABELS CORRECTED [T1]. INPUT_PATH_AUDIT flagged 0x41-0x44 and was right. Settled from the streamed mapping (BT_CTRLMAP_LOG): elem 66 -> subsys 17 attrID 14, i.e. 0x42 is the TORSO subsystem, not a look; 0x44/0x43/0x41 are the mapper's LookLeft/LookRight/LookBehind (attrID 10/11/12). The .RES has no "TORSO CENTER" string -- its names are LookBehind/Down/Forward/Left/Right -- so the audit's wording was loose but its substance correct. Swept L4GLASSWIN, L4PADPANEL and L4VB16. docs/CONTROLS.html: interactive keyboard (hover a key for its address and meaning, MFD clusters outlined), pad diagram, panel map, the under-glass press-target figure, radar placement thumbnails and the environ.ini table -- modelled on RP412's page, rewritten for BT's addresses and hazards. mkdist wraps the fragment in a doctype/charset shell and ships it beside CONTROLS.txt. Verified: bindings.txt regenerates and loads (74 keys, 0 errors); CONTROLS.MAP 90 bindings, 0 errors; 72/72 panel addresses still dispatch; surround / exploded / dock / pod / dev boot and simulate with zero faults. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
105 lines
4.9 KiB
Markdown
105 lines
4.9 KiB
Markdown
# BattleTech 4.11 — controls reference
|
||
|
||
Two ways to fly: the **keyboard/pad** (the ~25 core actions) and the **cockpit panel**, where
|
||
every one of the pod's 72 illuminated buttons is mouse-clickable exactly where it sat in the
|
||
cabinet. Left-click presses; **right-click latches** a button held.
|
||
|
||
Rebind keys in `content\bindings.txt` (delete it to regenerate the defaults).
|
||
Cockpit layout and display sizes live in `content\environ.ini` (likewise self-documenting).
|
||
|
||
---
|
||
|
||
## Keyboard — the keyboard IS the button board
|
||
|
||
The letter and number rows are the MFD button banks, laid out where they sit on the panel.
|
||
Flight lives on the number pad so the board stays free.
|
||
|
||
### Flight — the number pad
|
||
|
||
| Key | Action | | Key | Action |
|
||
|---|---|---|---|---|
|
||
| NumPad 8 / 2 | torso aim up / down | | NumPad 7 / 9 | left / right pedal |
|
||
| NumPad 4 / 6 | torso twist left / right | | NumPad 5 | all stop |
|
||
| NumPad 0, Space | main trigger | | NumPad 1 / 3 / . | pinky / middle / upper |
|
||
| Shift / Ctrl | throttle up / down (the lever sticks) | | Alt | reverse thrust |
|
||
| ← ↓ → | look left / behind / right | | ↑ | torso centre |
|
||
| ` | cockpit / chase camera | | − / = *(see below)* | — |
|
||
|
||
**You spawn in BASIC control mode.** In BASIC the stick steers and the pedals do nothing.
|
||
Press **F7** once for MID, where the pedals steer and the stick twists the torso — the full
|
||
pod experience. If "turning doesn't work", this is why.
|
||
|
||
### The panel — letter and number rows
|
||
|
||
```
|
||
UPPER DISPLAYS Heat / coolant Engineering Comm / hotbox
|
||
top row 1 2 3 4 | 5 6 7 8 | 9 0 - =
|
||
bottom row Q W E R | T Y U I | O P [ ]
|
||
0x2F..0x2C 0x27..0x24 0x37..0x34
|
||
0x2B..0x28 0x23..0x20 0x33..0x30
|
||
|
||
LOWER DISPLAYS Left Weapons Right Weapons
|
||
top row A S D F (G unbound) H J K L
|
||
bottom row Z X C V (B unbound) N M , .
|
||
0x0F..0x0C 0x07..0x04
|
||
0x0B..0x08 0x03..0x00
|
||
|
||
COLUMNS beside the map
|
||
left F1 zoom+ F2 zoom- F3 thermal F4 CROUCH F5 lamp F6 display
|
||
right F7 control mode F8 - F9..F12 Generators A-D
|
||
```
|
||
|
||
G and B are deliberately unbound: they are the physical gap between the lower clusters.
|
||
|
||
**1 2 3 Q W E are the coolant valves** and the detents run 1 - 5 - 50 (max) - **0 (CLOSED)** -
|
||
back to 1. One press past max shuts that loop off and everything on it overheats; boosting one
|
||
loop starves the others, since the supply is shared. **4** is the flush (hold it) and **R**
|
||
re-balances every valve.
|
||
|
||
The weapon and engineering displays are **page-gated**: on the Quad page the outer buttons jump
|
||
to a populated Eng page; on an Eng page they drive generator select A-D, bus mode, coolant
|
||
toggle, trigger configure, and **eject** (tap to clear a jam, hold ~3 s to jettison a burning
|
||
ammo bay before it detonates).
|
||
|
||
### What a bound key gives up
|
||
|
||
Binding a key removes it from the authentic 1995 typed-hotkey channel so it cannot
|
||
double-dispatch. This board binds nearly everything, so those hotkeys are given up by design:
|
||
`5` = MFD1 Quad page, `z` = MFD3 Eng1, `t/y/u/i/o` = pilot select, `+`/`-` = target zoom.
|
||
Unbind a key in `bindings.txt` to get its 1995 meaning back. Same rule for the built-ins:
|
||
**`** is the view toggle (V is a board button now), and J/K/L cycle the MFD preset pages only
|
||
while unbound.
|
||
|
||
Addresses with no function at all — the pod never wired them — are `0x16` `0x17` `0x19`
|
||
`0x1E` `0x1F` and `0x38`-`0x3E`.
|
||
|
||
## Controllers
|
||
|
||
An **Xbox controller** works out of the box.
|
||
|
||
**Flight sticks, HOTAS and pedals:** run `joyconfig.bat` once. A wizard asks you to move each
|
||
control in turn — stick, twist, throttle, fire buttons — writes the bindings, and drops you into
|
||
the solo menu to try them. It only rewrites its own section of `bindings.txt`, so hand edits
|
||
elsewhere in the file survive.
|
||
|
||
**RGB keyboards** with Windows Dynamic Lighting mirror the panel: any key you have bound to a
|
||
lamp button glows in the panel's own colours and flashes in step with the on-screen buttons. Turn
|
||
it off with `BT_KEYLIGHT=0` in `environ.ini`.
|
||
|
||
---
|
||
|
||
## Cockpit layout
|
||
|
||
Set these in `content\environ.ini`:
|
||
|
||
- **`BT_MFD_SCALE`** (and `_UL`/`_UC`/`_UR`/`_LL`/`_LR`) — size of the five MFDs, as a percentage
|
||
of their pod size. Turn them up if you want to actually read them while you fly.
|
||
- **`BT_RADAR_SCALE`**, **`BT_RADAR_POS`** — size the map, and move it out of the middle of the
|
||
road: `CENTER`, `LEFT`, `RIGHT`, `MIDLEFT`, `MIDRIGHT`.
|
||
- **`BT_GLASS_PANELS=1`** — break every display out into its own desktop window instead of the
|
||
composited cockpit. Good for reading one display at full size.
|
||
|
||
Run with **`-fit`** for a borderless window over the whole monitor. The cockpit scales to any
|
||
window shape at one uniform scale, so nothing ever stretches — a window that isn't the cockpit's
|
||
shape just gets black bars.
|