]> diplodocus.org Git - xorg-xinput/blobdiff - src/list.c
Require inputproto 1.9.99.12
[xorg-xinput] / src / list.c
index 24edc70b43fc9196a11ee74335b61799685ad4c2..2313fbdfbf3360cf52664f853685848b55e6da42 100644 (file)
@@ -150,35 +150,47 @@ void
 print_classes_xi2(Display* display, XIAnyClassInfo **classes,
                   int num_classes)
 {
-    int i;
+    int i, j;
 
     printf("\tReporting %d classes:\n", num_classes);
     for (i = 0; i < num_classes; i++)
     {
+        printf("\t\tClass originated from: %d\n", classes[i]->sourceid);
         switch(classes[i]->type)
         {
-            case ButtonClass:
+            case XIButtonClass:
                 {
                     XIButtonClassInfo *b = (XIButtonClassInfo*)classes[i];
                     printf("\t\tButtons supported: %d\n", b->num_buttons);
+                    printf("\t\tButton labels:");
+                    for (j = 0; j < b->num_buttons; j++)
+                        printf(" %s", (b->labels[j]) ? XGetAtomName(display, b->labels[j]) : "None");
+                    printf("\n");
+                    printf("\t\tButton state:");
+                    for (j = 0; j < b->state.mask_len * 8; j++)
+                        if (XIMaskIsSet(b->state.mask, j))
+                            printf(" %d", j);
+                    printf("\n");
 
                 }
                 break;
-            case KeyClass:
+            case XIKeyClass:
                 {
                     XIKeyClassInfo *k = (XIKeyClassInfo*)classes[i];
                     printf("\t\tKeycodes supported: %d\n", k->num_keycodes);
                 }
                 break;
-            case ValuatorClass:
+            case XIValuatorClass:
                 {
                     XIValuatorClassInfo *v = (XIValuatorClassInfo*)classes[i];
                     printf("\t\tDetail for Valuator %d:\n", v->number);
-                    printf("\t\t  Name: %s\n", XGetAtomName(display, v->name));
+                    printf("\t\t  Label: %s\n", v->label ?  XGetAtomName(display, v->label) : "None");
                     printf("\t\t  Range: %f - %f\n", v->min, v->max);
                     printf("\t\t  Resolution: %d units/m\n", v->resolution);
                     printf("\t\t  Mode: %s\n", v->mode == Absolute ? "absolute" :
                             "relative");
+                    if (v->mode == Absolute)
+                        printf("\t\t  Current value: %f\n", v->value);
                 }
                 break;
         }
@@ -193,19 +205,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;
     }
@@ -242,15 +254,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("⎣ ");
@@ -260,16 +271,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;