xkb: Post PointerKeys through the XTEST device.
Posting an event through a master device may cause pointer jumps once lastSlave == master, caused by double scaling. To avoid this, post the fake event generated by XKB through the XTEST device instead. Fedora bug #560356 <https://bugzilla.redhat.com/560356> Tested-by: Andrew McNabb Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
a780e5b363
commit
108457dff8
|
@ -51,13 +51,13 @@ XkbDDXFakeDeviceButton(DeviceIntPtr dev,Bool press,int button)
|
||||||
/* If dev is a slave device, and the SD is attached, do nothing. If we'd
|
/* If dev is a slave device, and the SD is attached, do nothing. If we'd
|
||||||
* post through the attached master pointer we'd get duplicate events.
|
* post through the attached master pointer we'd get duplicate events.
|
||||||
*
|
*
|
||||||
* if dev is a master keyboard, post through the master pointer.
|
* if dev is a master keyboard, post through the XTEST device
|
||||||
*
|
*
|
||||||
* if dev is a floating slave, post through the device itself.
|
* if dev is a floating slave, post through the device itself.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (IsMaster(dev))
|
if (IsMaster(dev))
|
||||||
ptr = GetMaster(dev, MASTER_POINTER);
|
ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER));
|
||||||
else if (!dev->u.master)
|
else if (!dev->u.master)
|
||||||
ptr = dev;
|
ptr = dev;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user