---
name: "xcb_xkb_get_device_info"
section: "3"
platform: "linux"
package: "libxcb"
version: "1.17.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/xcb_xkb_get_device_info"
---

# xcb\_xkb\_get\_device\_info(3)

## NAME

xcb\_xkb\_get\_device\_info -

## SYNOPSIS

**#include \<xcb/xkb.h\>**

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

```

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

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

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

- *conn*

  The XCB connection to X11.

- *deviceSpec*

  TODO: NOT YET DOCUMENTED.

- *wanted*

  TODO: NOT YET DOCUMENTED.

- *allButtons*

  TODO: NOT YET DOCUMENTED.

- *firstButton*

  TODO: NOT YET DOCUMENTED.

- *nButtons*

  TODO: NOT YET DOCUMENTED.

- *ledClass*

  TODO: NOT YET DOCUMENTED.

- *ledID*

  TODO: NOT YET DOCUMENTED.

## REPLY FIELDS

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

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

- *length*

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

- *deviceID*

  TODO: NOT YET DOCUMENTED.

- *present*

  TODO: NOT YET DOCUMENTED.

- *supported*

  TODO: NOT YET DOCUMENTED.

- *unsupported*

  TODO: NOT YET DOCUMENTED.

- *nDeviceLedFBs*

  TODO: NOT YET DOCUMENTED.

- *firstBtnWanted*

  TODO: NOT YET DOCUMENTED.

- *nBtnsWanted*

  TODO: NOT YET DOCUMENTED.

- *firstBtnRtrn*

  TODO: NOT YET DOCUMENTED.

- *nBtnsRtrn*

  TODO: NOT YET DOCUMENTED.

- *totalBtns*

  TODO: NOT YET DOCUMENTED.

- *hasOwnState*

  TODO: NOT YET DOCUMENTED.

- *dfltKbdFB*

  TODO: NOT YET DOCUMENTED.

- *dfltLedFB*

  TODO: NOT YET DOCUMENTED.

- *devType*

  TODO: NOT YET DOCUMENTED.

- *nameLen*

  TODO: NOT YET DOCUMENTED.

## DESCRIPTION

## 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)](/xcb-requests/3.md)** for details.

## ERRORS

This request does never generate any errors.

## SEE ALSO

## AUTHOR

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