Don't clear real mods in action modmask
Previously, we would clear out the real modmask when updating the modmask for action maps, if not using the key's modmask. The correct behaviour here is instead to use the key's modmask if using the modmap, else use the real mods provided with the action originally. Signed-off-by: Daniel Stone <daniel@fooishbar.org>master
parent
f44eed3e9a
commit
1afc6fca4d
|
@ -875,23 +875,15 @@ UpdateActionMods(struct xkb_desc *xkb, union xkb_action *act, uint32_t rmodmask)
|
||||||
case XkbSA_SetMods:
|
case XkbSA_SetMods:
|
||||||
case XkbSA_LatchMods:
|
case XkbSA_LatchMods:
|
||||||
case XkbSA_LockMods:
|
case XkbSA_LockMods:
|
||||||
if (act->mods.flags & XkbSA_UseModMapMods) {
|
if (act->mods.flags & XkbSA_UseModMapMods)
|
||||||
act->mods.real_mods = rmodmask;
|
act->mods.real_mods = rmodmask;
|
||||||
act->mods.mask = act->mods.real_mods;
|
act->mods.mask = act->mods.real_mods;
|
||||||
}
|
|
||||||
else {
|
|
||||||
act->mods.mask = 0;
|
|
||||||
}
|
|
||||||
act->mods.mask |= VModsToReal(xkb, act->mods.vmods);
|
act->mods.mask |= VModsToReal(xkb, act->mods.vmods);
|
||||||
break;
|
break;
|
||||||
case XkbSA_ISOLock:
|
case XkbSA_ISOLock:
|
||||||
if (act->iso.flags & XkbSA_UseModMapMods) {
|
if (act->iso.flags & XkbSA_UseModMapMods)
|
||||||
act->iso.real_mods = rmodmask;
|
act->iso.real_mods = rmodmask;
|
||||||
act->iso.mask = act->iso.real_mods;
|
act->iso.mask = act->iso.real_mods;
|
||||||
}
|
|
||||||
else {
|
|
||||||
act->iso.mask = 0;
|
|
||||||
}
|
|
||||||
act->iso.mask |= VModsToReal(xkb, act->iso.vmods);
|
act->iso.mask |= VModsToReal(xkb, act->iso.vmods);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue