int
create_master(Display* dpy, int argc, char** argv, char* name, char *desc)
{
- XCreateMasterInfo c;
+ XIAddMasterInfo c;
if (argc == 0)
{
return EXIT_FAILURE;
}
- c.type = CH_CreateMasterDevice;
+ c.type = XIAddMaster;
c.name = argv[0];
- c.sendCore = (argc >= 2) ? atoi(argv[1]) : 1;
+ c.send_core = (argc >= 2) ? atoi(argv[1]) : 1;
c.enable = (argc >= 3) ? atoi(argv[2]) : 1;
- return XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
+ return XIChangeHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
}
/**
int
remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
{
- XRemoveMasterInfo r;
- XDevice* master = NULL, *ptr = NULL, *keybd = NULL;
+ XIRemoveMasterInfo r;
+ XIDeviceInfo *info;
int ret;
if (argc == 0)
return EXIT_FAILURE;
}
- master = XOpenDevice(dpy, atoi(argv[0]));
- if (!master)
- Error(BadValue, "Invalid master device.\n");
+ info = xi2_find_device_info(dpy, argv[0]);
- r.type = CH_RemoveMasterDevice;
- r.device = master;
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ r.type = XIRemoveMaster;
+ r.deviceid = info->deviceid;
if (argc >= 2)
{
if (!strcmp(argv[1], "Floating"))
- r.returnMode = Floating;
+ r.return_mode = XIFloating;
else if (!strcmp(argv[1], "AttachToMaster"))
- r.returnMode = AttachToMaster;
+ r.return_mode = XIAttachToMaster;
else
- Error(BadValue, "Invalid returnMode.\n");
+ Error(BadValue, "Invalid return_mode.\n");
} else
- r.returnMode = Floating;
+ r.return_mode = XIFloating;
- if (r.returnMode == AttachToMaster)
+ if (r.return_mode == XIAttachToMaster)
{
- ptr = XOpenDevice(dpy, atoi(argv[2]));
- keybd = XOpenDevice(dpy, atoi(argv[3]));
- if (!ptr || !keybd)
- Error(BadValue, "Invalid fallback master.\n");
- r.returnPointer = ptr;
- r.returnKeyboard = keybd;
+ r.return_pointer = atoi(argv[2]);
+ r.return_keyboard = atoi(argv[3]);
}
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&r, 1);
- if (ptr)
- XCloseDevice(dpy, ptr);
- if (keybd)
- XCloseDevice(dpy, keybd);
+ ret = XIChangeHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&r, 1);
return ret;
}
int
change_attachment(Display* dpy, int argc, char** argv, char *name, char* desc)
{
- XChangeAttachmentInfo c;
- XDevice *slave, *master;
+ XIDeviceInfo *sd_info, *md_info;
+ XIAttachSlaveInfo c;
int ret;
if (argc < 2)
return EXIT_FAILURE;
}
- slave = XOpenDevice(dpy, atoi(argv[0]));
- master = XOpenDevice(dpy, atoi(argv[1]));
+ sd_info = xi2_find_device_info(dpy, argv[0]);
+ md_info= xi2_find_device_info(dpy, argv[1]);
- if (!slave)
- Error(BadValue, "Invalid slave device given %d\n", atoi(argv[0]));
+ if (!sd_info) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
- if (!master)
- Error(BadValue, "Invalid master device given %d\n", atoi(argv[1]));
+ if (!md_info) {
+ fprintf(stderr, "unable to find device %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
- c.type = CH_ChangeAttachment;
- c.changeMode = AttachToMaster;
- c.device = slave;
- c.newMaster = master;
+ c.type = XIAttachSlave;
+ c.deviceid = sd_info->deviceid;
+ c.new_master = md_info->deviceid;
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
- XCloseDevice(dpy, slave);
- XCloseDevice(dpy, master);
+ ret = XIChangeHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
return ret;
}
int
float_device(Display* dpy, int argc, char** argv, char* name, char* desc)
{
- XChangeAttachmentInfo c;
- XDevice *slave;
+ XIDeviceInfo *info;
+ XIDetachSlaveInfo c;
int ret;
if (argc < 1)
return EXIT_FAILURE;
}
+ info = xi2_find_device_info(dpy, argv[0]);
- slave = XOpenDevice(dpy, atoi(argv[0]));
-
- if (!slave)
- return BadValue;
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
- c.type = CH_ChangeAttachment;
- c.changeMode = Floating;
- c.device = slave;
+ c.type = XIDetachSlave;
+ c.deviceid = info->deviceid;
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
- XCloseDevice(dpy, slave);
+ ret = XIChangeHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
return ret;
}