xcb\_xkb\_get\_device\_info(3) XCB Requests xcb\_xkb\_get\_device\_info(3)

# [NAME](#NAME)

xcb\_xkb\_get\_device\_info -

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;xcb/xkb.h&gt;**

## [Request function](#Request_function)

xcb\_xkb\_get\_device\_info\_cookie\_t **xcb\_xkb\_get\_device\_info**(xcb\_connection\_t \**conn*, xcb\_xkb\_device\_spec\_t *deviceSpec*, uint16\_t *wanted*, uint8\_t *allButtons*, uint8\_t *firstButton*, uint8\_t *nButtons*, xcb\_xkb\_led\_class\_spec\_t *ledClass*, xcb\_xkb\_id\_spec\_t *ledID*);

## [Reply datastructure](#Reply_datastructure)

```
typedef struct xcb_xkb_get_device_info_reply_t {


    uint8_t    response_type;


    uint8_t    deviceID;


    uint16_t   sequence;


    uint32_t   length;


    uint16_t   present;


    uint16_t   supported;


    uint16_t   unsupported;


    uint16_t   nDeviceLedFBs;


    uint8_t    firstBtnWanted;


    uint8_t    nBtnsWanted;


    uint8_t    firstBtnRtrn;


    uint8_t    nBtnsRtrn;


    uint8_t    totalBtns;


    uint8_t    hasOwnState;


    uint16_t   dfltKbdFB;


    uint16_t   dfltLedFB;


    uint8_t    pad0[2];


    xcb_atom_t devType;


    uint16_t   nameLen;
} xcb_xkb_get_device_info_reply_t;
```

## [Reply function](#Reply_function)

xcb\_xkb\_get\_device\_info\_reply\_t \***xcb\_xkb\_get\_device\_info\_reply**(xcb\_connection\_t \**conn*, xcb\_xkb\_get\_device\_info\_cookie\_t *cookie*, xcb\_generic\_error\_t \*\**e*);

## [Reply accessors](#Reply_accessors)

xcb\_xkb\_string8\_t \***xcb\_xkb\_get\_device\_info\_name**(const xcb\_xkb\_get\_device\_info\_request\_t \**reply*);

int **xcb\_xkb\_get\_device\_info\_name\_length**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*);

xcb\_generic\_iterator\_t **xcb\_xkb\_get\_device\_info\_name\_end**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*); uint8\_t \*xcb\_xkb\_get\_device\_info\_pad\_1 (const xcb\_xkb\_get\_device\_info\_request\_t \*reply)

xcb\_xkb\_action\_t \***xcb\_xkb\_get\_device\_info\_btn\_actions**(const xcb\_xkb\_get\_device\_info\_request\_t \**reply*);

int **xcb\_xkb\_get\_device\_info\_btn\_actions\_length**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*);

xcb\_xkb\_action\_iterator\_t **xcb\_xkb\_get\_device\_info\_btn\_actions\_iterator**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*);

int **xcb\_xkb\_get\_device\_info\_leds\_length**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*);

xcb\_xkb\_device\_led\_info\_iterator\_t **xcb\_xkb\_get\_device\_info\_leds\_iterator**(const xcb\_xkb\_get\_device\_info\_reply\_t \**reply*);

# [REQUEST ARGUMENTS](#REQUEST_ARGUMENTS)

[*conn*](#conn)

The XCB connection to X11.

[*deviceSpec*](#deviceSpec)

TODO: NOT YET DOCUMENTED.

[*wanted*](#wanted)

TODO: NOT YET DOCUMENTED.

[*allButtons*](#allButtons)

TODO: NOT YET DOCUMENTED.

[*firstButton*](#firstButton)

TODO: NOT YET DOCUMENTED.

[*nButtons*](#nButtons)

TODO: NOT YET DOCUMENTED.

[*ledClass*](#ledClass)

TODO: NOT YET DOCUMENTED.

[*ledID*](#ledID)

TODO: NOT YET DOCUMENTED.

# [REPLY FIELDS](#REPLY_FIELDS)

[*response\_type*](#response_type)

The type of this reply, in this case *XCB\_XKB\_GET\_DEVICE\_INFO*. This field is also present in the *xcb\_generic\_reply\_t* and can be used to tell replies apart from each other.

[*sequence*](#sequence)

The sequence number of the last request processed by the X11 server.

[*length*](#length)

The length of the reply, in words (a word is 4 bytes).

[*deviceID*](#deviceID)

TODO: NOT YET DOCUMENTED.

[*present*](#present)

TODO: NOT YET DOCUMENTED.

[*supported*](#supported)

TODO: NOT YET DOCUMENTED.

[*unsupported*](#unsupported)

TODO: NOT YET DOCUMENTED.

[*nDeviceLedFBs*](#nDeviceLedFBs)

TODO: NOT YET DOCUMENTED.

[*firstBtnWanted*](#firstBtnWanted)

TODO: NOT YET DOCUMENTED.

[*nBtnsWanted*](#nBtnsWanted)

TODO: NOT YET DOCUMENTED.

[*firstBtnRtrn*](#firstBtnRtrn)

TODO: NOT YET DOCUMENTED.

[*nBtnsRtrn*](#nBtnsRtrn)

TODO: NOT YET DOCUMENTED.

[*totalBtns*](#totalBtns)

TODO: NOT YET DOCUMENTED.

[*hasOwnState*](#hasOwnState)

TODO: NOT YET DOCUMENTED.

[*dfltKbdFB*](#dfltKbdFB)

TODO: NOT YET DOCUMENTED.

[*dfltLedFB*](#dfltLedFB)

TODO: NOT YET DOCUMENTED.

[*devType*](#devType)

TODO: NOT YET DOCUMENTED.

[*nameLen*](#nameLen)

TODO: NOT YET DOCUMENTED.

# [DESCRIPTION](#DESCRIPTION)

# [RETURN VALUE](#RETURN_VALUE)

Returns an *xcb\_xkb\_get\_device\_info\_cookie\_t*. Errors have to be handled when calling the reply function *xcb\_xkb\_get\_device\_info\_reply*.

If you want to handle errors in the event loop instead, use *xcb\_xkb\_get\_device\_info\_unchecked*. See [**xcb-requests(3)**](/man/os/libxcb/xcb-requests.3) for details.

# [ERRORS](#ERRORS)

This request does never generate any errors.

# [SEE ALSO](#SEE_ALSO)

# [AUTHOR](#AUTHOR)

Generated from xkb.xml. Contact xcb@lists.freedesktop.org for corrections and improvements.

libxcb 1.17.0 X Version 11

---

Document: xcb_xkb_get_device_info_pad_1(3) from libxcb 1.17.0-r18 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libxcb.git
