The keyboard becomes the button board (RP412 bindings port) + a controls page
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>
This commit is contained in:
+1061
File diff suppressed because it is too large
Load Diff
+49
-64
@@ -9,84 +9,69 @@ Cockpit layout and display sizes live in `content\environ.ini` (likewise self-do
|
||||
|
||||
---
|
||||
|
||||
## Keyboard
|
||||
## 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 |
|
||||
|---|---|---|---|---|
|
||||
| W/S or ↑/↓ | throttle lever | | X or NumPad5 | all stop |
|
||||
| A/D or ←/→ | turn pedals | | Alt | reverse thrust |
|
||||
| Q/E | torso twist | | Shift | throttle up |
|
||||
| R/F | torso aim | | NumPad 8/2/4/6 | torso aim/twist |
|
||||
| 1 or Space | main trigger | | 2 | middle thumb |
|
||||
| 3 or Ctrl | upper thumb (missiles) | | 4 | pinky |
|
||||
| V | external camera | | B | look behind |
|
||||
| M | control mode (BAS/MID/ADV) | | N | schematic |
|
||||
| J/K/L | MFD preset pages | | H (hold) | coolant flush |
|
||||
| C | cycle a coolant valve | | G (hold) + fire | regroup a weapon |
|
||||
| − / = | volume down/up | | F5–F9 | generator select / mode |
|
||||
| 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 pedal keys do nothing.
|
||||
Press **M** once for MID, where the pedals steer and the stick twists the torso — the full
|
||||
experience. If "turning doesn't work", this is why.
|
||||
**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.
|
||||
|
||||
Numpad aim keys need **NumLock ON**.
|
||||
### The panel — letter and number rows
|
||||
|
||||
> Control mode (BAS/MID/ADV, the M key) is *not* the menu's experience setting
|
||||
> (novice/standard/veteran/expert). That one changes the simulation — heat, damage — not your
|
||||
> controls.
|
||||
```
|
||||
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
|
||||
|
||||
## The cockpit panel — all 72 pod buttons
|
||||
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
|
||||
```
|
||||
|
||||
Each display carries the bank of buttons mounted around it in the real cabinet. Click anywhere on
|
||||
a display: the buttons reach *under* the glass, so the whole screen is a press target and only the
|
||||
lit strip at the edge shows.
|
||||
G and B are deliberately unbound: they are the physical gap between the lower clusters.
|
||||
|
||||
### Heat / coolant display — the loop controls
|
||||
| Button | Action |
|
||||
|---|---|
|
||||
| `0x28` | **Balance coolant** — equalise every condenser valve |
|
||||
| `0x29`–`0x2F` | the six **condenser valves** (Cond 6…1) and the **coolant flush** (`0x2C`, hold) |
|
||||
**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 valve 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 — the supply
|
||||
is shared.
|
||||
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).
|
||||
|
||||
### Weapon and engineering displays
|
||||
| Bank | Display |
|
||||
|---|---|
|
||||
| `0x00`–`0x07` | Right Weapons (lower right) |
|
||||
| `0x08`–`0x0F` | Left Weapons (lower left) |
|
||||
| `0x20`–`0x27` | Engineering (upper centre) |
|
||||
| `0x30`–`0x37` | Comm / target hotbox (upper right) — pilot select |
|
||||
### What a bound key gives up
|
||||
|
||||
Each display's buttons are **page-gated**: on the Quad page the outer buttons jump straight to a
|
||||
populated Eng page; on an Eng page they drive the subsystem shown — 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).
|
||||
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.
|
||||
|
||||
### Map / radar — the side columns
|
||||
| Button | Action | | Button | Action |
|
||||
|---|---|---|---|---|
|
||||
| `0x10` | map zoom in | | `0x18` | cycle control mode (BAS/MID/ADV) |
|
||||
| `0x11` | map zoom out | | `0x1A`–`0x1D` | generator A–D on/off |
|
||||
| `0x12` | thermal / IR sight | | `0x16`,`0x17`,`0x19`,`0x1E`,`0x1F` | no function (as shipped in 1995) |
|
||||
| `0x13` | **crouch** | | | |
|
||||
| `0x14` | searchlight | | | |
|
||||
| `0x15` | cycle display mode | | | |
|
||||
|
||||
### Flight controls
|
||||
| Button | Action |
|
||||
|---|---|
|
||||
| `0x3D` | panic / config lamp |
|
||||
| `0x3F` | throttle head — reverse thrust |
|
||||
| `0x40` | main trigger |
|
||||
| `0x41`–`0x44` | hat: behind / torso centre / right / left |
|
||||
| `0x45`–`0x47` | pinky, middle thumb, upper thumb — the mappable fire buttons |
|
||||
| `0x38`–`0x3C`, `0x3E` | intercom and door lines — no function on a desktop |
|
||||
|
||||
---
|
||||
Addresses with no function at all — the pod never wired them — are `0x16` `0x17` `0x19`
|
||||
`0x1E` `0x1F` and `0x38`-`0x3E`.
|
||||
|
||||
## Controllers
|
||||
|
||||
|
||||
@@ -682,3 +682,53 @@ each bank surrounds, with the coolant-valve detent warning and the eject/jam pro
|
||||
flattens it to ASCII as `CONTROLS.txt` at the zip root (the README's own flattening idiom).
|
||||
`players/README.txt` gained pointers to it, to environ.ini, to -fit, and to the RGB mirror.
|
||||
Verified: `mkdist.py` writes a 5149-byte pure-ASCII CONTROLS.txt into the zip.
|
||||
|
||||
## 2026-07-26 (last) — the keyboard becomes the button board (RP412 bindings port)
|
||||
|
||||
User decision: port RP412's bindings design and make it the DEFAULT (not an opt-in alternate),
|
||||
plus a BT-flavoured interactive controls page.
|
||||
|
||||
**The layout.** Letter and number rows = the MFD banks laid out where they sit on the panel;
|
||||
flight to the numpad so the board stays free; F1-F12 = the map's two columns; G and B unbound as
|
||||
the physical gap between the lower clusters. Expressed in BT's OWN grammar (slew/deflect/set,
|
||||
the Turn channel) -- the bindings.txt format is a compatibility surface and was not touched.
|
||||
|
||||
Coverage audit: **61 of 72 addresses on the keyboard**, and the 11 absent ones are exactly the
|
||||
addresses with no authored function (0x16/0x17/0x1E/0x1F, 0x38-0x3E). 0x19 is bound (F8) purely
|
||||
for column completeness. All 72 stay clickable on the panel.
|
||||
|
||||
The scheme lands on BT's addresses unreasonably well: 1-4 + QWER are the whole 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 1995 typed-hotkey channel, and this board
|
||||
binds nearly everything -- so 5 (Quad), z (Eng1), t/y/u/i/o (pilot select) and +/- (zoom) go.
|
||||
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, so the view-toggle and preset-cycle polls stand down for them
|
||||
(they poll GetAsyncKeyState directly and would otherwise have fired BOTH). View toggle lives on
|
||||
BACKTICK alone.
|
||||
|
||||
**CONTROLS.MAP mirrored** so glass/pod/dev still feel identical (the 2026-07-21 settlement):
|
||||
90 bindings, 0 parse complaints under BT_INPUT_LOG.
|
||||
|
||||
### Hat labels: 0x42 is TORSO CENTER [T1]
|
||||
INPUT_PATH_AUDIT flagged 0x41-0x44 as mislabelled. Settled from the streamed mapping
|
||||
(BT_CTRLMAP_LOG): `elem 66 -> subsys 17 attrID 14` = the TORSO subsystem, while 0x44/0x43/0x41 go
|
||||
to the mapper's look trio (attrID 10/11/12 = LookLeft/LookRight/LookBehind). The .RES itself has
|
||||
no "TORSO CENTER" string -- its names are LookBehind/Down/Forward/Left/Right -- so the audit's
|
||||
wording was loose but its substance right. Swept L4GLASSWIN / L4PADPANEL / L4VB16.
|
||||
|
||||
### The controls page
|
||||
`docs/CONTROLS.html` -- interactive keyboard (hover any key for its address and meaning, with the
|
||||
MFD clusters outlined), pad diagram, panel map, the under-glass press-target figure, the radar
|
||||
placement thumbnails, and the environ.ini table. Modelled on RP412's page, rewritten for BT's
|
||||
addresses and hazards (the coolant-valve detent warning, jams and ammo-bay fires, BASIC control
|
||||
mode). mkdist wraps the fragment in a doctype/charset shell and ships it beside CONTROLS.txt.
|
||||
|
||||
### Verified
|
||||
- bindings.txt regenerates and loads: 74 keys, 0 parse errors; CONTROLS.MAP 90 bindings, 0 errors.
|
||||
- 72/72 panel addresses still dispatch on click.
|
||||
- surround / exploded / dock / pod / dev: boot + simulate, zero faults.
|
||||
- Dist carries CONTROLS.txt + a 46 KB CONTROLS.html with doctype and charset.
|
||||
|
||||
Reference in New Issue
Block a user