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 request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them explicitly, by using XkbAddDeviceLedInfo(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 those XkbDeviceLedInfoRec structures 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