• Show log

    Commit

  • Hash : 5b5b67f2
    Author : Wismill
    Date : 2023-05-01T22:30:41

    Add support for modmap None (#291)
    
    Unlike current xkbcommon, X11’s xkbcomp allows to remove entries in
    the modifiers’ map using “modifier_map None { … }”.
    
    “None” is translated to the special value “XkbNoModifier” defined in
    “X11/extensions/XKB.h”. Then it relies on the fact that in "CopyModMapDef",
    the following code:
    
        1U << entry->modifier
    
    ends up being zero when “entry->modifier” is “XkbNoModifier” (i.e. 0xFF).
    Indeed, it relies on the overflow behaviour of the left shift, which in
    practice resolves to use only the 5 low bits of the shift amount, i.e.
    0x1F here. Then the result of “1U << 0xFF” is cast to “char”, i.e. 0.
    
    This is a good trick but too magical, so in libxkbcommon we will use
    an explicit test against our new constant XKB_MOD_NONE.
    

  • 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
    Users
    thodg_w kc3_lang_org thodg_l thodg_m www_kmx_io thodg
    Tags