XChangePointerDevice() - change which device is the X pointer
Status XChangePointerDevice (Display *display, XDevice *device,
int xaxis, int yaxis)
The XChangePointerDevice(3) request causes the server to use the specified device as the X pointer. The device must have been opened by the client through XOpenDevice(3) or a BadDevice error will result. The device must support input class Valuators or a BadMatch error will result. If the implementation does not support use of the specified device as the X pointer, a BadDevice error will result.
If the specified device is grabbed by another client, AlreadyGrabbed is returned. If the specified device is frozen by a grab on another device, GrabFrozen is returned. If the request is successful, Success is returned.
If the request succeeds, a ChangeDeviceNotify event is sent to all clients that have selected that event. A MappingNotify event with request = MappingPointer is sent to all clients. The specified device becomes the X pointer, and the old X pointer becomes accessible through the input extension protocol requests.
XChangePointerDevice(3) can generate a BadDevice or a BadMatch error.
Programming With Xlib