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