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