]> diplodocus.org Git - xorg-xinput/blobdiff - src/xinput.c
add xi2_find_device_id
[xorg-xinput] / src / xinput.c
index 082175a7f24a0bf1f1df90f5a0c05074d6abb2e6..029b3fbd98a134e54e92a38178cb5b4c81f76e85 100644 (file)
@@ -196,6 +196,43 @@ find_device_info(Display   *display,
     return found;
 }
 
     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)
 {
 static void
 usage(void)
 {