https://gitlab.synchro.net/main/sbbs/-/commit/5ff3d0595588fdef25824877
Added Files:
src/doors/syncconquer/door/door_help.c door_help.h
Modified Files:
src/doors/syncconquer/CMakeLists.txt PROVENANCE.md src/doors/syncconquer/door/door_input.c door_io.c door_io.h src/doors/syncconquer/vanilla/redalert/scroll.cpp src/doors/syncconquer/vanilla/tiberiandawn/intro.cpp scroll.cpp
Log Message:
syncconquer: keyboard scroll, key-help card, F4 fix, TD side-select
Keyboard/terminal-usability batch across both doors (SyncAlert / Red
Alert and SyncDawn / Tiberian Dawn).
Keyboard map scrolling (both titles): the arrow keys scroll the tactical
map, Home/End jump to the top/bottom edge, and a held key scrolls
continuously by polling Down() -- kitty/evdev report key releases, so the
hold state is real; a legacy tap terminal with no key-up scrolls one cell
per received tap. The mouse edge-scroll auto path is also slowed to a quarter-cell per tick so it glides instead of flying (the door runs
several game ticks per presented frame). Handled in ScrollClass::AI,
ahead of Keyboard_Process, so it behaves the same in both engines.
Numpad decoding: the kitty numpad now respects NumLock (off =
Home/End/arrows, on = digits) instead of always folding to digits, and
the SyncTERM evdev path gains the missing numpad Home/End/PgUp/PgDn/Ins/
Del keycodes (it already had the numpad arrows). Numpad navigation now
works in both terminals.
F4 double-fire (Windows Terminal / kitty): kitty reports F4 as "CSI S"
twice per press -- a bare press and a "CSI 1;1:3S" release. The 'S'
handler cycled the graphics tier on both edges; it now parses the kitty
event type and cycles on the press only. The rxvt ESC[14~ path is
hardened the same way.
Key-bindings help card (Ctrl-K or F1): a door-side centered panel listing
the game commands and the door/terminal keys, since the engine has no
key-list screen. Esc closes it, and the present loop freezes the frame
under it so it doesn't flicker in Sixel. F1/Esc are handled in emit_key,
the one point every keyboard mode funnels through.
TD side selection: Choose_Side was mouse-only. Left/Right now pick
GDI/Nod, Tab toggles a highlighted (outlined) side, and Enter/Space
confirms it.
Vendored edits are recorded in PROVENANCE.md (#29-31); the door-side
files (door_help.*, door_io.*, door_input.c) are ours.
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net