summaryrefslogtreecommitdiff
path: root/xkb/xkb.c
diff options
context:
space:
mode:
Diffstat (limited to 'xkb/xkb.c')
-rw-r--r--xkb/xkb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/xkb/xkb.c b/xkb/xkb.c
index bbb1d9df8..6fd66c5e5 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -915,9 +915,14 @@ ProcXkbSetControls(ClientPtr client)
stuff->axtOptsMask);
}
- if (stuff->changeCtrls & XkbPerKeyRepeatMask)
+ if (stuff->changeCtrls & XkbPerKeyRepeatMask) {
memcpy(new.per_key_repeat, stuff->perKeyRepeat,
XkbPerKeyBitArraySize);
+ if (xkbi->repeatKey &&
+ !BitIsOn(new.per_key_repeat, xkbi->repeatKey)) {
+ AccessXCancelRepeatKey(xkbi, xkbi->repeatKey);
+ }
+ }
old= *ctrl;
*ctrl= new;