From 976c989af7978277061d0166d8e2a82cb8b1e795 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 18 Jan 2011 13:02:20 +1000 Subject: Add --id-only flag for 'xinput list'. The default output of xinput list is hard to parse by scripts. Provide a --id-only option to print the device ID only, without any other information. Signed-off-by: Peter Hutterer Reviewed-by: Dirk Wallenstein Tested-by: Dirk Wallenstein --- man/xinput.man | 5 ++++- src/list.c | 13 ++++++++++++- src/xinput.c | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/man/xinput.man b/man/xinput.man index 035becc..9d7e9a7 100644 --- a/man/xinput.man +++ b/man/xinput.man @@ -17,7 +17,7 @@ of the program and the version supported by the server. This option does not require a device name. .PP .TP 8 -.B --list [--short || --long || --name-only] [\fIdevice\fP] +.B --list [--short || --long || --name-only || --id-only] [\fIdevice\fP] If no argument is given list all the input devices. If an argument is given, show all the features of \fIdevice\fP. If --long is provided, the output includes detailed information about the @@ -26,6 +26,9 @@ device names and some minimal information is listed. If --name-only is provided, the output is limited to the device names. One device name is listed per line. Note that the order the devices are listed is undefined. +If --id-only is provided, the output is limited to the device IDs. One +device ID is listed per line. Note that the order the devices are listed is +undefined. .PP .TP 8 .B --get-feedbacks \fIdevice\fP diff --git a/src/list.c b/src/list.c index 0e6f9be..ca3c6bf 100644 --- a/src/list.c +++ b/src/list.c @@ -27,7 +27,8 @@ enum print_format { FORMAT_SHORT, FORMAT_LONG, - FORMAT_NAME + FORMAT_NAME, + FORMAT_ID, }; @@ -45,6 +46,10 @@ print_info(Display* dpy, XDeviceInfo *info, enum print_format format) { printf("%s\n", info->name); return; + } else if (format == FORMAT_ID) + { + printf("%ld\n", info->id); + return; } printf("\"%s\"\tid=%ld\t[", info->name, info->id); @@ -203,6 +208,10 @@ print_info_xi2(Display* display, XIDeviceInfo *dev, enum print_format format) { printf("%s\n", dev->name); return; + } else if (format == FORMAT_ID) + { + printf("%d\n", dev->deviceid); + return; } printf("%-40s\tid=%d\t[", dev->name, dev->deviceid); @@ -317,6 +326,8 @@ list(Display *display, format = FORMAT_LONG; else if (strcmp(argv[0], "--name-only") == 0) format = FORMAT_NAME; + else if (strcmp(argv[0], "--id-only") == 0) + format = FORMAT_ID; arg_dev++; } diff --git a/src/xinput.c b/src/xinput.c index 86c163e..a20f856 100644 --- a/src/xinput.c +++ b/src/xinput.c @@ -68,7 +68,7 @@ static entry drivers[] = set_mode }, {"list", - "[--short || --long || --name-only] [...]", + "[--short || --long || --name-only || --id-only] [...]", list }, {"query-state", -- cgit v1.2.3