]> diplodocus.org Git - xorg-xinput/commitdiff
test-xi2: support a device option
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 19 Aug 2011 03:16:17 +0000 (13:16 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 19 Aug 2011 06:34:17 +0000 (16:34 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Julien Cristau <jcristau@debian.org>
man/xinput.man
src/test_xi2.c

index 5470f29bd166124c1b4ed3b49cd0a7636857a590..085a5fce05207c4a635e7328f27f2d1b9dee8175 100644 (file)
@@ -104,9 +104,9 @@ loop displaying events received. If the -proximity is given, ProximityIn
 and ProximityOut are registered.
 .PP
 .TP 8
 and ProximityOut are registered.
 .PP
 .TP 8
-.B --test-xi2
-Register for a number of XI2 events and display them. This option does not
-take a device argument.
+.B --test-xi2 [\fIdevice\fP]
+Register for a number of XI2 events and display them. If a device is given,
+only events on this device are displayed.
 .PP
 .TP 8
 .B --create-master \fIprefix\fP [sendCore] [enable]
 .PP
 .TP 8
 .B --create-master \fIprefix\fP [sendCore] [enable]
index 619a6b2bfdce11fa36ea5d0556c43c1299b3ed9d..92c88dae11becde69c74875e8d48a1a5f0cfb27a 100644 (file)
@@ -306,12 +306,18 @@ test_xi2(Display  *display,
 {
     XIEventMask mask;
     Window win;
 {
     XIEventMask mask;
     Window win;
+    int deviceid = -1;
 
     list(display, argc, argv, name, desc);
 
     list(display, argc, argv, name, desc);
+    if (argc >= 1) {
+        XIDeviceInfo *info;
+        info = xi2_find_device_info(display, argv[0]);
+        deviceid = info->deviceid;
+    }
     win = create_win(display);
 
     /* Select for motion events */
     win = create_win(display);
 
     /* Select for motion events */
-    mask.deviceid = XIAllDevices;
+    mask.deviceid = (deviceid == -1) ? XIAllDevices : deviceid;
     mask.mask_len = XIMaskLen(XI_RawMotion);
     mask.mask = calloc(mask.mask_len, sizeof(char));
     XISetMask(mask.mask, XI_ButtonPress);
     mask.mask_len = XIMaskLen(XI_RawMotion);
     mask.mask = calloc(mask.mask_len, sizeof(char));
     XISetMask(mask.mask, XI_ButtonPress);
@@ -324,7 +330,8 @@ test_xi2(Display    *display,
     XISetMask(mask.mask, XI_Leave);
     XISetMask(mask.mask, XI_FocusIn);
     XISetMask(mask.mask, XI_FocusOut);
     XISetMask(mask.mask, XI_Leave);
     XISetMask(mask.mask, XI_FocusIn);
     XISetMask(mask.mask, XI_FocusOut);
-    XISetMask(mask.mask, XI_HierarchyChanged);
+    if (mask.deviceid == XIAllDevices)
+        XISetMask(mask.mask, XI_HierarchyChanged);
     XISetMask(mask.mask, XI_PropertyEvent);
     XISelectEvents(display, win, &mask, 1);
     XMapWindow(display, win);
     XISetMask(mask.mask, XI_PropertyEvent);
     XISelectEvents(display, win, &mask, 1);
     XMapWindow(display, win);
@@ -349,7 +356,7 @@ test_xi2(Display    *display,
         XIUngrabKeycode(display, 3, 24 /* q */, win, nmods - 2, &modifiers[2]);
     }
 
         XIUngrabKeycode(display, 3, 24 /* q */, win, nmods - 2, &modifiers[2]);
     }
 
-    mask.deviceid = XIAllMasterDevices;
+    mask.deviceid = (deviceid == -1) ? XIAllMasterDevices : deviceid;
     memset(mask.mask, 0, mask.mask_len);
     XISetMask(mask.mask, XI_RawKeyPress);
     XISetMask(mask.mask, XI_RawKeyRelease);
     memset(mask.mask, 0, mask.mask_len);
     XISetMask(mask.mask, XI_RawKeyPress);
     XISetMask(mask.mask, XI_RawKeyRelease);