Change the device hierarchy.
#include <X11/extensions/XInput2.h>
Status XIChangeHierarchy( Display *display, XIAnyHierarchyChangeInfo *changes, int num_changes);
display Specifies the connection to the X server.
num_changes Specifies the number of elements in changes.
changes Specifies the changes to be made.
XIChangeHierarchy modifies the device hierarchy by creating or removing master devices or changing the attachment of slave devices. If num_changes is non-zero, changes is an array of XIAnyHierarchyChangeInfo structures. If num_changes is equal or less than zero, XIChangeHierarchy does nothing.
XIChangeHierarchy processes changes in order, effective immediately. If an error occurs, processing is aborted and the error is reported to the client. Changes already made remain effective.
The list of changes is any combination of XIAnyHierarchyChangeInfo. The type of a hierarchy change can be XIAddMaster, XIRemoveMaster, XIAttachSlave or XIDetachSlave.
typedef union { int type; XIAddMasterInfo add; XIRemoveMasterInfo remove; XIAttachSlave attach; XIDetachSlave detach; } XIAnyHierarchyChangeInfo;
typedef struct { int type; /* XIAddMaster */ char* name; Bool send_core; Bool enable; } XIAddMasterInfo;
typedef struct { int type; /* XIRemoveMaster */ int deviceid; int return_mode; int return_pointer; int return_keyboard; } XIRemoveMasterInfo;
typedef struct { int type; /* XIAttachSlave */ int deviceid; int new_master; } XIAttachSlaveInfo;
typedef struct { int type; /* XIDetachSlave */ int deviceid; } XIDetachSlaveInfo;
XIAddMasterInfo creates a new master pointer and a new master keyboard labelled "name pointer" and "name keyboard" respectively. If sendCore is True, the devices will send core events. If enable is True, the device is enabled immediately.
XIAddMasterInfo can generate a BadValue error.
XIRemoveMasterInfo removes device and its paired master device. If returnMode is XIAttachToMaster, all pointers attached to device or its paired master device are attached to returnPointer. Likewise, all keyboards are attached to returnKeyboard. If returnMode is XIFloating, all attached devices are set to floating.
XIRemoveMasterInfo can generate a BadValue and a BadDevice error.
XIAttachSlaveInfo attaches device to newMaster. If the device is currently attached to a master device, it is detached from the master device and attached to the new master device.
XIAttachSlaveInfo can generate a BadDevice error.
XIDettachSlaveInfo deattaches device from the current master device and sets it floating. If the device is already floating, no changes are made.
XIDetachSlaveInfo can generate a BadDevice error.
XIChangeHierarchy generates an XIHierarchyEvent if any modifications were successful.
BadDevice An invalid device was specified. The device does not exist or is not a appropriate for the type of change.
BadValue Some numeric value falls out of the allowed range.