XSetDeviceValuators man page
XSetDeviceValuators — initialize the valuators on an extension input device
XSetDeviceValuators( Display *display, XDevice *device, int *valuators, int first_valuator, int num_valuators);
display Specifies the connection to the X server.
device Specifies the device whose valuators are to be initialized.
valuators Specifies a pointer to an array of integer values to be used to initialize thedevice valuators.
first_valuator Specifies the first valuator to be set. Valuators are numbered beginning withzero.
num_valuators Specifies the number of valuators to be set.
The XSetDeviceValuators request sets the current values of the valuators of an input device. The valuators in the range first_valuator to (first_valuator + num_valuators) are set to the specified values. Valuators are numbered beginning with 0. Not all input devices support initialization of valuator values. If this request is made to a device that does not support valuators initialization, a BadMatch error will occur.
If the request succeeds, a status of Success is returned. If another client has the device grabbed, a status of AlreadyGrabbed is returned.
XSetDeviceValuators can generate a BadLength, BadDevice, BadMatch, or BadValue error.
BadDevice An invalid device was specified. The specified device does not exist or has not been opened by this client via XOpenInputDevice.
BadMatch This error may occur if an XSetDeviceValuators request is made specifying a device that has no valuators and reports no axes of motion, or if such a request is made specifying a device that does not support valuator initialization.
BadValue An invalid first_valuator or num_valuators values was specified.