KeyboardMap::decode threw on a keycode beyond the range of the loaded
keymap, and the exception ended the whole process. xdotool binds such a
keycode for a moment to type a character the layout lacks, so typing one
closed the running program.
Treat these keycodes like the keys the layout gives no symbol. Codes
above 255 and a missing keymap still fail.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Reproduced the crash, wrote the change and its regression test from a request to fix the failures found in a live Bitvise test.
Some compositors, niri among them, send the XKB keymap without a
trailing null, which the protocol allows; Raven treated that as an input
failure and gave up on the desktop before the first window. The keymap
is now taken whole when it has no terminator. A key the layout gives no
symbol (an unassigned or vendor key) passes with no virtual key instead
of ending the process, and one that gives several is known by the first.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Diagnosed the "unsupported native input event" failure on niri
from WAYLAND_DEBUG output and a small wayland-client probe, and wrote
both changes and the keyboard_test case. Prompt: get an MSI installer
and the program it installs running under Raven on niri.