Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 3666f2e0 | 2025-10-17 15:31:09 | xkbcli-list: Minor improvements | ||
| d1a1a17a | 2025-10-11 19:13:11 | interactive-wayland: Prevent buffer use after free The tool would crash on the second call to `buffer_create` calling `wl_buffer_destroy` on a dangling `inter->buf`. Fixes: e13faebb2a5a2b250a9c320515942edc1e652649 | ||
| 5e3011ce | 2025-10-06 08:35:47 | Fix invalid macro in xkbcli-how-to-type.1 `.Be` is not a valid macro. I believe the intent was to end the list opened with `.Bl`. The macro for that is `.El`, as used elsewhere. https://mandoc.bsd.lv/man/mdoc.7.html#Displays_and_lists | ||
| 7c9f8668 | 2025-09-30 13:10:13 | tools: Add option drop unused bits | ||
| 6e45c83c | 2025-09-24 20:30:40 | tools: Add option to disable pretty-printing | ||
| 3203a010 | 2025-08-13 17:06:20 | tools: Add internal introspection This tool enables simple analysis of XKB files with a YAML or DOT output: - resolve XKB paths; - list sections of a file; - list the includes of each section; - optionally process each include recursively. Additionally, the RDF Turtle output enables to query using the powerful SPARQL language. The tool is for internal use only for now, so that we can test it in various use cases before deciding if making it public. | ||
| 4d396f6d | 2025-09-16 21:05:27 | tools: Added KcCGST output in YAML | ||
| 934d4fd8 | 2025-08-21 19:33:28 | logging: Improve tools & benches | ||
| 3449f69f | 2025-08-16 12:57:49 | doc: Add new message XKB_ERROR_INVALID_COMPOSE_LOCALE | ||
| 13ae4a26 | 2025-08-06 20:07:16 | tools: Add Compose support to how-to-type - Enable Compose support by default; disable it with `--disable-compose` - Some filters are used to avoid combinatorial explosion | ||
| b5d969dd | 2025-08-06 17:22:38 | compose: Move constants to dedicated header | ||
| 7394a3c7 | 2025-08-06 20:47:07 | tools: Fix how-to-type modifier mask test | ||
| 055c5362 | 2025-08-06 14:09:35 | tools: Do not use a window for dump-keymap-wayland Previously a window would appear for a very short time, which is unpleasant and potentially dangerous for people sensitive to flashes. | ||
| 0aa54741 | 2025-08-04 22:46:36 | tools: Add --local-state for interactive-{x11,wayland} Enable to use a *local* state machine and ignore server updates for modifiers/groups. Only key press/release and new keymap events are used. | ||
| 885f8129 | 2025-08-05 23:17:29 | tools: Fix memory leak in interactive-wayland | ||
| 9cc19e4e | 2025-08-04 22:42:34 | tools: Fix missing --verbose doc + misc | ||
| 6df45124 | 2025-08-05 10:19:48 | tools: Add --keymap to xkbcli-how-to-type It enables to load the keymap from a file or stdin instead of resolving RMLVO names. Piping is also interesting for using with `dump-keymap-*` tools. | ||
| 09e93fa0 | 2025-08-06 10:12:39 | tools: Enable custom keymap with interactive-{x11,wayland} Added the `--keymap` option to enable providing the keymap to use instead of the one from the display server. Implies `--local-state`. Note that the other RMLVO options do not need to be implemented, since one can simply pipe a keymap from `xkbcli compile-keymap`. The `--keymap` option is also useful for users that do not have the input permissions to access evdev API. | ||
| 9d4885df | 2025-08-04 14:31:13 | tools: Improve how-to-type keysym parsing - Fixed incorrect numeric keysym parsing due to `errno` not being reset. - Added parsing keysym as fallback when `--keysym` is omitted. - Added arguments tests. - Fixed tools test Python types. - Updated documentation. | ||
| 29579ad4 | 2025-08-04 12:35:25 | tools: Add --verbose to all tools Added `--verbose` to: - `xkbcli interactive-wayland` - `xkbcli interactive-x11` - `xkbcli compile-compose` - `xkbcli how-to-type` | ||
| f5d079f5 | 2025-08-04 09:58:42 | tools: Improve interactive events output Improved the output of events for `xkbcli interactive-*` tools: - Added `--multiline` to enable multiline event output, which provides more details and does not have formatting limitations. - Added `--uniline` to enable uniline event output. While this is the current default, future versions may switch to multiline display. | ||
| cce63b90 | 2025-08-04 09:48:32 | tools: Print interactive state changes `xkbcli interactive-*` tools: print detailed state change events. | ||
| d8caabf5 | 2025-08-04 09:30:48 | tools: Print interactive key release event `xkbcli interactive-*` tools: - Print key release events. This is particularly useful when analyzing the output sent by another person, in order to know the exact key sequence. | ||
| a83a482c | 2025-07-18 11:27:52 | tools: Add variants with automatic session type detection Added: - `xkbcli-interactive` - `xkbcli-dump-keymap` | ||
| dc63e5f8 | 2025-07-07 12:28:24 | Ensure config.h is always included first While `config.h` may not be necessary in every file, it ensures consistency and makes code refactoring safer. | ||
| 56a32cc8 | 2025-06-18 11:37:19 | xkbcli-interactive-wayland: xdg-decoration-unstable-v1 Use if available, to get window decoration. Also resize the window bigger enough to make its title readable. | ||
| e13faebb | 2025-06-18 11:36:07 | xkbcli-interactive-wayland: Fix memory leak | ||
| c2896b32 | 2025-06-12 09:16:54 | messages: Add new error "incompatible-keymap-text-format" | ||
| da2af4d3 | 2025-06-17 12:08:59 | xkbcli-list: Added `layout-specific` field for options | ||
| 52a4d9b0 | 2025-06-17 11:03:12 | rules: Require layout or variant to enable %i expansion Before this commit, the following rule would always match: ! model = symbols * = s:%i and set symbols to `s:1`, but the `:%i` is aimed to be used only when the rules header specifies the layout or the variant. Let’s be strict and disallow matching this kind of buggy rule. Emit an error message so that we can detect it. | ||
| 82ea2915 | 2025-05-06 17:22:22 | tools: Add options to use explicit keymap format The default output keymap format is `XKB_KEYMAP_USE_ORIGINAL_FORMAT`. | ||
| 324984f1 | 2025-05-17 06:49:49 | xkbcomp: Fix log for unknown default field | ||
| fb9fec18 | 2025-05-10 10:18:38 | xkbcomp: Checked arithmetic Use a polyfill for C23 checked arithmetic. This is a bit paranoid, as we expect the user to use only 32 bit integers, so the signed 64 bit integer we use to store the result should be more than enough. Use jtckdint v1.0: - repository: https://github.com/jart/jtckdint - commit: 339450d13d8636f05dcb71ba36efddb226db481e - removed all C++-specific code | ||
| 06fbe1b2 | 2025-05-14 20:08:39 | doc: Promote xkbcli tools | ||
| 48a6faa7 | 2025-05-14 15:13:50 | tools: Remove internal interactive-evdev This *internal* tool is no longer necessary, as its single special feature, `--print-modmaps`, is now available in the *public* `compile-keymap` tool. | ||
| ae80b244 | 2025-05-14 15:08:37 | tools: Add --modmaps option to compile-keymap - Remove the `ENABLE_PRIVATE_APIS` guards on modmaps printing functions, since we use no private symbols. - Copy the `--print-modmaps` options from `interactive-evdev` into `compile-keymap` and rename it to `--modmaps`. This enables a feature similar to `xmodmap -pm`. | ||
| fb73f9f5 | 2025-05-14 15:02:24 | tools: Refactor modmaps printing functions Simplify and make them print valid YAML. | ||
| 2e07790e | 2025-05-14 14:55:55 | tools: Remove modmaps fields in interactive entries They are already printed before entering the interactive mode. | ||
| b421c2cf | 2025-05-14 10:12:15 | tools: Refactor compile-keymap - Use explicit input and output format - Perform more tests | ||
| 61d8ec67 | 2025-05-12 18:20:47 | misc: Fix string format specifiers Ensure better portability. | ||
| b49a4409 | 2025-05-12 18:20:12 | tools: Minor refactor of how-to-type | ||
| 2617ebc5 | 2025-05-12 07:32:04 | keymap: Ensure proper type for modifiers count | ||
| 22d27277 | 2025-05-10 10:12:31 | actions: Reject arguments if they are not expected `NoAction`, `VoidAction` and `TerminateServer` do not accept arguments. | ||
| d239a3f0 | 2025-05-11 11:42:20 | actions: Improve unsupported legacy X11 actions handling - Display a warning - Document drawbacks of degrading to `NoAction()` | ||
| 137c5e90 | 2025-05-11 12:37:23 | actions: Improve unknown action logging | ||
| 3d79f459 | 2025-03-29 11:46:34 | xkbcomp: Add Unicode code point escape sequence \u{NNNN} Unicode code point escape sequences `\u{NNNN}` are replaced with the UTF-8 encoding of their corresponding code point `U+NNNN`, if legal. Supported Unicode code points are in the range `1‥0x10ffff`. Note that we will reject the `U+0000` NULL code point, as we reject it in the octal escape sequence `\0`. This is intended mainly for the upcoming feature to write keysyms as UTF-8 encoded strings. It can be used for various reasons: - avoid encoding issues; - avoid issue with font rendering (e.g. Asian scripts); - make white space or zero-width characters more readable. | ||
| 9b255d1e | 2025-04-03 07:52:15 | tools: Update bash completion Handle positional argument as a path for the `compile-*` tools. | ||
| 955eef14 | 2025-03-28 06:30:05 | tools: Ensure to honor user locale This is just good practice, but it is also necessary if we want to facilitate the discovery of issues with locales in libxkbcommon. | ||
| 275ffa66 | 2025-03-13 21:28:35 | tools: Make --kccgst xkbcli-compile-keymap option public The new public option `--kccgst` enables to display the result of RMLVO resolution to KcCGST components. This option has the same function than `setxkbmap -print`. This is particularly useful for debugging issues with the rules. Before this commit it was a private API. This commit enables us to remove the *internal* version of `xkbcli-compile-keymap`. | ||
| 8e92f25e | 2025-03-13 21:26:59 | rules: Added xkb_components_names_from_rules() This is mainly for debugging purposes and to enable displaying KcCGST values from RMLVO resolution in `xkbcli compile-keymap --kccgst`. | ||
| f3a4eeaa | 2025-03-26 16:04:39 | symbols: Improve keysym parsing | ||
| 70d11abd | 2025-03-26 07:38:05 | messages: Add file encoding and invalid syntax entries Added: - `XKB_ERROR_INVALID_FILE_ENCODING` - `XKB_ERROR_INVALID_RULES_SYNTAX` - `XKB_ERROR_INVALID_COMPOSE_SYNTAX` Changed: - `XKB_ERROR_INVALID_SYNTAX` renamed to `XKB_ERROR_INVALID_XKB_SYNTAX`. | ||
| c9b0c527 | 2025-02-13 20:26:04 | interactive-wayland: Fix int casts | ||
| 5cfd36ab | 2025-02-14 10:35:49 | tools: Do not load names from the environment by default Our tools are debugging tools and as such we need to have complete control to be able to reproduce setups. This is not currently the case, as we do not use `XKB_CONTEXT_NO_ENVIRONMENT_NAMES` by default nor can we set it. So it is very easy to forget about the various `XKB_DEFAULT_*` environement variables for the default RMLVO values, then to get puzzled by unexpected results. Added to that, these environment variables do not work correctly in `xkbcli-compile-xeymap`: calling the tool without RMLVO values will use these variables only if the RMLVO values are set explicitly empty or if the various *constants* `DEFAULT_XKB_*` are empty. This is unexpected, as the environment variables should *always* be used unless: - `XKB_CONTEXT_NO_ENVIRONMENT_NAMES` is used (not the case here); - the variable is empty; in this case the constants `DEFAULT_XKB_*` are used. Fixed by the following *breaking change*: make the tools use `XKB_CONTEXT_NO_ENVIRONMENT_NAMES` *by default*, unless the new `--enable-environment-names` option is used. We also make `rmlvo` incompatible with `--enable-environment-names` for now in the public tool, as else it requires a private API. | ||
| 2c10e50c | 2025-02-07 12:15:39 | tools: Fix compile-keymap default KcCGST values Values may be read from the environment. | ||
| a4038a47 | 2025-02-12 09:50:36 | Miscellaneous int types fixes | ||
| 7e918f2e | 2025-02-05 15:49:26 | tools: add Windows compat for S_ISFIFO Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| cfe53fe4 | 2025-02-05 15:37:49 | tools: add Windows include for execv Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| df2322d7 | 2025-02-05 14:41:21 | Replace include guards by `#pragma once` We currently have a mix of include headers, pragma once and some missing. pragma once is not standard but is widely supported, and we already use it with no issues, so I'd say it's not a problem. Let's convert all headers to pragma once to avoid the annoying include guards. The public headers are *not* converted. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| e120807b | 2025-01-29 15:35:22 | Update license notices to SDPX short identifiers + update LICENSE Fix #628. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 848ecacf | 2025-01-30 09:12:54 | tools: Enable Compose file positional argument and piping Also deprecate the `--file` flag as redundant. | ||
| bcb16d29 | 2025-01-28 13:19:06 | tools: Miscellaneous enhancements | ||
| b168623c | 2025-01-28 13:24:14 | tools: Enable using keymap file as a positional argument | ||
| 313001ce | 2025-01-28 13:48:02 | tools: Add --keymap alias and enable loading keymap files Add `--keymap` as a more intuitive alias to `--from-xkb`; it also makes it consistent with `interactive-evdev`. It optionally accepts a keymap file path; if the argument is empty or `-` then the keymap is read from `stdin`. | ||
| ae473f9f | 2025-01-28 09:25:33 | tools: Fix return code of compile-keymap Previously when using `--keymap` we mistakenly returned a boolean so that `true` (resp. false) translated to `EXIT_FAILURE` (resp. `EXIT_SUCCESS`). Fixed by returning the proper return code integer. | ||
| a5bdb954 | 2025-01-24 20:08:01 | tools: Fix signed literal used as a mask | ||
| 357ab0cb | 2025-01-23 16:42:30 | clang-tidy: Fix missing default case in switch statement | ||
| 5389a31e | 2025-01-22 17:33:03 | clang-tidy: Use memcpy instead of the insecure strcpy | ||
| c7fdf506 | 2025-01-16 20:23:28 | Use portable integer literal suffixes | ||
| e3e44998 | 2025-01-16 20:23:47 | Fix missing or incorrect integer literal suffixes The correct suffix is required in order to have the expected value in a portable way. | ||
| 420123fd | 2024-11-29 07:34:07 | export-keysyms: Enable all keysyms export + char names This enable to check case mappings for Unicode keysyms. | ||
| 628242b2 | 2024-11-14 18:09:03 | tools: Add --test to compile-{keymap,compose} The new flag `--test` enables to only test if compilation succeeds, without printing the corresponding keymap or Compose file. This is useful for quick feedback and to speedup some tests suites, e.g. for `xkeyboard-config`. | ||
| b8888345 | 2024-09-20 09:17:23 | tools: Add xkbcli dump-keymap-{wayland,x11} There is currently no easy way to dump a keymap from a Wayland compositor, such as `xkbcomp -xkb $DISPLAY -` could do for X servers. As `xkbcomp` may not be intuitive, a corresponding tool for X servers would also be useful. Add the tools `xkbcli-dump-keymap-{wayland,x11}` by tweaking the existing `xkbcli-interactive-{wayland,x11}` tools. | ||
| 60228356 | 2024-10-07 10:42:27 | symbols: Add message ID for incompatible keysyms and actions counts | ||
| 7c4c718b | 2024-09-30 06:13:38 | Allow only the first group in symbols sections when using RMLVO Currently `xkb_keymap_num_layouts` may return a greater number than the number of layouts configured using RMLVO, because we allow symbols sections to define various groups per key. This is unintuitive and kind of buggy: groups should be added via rules by setting an explicit `:n` modifier. Fix: when parsing a keymap using RMLVO resolution: - Get the expected layouts count from the resulting KcCGST. - Drop the groups after the first one in included symbols sections. This will ensure that a symbol section can only define one group per key. Notes: - Compiling a keymap string directly is unaffected. - RMLVO resolution may still produce more groups than the input layouts. Indeed, some legacy rules in xkeyboard-config rely on this to insert automatically a US layout before the given non-Latin one, resulting in two layouts while only one was given. | ||
| a898bc81 | 2024-09-25 06:47:23 | logging: Added new error messages ID for keymap and rules | ||
| 0cd1087a | 2024-09-12 01:43:56 | xkbcli how-to-type: Enhance arguments parsing & doc Currently the positional parameter of the CLI is either a Unicode code point or a keysym. However their respective format is not documented. It turns out that there are multiple issues due to the use of `strtol`: - Code points can be parsed as octal, decimal and hexadecimal, while keysyms can only be parsed as hexadecimal. Some programs outputs keysyms in their decimal form (e.g. `wev`) so it is worth to bring symmetry with code points. - Octal format is unusual for both and is triggered by leading zeros, which is unintuitive in this context. - `U+NNNN` format is the standard format for Unicode code points but is not supported. - Plain characters are not supported, e.g.: a, é, ß, Æ, γ, 🦆, etc. Although this is probably the easiest format for most users. Fixed the issues above: - Allow the code point to be passed exactly in the following formats: - Literal character (requires UTF-8 character encoding of the terminal); - Decimal number; - Hexadecimal number: either `0xNNNN` or `U+NNNN` (any digit count) - Allow the keysym to be passed exactly in the following formats: - Decimal number; - Hexadecimal number: `0xNNNN` (any digit count); - Name. - Improve both `--help` message and manual page. | ||
| 44df6eee | 2024-09-23 07:27:48 | Add new warnings for deprecated keysyms Add 2 new warnings: - Deprecated keysym name (typo, historical alias, etc.); - Deprecated keysym (all names and forms). Guard deprecated keysym tests with verbosity level ≥2, so they are run only when actually needed. | ||
| 652b03cc | 2024-09-01 08:32:21 | compose: Add Compose table dump internal API - Move `print_compose_table_entry` to own file and add a `file` argument to select output. - Add `xkb_compose_table_dump` to dump a Compose table. This change is needed in order to share the feature “dump a Compose table” between tests and tools. | ||
| d85fc24d | 2024-07-16 10:22:23 | test: initialize two return values ../../../test/xvfb-wrapper.c:166:5: warning: Undefined or garbage value returned to caller [core.uninitialized.UndefReturn] 166 | return rc; ../../../tools/interactive-wayland.c:820:14: warning: The left operand of '>=' is a garbage value [core.UndefinedBinaryOperatorResult] 820 | exit(ret >= 0 ? EXIT_SUCCESS : EXIT_FAILURE); | ||
| a0a59d9f | 2024-07-16 10:37:09 | interactive-x11: initialize a variable If xkb_compose_table_new_from_locale() fails we end up de-initializing the keyboard state before it was ever initialized. ../../../tools/interactive-x11.c:196:5: warning: 1st function call argument is an uninitialized value [core.CallAndMessage] 196 | xkb_state_unref(kbd->state); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| 798b7b73 | 2024-02-23 17:10:15 | keysyms: Export explicitly named keysyms Added a tool to export explicitly named keysyms to a yaml file. This includes the following keysyms properties: - Value - Name - Corresponding Unicode code point, if relevant - Corresponding case mapping, if relevant This will allow us to check the case mappings easier and to refactor the related functions. | ||
| addf73c5 | 2024-07-12 09:17:34 | keysyms: Require only 5 bytes for UTF-8 encoding Require only 5 bytes for the buffer of `xkb_keysym_to_utf8`, as UTF-8 encodes code points on up to 4 bytes + 1 byte for the NULL-terminating byte. Previous standard [RFC 2279] (1998) required up to 6 bytes per code point, but has been superseded by [RFC 3629] (2003). [RFC 2279]: https://datatracker.ietf.org/doc/html/rfc2279 [RFC 3629]: https://datatracker.ietf.org/doc/html/rfc3629 | ||
| a4f62fcd | 2024-06-04 07:03:10 | doc (manuals): clean and expand apropos results Previously on FreeBSD/mandoc (probably affecting others), everything except xkbcli was being listed twice and wrapping on standard console in apropos because mdoc(7) names should not have spaces or be different than the title. Further, xkb is already parsed in search results by being in the name, so expand xkb to "X keyboard" so that they match for apropos keyboard. We did this already in xkbutils, which matches setxkbmap. These don't need to be quoted literals, and - doesn't need to be escaped, but I left them because there may be environments which are not to spec, but I'm happy to ammend this commit if that cleanup seems desirable. Co-authored-by: Ran Benita <ran@unusedvar.com> | ||
| abb6e588 | 2023-12-30 13:18:18 | tools: remove unused `#incldue <ctype.h>` We avoid this header due to its locale dependence. This include seems like a leftover in 44029221e8423f1ca93470952542a0517a208d42. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 13b36a76 | 2024-03-01 15:02:41 | Global default statement: Improve code & error message - Simplify error handling. - Improve error message: add message ID and relevant quotes and try to standardize a bit. - Add proper doc for in the message registry. Note: Instead of testing the value of `expr.op`, we test if the argument `elem` of `ExprResolveLhs` is set: this allows us to catch also the error with `x.y[z]` rather than just `x.y` as previously. | ||
| 883bac60 | 2024-02-14 11:26:10 | tools: constify the prefix in tools_print_keycode_state | ||
| 89ceb351 | 2024-02-14 10:23:15 | tools: add --verbose to interactive-evdev | ||
| dd3e2140 | 2024-02-08 20:15:22 | interactive-evdev: reduce the space allocated for keysyms (#443) * interactive-evdev: reduce the printed space used for keysyms In commit 8cca3a7bfb185876994d6ec3d25cda88e5640a4d the buffer for the keysym was extended to accommodate for up to XKB_COMPOSE_MAX_STRING_SIZE bytes. This caused the printf to expand to the same width for the keysym alone, making the output less useful. Drop this back down to the same width it was before. | ||
| 8e26a8b2 | 2024-02-07 10:06:15 | interactive-evdev: align Usage and or in the help output | ||
| 8cca3a7b | 2023-12-05 17:39:59 | compose: Add XKB_COMPOSE_MAX_STRING_SIZE Define the maximum size of a compose sequence result string explicit as a constant and use it everywhere to improve the code readability. | ||
| c1b5da1d | 2024-01-12 10:40:26 | tools: Fix bash completion permissions There is no need to give execution permission. It also creates an unnecessary work for packaging. Fixed by removing execution permission. | ||
| 0074baf4 | 2023-12-19 07:28:52 | keysyms: Add XKB_KEYSYM_NAME_MAX_SIZE for internal use Currently there is no indication of the maximum length of keysym names. This is statically known, so add the new *internal* following API: `XKB_KEYSYM_NAME_MAX_SIZE`. | ||
| cfcc7922 | 2023-11-07 12:58:46 | xkbcli-compose: Simplify locale options Current options to set the locale are convoluted: - An explicit locale *must* be given, while a sane default would be to use the user environment. - Then there are two options that were useful while testing locale handling: read environment variables or use `setlocale`. But the program has already called: ``` setlocale(LC_ALL, ""); ``` so it turns out the two options lead to the same results. Remove options `--locale-from-env` and `--locale-from-setlocale` and make the locale default to the user environment. | ||
| 0a577a09 | 2023-11-07 12:58:41 | xkbcli-compile-compose: Fix string result escaping Currently the result string is not escaped and may produce invalid results. Fixed by introducing an ad-hoc escape function and relative tests. | ||
| d826d70b | 2023-11-07 12:58:36 | xkbcli: Fix bash completion `compgen` expect command options list formatted as a newline-separated list. Add a missing newline when concatenating two lists. | ||
| bc330c00 | 2023-11-07 12:58:20 | xkbcli: Promote compose to xkbcli-compile-compose Previously this tool was only used for internal testing and thus not installed. But it is useful for debugging, much like xkbcli-compile-keymap. | ||
| 00e3058e | 2023-11-06 21:53:51 | Prevent recursive includes of keymap components - Add check for recursive includes of keymap components. It relies on limiting the include depth. The threshold is currently to 15, which seems reasonable with plenty of margin for keymaps in the wild. - Add corresponding new log message `recursive-include`. - Add tests for recursive includes. | ||
| 4b58ff78 | 2023-10-25 20:59:36 | Fix memory leak in print_keymap The string buffer was not freed. | ||
| 171e0170 | 2023-10-25 20:39:39 | Fix memory leak in FindFileInXkbPath The string `buf` was not freed after each call to `asprintf_safe`. Avoid allocating and introduce the new message: `XKB_ERROR_INSUFFICIENT_BUFFER_SIZE`. |