From: Peter Hutterer Date: Fri, 6 Mar 2009 12:13:17 +0000 (+1000) Subject: add xi2_find_device_id X-Git-Url: https://diplodocus.org/git/xorg-xinput/commitdiff_plain/a197551573663cab9e79e07e2de9d423c7a7a572?hp=4ad33929e0f640dbc91004857ed2168006d21a71 add xi2_find_device_id --- diff --git a/src/xinput.c b/src/xinput.c index 082175a..029b3fb 100644 --- a/src/xinput.c +++ b/src/xinput.c @@ -196,6 +196,43 @@ find_device_info(Display *display, return found; } +#ifdef HAVE_XI2 +int +xi2_find_device_id(Display *display, char *name) +{ + XIDeviceInfo *info; + int ndevices; + Bool is_id = True; + int i, id = -1; + + for(i = 0; i < strlen(name); i++) { + if (!isdigit(name[i])) { + is_id = False; + break; + } + } + + if (is_id) { + id = atoi(name); + } else + { + info = XIQueryDevice(display, AllDevices, &ndevices); + for(i = 0; i < ndevices; i++) + { + if ((is_id && info[i].deviceid == id) || + (!is_id && strcmp(info[i].name, name) == 0)) + { + id = info[i].deviceid; + break; + } + } + + XIFreeDeviceInfo(info); + } + return id;; +} +#endif + static void usage(void) { diff --git a/src/xinput.h b/src/xinput.h index 4e0f345..96ae321 100644 --- a/src/xinput.h +++ b/src/xinput.h @@ -44,6 +44,8 @@ find_device_info( char *name, Bool only_extended ); +int +xi2_find_device_id(Display *display, char *name); #define DECLARE(name) \