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