mirror of
https://codeberg.org/virtualxt/virtualxt.git
synced 2026-10-20 14:14:45 +00:00
KeyStatusHandlerRaw in the Circle baremetal kernel dropped the ucModifiers byte and sized the keyboard state arrays to 0x100 entries, too small for libretro modifier keycodes (RETROK_LSHIFT=304, etc.). As a result, holding Shift (or Ctrl/Alt) produced no XT scan code in the shared frontend, so shifted key combinations never worked. - Translate ucModifiers bits to RETROK_LCTRL/LSHIFT/LALT/RCTRL/RSHIFT/RALT so the existing RETROK_LSHIFT -> 0x2A / RETROK_RSHIFT -> 0x36 mapping in src/frontend/core.c fires correctly. - Resize key_states/key_states_current and the dispatch / input_state loops from 0x100 to RETROK_LAST so modifier and other high keycodes fit and are not silently truncated. - Add bounds guard for mapped raw keycodes. Also stages long-pending packaging fixes in tools/package/rpi/package-rpi.sh (Pi 4/5 KERNEL_MAX_SIZE bump, Pi 4 family DTBs, disable_splash, [pi400] and [cm4] stanzas) and updates docs/STATUS.md. Verified with 'make rpi' for Pi 3/4/5 and the new kernel images written to /dev/sda1.