xcb_xkb_get_device_info(3)
π xcb_xkb_get_device_info(3) β the XCB Requests glow-up π
okay bestie, gather round, because today we're meeting xcb_xkb_get_device_info, one of the XCB request girlies from the XKB chapter of libxcb. it lives in section 3 of the manual (the library-function section, iykyk), and it's giving "ask the X server about a keyboard device" main character energy. let's get into it π
β¨ SYNOPSIS β¨
first thing you do, always: pull in the header. she's not optional.
#include <xcb/xkb.h>
π¦ Request function
here's the actual call, hand it your connection and a whole lil lineup of args:
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
this is the struct you get back, field for field, no edits, no notes:
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
this is how you actually collect the reply for that cookie. errors? you handle them here, through e:
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
the little helper squad that digs into the reply for you. copying these exactly, character for character, because that's the law:
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);
not me noticingname_endandpad_1are just chilling on the same line in the source. iconic formatting, no notes. π
π«Ά REQUEST ARGUMENTS
everything you gotta feed the request function:
connβ the XCB connection to X11. your link to the server, bestie, without her you're just yelling into the void.deviceSpecβ TODO: NOT YET DOCUMENTED. yeah, the docs girlies left this one blank π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
what every field in that reply struct actually means (or doesn't, in some cases, and I'm being so fr about that):
response_typeβ the type of this reply, in this caseXCB_XKB_GET_DEVICE_INFO. this field is also present in thexcb_generic_reply_tand can be used to tell replies apart from each other. she's the name tag at the party β¨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). yes, 4 bytes, don't come for me.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
okay so... this section is genuinely empty in the source. nothing. blank. the void stared back. not me being handed an empty <section> and told to make it cute π moving on, periodt.
β RETURN VALUE
- she hands you back an
xcb_xkb_get_device_info_cookie_t. that's the vibe. - errors have to be handled when calling the reply function
xcb_xkb_get_device_info_reply. - if you'd rather handle errors in the event loop instead, use
xcb_xkb_get_device_info_unchecked. seexcb-requests(3)for details. iykyk.
π ERRORS
this request does never generate any errors. like, none. zero. a clean girl. slay π
π₯ SEE ALSO
this section is empty in the source too. no cross-references, no friends, just vibes π¦
π AUTHOR
generated from xkb.xml. contact xcb@lists.freedesktop.org for corrections and improvements.
okay bestie, that's the whole page, every last field and TODO preserved with love π«Ά this page shipped as part of X Version 11 / libxcb 1.17.0, and yes, that's the source and version tag you'd find in the footer of the original β consider this your cute sign-off. go forth and get that device info, you absolute icon πβ¨π
π¦ where this page comes from
- alpine 3.22: libxcb-doc 1.17.0-r0 Β· MIT
- alpine 3.23: libxcb-doc 1.17.0-r1 Β· MIT
- alpine 3.24: libxcb-doc 1.17.0-r2 Β· MIT
- arch rolling: libxcb 1.17.0-1 Β· X11
- centos-stream 10: libxcb-devel 1.17.0-3.el10 Β· X11
- debian trixie: libxcb-doc 1.17.0-2
- fedora 43: libxcb-devel 1.17.0-6.fc43 Β· X11
- fedora 43: libxcb-devel 1.17.0-6.fc43 Β· X11
- fedora 44: libxcb-devel 1.17.0-7.fc44 Β· X11
- fedora 44: libxcb-devel 1.17.0-7.fc44 Β· X11
- nixpkgs unstable: libxcb 1.17.0
- opensuse-leap 16.0: libxcb-devel-doc 1.17.0-160000.2.2 Β· MIT
- ubuntu questing: libxcb-doc 1.17.0-2build1
- ubuntu resolute: libxcb-doc 1.17.0-2ubuntu1
- ubuntu stonking: libxcb-doc 1.17.0-2ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms