int
create_master(Display* dpy, int argc, char** argv, char* name, char *desc)
{
- XCreateMasterInfo c;
+ XICreateMasterInfo c;
if (argc == 0)
{
c.sendCore = (argc >= 2) ? atoi(argv[1]) : 1;
c.enable = (argc >= 3) ? atoi(argv[2]) : 1;
- return XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
+ return XIChangeDeviceHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
}
/**
int
remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
{
- XDeviceInfo *info;
- XRemoveMasterInfo r;
- XDevice* master = NULL, *ptr = NULL, *keybd = NULL;
- int ret;
+ XIRemoveMasterInfo r;
+ int ret, id;
if (argc == 0)
{
return EXIT_FAILURE;
}
- info = find_device_info(dpy, argv[0], False);
+ id = xi2_find_device_id(dpy, argv[0]);
- if (!info) {
+ if (id == -1) {
fprintf(stderr, "unable to find device %s\n", argv[0]);
return EXIT_FAILURE;
}
- master = XOpenDevice(dpy, info->id);
- if (!master)
- Error(BadValue, "Unable to open device %s.\n", argv[0]);
-
r.type = CH_RemoveMasterDevice;
- r.device = master;
+ r.device = id;
if (argc >= 2)
{
if (!strcmp(argv[1], "Floating"))
if (r.returnMode == AttachToMaster)
{
- 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.returnPointer = atoi(argv[2]);
+ r.returnKeyboard = atoi(argv[3]);
}
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&r, 1);
- if (ptr)
- XCloseDevice(dpy, ptr);
- if (keybd)
- XCloseDevice(dpy, keybd);
+ ret = XIChangeDeviceHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&r, 1);
return ret;
}
int
change_attachment(Display* dpy, int argc, char** argv, char *name, char* desc)
{
- XDeviceInfo *info_sd, *info_md;
- XChangeAttachmentInfo c;
- XDevice *slave, *master;
+ int sd_id, md_id;
+ XIAttachSlaveInfo c;
int ret;
if (argc < 2)
return EXIT_FAILURE;
}
- info_sd = find_device_info(dpy, argv[0], True);
- info_md = find_device_info(dpy, argv[1], False);
+ sd_id = xi2_find_device_id(dpy, argv[0]);
+ md_id = xi2_find_device_id(dpy, argv[1]);
- if (!info_sd) {
+ if (sd_id == -1) {
fprintf(stderr, "unable to find device %s\n", argv[0]);
return EXIT_FAILURE;
}
- if (!info_md) {
+ if (md_id == -1) {
fprintf(stderr, "unable to find device %s\n", argv[1]);
return EXIT_FAILURE;
}
- slave = XOpenDevice(dpy, info_sd->id);
- master = XOpenDevice(dpy, info_md->id);
-
- if (!slave)
- Error(BadValue, "Invalid slave device given %d\n", atoi(argv[0]));
-
- if (!master)
- Error(BadValue, "Invalid master device given %d\n", atoi(argv[1]));
+ c.type = CH_AttachSlave;
+ c.device = sd_id;
+ c.newMaster = md_id;
- c.type = CH_ChangeAttachment;
- c.changeMode = AttachToMaster;
- c.device = slave;
- c.newMaster = master;
-
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
- XCloseDevice(dpy, slave);
- XCloseDevice(dpy, master);
+ ret = XIChangeDeviceHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
return ret;
}
int
float_device(Display* dpy, int argc, char** argv, char* name, char* desc)
{
- XDeviceInfo *info;
- XChangeAttachmentInfo c;
- XDevice *slave;
+ int id;
+ XIDetachSlaveInfo c;
int ret;
if (argc < 1)
return EXIT_FAILURE;
}
- info = find_device_info(dpy, argv[0], True);
+ id = xi2_find_device_id(dpy, argv[0]);
- if (!info) {
+ if (id == -1) {
fprintf(stderr, "unable to find device %s\n", argv[0]);
return EXIT_FAILURE;
}
- slave = XOpenDevice(dpy, info->id);
-
- if (!slave)
- return BadValue;
-
- c.type = CH_ChangeAttachment;
- c.changeMode = Floating;
- c.device = slave;
+ c.type = CH_DetachSlave;
+ c.device = id;
- ret = XChangeDeviceHierarchy(dpy, (XAnyHierarchyChangeInfo*)&c, 1);
- XCloseDevice(dpy, slave);
+ ret = XIChangeDeviceHierarchy(dpy, (XIAnyHierarchyChangeInfo*)&c, 1);
return ret;
}