• src/conio/cg_events.m wl_events.c

    From Deucе@VERT to Git commit to main/sbbs/master on Wed Mar 18 22:39:05 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/56b1dd90e94038173e3fd0b8
    Modified Files:
    src/conio/cg_events.m wl_events.c
    Log Message:
    Fix Wayland and Quartz backends not restoring saved scaling

    bitmap_drv_init_mode() resets vstat.scaling to 1 on the first call
    because vstat.winwidth/winheight are still zero (os=0 diagonal).
    The initial scaling set before init_mode was lost. Re-apply ciolib_initial_scaling and recompute winwidth/winheight after bitmap_drv_init_mode returns, matching what the X11 backend does
    in init_window().

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT 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>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net