summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@redhat.com>2009-05-19 08:59:25 -0400
committerPeter Hutterer <peter.hutterer@redhat.com>2009-05-19 08:59:25 -0400
commit908b28e8325fe8c5f0fd774f4b04df5506c29f68 (patch)
tree1b24ac6fa2abdfa1f6fda9a55939ae303e18e031
parent70a3955527e09a425a8041e4adad5480b726f172 (diff)
Fix modifier handling
-rw-r--r--src/PointerDevice.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/PointerDevice.cpp b/src/PointerDevice.cpp
index d288b65..c65e11f 100644
--- a/src/PointerDevice.cpp
+++ b/src/PointerDevice.cpp
@@ -177,7 +177,13 @@ void PointerDevice::setWMEvents(WMWindow* window)
{
XIEventMask mask;
unsigned char bits[4] = {0};
- int modifiers = 0;
+ XIGrabModifiers modifiers[4] = {0};
+ int failed = 0;
+
+ modifiers[0].modifiers = 0;
+ modifiers[1].modifiers = 0x1;
+ modifiers[2].modifiers = 0x10;
+ modifiers[3].modifiers = 0x11;
mask.mask = bits;
mask.mask_len = sizeof(bits);
@@ -202,9 +208,12 @@ void PointerDevice::setWMEvents(WMWindow* window)
(int)window->getButtonClose());
- XIGrabButton(x11->dpy, this->id, Button1, window->getClientWindow(),
- None, GrabModeSync, GrabModeAsync, False, &mask, 1,
- &modifiers);
+ failed = XIGrabButton(x11->dpy, this->id, Button1, window->getClientWindow(),
+ None, GrabModeSync, GrabModeAsync, False, &mask, 4,
+ modifiers);
+
+ for (int i= 0; i < failed; i++)
+ ERR("Modifiers %#x failed\n", modifiers[i]);
}
void PointerDevice::setDockEvents(Window win)