xkbcommon provides multiple tools for debugging. Please consult the manual pages
man xkbcli for the complete documentation of each tool.
@note These tools may not be installed by default; please ensure you have the
libxkbcommon-tools package installed.
xkbcli interactive to test your current configuration by detecting the
session type.xkbcli interactive-x11 to test your current configuration in an X11 session.xkbcli interactive-wayland to test your current configuration in a Wayland
session.
You may want to use the flag --enable-compose if your layouts use dead keys.xkbcli how-to-type: to find the key combinations to type in order to get a
specific character or keysym.xkbcli interactive-evdev: to test a configuration without affecting your
current configuration. This requires access to the /dev/input/event* devices,
you may need to add your user to the input group or run as root.xkbcli compile-keymap: to check the resulting compiled keymap for some
configuration. Use the options --explicit-* to force the corresponding values
to be explicit. This is especially useful to debug [compatibility interpretations].xkbcli compile-compose: to check the resulting Compose file.xkbcli info: to print information about libxkbcommon configuration.[compatibility interpretations]: @ref interpret-statements
Each error has a unique identifier printed as [XKB-nnn] in the log.
See the error index for the documentation of each error.
@note An erroneous XKB configuration may make your keyboard unusable. Therefore it is advised to try custom configurations safely with the following workflow:
~/xkb-test. Note that
in order to test it safely, it should not be one of the locations that
[xkbcommon searches][user-configuration locations].~/xkb-test/symbols/my-layout.Test if your changes compile successfully:
xkbcli compile-keymap --include ~/xkb-test --include-defaults --test --layout my-layout
@note The order of the --include* arguments is important here.
If it does not compile, you may add the flag --verbose for additional information.
Test if it behaves correctly. Note that you may need to add your user to the
input group or run as root.
xkbcli interactive-evdev --include ~/xkb-test --include-defaults --enable-compose --layout my-layout
Repeat steps 3 and 4 with your full keyboard configuration, i.e. all your model, layouts and options.
If everything works as expected, it is time to test in real conditions:
~/xkb-test to one of the [user-configuration locations],
restart your session, update the keyboard configuration using your usual UI
and enjoy your XKB customization!X11: Unfortunately Xorg does not support alternative paths, so the next best
option is to use the venerable xkbcomp tool.
xkbcli compile-keymap --include ~/xkb-test --include-defaults --layout my-layout \
| xkbcomp - $DISPLAY
Happy hacking!
[user-configuration locations]: @ref xkb-data-locations