]> diplodocus.org Git - xorg-xinput/commitdiff
add xi2_find_device_id
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 6 Mar 2009 12:13:17 +0000 (22:13 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Sat, 21 Mar 2009 12:16:38 +0000 (22:16 +1000)
src/xinput.c
src/xinput.h

index 082175a7f24a0bf1f1df90f5a0c05074d6abb2e6..029b3fbd98a134e54e92a38178cb5b4c81f76e85 100644 (file)
@@ -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)
 {
index 4e0f3451564ebf1254b731c4bc96bf6e1d013570..96ae321a49363707a623c27409d70c3db6e3f767 100644 (file)
@@ -44,6 +44,8 @@ find_device_info(
                 char           *name,
                 Bool           only_extended
                 );
+int
+xi2_find_device_id(Display *display, char *name);
 
 
 #define DECLARE(name) \