diff --git a/NEWS b/NEWS index a3acd4e..2e7d7bb 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ -libxkbcommon 0.11.0 -=================== +libxkbcommon 1.0.0 - 2020-09-05 +================== + +Note: this release is API and ABI compatible with previous releases -- the +major version bump is only an indication of stability. - Add libxkbregistry as configure-time optional library. libxkbregistry is a C library that lists available XKB models, layouts and variants for a given @@ -9,6 +12,114 @@ libxkbcommon 0.11.0 Contributed by Peter Hutterer <@who-t.net>. +- Better support custom user configuration: + + * Allow including XKB files from other paths. + + Previously, a 'symbols/us' file in path A would shadow the same file in + path B. This is suboptimal, we rarely need to hide the system files - we + care mostly about *extending* them. By continuing to check other lookup + paths, we make it possible for a XDG_CONFIG_HOME/xkb/symbols/us file to + have sections including those from /usr/share/X11/xkb/symbols/us. + + Note that this is not possible for rules files, which need to be manually + controlled to get the right bits resolved. + + * Add /etc/xkb as extra lookup path for system data files. + + This completes the usual triplet of configuration locations available for + most processes: + - vendor-provided data files in /usr/share/X11/xkb + - system-specific data files in /etc/xkb + - user-specific data files in $XDG_CONFIG_HOME/xkb + + The default lookup order user, system, vendor, just like everything else + that uses these conventions. + + For include directives in rules files, the '%E' resolves to that path. + + * Add a new section to the documentation for custom user configuration. + + Contributed by Peter Hutterer <@who-t.net>. + +- Add an `xkbcli` command-line utility. + + This tool offers various subcommands for introspection and debugging. + Currently the available subcommands are: + + list + List available rules, models, layouts, variants and options + + interactive-wayland + Interactive debugger for XKB keymaps for Wayland + + interactive-x11 + Interactive debugger for XKB keymaps for X11 + + interactive-evdev + Interactive debugger for XKB keymaps for evdev (Linux) + + compile-keymap + Compile an XKB keymap + + how-to-type + See separate entry below. + + See the manpages for usage information. + + Contributed by Peter Hutterer <@who-t.net>. + +- Add `xkb_utf32_to_keysym()` to translate a Unicode codepoint to a keysym. + When a special keysym (`XKB_KEY_` constant) for the codepoint exists, it is + returned, otherwise the direct encoding is used, if permissible. + + Contributed by Jaroslaw Kubik <@froglogic.com>. + +- Add `xkb_keymap_key_get_mods_for_level()` which retrieves sets of modifiers + which produce a given shift level in a given key+layout. + + Contributed by Jaroslaw Kubik <@froglogic.com>. + +- Add `xkbcli how-to-type` command, which, using `xkb_utf32_to_keysym()` + and `xkb_keymap_key_get_mods_for_level()` and other APIs, prints out all + the ways to produce a given keysym. + + For example, how to type `?` (codepoint 63) in a us,de keymap? + + $ xkbcli how-to-type --layout us,de 63 | column -ts $'\t' + keysym: question (0x3f) + KEYCODE KEY NAME LAYOUT# LAYOUT NAME LEVEL# MODIFIERS + 20 AE11 2 German 2 [ Shift ] + 20 AE11 2 German 2 [ Shift Lock ] + 61 AB10 1 English (US) 2 [ Shift ] + +- Add a new section to the documentation describing the format of the XKB + rules file. + +- Search for Compose in $XDG_CONFIG_HOME/XCompose (fallback to + ~/.config/XCompose) before trying $HOME/.XCompose. + + Note that libX11 still only searches in $HOME/.XCompose. + + Contributed by Emmanuel Gil Peyrot <@linkmauve.fr>. + +- Bump meson requirement to >= 0.49.0. + +- Fix build with byacc. + +- Fix building X11 tests on PE targets. + + Contributed by Jon Turney <@dronecode.org.uk> + +- The tests no longer rely on bash, only Python (which is already used by + meson). + +- New API: + xkb_utf32_to_keysym + xkb_keymap_key_get_mods_for_level + XKB_KEY_XF86FullScreen + + libxkbcommon 0.10.0 - 2020-01-18 =================== diff --git a/meson.build b/meson.build index c23e92e..046fc54 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'libxkbcommon', 'c', - version: '0.10.0', + version: '1.0.0', default_options: [ 'c_std=c99', 'warning_level=2', diff --git a/xkbcommon.map b/xkbcommon.map index b9bfd26..e212f0d 100644 --- a/xkbcommon.map +++ b/xkbcommon.map @@ -104,7 +104,7 @@ global: xkb_keysym_to_upper; } V_0.7.0; -V_0.11.0 { +V_1.0.0 { global: xkb_utf32_to_keysym; xkb_keymap_key_get_mods_for_level; diff --git a/xkbcommon/xkbcommon-compose.h b/xkbcommon/xkbcommon-compose.h index f3c367a..8b41b98 100644 --- a/xkbcommon/xkbcommon-compose.h +++ b/xkbcommon/xkbcommon-compose.h @@ -208,7 +208,7 @@ enum xkb_compose_format { * `$XDG_CONFIG_HOME/XCompose` is checked (with a fall back to * `$HOME/.config/XCompose` if `XDG_CONFIG_HOME` is not defined). * This is a libxkbcommon extension to the search procedure in - * Compose(5) (since libxkbcommon 0.11.0). Note that other + * Compose(5) (since libxkbcommon 1.0.0). Note that other * implementations, such as libX11, might not find a Compose file in * this path. * 3. `HOME` - see Compose(5). diff --git a/xkbcommon/xkbcommon.h b/xkbcommon/xkbcommon.h index 5fabc34..d6a02a7 100644 --- a/xkbcommon/xkbcommon.h +++ b/xkbcommon/xkbcommon.h @@ -511,7 +511,7 @@ xkb_keysym_to_utf32(xkb_keysym_t keysym); * defined Unicode planes this function returns XKB_KEY_NoSymbol. * * @sa xkb_keysym_to_utf32() - * @since 0.11.0 + * @since 1.0.0 */ xkb_keysym_t xkb_utf32_to_keysym(uint32_t ucs); @@ -1199,7 +1199,7 @@ xkb_keymap_num_levels_for_key(struct xkb_keymap *keymap, xkb_keycode_t key, * @sa xkb_level_index_t * @sa xkb_mod_mask_t * @memberof xkb_keymap - * @since 0.11.0 + * @since 1.0.0 */ size_t xkb_keymap_key_get_mods_for_level(struct xkb_keymap *keymap, diff --git a/xkbregistry.map b/xkbregistry.map index 6e18b9c..ae5bae7 100644 --- a/xkbregistry.map +++ b/xkbregistry.map @@ -1,5 +1,5 @@ /* versions are kept in sync with libxkbcommon.so */ -V_0.11.0 { +V_1.0.0 { global: rxkb_context_new; rxkb_context_parse;