From ab90151162d39607e264e715a582e783e0da3c3a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 18 Jan 2011 12:55:46 +1000 Subject: Add --name-only flag for 'xinput list'. The default output of xinput list is hard to parse by scripts. Provide a --name-only option to print the device name only, without any other information. Signed-off-by: Peter Hutterer Reviewed-by: Dirk Wallenstein Tested-by: Dirk Wallenstein --- src/list.c | 31 +++++++++++++++++++++++++------ src/xinput.c | 2 +- 2 files changed, 26 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/list.c b/src/list.c index 9538a0a..0e6f9be 100644 --- a/src/list.c +++ b/src/list.c @@ -26,7 +26,8 @@ enum print_format { FORMAT_SHORT, - FORMAT_LONG + FORMAT_LONG, + FORMAT_NAME }; @@ -40,6 +41,12 @@ print_info(Display* dpy, XDeviceInfo *info, enum print_format format) XValuatorInfoPtr v; XAxisInfoPtr a; + if (format == FORMAT_NAME) + { + printf("%s\n", info->name); + return; + } + printf("\"%s\"\tid=%ld\t[", info->name, info->id); switch (info->use) { @@ -192,6 +199,12 @@ print_classes_xi2(Display* display, XIAnyClassInfo **classes, static void print_info_xi2(Display* display, XIDeviceInfo *dev, enum print_format format) { + if (format == FORMAT_NAME) + { + printf("%s\n", dev->name); + return; + } + printf("%-40s\tid=%d\t[", dev->name, dev->deviceid); switch(dev->use) { @@ -246,10 +259,13 @@ list_xi2(Display *display, dev = &info[i]; if (dev->use == XIMasterPointer || dev->use == XIMasterKeyboard) { - if (dev->use == XIMasterPointer) - printf("⎡ "); - else - printf("⎣ "); + if (format == FORMAT_SHORT || format == FORMAT_LONG) + { + if (dev->use == XIMasterPointer) + printf("⎡ "); + else + printf("⎣ "); + } print_info_xi2(display, dev, format); for (j = 0; j < ndevices; j++) @@ -259,7 +275,8 @@ list_xi2(Display *display, if ((sd->use == XISlavePointer || sd->use == XISlaveKeyboard) && (sd->attachment == dev->deviceid)) { - printf("%s ↳ ", dev->use == XIMasterPointer ? "⎜" : " "); + if (format == FORMAT_SHORT || format == FORMAT_LONG) + printf("%s ↳ ", dev->use == XIMasterPointer ? "⎜" : " "); print_info_xi2(display, sd, format); } } @@ -298,6 +315,8 @@ list(Display *display, format = FORMAT_SHORT; else if (strcmp(argv[0], "--long") == 0) format = FORMAT_LONG; + else if (strcmp(argv[0], "--name-only") == 0) + format = FORMAT_NAME; arg_dev++; } diff --git a/src/xinput.c b/src/xinput.c index 9ca3832..86c163e 100644 --- a/src/xinput.c +++ b/src/xinput.c @@ -68,7 +68,7 @@ static entry drivers[] = set_mode }, {"list", - "[--short || --long] [...]", + "[--short || --long || --name-only] [...]", list }, {"query-state", -- cgit v1.2.3