• src/conio/cg_events.m wl_events.c

    From Deucе@1:103/705 to Git commit to main/sbbs/master on Tue May 5 15:06:42 2026
    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>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)