Subj : src/doors/syncduke/syncduke.h syncduke_input.c syncduke_io.c To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Thu Jul 09 2026 01:55:11 https://gitlab.synchro.net/main/sbbs/-/commit/3db074e5cd440b68ab5fefc9 Modified Files: src/doors/syncduke/syncduke.h syncduke_input.c syncduke_io.c Log Message: syncduke: move onto termgfx keymode 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 enable-time settle window, the kitty CSI-u parameter decoder, the 88-entry evdev->ASCII table and the modifier classifier. All of it was duplicated, byte for byte, in SyncDOOM, SyncConquer and SyncRetro. The key mode's state now lives in one termgfx_keymode_t owned by syncduke_input.c (which parses the CTDA and CSI?u replies) and reached from syncduke_io.c's terminal-restore path via syncduke_keymode(). That restore is a single termgfx_keymode_restore() call on both the Winsock and POSIX branches, emitting only what was actually enabled, instead of two hand-guarded literal writes on each. syncduke_kitty_active() and syncduke_evdev_active() are kept as the door's public predicates -- the input layer branches on them in a dozen places to choose native key-up over the byte path -- but they now read the shared state. No change to the bytes on the wire, the settle window's 500ms, Duke's key -> Build-scancode map, or the modifier keycodes recognized. --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .