Opened 3 years ago

Closed 3 years ago

#14015 closed enhancement (fixed)


Reported by: Bruce Dubbs Owned by: Bruce Dubbs
Priority: normal Milestone: 10.1
Component: BOOK Version: SVN
Severity: normal Keywords:


New major version.

Change History (3)

comment:1 by Bruce Dubbs, 3 years ago

Owner: changed from blfs-book to Bruce Dubbs
Status: newassigned

comment:2 by Bruce Dubbs, 3 years ago

libxkbcommon 1.0.0 - 2020-09-05

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 (, 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.
  • 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.
  • 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.

  • 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.
  • Add xkb_keymap_key_get_mods_for_level() which retrieves sets of modifiers which produce a given shift level in a given key+layout.
  • 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.

  • Bump meson requirement to >= 0.49.0.
  • Fix build with byacc.
  • Fix building X11 tests on PE targets.
  • The tests no longer rely on bash, only Python (which is already used by meson).
  • New API:
    • xkb_utf32_to_keysym
    • xkb_keymap_key_get_mods_for_level
    • XKB_KEY_XF86FullScreen

comment:3 by Bruce Dubbs, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed at revision 23694.

Note: See TracTickets for help on using tickets.