#118 faithful settlement: MFD soft keys NEVER eject -- panic/keypad only
The streamed .CTL dump (BT_CTRLMAP_LOG, 109 records on the madcat) settles
the eject-input question from CONTENT: no 0x200000 record exists -- the MFD
soft keys carry their authored per-page routes unconditionally (elem 0xB on
a weapon eng page = msg 0xB EjectAmmo, the round eject), so they must never
route to pilot-eject. The invite-cell routing (b9430cc) hijacked exactly
that key -- the operator's "bottom left button self destructed" -- and is
REMOVED.
The faithful model, now fully grounded: the flashing engEject soft-key LAMP
is the INVITE indicator; the eject PRESS is the guarded PANIC key (no
button-space consumer in the image -> it reported through the pilot keypad
matrix; the 0x3D->keypad wire stays) or any pilot-keypad key while armed.
Verified: armed + soft-key 0x0B press -> NO punch-out (authored function
preserved); panic path unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
b4b98a64c0
commit
417008a6d4
@@ -466,21 +466,20 @@ void
|
||||
<< (pressed ? "HELD" : "released") << "\n" << std::flush;
|
||||
}
|
||||
|
||||
// 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. 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);
|
||||
// PANIC (0x3D) -> pilot-keypad key. The binary's ONLY pilot-eject input
|
||||
// is keyboardGroup[KeyboardPilot].Add(mode 0x200000, mech, msg 0x19)
|
||||
// (FUN_004d266c; exhaustive scan: no other 0x200000 consumer, and the
|
||||
// streamed .CTL tables carry NO 0x200000 records either -- the MFD soft
|
||||
// keys keep their authored per-page functions even while armed, so they
|
||||
// must NEVER route here; two field-caught regressions (DISPLAY, then the
|
||||
// weapon ammo-eject soft key 0x0B) came from over-routing them). The
|
||||
// guarded PANIC key has no button-space consumer anywhere in the image,
|
||||
// so on the pod it reported through the pilot keypad matrix -- this is
|
||||
// that wire. The flashing engEject soft-key LAMP (0x85 alarm code) is
|
||||
// the INVITE indicator; the press that ejects is panic / any pilot-
|
||||
// keypad key while armed.
|
||||
if (address == 0x3D && pressed)
|
||||
EmitKeypad(LBE4ControlsManager::KeyboardPilot, 0);
|
||||
|
||||
RIOEvent event;
|
||||
event.Type = pressed ? ButtonPressedEvent : ButtonReleasedEvent;
|
||||
|
||||
Reference in New Issue
Block a user