There are two ways to separate multiple files in XKB include statements:
'+' will cause the later file to override the first in case of conflict,
while '|' will cause it augment it (this is done by xkbcomp). '!' is
unrelated here.
Since '|' is practically never used, this wasn't noticed.
In the modified test, the '|some_compat' previously was just ignored.
Signed-off-by: Ran Benita <ran234@gmail.com>
if (!src)
return;
- if (*src == '+' || *src == '!') {
+ if (*src == '+' || *src == '|') {
tmp = *dst;
ret = asprintf(dst, "%s%s", *dst, src);
if (ret < 0)
* = default_compat
! option = compat
- my_option = +some:compat
+ my_option = |some:compat
.options = "my_option",
.keycodes = "my_keycodes", .types = "my_types",
- .compat = "my_compat+some:compat",
+ .compat = "my_compat|some:compat",
.symbols = "my_symbols+extra_variant",
};
assert(test_rules(ctx, &test1));