Branch

  • Show log

    Commit

  • Hash : 939bf0e1
    Author : Pierre Le Marre
    Date : 2025-10-17T11:57:53

    xkbcomp: Never drop X11 canonical key types
    
    There are 4 mandatory *canonical key types* in the XKB protocol:
    - `ONE_LEVEL`
    - `TWO_LEVEL`
    - `ALPHABETIC`
    - `KEYPAD`
    
    They are always present in the keymap generated from xkeyboard-config.
    But since 31900860c65b88e4d10ad7dd00377e2815cca0f6 we drop unused key
    types by default, which may happen for the types hereinabove with e.g.
    4+ level layouts like `es`.
    
    In theory these types are automatically filled by libX11 if missing,
    but there are some bugs in the X11 ecosystem that prevents the keymap
    to be properly uploaded in the X server, leading to errors when
    retrieving it with libxkbcommon-x11. See:
    https://gitlab.archlinux.org/archlinux/packaging/packages/libxkbcommon/-/issues/3
    
    The following fixes were filed to fix the issues:
    
    - https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/292
    - https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2082
    - https://github.com/xkbcommon/libxkbcommon/pull/871
    
    However it’s not clear when new versions of libX11 and xserver will be
    released. So this commit is a hack to ensure that we do not drop the
    XKB canonical key types, as an effort to reduce breakage.
    
    WARNING: contrary to `xkbcomp`, we do not supply these types if they
    are missing, because a keymap that uses them (explicitly `type="…"` or
    implicitly with automatic types) without providing them is considered
    buggy. The only exception is if no key type is provided, a default one-
    level type `ONE_LEVEL` is provided and assigned to all keys.
    

  • 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