-diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
-index c473df1..0ac2c71 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
-@@ -341,22 +341,83 @@ _XkbFilterLatchState(XkbSrvInfoPtr xkbi,
+@@ -351,22 +351,83 @@ _XkbFilterLatchState(XkbSrvInfoPtr xkbi,
}
static int
filter->upAction = *pAction;
if (!(filter->upAction.mods.flags & XkbSA_LockNoLock))
xkbi->state.locked_mods |= pAction->mods.mask;
-@@ -1129,9 +1190,12 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
+@@ -1185,9 +1246,12 @@ XkbHandleActions(DeviceIntPtr dev, Devic
sendEvent = _XkbFilterLatchState(xkbi, filter, key, &act);
break;
case XkbSA_LockMods: