]> diplodocus.org Git - xorg-xinput/commitdiff
test-xi2: add support for test-xi2 --root
authorPeter Hutterer <peter.hutterer@who-t.net>
Sun, 10 Mar 2013 05:22:25 +0000 (15:22 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 3 Jul 2013 00:08:33 +0000 (10:08 +1000)
Select on the root window instead of a newly created one

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
man/xinput.man
src/test_xi2.c
src/xinput.c

index 540308b60e74afdcdda118046e479b891f1b879d..87be8c7a3e48f28e2775f9816c7940e7c9418439 100644 (file)
@@ -104,9 +104,11 @@ 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 [\fIdevice\fP]
+.B --test-xi2 [--root] [\fIdevice\fP]
 Register for a number of XI2 events and display them. If a device is given,
 Register for a number of XI2 events and display them. If a device is given,
-only events on this device are displayed.
+only events on this device are displayed. If --root is given, events are
+selected on the root window only. Otherwise, a new client window is created
+(similar to xev).
 .PP
 .TP 8
 .B --create-master \fIprefix\fP [sendCore] [enable]
 .PP
 .TP 8
 .B --create-master \fIprefix\fP [sendCore] [enable]
index 40cc76e21ff504e05023df05a86027ed3ccaf2ea..a83bb22c7f3399acb070ffa61058b74b26d54dde 100644 (file)
@@ -325,20 +325,32 @@ test_xi2(Display  *display,
     XIEventMask *m;
     Window win;
     int deviceid = -1;
     XIEventMask *m;
     Window win;
     int deviceid = -1;
+    int use_root = 0;
     int rc;
 
     setlinebuf(stdout);
 
     int rc;
 
     setlinebuf(stdout);
 
+    if (argc >= 1 && strcmp(argv[0], "--root") == 0) {
+        use_root = 1;
+
+        argc--;
+        argv++;
+    }
+
     rc = list(display, argc, argv, name, desc);
     if (rc != EXIT_SUCCESS)
         return rc;
 
     rc = list(display, argc, argv, name, desc);
     if (rc != EXIT_SUCCESS)
         return rc;
 
+    if (use_root)
+        win = DefaultRootWindow(display);
+    else
+        win = create_win(display);
+
     if (argc >= 1) {
         XIDeviceInfo *info;
         info = xi2_find_device_info(display, argv[0]);
         deviceid = info->deviceid;
     }
     if (argc >= 1) {
         XIDeviceInfo *info;
         info = xi2_find_device_info(display, argv[0]);
         deviceid = info->deviceid;
     }
-    win = create_win(display);
 
     /* Select for motion events */
     m = &mask[0];
 
     /* Select for motion events */
     m = &mask[0];
@@ -379,15 +391,17 @@ test_xi2(Display  *display,
     XISetMask(m->mask, XI_RawTouchEnd);
 #endif
 
     XISetMask(m->mask, XI_RawTouchEnd);
 #endif
 
-    XISelectEvents(display, win, &mask[0], 1);
-    XISelectEvents(display, DefaultRootWindow(display), &mask[1], 1);
-    XMapWindow(display, win);
+    XISelectEvents(display, win, &mask[0], use_root ? 2 : 1);
+    if (!use_root) {
+        XISelectEvents(display, DefaultRootWindow(display), &mask[1], 1);
+        XMapWindow(display, win);
+    }
     XSync(display, False);
 
     free(mask[0].mask);
     free(mask[1].mask);
 
     XSync(display, False);
 
     free(mask[0].mask);
     free(mask[1].mask);
 
-    {
+    if (!use_root) {
         XEvent event;
         XMaskEvent(display, ExposureMask, &event);
         XSelectInput(display, win, 0);
         XEvent event;
         XMaskEvent(display, ExposureMask, &event);
         XSelectInput(display, win, 0);
index 16a13df5a025f304373a90b63631810e743b6367..e6e468cd392e9bc343ec0293aadf21508bc49b6a 100644 (file)
@@ -101,7 +101,7 @@ static entry drivers[] =
       set_clientpointer
     },
     { "test-xi2",
       set_clientpointer
     },
     { "test-xi2",
-      "<device>",
+      "[--root] <device>",
       test_xi2,
     },
     { "map-to-output",
       test_xi2,
     },
     { "map-to-output",