Author :
Pierre Le Marre
Date :
2025-09-20 15:21:16
Hash :79741554 Message :xkbcomp: Enable aliases to override keys
Contrary to Xorg’s xkbcomp, keys and aliases share the same
namespace. So we need to resolve name conflicts as they arise,
while xkbcomp will resolve them just before copying aliases into
the keymap.
The following example:
xkb_keycodes {
<A> = 8;
<B> = 9;
alias <B> = <A>;
};
will resolve in libxkbcommon to:
xkb_keycodes {
<A> = 8;
alias <B> = <A>;
};
while in Xorg’s xkbcomp:
xkb_keycodes {
<A> = 8;
<B> = 9;
};
The former does result in the intended mapping.
In practice, there is no such conflict in xkeyboard-config.
Another corner case is that now an alias can override a key even if
proved invalid aftwerwards, e.g.:
xkb_keycodes {
<A> = 1;
<B> = 2;
alias <B> = <C>; /* Override key, even if invalid entry */
};
results in:
xkb_keycodes {
<A> = 1;
};
This should be considered a bug in either the keycodes or rules files,
not libxkbcommon.