Status XkbGetDeviceButtonActions (Display *dpy, XkbDeviceInfoPtr device_info, Bool all_buttons, unsigned int first_button, unsigned int num_buttons);
connection to X server
structure to update with results
True => get information for all buttons
number of first button for which info is desired
number of buttons for which info is desired
XkbGetDeviceButtonActions queries the server for the desired button information for the device indicated by the device_spec field of device_info and waits for a reply. If successful, XkbGetDeviceButtonActions backfills the button actions (btn_acts field of device_info) for only the requested buttons, updates the name, type, supported, and unsupported fields, and returns Success.
all_buttons, first_button and num_buttons specify the device buttons for which actions should be returned. Setting all_buttons to True requests actions for all device buttons; if all_buttons is False, first_button and num_buttons specify a range of buttons for which actions are requested.
If a compatible version of Xkb is not available in the server or the Xkb extension has not been properly initialized, XkbGetDeviceButtonActions returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If the specified device (device_info->device_spec) is invalid, a BadKeyboard status is returned. If the device has no buttons, a BadMatch status is returned. If first_button and num_buttons specify illegal buttons, a BadValue status is returned.
The Xkb extension has not been properly initialized
Unable to allocate storage
The device specified was not a valid core or input extension device
A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
An argument is out of range