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