• 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 Sun Jun 28 00:21:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/b19267dfa434ca3aa49aff8f
    Modified Files:
    src/doors/syncduke/syncduke.h syncduke_input.c syncduke_io.c
    Log Message:
    syncduke: mouse-steer around the actual displayed image, not out_w

    The mouse steer mapped the pointer column to a turn rate around the center of an
    out_w x out_h image -- but the displayed image is now the fitted/centered sixel (or the JXL fill), and out_w no longer describes it. On a wide SyncTERM the sixel
    anchors top-left (cursor ignored under ?80l) yet the steer assumed canvas-center,
    so the neutral point was off.

    present() now records the displayed image's actual horizontal center column and half-width each frame -- accounting for tier and terminal (SyncTERM sixel top-left
    vs JXL/elsewhere centered) -- and the steer reads that (syncduke_hsteer). Replaces
    syncduke_image_geometry, whose out_w-based centering is gone.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • 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