XKB: Generate correct key repeat events (bug #13114)
Make sure we send the correct event for the type of device when we're sending key repeat events, which stops repeats being sent to incorrect windows.
This commit is contained in:
parent
63351df0ee
commit
a80e64f150
|
@ -308,14 +308,19 @@ xkbControlsNotify cn;
|
|||
static CARD32
|
||||
AccessXRepeatKeyExpire(OsTimerPtr timer,CARD32 now,pointer arg)
|
||||
{
|
||||
XkbSrvInfoPtr xkbi= ((DeviceIntPtr)arg)->key->xkbInfo;
|
||||
DeviceIntPtr dev = (DeviceIntPtr) arg;
|
||||
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
|
||||
KeyCode key;
|
||||
BOOL is_core;
|
||||
|
||||
if (xkbi->repeatKey==0)
|
||||
if (xkbi->repeatKey == 0)
|
||||
return 0;
|
||||
key= xkbi->repeatKey;
|
||||
AccessXKeyboardEvent((DeviceIntPtr)arg,KeyRelease,key,True);
|
||||
AccessXKeyboardEvent((DeviceIntPtr)arg,KeyPress,key,True);
|
||||
|
||||
is_core = (dev == inputInfo.keyboard);
|
||||
key = xkbi->repeatKey;
|
||||
AccessXKeyboardEvent(dev, is_core ? KeyRelease : DeviceKeyRelease, key,
|
||||
True);
|
||||
AccessXKeyboardEvent(dev, is_core ? KeyPress : DeviceKeyPress, key, True);
|
||||
return xkbi->desc->ctrls->repeat_interval;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user