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:
Cyd
2026-07-26 03:23:27 -05:00
co-authored by Claude Opus 5
parent 56d9971b0e
commit 5f88a4eeb2
12 changed files with 1489 additions and 189 deletions
+96 -52
View File
@@ -43,61 +43,105 @@
# hotkey channel (no double dispatch); unbound keys keep their authentic
# 1995 meaning (see pckey above).
#
# ---- WASD CLASSIC (the shipped default) ----------------------------------
# ---- THE KEYBOARD IS THE BUTTON BOARD ------------------------------------
# Mirrors contentindings.txt exactly, so the glass (PadRIO) and desktop
# (btinput) boots feel identical -- the letter and number rows are the MFD
# button banks laid out where they sit on the panel, and flight lives on the
# numpad. G and B are the physical gap between the lower clusters and stay
# unbound. A bound key is REMOVED from the typed 1995 hotkey channel, so
# this board gives those up by design (see pckey above to rebind any back).
# Driving: W/S sweep the throttle lever (sticks, detent at zero); A/D are
# the turn pedals (spring back); Q/E twist the torso; R/F aim the torso
# up/down (elevation); X = all stop (recenters twist AND pitch).
key W axis Throttle rate 0.7
key S axis Throttle rate -0.7
key Up axis Throttle rate 0.7
key Down axis Throttle rate -0.7
key A axis LeftPedal deflect 1
key D axis RightPedal deflect 1
key Left axis LeftPedal deflect 1
key Right axis RightPedal deflect 1
key Q axis JoystickX deflect -1
key E axis JoystickX deflect 1
key R axis JoystickY deflect 1
key F axis JoystickY deflect -1
key X action AllStop
# Fire: the pod joystick's four buttons.
key D1 button 0x40 # Main trigger (lasers group)
key Space button 0x40
key D2 button 0x46 # Middle thumb (PPCs group)
key D3 button 0x47 # Upper thumb (missiles group)
key Ctrl button 0x47
key D4 button 0x45 # Pinky (4th group)
key Alt button 0x3F # throttle-head = REVERSE THRUST
# --- numpad aim cluster (torso twist/aim -- mirrors bindings.txt so the
# --- glass (PadRIO) and desktop (btinput) boots feel identical) ---
key NumPad8 axis JoystickY deflect 1 # torso aim up
key NumPad2 axis JoystickY deflect -1 # torso aim down
key NumPad4 axis JoystickX deflect -1 # torso twist left
key NumPad6 axis JoystickX deflect 1 # torso twist right
key NumPad7 axis LeftPedal deflect 1 # turn left (alt)
key NumPad9 axis RightPedal deflect 1 # turn right (alt)
# Flight: the numpad. 8/2/4/6 stick, 7/9 pedals, 5 all-stop, 0 trigger;
# Shift/Ctrl walk the throttle lever and it sticks; Alt is reverse thrust.
key NumPad8 axis JoystickY deflect 1
key NumPad2 axis JoystickY deflect -1
key NumPad4 axis JoystickX deflect -1
key NumPad6 axis JoystickX deflect 1
key NumPad7 axis LeftPedal deflect 1
key NumPad9 axis RightPedal deflect 1
key NumPad5 action AllStop
key Shift axis Throttle rate 0.7 # throttle up (alt)
key Shift axis Throttle rate 0.7
key Ctrl axis Throttle rate -0.7
key Alt button 0x3F
# Systems.
key G action ConfigHold # hold + fire keys = regroup the weapon
key C action Valve # coolant valve cycle
key H action Flush # coolant flush (HOLD -- dumps reservoir coolant)
key M action ModeCycle # Basic -> Standard -> Veteran controls
key N action DisplayCycle # secondary schematic: Damage -> Critical -> Heat
key J action Mfd1Cycle # lower-left MFD page: Quad -> Eng detail pages
key K action Mfd2Cycle # upper-center MFD page (engineering)
key L action Mfd3Cycle # lower-right MFD page
key V action ViewToggle # cockpit <-> chase camera (dev)
key B action LookBehind # HOLD = the pod's rear-view button
key F5 action Generator1
key F6 action Generator2
key F7 action Generator3
key F8 action Generator4
key F9 action Reconnect
# The four mappable fire buttons.
key Space button 0x40
key NumPad0 button 0x40
key NumPad1 button 0x45
key NumPad3 button 0x46
key Decimal button 0x47
# The hat, on the arrows. 0x42 is TORSO CENTER, not a look (streamed
# mapping: elem 66 -> subsys 17 Torso attr 14; the other three are the
# mapper's LookBehind/Right/Left).
key Up button 0x42
key Down button 0x41
key Left button 0x44
key Right button 0x43
# UPPER MFD banks: number row on top, QWERTY beneath.
# Heat / coolant (1-4, QWER = Condensers 1-6, flush, balance).
key D1 button 0x2F
key D2 button 0x2E
key D3 button 0x2D
key D4 button 0x2C
key Q button 0x2B
key W button 0x2A
key E button 0x29
key R button 0x28
# Engineering / Mfd2.
key D5 button 0x27
key D6 button 0x26
key D7 button 0x25
key D8 button 0x24
key T button 0x23
key Y button 0x22
key U button 0x21
key I button 0x20
# Comm / target hotbox.
key D9 button 0x37
key D0 button 0x36
key OemMinus button 0x35
key Oemplus button 0x34
key O button 0x33
key P button 0x32
key OemOpenBrackets button 0x31
key OemCloseBrackets button 0x30
# LOWER MFD banks: home row on top, the row below beneath.
key A button 0x0F
key S button 0x0E
key D button 0x0D
key F button 0x0C
key Z button 0x0B
key X button 0x0A
key C button 0x09
key V button 0x08
key H button 0x07
key J button 0x06
key K button 0x05
key L button 0x04
key N button 0x03
key M button 0x02
key Oemcomma button 0x01
key OemPeriod button 0x00
# The two columns flanking the map.
key F1 button 0x10
key F2 button 0x11
key F3 button 0x12
key F4 button 0x13
key F5 button 0x14
key F6 button 0x15
key F7 button 0x18
key F8 button 0x19
key F9 button 0x1A
key F10 button 0x1B
key F11 button 0x1C
key F12 button 0x1D
# View toggle keeps its own key (V is a board button now).
key Oemtilde action ViewToggle
# ---- Xbox controller -----------------------------------------------------
# Left stick steers (the pedals), right stick twists the torso and pushes