Allocate additional space for button actions in an xkbdeviceinforec structure
Status XkbResizeDeviceButtonActions (\^XkbDeviceInfoPtr device_info\^, unsigned int new_total\^);
- device_info
structure in which to allocate button actions
- new_total
new total number of button actions needed
XkbResizeDeviceButtonActions reallocates space, if necessary, to make sure there is room for a total of new_total button actions in the device_info structure. Any new entries allocated are zeroed. If successful, XkbResizeDeviceButtonActions returns Success. If new_total is zero, all button actions are deleted, device_info->num_btns is set to zero, and device_info->btn_acts is set to NULL. If device_info is invalid or new_total is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned.
To free an XkbDeviceInfoRec structure, use XkbFreeDeviceInfo.
Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure:
typedef struct { char * name; /\(** name for device */ Atom type; /\(** name for class of devices */ unsigned short device_spec; /\(** device of interest */ Bool has_own_state; /\(** True=>this device has its own state */ unsigned short supported; /\(** bits indicating supported capabilities */ unsigned short unsupported; /\(** bits indicating unsupported capabilities */ unsigned short num_btns; /\(** number of entries in btn_acts */ XkbAction * btn_acts; /\(** button actions */ unsigned short sz_leds; /\(** total number of entries in LEDs vector */ unsigned short num_leds; /\(** number of valid entries in LEDs vector */ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
BadAlloc
Unable to allocate storage
BadValue
An argument is out of range