[PATCH xinput 3/3] Add --id-only flag for 'xinput list'.
Peter Hutterer
peter.hutterer at who-t.net
Mon Jan 17 19:09:00 PST 2011
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 <peter.hutterer at who-t.net>
---
man/xinput.man | 5 ++++-
src/list.c | 13 ++++++++++++-
2 files changed, 16 insertions(+), 2 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++;
}
--
1.7.3.4
More information about the xorg-devel
mailing list