]> diplodocus.org Git - xorg-xinput/blobdiff - src/list.c
xi2 test: add two missing breaks.
[xorg-xinput] / src / list.c
index 52e3961eeda648b701f8ac34637106acf62bd4e2..05f58f58d89663d6bd97a5a2f248bbe5f7e77e38 100644 (file)
@@ -26,7 +26,7 @@
 #include <X11/extensions/XIproto.h> /* for XI_Device***ChangedNotify */
 
 static void
-print_info(XDeviceInfo *info, Bool shortformat)
+print_info(Display* dpy, XDeviceInfo   *info, Bool shortformat)
 {
     int                        i,j;
     XAnyClassPtr       any;
@@ -62,6 +62,9 @@ print_info(XDeviceInfo        *info, Bool shortformat)
     if (shortformat)
         return;
 
+    if(info->type != None)
+       printf("\tType is %s\n", XGetAtomName(dpy, info->type));
+
     if (info->num_classes > 0) {
        any = (XAnyClassPtr) (info->inputclassinfo);
        for (i=0; i<info->num_classes; i++) {
@@ -120,7 +123,7 @@ static int list_xi1(Display     *display,
         do {
             info = XListInputDevices(display, &num_devices);
             for(loop=0; loop<num_devices; loop++) {
-                print_info(info+loop, shortformat);
+                print_info(display, info+loop, shortformat);
             }
         } while(daemon);
     } else {
@@ -133,7 +136,7 @@ static int list_xi1(Display     *display,
                fprintf(stderr, "unable to find device %s\n", argv[loop]);
                ret = EXIT_FAILURE;
            } else {
-               print_info(info, shortformat);
+               print_info(display, info, shortformat);
            }
        }
        return ret;
@@ -190,19 +193,19 @@ print_info_xi2(Display* display, XIDeviceInfo *dev, Bool shortformat)
     printf("%-40s\tid=%d\t[", dev->name, dev->deviceid);
     switch(dev->use)
     {
-        case MasterPointer:
+        case XIMasterPointer:
             printf("master pointer  (%d)]\n", dev->attachment);
             break;
-        case MasterKeyboard:
+        case XIMasterKeyboard:
             printf("master keyboard (%d)]\n", dev->attachment);
             break;
-        case SlavePointer:
+        case XISlavePointer:
             printf("slave  pointer  (%d)]\n", dev->attachment);
             break;
-        case SlaveKeyboard:
+        case XISlaveKeyboard:
             printf("slave  keyboard (%d)]\n", dev->attachment);
             break;
-        case FloatingSlave:
+        case XIFloatingSlave:
             printf("floating slave]\n");
             break;
     }
@@ -239,15 +242,14 @@ list_xi2(Display  *display,
         return EXIT_FAILURE;
     }
 
-    info = XIQueryDevice(display, AllDevices, &ndevices);
-    dev = info;
+    info = XIQueryDevice(display, XIAllDevices, &ndevices);
 
     for(i = 0; i < ndevices; i++)
     {
         dev = &info[i];
-        if (dev->use == MasterPointer || dev->use == MasterKeyboard)
+        if (dev->use == XIMasterPointer || dev->use == XIMasterKeyboard)
         {
-            if (dev->use == MasterPointer)
+            if (dev->use == XIMasterPointer)
                 printf("⎡ ");
             else
                 printf("⎣ ");
@@ -257,16 +259,26 @@ list_xi2(Display  *display,
             {
                 XIDeviceInfo* sd = &info[j];
 
-                if ((sd->use == SlavePointer || sd->use == SlaveKeyboard) &&
+                if ((sd->use == XISlavePointer || sd->use == XISlaveKeyboard) &&
                      (sd->attachment == dev->deviceid))
                 {
-                    printf("%s   ↳ ", dev->use == MasterPointer ? "⎜" : " ");
+                    printf("%s   ↳ ", dev->use == XIMasterPointer ? "⎜" : " ");
                     print_info_xi2(display, sd, shortformat);
                 }
             }
         }
     }
 
+    for (i = 0; i < ndevices; i++)
+    {
+        dev = &info[i];
+        if (dev->use == XIFloatingSlave)
+        {
+            printf("∼ ");
+            print_info_xi2(display, dev, shortformat);
+        }
+    }
+
 
     XIFreeDeviceInfo(info);
     return EXIT_SUCCESS;