BBS:      TELESC.NET.BR
Assunto:  src/conio/cterm.c cterm.h cterm_test.c src/syncterm/term.c
De:       Deuc¨
Data:     Sun, 19 Apr 2026 23:32:38 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/commit/50184d9e6b35956aa4e9ee77
Modified Files:
	src/conio/cterm.c cterm.h cterm_test.c src/syncterm/term.c
Log Message:
cterm: move keyboard encoding from term.c into cterm_encode_key()

The six per-emulation key-mapping tables, DECBKM backspace/delete logic,
ATASCII inverse toggle, Prestel/BEEB reveal toggle, and doorway
NUL+scancode encoding all consulted state (emulation, extattr, doorway
mode) that already lives inside struct cterminal, yet the translation
logic sat in syncterm/term.c.  Pulling it into cterm mirrors what cterm
already does for the inbound (cterm_write) and response (cterm_respond)
paths, tightens the module boundary, and unblocks multi-instance conio.

ATASCII inverse state now lives on the cterm as `bool atascii_inverse`,
read back for the status bar via cterm_atascii_inverse().  All byte
emission goes through cterm_respond()/response_cb, so cterm stays
decoupled from conn.c.  The doorway short-circuit is absorbed into
cterm_encode_key(); term.c keeps only the Alt-Z local filter.

Adds 18 cterm_test cases covering ANSI raw/F-keys/arrow, DECBKM on/off
for BS and DEL, VT52 arrow+DECBKM, ATASCII inverse toggle, PETSCII
F-keys, Prestel '#' remap, BEEB HOME, and three doorway-mode variants
(scancode, Alt-Z exemption, doorway off).

Co-Authored-By: Claude Opus 4.7 (1M context) 
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]