• Show log

    Commit

  • Hash : a1e595e7
    Author : Pierre Le Marre
    Date : 2025-04-11T11:13:25

    rules: Fix merging KcCGST values in layout order
    
    When using layout index ranges (e.g. special indexes “any” or “later”),
    the rules still match following the order in the rules file, so layout
    indexes may match without following their natural order. So the resulting
    KcCGST value should not be merged with the output until reaching the end
    of the rule set.
    
    Because the rule set may also involve options, it may match multiple
    times for the *same* layout index. So these multiple matches should not
    be merged together either, until reaching the end of the rule set.
    
    When reaching the end of the rule set, for each KcCGST component the
    pending values are then merged: for each layout, for each KcCGST value
    in the corresponding sequence, merge with the output.
    
    ---
    
    Example:
    
        ! model = symbols
          *     = pc
        ! layout[any] option = symbols
          C           1      = +c1:%i
          C           2      = +c2:%i
          B           3      = skip
          B           4      = +b:%i
    
    The result of RMLVO
    
        {layout: "A,B,C", options: "4,3,2,1"}
    
    is:
    
        symbols = pc+b:2+c1:3+c2:3
    
    - `skip` was dropped because it has no explicit merge mode;
    - although every rule was matched in order, the resulting order of the
      symbols follows the order of the layouts, so `+b` appears before `+c1`
      and `+c2`.
    - the relative order of the options for layout C follows the order
      within the rule set, not the order of RMLVO.
    
    Before this commit, the result would have been:
    
        symbols = pc+c1:3+c2:3+b:2
    

  • 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 registry library for listing available keyboard layouts.

    Quick Guide

    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
    Complete list of user options @include meson_options.txt

    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 keyboard layout 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. Further information on xkeyboard-config is available at its homepage and at its repository.

    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.