summaryrefslogtreecommitdiff
path: root/xkb/xkbEvents.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@redhat.com>2008-10-31 14:36:48 +1030
committerPeter Hutterer <peter.hutterer@redhat.com>2008-11-04 16:04:15 +1030
commitcbc6f983959595aa21c9dd72fac6a7070a650ef7 (patch)
treefe64df0f19ec15dda6b1a1cd531850097a11d708 /xkb/xkbEvents.c
parent4971315296cbf868dd738c1c0c1c504fcfe1b619 (diff)
xkb: when faking mouse button events, fake them on the correct devices.
When MouseKeys are activated, keyboard devices may generate fake mouse button events through XKB. Let's get then running through the appropriate paths, i.e. as XI events on the correct device. To make matters more fun, ProcessOtherEvents drops events if the DIX device state cannot be updated accordingly, i.e. all button events from keyboard devices. Hence we need to get the paired MD for the device in XkbDDXFakeDeviceButton, and post the event through the paired MD (usually the VCP). Removes now-unused ddxFakeBtn.c. Note: this patch only half-arsedly fixed button events, motion events are a more complicated matter.
Diffstat (limited to 'xkb/xkbEvents.c')
-rw-r--r--xkb/xkbEvents.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index 047efcdfb..335620baa 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -870,7 +870,7 @@ XkbSrvInfoPtr xkbi;
* Faking a release of the button here solves the problem.
*/
DebugF("[xkb] Faking release of button %d\n", xE[0].u.u.detail);
- XkbDDXFakePointerButton(ButtonRelease, xE[0].u.u.detail);
+ XkbDDXFakeDeviceButton(xkbi->device, 0, xE[0].u.u.detail);
}
}
else {
@@ -923,12 +923,12 @@ XkbSrvInfoPtr xkbi;
((xE[i].u.keyButtonPointer.state >> 7) & button_mask) == button_mask &&
(xkbi->lockedPtrButtons & button_mask) == button_mask) {
DebugF("[xkb] Faking release of button %d\n", xE[i].u.u.detail);
- XkbDDXFakePointerButton(ButtonRelease, xE[i].u.u.detail);
+ XkbDDXFakeDeviceButton(xkbi->device, 0, xE[i].u.u.detail);
} else if (type == DeviceButtonPress &&
((((deviceKeyButtonPointer*)&xE[i])->state >> 7) & button_mask) == button_mask &&
(xkbi->lockedPtrButtons & button_mask) == button_mask) {
DebugF("[xkb] Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state);
- XkbDDXFakePointerButton(DeviceButtonRelease, ((deviceKeyButtonPointer*)&xE[i])->state);
+ XkbDDXFakeDeviceButton(xkbi->device, 0, ((deviceKeyButtonPointer*)&xE[i])->state);
}
}
}