https://gitlab.synchro.net/main/sbbs/-/commit/91d049a9cff95b2dd4a1acbe
Modified Files:
src/doors/syncduke/syncduke_input.c
Log Message:
syncduke: numpad Home/End/PgUp/PgDn are Aim/Look under kitty, not weapons
With NumLock off, Windows Terminal sends the numpad's kitty FUNCTION
codepoints -- KP_HOME 57423, KP_END 57424, KP_PAGE_UP 57421, KP_PAGE_DOWN 57422. The CSI-u handler ran them through kitty_kp_normalize(), which folds them to the DIGIT-key codepoints KP_7/1/9/3; those fall through to the ASCII fold and become '7'/'1'/'9'/'3' -- which in Duke are weapon-select keys. So in gameplay the numpad End key selected weapon 1 and holstered whatever you were holding, and Home/PgUp/PgDn silently switched weapons too.
Every other input path already maps these four correctly: the legacy CSI ~/H/F path and the SyncTERM evdev path both drive look_hold(sc_kpad_7/1/9/3) -- Aim up/down, Look up/down. Only the kitty path folded them to digits. It went unseen because the terminals it was tested on (foot, Contour) were captured with NumLock ON, whose DIGIT codepoints SHOULD fold to weapons.
Intercept the four function codepoints in gameplay before the normalize, with the same look_hold mapping the other two paths use. NumLock-ON digit
codepoints
(57406/57400/57408/57402) are untouched and still select weapons, which is
what
NumLock ON is for. Menus were already correct (the non-gameplay block maps KP_HOME/KP_END to first/last item). Found by tracing the raw CSI-u that
Windows
Terminal actually sends.
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net