XkbGetDeviceInfo(3) XKB FUNCTIONS XkbGetDeviceInfo(3)

# [NAME](#NAME)

XkbGetDeviceInfo - Determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension device

# [SYNOPSIS](#SYNOPSIS)

**XkbDeviceInfoPtr XkbGetDeviceInfo** **(Display \*dpy,** **unsigned int which,** **unsigned int device\_spec,** **unsigned int ind\_class,** **unsigned int ind\_id);**

# [ARGUMENTS](#ARGUMENTS)

[*dpy*](#dpy)

connection to X server

[*which*](#which)

mask indicating information to return

[*device\_spec*](#device_spec)

device ID, or XkbUseCoreKbd

[*ind\_class*](#ind_class)

feedback class for indicator requests

[*ind\_id*](#ind_id)

feedback ID for indicator requests

# [DESCRIPTION](#DESCRIPTION)

To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension device, use *XkbGetDeviceInfo.*

*XkbGetDeviceInfo* returns information about the input device specified by *device\_spec.* Unlike the *device\_spec* parameter of most Xkb functions, *device\_spec* does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension device.

The *which* parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from Table 1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table.

```


                         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
```

The XkbDeviceInfoRec returned by *XkbGetDeviceInfo* always has values for *name* (may be a null string, ""), *type, supported, unsupported, has\_own\_state, dflt\_kbd\_fd,* and *dflt\_kbd\_fb.* Other fields are filled in as specified by *which.*

Upon return, the *supported* field will be set to the inclusive OR of zero or more bits from Table 1; each bit set indicates an optional Xkb extension device feature supported by the server implementation, and a client may modify the associated behavior.

If the XkbButtonActionsMask bit is set in *which,* the XkbDeviceInfoRec returned will have the button actions *(btn\_acts* field) filled in for all buttons.

If *which* includes one of the bits in XkbXI\_IndicatorsMask, the feedback class of the indicators must be specified in *ind\_class,* and the feedback ID of the indicators must be specified in *ind\_id.* If the request does not include any of the bits in XkbXI\_IndicatorsMask, the *ind\_class* and *ind\_id* parameters are ignored. The class and ID can be obtained via the input device extension *XListInputDevices* request.

If any of the XkbXI\_IndicatorsMask bits are set in *which,* the XkbDeviceInfoRec returned will have filled in the portions of the *leds* structure corresponding to the indicator feedback identified by *ind\_class* and *ind\_id.* The *leds* vector of the XkbDeviceInfoRec is allocated if necessary and *sz\_leds* and *num\_leds* filled in. The *led\_class, led\_id* and *phys\_indicators* fields of the *leds* entry corresponding to *ind\_class* and *ind\_id* are always filled in. If *which* contains XkbXI\_IndicatorNamesMask, the *names\_present* and *names* fields of the *leds* structure corresponding to *ind\_class* and *ind\_id* are returned. If *which* contains XkbXI\_IndicatorStateMask, the corresponding *state* field is updated. If *which* contains XkbXI\_IndicatorMapsMask, the *maps\_present* and *maps* fields are updated.

Xkb provides convenience functions to request subsets of the information available via *XkbGetDeviceInfo.* These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument and operate on the X Input Extension device specified by the *device\_spec* field of the structure. Only the parts of the structure indicated in the function description are updated. The XkbDeviceInfoRec structure used in the function call can be obtained by calling *XkbGetDeviceInfo* or can be allocated by calling *XkbAllocDeviceInfo.*

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

# [SEE ALSO](#SEE_ALSO)

[**XkbAllocDeviceInfo**(3)](/man/os/libx11/XkbAllocDeviceInfo.3), [**XListInputDevices**(3)](/man/os/libx11/XListInputDevices.3)

libX11 1.8.14 X Version 11

---

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