Opened 10 months ago
Closed 9 months ago
#21504 closed enhancement (fixed)
libxkbcommon-1.9.1.
| Reported by: | Bruce Dubbs | Owned by: | Bruce Dubbs |
|---|---|---|---|
| Priority: | normal | Milestone: | 12.4 |
| Component: | BOOK | Version: | git |
| Severity: | normal | Keywords: | |
| Cc: |
Description
New minor version.
Change History (7)
comment:1 by , 10 months ago
comment:2 by , 9 months ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:3 by , 9 months ago
libxkbcommon [1.9.0] - 2025-04-26
API
Breaking changes
- *Merge modes* and *include mechanism* were completely refactored to fix inconsistencies. Included files are now always processed in isolation and do not propagate the local merge modes. This makes the reasoning about included files much easier and consistent.
- Trailing
NoSymbolandNoAction()are now dropped. This may affect keys that rely on an *implicit* key type.
New
- Added function
xkb_components_names_from_rules()to compute <abbr title="Keycodes, Compatibility, Geometry, Symbols, Types">KcCGST</abbr> keymap components from <abbr title="Rules, Model, Layout, Variant, Options">RMLVO</abbr> names resolution. This mainly for *debugging* purposes and to enable the--kccgstoption in the tools. (https://github.com/xkbcommon/libxkbcommon/issues/669)) - Added the following *wild cards* to the rules file syntax, in addition to
the current
*legacy wild card:<none>: Match *empty* value.<some>: Match *non-empty* value.<any>: Match *any* (optionally empty) value. Its behavior does not depend on the context, contrary to the legacy wild card*.
- All keymap components are now optional, e.g. a keymap without a
xkb_typessection is now legal. The missing components will still be serialized explicitly in order to maintain backward compatibility. - Added support for further empty compound statements:
xkb_types:type \"xxx\" {};xkb_compat:interpret x {};andindicator \"xxx\" {};.
Such statements are initialized using the current defaults, i.e. the factory implicit defaults or some explicit custom defaults (e.g.
indicator.modifiers = Shift).
- Added support for actions and keysyms level list of length 0 and 1: respectively
{}and{a}. Example:key <A> { [{}, {a}, {a, A}] };. - Enable using the merge mode *replace* in include statements using the prefix
^, such as:include "a^b". The main motivation is to enable this new syntax in *rules*, which previously could not handle this merge mode. - Added support for sequences of actions in
interpretstatements of thexkb_compatcomponent, mirroring the syntax used inxkb_symbols. ((https://github.com/xkbcommon/libxkbcommon/issues/695)) - Added support for keysym Capitalization transformation to
xkb_state_key_get_syms(). ((https://github.com/xkbcommon/libxkbcommon/issues/552)) xkb_utf32_to_keysym: Allow [Unicode noncharacters]. ((https://github.com/xkbcommon/libxkbcommon/issues/715))xkb_keysym_from_name: [Unicode noncharacters]: https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Noncharacters
- Added [Unicode code point] escape sequences
\u{NNNN}. They are replaced with the [UTF-8] encoding of their corresponding code pointU+NNNN, if legal. Supported Unicode code points are in the range1‥0x10ffff. This is intended mainly for writing keysyms as [UTF-8] encoded strings.
[Unicode code point]: https://en.wikipedia.org/wiki/Unicode#Codespace_and_code_points [UTF-8]: https://en.wikipedia.org/wiki/UTF-8
- Enable to write keysyms as UTF-8-encoded strings:
- *Single* Unicode code point
U+1F3BA(TRUMPET)"🎺"is converted into a single keysym:U1F3BA. - *Multiple* Unicode code points are converted to a keysym *list* where it is
allowed (i.e. in key symbols). E.g.
"J́"is converted to U+004A LATIN CAPITAL LETTER J plus U+0301 COMBINING ACUTE ACCENT:{J, U0301}. - An empty string
""denotes the keysymNoSymbol.
- *Single* Unicode code point
- Enable displaying bidirectional text in XKB files using the following Unicode
code points, wherever a white space can be used:
- U+200E LEFT-TO-RIGHT MARK
- U+200F RIGHT-TO-LEFT MARK
- Unicode format
UNNNN: allow control characters C0 and C1 and usexkb_utf32_to_keysymfor the conversion whenNNNN < 0x100, for backward compatibility. - Numeric hexadecimal format
0xNNNN: *unchanged*. Contrary to the Unicode format, it does not normalize any keysym values in order to enable roundtrip withxkb_keysym_get_name.
Fixes
- Added support for
libxml2-2.14+, which now disallows parsing trailingNULLbytes. ((https://github.com/xkbcommon/libxkbcommon/issues/692)) - Fixed included *default* section not resolving to an *exact* match in some cases. It may occur if one creates a file name in a *user* XKB directory that also exists in the XKB *system* directory.
Example: if one creates a custom variant
my_variantin the file$XDG_CONFIG_HOME/xkb/symbols/us, then *before* libxkbcommon 1.9.0 every statement loading the *default* map of theusfile,include "us", would wrongly resolve includingus(my_variant)from the *user* configuration directory instead ofus(basic)from the XKB *system* directory. Starting from libxkbcommon 1.9.0,include "us"would correctly resolve to the system file, unless$XDG_CONFIG_HOME/xkb/symbols/uscontains an *explicit default* section. (#726(https://github.com/xkbcommon/libxkbcommon/issues/726))
- Fixed floating-point number parsing failling on locales that use a decimal
separator different than the period
..
Note that the issue is unlikely to happen even with such locales, unless *parsing* a keymap with a *geometry* component which contains floating-point numbers.
Affected API:
xkb_keymap_new_from_file(),xkb_keymap_new_from_buffer(),xkb_keymap_new_from_string().
Unaffected API:
xkb_keymap_new_from_names(): none of the components loaded use floating-point number. libxkbcommon does not load *geometry* files.libxkbcommon-x11: no such parsing is involved.
- Fixed the handling of empty keys. Previously keys with no symbols nor actions would simply be skipped entirely.
- Fixed characters not escaped properly in the keymap serialization, resulting in a keymap string with erroneous string literals and possible syntax errors.
- Fixed octal escape sequences valid in Xorg’s xkbcomp but not in xkbcommon. Now up to *4* digits are parsed, compared to *3* previously.
- Fixed the serialization of the
whichGroupStateindicator field.
Tools
New
xkbcli compile-keymap: Added--kccgstoption to display the result of <abbr title="Rules, Model, Layout, Variant, Options">RMLVO</abbr> names resolution to <abbr title="Keycodes, Compatibility, Geometry, Symbols, Types">KcCGST</abbr> components.
This option has the same function than
setxkbmap -print. This is particularly useful for debugging issues with the rules. ((https://github.com/xkbcommon/libxkbcommon/issues/669))
- Honor user locale in all tools.
comment:4 by , 9 months ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Fixed at commits
39a24ce33d Update to unbound-1.23.0. c7507877e9 pdate to xfce4-pulseaudio-plugin-0.5.1. 83e2805657 Update to libxkbcommon-1.9.0. 4b683ccbe5 Update to ncftp-3.3.0. 5f06c2497d Update to enchant-2.8.3.
comment:5 by , 9 months ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
| Summary: | libxkbcommon-1.9.0 → libxkbcommon-1.9.1. |
Now version 1.9.1.
comment:6 by , 9 months ago
libxkbcommon [1.9.1] - 2025-05-02
API
Fixes
- X11: Fixed capitalization transformation not set properly, resulting in some keys (e.g. arrows, Home, etc.) not working when Caps Lock is on.
comment:7 by , 9 months ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Fixed at commits
d59953ba0a pdate to enchant-2.8.4. 771abe526e Update to libxkbcommon-1.9.1.

Has the libxml2 fix.