x11/keymap: don't forget to add the vmod offset in get_vmods
The first 8 modifiers in keymap->mods are the real modifiers; the virtual modifiers are then at slots 8-24. But XkbGetMap's virtualMods mask starts the virtual modifiers at zero, so we need to add an offset (like we do correctly in get_vmod_names()). https://github.com/xkbcommon/libxkbcommon/issues/9 Reported-by: @rtcm Signed-off-by: Ran Benita <ran234@gmail.com>master
parent
9db1432326
commit
01753c0475
|
@ -513,9 +513,10 @@ get_vmods(struct xkb_keymap *keymap, xcb_connection_t *conn,
|
||||||
for (unsigned i = 0; i < NUM_VMODS; i++) {
|
for (unsigned i = 0; i < NUM_VMODS; i++) {
|
||||||
if (reply->virtualMods & (1u << i)) {
|
if (reply->virtualMods & (1u << i)) {
|
||||||
uint8_t wire = *iter;
|
uint8_t wire = *iter;
|
||||||
|
struct xkb_mod *mod = &keymap->mods.mods[NUM_REAL_MODS + i];
|
||||||
|
|
||||||
keymap->mods.mods[i].type = MOD_VIRT;
|
mod->type = MOD_VIRT;
|
||||||
keymap->mods.mods[i].mapping = translate_mods(wire, 0, 0);
|
mod->mapping = translate_mods(wire, 0, 0);
|
||||||
|
|
||||||
iter++;
|
iter++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue