Skip to content

Commit 76740e0

Browse files
wismillbluetech
authored andcommitted
Bump version to 1.8.0 and update changelog
1 parent 80233f9 commit 76740e0

36 files changed

+274
-176
lines changed

NEWS.md

+269-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,272 @@
1-
libxkbcommon 1.7.0 - 2024-03-24
2-
==================
1+
libxkbcommon [1.8.0] - 2025-02-04
2+
=================================
3+
4+
[1.8.0]: https://github.com/xkbcommon/libxkbcommon/tree/xkbcommon-1.8.0
5+
6+
## API
7+
8+
### Breaking changes
9+
10+
- `NoSymbol` is now systematically dropped in multi-keysyms levels:
11+
12+
```c
13+
// Before normalization
14+
key <> { [{NoSymbol}, {a, NoSymbol}, {NoSymbol,b}, {a, NoSymbol, b}] };
15+
// After normalization
16+
key <> { [NoSymbol, a, b, {a, b}] };
17+
```
18+
19+
- Added the upper case mapping ß → ẞ (`ssharp` → `U1E9E`). This enable to type
20+
ẞ using CapsLock thanks to the internal capitalization rules.
21+
22+
- Updated keysyms case mappings to cover full **[Unicode 16.0]**. This change
23+
provides a *consistent behavior* with respect to case mappings, and affects
24+
the following:
25+
26+
- `xkb_keysym_to_lower()` and `xkb_keysym_to_upper()` give different output
27+
for keysyms not covered previously and handle *title*-cased keysyms.
28+
29+
Example of title-cased keysym: `U01F2` “Dz”:
30+
- `xkb_keysym_to_lower(U01F2) == U01F3` “Dz” → “dz”
31+
- `xkb_keysym_to_upper(U01F2) == U01F1` “Dz” → “DZ”
32+
- *Implicit* alphabetic key types are better detected, because they use the
33+
latest Unicode case mappings and now handle the *title*-cased keysyms the
34+
same way as upper-case ones.
35+
36+
Note: There is a single *exception* that do not follow the Unicode mappings:
37+
- `xkb_keysym_to_upper(ssharp) == U1E9E` “ß” → “ẞ”
38+
39+
Note: As before, only *simple* case mappings (i.e. one-to-one) are supported.
40+
For example, the full upper case of `U+01F0` “ǰ” is “J̌” (2 characters: `U+004A`
41+
and `U+030C`), which would require 2 keysyms, which is not supported by the
42+
current API.
43+
44+
[Unicode 16.0]: https://www.unicode.org/versions/Unicode16.0.0/
45+
46+
### New
47+
48+
- Implemented the `GroupLatch` action, usually activated with the keysym
49+
`ISO_Group_Latch`.
50+
([#455](https://github.com/xkbcommon/libxkbcommon/issues/455))
51+
52+
- Symbols: Added support for *multiple actions per levels:*
53+
- When no action is specified, `interpret` statements are used to find an
54+
action corresponding to *each* keysym, as expected.
55+
- When both keysyms and actions are specified, they may have a different count
56+
for each level.
57+
- For now, at most one action of each of the following categories is allowed
58+
per level:
59+
- modifier actions: `SetMods`, `LatchMods`, `LockMods`;
60+
- group actions: `SetGroup`, `LatchGroup`, `LockGroup`.
61+
62+
Some examples:
63+
- `SetMods` + `SetGroup`: ok
64+
- `SetMods` + `SetMods`: error
65+
- `SetMods` + `LockMods`: error
66+
- `SetMods` + `LockGroup`: ok
67+
68+
([#486](https://github.com/xkbcommon/libxkbcommon/issues/486))
69+
70+
- Updated keysyms using latest [xorgproto]
71+
(commit: `d7ea44d5f04cc476dee83ef439a847172f7a6bd1`):
72+
73+
Additions:
74+
75+
- `XKB_KEY_XF86RefreshRateToggle`
76+
- `XKB_KEY_XF86Accessibility`
77+
- `XKB_KEY_XF86DoNotDisturb`
78+
79+
Relevant upstream merge request: [xorgproto-91].
80+
81+
[xorgproto-91]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/91
82+
83+
- Added deprecated keysym warnings:
84+
- *name* deprecation (typo, historical alias), reporting the reference name;
85+
- *keysym* deprecation (ambiguous meaning, all names deprecated).
86+
87+
These warnings are activated by setting the log verbosity to at least 2.
88+
89+
It is advised to fix these warnings, as the deprecated items may be removed in
90+
a future release.
91+
92+
- `xkbcommon-names.h`: Added the following modifiers names definitions:
93+
- `XKB_MOD_NAME_MOD1`
94+
- `XKB_MOD_NAME_MOD2`
95+
- `XKB_MOD_NAME_MOD3`
96+
- `XKB_MOD_NAME_MOD4`
97+
- `XKB_MOD_NAME_MOD5`
98+
- `XKB_VMOD_NAME_ALT`
99+
- `XKB_VMOD_NAME_META`
100+
- `XKB_VMOD_NAME_NUM`
101+
- `XKB_VMOD_NAME_SUPER`
102+
- `XKB_VMOD_NAME_HYPER`
103+
- `XKB_VMOD_NAME_LEVEL3`
104+
- `XKB_VMOD_NAME_LEVEL5`
105+
- `XKB_VMOD_NAME_SCROLL`
106+
107+
- `xkbcommon-names.h`: Added `XKB_LED_NAME_COMPOSE` and `XKB_LED_NAME_KANA`
108+
definitions to cover all LEDs defined in
109+
[USB HID](https://usb.org/sites/default/files/hid1_11.pdf).
110+
111+
Contributed by Martin Rys
112+
113+
- Rules: Use XKB paths to resolve relative paths in include statements.
114+
([#501](https://github.com/xkbcommon/libxkbcommon/issues/501))
115+
116+
- Rules: Added support for special layouts indexes:
117+
- *single*: matches a single layout; `layout[single]` is the same as without
118+
explicit index: `layout`.
119+
- *first*: matches the first layout/variant, no matter how many layouts are in
120+
the RMLVO configuration. Acts as both `layout` and `layout[1]`.
121+
- *later*: matches all but the first layout. This is an index range. Acts as
122+
`layout[2]` .. `layout[MAX_LAYOUT]`, where `MAX_LAYOUT` is currently 4.
123+
- *any*: matches layout at any position. This is an index range.
124+
125+
Also added:
126+
- the special index `%i` which correspond to the index of the matched layout.
127+
- the `:all` qualifier: it applies the qualified item to all layouts.
128+
129+
See the [documentation](https://xkbcommon.org/doc/current/rule-file-format.html)
130+
for further information.
131+
132+
### Fixes
133+
134+
- Previously, setting *explicit actions* for a group in symbols files made the
135+
parser skip compatibility interpretations for *all* groups in the corresponding
136+
key, resulting in possibly broken groups with *no* explicit actions or missing
137+
key fields.
138+
139+
Fixed by skipping interpretations only for groups with explicit actions when
140+
parsing a keymap and setting relevant fields explicitly when serializing a
141+
keymap to a string.
142+
([#511](https://github.com/xkbcommon/libxkbcommon/issues/511))
143+
144+
- `xkb_keymap_new_from_names`: Allow only one group per key in symbols sections.
145+
While the original issue was [fixed in `xkeyboard-config`][xkeyboard-config-253]
146+
project, the previous handling in `libxkbcommon` of extra key groups was deemed
147+
unintuitive.
148+
149+
[xkeyboard-config-253]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/253
150+
151+
Note: rules resolution may still produce more groups than the input layouts.
152+
This is currently true for some [legacy rules in `xkeyboard-config`][xkeyboard-config-legacy-rules].
153+
154+
([#262](https://github.com/xkbcommon/libxkbcommon/issues/262))
155+
156+
[xkeyboard-config-legacy-rules]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/6a2eb9e63bcb3c52584580570d31cd91110d1f2e/rules/0013-modellayout_symbols.part#L2
157+
158+
- Fixed `xkb_keymap_get_as_string` truncating the *4* longest keysyms names,
159+
such as `Greek_upsilonaccentdieresis`.
160+
161+
- `xkb_keysym_to_utf8`: Require only 5 bytes for the buffer, as UTF-8 encodes
162+
code points on up to 4 bytes + 1 byte for the NULL-terminating byte.
163+
Previous standard [RFC 2279](https://datatracker.ietf.org/doc/html/rfc2279)
164+
(1998) required up to 6 bytes per code point, but has been superseded by
165+
[RFC 3629](https://datatracker.ietf.org/doc/html/rfc3629) (2003).
166+
([#418](https://github.com/xkbcommon/libxkbcommon/issues/418))
167+
168+
- Registry: Fixed `libxml2` global error handler not reset after parsing, which
169+
could trigger a crash if the corresponding `rxkb_context` has been freed.
170+
171+
Contributed by Sebastian Keller.
172+
([#529](https://github.com/xkbcommon/libxkbcommon/issues/529))
173+
174+
- Rules: Fix handling of wild card `*` to match the behavior of `libxkbfile`.
175+
Previously `*` would match any value, even empty one. Now:
176+
- For `model` and `options`: *always* match.
177+
- For `layout` and `variant`: match any *non-empty* value.
178+
179+
([#497](https://github.com/xkbcommon/libxkbcommon/issues/497))
180+
181+
- Fixed `LatchGroup` action with the `latchToLock` option disabled not applying
182+
its latch effect multiple times.
183+
([#577](https://github.com/xkbcommon/libxkbcommon/issues/577))
184+
185+
- Fixed incorrect handling of group indicators when `whichGroupState` is set with
186+
`Base` or `Latched`.
187+
([#579](https://github.com/xkbcommon/libxkbcommon/issues/579))
188+
189+
- Fixed missing explicit virtual modifier mappings when export the keymap as a string.
190+
191+
- Fixed the lower case mapping ẞ → ß (`U1E9E` → `ssharp`). This re-enable the
192+
detection of alphabetic key types for the pair (ß, ẞ).
193+
194+
- Fixed modifiers not properly unset when multiple latches are used simultaneously.
195+
([#583](https://github.com/xkbcommon/libxkbcommon/issues/583))
196+
197+
- The following functions now allow to query also *virtual* modifiers, so they work
198+
with *any* modifiers (real *and* virtual):
199+
- `xkb_state_mod_index_is_active`
200+
- `xkb_state_mod_indices_are_active`
201+
- `xkb_state_mod_name_is_active`
202+
- `xkb_state_mod_names_are_active`
203+
- `xkb_state_mod_index_is_consumed`
204+
- `xkb_state_mod_index_is_consumed2`
205+
- `xkb_state_mod_mask_remove_consumed`
206+
207+
Warning: they may overmatch in case there are overlappings virtual-to-real
208+
modifiers mappings.
209+
210+
- X11: Do not drop a level when the keysym is undefined but not the action.
211+
212+
213+
## Tools
214+
215+
### New
216+
217+
- Added `xkbcli dump-keymap-wayland` and `xkbcli dump-keymap-x11` debugging
218+
tools to dump a keymap from a Wayland compositor or a X server, similar to
219+
what `xkbcomp -xkb $DISPLAY -` does for X servers.
220+
221+
- `xkbcli compile-compose`: the Compose file may be passed as a positional
222+
argument and `--file` is now deprecated. The file can also be piped to the
223+
standard input by setting the path to `-`.
224+
225+
- `xkbcli compile-keymap`: Added `--keymap` as a more intuitive alias for
226+
`--from-xkb`. Both now accept an optional keymap file argument. These flags
227+
may be omitted; in this case the keymap file may be passed as a positional
228+
argument.
229+
230+
- Added `--test` option to `compile-keymap` and `compile-compose`, to enable
231+
testing compilation without printing the resulting file.
232+
233+
- `xkbcli how-to-type`: added new input formats and their corresponding documentation.
234+
235+
*Unicode code points* can be passed in the following formats:
236+
- Literal character (requires UTF-8 character encoding of the terminal);
237+
- Decimal number;
238+
- Hexadecimal number: either `0xNNNN` or `U+NNNN`.
239+
240+
*Keysyms* can to be passed in the following formats:
241+
- Decimal number;
242+
- Hexadecimal number: `0xNNNN`;
243+
- Name.
244+
245+
### Fixes
246+
247+
- Fixed various tools truncating the *4* longest keysyms names, such as
248+
`Greek_upsilonaccentdieresis`.
249+
250+
- `xkbcli list`: Fix duplicate variants.
251+
([#587](https://github.com/xkbcommon/libxkbcommon/issues/587))
252+
253+
254+
## Build system
255+
256+
### Breaking changes
257+
258+
- Raised minimal meson version requirement to 0.58.
259+
260+
### Fixes
261+
262+
- Make the test of `-Wl,--version-script` more robust.
263+
([#481](https://github.com/xkbcommon/libxkbcommon/issues/481))
264+
265+
266+
libxkbcommon [1.7.0] - 2024-03-24
267+
=================================
268+
269+
[1.7.0]: https://github.com/xkbcommon/libxkbcommon/tree/xkbcommon-1.7.0
3270
4271
API
5272
---

changes/api/+619.canonical-keysym-list.breaking.md

-8
This file was deleted.

changes/api/+compose-and-kana-led-names.features.md

-4
This file was deleted.

changes/api/+deprecated-keysyms-warning.feature.md

-8
This file was deleted.

changes/api/+dump-explicit-vmod-mappings.bugfix.md

-1
This file was deleted.

changes/api/+fix-keysym-name-max-size.bugfix.md

-1
This file was deleted.

changes/api/+fix-x11-action-only-handling.bugfix.md

-1
This file was deleted.

changes/api/+großes-ẞ.breaking.md

-2
This file was deleted.

changes/api/+großes-ẞ.bugfix.md

-2
This file was deleted.

changes/api/+modern-rules.feature.md

-15
This file was deleted.

changes/api/+new-keysyms.feature.md

-11
This file was deleted.

changes/api/+new-modifiers-names.feature.md

-14
This file was deleted.

changes/api/+query-virtual-modifiers-state.bugfix.md

-12
This file was deleted.

changes/api/+unicode-16.breaking.md

-23
This file was deleted.

changes/api/262.only-one-group-per-key.bugfix.md

-6
This file was deleted.

0 commit comments

Comments
 (0)