#118: the MFD eject cell ejects -- all pilot-keypad-space keys route while armed
The operator's pod flow ("the engineering panel's bottom-left button flashes
EJECT, you push it") is input #3 of 3. The eng-page eject cell resolves to
MFD side-column addresses 0x0B/0x23/0x03 (kBTEngBankTop - 4 per bank), and
the binary's ONLY armed eject binding is the KeyboardPilot group (0x200000
-> mech msg 0x19; exhaustive 0x200000 scan: no other consumer) -- so on the
pod those keys report through the pilot keypad matrix. Desktop mirror: MFD
key-space presses (0x00-0x2F) and Panic (0x3D) also land as pilot-keypad
keys. Outside panic mode the binding is mode-masked dead -- normal MFD
operation untouched; armed, the flashing cell (or any keypad key -- the pod
semantic) punches out.
Verified through the click seam: gens dead -> armed -> press 0x0B ->
PUNCH-OUT.
All three eject inputs now live: Panic button, Backspace/pad LeftThumb,
and the flashing MFD eject cell.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
0bd9bb6f51
commit
b9430cc5a7
@@ -466,17 +466,21 @@ void
|
||||
<< (pressed ? "HELD" : "released") << "\n" << std::flush;
|
||||
}
|
||||
|
||||
// PANIC (0x3d): the pod's guarded PANIC key reports through the PILOT
|
||||
// KEYPAD bank -- the binary's ONLY panic press binding is
|
||||
// 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 @004d266c); there is
|
||||
// NO buttonGroup[0x3d] consumer anywhere (0x3d is the LAMP address, mode-
|
||||
// linked via MakeLinkedLamp). Mirror that wiring for the desktop click:
|
||||
// a Panic press ALSO lands as a pilot-keypad key, so the ARMED mode
|
||||
// binding fires the eject; a healthy press is a mode-masked no-op --
|
||||
// exactly the pod behaviour.
|
||||
if (address == 0x3D && pressed)
|
||||
EmitKeypad(LBE4ControlsManager::KeyboardPilot, 0);
|
||||
// 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))
|
||||
EmitKeypad(LBE4ControlsManager::KeyboardPilot, address & 0xF);
|
||||
|
||||
RIOEvent event;
|
||||
event.Type = pressed ? ButtonPressedEvent : ButtonReleasedEvent;
|
||||
|
||||
Reference in New Issue
Block a user