]> diplodocus.org Git - xorg-xinput/blobdiff - src/list.c
Update man page.
[xorg-xinput] / src / list.c
index 141bff7a9e3763d4fa69d6edf045868083c7f9ff..9ef3d6163360cecba905bee90716f903538b3967 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright 1996 by Frederic Lepied, France. <Frederic.Lepied@sugix.frmug.org>
- *                                                                            
+ *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is  hereby granted without fee, provided that
  * the  above copyright   notice appear  in   all  copies and  that both  that
@@ -9,8 +9,8 @@
  * advertising or publicity pertaining to distribution of the software without
  * specific,  written      prior  permission.     Frederic  Lepied   makes  no
  * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.                   
- *                                                                            
+ * is provided "as is" without express or implied warranty.
+ *
  * FREDERIC  LEPIED DISCLAIMS ALL   WARRANTIES WITH REGARD  TO  THIS SOFTWARE,
  * INCLUDING ALL IMPLIED   WARRANTIES OF MERCHANTABILITY  AND   FITNESS, IN NO
  * EVENT  SHALL FREDERIC  LEPIED BE   LIABLE   FOR ANY  SPECIAL, INDIRECT   OR
  */
 
 #include "xinput.h"
-
-static const char rcs_id[] = "$Id: list.c,v 1.1.1.2 1997/06/09 16:00:48 fred Exp $";
+#include <string.h>
 
 static void
-print_info(XDeviceInfo *info)
+print_info(XDeviceInfo *info, Bool shortformat)
 {
     int                        i,j;
     XAnyClassPtr       any;
@@ -35,9 +34,32 @@ print_info(XDeviceInfo       *info)
     XValuatorInfoPtr   v;
     XAxisInfoPtr       a;
 
-    printf("\"%s\"\tid=%ld\t[%s]\n", info->name, info->id,
-          (info->use == IsXExtensionDevice) ? "XExtensionDevice" :
-          ((info->use == IsXPointer) ? "XPointer" : "XKeyboard"));
+    printf("\"%s\"\tid=%ld\t[", info->name, info->id);
+
+    switch (info->use) {
+    case IsXPointer:
+       printf("XPointer");
+       break;
+    case IsXKeyboard:
+       printf("XKeyboard");
+       break;
+    case IsXExtensionDevice:
+       printf("XExtensionDevice");
+       break;
+    case IsXExtensionKeyboard:
+       printf("XExtensionKeyboard");
+       break;
+    case IsXExtensionPointer:
+       printf("XExtensionPointer");
+       break;
+    default:
+       printf("Unknown class");
+       break;
+    }
+    printf("]\n");
+
+    if (shortformat)
+        return;
 
     if (info->num_classes > 0) {
        any = (XAnyClassPtr) (info->inputclassinfo);
@@ -57,7 +79,7 @@ print_info(XDeviceInfo        *info)
 
            case ValuatorClass:
                v = (XValuatorInfoPtr) any;
-               a = (XAxisInfoPtr) ((char *) v + 
+               a = (XAxisInfoPtr) ((char *) v +
                                    sizeof (XValuatorInfo));
                printf("\tNum_axes is %d\n", v->num_axes);
                printf("\tMode is %s\n", (v->mode == Absolute) ? "Absolute" : "Relative");
@@ -69,7 +91,7 @@ print_info(XDeviceInfo        *info)
                    printf ("\t\tResolution is %d\n", a->resolution);
                }
                break;
-               
+
            default:
                printf ("unknown class\n");
            }
@@ -87,26 +109,29 @@ list(Display       *display,
 {
     XDeviceInfo                *info;
     int                        loop;
+    int                 shortformat = False;
+
+    shortformat = (argc == 1 && strcmp(argv[0], "--short") == 0);
 
-    if (argc == 0) {
+    if (argc == 0 || shortformat) {
        int             num_devices;
-    
+
        info = XListInputDevices(display, &num_devices);
-       
+
        for(loop=0; loop<num_devices; loop++) {
-           print_info(info+loop);
+           print_info(info+loop, shortformat);
        }
     } else {
        int     ret = EXIT_SUCCESS;
 
        for(loop=0; loop<argc; loop++) {
            info = find_device_info(display, argv[0], False);
-           
+
            if (!info) {
                fprintf(stderr, "unable to find device %s\n", argv[0]);
                ret = EXIT_FAILURE;
            } else {
-               print_info(info);
+               print_info(info, shortformat);
            }
        }
        return ret;
@@ -114,5 +139,4 @@ list(Display        *display,
     return EXIT_SUCCESS;
 }
 
-/* end of list.c
- */
+/* end of list.c */