XkbFreeDeviceInfo(3) XKB FUNCTIONS XkbFreeDeviceInfo(3)

# [NAME](#NAME)

XkbFreeDeviceInfo - Free an XkbDeviceInfoRec structure

# [SYNOPSIS](#SYNOPSIS)

**void XkbFreeDeviceInfo** **(XkbDeviceInfoPtr device\_info,** **unsigned int which,** **Bool free\_all);**

# [ARGUMENTS](#ARGUMENTS)

[*device\_info*](#device_info)

pointer to XkbDeviceInfoRec in which to free items

[*which*](#which)

mask of components of device\_info to free

[*free\_all*](#free_all)

True =&gt; free everything, including device\_info

# [DESCRIPTION](#DESCRIPTION)

If *free\_all* is True, the *XkbFreeDeviceInfo* frees all components of *device\_info* and the XkbDeviceInfoRec structure pointed to by *device\_info* itself. If *free\_all* is False, the value of *which* determines which subcomponents are freed. *which* is an inclusive OR of one or more of the values from Table 1. If *which* contains XkbXI\_ButtonActionsMask, all button actions associated with *device\_info* are freed, *device\_info-&gt;btn\_acts* is set to NULL, and *device\_info-&gt;num\_btns* is set to zero. If *which* contains all bits in XkbXI\_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with *device\_info* are freed, *device\_info-&gt;leds* is set to NULL, and *device\_info-&gt;sz\_leds* and *device\_info-&gt;num\_leds* are set to zero. If *which* contains XkbXI\_IndicatorMapsMask, all indicator maps associated with *device\_info* are cleared, but the number of LEDs and the leds structures themselves is preserved. If *which* contains XkbXI\_IndicatorNamesMask, all indicator names associated with *device\_info* are cleared, but the number of LEDs and the leds structures themselves is preserved. If *which* contains XkbXI\_IndicatorStateMask, the indicator state associated with the *device\_info* leds are set to zeros but the number of LEDs and the leds structures themselves is preserved.

```


                         Table 1 XkbDeviceInfoRec Mask Bits
____________________________________________________________________________________
Name                         XkbDeviceInfoRec Value     Capability If Set


                             Fields Effected
____________________________________________________________________________________
XkbXI_KeyboardsMask                           (1L <<0) Clients can use all


                                                       Xkb requests and events


                                                       with KeyClass devices


                                                       supported by the input


                                                       device extension.
XkbXI_ButtonActionsMask       num_btns        (1L <<1) Clients can assign key


                              btn_acts                 actions to buttons


                                                       non-KeyClass input


                                                       extension devices.
XkbXI_IndicatorNamesMask      leds->names     (1L <<2) Clients can assign


                                                       names to indicators on


                                                       non-KeyClass input


                                                       extension devices.
XkbXI_IndicatorMapsMask       leds->maps      (1L <<3) Clients can assign


                                                       indicator maps to


                                                       indicators on


                                                       non-KeyClass input


                                                       extension devices.
XkbXI_IndicatorStateMask      leds->state     (1L <<4) Clients can request


                                                       the status of indicators


                                                       on non-KeyClass input


                                                       extension devices.
XkbXI_IndicatorsMask          sz_leds         (0x1c)   XkbXI_IndicatorNamesMask |


                              num_leds                 XkbXI_IndicatorMapsMask |


                              leds->*                  XkbXI_IndicatorStateMask
XkbXI_UnsupportedFeaturesMask unsupported     (1L <<15)
XkbXI_AllDeviceFeaturesMask   Those selected  (0x1e)   XkbXI_IndicatorsMask |


                              by Value Column          XkbSI_ButtonActionsMask


                              masks
XkbXI_AllFeaturesMask         Those selected  (0x1f)   XkbSI_AllDeviceFeaturesMask |


                              by Value Column          XkbSI_KeyboardsMask


                              masks
XkbXI_AllDetailsMask          Those selected  (0x801f) XkbXI_AllFeaturesMask |


                              by Value column          XkbXI_UnsupportedFeaturesMask


                              masks
```

# [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;
```

libX11 1.8.13 X Version 11

---

Document: XkbFreeDeviceInfo(3) from libx11 1.8.13-r7 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
