XkbAddDeviceLedInfo(3)

okay so this is the XkbAddDeviceLedInfo(3) page from the XKB FUNCTIONS manual section β€” yes, bestie, we're doing LED info records today, and it's gonna be cute and correct. πŸ’…βœ¨

πŸŽ€ NAME πŸŽ€

XkbAddDeviceLedInfo β€” initialize an XkbDeviceLedInfoRec structure. It's giving "set up the LED info corner" energy, and honestly? iconic. πŸ’–


✨ SYNOPSIS ✨

       XkbDeviceLedInfoPtr XkbAddDeviceLedInfo (XkbDeviceInfoPtr device_info,
              unsigned int led_class, unsigned int led_id);

🌸 ARGUMENTS 🌸

  • device_info β€” the structure where you're adding the LED info. That's the whole vibe: put it in here. 🫢
  • led_class β€” the input extension class for the LED device of interest. ikk what you're into, boo. πŸ‘‘
  • led_id β€” the input extension ID for the LED device of interest. the specific one, fr fr. πŸ¦‹

πŸ’« DESCRIPTION πŸ’«

First thing it does: XkbAddDeviceLedInfo checks whether an entry matching led_class and led_id already exists in the device_info->leds array. If it finds a matching entry, it returns a pointer to that entry. no cap, it's not gonna duplicate your fave. πŸ’…

Otherwise, it checks to be sure there is at least one empty entry in device_info->leds, and extends it if there is not enough room. Then it increments device_info->num_leds and fills in the next available entry in device_info->leds with led_class and led_id. That's the whole glow-up: find it, or make room for it, then add it. ✨

If successful, XkbAddDeviceLedInfo returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate sufficient storage, or if device_info points to an invalid XkbDeviceInfoRec structure, or if led_class or led_id are inappropriate, XkbAddDeviceLedInfo returns NULL. that's the fail state, bestie β€” no pointer for you. 😭

To allocate additional space for button actions in an XkbDeviceInfoRec structure, use XkbResizeDeviceButtonActions. different mission, same universe. πŸŒ€


🧚 STRUCTURES 🧚

Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure. Here's the whole fit, comments and all β€” code is code, don't come for me: πŸ‘‘

           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;

           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 πŸ‘€


footer sign-off, bestie: source/version/page tag is X Version 11 / libX11 1.8.14 / XkbAddDeviceLedInfo(3) β€” and that's the whole cute little footer moment. mwah πŸ’–πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from