https://gitlab.synchro.net/main/sbbs/-/commit/9545ba78544c17c9656d25b7
Modified Files:
src/doors/syncconquer/door/door_input.c door_io.c door_io.h
Log Message:
syncconquer: move onto termgfx keymode, arming the missing settle window
Replaces the door's own copy of the terminal key-mode negotiation with termgfx/keymode.h (cf67bccb2a, thrown-29-throw): the evdev/kitty enable and restore sequences, the evdev-wins precedence, the kitty CSI-u parameter decoder, the evdev->ASCII table, and the modifier classifier.
This fixes a real defect. SyncConquer enabled SyncTERM physical key
reports without an enable-time settle window, which the other doors all
had. SyncTERM re-reports every key held at the instant reports are
enabled -- typically the Enter still down from selecting the door off the
BBS menu -- so the door acted on a keypress the player never made, before
the first frame was drawn. Press edges are now dropped for 500ms after enabling; releases and modifier tracking are honored throughout, so no
key can stick down.
The state moves to door_io.c (it sees the CTDA reply that enables evdev
and owns the leave path that undoes it) and door_input.c reaches it
through door_io_keymode(). door_io_now_ms() is exported so the settle
check runs in the same monotonic clock domain as the pacing.
No change to the bytes on the wire, the key->action map, or the modifier keycodes recognized (29/97 Ctrl, 42/54 Shift, 56/100 Alt -- the table
this door already had is the one termgfx now carries, verified identical
byte for byte across all four doors).
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net