int
set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
{
+ XIDeviceInfo *info;
XID window;
- XID deviceid;
- XDevice* dev = NULL;
char* id;
char* dummy;
while(*id == '0') id++;
window = strtol(argv[0], &dummy, (*id == 'x') ? 16 : 10);
- deviceid = atol(argv[1]);
- dev = XOpenDevice(dpy, deviceid);
+ info = xi2_find_device_info(dpy, argv[1]);
- if (!dev)
- {
- fprintf(stderr, "Cannot open device %ld.\n", deviceid);
- } else
- XSetClientPointer(dpy, window, dev);
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ XISetClientPointer(dpy, window, info->deviceid);
return 0;
}