XkbAddDeviceLedInfo(3) XKB FUNCTIONS XkbAddDeviceLedInfo(3)

# [NAME](#NAME)

XkbAddDeviceLedInfo - Initialize an XkbDeviceLedInfoRec structure

# [SYNOPSIS](#SYNOPSIS)

**XkbDeviceLedInfoPtr XkbAddDeviceLedInfo** **(XkbDeviceInfoPtr device\_info,** **unsigned int led\_class,** **unsigned int led\_id);**

# [ARGUMENTS](#ARGUMENTS)

[*device\_info*](#device_info)

structure in which to add LED info

[*led\_class*](#led_class)

input extension class for LED device of interest

[*led\_id*](#led_id)

input extension ID for LED device of interest

# [DESCRIPTION](#DESCRIPTION)

*XkbAddDeviceLedInfo* first checks to see whether an entry matching *led\_class* and *led\_id* already exists in the *device\_info-&gt;leds* array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure there is at least one empty entry in *device\_info-&gt;leds* and extends it if there is not enough room. It then increments *device\_info-&gt;num\_leds* and fills in the next available entry in *device\_info-&gt;leds* with *led\_class* and *led\_id.*

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.

To allocate additional space for button actions in an XkbDeviceInfoRec structure, use *XkbResizeDeviceButtonActions.*

# [STRUCTURES](#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;


    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](#SEE_ALSO)

[**XkbResizeDeviceButtonActions**(3)](/man/os/libx11/XkbResizeDeviceButtonActions.3)

libX11 1.8.14 X Version 11

---

Document: XkbAddDeviceLedInfo(3) from libx11 1.8.14-r3 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
