#118 fix-the-fix: armed eject routes ONLY the invite cells + Panic

Field-caught by the operator within minutes: the blanket MFD key-space
routing (0x00-0x2F) made the DISPLAY navigation key eject the mech
mid-page-switch while armed. Narrowed to exactly the guarded PANIC button
(0x3D) and the three eng-page EJECT INVITE cells (0x0B/0x23/0x03, the
addresses the engEject 0x85 alarm lamp flashes on). Navigation is safe
while armed; the flashing cell still punches out (re-verified through the
click seam: armed -> press 0x0B -> PUNCH-OUT).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-08-03 19:07:38 -05:00
co-authored by Claude Fable 5
parent b9430cc5a7
commit b4b98a64c0
+11 -11
View File
@@ -469,17 +469,17 @@ void
// PANIC-ARMED EJECT keys: the binary's ONLY armed press binding is
// keyboardGroup[KeyboardPilot].Add(mode 0x200000, mech, msg 0x19 =
// EjectPilot) in the RIO mapper ctor (FUN_004d266c) -- an E8+data scan
// finds NO other 0x200000 consumer in the image. So on the pod, EVERY
// key that ejects while armed (the guarded PANIC key AND the MFD
// side-column cells the engEject alarm lamp flashes on -- addresses
// 0x0B/0x23/0x03 = kBTEngBankTop-4 per bank) reports through the PILOT
// KEYPAD matrix. Mirror that: desktop presses of the MFD key space
// (0x00-0x2F: keypads + side columns) and the Panic button ALSO land as
// pilot-keypad keys. Outside panic mode the binding is mode-masked dead
// (KeyboardPilot has no other active consumer), so normal MFD operation
// is untouched; while ARMED, hitting the flashing eject cell -- or any
// keypad key, the pod semantic -- punches out.
if (pressed && (address <= 0x2F || address == 0x3D))
// finds NO other 0x200000 consumer in the image. Desktop mirror: the
// guarded PANIC button (0x3D) and the THREE eng-page EJECT INVITE cells
// (0x0B/0x23/0x03 = kBTEngBankTop-4 per MFD bank -- the cells the
// engEject 0x85 alarm lamp flashes on) also land as pilot-keypad keys.
// ONLY those: a first cut routed the whole MFD key space (0x00-0x2F)
// and the DISPLAY navigation key self-destructed the operator's mech
// mid-page-switch (field-caught 2026-08-03). Outside panic mode the
// binding is mode-masked dead, so the invite cells keep their normal
// side-column function when not armed.
if (pressed && (address == 0x3D
|| address == 0x0B || address == 0x23 || address == 0x03))
EmitKeypad(LBE4ControlsManager::KeyboardPilot, address & 0xF);
RIOEvent event;