#include "xinput.h"
#include <string.h>
+enum print_format {
+ FORMAT_SHORT,
+ FORMAT_LONG
+};
+
+
static void
-print_info(Display* dpy, XDeviceInfo *info, Bool shortformat)
+print_info(Display* dpy, XDeviceInfo *info, enum print_format format)
{
int i,j;
XAnyClassPtr any;
}
printf("]\n");
- if (shortformat)
+ if (format == FORMAT_SHORT)
return;
if(info->type != None)
}
static int list_xi1(Display *display,
- int shortformat)
+ enum print_format format)
{
XDeviceInfo *info;
int loop;
info = XListInputDevices(display, &num_devices);
for(loop=0; loop<num_devices; loop++) {
- print_info(display, info+loop, shortformat);
+ print_info(display, info+loop, format);
}
return EXIT_SUCCESS;
}
}
static void
-print_info_xi2(Display* display, XIDeviceInfo *dev, Bool shortformat)
+print_info_xi2(Display* display, XIDeviceInfo *dev, enum print_format format)
{
printf("%-40s\tid=%d\t[", dev->name, dev->deviceid);
switch(dev->use)
break;
}
- if (shortformat)
+ if (format == FORMAT_SHORT)
return;
if (!dev->enabled)
static int
list_xi2(Display *display,
- int shortformat)
+ enum print_format format)
{
int major = XI_2_Major,
minor = XI_2_Minor;
else
printf("⎣ ");
- print_info_xi2(display, dev, shortformat);
+ print_info_xi2(display, dev, format);
for (j = 0; j < ndevices; j++)
{
XIDeviceInfo* sd = &info[j];
(sd->attachment == dev->deviceid))
{
printf("%s ↳ ", dev->use == XIMasterPointer ? "⎜" : " ");
- print_info_xi2(display, sd, shortformat);
+ print_info_xi2(display, sd, format);
}
}
}
if (dev->use == XIFloatingSlave)
{
printf("∼ ");
- print_info_xi2(display, dev, shortformat);
+ print_info_xi2(display, dev, format);
}
}
char *name,
char *desc)
{
- int shortformat = (argc >= 1 && strcmp(argv[0], "--short") == 0);
- int longformat = (argc >= 1 && strcmp(argv[0], "--long") == 0);
- int arg_dev = shortformat || longformat;
+ enum print_format format = FORMAT_SHORT;
+ int arg_dev = 0;
+
+ if (argc >= 1)
+ {
+ if (strcmp(argv[0], "--short") == 0)
+ format = FORMAT_SHORT;
+ else if (strcmp(argv[0], "--long") == 0)
+ format = FORMAT_LONG;
+ arg_dev++;
+ }
if (argc > arg_dev)
{
fprintf(stderr, "unable to find device %s\n", argv[arg_dev]);
return EXIT_FAILURE;
} else {
- print_info_xi2(display, info, shortformat);
+ print_info_xi2(display, info, format);
return EXIT_SUCCESS;
}
} else
fprintf(stderr, "unable to find device %s\n", argv[arg_dev]);
return EXIT_FAILURE;
} else {
- print_info(display, info, shortformat);
+ print_info(display, info, format);
return EXIT_SUCCESS;
}
}
} else {
#ifdef HAVE_XI2
if (xinput_version(display) == XI_2_Major)
- return list_xi2(display, !longformat);
+ return list_xi2(display, format);
#endif
- return list_xi1(display, !longformat);
+ return list_xi1(display, format);
}
}