XQueryDeviceState() - query the state of an extension input device.
XQueryDeviceState (Display *display, XDevice *device)
The XQueryDeviceState(3) request queries the state of an input device. The current state of keys and buttons (up or down), and valuators (current value) on the device is reported by this request. Each key or button is represented by a bit in the XDeviceState structure that is returned. Valuators on the device report 0 if they are reporting relative information, and the current value if they are reporting absolute information.
XQueryDeviceState(3) can generate a BadDevice error.
The structure contains:
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
The XValuatorState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
The XKeyState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
The XButtonState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
Programming With Xlib