xkb: fix SlowKeys release/reject beeps
Wrong use of the mask here caused a beep whenever a key was rejected but also when it was released after being accepted. Fix the mask to check for the correct enabled controls. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
a6288f0954
commit
f9b5bbaa3a
|
@ -618,6 +618,7 @@ AccessXFilterReleaseEvent(DeviceEvent *event, DeviceIntPtr keybd)
|
||||||
if (ctrls->enabled_ctrls & XkbSlowKeysMask) {
|
if (ctrls->enabled_ctrls & XkbSlowKeysMask) {
|
||||||
xkbAccessXNotify ev;
|
xkbAccessXNotify ev;
|
||||||
unsigned beep_type;
|
unsigned beep_type;
|
||||||
|
unsigned mask;
|
||||||
|
|
||||||
ev.keycode = key;
|
ev.keycode = key;
|
||||||
ev.slowKeysDelay = ctrls->slow_keys_delay;
|
ev.slowKeysDelay = ctrls->slow_keys_delay;
|
||||||
|
@ -625,14 +626,16 @@ AccessXFilterReleaseEvent(DeviceEvent *event, DeviceIntPtr keybd)
|
||||||
if (BitIsOn(keybd->key->down, key) || (xkbi->mouseKey == key)) {
|
if (BitIsOn(keybd->key->down, key) || (xkbi->mouseKey == key)) {
|
||||||
ev.detail = XkbAXN_SKRelease;
|
ev.detail = XkbAXN_SKRelease;
|
||||||
beep_type = _BEEP_SLOW_RELEASE;
|
beep_type = _BEEP_SLOW_RELEASE;
|
||||||
|
mask = XkbAX_SKReleaseFBMask;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ev.detail = XkbAXN_SKReject;
|
ev.detail = XkbAXN_SKReject;
|
||||||
beep_type = _BEEP_SLOW_REJECT;
|
beep_type = _BEEP_SLOW_REJECT;
|
||||||
|
mask = XkbAX_SKRejectFBMask;
|
||||||
ignoreKeyEvent = TRUE;
|
ignoreKeyEvent = TRUE;
|
||||||
}
|
}
|
||||||
XkbSendAccessXNotify(keybd, &ev);
|
XkbSendAccessXNotify(keybd, &ev);
|
||||||
if (XkbAX_NeedFeedback(ctrls, XkbAX_SKRejectFBMask)) {
|
if (XkbAX_NeedFeedback(ctrls, mask)) {
|
||||||
XkbDDXAccessXBeep(keybd, beep_type, XkbSlowKeysMask);
|
XkbDDXAccessXBeep(keybd, beep_type, XkbSlowKeysMask);
|
||||||
}
|
}
|
||||||
if (xkbi->slowKey == key)
|
if (xkbi->slowKey == key)
|
||||||
|
|
Loading…
Reference in New Issue