kbvm is a new implementation of the XKB specification and some other protocols from the XKB ecosystem. It supports
- creating keymaps from buffers, - creating keymaps from RMLVO names, - creating keymaps from X11 connections, - loading and handling of XCompose files, and - loading the RMLVO registry. Keymaps can be turned into compositor-side state machines and client-side lookup tables. kbvm should support most of the features of xkbcommon. It also supports some XKB features that have not yet been implemented in xkbcommon: - all key behaviors: - locking - overlays - radio groups - the RedirectKey action - the SetControls and LockControls actions - the state machine ignores all but the overlay controls - support for up to 32 groups per key You can find more information about it in the [documentation] and the [repository]. kbvm should be mostly compatible with xkbcommon 1.7 and the X server. Some known differences are documented in a [compatibility] file. --- You can try kbvm with the [cli]. You can install the cli via cargo install kbvm-cli --locked This will install the `kbvm` binary under `~/.cargo/bin/kbvm`. The state machine can be tested with the `test-wayland` subcommand: kbvm test-wayland --keymap map.xkb where `map.xkb` should contain an XKB keymap. This command will treat wl_keyboard.key events as raw inputs and run them through the state machine similar to how a compositor would handle libinput key events. You can find more information about the cli at [cli] or by using `--help`. --- kbvm contains a number of [compile tests] and [state machine tests] that might also be of interest to other implementations. --- [documentation]: https://docs.rs/kbvm [repository]: https://github.com/mahkoh/kbvm [compatibility]: https://github.com/mahkoh/kbvm/blob/master/docs/compatibility.md [cli]: https://github.com/mahkoh/kbvm/tree/master/kbvm-cli [compile tests]: https://github.com/mahkoh/kbvm/tree/master/compile-tests/testcases [state machine tests]: https://github.com/mahkoh/kbvm/tree/master/type-tests/testcases