XkbAllocDeviceInfo(3)
π XkbAllocDeviceInfo(3) π
okay bestie, this lil icon is from the XKB FUNCTIONS manual, and it's here to help you obtain an XkbDeviceInfoRec structure. no cap, that's the whole main-character job π
πΈ NAME πΈ
XkbAllocDeviceInfo β obtain an XkbDeviceInfoRec structure. that's it, that's the vibe π«Ά
β¨ SYNOPSIS β¨
here's the signature, copied exactly because we do not play with signatures:
XkbDeviceInfoPtr XkbAllocDeviceInfo (unsigned int device_spec, unsigned
int n_buttons, unsigned int sz_leds);
π ARGUMENTS π
device_specβ the device ID with which the structure will be used π¦n_buttonsβ how many button actions to allocate space for πsz_ledsβ how many LED feedbacks to allocate space for β¨
π DESCRIPTION π
XkbAllocDeviceInfo allocates space for an XkbDeviceInfoRec structure and initializes that structure's device_spec field with the device ID specified by device_spec. literally setting you up with the right device identity, periodt π
if n_buttons is nonzero, n_buttons XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. zeroed out and ready, bestie πΈ
if sz_leds is nonzero, sz_leds XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. LED info incoming! π
π¨ and listen: if you requestXkbDeviceLedInfoRecstructures be allocated using this request, you must initialize them explicitly, by usingXkbAddDeviceLedInfo(3). no skipping that step, iykyk π
π¦ STRUCTURES π¦
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;
and here's the LED info struct, looking all iconic and detailed:
typedef struct {
unsigned short led_class; /* class for this LED device*/
unsigned short led_id; /* ID for this LED device */
unsigned int phys_indicators; /* bits for which LEDs physically present */
unsigned int maps_present; /* bits for which LEDs have maps in maps */
unsigned int names_present; /* bits for which LEDs are in names */
unsigned int state; /* 1 bit => corresponding LED is on */
Atom names[XkbNumIndicators]; /* names for LEDs */
XkbIndicatorMapRec maps; /* indicator maps for each LED */
} XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
π SEE ALSO π
XkbAddDeviceLedInfo(3)β the one you need for initializing thoseXkbDeviceLedInfoRecstructures you asked for. go give it a look, bestie π
okay that's the whole page, bestie. this iconic little manual page comes from X Version 11, libX11 1.8.14, and it's XkbAllocDeviceInfo(3) β mwah, bye πβ¨
π¦ where this page comes from
- alpine 3.24: libx11-doc 1.8.14-r0 Β· X11
- arch rolling: libx11 1.8.14-1 Β· MIT AND X11
- nixos 26.05: libx11 1.8.14
- nixpkgs unstable: libx11 1.8.14
- Copyright (c) 1999, Oracle and/or its affiliates
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms