]> diplodocus.org Git - xorg-xinput/blobdiff - src/setcp.c
Clean up the detection of XI2
[xorg-xinput] / src / setcp.c
index 582d978c001f5d53ae17723fbbf597aa8ff164c1..e44bb00fabeb1d13bfbc253ec1e4ce72e100d932 100644 (file)
@@ -32,8 +32,8 @@
 int
 set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
 {
 int
 set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
 {
+    XDeviceInfo* info;
     XID window;
     XID window;
-    XID deviceid;
     XDevice* dev = NULL;
     char* id;
     char* dummy;
     XDevice* dev = NULL;
     char* id;
     char* dummy;
@@ -49,13 +49,19 @@ set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
     while(*id == '0') id++;
 
     window = strtol(argv[0], &dummy, (*id == 'x') ? 16 : 10);
     while(*id == '0') id++;
 
     window = strtol(argv[0], &dummy, (*id == 'x') ? 16 : 10);
-    deviceid = atol(argv[1]);
 
 
-    dev = XOpenDevice(dpy, deviceid);
+    info = find_device_info(dpy, argv[1], False);
+
+    if (!info) {
+       fprintf(stderr, "unable to find device %s\n", argv[1]);
+       return EXIT_FAILURE;
+    }
+
+    dev = XOpenDevice(dpy, info->id);
 
     if (!dev)
     {
 
     if (!dev)
     {
-        fprintf(stderr, "Cannot open device %ld.\n", deviceid);
+        fprintf(stderr, "Cannot open device %s.\n", argv[1]);
     } else
         XSetClientPointer(dpy, window, dev);
     return 0;
     } else
         XSetClientPointer(dpy, window, dev);
     return 0;