[ANNOUNCE] libxkbcommon 1.0.0

Ran Benita ran at unusedvar.com
Sun Sep 6 19:18:39 UTC 2020

xkbcommon had its first commit on Jan 13, 2009, and its first release
with the current API on Oct 24, 2012. Since then, the API and ABI have
been stable. So it seems about time to call it 1.0.0!

This release contains a lot of work by Peter to start and fix a longstanding
deficiency of XKB -- that making any local customizations to the keyboard
layout required changing system-managed files. Now it is possible to add
custom layouts and options at the system (/etc) and user (~/.config) level,
at least when libxkbcommon is in use.

You can read more about it here:

A new component library, libxkbregistry, makes part of this possible. Its
API is described here:

We also have a new `xkbcli` command-line tool which makes it easy to debug
layouts and various other utilities.

See the full NEWS and tarball below.

libxkbcommon 1.0.0

Note: this release is API and ABI compatible with previous releases -- the
major version bump is only an indication of stability.

- Add libxkbregistry as configure-time optional library. libxkbregistry is a C
  library that lists available XKB models, layouts and variants for a given
  ruleset. This is a separate library (libxkbregistry.so, pkgconfig file
  xkbregistry.pc) and aimed at tools that provide a listing of available
  keyboard layouts to the user. See the Documentation for details on the API.

  Contributed by Peter Hutterer <@who-t.net>.

- Better support custom user configuration:

    * Allow including XKB files from other paths.

      Previously, a 'symbols/us' file in path A would shadow the same file in
      path B. This is suboptimal, we rarely need to hide the system files - we
      care mostly about *extending* them. By continuing to check other lookup
      paths, we make it possible for a XDG_CONFIG_HOME/xkb/symbols/us file to
      have sections including those from /usr/share/X11/xkb/symbols/us.

      Note that this is not possible for rules files, which need to be manually
      controlled to get the right bits resolved.

    * Add /etc/xkb as extra lookup path for system data files.

      This completes the usual triplet of configuration locations available for
      most processes:
      - vendor-provided data files in /usr/share/X11/xkb
      - system-specific data files in /etc/xkb
      - user-specific data files in $XDG_CONFIG_HOME/xkb

      The default lookup order user, system, vendor, just like everything else
      that uses these conventions.

      For include directives in rules files, the '%E' resolves to that path.

    * Add a new section to the documentation for custom user configuration.

  Contributed by Peter Hutterer <@who-t.net>.

- Add an `xkbcli` command-line utility.

  This tool offers various subcommands for introspection and debugging.
  Currently the available subcommands are:

    List available rules, models, layouts, variants and options

    Interactive debugger for XKB keymaps for Wayland

    Interactive debugger for XKB keymaps for X11

    Interactive debugger for XKB keymaps for evdev (Linux)

    Compile an XKB keymap

    See separate entry below.

  See the manpages for usage information.

  Contributed by Peter Hutterer <@who-t.net>.

- Add `xkb_utf32_to_keysym()` to translate a Unicode codepoint to a keysym.
  When a special keysym (`XKB_KEY_` constant) for the codepoint exists, it is
  returned, otherwise the direct encoding is used, if permissible.

  Contributed by Jaroslaw Kubik <@froglogic.com>.

- Add `xkb_keymap_key_get_mods_for_level()` which retrieves sets of modifiers
  which produce a given shift level in a given key+layout.

  Contributed by Jaroslaw Kubik <@froglogic.com>.

- Add `xkbcli how-to-type` command, which, using `xkb_utf32_to_keysym()`
  and `xkb_keymap_key_get_mods_for_level()` and other APIs, prints out all
  the ways to produce a given keysym.

  For example, how to type `?` (codepoint 63) in a us,de keymap?

    $ xkbcli how-to-type --layout us,de 63 | column -ts $'\t'
    keysym: question (0x3f)
    20       AE11      2        German        2       [ Shift ]
    20       AE11      2        German        2       [ Shift Lock ]
    61       AB10      1        English (US)  2       [ Shift ]

- Add a new section to the documentation describing the format of the XKB
  rules file.

- Search for Compose in $XDG_CONFIG_HOME/XCompose (fallback to
  ~/.config/XCompose) before trying $HOME/.XCompose.

  Note that libX11 still only searches in $HOME/.XCompose.

  Contributed by Emmanuel Gil Peyrot <@linkmauve.fr>.

- Bump meson requirement to >= 0.49.0.

- Fix build with byacc.

- Fix building X11 tests on PE targets.

  Contributed by Jon Turney <@dronecode.org.uk>

- The tests no longer rely on bash, only Python (which is already used by

- New API:


git tag: xkbcommon-1.0.0

SHA256: 41411ad253b99f59978b4c7b369ba0979b2301c0499a105a399445a56eb7621f libxkbcommon-1.0.0.tar.xz


More information about the wayland-devel mailing list