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