MockFootswitch.press() (emulator/controls.py:104) toggles state and calls refresh_callback — there is no press/release distinction, so it never produces a LONGPRESSED event and cannot hold two switches down at once.
Consequences:
- Footswitch longpress actions can't be exercised in the emulator at all.
- Longpress chords (
longpress: groups) are entirely untestable there, which is why a chord-resolution bug could ship unnoticed.
- Chord resolution keys off physical hold state, which a mock with no underlying
AnalogSwitch/GpioSwitch reports as RELEASED — so chords silently degrade to lone-longpress behavior in the emulator rather than failing loudly.
Fix: model key-down/key-up in emulator/window.py and give MockFootswitch a real press state machine (RELEASED/PRESSED/LONGPRESSED) matching the hardware detectors, so held-switch gestures work.
MockFootswitch.press()(emulator/controls.py:104) toggles state and callsrefresh_callback— there is no press/release distinction, so it never produces aLONGPRESSEDevent and cannot hold two switches down at once.Consequences:
longpress:groups) are entirely untestable there, which is why a chord-resolution bug could ship unnoticed.AnalogSwitch/GpioSwitchreports asRELEASED— so chords silently degrade to lone-longpress behavior in the emulator rather than failing loudly.Fix: model key-down/key-up in
emulator/window.pyand giveMockFootswitcha real press state machine (RELEASED/PRESSED/LONGPRESSED) matching the hardware detectors, so held-switch gestures work.