Cockpit buttons on the split displays, lamp-lit and clickable

Each MFDSplitView window now carries its display's physical button bank,
placed as in the pod (addresses per vRIO CockpitLayout): a 4x2 red
cluster around each MFD glass (anchors 0x2F/0x27/0x37 upper, 0x0F/0x07
lower, addresses descending row-major) and 6 amber buttons down each
side of the map - Secondary 0x10-0x15 left, Screen 0x18-0x1D right; the
remaining column addresses are Tesla relays, per the pod wiring, so they
get no buttons.

Buttons light from the lamp state the game commands: PadRIO grows a
static active-instance hook (SetScreenButton/GetLampState); mouse
press/release feeds PadRIO's desired-state sampling alongside pad and
keyboard, and paint decodes the lamp byte (state1/state2 brightness,
solid/slow/med/fast flash animated by tick). With real serial hardware
(no PadRIO) the buttons draw dark and inert.

Verified: map flank buttons light per the game's preset lamps, aligned
with the labels the glass draws at its edges; MFD clusters render 4+4.
Roadmap: queued the vRIO Dynamic Lighting RGB-keyboard lamp mirror as a
polish-pass item. dist repacked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-12 14:22:38 -05:00
co-authored by Claude Fable 5
parent 214a8e079c
commit 1058de326d
8 changed files with 432 additions and 62 deletions
+14 -4
View File
@@ -56,10 +56,20 @@ so press-feedback works like the real button field.
90°-rotated map), rendered CPU-side from the shared gauge canvas — the
external BitBlt-mirror wrapper is obsolete. Verified visually (MFD score
readout, full tactical map).
- Next in A: on-screen RIO panel fed by `PadRIO::lampState[]` (the
cockpit-feel layout — vRIO button clusters around the displays); port the
full vRIO bindings-file model (deflect/rate/deadzone per axis, rebinding);
pilot keypad (numpad → KeyEvent); Steam Input once C starts.
- **Cockpit buttons on the displays** (2026-07-12): each split window
carries its physical button bank — 4+4 red buttons per MFD, 6 amber per
map side (Secondary/Screen columns; addresses per vRIO `CockpitLayout`,
placement per the pod). Mouse presses inject into `PadRIO`; the game's
lamp commands light them (verified: PRESET lamps lit on the map flank,
aligned with the glass's own edge labels).
- Next in A: port the full vRIO bindings-file model (deflect/rate/deadzone
per axis, rebinding); pilot keypad (numpad / on-screen 4×4 → KeyEvent);
Steam Input once C starts.
- Polish pass (queued): **vRIO's Dynamic Lighting RGB-keyboard mirror**
lamp states glow on the physical keyboard's keys (per-key or zone-lit),
blinking with the flash modes. Needs package identity for background
light control (vRIO's `pkg\Register-vRIO.ps1` pattern; see the vRIO
README for the Settings → Dynamic Lighting steps).
- vRIO itself stays useful as a dev harness against unmodified builds.
## Workstream B — In-game sessions (from TeslaConsole)