https://gitlab.synchro.net/main/sbbs/-/commit/bf6fbb31005abddc97b4e4a8
Modified Files:
src/conio/cg_events.m wl_events.c
Log Message:
conio: route keyboard input through codepage on Quartz + Wayland
ATASCII / PETSCII / Prestel / BEEB rely on the active codepage to
remap typed Unicode codepoints to backend bytes (e.g. ATASCII maps
U+000D Return -> 0x9B EOL, U+0008 BS -> 0x7E, U+0009 Tab -> 0x7F,
U+007F DEL -> 0xFE). X11 / SDL / Win32 / curses already pipe their
typed-char paths through cpchar_from_unicode_cpoint(); Quartz had no
such call at all and Wayland filtered out everything below 0x20 plus
0x7F, so on those backends Return-in-ATASCII (and friends) went out
as raw ASCII and the remote BBS never saw its EOL.
cg_events.m: include utf8_codepages.h and consolidate the printable / CR-Tab-Esc / Backspace branches in keyDown: into a single cpchar-based
path. The 0x7F -> 0x08 Backspace remap moves *before* cpchar so the
codepage gets to apply its own BS mapping. Ctrl combos still go
through their dedicated scancode-table-first path.
wl_events.c: relax the xkb char gate from "utf32 >= 0x20 && utf32 !=
0x7f" to "utf32 != 0". Special keys (arrows, F-keys) still return 0
from xkb_state_key_get_utf32 and fall through to the evdev scancode
table cleanly.
Co-Authored-By: Claude Opus 4.7 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net