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