#include <X11/extensions/XInput2.h>
Bool XIQueryPointer( Display *display, int deviceid, Window win, Window *root_return, Window *child_return, double *root_x_return, double *root_y_return, double *win_x_return, double *win_y_return, XIButtonState *buttons_return, XIModifierState *modifiers_return, XIGroupState *group_return);
buttons_return Returns the current button state.
child_return Returns the child window that the pointer is located in, if any.
deviceid Specifies the device to query.
display Specifies the connection to the X server.
group_return Returns the current group state.
modifiers_return Returns the current state of the modifier keys.
root_return Returns the root window that the pointer is in.
root_x_return, root_y_return Return the pointer coordinates relative to the root window's origin.
win Specifies the window.
win_x_return, win_y_return Return the pointer coordinates relative to the specified window.
The XIQueryPointer function returns the root window the device's pointer is logically on and the pointer coordinates relative to the root window's origin. If XIQueryPointer returns False, the pointer is not on the same screen as the specified window, and XIQueryPointer returns None to child_return and zero to win_x_return and win_y_return. If XIQueryPointer returns True, the pointer coordinates returned to win_x_return and win_y_return are relative to the origin of the specified window. In this case, XIQueryPointer returns the child that contains the pointer, if any, or else None to child_return.
XIQueryPointer returns the current logical state of the buttons buttons_return. The keyboard paired with the master pointer is selected to obtain the data for modifiers_return and group_return.
XIQueryPointer is identical to XQueryPointer but specifies the device explicitly.
XIQueryPointer can generate a BadDevice and a BadWindow error.
BadDevice An invalid device was specified. The device does not exist or is not a pointer device.
BadWindow A value for a Window argument does not name a defined window.
XQueryPointer(3)