From d715d2dea5a4edb7fe9aafbda6bdb1196d5e8439 Mon Sep 17 00:00:00 2001 From: Andreas Wettstein Date: Fri, 5 Aug 2011 21:22:55 +0200 Subject: [PATCH] xkb: Support noLock and noUnlock flags for LockMods Signed-off-by: Andreas Wettstein --- xkb/xkbActions.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c index 4b5405a..000002a 100644 --- a/xkb/xkbActions.c +++ b/xkb/xkbActions.c @@ -344,15 +344,18 @@ _XkbFilterLockState( XkbSrvInfoPtr xkbi, filter->keycode = keycode; filter->active = 1; filter->filterOthers = 0; - filter->priv = 0; + filter->priv = xkbi->state.locked_mods&pAction->mods.mask; filter->filter = _XkbFilterLockState; filter->upAction = *pAction; - xkbi->state.locked_mods^= pAction->mods.mask; + if (!(filter->upAction.mods.flags&XkbSA_LockNoLock)) + xkbi->state.locked_mods|= pAction->mods.mask; xkbi->setMods = pAction->mods.mask; } else if (filter->keycode==keycode) { filter->active = 0; xkbi->clearMods = filter->upAction.mods.mask; + if (!(filter->upAction.mods.flags&XkbSA_LockNoUnlock)) + xkbi->state.locked_mods&= ~filter->priv; } return 1; } -- 1.7.6