void xcb_key_symbols_get_reply (xcb_key_symbols_t *syms, xcb_generic_error_t **e) { if (!syms) return; if (syms->tag == TAG_COOKIE) { syms->tag = TAG_VALUE; syms->u.reply = xcb_get_keyboard_mapping_reply(syms->c, syms->u.cookie, e); } }
KeySym XKeycodeToKeysym(Display *display, KeyCode keycode, int index) { xcb_get_keyboard_mapping_cookie_t cookie; xcb_get_keyboard_mapping_reply_t *reply; xcb_keysym_t result = NoSymbol; cookie = xcb_get_keyboard_mapping(display, keycode, 1); reply = xcb_get_keyboard_mapping_reply(display, cookie, NULL); if (reply == NULL) fatal("Error in X11 communication\n"); result = xcb_get_keyboard_mapping_keysyms(reply)[index]; free(reply); return result; }