tools: add a xkbcli tool as entry point for the various tools we have
[platform/upstream/libxkbcommon.git] / NEWS
1 libxkbcommon 0.11.0
2 ===================
3
4 - Add libxkbregistry as configure-time optional library. libxkbregistry is a C
5   library that lists available XKB models, layouts and variants for a given
6   ruleset. This is a separate library (libxkbregistry.so, pkgconfig file
7   xkbregistry.pc) and aimed at tools that provide a listing of available
8   keyboard layouts to the user. See the Documentation for details on the API.
9
10   Contributed by Peter Hutterer <@who-t.net>.
11
12 libxkbcommon 0.10.0 - 2020-01-18
13 ===================
14
15 - (security) Fix quadratic complexity in the XKB file parser. See commit
16   message 7c42945e04a2107827a057245298dedc0475cc88 for details.
17
18 - Add $XDG_CONFIG_HOME/xkb to the default search path. If $XDG_CONFIG_HOME
19   is not set, $HOME/.config/xkb is used. If $HOME is not set, the path is not
20   added.
21
22   The XDG path is looked up before the existing default search path $HOME/.xkb.
23
24   Contributed by Peter Hutterer <@who-t.net>.
25
26 - Add support for include statements in XKB rules files.
27
28   This is a step towards making local XKB customizations more tenable and
29   convenient, without modifying system files.
30
31   You can now include other rules files like this:
32
33       ! include %S/evdev
34
35   Two directives are supported, %H to $HOME and %S for the system-installed
36   rules directory (usually /usr/share/X11/xkb/rules).
37
38   See commit message ca033a29d2ca910fd17b1ae287cb420205bdddc8 and
39   doc/rules-format.txt in the xkbcommon source code for more information.
40
41   Contributed by Peter Hutterer <@who-t.net>.
42
43 - Downgrade "Symbol added to modifier map for multiple modifiers" log to a
44   warning.
45
46   This error message was too annoying to be shown by default. When working on
47   keymaps, set `XKB_LOG_LEVEL=debug XKB_LOG_VERBOSITY=10` to see all possible
48   messages.
49
50 - Support building on Windows using the meson MSVC backend.
51
52   Contributed by Adrian Perez de Castro <@igalia.com>.
53
54 - Fix bug where the merge mode only applied to the first vmod in a
55   `virtual_modifiers` statement. Given
56
57       augment virtual_modifiers NumLock,Alt,LevelThree
58
59   Previously it was incorrectly treated as
60
61       augment virtual_modifiers NumLock;
62       virtual_modifiers Alt;
63       virtual_modifiers LevelThree;
64
65   Now it is treated as
66
67       augment virtual_modifiers NumLock;
68       augment virtual_modifiers Alt;
69       augment virtual_modifiers LevelThree;
70
71 - Reject interpret modifier predicate with more than one value. Given
72
73       interpret ISO_Level3_Shift+AnyOf(all,extraneous) { ... };
74
75   Previously, extraneous (and further) was ignored. Now it's rejected.
76
77 - Correctly handle capitalization of the ssharp keysym.
78
79 - Speed up and improve the internal `xkeyboard-config` tool. This tool
80   compiles all layout/variant combinations in the xkeyboard-config dataset
81   and reports any issues it finds.
82
83   Contributed by Peter Hutterer <@who-t.net>.
84
85 - Speed up "atoms" (string interning). This code goes back at least to X11R1
86   (released 1987).
87
88
89 libxkbcommon 0.9.1 - 2019-10-19
90 ==================
91
92 - Fix context creation failing when run in privileged processes as defined by
93   `secure_getenv(3)`, e.g. GDM.
94
95
96 libxkbcommon 0.9.0 - 2019-10-19
97 ==================
98
99 - Move ~/.xkb to before XKB_CONFIG_ROOT (the system XKB path, usually
100   /usr/share/X11/xkb) in the default include path. This enables the user
101   to have full control of the keymap definitions, instead of only augmenting
102   them.
103
104 - Remove the Autotools build system. Use the meson build system instead.
105
106 - Fix invalid names used for levels above 8 when dumping keymaps. Previously,
107   e.g. "Level20" was dumped, but only up to "Level8" is accepted by the
108   parser. Now "20" is dumped.
109
110 - Change level references to always be dumped as e.g. "5" instead of "Level5".
111
112   Change group references to always be dumped capitalized e.g. "Group3" instead
113   of "group3". Previously it was inconsistent.
114
115   These changes affect the output of xkb_keymap_get_as_string().
116
117 - Fix several build issues on macOS/Darwin, Solaris, NetBSD, cross compilation.
118
119 - Port the interactive-wayland test program to the stable version of xdg-shell.
120
121
122 libxkbcommon 0.8.4 - 2019-02-22
123 ==================
124
125 - Fix build of xkbcommon-x11 static library with meson.
126
127 - Fix building using meson from the tarball generated by autotools.
128
129
130 libxkbcommon 0.8.3 - 2019-02-08
131 ==================
132
133 - Fix build of static libraries with meson.
134   (Future note: xkbcommon-x11 was *not* fixed in this release.)
135
136 - New API:
137   XKB_KEY_XF86MonBrightnessCycle
138   XKB_KEY_XF86RotationLockToggle
139
140
141 libxkbcommon 0.8.2 - 2018-08-05
142 ==================
143
144 - Fix various problems found with fuzzing (see commit messages for
145   more details):
146
147     - Fix a few NULL-dereferences, out-of-bounds access and undefined behavior
148       in the XKB text format parser.
149
150
151 libxkbcommon 0.8.1 - 2018-08-03
152 ==================
153
154 - Fix various problems found in the meson build (see commit messages for more
155   details):
156
157     - Fix compilation on Darwin.
158
159     - Fix compilation of the x11 tests and demos when XCB is installed in a
160       non-standard location.
161
162     - Fix xkbcommon-x11.pc missing the Requires specification.
163
164 - Fix various problems found with fuzzing and Coverity (see commit messages for
165   more details):
166
167     - Fix stack overflow in the XKB text format parser when evaluating boolean
168       negation.
169
170     - Fix NULL-dereferences in the XKB text format parser when some unsupported
171       tokens appear (the tokens are still parsed for backward compatibility).
172
173     - Fix NULL-dereference in the XKB text format parser when parsing an
174       xkb_geometry section.
175
176     - Fix an infinite loop in the Compose text format parser on some inputs.
177
178     - Fix an invalid free() when using multiple keysyms.
179
180 - Replace the Unicode characters for the leftanglebracket and rightanglebracket
181   keysyms from the deprecated LEFT/RIGHT-POINTING ANGLE BRACKET to
182   MATHEMATICAL LEFT/RIGHT ANGLE BRACKET.
183
184 - Reject out-of-range Unicode codepoints in xkb_keysym_to_utf8 and
185   xkb_keysym_to_utf32.
186
187
188 libxkbcommon 0.8.0 - 2017-12-15
189 ==================
190
191 - Added xkb_keysym_to_{upper,lower} to perform case-conversion directly on
192   keysyms. This is useful in some odd cases, but working with the Unicode
193   representations should be preferred when possible.
194
195 - Added Unicode conversion rules for the signifblank and permille keysyms.
196
197 - Fixed a bug in the parsing of XKB key type definitions where the number
198   of levels were determined by the number of level *names*. Keymaps which
199   omit level names were hence miscompiled.
200
201   This regressed in version 0.4.3. Keymaps from xkeyboard-config were not
202   affected since they don't omit level names.
203
204 - New API:
205   xkb_keysym_to_upper()
206   xkb_keysym_to_lower()
207
208
209 libxkbcommon 0.7.2 - 2017-08-04
210 ==================
211
212 - Added a Meson build system as an alternative to existing autotools build
213   system.
214
215   The intent is to remove the autotools build in one of the next releases.
216   Please try to convert to it and report any problems.
217
218   See http://mesonbuild.com/Quick-guide.html for basic usage, the
219   meson_options.txt for the project-specific configuration options,
220   and the PACKAGING file for more details.
221
222   There are some noteworthy differences compared to the autotools build:
223
224   - Feature auto-detection is not performed. By default, all features are
225     enabled (currently: docs, x11, wayland). The build fails if any of
226     the required dependencies are not available. To disable a feature,
227     pass -Denable-<feature>=false to meson.
228
229   - The libraries are either installed as shared or static, as specified
230     by the -Ddefault_library=shared/static option. With autotools, both
231     versions are installed by default.
232
233   - xorg-util-macros is not used.
234
235   - A parser generator (bison/byacc) is always required - there is no
236     fallback to pre-generated output bundled in the tarball, as there is
237     in autotools.
238
239 - Removed Android.mk support.
240
241 - Removed the *-uninstalled.pc pkgconfig files.
242
243 - Ported the interactive-wayland demo program to v6 of the xdg-shell
244   protocol.
245
246 - Added new keysym definitions from xproto.
247
248 - New API:
249   XKB_KEY_XF86Keyboard
250   XKB_KEY_XF86WWAN
251   XKB_KEY_XF86RFKill
252   XKB_KEY_XF86AudioPreset
253
254
255 libxkbcommon 0.7.1 - 2017-01-18
256 ==================
257
258 - Fixed various reported problems when the current locale is tr_TR.UTF-8.
259
260   The function xkb_keysym_from_name() used to perform case-insensitive
261   string comparisons in a locale-dependent way, but required it to to
262   work as in the C/ASCII locale (the so called "Turkish i problem").
263
264   The function is now no longer affected by the current locale.
265
266 - Fixed compilation in NetBSD.
267
268
269 libxkbcommon 0.7.0 - 2016-11-11
270 ==================
271
272 - Added support for different "modes" of calculating consumed modifiers.
273   The existing mode, based on the XKB standard, has proven to be
274   unintuitive in various shortcut implementations.
275
276   A new mode, based on the calculation used by the GTK toolkit, is added.
277   This mode is less eager to declare a modifier as consumed.
278
279 - Added a new interactive demo program using the Wayland protocol.
280   See the PACKAGING file for the new (optional) test dependencies.
281
282 - Fixed a compilation error on GNU Hurd.
283
284 - New API:
285   enum xkb_consumed_mode
286   XKB_CONSUMED_MODE_XKB
287   XKB_CONSUMED_MODE_GTK
288   xkb_state_key_get_consumed_mods2
289   xkb_state_mod_index_is_consumed2
290
291
292 libxkbcommon 0.6.1 - 2016-04-08
293 ==================
294
295 - Added LICENSE to distributed files in tarball releases.
296
297 - Minor typo fix in xkb_keymap_get_as_string() documentation.
298
299
300 libxkbcommon 0.6.0 - 2016-03-16
301 ==================
302
303 - If the XKB_CONFIG_ROOT environment variable is set, it is used as the XKB
304   configuration root instead of the path determined at build time.
305
306 - Tests and benchmarks now build correctly on OSX.
307
308 - An XKB keymap provides a name for each key it defines.  Traditionally,
309   these names are limited to at most 4 characters, and are thus somewhat
310   obscure, but might still be useful (xkbcommon lifts the 4 character limit).
311
312   The new functions xkb_keymap_key_get_name() and xkb_keymap_key_by_name()
313   can be used to get the name of a key or find a key by name.  Note that
314   a key may have aliases.
315
316 - Documentation improvements.
317
318 - New API:
319   xkb_keymap_key_by_name()
320   xkb_keymap_key_get_name()
321
322
323 libxkbcommon 0.5.0 - 2014-10-18
324 ==================
325
326 - Added support for Compose/dead keys in a new module (included in
327   libxkbcommon). See the documentation or the
328   xkbcommon/xkbcommon-compose.h header file for more details.
329
330 - Improved and reordered some sections of the documentation.
331
332 - The doxygen HTML pages were made nicer to read.
333
334 - Most tests now run also on non-linux platforms.
335
336 - A warning is emitted by default about RMLVO values which are not used
337   during keymap compilation, which are most often a user misconfiguration.
338   For example, "terminate:ctrl_alt_backspace" instead of
339   "terminate:ctrl_alt_bksp".
340
341 - Added symbol versioning for libxkbcommon and libxkbcommon-x11.
342   Note: binaries compiled against this and future versions will not be
343   able to link against the previous versions of the library.
344
345 - Removed several compatablity symbols from the binary (the API isn't
346   affected). This affects binaries which
347
348   1. Were compiled against a pre-stable (<0.2.0) version of libxkbcommon, and
349   2. Are linked against the this or later version of libxkbcommon.
350
351   Such a scenario is likely to fail already.
352
353 - If Xvfb is not available, the x11comp test is now correctly skipped
354   instead of hanging.
355
356 - Benchmarks were moved to a separate bench/ directory.
357
358 - Build fixes from OpenBSD.
359
360 - Fixed a bug where key type entries such as "map[None] = Level2;" were
361   ignored.
362
363 - New API:
364   XKB_COMPOSE_*
365   xkb_compose_*
366
367
368 libxkbcommon 0.4.3 - 2014-08-19
369 ==================
370
371 - Fixed a bug which caused xkb_x11_keymap_new_from_device() to misrepresent
372   modifiers for some keymaps.
373
374   https://github.com/xkbcommon/libxkbcommon/issues/9
375
376 - Fixed a bug which caused xkb_x11_keymap_new_from_device() to ignore XKB
377   PrivateAction's.
378
379 - Modifiers are now always fully resolved after xkb_state_update_mask().
380   Previously the given state components were used as-is, without
381   considering virtual modifier mappings.
382   Note: this only affects non-standard uses of xkb_state_update_mask().
383
384 - Added a test for xkbcommon-x11, "x11comp". The test uses the system's
385   Xvfb server and xkbcomp. If they do not exist or fail, the test is
386   skipped.
387
388 - Fixed memory leaks after parse errors in the XKB yacc parser.
389   The fix required changes which are currently incompatible with byacc.
390
391
392 libxkbcommon 0.4.2 - 2014-05-15
393 ==================
394
395 - Fixed a bug where explicitly passing "--enable-x11" to ./configure would
396   in fact disable it (regressed in 0.4.1).
397
398 - Added @since version annotations to the API documentation for everything
399   introduced after the initial stable release (0.2.0).
400
401 - Added a section to the documentation about keysym transformations, and
402   clarified which functions perform a given transformation.
403
404 - XKB files which fail to compile during keymap construction can no longer
405   have any effect on the resulting keymap: changes are only applied when
406   the entire compilation succeeds.
407   Note: this was a minor correctness issue inherited from xkbcomp.
408
409 - Fix an out-of-bounds array access in src/x11/util.c:adopt_atoms()
410   error-handling code.
411   Note: it seems impossible to trigger in the current code since the input
412   size cannot exceed the required size.
413
414
415 libxkbcommon 0.4.1 - 2014-03-27
416 ==================
417
418 - Converted README to markdown and added a Quick Guide to the
419   documentation, which breezes through the most common parts of
420   xkbcommon.
421
422 - Added two new functions, xkb_state_key_get_utf{8,32}(). They
423   combine the operations of xkb_state_key_get_syms() and
424   xkb_keysym_to_utf{8,32}(), and provide a nicer interface for it
425   (espcially for multiple-keysyms-per-level).
426
427 - The xkb_state_key_get_utf{8,32}() functions now apply Control
428   transformation: when the Control modifier is active, the string
429   is converted to an appropriate control character.
430   This matches the behavior of libX11's XLookupString(3), and
431   required by the XKB specification:
432   https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier
433
434   https://bugs.freedesktop.org/show_bug.cgi?id=75892
435
436 - The consumed modifiers for a key are now calculated similarly
437   to libX11. The previous behavior caused a bug where Shift would
438   not cancel an active Caps Lock.
439
440 - Make xkbcommon-x11 work with the keymap reported by the XQuartz
441   X server.
442
443   https://bugs.freedesktop.org/show_bug.cgi?id=75798
444
445 - Reduce memory usage during keymap compilation some more.
446
447 - New API:
448   xkb_state_key_get_consumed_mods()
449   xkb_state_key_get_utf8()
450   xkb_state_key_get_utf32()
451
452 - Deprecated API:
453   XKB_MAP_COMPILE_PLACEHOLDER, XKB_MAP_NO_FLAGS
454     use XKB_KEYMAP_NO_FLAGS instead.
455
456 - Bug fixes.
457
458
459 libxkbcommon 0.4.0 - 2014-02-02
460 ==================
461
462 - Add a new add-on library, xkbcommon-x11, to support creating keymaps
463   with the XKB X11 protocol, by querying the X server directly.
464   See the xkbcommon/xkbcommon-x11.h header file for more details.
465   This library requires libxcb-xkb >= 1.10, and is enabled by default.
466   It can be disabled with the --disable-x11 configure switch.
467   Distributions are encouraged to split the necessary files for this
468   library (libxkbcommon-x11.so, xkbcommon-x11.pc, xkbcommon/xkbcommon-x11.h)
469   to a separate package, such that the main package does not depend on
470   X11 libraries.
471
472 - Fix the keysym <-> name lookup table to not require huge amounts of
473   relocations.
474
475 - Fix a bug in the keysym <-> name lookup, whereby lookup might fail in
476   some rare cases.
477
478 - Reduce memory usage during keymap compilation.
479
480 - New API:
481   New keysyms from xproto 7.0.25 (German T3 layout keysyms).
482   XKB_MOD_NAME_NUM for the usual NumLock modifier.
483   xkb_x11_* types and functions, XKB_X11_* constants.
484
485
486 libxkbcommon 0.3.2 - 2013-11-22
487 ==================
488
489 - Log messages from the library now look like "xkbcommon: ERROR" by
490   default, instead of xkbcomp-like "Error:   ".
491
492 - Apply capitalization transformation on keysyms in
493   xkb_keysym_get_one_sym(), to match the behavior specified in the XKB
494   specification:
495   https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Lock_Modifier
496
497 - Support byacc for generating the parser, in addition to Bison.
498
499 - New API:
500   XKB_KEY_XF86AudioMicMute keysym from xproto 7.0.24.
501   XKB_KEYSYM_NO_FLAGS
502   XKB_CONTEXT_NO_FLAGS
503   XKB_MAP_COMPILE_NO_FLAGS
504
505 - Bug fixes.
506
507
508 libxkbcommon 0.3.1 - 2013-06-03
509 ==================
510
511 - Replace the flex scanner with a hand-written one. flex is no longer
512   a build requirement.
513
514 - New API:
515   xkb_keymap_min_keycode()
516   xkb_keymap_max_keycode()
517   xkb_keymap_key_for_each()
518
519
520 libxkbcommon 0.3.0 - 2013-04-01
521 ==================
522
523 - Allow passing NULL to *_unref() functions; do nothing instead of
524   crashing.
525
526 - The functions xkb_keymap_num_levels_for_key() and
527   xkb_keymap_get_syms_by_level() now allow out-of-range values for the
528   'layout' parameter. The functions now wrap the value around the number
529   of layouts instead of failing.
530
531 - The function xkb_keysym_get_name() now types unicode keysyms in
532   uppercase and 0-padding, to match the format used by XKeysymToString().
533
534 - Building Linux-specific tests is no longer attempted on non-Linux
535   environments.
536
537 - The function xkb_keymap_new_from_names() now accepts a NULL value for
538   the 'names' parameter, instead of failing. This is equivalent to passing
539   a 'struct xkb_rule_names' with all fields set to NULL.
540
541 - New API:
542   xkb_keymap_new_from_buffer()
543
544 - Bug fixes.