• src/doors/syncduke/syncduke.h syncduke_input.c syncduke_io.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jul 9 01:55:11 2026
    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