Fix issue detected by static analysis tool
[platform/upstream/libxkbcommon.git] / NEWS
1 libxkbcommon 1.6.0 - 2023-10-08
2 ==================
3
4 API
5 ---
6
7 ### Breaking changes
8
9 - *Remove* keysyms that were intended for German T3 layout but are unused:
10
11   - `XKB_KEY_dead_lowline`
12   - `XKB_KEY_dead_aboveverticalline`
13   - `XKB_KEY_dead_belowverticalline`
14   - `XKB_KEY_dead_longsolidusoverlay`
15
16   See the upstream [`xorgproto` MR](https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/70). See hereinafter for further changes related to keysyms.
17
18 ### New
19
20 - Add Compose iterator API to iterate the entries in a compose table:
21
22   - `xkb_compose_table_entry_sequence`
23   - `xkb_compose_table_entry_keysym`
24   - `xkb_compose_table_entry_utf8`
25   - `xkb_compose_table_iterator_new`
26   - `xkb_compose_table_iterator_free`
27   - `xkb_compose_table_iterator_next`
28
29 - *Structured log messages* with a message registry. There is an *ongoing* work
30   to assign unique identifiers to log messages and add a corresponding error
31   index documentation page:
32
33   - The log entries are preceded with an identifier in the form `XKB-NNN`, where
34     `NNN` is a decimal number.
35
36   - The log entries can then be parsed with third-party tools, to check for
37     specific identifiers.
38
39   - The new documentation page “**Error index**” lists all the kind of error messages
40     with their identifiers. The aim is that each entry could present detailed
41     information on the error and how to fix it.
42
43 - Add a new warning for numeric keysyms references in XKB files: the preferred
44   keysym reference form is its name or its Unicode value, if relevant.
45
46 - Add the upper bound `XKB_KEYSYM_MAX` to check valid keysyms.
47
48 - Add a warning when loading a keymap using RMLVO with no layout but with the
49   variant set. The variant is actually discarded and both layout and variant are
50   set to default values, but this was done previously with no warning, confusing
51   end users.
52
53 - Add support for `modifier_map None { … }`. This feature is missing compared to
54   the X11 implementation. It allows to reset the modifier map of a key.
55
56 - Update keysyms using latest [xorgproto] (commit: `1c8128d72df22843a2022576850bc5ab5e3a46ea`):
57
58   - Additions:
59
60     - `XKB_KEY_ordmasculine` ([xorgproto-68])
61     - `XKB_KEY_guillemetleft` ([xorgproto-68])
62     - `XKB_KEY_guillemetright` ([xorgproto-68])
63     - `XKB_KEY_dead_schwa` ([xorgproto-78])
64     - `XKB_KEY_dead_SCHWA` ([xorgproto-78])
65     - `XKB_KEY_dead_hamza` ([xorgproto-71])
66     - `XKB_KEY_XF86EmojiPicker` ([xorgproto-44])
67     - `XKB_KEY_XF86Dictate` ([xorgproto-49])
68     - `XKB_KEY_XF86CameraAccessEnable` ([xorgproto-82])
69     - `XKB_KEY_XF86CameraAccessDisable` ([xorgproto-82])
70     - `XKB_KEY_XF86CameraAccessToggle` ([xorgproto-82])
71     - `XKB_KEY_XF86NextElement` ([xorgproto-82])
72     - `XKB_KEY_XF86PreviousElement` ([xorgproto-82])
73     - `XKB_KEY_XF86AutopilotEngageToggle` ([xorgproto-82])
74     - `XKB_KEY_XF86MarkWaypoint` ([xorgproto-82])
75     - `XKB_KEY_XF86Sos` ([xorgproto-82])
76     - `XKB_KEY_XF86NavChart` ([xorgproto-82])
77     - `XKB_KEY_XF86FishingChart` ([xorgproto-82])
78     - `XKB_KEY_XF86SingleRangeRadar` ([xorgproto-82])
79     - `XKB_KEY_XF86DualRangeRadar` ([xorgproto-82])
80     - `XKB_KEY_XF86RadarOverlay` ([xorgproto-82])
81     - `XKB_KEY_XF86TraditionalSonar` ([xorgproto-82])
82     - `XKB_KEY_XF86ClearvuSonar` ([xorgproto-82])
83     - `XKB_KEY_XF86SidevuSonar` ([xorgproto-82])
84     - `XKB_KEY_XF86NavInfo` ([xorgproto-82])
85
86   - Deprecations:
87
88     - `XKB_KEY_masculine`: use `XKB_KEY_ordmasculine` instead ([xorgproto-68])
89     - `XKB_KEY_guillemotleft`: use `XKB_KEY_guillemetleft` instead ([xorgproto-68])
90     - `XKB_KEY_guillemotright`: use `XKB_KEY_guillemetright` instead ([xorgproto-68])
91     - `XKB_KEY_dead_small_schwa`: use `XKB_KEY_dead_schwa` instead ([xorgproto-78])
92     - `XKB_KEY_dead_capital_schwa`: use `XKB_KEY_dead_SCHWA` instead ([xorgproto-78])
93
94   [xorgproto]: https://gitlab.freedesktop.org/xorg/proto/xorgproto
95   [xorgproto-44]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/44
96   [xorgproto-49]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/49
97   [xorgproto-68]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/68
98   [xorgproto-71]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/71
99   [xorgproto-78]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/78
100   [xorgproto-82]: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/82
101
102 - Ongoing work to improve the documentation about XKB and its V1 format.
103
104 ### Fixes
105
106 - Prevent `xkb_keysym_from_name` to parse out-of-range hexadecimal keysyms.
107
108 - Disallow producing NULL character with escape sequences `\0` and `\x0`.
109
110 - Prevent overflow of octal escape sequences by making `\400..\777` invalid.
111
112 - Prevent interpreting and emitting invalid Unicode encoding forms: surrogates
113   are invalid in both UTF-32 and UTF-8.
114
115 - `xkb_keymap_new_from_buffer`: Allow for a NULL-terminated keymap string.
116
117 - Compose: Increase the limit of possible entries to handle huge Compose files.
118
119 Tools
120 -----
121
122 ### New
123
124 - Add bash completions for `xkbcli` and its subcommands.
125
126 - `xkbcli interactive-*`: Add options `--short` to hide some fields.
127
128 - `xkbcli interactive-evdev`: Add `--includes` and `--include-defaults` options.
129
130 - Add `xkb-check-messages` *experimental* tool (not installed).
131   It checks whether given log messages identifiers are supported.
132
133 ### Fixes
134
135 - `xkbcli compile-keymap`: Allow to use without arguments.
136
137 - `xkbcli interactive-*`: Always print keycode.
138
139 - `xkbcli interactive-*`: Escape control characters for Unicode output, instead of
140   printing them as-is, messing the output.
141
142 Build system
143 ------------
144
145 - Bump required meson to 0.52.0.
146
147 - Allow `xkbcommon` to be used as a subproject.
148
149 - Improve Windows compilation.
150
151 libxkbcommon 1.5.0 - 2023-01-02
152 ==================
153
154 - Add `xkb_context` flag `XKB_CONTEXT_NO_SECURE_GETENV` and `rxkb_context` flag
155   `RXKB_CONTEXT_NO_SECURE_GETENV`.
156
157   xkbcommon uses `getenv_secure()` to obtain environment variables. This flag
158   makes xkbcommon use `getenv()` instead.
159
160   This is useful for some clients that have relatively benign capabilities set,
161   like CAP_SYS_NICE, that also want to use e.g. the XKB configuration from the
162   environment and user configs in XDG_CONFIG_HOME.
163
164   Contributed by Ronan Pigott.
165
166 - Fix crash in `xkbcli interactive-wayland` under a compositor which supports
167   new versions of the xdg-shell protocol.
168
169   Contributed by Jan Alexander Steffens (heftig).
170
171 - Fix some MSVC build issues.
172
173 - Fix some issues when including xkbcommon as a meson subproject.
174
175 - meson>=0.51 is now required.
176
177 - New API:
178   XKB_CONTEXT_NO_SECURE_GETENV
179   RXKB_CONTEXT_NO_SECURE_GETENV
180
181 libxkbcommon 1.4.1 - 2022-05-21
182 ==================
183
184 - Fix compose sequence overriding (common prefix) not working correctly.
185   Regressed in 1.2.0.
186
187   Contributed by Weng Xuetian.
188
189 - Remove various bogus currency sign (particulary Euro and Korean Won) entries
190   from the keysym <-> Unicode mappings. They prevented the real
191   keysyms/codepoints for these from mapping correctly.
192
193   Contributed by Sam Lantinga and Simon Ser.
194
195 libxkbcommon 1.4.0 - 2022-02-04
196 ==================
197
198 - Add `enable-tools` option to Meson build (on by default) to allow disabling
199   the `xkbcli` tools.
200
201   Contributed by Alex Xu (Hello71).
202
203 - In `xkbcli list`, fix "YAML Norway problem" in output.
204
205   Contributed by Peter Hutterer.
206
207 - In libxkbregistry, variants now inherit iso639, iso3166 and brief from parent
208   layout if omitted.
209
210   Contributed by M Hickford.
211
212 - In libxkbregistry, don't call `xmlCleanupParser()` - it's not supposed to
213   be called by libraries.
214
215   Contributed by Peter Hutterer.
216
217 - In libxkbregistry, skip over invalid ISO-639 or ISO-3166 entries.
218
219   Contributed by Peter Hutterer.
220
221 libxkbcommon 1.3.1 - 2021-09-10
222 ==================
223
224 - In `xkbcli interactive-x11`, use the Esc keysym instead of the Esc keycode
225   for quitting.
226
227   Contributed by Simon Ser.
228
229 - In `xkbcli how-to-type`, add `--keysym` argugment for how to type a keysym
230   instead of a Unicode codepoint.
231
232 - Fix a crash in `xkb_x11_keymap_new_from_device` error handling given some
233   invalid keymaps. Regressed in 1.2.0.
234
235   Reported by Zack Weinberg. Tested by Uli Schlachter.
236
237 libxkbcommon 1.3.0 - 2021-05-01
238 ==================
239
240 - Change `xkbcli list` to output YAML, instead of the previous ad-hoc format.
241
242   This allows to more easily process the information in a programmetic way, for
243   example
244
245     xkbcli list | yq -r ".layouts[].layout"
246
247   Contributed by Peter Hutterer.
248
249 - Optimize a certain part of keymap compilation (atom interning).
250
251 - Fix segmentation fault in case-insensitive `xkb_keysym_from_name` for certain
252   values like the empty string.
253
254   Contributed by Isaac Freund.
255
256 - Support building libxkbcommon as a meson subproject.
257
258   Contributed by Adrian Perez de Castro.
259
260 - Add `ftruncate` fallback for `posix_fallocate` in `xkbcli interactive-wayland`
261   for FreeBSD.
262
263   Contributed by Evgeniy Khramtsov.
264
265 - Properly export library symbols in MSVC.
266
267   Contributed by Adrian Perez de Castro.
268
269 libxkbcommon 1.2.1 - 2021-04-07
270 ==================
271
272 - Fix `xkb_x11_keymap_new_from_device()` failing when the keymap contains key
273   types with missing level names, like the one used by the `numpad:mac` option
274   in xkeyboard-config. Regressed in 1.2.0.
275
276 libxkbcommon 1.2.0 - 2021-04-03
277 ==================
278
279 - `xkb_x11_keymap_new_from_device()` is much faster. It now performs only 2
280   roundtrips to the X server, instead of dozens (in first-time calls).
281
282   Contributed by Uli Schlachter.
283
284 - Case-sensitive `xkb_keysym_from_name()` is much faster.
285
286 - Keysym names of the form `0x12AB` and `U12AB` are parsed more strictly.
287   Previously the hexadecimal part was parsed with `strtoul()`, now only up
288   to 8 hexadecimal digits (0-9A-Fa-f) are allowed.
289
290 - Compose files now have a size limit (65535 internal nodes). Further sequences
291   are discared and a warning is issued.
292
293 - Compose table loading (`xkb_compose_table_new_from_locale()` and similar) is
294   much faster.
295
296 - Use `poll()` instead of `epoll()` for `xlbcli interactive-evdev`, making it
297   portable to FreeBSD which provides evdev but not epoll. On FreeBSD, remember
298   to install the `evdev-proto` package to get the evdev headers.
299
300 - The build now requires a C11 compiler (uses anonymous structs/unions).
301
302 libxkbcommon 1.1.0 - 2021-02-27
303 ==================
304
305 - Publish the `xkb-format-text-v1.md` file in the HTML documentation. This file
306   existed for a long time but only in the Git repository.
307   Link: https://xkbcommon.org/doc/current/md_doc_keymap_format_text_v1.html
308
309 - Add partial documentation for xkb_symbols to xkb-format-text-v1.md.
310
311   Contributed by Simon Zeni.
312
313 - Update keysym definitions to latest xorgproto. In particular, this adds many
314   special keysyms corresponding to Linux evdev keycodes.
315
316   Contributed by Peter Hutterer <@who-t.net>.
317
318 - New API:
319   Too many XKB_KEY_* definitions to list here.
320
321 libxkbcommon 1.0.3 - 2020-11-23
322 ==================
323
324 - Fix (hopefully) a segfault in xkb_x11_keymap_new_from_device() in some
325   unclear situation (bug introduced in 1.0.2).
326
327 - Fix keymaps created with xkb_x11_keymap_new_from_device() don't have level
328   names (bug introduced in 0.8.0).
329
330 libxkbcommon 1.0.2 - 2020-11-20
331 ==================
332
333 - Fix a bug where a keysym that cannot be resolved in a keymap gets compiled to
334   a garbage keysym. Now it is set to XKB_KEY_NoSymbol instead.
335
336 - Improve the speed of xkb_x11_keymap_new_from_device() on repeated calls in the
337   same xkb_context().
338
339
340 libxkbcommon 1.0.1 - 2020-09-11
341 ==================
342
343 - Fix the tool-option-parsing test failing.
344
345 - Remove requirement for pytest in the tool-option-parsing test.
346
347 - Make the table output of `xkbcli how-to-type` aligned.
348
349 - Some portability and test isolation fixes.
350
351 libxkbcommon 1.0.0 - 2020-09-05
352 ==================
353
354 Note: this release is API and ABI compatible with previous releases -- the
355 major version bump is only an indication of stability.
356
357 - Add libxkbregistry as configure-time optional library. libxkbregistry is a C
358   library that lists available XKB models, layouts and variants for a given
359   ruleset. This is a separate library (libxkbregistry.so, pkgconfig file
360   xkbregistry.pc) and aimed at tools that provide a listing of available
361   keyboard layouts to the user. See the Documentation for details on the API.
362
363   Contributed by Peter Hutterer <@who-t.net>.
364
365 - Better support custom user configuration:
366
367     * Allow including XKB files from other paths.
368
369       Previously, a 'symbols/us' file in path A would shadow the same file in
370       path B. This is suboptimal, we rarely need to hide the system files - we
371       care mostly about *extending* them. By continuing to check other lookup
372       paths, we make it possible for a XDG_CONFIG_HOME/xkb/symbols/us file to
373       have sections including those from /usr/share/X11/xkb/symbols/us.
374
375       Note that this is not possible for rules files, which need to be manually
376       controlled to get the right bits resolved.
377
378     * Add /etc/xkb as extra lookup path for system data files.
379
380       This completes the usual triplet of configuration locations available for
381       most processes:
382       - vendor-provided data files in /usr/share/X11/xkb
383       - system-specific data files in /etc/xkb
384       - user-specific data files in $XDG_CONFIG_HOME/xkb
385
386       The default lookup order user, system, vendor, just like everything else
387       that uses these conventions.
388
389       For include directives in rules files, the '%E' resolves to that path.
390
391     * Add a new section to the documentation for custom user configuration.
392
393   Contributed by Peter Hutterer <@who-t.net>.
394
395 - Add an `xkbcli` command-line utility.
396
397   This tool offers various subcommands for introspection and debugging.
398   Currently the available subcommands are:
399
400   list
401     List available rules, models, layouts, variants and options
402
403   interactive-wayland
404     Interactive debugger for XKB keymaps for Wayland
405
406   interactive-x11
407     Interactive debugger for XKB keymaps for X11
408
409   interactive-evdev
410     Interactive debugger for XKB keymaps for evdev (Linux)
411
412   compile-keymap
413     Compile an XKB keymap
414
415   how-to-type
416     See separate entry below.
417
418   See the manpages for usage information.
419
420   Contributed by Peter Hutterer <@who-t.net>.
421
422 - Add `xkb_utf32_to_keysym()` to translate a Unicode codepoint to a keysym.
423   When a special keysym (`XKB_KEY_` constant) for the codepoint exists, it is
424   returned, otherwise the direct encoding is used, if permissible.
425
426   Contributed by Jaroslaw Kubik <@froglogic.com>.
427
428 - Add `xkb_keymap_key_get_mods_for_level()` which retrieves sets of modifiers
429   which produce a given shift level in a given key+layout.
430
431   Contributed by Jaroslaw Kubik <@froglogic.com>.
432
433 - Add `xkbcli how-to-type` command, which, using `xkb_utf32_to_keysym()`
434   and `xkb_keymap_key_get_mods_for_level()` and other APIs, prints out all
435   the ways to produce a given keysym.
436
437   For example, how to type `?` (codepoint 63) in a us,de keymap?
438
439     $ xkbcli how-to-type --layout us,de 63 | column -ts $'\t'
440     keysym: question (0x3f)
441     KEYCODE  KEY NAME  LAYOUT#  LAYOUT NAME   LEVEL#  MODIFIERS
442     20       AE11      2        German        2       [ Shift ]
443     20       AE11      2        German        2       [ Shift Lock ]
444     61       AB10      1        English (US)  2       [ Shift ]
445
446 - Add a new section to the documentation describing the format of the XKB
447   rules file.
448
449 - Search for Compose in $XDG_CONFIG_HOME/XCompose (fallback to
450   ~/.config/XCompose) before trying $HOME/.XCompose.
451
452   Note that libX11 still only searches in $HOME/.XCompose.
453
454   Contributed by Emmanuel Gil Peyrot <@linkmauve.fr>.
455
456 - Bump meson requirement to >= 0.49.0.
457
458 - Fix build with byacc.
459
460 - Fix building X11 tests on PE targets.
461
462   Contributed by Jon Turney <@dronecode.org.uk>
463
464 - The tests no longer rely on bash, only Python (which is already used by
465   meson).
466
467 - New API:
468   xkb_utf32_to_keysym
469   xkb_keymap_key_get_mods_for_level
470   XKB_KEY_XF86FullScreen
471
472
473 libxkbcommon 0.10.0 - 2020-01-18
474 ===================
475
476 - (security) Fix quadratic complexity in the XKB file parser. See commit
477   message 7c42945e04a2107827a057245298dedc0475cc88 for details.
478
479 - Add $XDG_CONFIG_HOME/xkb to the default search path. If $XDG_CONFIG_HOME
480   is not set, $HOME/.config/xkb is used. If $HOME is not set, the path is not
481   added.
482
483   The XDG path is looked up before the existing default search path $HOME/.xkb.
484
485   Contributed by Peter Hutterer <@who-t.net>.
486
487 - Add support for include statements in XKB rules files.
488
489   This is a step towards making local XKB customizations more tenable and
490   convenient, without modifying system files.
491
492   You can now include other rules files like this:
493
494       ! include %S/evdev
495
496   Two directives are supported, %H to $HOME and %S for the system-installed
497   rules directory (usually /usr/share/X11/xkb/rules).
498
499   See commit message ca033a29d2ca910fd17b1ae287cb420205bdddc8 and
500   doc/rules-format.txt in the xkbcommon source code for more information.
501
502   Contributed by Peter Hutterer <@who-t.net>.
503
504 - Downgrade "Symbol added to modifier map for multiple modifiers" log to a
505   warning.
506
507   This error message was too annoying to be shown by default. When working on
508   keymaps, set `XKB_LOG_LEVEL=debug XKB_LOG_VERBOSITY=10` to see all possible
509   messages.
510
511 - Support building on Windows using the meson MSVC backend.
512
513   Contributed by Adrian Perez de Castro <@igalia.com>.
514
515 - Fix bug where the merge mode only applied to the first vmod in a
516   `virtual_modifiers` statement. Given
517
518       augment virtual_modifiers NumLock,Alt,LevelThree
519
520   Previously it was incorrectly treated as
521
522       augment virtual_modifiers NumLock;
523       virtual_modifiers Alt;
524       virtual_modifiers LevelThree;
525
526   Now it is treated as
527
528       augment virtual_modifiers NumLock;
529       augment virtual_modifiers Alt;
530       augment virtual_modifiers LevelThree;
531
532 - Reject interpret modifier predicate with more than one value. Given
533
534       interpret ISO_Level3_Shift+AnyOf(all,extraneous) { ... };
535
536   Previously, extraneous (and further) was ignored. Now it's rejected.
537
538 - Correctly handle capitalization of the ssharp keysym.
539
540 - Speed up and improve the internal `xkeyboard-config` tool. This tool
541   compiles all layout/variant combinations in the xkeyboard-config dataset
542   and reports any issues it finds.
543
544   Contributed by Peter Hutterer <@who-t.net>.
545
546 - Speed up "atoms" (string interning). This code goes back at least to X11R1
547   (released 1987).
548
549
550 libxkbcommon 0.9.1 - 2019-10-19
551 ==================
552
553 - Fix context creation failing when run in privileged processes as defined by
554   `secure_getenv(3)`, e.g. GDM.
555
556
557 libxkbcommon 0.9.0 - 2019-10-19
558 ==================
559
560 - Move ~/.xkb to before XKB_CONFIG_ROOT (the system XKB path, usually
561   /usr/share/X11/xkb) in the default include path. This enables the user
562   to have full control of the keymap definitions, instead of only augmenting
563   them.
564
565 - Remove the Autotools build system. Use the meson build system instead.
566
567 - Fix invalid names used for levels above 8 when dumping keymaps. Previously,
568   e.g. "Level20" was dumped, but only up to "Level8" is accepted by the
569   parser. Now "20" is dumped.
570
571 - Change level references to always be dumped as e.g. "5" instead of "Level5".
572
573   Change group references to always be dumped capitalized e.g. "Group3" instead
574   of "group3". Previously it was inconsistent.
575
576   These changes affect the output of xkb_keymap_get_as_string().
577
578 - Fix several build issues on macOS/Darwin, Solaris, NetBSD, cross compilation.
579
580 - Port the interactive-wayland test program to the stable version of xdg-shell.
581
582
583 libxkbcommon 0.8.4 - 2019-02-22
584 ==================
585
586 - Fix build of xkbcommon-x11 static library with meson.
587
588 - Fix building using meson from the tarball generated by autotools.
589
590
591 libxkbcommon 0.8.3 - 2019-02-08
592 ==================
593
594 - Fix build of static libraries with meson.
595   (Future note: xkbcommon-x11 was *not* fixed in this release.)
596
597 - New API:
598   XKB_KEY_XF86MonBrightnessCycle
599   XKB_KEY_XF86RotationLockToggle
600
601
602 libxkbcommon 0.8.2 - 2018-08-05
603 ==================
604
605 - Fix various problems found with fuzzing (see commit messages for
606   more details):
607
608     - Fix a few NULL-dereferences, out-of-bounds access and undefined behavior
609       in the XKB text format parser.
610
611
612 libxkbcommon 0.8.1 - 2018-08-03
613 ==================
614
615 - Fix various problems found in the meson build (see commit messages for more
616   details):
617
618     - Fix compilation on Darwin.
619
620     - Fix compilation of the x11 tests and demos when XCB is installed in a
621       non-standard location.
622
623     - Fix xkbcommon-x11.pc missing the Requires specification.
624
625 - Fix various problems found with fuzzing and Coverity (see commit messages for
626   more details):
627
628     - Fix stack overflow in the XKB text format parser when evaluating boolean
629       negation.
630
631     - Fix NULL-dereferences in the XKB text format parser when some unsupported
632       tokens appear (the tokens are still parsed for backward compatibility).
633
634     - Fix NULL-dereference in the XKB text format parser when parsing an
635       xkb_geometry section.
636
637     - Fix an infinite loop in the Compose text format parser on some inputs.
638
639     - Fix an invalid free() when using multiple keysyms.
640
641 - Replace the Unicode characters for the leftanglebracket and rightanglebracket
642   keysyms from the deprecated LEFT/RIGHT-POINTING ANGLE BRACKET to
643   MATHEMATICAL LEFT/RIGHT ANGLE BRACKET.
644
645 - Reject out-of-range Unicode codepoints in xkb_keysym_to_utf8 and
646   xkb_keysym_to_utf32.
647
648
649 libxkbcommon 0.8.0 - 2017-12-15
650 ==================
651
652 - Added xkb_keysym_to_{upper,lower} to perform case-conversion directly on
653   keysyms. This is useful in some odd cases, but working with the Unicode
654   representations should be preferred when possible.
655
656 - Added Unicode conversion rules for the signifblank and permille keysyms.
657
658 - Fixed a bug in the parsing of XKB key type definitions where the number
659   of levels were determined by the number of level *names*. Keymaps which
660   omit level names were hence miscompiled.
661
662   This regressed in version 0.4.3. Keymaps from xkeyboard-config were not
663   affected since they don't omit level names.
664
665 - New API:
666   xkb_keysym_to_upper()
667   xkb_keysym_to_lower()
668
669
670 libxkbcommon 0.7.2 - 2017-08-04
671 ==================
672
673 - Added a Meson build system as an alternative to existing autotools build
674   system.
675
676   The intent is to remove the autotools build in one of the next releases.
677   Please try to convert to it and report any problems.
678
679   See http://mesonbuild.com/Quick-guide.html for basic usage, the
680   meson_options.txt for the project-specific configuration options,
681   and the PACKAGING file for more details.
682
683   There are some noteworthy differences compared to the autotools build:
684
685   - Feature auto-detection is not performed. By default, all features are
686     enabled (currently: docs, x11, wayland). The build fails if any of
687     the required dependencies are not available. To disable a feature,
688     pass -Denable-<feature>=false to meson.
689
690   - The libraries are either installed as shared or static, as specified
691     by the -Ddefault_library=shared/static option. With autotools, both
692     versions are installed by default.
693
694   - xorg-util-macros is not used.
695
696   - A parser generator (bison/byacc) is always required - there is no
697     fallback to pre-generated output bundled in the tarball, as there is
698     in autotools.
699
700 - Removed Android.mk support.
701
702 - Removed the *-uninstalled.pc pkgconfig files.
703
704 - Ported the interactive-wayland demo program to v6 of the xdg-shell
705   protocol.
706
707 - Added new keysym definitions from xproto.
708
709 - New API:
710   XKB_KEY_XF86Keyboard
711   XKB_KEY_XF86WWAN
712   XKB_KEY_XF86RFKill
713   XKB_KEY_XF86AudioPreset
714
715
716 libxkbcommon 0.7.1 - 2017-01-18
717 ==================
718
719 - Fixed various reported problems when the current locale is tr_TR.UTF-8.
720
721   The function xkb_keysym_from_name() used to perform case-insensitive
722   string comparisons in a locale-dependent way, but required it to to
723   work as in the C/ASCII locale (the so called "Turkish i problem").
724
725   The function is now no longer affected by the current locale.
726
727 - Fixed compilation in NetBSD.
728
729
730 libxkbcommon 0.7.0 - 2016-11-11
731 ==================
732
733 - Added support for different "modes" of calculating consumed modifiers.
734   The existing mode, based on the XKB standard, has proven to be
735   unintuitive in various shortcut implementations.
736
737   A new mode, based on the calculation used by the GTK toolkit, is added.
738   This mode is less eager to declare a modifier as consumed.
739
740 - Added a new interactive demo program using the Wayland protocol.
741   See the PACKAGING file for the new (optional) test dependencies.
742
743 - Fixed a compilation error on GNU Hurd.
744
745 - New API:
746   enum xkb_consumed_mode
747   XKB_CONSUMED_MODE_XKB
748   XKB_CONSUMED_MODE_GTK
749   xkb_state_key_get_consumed_mods2
750   xkb_state_mod_index_is_consumed2
751
752
753 libxkbcommon 0.6.1 - 2016-04-08
754 ==================
755
756 - Added LICENSE to distributed files in tarball releases.
757
758 - Minor typo fix in xkb_keymap_get_as_string() documentation.
759
760
761 libxkbcommon 0.6.0 - 2016-03-16
762 ==================
763
764 - If the XKB_CONFIG_ROOT environment variable is set, it is used as the XKB
765   configuration root instead of the path determined at build time.
766
767 - Tests and benchmarks now build correctly on OSX.
768
769 - An XKB keymap provides a name for each key it defines.  Traditionally,
770   these names are limited to at most 4 characters, and are thus somewhat
771   obscure, but might still be useful (xkbcommon lifts the 4 character limit).
772
773   The new functions xkb_keymap_key_get_name() and xkb_keymap_key_by_name()
774   can be used to get the name of a key or find a key by name.  Note that
775   a key may have aliases.
776
777 - Documentation improvements.
778
779 - New API:
780   xkb_keymap_key_by_name()
781   xkb_keymap_key_get_name()
782
783
784 libxkbcommon 0.5.0 - 2014-10-18
785 ==================
786
787 - Added support for Compose/dead keys in a new module (included in
788   libxkbcommon). See the documentation or the
789   xkbcommon/xkbcommon-compose.h header file for more details.
790
791 - Improved and reordered some sections of the documentation.
792
793 - The doxygen HTML pages were made nicer to read.
794
795 - Most tests now run also on non-linux platforms.
796
797 - A warning is emitted by default about RMLVO values which are not used
798   during keymap compilation, which are most often a user misconfiguration.
799   For example, "terminate:ctrl_alt_backspace" instead of
800   "terminate:ctrl_alt_bksp".
801
802 - Added symbol versioning for libxkbcommon and libxkbcommon-x11.
803   Note: binaries compiled against this and future versions will not be
804   able to link against the previous versions of the library.
805
806 - Removed several compatablity symbols from the binary (the API isn't
807   affected). This affects binaries which
808
809   1. Were compiled against a pre-stable (<0.2.0) version of libxkbcommon, and
810   2. Are linked against the this or later version of libxkbcommon.
811
812   Such a scenario is likely to fail already.
813
814 - If Xvfb is not available, the x11comp test is now correctly skipped
815   instead of hanging.
816
817 - Benchmarks were moved to a separate bench/ directory.
818
819 - Build fixes from OpenBSD.
820
821 - Fixed a bug where key type entries such as "map[None] = Level2;" were
822   ignored.
823
824 - New API:
825   XKB_COMPOSE_*
826   xkb_compose_*
827
828
829 libxkbcommon 0.4.3 - 2014-08-19
830 ==================
831
832 - Fixed a bug which caused xkb_x11_keymap_new_from_device() to misrepresent
833   modifiers for some keymaps.
834
835   https://github.com/xkbcommon/libxkbcommon/issues/9
836
837 - Fixed a bug which caused xkb_x11_keymap_new_from_device() to ignore XKB
838   PrivateAction's.
839
840 - Modifiers are now always fully resolved after xkb_state_update_mask().
841   Previously the given state components were used as-is, without
842   considering virtual modifier mappings.
843   Note: this only affects non-standard uses of xkb_state_update_mask().
844
845 - Added a test for xkbcommon-x11, "x11comp". The test uses the system's
846   Xvfb server and xkbcomp. If they do not exist or fail, the test is
847   skipped.
848
849 - Fixed memory leaks after parse errors in the XKB yacc parser.
850   The fix required changes which are currently incompatible with byacc.
851
852
853 libxkbcommon 0.4.2 - 2014-05-15
854 ==================
855
856 - Fixed a bug where explicitly passing "--enable-x11" to ./configure would
857   in fact disable it (regressed in 0.4.1).
858
859 - Added @since version annotations to the API documentation for everything
860   introduced after the initial stable release (0.2.0).
861
862 - Added a section to the documentation about keysym transformations, and
863   clarified which functions perform a given transformation.
864
865 - XKB files which fail to compile during keymap construction can no longer
866   have any effect on the resulting keymap: changes are only applied when
867   the entire compilation succeeds.
868   Note: this was a minor correctness issue inherited from xkbcomp.
869
870 - Fix an out-of-bounds array access in src/x11/util.c:adopt_atoms()
871   error-handling code.
872   Note: it seems impossible to trigger in the current code since the input
873   size cannot exceed the required size.
874
875
876 libxkbcommon 0.4.1 - 2014-03-27
877 ==================
878
879 - Converted README to markdown and added a Quick Guide to the
880   documentation, which breezes through the most common parts of
881   xkbcommon.
882
883 - Added two new functions, xkb_state_key_get_utf{8,32}(). They
884   combine the operations of xkb_state_key_get_syms() and
885   xkb_keysym_to_utf{8,32}(), and provide a nicer interface for it
886   (espcially for multiple-keysyms-per-level).
887
888 - The xkb_state_key_get_utf{8,32}() functions now apply Control
889   transformation: when the Control modifier is active, the string
890   is converted to an appropriate control character.
891   This matches the behavior of libX11's XLookupString(3), and
892   required by the XKB specification:
893   https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier
894
895   https://bugs.freedesktop.org/show_bug.cgi?id=75892
896
897 - The consumed modifiers for a key are now calculated similarly
898   to libX11. The previous behavior caused a bug where Shift would
899   not cancel an active Caps Lock.
900
901 - Make xkbcommon-x11 work with the keymap reported by the XQuartz
902   X server.
903
904   https://bugs.freedesktop.org/show_bug.cgi?id=75798
905
906 - Reduce memory usage during keymap compilation some more.
907
908 - New API:
909   xkb_state_key_get_consumed_mods()
910   xkb_state_key_get_utf8()
911   xkb_state_key_get_utf32()
912
913 - Deprecated API:
914   XKB_MAP_COMPILE_PLACEHOLDER, XKB_MAP_NO_FLAGS
915     use XKB_KEYMAP_NO_FLAGS instead.
916
917 - Bug fixes.
918
919
920 libxkbcommon 0.4.0 - 2014-02-02
921 ==================
922
923 - Add a new add-on library, xkbcommon-x11, to support creating keymaps
924   with the XKB X11 protocol, by querying the X server directly.
925   See the xkbcommon/xkbcommon-x11.h header file for more details.
926   This library requires libxcb-xkb >= 1.10, and is enabled by default.
927   It can be disabled with the --disable-x11 configure switch.
928   Distributions are encouraged to split the necessary files for this
929   library (libxkbcommon-x11.so, xkbcommon-x11.pc, xkbcommon/xkbcommon-x11.h)
930   to a separate package, such that the main package does not depend on
931   X11 libraries.
932
933 - Fix the keysym <-> name lookup table to not require huge amounts of
934   relocations.
935
936 - Fix a bug in the keysym <-> name lookup, whereby lookup might fail in
937   some rare cases.
938
939 - Reduce memory usage during keymap compilation.
940
941 - New API:
942   New keysyms from xproto 7.0.25 (German T3 layout keysyms).
943   XKB_MOD_NAME_NUM for the usual NumLock modifier.
944   xkb_x11_* types and functions, XKB_X11_* constants.
945
946
947 libxkbcommon 0.3.2 - 2013-11-22
948 ==================
949
950 - Log messages from the library now look like "xkbcommon: ERROR" by
951   default, instead of xkbcomp-like "Error:   ".
952
953 - Apply capitalization transformation on keysyms in
954   xkb_keysym_get_one_sym(), to match the behavior specified in the XKB
955   specification:
956   https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Lock_Modifier
957
958 - Support byacc for generating the parser, in addition to Bison.
959
960 - New API:
961   XKB_KEY_XF86AudioMicMute keysym from xproto 7.0.24.
962   XKB_KEYSYM_NO_FLAGS
963   XKB_CONTEXT_NO_FLAGS
964   XKB_MAP_COMPILE_NO_FLAGS
965
966 - Bug fixes.
967
968
969 libxkbcommon 0.3.1 - 2013-06-03
970 ==================
971
972 - Replace the flex scanner with a hand-written one. flex is no longer
973   a build requirement.
974
975 - New API:
976   xkb_keymap_min_keycode()
977   xkb_keymap_max_keycode()
978   xkb_keymap_key_for_each()
979
980
981 libxkbcommon 0.3.0 - 2013-04-01
982 ==================
983
984 - Allow passing NULL to *_unref() functions; do nothing instead of
985   crashing.
986
987 - The functions xkb_keymap_num_levels_for_key() and
988   xkb_keymap_get_syms_by_level() now allow out-of-range values for the
989   'layout' parameter. The functions now wrap the value around the number
990   of layouts instead of failing.
991
992 - The function xkb_keysym_get_name() now types unicode keysyms in
993   uppercase and 0-padding, to match the format used by XKeysymToString().
994
995 - Building Linux-specific tests is no longer attempted on non-Linux
996   environments.
997
998 - The function xkb_keymap_new_from_names() now accepts a NULL value for
999   the 'names' parameter, instead of failing. This is equivalent to passing
1000   a 'struct xkb_rule_names' with all fields set to NULL.
1001
1002 - New API:
1003   xkb_keymap_new_from_buffer()
1004
1005 - Bug fixes.