xkbcommon 1.14.0-beta2
Reference library implementing the XKB specification for parsing keyboard descriptions and handling keyboard state
Loading...
Searching...
No Matches
Debugging

Available tools

xkbcommon provides multiple <abbr title="Command-Line Interface">CLI</abbr> tools for debugging, grouped under the xkbcli application. 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

Test your configuration interactively. It chooses the appropriate backend based on the session type. Alternatively you may select explicitly the backend:

xkbcli interactive-wayland
Test in a Wayland session.
xkbcli interactive-x11
Test in an X11 session.
xkbcli interactive-evdev
Test raw input events directly. This requires access to the /dev/input/event* devices, you may need to add your user to the input group or run as root.

‍[!TIP] You may want to use the flag --enable-compose if your layouts use dead keys.

xkbcli dump-keymap

Dump an XKB keymap from a display server. It chooses the appropriate backend based on the session type. Alternatively you may select explicitly the backend:

xkbcli dump-keymap-wayland
Dump an XKB keymap from a Wayland compositor.
xkbcli dump-keymap-x11
Dump an XKB keymap from an X11 server.

xkbcli how-to-type

Find the required key combinations to produce a specific character or keysym.

xkbcli list

List available layouts, variants, and options provided by an XKB database.

xkbcli compile-keymap

Compile a keymap and inspect its properties.

‍[!TIP] Use the options --explicit-* to force the corresponding values to be explicit. This is especially useful to debug compatibility interpretations.

xkbcli compile-compose

Compile Compose files.

xkbcli info
Print information about xkbcommon configuration.

Error index

Each error has a unique identifier printed as [XKB-nnn] in the log.

See the error index for the documentation of each error.

Testing a custom configuration

Note
An erroneous XKB configuration may make your keyboard unusable. Therefore it is advised to try custom configurations safely with the following workflow:
  1. Create a directory for the custom configuration, e.g. ~/xkb-test. Note that in order to test it safely, it should not be one of the locations that xkbcommon searches.
  2. Create the relevant sub-directories and files, e.g. ~/xkb-test/symbols/my-layout.
  3. 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.

  4. 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
  5. Repeat steps 3 and 4 with your full keyboard configuration, i.e. all your model, layouts and options.
  6. If everything works as expected, it is time to test in real conditions:
    • Wayland: , move ~/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!