https://gitlab.synchro.net/main/sbbs/-/commit/675892c7332670412e9c2622
Modified Files:
src/doors/syncdoom/README.md doomgeneric.h i_input.c syncdoom.c xtrn/syncdoom/README.md syncdoom.example.ini
Log Message:
syncdoom: terminal mouse steering (xterm SGR mouse)
On SyncTERM and other xterm-mouse-capable clients the door now turns with
the mouse, which bypasses Doom's turn-acceleration ramp and the door's key-up-synthesis grace machinery entirely -- so turning is markedly
smoother and more precise than the arrow keys (no key-repeat lag).
Terminals report the pointer's ABSOLUTE, screen-clamped cell position
(no relative deltas, and the host can't recenter the pointer), so the
model is a virtual joystick: the pointer's horizontal offset from
screen-center sets a turn RATE -- hold it left of center to keep turning
left, return to center to stop. A relative-delta "native feel" model was prototyped and dropped (it stalls uselessly at the window edge). An idle timeout relaxes steering to neutral when the pointer stops reporting, so abandoning it off-center (e.g. alt-tabbing away) no longer spins forever
-- terminals send no focus-out event to signal it.
Buttons map to Doom's defaults: left = fire, right = strafe-modifier,
middle = forward. Vertical mouse and the wheel are unused. Button state
comes only from real press/release events, never from motion reports
(a motion report can carry stale/phantom button bits, which otherwise
stuck the fire bit on while steering).
Enable/disable with [input] mouse = on|off (default on) or -mouse on|off;
saved per-user, suppressed in menus and while typing chat, and simply
inert on terminals without mouse reporting.
Implementation: parse SGR mouse reports (ESC[<b;col;row M/m) in the CSI
parser (enlarged the param buffer); DG_GetMouse() projects state to a
per-tic ev_mouse posted from I_GetEvent(); enable/disable the tracking
modes (?1003h/?1006h) in DG_Init/terminal_restore.
Also fixes the in-game Ctrl-P key, which a stale "return 't'" alias had
been shadowing so it opened talk instead of reaching the page handler.
Co-Authored-By: Claude Opus 4.8 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net