mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-19 14:40:33 +01:00
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
3e987ea670
commit
cbf775cde7
1 changed files with 10 additions and 5 deletions
|
|
@ -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…
Add table
Reference in a new issue