From b4b98a64c01bbac6d27a8f0d2ea7faa8b1ac1907 Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Mon, 3 Aug 2026 19:07:38 -0500 Subject: [PATCH] #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 --- engine/MUNGA_L4/L4PADRIO.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/engine/MUNGA_L4/L4PADRIO.cpp b/engine/MUNGA_L4/L4PADRIO.cpp index 3183c2e..59379f3 100644 --- a/engine/MUNGA_L4/L4PADRIO.cpp +++ b/engine/MUNGA_L4/L4PADRIO.cpp @@ -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;