diff options
author | Thomas Jaeger <ThJaeger@gmail.com> | 2009-10-07 13:05:15 -0400 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-10-09 14:41:04 +1000 |
commit | 7010a6c924ce6937c8e040c837a118663d6dfdb3 (patch) | |
tree | d822edaebb7747b7e5faf749d709a1cf5d19a5f9 /src | |
parent | 7d930a42e6c294ecaaf42585e37b8dc24be8a805 (diff) |
Rework 'xinput list' code
* Drop the questionable --loop option
* Add a --long option (opposite of --short)
* Make --short the default if no device argument is given
* XI2: Make it possible to query a single device
Signed-off-by: Thomas Jaeger <ThJaeger@gmail.com>
squashed in a man page update for --short and --long.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/list.c | 89 | ||||
-rw-r--r-- | src/xinput.c | 2 |
2 files changed, 46 insertions, 45 deletions
@@ -104,42 +104,15 @@ print_info(Display* dpy, XDeviceInfo *info, Bool shortformat) } static int list_xi1(Display *display, - int argc, - char *argv[], - char *name, - char *desc) + int shortformat) { XDeviceInfo *info; int loop; - int shortformat = False; - int daemon = False; + int num_devices; - shortformat = (argc == 1 && strcmp(argv[0], "--short") == 0); - daemon = (argc == 1 && strcmp(argv[0], "--loop") == 0); - - if (argc == 0 || shortformat || daemon) { - int num_devices; - - do { - info = XListInputDevices(display, &num_devices); - for(loop=0; loop<num_devices; loop++) { - print_info(display, info+loop, shortformat); - } - } while(daemon); - } else { - int ret = EXIT_SUCCESS; - - for(loop=0; loop<argc; loop++) { - info = find_device_info(display, argv[loop], False); - - if (!info) { - fprintf(stderr, "unable to find device %s\n", argv[loop]); - ret = EXIT_FAILURE; - } else { - print_info(display, info, shortformat); - } - } - return ret; + info = XListInputDevices(display, &num_devices); + for(loop=0; loop<num_devices; loop++) { + print_info(display, info+loop, shortformat); } return EXIT_SUCCESS; } @@ -240,21 +213,16 @@ print_info_xi2(Display* display, XIDeviceInfo *dev, Bool shortformat) } -int -list_xi2(Display *display, - int argc, - char *argv[], - char *name, - char *desc) +static int +list_xi2(Display *display, + int shortformat) { int major = XI_2_Major, minor = XI_2_Minor; int ndevices; - int i, j, shortformat; + int i, j; XIDeviceInfo *info, *dev; - shortformat = (argc == 1 && strcmp(argv[0], "--short") == 0); - if (XIQueryVersion(display, &major, &minor) != Success || (major * 1000 + minor) < (XI_2_Major * 1000 + XI_2_Minor)) { @@ -312,11 +280,44 @@ list(Display *display, 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; + + if (argc > arg_dev) + { #ifdef HAVE_XI2 - if (xinput_version(display) == XI_2_Major) - return list_xi2(display, argc, argv, name, desc); + if (xinput_version(display) == XI_2_Major) + { + XIDeviceInfo *info = xi2_find_device_info(display, argv[arg_dev]); + + if (!info) { + fprintf(stderr, "unable to find device %s\n", argv[arg_dev]); + return EXIT_FAILURE; + } else { + print_info_xi2(display, info, shortformat); + return EXIT_SUCCESS; + } + } else #endif - return list_xi1(display, argc, argv, name, desc); + { + XDeviceInfo *info = find_device_info(display, argv[arg_dev], False); + + if (!info) { + fprintf(stderr, "unable to find device %s\n", argv[arg_dev]); + return EXIT_FAILURE; + } else { + print_info(display, info, shortformat); + return EXIT_SUCCESS; + } + } + } else { +#ifdef HAVE_XI2 + if (xinput_version(display) == XI_2_Major) + return list_xi2(display, !longformat); +#endif + return list_xi1(display, !longformat); + } } /* end of list.c */ diff --git a/src/xinput.c b/src/xinput.c index 1a1e7ce..3c8b23c 100644 --- a/src/xinput.c +++ b/src/xinput.c @@ -68,7 +68,7 @@ static entry drivers[] = set_mode }, {"list", - "[--loop || --short || <device name>...]", + "[--short || --long] [<device name>...]", list }, {"query-state", |