tools


Log

Author Commit Date CI Message
Jan Alexander Steffens (heftig) d1a1a17a 2025-10-11T19: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
Pat Brisbin 5e3011ce 2025-10-06T08: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
Pierre Le Marre 7c9f8668 2025-09-30T13:10:13 tools: Add option drop unused bits
Pierre Le Marre 6e45c83c 2025-09-24T20:30:40 tools: Add option to disable pretty-printing
Pierre Le Marre 3203a010 2025-08-13T17: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.
Pierre Le Marre 4d396f6d 2025-09-16T21:05:27 tools: Added KcCGST output in YAML
Pierre Le Marre 934d4fd8 2025-08-21T19:33:28 logging: Improve tools & benches
Pierre Le Marre 3449f69f 2025-08-16T12:57:49 doc: Add new message XKB_ERROR_INVALID_COMPOSE_LOCALE
Pierre Le Marre 13ae4a26 2025-08-06T20: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
Pierre Le Marre b5d969dd 2025-08-06T17:22:38 compose: Move constants to dedicated header
Pierre Le Marre 7394a3c7 2025-08-06T20:47:07 tools: Fix how-to-type modifier mask test
Pierre Le Marre 055c5362 2025-08-06T14: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.
Pierre Le Marre 6df45124 2025-08-05T10: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.
Pierre Le Marre 09e93fa0 2025-08-06T10: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.
Pierre Le Marre 0aa54741 2025-08-04T22: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.
Pierre Le Marre 885f8129 2025-08-05T23:17:29 tools: Fix memory leak in interactive-wayland
Pierre Le Marre 9cc19e4e 2025-08-04T22:42:34 tools: Fix missing --verbose doc + misc
Pierre Le Marre 9d4885df 2025-08-04T14: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.
Pierre Le Marre 29579ad4 2025-08-04T12:35:25 tools: Add --verbose to all tools Added `--verbose` to: - `xkbcli interactive-wayland` - `xkbcli interactive-x11` - `xkbcli compile-compose` - `xkbcli how-to-type`
Pierre Le Marre cce63b90 2025-08-04T09:48:32 tools: Print interactive state changes `xkbcli interactive-*` tools: print detailed state change events.
Pierre Le Marre d8caabf5 2025-08-04T09: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.
Pierre Le Marre f5d079f5 2025-08-04T09: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.
Pierre Le Marre a83a482c 2025-07-18T11:27:52 tools: Add variants with automatic session type detection Added: - `xkbcli-interactive` - `xkbcli-dump-keymap`
Pierre Le Marre dc63e5f8 2025-07-07T12: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.
Pierre Le Marre 56a32cc8 2025-06-18T11: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.
Pierre Le Marre e13faebb 2025-06-18T11:36:07 xkbcli-interactive-wayland: Fix memory leak
Pierre Le Marre c2896b32 2025-06-12T09:16:54 messages: Add new error "incompatible-keymap-text-format"
Pierre Le Marre da2af4d3 2025-06-17T12:08:59 xkbcli-list: Added `layout-specific` field for options
Pierre Le Marre 52a4d9b0 2025-06-17T11: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.
Pierre Le Marre 82ea2915 2025-05-06T17:22:22 tools: Add options to use explicit keymap format The default output keymap format is `XKB_KEYMAP_USE_ORIGINAL_FORMAT`.
Pierre Le Marre 324984f1 2025-05-17T06:49:49 xkbcomp: Fix log for unknown default field
Pierre Le Marre fb9fec18 2025-05-10T10: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
Pierre Le Marre 06fbe1b2 2025-05-14T20:08:39 doc: Promote xkbcli tools
Pierre Le Marre 48a6faa7 2025-05-14T15: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.
Pierre Le Marre ae80b244 2025-05-14T15: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`.
Pierre Le Marre fb73f9f5 2025-05-14T15:02:24 tools: Refactor modmaps printing functions Simplify and make them print valid YAML.
Pierre Le Marre 2e07790e 2025-05-14T14:55:55 tools: Remove modmaps fields in interactive entries They are already printed before entering the interactive mode.
Pierre Le Marre b421c2cf 2025-05-14T10:12:15 tools: Refactor compile-keymap - Use explicit input and output format - Perform more tests
Pierre Le Marre 61d8ec67 2025-05-12T18:20:47 misc: Fix string format specifiers Ensure better portability.
Pierre Le Marre b49a4409 2025-05-12T18:20:12 tools: Minor refactor of how-to-type
Pierre Le Marre 2617ebc5 2025-05-12T07:32:04 keymap: Ensure proper type for modifiers count
Pierre Le Marre 22d27277 2025-05-10T10:12:31 actions: Reject arguments if they are not expected `NoAction`, `VoidAction` and `TerminateServer` do not accept arguments.
Pierre Le Marre d239a3f0 2025-05-11T11:42:20 actions: Improve unsupported legacy X11 actions handling - Display a warning - Document drawbacks of degrading to `NoAction()`
Pierre Le Marre 137c5e90 2025-05-11T12:37:23 actions: Improve unknown action logging
Pierre Le Marre 3d79f459 2025-03-29T11: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.
Pierre Le Marre 9b255d1e 2025-04-03T07:52:15 tools: Update bash completion Handle positional argument as a path for the `compile-*` tools.
Pierre Le Marre 955eef14 2025-03-28T06: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.
Pierre Le Marre 275ffa66 2025-03-13T21: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`.
Pierre Le Marre 8e92f25e 2025-03-13T21: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`.
Pierre Le Marre f3a4eeaa 2025-03-26T16:04:39 symbols: Improve keysym parsing
Pierre Le Marre 70d11abd 2025-03-26T07: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`.
Pierre Le Marre c9b0c527 2025-02-13T20:26:04 interactive-wayland: Fix int casts
Pierre Le Marre 5cfd36ab 2025-02-14T10: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.
Pierre Le Marre 2c10e50c 2025-02-07T12:15:39 tools: Fix compile-keymap default KcCGST values Values may be read from the environment.
Pierre Le Marre a4038a47 2025-02-12T09:50:36 Miscellaneous int types fixes
Ran Benita 7e918f2e 2025-02-05T15:49:26 tools: add Windows compat for S_ISFIFO Signed-off-by: Ran Benita <ran@unusedvar.com>
Ran Benita cfe53fe4 2025-02-05T15:37:49 tools: add Windows include for execv Signed-off-by: Ran Benita <ran@unusedvar.com>
Ran Benita df2322d7 2025-02-05T14: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>
Ran Benita e120807b 2025-01-29T15:35:22 Update license notices to SDPX short identifiers + update LICENSE Fix #628. Signed-off-by: Ran Benita <ran@unusedvar.com>
Pierre Le Marre 848ecacf 2025-01-30T09:12:54 tools: Enable Compose file positional argument and piping Also deprecate the `--file` flag as redundant.
Pierre Le Marre bcb16d29 2025-01-28T13:19:06 tools: Miscellaneous enhancements
Pierre Le Marre b168623c 2025-01-28T13:24:14 tools: Enable using keymap file as a positional argument
Pierre Le Marre 313001ce 2025-01-28T13: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`.
Pierre Le Marre ae473f9f 2025-01-28T09: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.
Pierre Le Marre a5bdb954 2025-01-24T20:08:01 tools: Fix signed literal used as a mask
Pierre Le Marre 357ab0cb 2025-01-23T16:42:30 clang-tidy: Fix missing default case in switch statement
Pierre Le Marre 5389a31e 2025-01-22T17:33:03 clang-tidy: Use memcpy instead of the insecure strcpy
Pierre Le Marre c7fdf506 2025-01-16T20:23:28 Use portable integer literal suffixes
Pierre Le Marre e3e44998 2025-01-16T20: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.
Pierre Le Marre 420123fd 2024-11-29T07:34:07 export-keysyms: Enable all keysyms export + char names This enable to check case mappings for Unicode keysyms.
Pierre Le Marre 628242b2 2024-11-14T18: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`.
Pierre Le Marre b8888345 2024-09-20T09: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.
Pierre Le Marre 60228356 2024-10-07T10:42:27 symbols: Add message ID for incompatible keysyms and actions counts
Pierre Le Marre 7c4c718b 2024-09-30T06: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.
Pierre Le Marre a898bc81 2024-09-25T06:47:23 logging: Added new error messages ID for keymap and rules
Pierre Le Marre 0cd1087a 2024-09-12T01: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.
Pierre Le Marre 44df6eee 2024-09-23T07: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.
Pierre Le Marre 652b03cc 2024-09-01T08: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.
Peter Hutterer d85fc24d 2024-07-16T10: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);
Peter Hutterer a0a59d9f 2024-07-16T10: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); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Pierre Le Marre 798b7b73 2024-02-23T17: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.
Pierre Le Marre addf73c5 2024-07-12T09: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
Alexander Ziaee a4f62fcd 2024-06-04T07: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>
Ran Benita abb6e588 2023-12-30T13: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>
Pierre Le Marre 13b36a76 2024-03-01T15: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.
Peter Hutterer 883bac60 2024-02-14T11:26:10 tools: constify the prefix in tools_print_keycode_state
Peter Hutterer 89ceb351 2024-02-14T10:23:15 tools: add --verbose to interactive-evdev
Peter Hutterer dd3e2140 2024-02-08T20: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.
Peter Hutterer 8e26a8b2 2024-02-07T10:06:15 interactive-evdev: align Usage and or in the help output
Pierre Le Marre 8cca3a7b 2023-12-05T17: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.
Pierre Le Marre c1b5da1d 2024-01-12T10: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.
Pierre Le Marre 0074baf4 2023-12-19T07: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`.
Pierre Le Marre cfcc7922 2023-11-07T12: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.
Pierre Le Marre 0a577a09 2023-11-07T12: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.
Pierre Le Marre d826d70b 2023-11-07T12: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.
Pierre Le Marre bc330c00 2023-11-07T12: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.
Pierre Le Marre 00e3058e 2023-11-06T21: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.
Pierre Le Marre 4b58ff78 2023-10-25T20:59:36 Fix memory leak in print_keymap The string buffer was not freed.
Pierre Le Marre 171e0170 2023-10-25T20: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`.
Pierre Le Marre 0f9c95df 2023-11-01T18:12:15 interactive-x11: Add support for Compose