• src/doors/syncscumm/test/test_sst_input.csrc/doors/syncscumm/door/sst_

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Saturday, July 18, 2026 03:02:49
    https://gitlab.synchro.net/main/sbbs/-/commit/42f2aba29d711c8778ce34cf
    Added Files:
    src/doors/syncscumm/test/test_sst_input.c
    Modified Files:
    src/doors/syncscumm/door/sst_io.c sst_io.h src/doors/syncscumm/test/unit_sst_io.sh
    Log Message:
    syncscumm: decode keyboard into the input event queue

    Negotiate the kitty/evdev key modes through termgfx keymode and decode
    kitty CSI-u, SyncTERM evdev and legacy CSI/SS3 keys into neutral
    SST_KEY_* codes queued on the same FIFO Task 3/4's mouse decode uses.
    Ctrl-S (stats) and quit (q/Ctrl-C) stay door-level under every key
    mode; everything else -- including + / - -- is forwarded, so ScummVM's
    own menu and text fields see the keys. Drops the door + / - volume
    hotkey (the engine's GMM Options dialog carries the volume sliders),
    along with the now-dead volume-step machinery it was the only caller
    of.

    A legacy byte or a legacy (non-kitty) CSI/SS3 nav key queues a single
    key-down with no synthetic release -- unlike door_input.c's WWKeyboard
    bracket, ScummVM's discrete keydown/keyup stream has no Down()-poll to
    satisfy, so there is nothing for an auto-release to protect against.
    kitty and evdev report real press/release edges and use them as-is.

    Tested via a new sst_io_test_feed() seam (SST_TEST) that runs raw wire
    bytes through the same parser sst_io_pump() uses, covering printable
    bytes, the freed +, legacy arrow/F-key/Home/End/SS3 sequences, and the still-reserved Ctrl-S/quit. Full unit_sst_io.sh suite and boot_bass.sh
    still pass; a standalone -Wall -Wextra -Werror compile of sst_io.c is
    clean.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net