• Show log

    Commit

  • Hash : ef81d04e
    Author : Pierre Le Marre
    Date : 2023-09-18T18:17:34

    Structured log messages with a message registry
    
    Currently there is little structure in the log messages, making
    difficult to use them for the following use cases:
    
    - A user looking for help about a log message: the user probably
      uses a search engine, thus the results will depend on the proper
      indexing of our documentation and the various forums. It relies
      only on the wording of the message, which may change with time.
    - A user wants to filter the logs resulting of the use of one of the
      components of xkbcommon. A typical example would be testing
      xkeyboard-config against libxkbcommon. It requires the use of a
      pattern (simple words detection or regex). The issue is that the
      pattern may become silently out-of-sync with xkbcommon.
    
    A common practice (e.g. in compilers) is to assign unique error codes
    to reference theses messages, along with an error index for
    documentation.
    
    Thus this commit implements the following features:
    
    - Create a message registry (message-registry.yaml) that defines the
      log messages produced by xkbcommon. This is a simple YAML file that
      provides, for each message:
    
      - A unique numeric code as a short identifier. It is used in the
        output message and thus can be easily be filtered to spot errors
        or searched in the internet. It must not change: if the
        semantics of message changes, it is better to introduce a new
        message for clarity.
      - A unique text identifier, meant for two uses:
    
        1. Generate constants dealing with log information in our code
           base.
        2. Generate human-friendly names for the documentation.
    
      - A type: currently warning or error. Used to prefix the constants
        (see hereinabove) and for basic classification in documentation.
      - A short description, used as concise and mandatory documentation.
      - An optionnal detailed description.
      - Optional examples, intended to help the user to fix issues
        themself.
      - Version of xkbcommon it was added. For old entries this often
        unknown, so they will default to 1.0.0.
      - Version of xkbcommon it was removed (optional)
    
      No entry should ever be deleted from this index, even if the message
      is not used anymore: it ensures we have unique identifiers along the
      history of xkbcommon, and that users can refer to the documentation
      even for older versions.
    
    - Add the script update-message-registry.py to generate the following
      files:
    
      - messages.h: message code enumeration for the messages currently
        used in the code base. Currently a private API.
      - message.registry.md: the error index documentation page.
    
    - Modify the logging functions to use structured messages. This is a
      work in progress.
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/libxkbcommon.git
    Git SSH git@git.kmx.io:kc3-lang/libxkbcommon.git
    Public access ? public
    Description

    keymap handling library for toolkits and window systems

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags

  • README.md

  • libxkbcommon

    libxkbcommon is a keyboard keymap compiler and support library which processes a reduced subset of keymaps as defined by the XKB (X Keyboard Extension) specification. It also contains a module for handling Compose and dead keys and a separate library for listing available keyboard layouts.

    Quick Guide

    See Introduction to XKB to learn the essentials of XKB.

    See Quick Guide for an introduction on how to use this library.

    Building

    libxkbcommon is built with Meson:

    meson setup build
    meson compile -C build
    meson test -C build # Run the tests.

    To build for use with Wayland, you can disable X11 support while still using the X11 keyboard configuration resource files thusly:

    meson setup build \
        -Denable-x11=false \
        -Dxkb-config-root=/usr/share/X11/xkb \
        -Dx-locale-root=/usr/share/X11/locale
    meson compile -C build

    API

    While libxkbcommon’s API is somewhat derived from the classic XKB API as found in X11/extensions/XKB.h and friends, it has been substantially reworked to expose fewer internal details to clients.

    See the API Documentation.

    Dataset

    libxkbcommon does not distribute a keymap dataset itself, other than for testing purposes. The most common dataset is xkeyboard-config, which is used by all current distributions for their X11 XKB data. More information on xkeyboard-config is available here:

    https://www.freedesktop.org/wiki/Software/XKeyboardConfig

    The dataset for Compose is distributed in libX11, as part of the X locale data.

    Relation to X11

    See Compatibility notes.

    Development

    An extremely rudimentary homepage can be found at

    https://xkbcommon.org

    xkbcommon is maintained in git at

    https://github.com/xkbcommon/libxkbcommon

    Patches are always welcome, and may be sent to either

    <xorg-devel@lists.x.org> or <wayland-devel@lists.freedesktop.org>

    or in a GitHub pull request.

    Bug reports (and usage questions) are also welcome, and may be filed at GitHub.

    The maintainers are

    Credits

    Many thanks are due to Dan Nicholson for his heroic work in getting xkbcommon off the ground initially.