Files
BT411/content/CONTROLS_NUMPAD.MAP
T
arcattackandClaude Fable 5 980c9cd7e5 Input remap: CONTROLS.MAP binding engine + XInput gamepad support
The pod's controls reach the game through the RIO serial board; on a
desktop that hardware is a keyboard shim of hardcoded GetAsyncKeyState
reads.  New binding engine (game/reconstructed/btinput.cpp) maps PC keys
and an XInput pad onto the authentic channels through a user-editable
file (content/CONTROLS.MAP, community-suggested grammar, corrected):

  key/pad -> button <addr>   real buttonGroup emissions, mirroring the
                             RIO convention exactly (press a+1 w/ mode
                             mask saved, release -a-1 w/ saved mask;
                             L4CTRL.cpp:2470-2520) -- aux/preset banks,
                             hotbox, panic, reverse thrust all reachable
  key/pad -> axis            Throttle rate (lever), pedals/JoystickX
                             deflect (turn/twist) into the existing
                             virtual-controls integrators (feel, gait
                             detent, spring-centering all unchanged)
  keypad pilot|external <n>  keyboardGroup key values ('0'-'F')
  pckey <char>               any authentic 1995 typed hotkey
  action <name>              port dev controls (view, all-stop, ...)

Keys claimed by a binding are SUPPRESSED from the legacy WM_CHAR/KEYUP
feed -- ends the historic double-dispatch ('w' drove AND selected pilot
0; F5's key-up value 0x74 aliased to the 't' hotkey; letter key-ups fed
the developer fake-event dispatcher).  Unbound keys keep their authentic
meaning.  The dual-use 'V' is split: V = view toggle, B = look behind.

Default profile = WASD classic (compiled-in twin; delete the file to
restore).  CONTROLS_NUMPAD.MAP ships the corrected community layout
(keypads are NOT buttons 0x50-0x6F -- that space doesn't exist; no
clickable cockpit exists so everything needs a binding; keyboard fire
buttons added; 0x36/0x37 are hotbox not 'config'; missiles moved off
Ctrl).  XInput loads dynamically (1_4 -> 9_1_0), disconnected-pad
probing rate-limited; pad sticks write the axes as absolute positions
(the spring is physical), triggers/buttons per the file.

Verified live: bindings load (43), W and NumPad8 drive (speedDemand 0 ->
61.5), X all-stop (spd -> 0), aux-bank emission (D1 -> [input] 0x2f
PRESS/release under the numpad profile), suppression both directions
(posted 'r' reaches [keych], posted 'w' swallowed), full-keyspace
WM_CHAR+WM_KEYUP fuzz x3 survived with sim advancing, XInput graceful
with no pad, 2-node relay session un-regressed (full ladder + UDP).
Pad-in-hand testing still needs a physical controller.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 13:09:36 -05:00

100 lines
4.0 KiB
Plaintext

# ==========================================================================
# BT411 CONTROLS_NUMPAD.MAP -- the community-suggested numpad layout
# (corrected). To use it: copy this file over CONTROLS.MAP.
# Grammar + address reference: see CONTROLS.MAP.
# ==========================================================================
# Corrections vs. the original suggestion:
# - keypads are NOT button addresses 0x50-0x6F (that space doesn't exist);
# use `keypad pilot|external <0-15>` when those panels get mapped
# - there is no clickable on-screen cockpit -- every function you want
# must be bound here
# - keyboard fire buttons added (the suggestion only had Main; Pinky/
# Middle/Upper were pad-only, stranding weapons regrouped onto them)
# - Ctrl throttle-down kept, but missiles moved off Ctrl to NumPad3
# - 0x36/0x37 are target-hotbox buttons (pilot select), not "config 1/2"
# - port actions (view, all-stop, mode cycle, valve, generators) bound
#
# ---- Driving: number pad ------------------------------------------------
key NumPad8 axis Throttle rate 0.75 # lever up
key NumPad2 axis Throttle rate -0.75 # lever down
key NumPad4 axis LeftPedal deflect 1 # turn left
key NumPad6 axis RightPedal deflect 1 # turn right
key NumPad7 axis JoystickX deflect -1 # torso twist left
key NumPad9 axis JoystickX deflect 1 # torso twist right
key NumPad5 action AllStop
key Shift axis Throttle rate 0.75 # throttle up (alt)
key Ctrl axis Throttle rate -0.75 # throttle down (alt)
key Alt button 0x3F # throttle-head = REVERSE THRUST
# ---- Fire: numpad cluster + space ---------------------------------------
key Space button 0x40 # Main trigger
key NumPad0 button 0x40
key NumPad1 button 0x45 # Pinky
key NumPad3 button 0x47 # Upper (missiles)
key Decimal button 0x46 # Middle (PPCs)
# ---- Joystick hat on the arrows -----------------------------------------
key Up button 0x42 # Hat Up
key Down button 0x41 # Hat Back
key Left button 0x44 # Hat Left
key Right button 0x43 # Hat Right
# ---- Systems ------------------------------------------------------------
key G action ConfigHold
key Enter action ModeCycle
key V action ViewToggle
key B action LookBehind
key F5 action Generator1
key F6 action Generator2
key F7 action Generator3
key F8 action Generator4
key F9 action Reconnect
key F10 action Valve
# ---- Upper MFD banks: number row = the top aux row, QWERTY row = the row
# ---- under it, left to right across the Left / Center / Right panels.
# ---- (These buttons drive the preset/eng-data selection; the letters
# ---- lose their 1995 typed-hotkey meaning once bound here.)
key D1 button 0x2F
key D2 button 0x2E
key D3 button 0x2D
key D4 button 0x2C
key D5 button 0x27
key D6 button 0x26
key D7 button 0x25
key D8 button 0x24
key D9 button 0x37 # hotbox (target select)
key D0 button 0x36 # hotbox
key OemMinus button 0x35 # hotbox
key Oemplus button 0x34 # hotbox
key Q button 0x2B
key W button 0x2A
key E button 0x29
key R button 0x28
key T button 0x23
key Y button 0x22
key U button 0x21
key I button 0x20
key O button 0x33 # hotbox
key P button 0x32 # hotbox
key OemOpenBrackets button 0x31 # hotbox
key OemCloseBrackets button 0x30 # hotbox
# ---- Xbox controller (same as the default profile) ----------------------
padaxis LeftStickX axis Pedals deadzone 0.24
padaxis RightStickX axis JoystickX deadzone 0.24
padaxis RightStickY axis Throttle rate 0.75 deadzone 0.24
pad RightTrigger button 0x40
pad LeftTrigger button 0x47
pad RightShoulder button 0x46
pad LeftShoulder button 0x45
pad DPadUp button 0x42
pad DPadDown button 0x41
pad DPadLeft button 0x44
pad DPadRight button 0x43
pad B action AllStop
pad Y action ViewToggle
pad X action LookBehind
pad Start action ModeCycle
pad Back action Valve