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