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