[ANNOUNCE] libxkbcommon 1.10.0

Pierre Le Marre dev at wismill.eu
Wed May 21 18:46:53 UTC 2025


Dear all,

I am pleased to announce the release of libxkbcommon 1.10.0:

https://github.com/xkbcommon/libxkbcommon/tree/xkbcommon-1.10.0

Changelog
---------

## API

### Breaking changes

- *Modifiers masks* handling has been refactored to properly handle virtual
  modifiers. Modifier masks are now always considered as an *opaque encoding* of
  the modifiers state:
  - Modifiers masks should not be interpreted by other means than the provided API.
    In particular, one should not assume that modifiers masks always denote the
    modifiers *indexes* of the keymap.
  - It enables using virtual modifiers with arbitrary mappings. E.g. one can now
    reliably create virtual modifiers without relying on the legacy X11 mechanism,
    that requires a careful use of keys’ real and virtual modmaps.
  - It enables *interoperability* with further implementations of XKB.
- Changed *Compose* behavior so that sequences defined later always override
  ones defined earlier, even if the new sequence is shorter.

  Contributed by Jules Bertholet

### Deprecated

- Server applications using `xkb_state_update_mask()` should migrate to using
  `xkb_state_update_latched_locked()` instead, for proper handling of the keyboard
  state. ([#310](https://github.com/xkbcommon/libxkbcommon/issues/310))
- The following modifiers names in `xkbcommon/xkbcommon-names.h` are now deprecated
  and will be removed in a future version:
  - `XKB_MOD_NAME_ALT`: use `XKB_VMOD_NAME_ALT` instead.
  - `XKB_MOD_NAME_LOGO`: use `XKB_VMOD_NAME_SUPER` instead.
  - `XKB_MOD_NAME_NUM`: use `XKB_VMOD_NAME_NUM` instead.

  ([#538](https://github.com/xkbcommon/libxkbcommon/issues/538))

### New

- Added `xkb_state_update_latched_locked()` to update the keyboard state to change
  the latched and locked state of the modifiers and layout.

  This entry point is intended for *server* applications and should not be used
  by *client* applications. This can be use for e.g. a GUI layout switcher.
  ([#310](https://github.com/xkbcommon/libxkbcommon/issues/310))
- Added `xkb_keymap_mod_get_mask()` to query the mapping of a modifier.
- Added `VoidAction()` action to match the keysym pair `NoSymbol`/`VoidSymbol`.
  It enables erasing a previous action and breaks latches.

  This is a libxkbcommon extension. When serializing it will be converted to
  `LockControls(controls=none,affect=neither)` for backward compatibility.
  ([#622](https://github.com/xkbcommon/libxkbcommon/issues/622))
- Improved syntax errors in XKB files to include the expected/got tokens.
  ([#644](https://github.com/xkbcommon/libxkbcommon/issues/644))

### Fixes

- *Compose*: fixed sequence not fully overriden if the new sequence has no
  keysym or string.


## Tools

### New

- `xkbcli-compile-keymap`: Added option `--modmaps` that prints modifiers mappings.
  This is similar to the legacy `xmodmap -pm`.


## Build system

### Breaking changes

- Removed support for byacc -- use bison instead. 
  ([#644](https://github.com/xkbcommon/libxkbcommon/issues/644))

Git tag:
--------

git tag: xkbcommon-1.10.0
git commit: 7888474d0296dcad50c9ba4adfdfdf2be02d35e1

Cheers,
Pierre Le Marre (aka Wismill)


More information about the wayland-devel mailing list