Home | History | Annotate | Line # | Download | only in files
xproto.h revision 1.5
      1 /*
      2  * This file generated automatically from xproto.xml by c_client.py.
      3  * Edit at your peril.
      4  */
      5 
      6 /**
      7  * @defgroup XCB__API XCB  API
      8  * @brief  XCB Protocol Implementation.
      9  * @{
     10  **/
     11 
     12 #ifndef __XPROTO_H
     13 #define __XPROTO_H
     14 
     15 #include "xcb.h"
     16 
     17 #ifdef __cplusplus
     18 extern "C" {
     19 #endif
     20 
     21 /**
     22  * @brief xcb_char2b_t
     23  **/
     24 typedef struct xcb_char2b_t {
     25     uint8_t byte1;
     26     uint8_t byte2;
     27 } xcb_char2b_t;
     28 
     29 /**
     30  * @brief xcb_char2b_iterator_t
     31  **/
     32 typedef struct xcb_char2b_iterator_t {
     33     xcb_char2b_t *data;
     34     int           rem;
     35     int           index;
     36 } xcb_char2b_iterator_t;
     37 
     38 typedef uint32_t xcb_window_t;
     39 
     40 /**
     41  * @brief xcb_window_iterator_t
     42  **/
     43 typedef struct xcb_window_iterator_t {
     44     xcb_window_t *data;
     45     int           rem;
     46     int           index;
     47 } xcb_window_iterator_t;
     48 
     49 typedef uint32_t xcb_pixmap_t;
     50 
     51 /**
     52  * @brief xcb_pixmap_iterator_t
     53  **/
     54 typedef struct xcb_pixmap_iterator_t {
     55     xcb_pixmap_t *data;
     56     int           rem;
     57     int           index;
     58 } xcb_pixmap_iterator_t;
     59 
     60 typedef uint32_t xcb_cursor_t;
     61 
     62 /**
     63  * @brief xcb_cursor_iterator_t
     64  **/
     65 typedef struct xcb_cursor_iterator_t {
     66     xcb_cursor_t *data;
     67     int           rem;
     68     int           index;
     69 } xcb_cursor_iterator_t;
     70 
     71 typedef uint32_t xcb_font_t;
     72 
     73 /**
     74  * @brief xcb_font_iterator_t
     75  **/
     76 typedef struct xcb_font_iterator_t {
     77     xcb_font_t *data;
     78     int         rem;
     79     int         index;
     80 } xcb_font_iterator_t;
     81 
     82 typedef uint32_t xcb_gcontext_t;
     83 
     84 /**
     85  * @brief xcb_gcontext_iterator_t
     86  **/
     87 typedef struct xcb_gcontext_iterator_t {
     88     xcb_gcontext_t *data;
     89     int             rem;
     90     int             index;
     91 } xcb_gcontext_iterator_t;
     92 
     93 typedef uint32_t xcb_colormap_t;
     94 
     95 /**
     96  * @brief xcb_colormap_iterator_t
     97  **/
     98 typedef struct xcb_colormap_iterator_t {
     99     xcb_colormap_t *data;
    100     int             rem;
    101     int             index;
    102 } xcb_colormap_iterator_t;
    103 
    104 typedef uint32_t xcb_atom_t;
    105 
    106 /**
    107  * @brief xcb_atom_iterator_t
    108  **/
    109 typedef struct xcb_atom_iterator_t {
    110     xcb_atom_t *data;
    111     int         rem;
    112     int         index;
    113 } xcb_atom_iterator_t;
    114 
    115 typedef uint32_t xcb_drawable_t;
    116 
    117 /**
    118  * @brief xcb_drawable_iterator_t
    119  **/
    120 typedef struct xcb_drawable_iterator_t {
    121     xcb_drawable_t *data;
    122     int             rem;
    123     int             index;
    124 } xcb_drawable_iterator_t;
    125 
    126 typedef uint32_t xcb_fontable_t;
    127 
    128 /**
    129  * @brief xcb_fontable_iterator_t
    130  **/
    131 typedef struct xcb_fontable_iterator_t {
    132     xcb_fontable_t *data;
    133     int             rem;
    134     int             index;
    135 } xcb_fontable_iterator_t;
    136 
    137 typedef uint32_t xcb_bool32_t;
    138 
    139 /**
    140  * @brief xcb_bool32_iterator_t
    141  **/
    142 typedef struct xcb_bool32_iterator_t {
    143     xcb_bool32_t *data;
    144     int           rem;
    145     int           index;
    146 } xcb_bool32_iterator_t;
    147 
    148 typedef uint32_t xcb_visualid_t;
    149 
    150 /**
    151  * @brief xcb_visualid_iterator_t
    152  **/
    153 typedef struct xcb_visualid_iterator_t {
    154     xcb_visualid_t *data;
    155     int             rem;
    156     int             index;
    157 } xcb_visualid_iterator_t;
    158 
    159 typedef uint32_t xcb_timestamp_t;
    160 
    161 /**
    162  * @brief xcb_timestamp_iterator_t
    163  **/
    164 typedef struct xcb_timestamp_iterator_t {
    165     xcb_timestamp_t *data;
    166     int              rem;
    167     int              index;
    168 } xcb_timestamp_iterator_t;
    169 
    170 typedef uint32_t xcb_keysym_t;
    171 
    172 /**
    173  * @brief xcb_keysym_iterator_t
    174  **/
    175 typedef struct xcb_keysym_iterator_t {
    176     xcb_keysym_t *data;
    177     int           rem;
    178     int           index;
    179 } xcb_keysym_iterator_t;
    180 
    181 typedef uint8_t xcb_keycode_t;
    182 
    183 /**
    184  * @brief xcb_keycode_iterator_t
    185  **/
    186 typedef struct xcb_keycode_iterator_t {
    187     xcb_keycode_t *data;
    188     int            rem;
    189     int            index;
    190 } xcb_keycode_iterator_t;
    191 
    192 typedef uint32_t xcb_keycode32_t;
    193 
    194 /**
    195  * @brief xcb_keycode32_iterator_t
    196  **/
    197 typedef struct xcb_keycode32_iterator_t {
    198     xcb_keycode32_t *data;
    199     int              rem;
    200     int              index;
    201 } xcb_keycode32_iterator_t;
    202 
    203 typedef uint8_t xcb_button_t;
    204 
    205 /**
    206  * @brief xcb_button_iterator_t
    207  **/
    208 typedef struct xcb_button_iterator_t {
    209     xcb_button_t *data;
    210     int           rem;
    211     int           index;
    212 } xcb_button_iterator_t;
    213 
    214 /**
    215  * @brief xcb_point_t
    216  **/
    217 typedef struct xcb_point_t {
    218     int16_t x;
    219     int16_t y;
    220 } xcb_point_t;
    221 
    222 /**
    223  * @brief xcb_point_iterator_t
    224  **/
    225 typedef struct xcb_point_iterator_t {
    226     xcb_point_t *data;
    227     int          rem;
    228     int          index;
    229 } xcb_point_iterator_t;
    230 
    231 /**
    232  * @brief xcb_rectangle_t
    233  **/
    234 typedef struct xcb_rectangle_t {
    235     int16_t  x;
    236     int16_t  y;
    237     uint16_t width;
    238     uint16_t height;
    239 } xcb_rectangle_t;
    240 
    241 /**
    242  * @brief xcb_rectangle_iterator_t
    243  **/
    244 typedef struct xcb_rectangle_iterator_t {
    245     xcb_rectangle_t *data;
    246     int              rem;
    247     int              index;
    248 } xcb_rectangle_iterator_t;
    249 
    250 /**
    251  * @brief xcb_arc_t
    252  **/
    253 typedef struct xcb_arc_t {
    254     int16_t  x;
    255     int16_t  y;
    256     uint16_t width;
    257     uint16_t height;
    258     int16_t  angle1;
    259     int16_t  angle2;
    260 } xcb_arc_t;
    261 
    262 /**
    263  * @brief xcb_arc_iterator_t
    264  **/
    265 typedef struct xcb_arc_iterator_t {
    266     xcb_arc_t *data;
    267     int        rem;
    268     int        index;
    269 } xcb_arc_iterator_t;
    270 
    271 /**
    272  * @brief xcb_format_t
    273  **/
    274 typedef struct xcb_format_t {
    275     uint8_t depth;
    276     uint8_t bits_per_pixel;
    277     uint8_t scanline_pad;
    278     uint8_t pad0[5];
    279 } xcb_format_t;
    280 
    281 /**
    282  * @brief xcb_format_iterator_t
    283  **/
    284 typedef struct xcb_format_iterator_t {
    285     xcb_format_t *data;
    286     int           rem;
    287     int           index;
    288 } xcb_format_iterator_t;
    289 
    290 typedef enum xcb_visual_class_t {
    291     XCB_VISUAL_CLASS_STATIC_GRAY = 0,
    292     XCB_VISUAL_CLASS_GRAY_SCALE = 1,
    293     XCB_VISUAL_CLASS_STATIC_COLOR = 2,
    294     XCB_VISUAL_CLASS_PSEUDO_COLOR = 3,
    295     XCB_VISUAL_CLASS_TRUE_COLOR = 4,
    296     XCB_VISUAL_CLASS_DIRECT_COLOR = 5
    297 } xcb_visual_class_t;
    298 
    299 /**
    300  * @brief xcb_visualtype_t
    301  **/
    302 typedef struct xcb_visualtype_t {
    303     xcb_visualid_t visual_id;
    304     uint8_t        _class;
    305     uint8_t        bits_per_rgb_value;
    306     uint16_t       colormap_entries;
    307     uint32_t       red_mask;
    308     uint32_t       green_mask;
    309     uint32_t       blue_mask;
    310     uint8_t        pad0[4];
    311 } xcb_visualtype_t;
    312 
    313 /**
    314  * @brief xcb_visualtype_iterator_t
    315  **/
    316 typedef struct xcb_visualtype_iterator_t {
    317     xcb_visualtype_t *data;
    318     int               rem;
    319     int               index;
    320 } xcb_visualtype_iterator_t;
    321 
    322 /**
    323  * @brief xcb_depth_t
    324  **/
    325 typedef struct xcb_depth_t {
    326     uint8_t  depth;
    327     uint8_t  pad0;
    328     uint16_t visuals_len;
    329     uint8_t  pad1[4];
    330 } xcb_depth_t;
    331 
    332 /**
    333  * @brief xcb_depth_iterator_t
    334  **/
    335 typedef struct xcb_depth_iterator_t {
    336     xcb_depth_t *data;
    337     int          rem;
    338     int          index;
    339 } xcb_depth_iterator_t;
    340 
    341 typedef enum xcb_event_mask_t {
    342     XCB_EVENT_MASK_NO_EVENT = 0,
    343     XCB_EVENT_MASK_KEY_PRESS = 1,
    344     XCB_EVENT_MASK_KEY_RELEASE = 2,
    345     XCB_EVENT_MASK_BUTTON_PRESS = 4,
    346     XCB_EVENT_MASK_BUTTON_RELEASE = 8,
    347     XCB_EVENT_MASK_ENTER_WINDOW = 16,
    348     XCB_EVENT_MASK_LEAVE_WINDOW = 32,
    349     XCB_EVENT_MASK_POINTER_MOTION = 64,
    350     XCB_EVENT_MASK_POINTER_MOTION_HINT = 128,
    351     XCB_EVENT_MASK_BUTTON_1_MOTION = 256,
    352     XCB_EVENT_MASK_BUTTON_2_MOTION = 512,
    353     XCB_EVENT_MASK_BUTTON_3_MOTION = 1024,
    354     XCB_EVENT_MASK_BUTTON_4_MOTION = 2048,
    355     XCB_EVENT_MASK_BUTTON_5_MOTION = 4096,
    356     XCB_EVENT_MASK_BUTTON_MOTION = 8192,
    357     XCB_EVENT_MASK_KEYMAP_STATE = 16384,
    358     XCB_EVENT_MASK_EXPOSURE = 32768,
    359     XCB_EVENT_MASK_VISIBILITY_CHANGE = 65536,
    360     XCB_EVENT_MASK_STRUCTURE_NOTIFY = 131072,
    361     XCB_EVENT_MASK_RESIZE_REDIRECT = 262144,
    362     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY = 524288,
    363     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT = 1048576,
    364     XCB_EVENT_MASK_FOCUS_CHANGE = 2097152,
    365     XCB_EVENT_MASK_PROPERTY_CHANGE = 4194304,
    366     XCB_EVENT_MASK_COLOR_MAP_CHANGE = 8388608,
    367     XCB_EVENT_MASK_OWNER_GRAB_BUTTON = 16777216
    368 } xcb_event_mask_t;
    369 
    370 typedef enum xcb_backing_store_t {
    371     XCB_BACKING_STORE_NOT_USEFUL = 0,
    372     XCB_BACKING_STORE_WHEN_MAPPED = 1,
    373     XCB_BACKING_STORE_ALWAYS = 2
    374 } xcb_backing_store_t;
    375 
    376 /**
    377  * @brief xcb_screen_t
    378  **/
    379 typedef struct xcb_screen_t {
    380     xcb_window_t   root;
    381     xcb_colormap_t default_colormap;
    382     uint32_t       white_pixel;
    383     uint32_t       black_pixel;
    384     uint32_t       current_input_masks;
    385     uint16_t       width_in_pixels;
    386     uint16_t       height_in_pixels;
    387     uint16_t       width_in_millimeters;
    388     uint16_t       height_in_millimeters;
    389     uint16_t       min_installed_maps;
    390     uint16_t       max_installed_maps;
    391     xcb_visualid_t root_visual;
    392     uint8_t        backing_stores;
    393     uint8_t        save_unders;
    394     uint8_t        root_depth;
    395     uint8_t        allowed_depths_len;
    396 } xcb_screen_t;
    397 
    398 /**
    399  * @brief xcb_screen_iterator_t
    400  **/
    401 typedef struct xcb_screen_iterator_t {
    402     xcb_screen_t *data;
    403     int           rem;
    404     int           index;
    405 } xcb_screen_iterator_t;
    406 
    407 /**
    408  * @brief xcb_setup_request_t
    409  **/
    410 typedef struct xcb_setup_request_t {
    411     uint8_t  byte_order;
    412     uint8_t  pad0;
    413     uint16_t protocol_major_version;
    414     uint16_t protocol_minor_version;
    415     uint16_t authorization_protocol_name_len;
    416     uint16_t authorization_protocol_data_len;
    417     uint8_t  pad1[2];
    418 } xcb_setup_request_t;
    419 
    420 /**
    421  * @brief xcb_setup_request_iterator_t
    422  **/
    423 typedef struct xcb_setup_request_iterator_t {
    424     xcb_setup_request_t *data;
    425     int                  rem;
    426     int                  index;
    427 } xcb_setup_request_iterator_t;
    428 
    429 /**
    430  * @brief xcb_setup_failed_t
    431  **/
    432 typedef struct xcb_setup_failed_t {
    433     uint8_t  status;
    434     uint8_t  reason_len;
    435     uint16_t protocol_major_version;
    436     uint16_t protocol_minor_version;
    437     uint16_t length;
    438 } xcb_setup_failed_t;
    439 
    440 /**
    441  * @brief xcb_setup_failed_iterator_t
    442  **/
    443 typedef struct xcb_setup_failed_iterator_t {
    444     xcb_setup_failed_t *data;
    445     int                 rem;
    446     int                 index;
    447 } xcb_setup_failed_iterator_t;
    448 
    449 /**
    450  * @brief xcb_setup_authenticate_t
    451  **/
    452 typedef struct xcb_setup_authenticate_t {
    453     uint8_t  status;
    454     uint8_t  pad0[5];
    455     uint16_t length;
    456 } xcb_setup_authenticate_t;
    457 
    458 /**
    459  * @brief xcb_setup_authenticate_iterator_t
    460  **/
    461 typedef struct xcb_setup_authenticate_iterator_t {
    462     xcb_setup_authenticate_t *data;
    463     int                       rem;
    464     int                       index;
    465 } xcb_setup_authenticate_iterator_t;
    466 
    467 typedef enum xcb_image_order_t {
    468     XCB_IMAGE_ORDER_LSB_FIRST = 0,
    469     XCB_IMAGE_ORDER_MSB_FIRST = 1
    470 } xcb_image_order_t;
    471 
    472 /**
    473  * @brief xcb_setup_t
    474  **/
    475 typedef struct xcb_setup_t {
    476     uint8_t       status;
    477     uint8_t       pad0;
    478     uint16_t      protocol_major_version;
    479     uint16_t      protocol_minor_version;
    480     uint16_t      length;
    481     uint32_t      release_number;
    482     uint32_t      resource_id_base;
    483     uint32_t      resource_id_mask;
    484     uint32_t      motion_buffer_size;
    485     uint16_t      vendor_len;
    486     uint16_t      maximum_request_length;
    487     uint8_t       roots_len;
    488     uint8_t       pixmap_formats_len;
    489     uint8_t       image_byte_order;
    490     uint8_t       bitmap_format_bit_order;
    491     uint8_t       bitmap_format_scanline_unit;
    492     uint8_t       bitmap_format_scanline_pad;
    493     xcb_keycode_t min_keycode;
    494     xcb_keycode_t max_keycode;
    495     uint8_t       pad1[4];
    496 } xcb_setup_t;
    497 
    498 /**
    499  * @brief xcb_setup_iterator_t
    500  **/
    501 typedef struct xcb_setup_iterator_t {
    502     xcb_setup_t *data;
    503     int          rem;
    504     int          index;
    505 } xcb_setup_iterator_t;
    506 
    507 typedef enum xcb_mod_mask_t {
    508     XCB_MOD_MASK_SHIFT = 1,
    509     XCB_MOD_MASK_LOCK = 2,
    510     XCB_MOD_MASK_CONTROL = 4,
    511     XCB_MOD_MASK_1 = 8,
    512     XCB_MOD_MASK_2 = 16,
    513     XCB_MOD_MASK_3 = 32,
    514     XCB_MOD_MASK_4 = 64,
    515     XCB_MOD_MASK_5 = 128,
    516     XCB_MOD_MASK_ANY = 32768
    517 } xcb_mod_mask_t;
    518 
    519 typedef enum xcb_key_but_mask_t {
    520     XCB_KEY_BUT_MASK_SHIFT = 1,
    521     XCB_KEY_BUT_MASK_LOCK = 2,
    522     XCB_KEY_BUT_MASK_CONTROL = 4,
    523     XCB_KEY_BUT_MASK_MOD_1 = 8,
    524     XCB_KEY_BUT_MASK_MOD_2 = 16,
    525     XCB_KEY_BUT_MASK_MOD_3 = 32,
    526     XCB_KEY_BUT_MASK_MOD_4 = 64,
    527     XCB_KEY_BUT_MASK_MOD_5 = 128,
    528     XCB_KEY_BUT_MASK_BUTTON_1 = 256,
    529     XCB_KEY_BUT_MASK_BUTTON_2 = 512,
    530     XCB_KEY_BUT_MASK_BUTTON_3 = 1024,
    531     XCB_KEY_BUT_MASK_BUTTON_4 = 2048,
    532     XCB_KEY_BUT_MASK_BUTTON_5 = 4096
    533 } xcb_key_but_mask_t;
    534 
    535 typedef enum xcb_window_enum_t {
    536     XCB_WINDOW_NONE = 0
    537 } xcb_window_enum_t;
    538 
    539 /** Opcode for xcb_key_press. */
    540 #define XCB_KEY_PRESS 2
    541 
    542 /**
    543  * @brief xcb_key_press_event_t
    544  **/
    545 typedef struct xcb_key_press_event_t {
    546     uint8_t         response_type;
    547     xcb_keycode_t   detail;
    548     uint16_t        sequence;
    549     xcb_timestamp_t time;
    550     xcb_window_t    root;
    551     xcb_window_t    event;
    552     xcb_window_t    child;
    553     int16_t         root_x;
    554     int16_t         root_y;
    555     int16_t         event_x;
    556     int16_t         event_y;
    557     uint16_t        state;
    558     uint8_t         same_screen;
    559     uint8_t         pad0;
    560 } xcb_key_press_event_t;
    561 
    562 /** Opcode for xcb_key_release. */
    563 #define XCB_KEY_RELEASE 3
    564 
    565 typedef xcb_key_press_event_t xcb_key_release_event_t;
    566 
    567 typedef enum xcb_button_mask_t {
    568     XCB_BUTTON_MASK_1 = 256,
    569     XCB_BUTTON_MASK_2 = 512,
    570     XCB_BUTTON_MASK_3 = 1024,
    571     XCB_BUTTON_MASK_4 = 2048,
    572     XCB_BUTTON_MASK_5 = 4096,
    573     XCB_BUTTON_MASK_ANY = 32768
    574 } xcb_button_mask_t;
    575 
    576 /** Opcode for xcb_button_press. */
    577 #define XCB_BUTTON_PRESS 4
    578 
    579 /**
    580  * @brief xcb_button_press_event_t
    581  **/
    582 typedef struct xcb_button_press_event_t {
    583     uint8_t         response_type;
    584     xcb_button_t    detail;
    585     uint16_t        sequence;
    586     xcb_timestamp_t time;
    587     xcb_window_t    root;
    588     xcb_window_t    event;
    589     xcb_window_t    child;
    590     int16_t         root_x;
    591     int16_t         root_y;
    592     int16_t         event_x;
    593     int16_t         event_y;
    594     uint16_t        state;
    595     uint8_t         same_screen;
    596     uint8_t         pad0;
    597 } xcb_button_press_event_t;
    598 
    599 /** Opcode for xcb_button_release. */
    600 #define XCB_BUTTON_RELEASE 5
    601 
    602 typedef xcb_button_press_event_t xcb_button_release_event_t;
    603 
    604 typedef enum xcb_motion_t {
    605     XCB_MOTION_NORMAL = 0,
    606     XCB_MOTION_HINT = 1
    607 } xcb_motion_t;
    608 
    609 /** Opcode for xcb_motion_notify. */
    610 #define XCB_MOTION_NOTIFY 6
    611 
    612 /**
    613  * @brief xcb_motion_notify_event_t
    614  **/
    615 typedef struct xcb_motion_notify_event_t {
    616     uint8_t         response_type;
    617     uint8_t         detail;
    618     uint16_t        sequence;
    619     xcb_timestamp_t time;
    620     xcb_window_t    root;
    621     xcb_window_t    event;
    622     xcb_window_t    child;
    623     int16_t         root_x;
    624     int16_t         root_y;
    625     int16_t         event_x;
    626     int16_t         event_y;
    627     uint16_t        state;
    628     uint8_t         same_screen;
    629     uint8_t         pad0;
    630 } xcb_motion_notify_event_t;
    631 
    632 typedef enum xcb_notify_detail_t {
    633     XCB_NOTIFY_DETAIL_ANCESTOR = 0,
    634     XCB_NOTIFY_DETAIL_VIRTUAL = 1,
    635     XCB_NOTIFY_DETAIL_INFERIOR = 2,
    636     XCB_NOTIFY_DETAIL_NONLINEAR = 3,
    637     XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4,
    638     XCB_NOTIFY_DETAIL_POINTER = 5,
    639     XCB_NOTIFY_DETAIL_POINTER_ROOT = 6,
    640     XCB_NOTIFY_DETAIL_NONE = 7
    641 } xcb_notify_detail_t;
    642 
    643 typedef enum xcb_notify_mode_t {
    644     XCB_NOTIFY_MODE_NORMAL = 0,
    645     XCB_NOTIFY_MODE_GRAB = 1,
    646     XCB_NOTIFY_MODE_UNGRAB = 2,
    647     XCB_NOTIFY_MODE_WHILE_GRABBED = 3
    648 } xcb_notify_mode_t;
    649 
    650 /** Opcode for xcb_enter_notify. */
    651 #define XCB_ENTER_NOTIFY 7
    652 
    653 /**
    654  * @brief xcb_enter_notify_event_t
    655  **/
    656 typedef struct xcb_enter_notify_event_t {
    657     uint8_t         response_type;
    658     uint8_t         detail;
    659     uint16_t        sequence;
    660     xcb_timestamp_t time;
    661     xcb_window_t    root;
    662     xcb_window_t    event;
    663     xcb_window_t    child;
    664     int16_t         root_x;
    665     int16_t         root_y;
    666     int16_t         event_x;
    667     int16_t         event_y;
    668     uint16_t        state;
    669     uint8_t         mode;
    670     uint8_t         same_screen_focus;
    671 } xcb_enter_notify_event_t;
    672 
    673 /** Opcode for xcb_leave_notify. */
    674 #define XCB_LEAVE_NOTIFY 8
    675 
    676 typedef xcb_enter_notify_event_t xcb_leave_notify_event_t;
    677 
    678 /** Opcode for xcb_focus_in. */
    679 #define XCB_FOCUS_IN 9
    680 
    681 /**
    682  * @brief xcb_focus_in_event_t
    683  **/
    684 typedef struct xcb_focus_in_event_t {
    685     uint8_t      response_type;
    686     uint8_t      detail;
    687     uint16_t     sequence;
    688     xcb_window_t event;
    689     uint8_t      mode;
    690     uint8_t      pad0[3];
    691 } xcb_focus_in_event_t;
    692 
    693 /** Opcode for xcb_focus_out. */
    694 #define XCB_FOCUS_OUT 10
    695 
    696 typedef xcb_focus_in_event_t xcb_focus_out_event_t;
    697 
    698 /** Opcode for xcb_keymap_notify. */
    699 #define XCB_KEYMAP_NOTIFY 11
    700 
    701 /**
    702  * @brief xcb_keymap_notify_event_t
    703  **/
    704 typedef struct xcb_keymap_notify_event_t {
    705     uint8_t response_type;
    706     uint8_t keys[31];
    707 } xcb_keymap_notify_event_t;
    708 
    709 /** Opcode for xcb_expose. */
    710 #define XCB_EXPOSE 12
    711 
    712 /**
    713  * @brief xcb_expose_event_t
    714  **/
    715 typedef struct xcb_expose_event_t {
    716     uint8_t      response_type;
    717     uint8_t      pad0;
    718     uint16_t     sequence;
    719     xcb_window_t window;
    720     uint16_t     x;
    721     uint16_t     y;
    722     uint16_t     width;
    723     uint16_t     height;
    724     uint16_t     count;
    725     uint8_t      pad1[2];
    726 } xcb_expose_event_t;
    727 
    728 /** Opcode for xcb_graphics_exposure. */
    729 #define XCB_GRAPHICS_EXPOSURE 13
    730 
    731 /**
    732  * @brief xcb_graphics_exposure_event_t
    733  **/
    734 typedef struct xcb_graphics_exposure_event_t {
    735     uint8_t        response_type;
    736     uint8_t        pad0;
    737     uint16_t       sequence;
    738     xcb_drawable_t drawable;
    739     uint16_t       x;
    740     uint16_t       y;
    741     uint16_t       width;
    742     uint16_t       height;
    743     uint16_t       minor_opcode;
    744     uint16_t       count;
    745     uint8_t        major_opcode;
    746     uint8_t        pad1[3];
    747 } xcb_graphics_exposure_event_t;
    748 
    749 /** Opcode for xcb_no_exposure. */
    750 #define XCB_NO_EXPOSURE 14
    751 
    752 /**
    753  * @brief xcb_no_exposure_event_t
    754  **/
    755 typedef struct xcb_no_exposure_event_t {
    756     uint8_t        response_type;
    757     uint8_t        pad0;
    758     uint16_t       sequence;
    759     xcb_drawable_t drawable;
    760     uint16_t       minor_opcode;
    761     uint8_t        major_opcode;
    762     uint8_t        pad1;
    763 } xcb_no_exposure_event_t;
    764 
    765 typedef enum xcb_visibility_t {
    766     XCB_VISIBILITY_UNOBSCURED = 0,
    767     XCB_VISIBILITY_PARTIALLY_OBSCURED = 1,
    768     XCB_VISIBILITY_FULLY_OBSCURED = 2
    769 } xcb_visibility_t;
    770 
    771 /** Opcode for xcb_visibility_notify. */
    772 #define XCB_VISIBILITY_NOTIFY 15
    773 
    774 /**
    775  * @brief xcb_visibility_notify_event_t
    776  **/
    777 typedef struct xcb_visibility_notify_event_t {
    778     uint8_t      response_type;
    779     uint8_t      pad0;
    780     uint16_t     sequence;
    781     xcb_window_t window;
    782     uint8_t      state;
    783     uint8_t      pad1[3];
    784 } xcb_visibility_notify_event_t;
    785 
    786 /** Opcode for xcb_create_notify. */
    787 #define XCB_CREATE_NOTIFY 16
    788 
    789 /**
    790  * @brief xcb_create_notify_event_t
    791  **/
    792 typedef struct xcb_create_notify_event_t {
    793     uint8_t      response_type;
    794     uint8_t      pad0;
    795     uint16_t     sequence;
    796     xcb_window_t parent;
    797     xcb_window_t window;
    798     int16_t      x;
    799     int16_t      y;
    800     uint16_t     width;
    801     uint16_t     height;
    802     uint16_t     border_width;
    803     uint8_t      override_redirect;
    804     uint8_t      pad1;
    805 } xcb_create_notify_event_t;
    806 
    807 /** Opcode for xcb_destroy_notify. */
    808 #define XCB_DESTROY_NOTIFY 17
    809 
    810 /**
    811  * @brief xcb_destroy_notify_event_t
    812  **/
    813 typedef struct xcb_destroy_notify_event_t {
    814     uint8_t      response_type;
    815     uint8_t      pad0;
    816     uint16_t     sequence;
    817     xcb_window_t event;
    818     xcb_window_t window;
    819 } xcb_destroy_notify_event_t;
    820 
    821 /** Opcode for xcb_unmap_notify. */
    822 #define XCB_UNMAP_NOTIFY 18
    823 
    824 /**
    825  * @brief xcb_unmap_notify_event_t
    826  **/
    827 typedef struct xcb_unmap_notify_event_t {
    828     uint8_t      response_type;
    829     uint8_t      pad0;
    830     uint16_t     sequence;
    831     xcb_window_t event;
    832     xcb_window_t window;
    833     uint8_t      from_configure;
    834     uint8_t      pad1[3];
    835 } xcb_unmap_notify_event_t;
    836 
    837 /** Opcode for xcb_map_notify. */
    838 #define XCB_MAP_NOTIFY 19
    839 
    840 /**
    841  * @brief xcb_map_notify_event_t
    842  **/
    843 typedef struct xcb_map_notify_event_t {
    844     uint8_t      response_type;
    845     uint8_t      pad0;
    846     uint16_t     sequence;
    847     xcb_window_t event;
    848     xcb_window_t window;
    849     uint8_t      override_redirect;
    850     uint8_t      pad1[3];
    851 } xcb_map_notify_event_t;
    852 
    853 /** Opcode for xcb_map_request. */
    854 #define XCB_MAP_REQUEST 20
    855 
    856 /**
    857  * @brief xcb_map_request_event_t
    858  **/
    859 typedef struct xcb_map_request_event_t {
    860     uint8_t      response_type;
    861     uint8_t      pad0;
    862     uint16_t     sequence;
    863     xcb_window_t parent;
    864     xcb_window_t window;
    865 } xcb_map_request_event_t;
    866 
    867 /** Opcode for xcb_reparent_notify. */
    868 #define XCB_REPARENT_NOTIFY 21
    869 
    870 /**
    871  * @brief xcb_reparent_notify_event_t
    872  **/
    873 typedef struct xcb_reparent_notify_event_t {
    874     uint8_t      response_type;
    875     uint8_t      pad0;
    876     uint16_t     sequence;
    877     xcb_window_t event;
    878     xcb_window_t window;
    879     xcb_window_t parent;
    880     int16_t      x;
    881     int16_t      y;
    882     uint8_t      override_redirect;
    883     uint8_t      pad1[3];
    884 } xcb_reparent_notify_event_t;
    885 
    886 /** Opcode for xcb_configure_notify. */
    887 #define XCB_CONFIGURE_NOTIFY 22
    888 
    889 /**
    890  * @brief xcb_configure_notify_event_t
    891  **/
    892 typedef struct xcb_configure_notify_event_t {
    893     uint8_t      response_type;
    894     uint8_t      pad0;
    895     uint16_t     sequence;
    896     xcb_window_t event;
    897     xcb_window_t window;
    898     xcb_window_t above_sibling;
    899     int16_t      x;
    900     int16_t      y;
    901     uint16_t     width;
    902     uint16_t     height;
    903     uint16_t     border_width;
    904     uint8_t      override_redirect;
    905     uint8_t      pad1;
    906 } xcb_configure_notify_event_t;
    907 
    908 /** Opcode for xcb_configure_request. */
    909 #define XCB_CONFIGURE_REQUEST 23
    910 
    911 /**
    912  * @brief xcb_configure_request_event_t
    913  **/
    914 typedef struct xcb_configure_request_event_t {
    915     uint8_t      response_type;
    916     uint8_t      stack_mode;
    917     uint16_t     sequence;
    918     xcb_window_t parent;
    919     xcb_window_t window;
    920     xcb_window_t sibling;
    921     int16_t      x;
    922     int16_t      y;
    923     uint16_t     width;
    924     uint16_t     height;
    925     uint16_t     border_width;
    926     uint16_t     value_mask;
    927 } xcb_configure_request_event_t;
    928 
    929 /** Opcode for xcb_gravity_notify. */
    930 #define XCB_GRAVITY_NOTIFY 24
    931 
    932 /**
    933  * @brief xcb_gravity_notify_event_t
    934  **/
    935 typedef struct xcb_gravity_notify_event_t {
    936     uint8_t      response_type;
    937     uint8_t      pad0;
    938     uint16_t     sequence;
    939     xcb_window_t event;
    940     xcb_window_t window;
    941     int16_t      x;
    942     int16_t      y;
    943 } xcb_gravity_notify_event_t;
    944 
    945 /** Opcode for xcb_resize_request. */
    946 #define XCB_RESIZE_REQUEST 25
    947 
    948 /**
    949  * @brief xcb_resize_request_event_t
    950  **/
    951 typedef struct xcb_resize_request_event_t {
    952     uint8_t      response_type;
    953     uint8_t      pad0;
    954     uint16_t     sequence;
    955     xcb_window_t window;
    956     uint16_t     width;
    957     uint16_t     height;
    958 } xcb_resize_request_event_t;
    959 
    960 typedef enum xcb_place_t {
    961     XCB_PLACE_ON_TOP = 0,
    962 /**< The window is now on top of all siblings. */
    963 
    964     XCB_PLACE_ON_BOTTOM = 1
    965 /**< The window is now below all siblings. */
    966 
    967 } xcb_place_t;
    968 
    969 /** Opcode for xcb_circulate_notify. */
    970 #define XCB_CIRCULATE_NOTIFY 26
    971 
    972 /**
    973  * @brief xcb_circulate_notify_event_t
    974  **/
    975 typedef struct xcb_circulate_notify_event_t {
    976     uint8_t      response_type;
    977     uint8_t      pad0;
    978     uint16_t     sequence;
    979     xcb_window_t event;
    980     xcb_window_t window;
    981     uint8_t      pad1[4];
    982     uint8_t      place;
    983     uint8_t      pad2[3];
    984 } xcb_circulate_notify_event_t;
    985 
    986 /** Opcode for xcb_circulate_request. */
    987 #define XCB_CIRCULATE_REQUEST 27
    988 
    989 typedef xcb_circulate_notify_event_t xcb_circulate_request_event_t;
    990 
    991 typedef enum xcb_property_t {
    992     XCB_PROPERTY_NEW_VALUE = 0,
    993     XCB_PROPERTY_DELETE = 1
    994 } xcb_property_t;
    995 
    996 /** Opcode for xcb_property_notify. */
    997 #define XCB_PROPERTY_NOTIFY 28
    998 
    999 /**
   1000  * @brief xcb_property_notify_event_t
   1001  **/
   1002 typedef struct xcb_property_notify_event_t {
   1003     uint8_t         response_type;
   1004     uint8_t         pad0;
   1005     uint16_t        sequence;
   1006     xcb_window_t    window;
   1007     xcb_atom_t      atom;
   1008     xcb_timestamp_t time;
   1009     uint8_t         state;
   1010     uint8_t         pad1[3];
   1011 } xcb_property_notify_event_t;
   1012 
   1013 /** Opcode for xcb_selection_clear. */
   1014 #define XCB_SELECTION_CLEAR 29
   1015 
   1016 /**
   1017  * @brief xcb_selection_clear_event_t
   1018  **/
   1019 typedef struct xcb_selection_clear_event_t {
   1020     uint8_t         response_type;
   1021     uint8_t         pad0;
   1022     uint16_t        sequence;
   1023     xcb_timestamp_t time;
   1024     xcb_window_t    owner;
   1025     xcb_atom_t      selection;
   1026 } xcb_selection_clear_event_t;
   1027 
   1028 typedef enum xcb_time_t {
   1029     XCB_TIME_CURRENT_TIME = 0
   1030 } xcb_time_t;
   1031 
   1032 typedef enum xcb_atom_enum_t {
   1033     XCB_ATOM_NONE = 0,
   1034     XCB_ATOM_ANY = 0,
   1035     XCB_ATOM_PRIMARY = 1,
   1036     XCB_ATOM_SECONDARY = 2,
   1037     XCB_ATOM_ARC = 3,
   1038     XCB_ATOM_ATOM = 4,
   1039     XCB_ATOM_BITMAP = 5,
   1040     XCB_ATOM_CARDINAL = 6,
   1041     XCB_ATOM_COLORMAP = 7,
   1042     XCB_ATOM_CURSOR = 8,
   1043     XCB_ATOM_CUT_BUFFER0 = 9,
   1044     XCB_ATOM_CUT_BUFFER1 = 10,
   1045     XCB_ATOM_CUT_BUFFER2 = 11,
   1046     XCB_ATOM_CUT_BUFFER3 = 12,
   1047     XCB_ATOM_CUT_BUFFER4 = 13,
   1048     XCB_ATOM_CUT_BUFFER5 = 14,
   1049     XCB_ATOM_CUT_BUFFER6 = 15,
   1050     XCB_ATOM_CUT_BUFFER7 = 16,
   1051     XCB_ATOM_DRAWABLE = 17,
   1052     XCB_ATOM_FONT = 18,
   1053     XCB_ATOM_INTEGER = 19,
   1054     XCB_ATOM_PIXMAP = 20,
   1055     XCB_ATOM_POINT = 21,
   1056     XCB_ATOM_RECTANGLE = 22,
   1057     XCB_ATOM_RESOURCE_MANAGER = 23,
   1058     XCB_ATOM_RGB_COLOR_MAP = 24,
   1059     XCB_ATOM_RGB_BEST_MAP = 25,
   1060     XCB_ATOM_RGB_BLUE_MAP = 26,
   1061     XCB_ATOM_RGB_DEFAULT_MAP = 27,
   1062     XCB_ATOM_RGB_GRAY_MAP = 28,
   1063     XCB_ATOM_RGB_GREEN_MAP = 29,
   1064     XCB_ATOM_RGB_RED_MAP = 30,
   1065     XCB_ATOM_STRING = 31,
   1066     XCB_ATOM_VISUALID = 32,
   1067     XCB_ATOM_WINDOW = 33,
   1068     XCB_ATOM_WM_COMMAND = 34,
   1069     XCB_ATOM_WM_HINTS = 35,
   1070     XCB_ATOM_WM_CLIENT_MACHINE = 36,
   1071     XCB_ATOM_WM_ICON_NAME = 37,
   1072     XCB_ATOM_WM_ICON_SIZE = 38,
   1073     XCB_ATOM_WM_NAME = 39,
   1074     XCB_ATOM_WM_NORMAL_HINTS = 40,
   1075     XCB_ATOM_WM_SIZE_HINTS = 41,
   1076     XCB_ATOM_WM_ZOOM_HINTS = 42,
   1077     XCB_ATOM_MIN_SPACE = 43,
   1078     XCB_ATOM_NORM_SPACE = 44,
   1079     XCB_ATOM_MAX_SPACE = 45,
   1080     XCB_ATOM_END_SPACE = 46,
   1081     XCB_ATOM_SUPERSCRIPT_X = 47,
   1082     XCB_ATOM_SUPERSCRIPT_Y = 48,
   1083     XCB_ATOM_SUBSCRIPT_X = 49,
   1084     XCB_ATOM_SUBSCRIPT_Y = 50,
   1085     XCB_ATOM_UNDERLINE_POSITION = 51,
   1086     XCB_ATOM_UNDERLINE_THICKNESS = 52,
   1087     XCB_ATOM_STRIKEOUT_ASCENT = 53,
   1088     XCB_ATOM_STRIKEOUT_DESCENT = 54,
   1089     XCB_ATOM_ITALIC_ANGLE = 55,
   1090     XCB_ATOM_X_HEIGHT = 56,
   1091     XCB_ATOM_QUAD_WIDTH = 57,
   1092     XCB_ATOM_WEIGHT = 58,
   1093     XCB_ATOM_POINT_SIZE = 59,
   1094     XCB_ATOM_RESOLUTION = 60,
   1095     XCB_ATOM_COPYRIGHT = 61,
   1096     XCB_ATOM_NOTICE = 62,
   1097     XCB_ATOM_FONT_NAME = 63,
   1098     XCB_ATOM_FAMILY_NAME = 64,
   1099     XCB_ATOM_FULL_NAME = 65,
   1100     XCB_ATOM_CAP_HEIGHT = 66,
   1101     XCB_ATOM_WM_CLASS = 67,
   1102     XCB_ATOM_WM_TRANSIENT_FOR = 68
   1103 } xcb_atom_enum_t;
   1104 
   1105 /** Opcode for xcb_selection_request. */
   1106 #define XCB_SELECTION_REQUEST 30
   1107 
   1108 /**
   1109  * @brief xcb_selection_request_event_t
   1110  **/
   1111 typedef struct xcb_selection_request_event_t {
   1112     uint8_t         response_type;
   1113     uint8_t         pad0;
   1114     uint16_t        sequence;
   1115     xcb_timestamp_t time;
   1116     xcb_window_t    owner;
   1117     xcb_window_t    requestor;
   1118     xcb_atom_t      selection;
   1119     xcb_atom_t      target;
   1120     xcb_atom_t      property;
   1121 } xcb_selection_request_event_t;
   1122 
   1123 /** Opcode for xcb_selection_notify. */
   1124 #define XCB_SELECTION_NOTIFY 31
   1125 
   1126 /**
   1127  * @brief xcb_selection_notify_event_t
   1128  **/
   1129 typedef struct xcb_selection_notify_event_t {
   1130     uint8_t         response_type;
   1131     uint8_t         pad0;
   1132     uint16_t        sequence;
   1133     xcb_timestamp_t time;
   1134     xcb_window_t    requestor;
   1135     xcb_atom_t      selection;
   1136     xcb_atom_t      target;
   1137     xcb_atom_t      property;
   1138 } xcb_selection_notify_event_t;
   1139 
   1140 typedef enum xcb_colormap_state_t {
   1141     XCB_COLORMAP_STATE_UNINSTALLED = 0,
   1142 /**< The colormap was uninstalled. */
   1143 
   1144     XCB_COLORMAP_STATE_INSTALLED = 1
   1145 /**< The colormap was installed. */
   1146 
   1147 } xcb_colormap_state_t;
   1148 
   1149 typedef enum xcb_colormap_enum_t {
   1150     XCB_COLORMAP_NONE = 0
   1151 } xcb_colormap_enum_t;
   1152 
   1153 /** Opcode for xcb_colormap_notify. */
   1154 #define XCB_COLORMAP_NOTIFY 32
   1155 
   1156 /**
   1157  * @brief xcb_colormap_notify_event_t
   1158  **/
   1159 typedef struct xcb_colormap_notify_event_t {
   1160     uint8_t        response_type;
   1161     uint8_t        pad0;
   1162     uint16_t       sequence;
   1163     xcb_window_t   window;
   1164     xcb_colormap_t colormap;
   1165     uint8_t        _new;
   1166     uint8_t        state;
   1167     uint8_t        pad1[2];
   1168 } xcb_colormap_notify_event_t;
   1169 
   1170 /**
   1171  * @brief xcb_client_message_data_t
   1172  **/
   1173 typedef union xcb_client_message_data_t {
   1174     uint8_t  data8[20];
   1175     uint16_t data16[10];
   1176     uint32_t data32[5];
   1177 } xcb_client_message_data_t;
   1178 
   1179 /**
   1180  * @brief xcb_client_message_data_iterator_t
   1181  **/
   1182 typedef struct xcb_client_message_data_iterator_t {
   1183     xcb_client_message_data_t *data;
   1184     int                        rem;
   1185     int                        index;
   1186 } xcb_client_message_data_iterator_t;
   1187 
   1188 /** Opcode for xcb_client_message. */
   1189 #define XCB_CLIENT_MESSAGE 33
   1190 
   1191 /**
   1192  * @brief xcb_client_message_event_t
   1193  **/
   1194 typedef struct xcb_client_message_event_t {
   1195     uint8_t                   response_type;
   1196     uint8_t                   format;
   1197     uint16_t                  sequence;
   1198     xcb_window_t              window;
   1199     xcb_atom_t                type;
   1200     xcb_client_message_data_t data;
   1201 } xcb_client_message_event_t;
   1202 
   1203 typedef enum xcb_mapping_t {
   1204     XCB_MAPPING_MODIFIER = 0,
   1205     XCB_MAPPING_KEYBOARD = 1,
   1206     XCB_MAPPING_POINTER = 2
   1207 } xcb_mapping_t;
   1208 
   1209 /** Opcode for xcb_mapping_notify. */
   1210 #define XCB_MAPPING_NOTIFY 34
   1211 
   1212 /**
   1213  * @brief xcb_mapping_notify_event_t
   1214  **/
   1215 typedef struct xcb_mapping_notify_event_t {
   1216     uint8_t       response_type;
   1217     uint8_t       pad0;
   1218     uint16_t      sequence;
   1219     uint8_t       request;
   1220     xcb_keycode_t first_keycode;
   1221     uint8_t       count;
   1222     uint8_t       pad1;
   1223 } xcb_mapping_notify_event_t;
   1224 
   1225 /** Opcode for xcb_ge_generic. */
   1226 #define XCB_GE_GENERIC 35
   1227 
   1228 /**
   1229  * @brief xcb_ge_generic_event_t
   1230  **/
   1231 typedef struct xcb_ge_generic_event_t {
   1232     uint8_t  response_type;
   1233     uint8_t  extension;
   1234     uint16_t sequence;
   1235     uint32_t length;
   1236     uint16_t event_type;
   1237     uint8_t  pad0[22];
   1238     uint32_t full_sequence;
   1239 } xcb_ge_generic_event_t;
   1240 
   1241 /** Opcode for xcb_request. */
   1242 #define XCB_REQUEST 1
   1243 
   1244 /**
   1245  * @brief xcb_request_error_t
   1246  **/
   1247 typedef struct xcb_request_error_t {
   1248     uint8_t  response_type;
   1249     uint8_t  error_code;
   1250     uint16_t sequence;
   1251     uint32_t bad_value;
   1252     uint16_t minor_opcode;
   1253     uint8_t  major_opcode;
   1254     uint8_t  pad0;
   1255 } xcb_request_error_t;
   1256 
   1257 /** Opcode for xcb_value. */
   1258 #define XCB_VALUE 2
   1259 
   1260 /**
   1261  * @brief xcb_value_error_t
   1262  **/
   1263 typedef struct xcb_value_error_t {
   1264     uint8_t  response_type;
   1265     uint8_t  error_code;
   1266     uint16_t sequence;
   1267     uint32_t bad_value;
   1268     uint16_t minor_opcode;
   1269     uint8_t  major_opcode;
   1270     uint8_t  pad0;
   1271 } xcb_value_error_t;
   1272 
   1273 /** Opcode for xcb_window. */
   1274 #define XCB_WINDOW 3
   1275 
   1276 typedef xcb_value_error_t xcb_window_error_t;
   1277 
   1278 /** Opcode for xcb_pixmap. */
   1279 #define XCB_PIXMAP 4
   1280 
   1281 typedef xcb_value_error_t xcb_pixmap_error_t;
   1282 
   1283 /** Opcode for xcb_atom. */
   1284 #define XCB_ATOM 5
   1285 
   1286 typedef xcb_value_error_t xcb_atom_error_t;
   1287 
   1288 /** Opcode for xcb_cursor. */
   1289 #define XCB_CURSOR 6
   1290 
   1291 typedef xcb_value_error_t xcb_cursor_error_t;
   1292 
   1293 /** Opcode for xcb_font. */
   1294 #define XCB_FONT 7
   1295 
   1296 typedef xcb_value_error_t xcb_font_error_t;
   1297 
   1298 /** Opcode for xcb_match. */
   1299 #define XCB_MATCH 8
   1300 
   1301 typedef xcb_request_error_t xcb_match_error_t;
   1302 
   1303 /** Opcode for xcb_drawable. */
   1304 #define XCB_DRAWABLE 9
   1305 
   1306 typedef xcb_value_error_t xcb_drawable_error_t;
   1307 
   1308 /** Opcode for xcb_access. */
   1309 #define XCB_ACCESS 10
   1310 
   1311 typedef xcb_request_error_t xcb_access_error_t;
   1312 
   1313 /** Opcode for xcb_alloc. */
   1314 #define XCB_ALLOC 11
   1315 
   1316 typedef xcb_request_error_t xcb_alloc_error_t;
   1317 
   1318 /** Opcode for xcb_colormap. */
   1319 #define XCB_COLORMAP 12
   1320 
   1321 typedef xcb_value_error_t xcb_colormap_error_t;
   1322 
   1323 /** Opcode for xcb_g_context. */
   1324 #define XCB_G_CONTEXT 13
   1325 
   1326 typedef xcb_value_error_t xcb_g_context_error_t;
   1327 
   1328 /** Opcode for xcb_id_choice. */
   1329 #define XCB_ID_CHOICE 14
   1330 
   1331 typedef xcb_value_error_t xcb_id_choice_error_t;
   1332 
   1333 /** Opcode for xcb_name. */
   1334 #define XCB_NAME 15
   1335 
   1336 typedef xcb_request_error_t xcb_name_error_t;
   1337 
   1338 /** Opcode for xcb_length. */
   1339 #define XCB_LENGTH 16
   1340 
   1341 typedef xcb_request_error_t xcb_length_error_t;
   1342 
   1343 /** Opcode for xcb_implementation. */
   1344 #define XCB_IMPLEMENTATION 17
   1345 
   1346 typedef xcb_request_error_t xcb_implementation_error_t;
   1347 
   1348 typedef enum xcb_window_class_t {
   1349     XCB_WINDOW_CLASS_COPY_FROM_PARENT = 0,
   1350     XCB_WINDOW_CLASS_INPUT_OUTPUT = 1,
   1351     XCB_WINDOW_CLASS_INPUT_ONLY = 2
   1352 } xcb_window_class_t;
   1353 
   1354 typedef enum xcb_cw_t {
   1355     XCB_CW_BACK_PIXMAP = 1,
   1356 /**< Overrides the default background-pixmap. The background pixmap and window must
   1357 have the same root and same depth. Any size pixmap can be used, although some
   1358 sizes may be faster than others.
   1359 
   1360 If `XCB_BACK_PIXMAP_NONE` is specified, the window has no defined background.
   1361 The server may fill the contents with the previous screen contents or with
   1362 contents of its own choosing.
   1363 
   1364 If `XCB_BACK_PIXMAP_PARENT_RELATIVE` is specified, the parent's background is
   1365 used, but the window must have the same depth as the parent (or a Match error
   1366 results).   The parent's background is tracked, and the current version is
   1367 used each time the window background is required. */
   1368 
   1369     XCB_CW_BACK_PIXEL = 2,
   1370 /**< Overrides `BackPixmap`. A pixmap of undefined size filled with the specified
   1371 background pixel is used for the background. Range-checking is not performed,
   1372 the background pixel is truncated to the appropriate number of bits. */
   1373 
   1374     XCB_CW_BORDER_PIXMAP = 4,
   1375 /**< Overrides the default border-pixmap. The border pixmap and window must have the
   1376 same root and the same depth. Any size pixmap can be used, although some sizes
   1377 may be faster than others.
   1378 
   1379 The special value `XCB_COPY_FROM_PARENT` means the parent's border pixmap is
   1380 copied (subsequent changes to the parent's border attribute do not affect the
   1381 child), but the window must have the same depth as the parent. */
   1382 
   1383     XCB_CW_BORDER_PIXEL = 8,
   1384 /**< Overrides `BorderPixmap`. A pixmap of undefined size filled with the specified
   1385 border pixel is used for the border. Range checking is not performed on the
   1386 border-pixel value, it is truncated to the appropriate number of bits. */
   1387 
   1388     XCB_CW_BIT_GRAVITY = 16,
   1389 /**< Defines which region of the window should be retained if the window is resized. */
   1390 
   1391     XCB_CW_WIN_GRAVITY = 32,
   1392 /**< Defines how the window should be repositioned if the parent is resized (see
   1393 `ConfigureWindow`). */
   1394 
   1395     XCB_CW_BACKING_STORE = 64,
   1396 /**< A backing-store of `WhenMapped` advises the server that maintaining contents of
   1397 obscured regions when the window is mapped would be beneficial. A backing-store
   1398 of `Always` advises the server that maintaining contents even when the window
   1399 is unmapped would be beneficial. In this case, the server may generate an
   1400 exposure event when the window is created. A value of `NotUseful` advises the
   1401 server that maintaining contents is unnecessary, although a server may still
   1402 choose to maintain contents while the window is mapped. Note that if the server
   1403 maintains contents, then the server should maintain complete contents not just
   1404 the region within the parent boundaries, even if the window is larger than its
   1405 parent. While the server maintains contents, exposure events will not normally
   1406 be generated, but the server may stop maintaining contents at any time. */
   1407 
   1408     XCB_CW_BACKING_PLANES = 128,
   1409 /**< The backing-planes indicates (with bits set to 1) which bit planes of the
   1410 window hold dynamic data that must be preserved in backing-stores and during
   1411 save-unders. */
   1412 
   1413     XCB_CW_BACKING_PIXEL = 256,
   1414 /**< The backing-pixel specifies what value to use in planes not covered by
   1415 backing-planes. The server is free to save only the specified bit planes in the
   1416 backing-store or save-under and regenerate the remaining planes with the
   1417 specified pixel value. Any bits beyond the specified depth of the window in
   1418 these values are simply ignored. */
   1419 
   1420     XCB_CW_OVERRIDE_REDIRECT = 512,
   1421 /**< The override-redirect specifies whether map and configure requests on this
   1422 window should override a SubstructureRedirect on the parent, typically to
   1423 inform a window manager not to tamper with the window. */
   1424 
   1425     XCB_CW_SAVE_UNDER = 1024,
   1426 /**< If 1, the server is advised that when this window is mapped, saving the
   1427 contents of windows it obscures would be beneficial. */
   1428 
   1429     XCB_CW_EVENT_MASK = 2048,
   1430 /**< The event-mask defines which events the client is interested in for this window
   1431 (or for some event types, inferiors of the window). */
   1432 
   1433     XCB_CW_DONT_PROPAGATE = 4096,
   1434 /**< The do-not-propagate-mask defines which events should not be propagated to
   1435 ancestor windows when no client has the event type selected in this window. */
   1436 
   1437     XCB_CW_COLORMAP = 8192,
   1438 /**< The colormap specifies the colormap that best reflects the true colors of the window. Servers
   1439 capable of supporting multiple hardware colormaps may use this information, and window man-
   1440 agers may use it for InstallColormap requests. The colormap must have the same visual type
   1441 and root as the window (or a Match error results). If CopyFromParent is specified, the parent's
   1442 colormap is copied (subsequent changes to the parent's colormap attribute do not affect the child).
   1443 However, the window must have the same visual type as the parent (or a Match error results),
   1444 and the parent must not have a colormap of None (or a Match error results). For an explanation
   1445 of None, see FreeColormap request. The colormap is copied by sharing the colormap object
   1446 between the child and the parent, not by making a complete copy of the colormap contents. */
   1447 
   1448     XCB_CW_CURSOR = 16384
   1449 /**< If a cursor is specified, it will be used whenever the pointer is in the window. If None is speci-
   1450 fied, the parent's cursor will be used when the pointer is in the window, and any change in the
   1451 parent's cursor will cause an immediate change in the displayed cursor. */
   1452 
   1453 } xcb_cw_t;
   1454 
   1455 typedef enum xcb_back_pixmap_t {
   1456     XCB_BACK_PIXMAP_NONE = 0,
   1457     XCB_BACK_PIXMAP_PARENT_RELATIVE = 1
   1458 } xcb_back_pixmap_t;
   1459 
   1460 typedef enum xcb_gravity_t {
   1461     XCB_GRAVITY_BIT_FORGET = 0,
   1462     XCB_GRAVITY_WIN_UNMAP = 0,
   1463     XCB_GRAVITY_NORTH_WEST = 1,
   1464     XCB_GRAVITY_NORTH = 2,
   1465     XCB_GRAVITY_NORTH_EAST = 3,
   1466     XCB_GRAVITY_WEST = 4,
   1467     XCB_GRAVITY_CENTER = 5,
   1468     XCB_GRAVITY_EAST = 6,
   1469     XCB_GRAVITY_SOUTH_WEST = 7,
   1470     XCB_GRAVITY_SOUTH = 8,
   1471     XCB_GRAVITY_SOUTH_EAST = 9,
   1472     XCB_GRAVITY_STATIC = 10
   1473 } xcb_gravity_t;
   1474 
   1475 /**
   1476  * @brief xcb_create_window_value_list_t
   1477  **/
   1478 typedef struct xcb_create_window_value_list_t {
   1479     xcb_pixmap_t   background_pixmap;
   1480     uint32_t       background_pixel;
   1481     xcb_pixmap_t   border_pixmap;
   1482     uint32_t       border_pixel;
   1483     uint32_t       bit_gravity;
   1484     uint32_t       win_gravity;
   1485     uint32_t       backing_store;
   1486     uint32_t       backing_planes;
   1487     uint32_t       backing_pixel;
   1488     xcb_bool32_t   override_redirect;
   1489     xcb_bool32_t   save_under;
   1490     uint32_t       event_mask;
   1491     uint32_t       do_not_propogate_mask;
   1492     xcb_colormap_t colormap;
   1493     xcb_cursor_t   cursor;
   1494 } xcb_create_window_value_list_t;
   1495 
   1496 /** Opcode for xcb_create_window. */
   1497 #define XCB_CREATE_WINDOW 1
   1498 
   1499 /**
   1500  * @brief xcb_create_window_request_t
   1501  **/
   1502 typedef struct xcb_create_window_request_t {
   1503     uint8_t        major_opcode;
   1504     uint8_t        depth;
   1505     uint16_t       length;
   1506     xcb_window_t   wid;
   1507     xcb_window_t   parent;
   1508     int16_t        x;
   1509     int16_t        y;
   1510     uint16_t       width;
   1511     uint16_t       height;
   1512     uint16_t       border_width;
   1513     uint16_t       _class;
   1514     xcb_visualid_t visual;
   1515     uint32_t       value_mask;
   1516 } xcb_create_window_request_t;
   1517 
   1518 /**
   1519  * @brief xcb_change_window_attributes_value_list_t
   1520  **/
   1521 typedef struct xcb_change_window_attributes_value_list_t {
   1522     xcb_pixmap_t   background_pixmap;
   1523     uint32_t       background_pixel;
   1524     xcb_pixmap_t   border_pixmap;
   1525     uint32_t       border_pixel;
   1526     uint32_t       bit_gravity;
   1527     uint32_t       win_gravity;
   1528     uint32_t       backing_store;
   1529     uint32_t       backing_planes;
   1530     uint32_t       backing_pixel;
   1531     xcb_bool32_t   override_redirect;
   1532     xcb_bool32_t   save_under;
   1533     uint32_t       event_mask;
   1534     uint32_t       do_not_propogate_mask;
   1535     xcb_colormap_t colormap;
   1536     xcb_cursor_t   cursor;
   1537 } xcb_change_window_attributes_value_list_t;
   1538 
   1539 /** Opcode for xcb_change_window_attributes. */
   1540 #define XCB_CHANGE_WINDOW_ATTRIBUTES 2
   1541 
   1542 /**
   1543  * @brief xcb_change_window_attributes_request_t
   1544  **/
   1545 typedef struct xcb_change_window_attributes_request_t {
   1546     uint8_t      major_opcode;
   1547     uint8_t      pad0;
   1548     uint16_t     length;
   1549     xcb_window_t window;
   1550     uint32_t     value_mask;
   1551 } xcb_change_window_attributes_request_t;
   1552 
   1553 typedef enum xcb_map_state_t {
   1554     XCB_MAP_STATE_UNMAPPED = 0,
   1555     XCB_MAP_STATE_UNVIEWABLE = 1,
   1556     XCB_MAP_STATE_VIEWABLE = 2
   1557 } xcb_map_state_t;
   1558 
   1559 /**
   1560  * @brief xcb_get_window_attributes_cookie_t
   1561  **/
   1562 typedef struct xcb_get_window_attributes_cookie_t {
   1563     unsigned int sequence;
   1564 } xcb_get_window_attributes_cookie_t;
   1565 
   1566 /** Opcode for xcb_get_window_attributes. */
   1567 #define XCB_GET_WINDOW_ATTRIBUTES 3
   1568 
   1569 /**
   1570  * @brief xcb_get_window_attributes_request_t
   1571  **/
   1572 typedef struct xcb_get_window_attributes_request_t {
   1573     uint8_t      major_opcode;
   1574     uint8_t      pad0;
   1575     uint16_t     length;
   1576     xcb_window_t window;
   1577 } xcb_get_window_attributes_request_t;
   1578 
   1579 /**
   1580  * @brief xcb_get_window_attributes_reply_t
   1581  **/
   1582 typedef struct xcb_get_window_attributes_reply_t {
   1583     uint8_t        response_type;
   1584     uint8_t        backing_store;
   1585     uint16_t       sequence;
   1586     uint32_t       length;
   1587     xcb_visualid_t visual;
   1588     uint16_t       _class;
   1589     uint8_t        bit_gravity;
   1590     uint8_t        win_gravity;
   1591     uint32_t       backing_planes;
   1592     uint32_t       backing_pixel;
   1593     uint8_t        save_under;
   1594     uint8_t        map_is_installed;
   1595     uint8_t        map_state;
   1596     uint8_t        override_redirect;
   1597     xcb_colormap_t colormap;
   1598     uint32_t       all_event_masks;
   1599     uint32_t       your_event_mask;
   1600     uint16_t       do_not_propagate_mask;
   1601     uint8_t        pad0[2];
   1602 } xcb_get_window_attributes_reply_t;
   1603 
   1604 /** Opcode for xcb_destroy_window. */
   1605 #define XCB_DESTROY_WINDOW 4
   1606 
   1607 /**
   1608  * @brief xcb_destroy_window_request_t
   1609  **/
   1610 typedef struct xcb_destroy_window_request_t {
   1611     uint8_t      major_opcode;
   1612     uint8_t      pad0;
   1613     uint16_t     length;
   1614     xcb_window_t window;
   1615 } xcb_destroy_window_request_t;
   1616 
   1617 /** Opcode for xcb_destroy_subwindows. */
   1618 #define XCB_DESTROY_SUBWINDOWS 5
   1619 
   1620 /**
   1621  * @brief xcb_destroy_subwindows_request_t
   1622  **/
   1623 typedef struct xcb_destroy_subwindows_request_t {
   1624     uint8_t      major_opcode;
   1625     uint8_t      pad0;
   1626     uint16_t     length;
   1627     xcb_window_t window;
   1628 } xcb_destroy_subwindows_request_t;
   1629 
   1630 typedef enum xcb_set_mode_t {
   1631     XCB_SET_MODE_INSERT = 0,
   1632     XCB_SET_MODE_DELETE = 1
   1633 } xcb_set_mode_t;
   1634 
   1635 /** Opcode for xcb_change_save_set. */
   1636 #define XCB_CHANGE_SAVE_SET 6
   1637 
   1638 /**
   1639  * @brief xcb_change_save_set_request_t
   1640  **/
   1641 typedef struct xcb_change_save_set_request_t {
   1642     uint8_t      major_opcode;
   1643     uint8_t      mode;
   1644     uint16_t     length;
   1645     xcb_window_t window;
   1646 } xcb_change_save_set_request_t;
   1647 
   1648 /** Opcode for xcb_reparent_window. */
   1649 #define XCB_REPARENT_WINDOW 7
   1650 
   1651 /**
   1652  * @brief xcb_reparent_window_request_t
   1653  **/
   1654 typedef struct xcb_reparent_window_request_t {
   1655     uint8_t      major_opcode;
   1656     uint8_t      pad0;
   1657     uint16_t     length;
   1658     xcb_window_t window;
   1659     xcb_window_t parent;
   1660     int16_t      x;
   1661     int16_t      y;
   1662 } xcb_reparent_window_request_t;
   1663 
   1664 /** Opcode for xcb_map_window. */
   1665 #define XCB_MAP_WINDOW 8
   1666 
   1667 /**
   1668  * @brief xcb_map_window_request_t
   1669  **/
   1670 typedef struct xcb_map_window_request_t {
   1671     uint8_t      major_opcode;
   1672     uint8_t      pad0;
   1673     uint16_t     length;
   1674     xcb_window_t window;
   1675 } xcb_map_window_request_t;
   1676 
   1677 /** Opcode for xcb_map_subwindows. */
   1678 #define XCB_MAP_SUBWINDOWS 9
   1679 
   1680 /**
   1681  * @brief xcb_map_subwindows_request_t
   1682  **/
   1683 typedef struct xcb_map_subwindows_request_t {
   1684     uint8_t      major_opcode;
   1685     uint8_t      pad0;
   1686     uint16_t     length;
   1687     xcb_window_t window;
   1688 } xcb_map_subwindows_request_t;
   1689 
   1690 /** Opcode for xcb_unmap_window. */
   1691 #define XCB_UNMAP_WINDOW 10
   1692 
   1693 /**
   1694  * @brief xcb_unmap_window_request_t
   1695  **/
   1696 typedef struct xcb_unmap_window_request_t {
   1697     uint8_t      major_opcode;
   1698     uint8_t      pad0;
   1699     uint16_t     length;
   1700     xcb_window_t window;
   1701 } xcb_unmap_window_request_t;
   1702 
   1703 /** Opcode for xcb_unmap_subwindows. */
   1704 #define XCB_UNMAP_SUBWINDOWS 11
   1705 
   1706 /**
   1707  * @brief xcb_unmap_subwindows_request_t
   1708  **/
   1709 typedef struct xcb_unmap_subwindows_request_t {
   1710     uint8_t      major_opcode;
   1711     uint8_t      pad0;
   1712     uint16_t     length;
   1713     xcb_window_t window;
   1714 } xcb_unmap_subwindows_request_t;
   1715 
   1716 typedef enum xcb_config_window_t {
   1717     XCB_CONFIG_WINDOW_X = 1,
   1718     XCB_CONFIG_WINDOW_Y = 2,
   1719     XCB_CONFIG_WINDOW_WIDTH = 4,
   1720     XCB_CONFIG_WINDOW_HEIGHT = 8,
   1721     XCB_CONFIG_WINDOW_BORDER_WIDTH = 16,
   1722     XCB_CONFIG_WINDOW_SIBLING = 32,
   1723     XCB_CONFIG_WINDOW_STACK_MODE = 64
   1724 } xcb_config_window_t;
   1725 
   1726 typedef enum xcb_stack_mode_t {
   1727     XCB_STACK_MODE_ABOVE = 0,
   1728     XCB_STACK_MODE_BELOW = 1,
   1729     XCB_STACK_MODE_TOP_IF = 2,
   1730     XCB_STACK_MODE_BOTTOM_IF = 3,
   1731     XCB_STACK_MODE_OPPOSITE = 4
   1732 } xcb_stack_mode_t;
   1733 
   1734 /**
   1735  * @brief xcb_configure_window_value_list_t
   1736  **/
   1737 typedef struct xcb_configure_window_value_list_t {
   1738     int32_t      x;
   1739     int32_t      y;
   1740     uint32_t     width;
   1741     uint32_t     height;
   1742     uint32_t     border_width;
   1743     xcb_window_t sibling;
   1744     uint32_t     stack_mode;
   1745 } xcb_configure_window_value_list_t;
   1746 
   1747 /** Opcode for xcb_configure_window. */
   1748 #define XCB_CONFIGURE_WINDOW 12
   1749 
   1750 /**
   1751  * @brief xcb_configure_window_request_t
   1752  **/
   1753 typedef struct xcb_configure_window_request_t {
   1754     uint8_t      major_opcode;
   1755     uint8_t      pad0;
   1756     uint16_t     length;
   1757     xcb_window_t window;
   1758     uint16_t     value_mask;
   1759     uint8_t      pad1[2];
   1760 } xcb_configure_window_request_t;
   1761 
   1762 typedef enum xcb_circulate_t {
   1763     XCB_CIRCULATE_RAISE_LOWEST = 0,
   1764     XCB_CIRCULATE_LOWER_HIGHEST = 1
   1765 } xcb_circulate_t;
   1766 
   1767 /** Opcode for xcb_circulate_window. */
   1768 #define XCB_CIRCULATE_WINDOW 13
   1769 
   1770 /**
   1771  * @brief xcb_circulate_window_request_t
   1772  **/
   1773 typedef struct xcb_circulate_window_request_t {
   1774     uint8_t      major_opcode;
   1775     uint8_t      direction;
   1776     uint16_t     length;
   1777     xcb_window_t window;
   1778 } xcb_circulate_window_request_t;
   1779 
   1780 /**
   1781  * @brief xcb_get_geometry_cookie_t
   1782  **/
   1783 typedef struct xcb_get_geometry_cookie_t {
   1784     unsigned int sequence;
   1785 } xcb_get_geometry_cookie_t;
   1786 
   1787 /** Opcode for xcb_get_geometry. */
   1788 #define XCB_GET_GEOMETRY 14
   1789 
   1790 /**
   1791  * @brief xcb_get_geometry_request_t
   1792  **/
   1793 typedef struct xcb_get_geometry_request_t {
   1794     uint8_t        major_opcode;
   1795     uint8_t        pad0;
   1796     uint16_t       length;
   1797     xcb_drawable_t drawable;
   1798 } xcb_get_geometry_request_t;
   1799 
   1800 /**
   1801  * @brief xcb_get_geometry_reply_t
   1802  **/
   1803 typedef struct xcb_get_geometry_reply_t {
   1804     uint8_t      response_type;
   1805     uint8_t      depth;
   1806     uint16_t     sequence;
   1807     uint32_t     length;
   1808     xcb_window_t root;
   1809     int16_t      x;
   1810     int16_t      y;
   1811     uint16_t     width;
   1812     uint16_t     height;
   1813     uint16_t     border_width;
   1814     uint8_t      pad0[2];
   1815 } xcb_get_geometry_reply_t;
   1816 
   1817 /**
   1818  * @brief xcb_query_tree_cookie_t
   1819  **/
   1820 typedef struct xcb_query_tree_cookie_t {
   1821     unsigned int sequence;
   1822 } xcb_query_tree_cookie_t;
   1823 
   1824 /** Opcode for xcb_query_tree. */
   1825 #define XCB_QUERY_TREE 15
   1826 
   1827 /**
   1828  * @brief xcb_query_tree_request_t
   1829  **/
   1830 typedef struct xcb_query_tree_request_t {
   1831     uint8_t      major_opcode;
   1832     uint8_t      pad0;
   1833     uint16_t     length;
   1834     xcb_window_t window;
   1835 } xcb_query_tree_request_t;
   1836 
   1837 /**
   1838  * @brief xcb_query_tree_reply_t
   1839  **/
   1840 typedef struct xcb_query_tree_reply_t {
   1841     uint8_t      response_type;
   1842     uint8_t      pad0;
   1843     uint16_t     sequence;
   1844     uint32_t     length;
   1845     xcb_window_t root;
   1846     xcb_window_t parent;
   1847     uint16_t     children_len;
   1848     uint8_t      pad1[14];
   1849 } xcb_query_tree_reply_t;
   1850 
   1851 /**
   1852  * @brief xcb_intern_atom_cookie_t
   1853  **/
   1854 typedef struct xcb_intern_atom_cookie_t {
   1855     unsigned int sequence;
   1856 } xcb_intern_atom_cookie_t;
   1857 
   1858 /** Opcode for xcb_intern_atom. */
   1859 #define XCB_INTERN_ATOM 16
   1860 
   1861 /**
   1862  * @brief xcb_intern_atom_request_t
   1863  **/
   1864 typedef struct xcb_intern_atom_request_t {
   1865     uint8_t  major_opcode;
   1866     uint8_t  only_if_exists;
   1867     uint16_t length;
   1868     uint16_t name_len;
   1869     uint8_t  pad0[2];
   1870 } xcb_intern_atom_request_t;
   1871 
   1872 /**
   1873  * @brief xcb_intern_atom_reply_t
   1874  **/
   1875 typedef struct xcb_intern_atom_reply_t {
   1876     uint8_t    response_type;
   1877     uint8_t    pad0;
   1878     uint16_t   sequence;
   1879     uint32_t   length;
   1880     xcb_atom_t atom;
   1881 } xcb_intern_atom_reply_t;
   1882 
   1883 /**
   1884  * @brief xcb_get_atom_name_cookie_t
   1885  **/
   1886 typedef struct xcb_get_atom_name_cookie_t {
   1887     unsigned int sequence;
   1888 } xcb_get_atom_name_cookie_t;
   1889 
   1890 /** Opcode for xcb_get_atom_name. */
   1891 #define XCB_GET_ATOM_NAME 17
   1892 
   1893 /**
   1894  * @brief xcb_get_atom_name_request_t
   1895  **/
   1896 typedef struct xcb_get_atom_name_request_t {
   1897     uint8_t    major_opcode;
   1898     uint8_t    pad0;
   1899     uint16_t   length;
   1900     xcb_atom_t atom;
   1901 } xcb_get_atom_name_request_t;
   1902 
   1903 /**
   1904  * @brief xcb_get_atom_name_reply_t
   1905  **/
   1906 typedef struct xcb_get_atom_name_reply_t {
   1907     uint8_t  response_type;
   1908     uint8_t  pad0;
   1909     uint16_t sequence;
   1910     uint32_t length;
   1911     uint16_t name_len;
   1912     uint8_t  pad1[22];
   1913 } xcb_get_atom_name_reply_t;
   1914 
   1915 typedef enum xcb_prop_mode_t {
   1916     XCB_PROP_MODE_REPLACE = 0,
   1917 /**< Discard the previous property value and store the new data. */
   1918 
   1919     XCB_PROP_MODE_PREPEND = 1,
   1920 /**< Insert the new data before the beginning of existing data. The `format` must
   1921 match existing property value. If the property is undefined, it is treated as
   1922 defined with the correct type and format with zero-length data. */
   1923 
   1924     XCB_PROP_MODE_APPEND = 2
   1925 /**< Insert the new data after the beginning of existing data. The `format` must
   1926 match existing property value. If the property is undefined, it is treated as
   1927 defined with the correct type and format with zero-length data. */
   1928 
   1929 } xcb_prop_mode_t;
   1930 
   1931 /** Opcode for xcb_change_property. */
   1932 #define XCB_CHANGE_PROPERTY 18
   1933 
   1934 /**
   1935  * @brief xcb_change_property_request_t
   1936  **/
   1937 typedef struct xcb_change_property_request_t {
   1938     uint8_t      major_opcode;
   1939     uint8_t      mode;
   1940     uint16_t     length;
   1941     xcb_window_t window;
   1942     xcb_atom_t   property;
   1943     xcb_atom_t   type;
   1944     uint8_t      format;
   1945     uint8_t      pad0[3];
   1946     uint32_t     data_len;
   1947 } xcb_change_property_request_t;
   1948 
   1949 /** Opcode for xcb_delete_property. */
   1950 #define XCB_DELETE_PROPERTY 19
   1951 
   1952 /**
   1953  * @brief xcb_delete_property_request_t
   1954  **/
   1955 typedef struct xcb_delete_property_request_t {
   1956     uint8_t      major_opcode;
   1957     uint8_t      pad0;
   1958     uint16_t     length;
   1959     xcb_window_t window;
   1960     xcb_atom_t   property;
   1961 } xcb_delete_property_request_t;
   1962 
   1963 typedef enum xcb_get_property_type_t {
   1964     XCB_GET_PROPERTY_TYPE_ANY = 0
   1965 } xcb_get_property_type_t;
   1966 
   1967 /**
   1968  * @brief xcb_get_property_cookie_t
   1969  **/
   1970 typedef struct xcb_get_property_cookie_t {
   1971     unsigned int sequence;
   1972 } xcb_get_property_cookie_t;
   1973 
   1974 /** Opcode for xcb_get_property. */
   1975 #define XCB_GET_PROPERTY 20
   1976 
   1977 /**
   1978  * @brief xcb_get_property_request_t
   1979  **/
   1980 typedef struct xcb_get_property_request_t {
   1981     uint8_t      major_opcode;
   1982     uint8_t      _delete;
   1983     uint16_t     length;
   1984     xcb_window_t window;
   1985     xcb_atom_t   property;
   1986     xcb_atom_t   type;
   1987     uint32_t     long_offset;
   1988     uint32_t     long_length;
   1989 } xcb_get_property_request_t;
   1990 
   1991 /**
   1992  * @brief xcb_get_property_reply_t
   1993  **/
   1994 typedef struct xcb_get_property_reply_t {
   1995     uint8_t    response_type;
   1996     uint8_t    format;
   1997     uint16_t   sequence;
   1998     uint32_t   length;
   1999     xcb_atom_t type;
   2000     uint32_t   bytes_after;
   2001     uint32_t   value_len;
   2002     uint8_t    pad0[12];
   2003 } xcb_get_property_reply_t;
   2004 
   2005 /**
   2006  * @brief xcb_list_properties_cookie_t
   2007  **/
   2008 typedef struct xcb_list_properties_cookie_t {
   2009     unsigned int sequence;
   2010 } xcb_list_properties_cookie_t;
   2011 
   2012 /** Opcode for xcb_list_properties. */
   2013 #define XCB_LIST_PROPERTIES 21
   2014 
   2015 /**
   2016  * @brief xcb_list_properties_request_t
   2017  **/
   2018 typedef struct xcb_list_properties_request_t {
   2019     uint8_t      major_opcode;
   2020     uint8_t      pad0;
   2021     uint16_t     length;
   2022     xcb_window_t window;
   2023 } xcb_list_properties_request_t;
   2024 
   2025 /**
   2026  * @brief xcb_list_properties_reply_t
   2027  **/
   2028 typedef struct xcb_list_properties_reply_t {
   2029     uint8_t  response_type;
   2030     uint8_t  pad0;
   2031     uint16_t sequence;
   2032     uint32_t length;
   2033     uint16_t atoms_len;
   2034     uint8_t  pad1[22];
   2035 } xcb_list_properties_reply_t;
   2036 
   2037 /** Opcode for xcb_set_selection_owner. */
   2038 #define XCB_SET_SELECTION_OWNER 22
   2039 
   2040 /**
   2041  * @brief xcb_set_selection_owner_request_t
   2042  **/
   2043 typedef struct xcb_set_selection_owner_request_t {
   2044     uint8_t         major_opcode;
   2045     uint8_t         pad0;
   2046     uint16_t        length;
   2047     xcb_window_t    owner;
   2048     xcb_atom_t      selection;
   2049     xcb_timestamp_t time;
   2050 } xcb_set_selection_owner_request_t;
   2051 
   2052 /**
   2053  * @brief xcb_get_selection_owner_cookie_t
   2054  **/
   2055 typedef struct xcb_get_selection_owner_cookie_t {
   2056     unsigned int sequence;
   2057 } xcb_get_selection_owner_cookie_t;
   2058 
   2059 /** Opcode for xcb_get_selection_owner. */
   2060 #define XCB_GET_SELECTION_OWNER 23
   2061 
   2062 /**
   2063  * @brief xcb_get_selection_owner_request_t
   2064  **/
   2065 typedef struct xcb_get_selection_owner_request_t {
   2066     uint8_t    major_opcode;
   2067     uint8_t    pad0;
   2068     uint16_t   length;
   2069     xcb_atom_t selection;
   2070 } xcb_get_selection_owner_request_t;
   2071 
   2072 /**
   2073  * @brief xcb_get_selection_owner_reply_t
   2074  **/
   2075 typedef struct xcb_get_selection_owner_reply_t {
   2076     uint8_t      response_type;
   2077     uint8_t      pad0;
   2078     uint16_t     sequence;
   2079     uint32_t     length;
   2080     xcb_window_t owner;
   2081 } xcb_get_selection_owner_reply_t;
   2082 
   2083 /** Opcode for xcb_convert_selection. */
   2084 #define XCB_CONVERT_SELECTION 24
   2085 
   2086 /**
   2087  * @brief xcb_convert_selection_request_t
   2088  **/
   2089 typedef struct xcb_convert_selection_request_t {
   2090     uint8_t         major_opcode;
   2091     uint8_t         pad0;
   2092     uint16_t        length;
   2093     xcb_window_t    requestor;
   2094     xcb_atom_t      selection;
   2095     xcb_atom_t      target;
   2096     xcb_atom_t      property;
   2097     xcb_timestamp_t time;
   2098 } xcb_convert_selection_request_t;
   2099 
   2100 typedef enum xcb_send_event_dest_t {
   2101     XCB_SEND_EVENT_DEST_POINTER_WINDOW = 0,
   2102     XCB_SEND_EVENT_DEST_ITEM_FOCUS = 1
   2103 } xcb_send_event_dest_t;
   2104 
   2105 /** Opcode for xcb_send_event. */
   2106 #define XCB_SEND_EVENT 25
   2107 
   2108 /**
   2109  * @brief xcb_send_event_request_t
   2110  **/
   2111 typedef struct xcb_send_event_request_t {
   2112     uint8_t      major_opcode;
   2113     uint8_t      propagate;
   2114     uint16_t     length;
   2115     xcb_window_t destination;
   2116     uint32_t     event_mask;
   2117     char         event[32];
   2118 } xcb_send_event_request_t;
   2119 
   2120 typedef enum xcb_grab_mode_t {
   2121     XCB_GRAB_MODE_SYNC = 0,
   2122 /**< The state of the keyboard appears to freeze: No further keyboard events are
   2123 generated by the server until the grabbing client issues a releasing
   2124 `AllowEvents` request or until the keyboard grab is released. */
   2125 
   2126     XCB_GRAB_MODE_ASYNC = 1
   2127 /**< Keyboard event processing continues normally. */
   2128 
   2129 } xcb_grab_mode_t;
   2130 
   2131 typedef enum xcb_grab_status_t {
   2132     XCB_GRAB_STATUS_SUCCESS = 0,
   2133     XCB_GRAB_STATUS_ALREADY_GRABBED = 1,
   2134     XCB_GRAB_STATUS_INVALID_TIME = 2,
   2135     XCB_GRAB_STATUS_NOT_VIEWABLE = 3,
   2136     XCB_GRAB_STATUS_FROZEN = 4
   2137 } xcb_grab_status_t;
   2138 
   2139 typedef enum xcb_cursor_enum_t {
   2140     XCB_CURSOR_NONE = 0
   2141 } xcb_cursor_enum_t;
   2142 
   2143 /**
   2144  * @brief xcb_grab_pointer_cookie_t
   2145  **/
   2146 typedef struct xcb_grab_pointer_cookie_t {
   2147     unsigned int sequence;
   2148 } xcb_grab_pointer_cookie_t;
   2149 
   2150 /** Opcode for xcb_grab_pointer. */
   2151 #define XCB_GRAB_POINTER 26
   2152 
   2153 /**
   2154  * @brief xcb_grab_pointer_request_t
   2155  **/
   2156 typedef struct xcb_grab_pointer_request_t {
   2157     uint8_t         major_opcode;
   2158     uint8_t         owner_events;
   2159     uint16_t        length;
   2160     xcb_window_t    grab_window;
   2161     uint16_t        event_mask;
   2162     uint8_t         pointer_mode;
   2163     uint8_t         keyboard_mode;
   2164     xcb_window_t    confine_to;
   2165     xcb_cursor_t    cursor;
   2166     xcb_timestamp_t time;
   2167 } xcb_grab_pointer_request_t;
   2168 
   2169 /**
   2170  * @brief xcb_grab_pointer_reply_t
   2171  **/
   2172 typedef struct xcb_grab_pointer_reply_t {
   2173     uint8_t  response_type;
   2174     uint8_t  status;
   2175     uint16_t sequence;
   2176     uint32_t length;
   2177 } xcb_grab_pointer_reply_t;
   2178 
   2179 /** Opcode for xcb_ungrab_pointer. */
   2180 #define XCB_UNGRAB_POINTER 27
   2181 
   2182 /**
   2183  * @brief xcb_ungrab_pointer_request_t
   2184  **/
   2185 typedef struct xcb_ungrab_pointer_request_t {
   2186     uint8_t         major_opcode;
   2187     uint8_t         pad0;
   2188     uint16_t        length;
   2189     xcb_timestamp_t time;
   2190 } xcb_ungrab_pointer_request_t;
   2191 
   2192 typedef enum xcb_button_index_t {
   2193     XCB_BUTTON_INDEX_ANY = 0,
   2194 /**< Any of the following (or none): */
   2195 
   2196     XCB_BUTTON_INDEX_1 = 1,
   2197 /**< The left mouse button. */
   2198 
   2199     XCB_BUTTON_INDEX_2 = 2,
   2200 /**< The right mouse button. */
   2201 
   2202     XCB_BUTTON_INDEX_3 = 3,
   2203 /**< The middle mouse button. */
   2204 
   2205     XCB_BUTTON_INDEX_4 = 4,
   2206 /**< Scroll wheel. TODO: direction? */
   2207 
   2208     XCB_BUTTON_INDEX_5 = 5
   2209 /**< Scroll wheel. TODO: direction? */
   2210 
   2211 } xcb_button_index_t;
   2212 
   2213 /** Opcode for xcb_grab_button. */
   2214 #define XCB_GRAB_BUTTON 28
   2215 
   2216 /**
   2217  * @brief xcb_grab_button_request_t
   2218  **/
   2219 typedef struct xcb_grab_button_request_t {
   2220     uint8_t      major_opcode;
   2221     uint8_t      owner_events;
   2222     uint16_t     length;
   2223     xcb_window_t grab_window;
   2224     uint16_t     event_mask;
   2225     uint8_t      pointer_mode;
   2226     uint8_t      keyboard_mode;
   2227     xcb_window_t confine_to;
   2228     xcb_cursor_t cursor;
   2229     uint8_t      button;
   2230     uint8_t      pad0;
   2231     uint16_t     modifiers;
   2232 } xcb_grab_button_request_t;
   2233 
   2234 /** Opcode for xcb_ungrab_button. */
   2235 #define XCB_UNGRAB_BUTTON 29
   2236 
   2237 /**
   2238  * @brief xcb_ungrab_button_request_t
   2239  **/
   2240 typedef struct xcb_ungrab_button_request_t {
   2241     uint8_t      major_opcode;
   2242     uint8_t      button;
   2243     uint16_t     length;
   2244     xcb_window_t grab_window;
   2245     uint16_t     modifiers;
   2246     uint8_t      pad0[2];
   2247 } xcb_ungrab_button_request_t;
   2248 
   2249 /** Opcode for xcb_change_active_pointer_grab. */
   2250 #define XCB_CHANGE_ACTIVE_POINTER_GRAB 30
   2251 
   2252 /**
   2253  * @brief xcb_change_active_pointer_grab_request_t
   2254  **/
   2255 typedef struct xcb_change_active_pointer_grab_request_t {
   2256     uint8_t         major_opcode;
   2257     uint8_t         pad0;
   2258     uint16_t        length;
   2259     xcb_cursor_t    cursor;
   2260     xcb_timestamp_t time;
   2261     uint16_t        event_mask;
   2262     uint8_t         pad1[2];
   2263 } xcb_change_active_pointer_grab_request_t;
   2264 
   2265 /**
   2266  * @brief xcb_grab_keyboard_cookie_t
   2267  **/
   2268 typedef struct xcb_grab_keyboard_cookie_t {
   2269     unsigned int sequence;
   2270 } xcb_grab_keyboard_cookie_t;
   2271 
   2272 /** Opcode for xcb_grab_keyboard. */
   2273 #define XCB_GRAB_KEYBOARD 31
   2274 
   2275 /**
   2276  * @brief xcb_grab_keyboard_request_t
   2277  **/
   2278 typedef struct xcb_grab_keyboard_request_t {
   2279     uint8_t         major_opcode;
   2280     uint8_t         owner_events;
   2281     uint16_t        length;
   2282     xcb_window_t    grab_window;
   2283     xcb_timestamp_t time;
   2284     uint8_t         pointer_mode;
   2285     uint8_t         keyboard_mode;
   2286     uint8_t         pad0[2];
   2287 } xcb_grab_keyboard_request_t;
   2288 
   2289 /**
   2290  * @brief xcb_grab_keyboard_reply_t
   2291  **/
   2292 typedef struct xcb_grab_keyboard_reply_t {
   2293     uint8_t  response_type;
   2294     uint8_t  status;
   2295     uint16_t sequence;
   2296     uint32_t length;
   2297 } xcb_grab_keyboard_reply_t;
   2298 
   2299 /** Opcode for xcb_ungrab_keyboard. */
   2300 #define XCB_UNGRAB_KEYBOARD 32
   2301 
   2302 /**
   2303  * @brief xcb_ungrab_keyboard_request_t
   2304  **/
   2305 typedef struct xcb_ungrab_keyboard_request_t {
   2306     uint8_t         major_opcode;
   2307     uint8_t         pad0;
   2308     uint16_t        length;
   2309     xcb_timestamp_t time;
   2310 } xcb_ungrab_keyboard_request_t;
   2311 
   2312 typedef enum xcb_grab_t {
   2313     XCB_GRAB_ANY = 0
   2314 } xcb_grab_t;
   2315 
   2316 /** Opcode for xcb_grab_key. */
   2317 #define XCB_GRAB_KEY 33
   2318 
   2319 /**
   2320  * @brief xcb_grab_key_request_t
   2321  **/
   2322 typedef struct xcb_grab_key_request_t {
   2323     uint8_t       major_opcode;
   2324     uint8_t       owner_events;
   2325     uint16_t      length;
   2326     xcb_window_t  grab_window;
   2327     uint16_t      modifiers;
   2328     xcb_keycode_t key;
   2329     uint8_t       pointer_mode;
   2330     uint8_t       keyboard_mode;
   2331     uint8_t       pad0[3];
   2332 } xcb_grab_key_request_t;
   2333 
   2334 /** Opcode for xcb_ungrab_key. */
   2335 #define XCB_UNGRAB_KEY 34
   2336 
   2337 /**
   2338  * @brief xcb_ungrab_key_request_t
   2339  **/
   2340 typedef struct xcb_ungrab_key_request_t {
   2341     uint8_t       major_opcode;
   2342     xcb_keycode_t key;
   2343     uint16_t      length;
   2344     xcb_window_t  grab_window;
   2345     uint16_t      modifiers;
   2346     uint8_t       pad0[2];
   2347 } xcb_ungrab_key_request_t;
   2348 
   2349 typedef enum xcb_allow_t {
   2350     XCB_ALLOW_ASYNC_POINTER = 0,
   2351 /**< For AsyncPointer, if the pointer is frozen by the client, pointer event
   2352 processing continues normally. If the pointer is frozen twice by the client on
   2353 behalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no
   2354 effect if the pointer is not frozen by the client, but the pointer need not be
   2355 grabbed by the client.
   2356 
   2357 TODO: rewrite this in more understandable terms. */
   2358 
   2359     XCB_ALLOW_SYNC_POINTER = 1,
   2360 /**< For SyncPointer, if the pointer is frozen and actively grabbed by the client,
   2361 pointer event processing continues normally until the next ButtonPress or
   2362 ButtonRelease event is reported to the client, at which time the pointer again
   2363 appears to freeze. However, if the reported event causes the pointer grab to be
   2364 released, then the pointer does not freeze. SyncPointer has no effect if the
   2365 pointer is not frozen by the client or if the pointer is not grabbed by the
   2366 client. */
   2367 
   2368     XCB_ALLOW_REPLAY_POINTER = 2,
   2369 /**< For ReplayPointer, if the pointer is actively grabbed by the client and is
   2370 frozen as the result of an event having been sent to the client (either from
   2371 the activation of a GrabButton or from a previous AllowEvents with mode
   2372 SyncPointer but not from a GrabPointer), then the pointer grab is released and
   2373 that event is completely reprocessed, this time ignoring any passive grabs at
   2374 or above (towards the root) the grab-window of the grab just released. The
   2375 request has no effect if the pointer is not grabbed by the client or if the
   2376 pointer is not frozen as the result of an event. */
   2377 
   2378     XCB_ALLOW_ASYNC_KEYBOARD = 3,
   2379 /**< For AsyncKeyboard, if the keyboard is frozen by the client, keyboard event
   2380 processing continues normally. If the keyboard is frozen twice by the client on
   2381 behalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has
   2382 no effect if the keyboard is not frozen by the client, but the keyboard need
   2383 not be grabbed by the client. */
   2384 
   2385     XCB_ALLOW_SYNC_KEYBOARD = 4,
   2386 /**< For SyncKeyboard, if the keyboard is frozen and actively grabbed by the client,
   2387 keyboard event processing continues normally until the next KeyPress or
   2388 KeyRelease event is reported to the client, at which time the keyboard again
   2389 appears to freeze. However, if the reported event causes the keyboard grab to
   2390 be released, then the keyboard does not freeze. SyncKeyboard has no effect if
   2391 the keyboard is not frozen by the client or if the keyboard is not grabbed by
   2392 the client. */
   2393 
   2394     XCB_ALLOW_REPLAY_KEYBOARD = 5,
   2395 /**< For ReplayKeyboard, if the keyboard is actively grabbed by the client and is
   2396 frozen as the result of an event having been sent to the client (either from
   2397 the activation of a GrabKey or from a previous AllowEvents with mode
   2398 SyncKeyboard but not from a GrabKeyboard), then the keyboard grab is released
   2399 and that event is completely reprocessed, this time ignoring any passive grabs
   2400 at or above (towards the root) the grab-window of the grab just released. The
   2401 request has no effect if the keyboard is not grabbed by the client or if the
   2402 keyboard is not frozen as the result of an event. */
   2403 
   2404     XCB_ALLOW_ASYNC_BOTH = 6,
   2405 /**< For AsyncBoth, if the pointer and the keyboard are frozen by the client, event
   2406 processing for both devices continues normally. If a device is frozen twice by
   2407 the client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth
   2408 has no effect unless both pointer and keyboard are frozen by the client. */
   2409 
   2410     XCB_ALLOW_SYNC_BOTH = 7
   2411 /**< For SyncBoth, if both pointer and keyboard are frozen by the client, event
   2412 processing (for both devices) continues normally until the next ButtonPress,
   2413 ButtonRelease, KeyPress, or KeyRelease event is reported to the client for a
   2414 grabbed device (button event for the pointer, key event for the keyboard), at
   2415 which time the devices again appear to freeze. However, if the reported event
   2416 causes the grab to be released, then the devices do not freeze (but if the
   2417 other device is still grabbed, then a subsequent event for it will still cause
   2418 both devices to freeze). SyncBoth has no effect unless both pointer and
   2419 keyboard are frozen by the client. If the pointer or keyboard is frozen twice
   2420 by the client on behalf of two separate grabs, SyncBoth thaws for both (but a
   2421 subsequent freeze for SyncBoth will only freeze each device once). */
   2422 
   2423 } xcb_allow_t;
   2424 
   2425 /** Opcode for xcb_allow_events. */
   2426 #define XCB_ALLOW_EVENTS 35
   2427 
   2428 /**
   2429  * @brief xcb_allow_events_request_t
   2430  **/
   2431 typedef struct xcb_allow_events_request_t {
   2432     uint8_t         major_opcode;
   2433     uint8_t         mode;
   2434     uint16_t        length;
   2435     xcb_timestamp_t time;
   2436 } xcb_allow_events_request_t;
   2437 
   2438 /** Opcode for xcb_grab_server. */
   2439 #define XCB_GRAB_SERVER 36
   2440 
   2441 /**
   2442  * @brief xcb_grab_server_request_t
   2443  **/
   2444 typedef struct xcb_grab_server_request_t {
   2445     uint8_t  major_opcode;
   2446     uint8_t  pad0;
   2447     uint16_t length;
   2448 } xcb_grab_server_request_t;
   2449 
   2450 /** Opcode for xcb_ungrab_server. */
   2451 #define XCB_UNGRAB_SERVER 37
   2452 
   2453 /**
   2454  * @brief xcb_ungrab_server_request_t
   2455  **/
   2456 typedef struct xcb_ungrab_server_request_t {
   2457     uint8_t  major_opcode;
   2458     uint8_t  pad0;
   2459     uint16_t length;
   2460 } xcb_ungrab_server_request_t;
   2461 
   2462 /**
   2463  * @brief xcb_query_pointer_cookie_t
   2464  **/
   2465 typedef struct xcb_query_pointer_cookie_t {
   2466     unsigned int sequence;
   2467 } xcb_query_pointer_cookie_t;
   2468 
   2469 /** Opcode for xcb_query_pointer. */
   2470 #define XCB_QUERY_POINTER 38
   2471 
   2472 /**
   2473  * @brief xcb_query_pointer_request_t
   2474  **/
   2475 typedef struct xcb_query_pointer_request_t {
   2476     uint8_t      major_opcode;
   2477     uint8_t      pad0;
   2478     uint16_t     length;
   2479     xcb_window_t window;
   2480 } xcb_query_pointer_request_t;
   2481 
   2482 /**
   2483  * @brief xcb_query_pointer_reply_t
   2484  **/
   2485 typedef struct xcb_query_pointer_reply_t {
   2486     uint8_t      response_type;
   2487     uint8_t      same_screen;
   2488     uint16_t     sequence;
   2489     uint32_t     length;
   2490     xcb_window_t root;
   2491     xcb_window_t child;
   2492     int16_t      root_x;
   2493     int16_t      root_y;
   2494     int16_t      win_x;
   2495     int16_t      win_y;
   2496     uint16_t     mask;
   2497     uint8_t      pad0[2];
   2498 } xcb_query_pointer_reply_t;
   2499 
   2500 /**
   2501  * @brief xcb_timecoord_t
   2502  **/
   2503 typedef struct xcb_timecoord_t {
   2504     xcb_timestamp_t time;
   2505     int16_t         x;
   2506     int16_t         y;
   2507 } xcb_timecoord_t;
   2508 
   2509 /**
   2510  * @brief xcb_timecoord_iterator_t
   2511  **/
   2512 typedef struct xcb_timecoord_iterator_t {
   2513     xcb_timecoord_t *data;
   2514     int              rem;
   2515     int              index;
   2516 } xcb_timecoord_iterator_t;
   2517 
   2518 /**
   2519  * @brief xcb_get_motion_events_cookie_t
   2520  **/
   2521 typedef struct xcb_get_motion_events_cookie_t {
   2522     unsigned int sequence;
   2523 } xcb_get_motion_events_cookie_t;
   2524 
   2525 /** Opcode for xcb_get_motion_events. */
   2526 #define XCB_GET_MOTION_EVENTS 39
   2527 
   2528 /**
   2529  * @brief xcb_get_motion_events_request_t
   2530  **/
   2531 typedef struct xcb_get_motion_events_request_t {
   2532     uint8_t         major_opcode;
   2533     uint8_t         pad0;
   2534     uint16_t        length;
   2535     xcb_window_t    window;
   2536     xcb_timestamp_t start;
   2537     xcb_timestamp_t stop;
   2538 } xcb_get_motion_events_request_t;
   2539 
   2540 /**
   2541  * @brief xcb_get_motion_events_reply_t
   2542  **/
   2543 typedef struct xcb_get_motion_events_reply_t {
   2544     uint8_t  response_type;
   2545     uint8_t  pad0;
   2546     uint16_t sequence;
   2547     uint32_t length;
   2548     uint32_t events_len;
   2549     uint8_t  pad1[20];
   2550 } xcb_get_motion_events_reply_t;
   2551 
   2552 /**
   2553  * @brief xcb_translate_coordinates_cookie_t
   2554  **/
   2555 typedef struct xcb_translate_coordinates_cookie_t {
   2556     unsigned int sequence;
   2557 } xcb_translate_coordinates_cookie_t;
   2558 
   2559 /** Opcode for xcb_translate_coordinates. */
   2560 #define XCB_TRANSLATE_COORDINATES 40
   2561 
   2562 /**
   2563  * @brief xcb_translate_coordinates_request_t
   2564  **/
   2565 typedef struct xcb_translate_coordinates_request_t {
   2566     uint8_t      major_opcode;
   2567     uint8_t      pad0;
   2568     uint16_t     length;
   2569     xcb_window_t src_window;
   2570     xcb_window_t dst_window;
   2571     int16_t      src_x;
   2572     int16_t      src_y;
   2573 } xcb_translate_coordinates_request_t;
   2574 
   2575 /**
   2576  * @brief xcb_translate_coordinates_reply_t
   2577  **/
   2578 typedef struct xcb_translate_coordinates_reply_t {
   2579     uint8_t      response_type;
   2580     uint8_t      same_screen;
   2581     uint16_t     sequence;
   2582     uint32_t     length;
   2583     xcb_window_t child;
   2584     int16_t      dst_x;
   2585     int16_t      dst_y;
   2586 } xcb_translate_coordinates_reply_t;
   2587 
   2588 /** Opcode for xcb_warp_pointer. */
   2589 #define XCB_WARP_POINTER 41
   2590 
   2591 /**
   2592  * @brief xcb_warp_pointer_request_t
   2593  **/
   2594 typedef struct xcb_warp_pointer_request_t {
   2595     uint8_t      major_opcode;
   2596     uint8_t      pad0;
   2597     uint16_t     length;
   2598     xcb_window_t src_window;
   2599     xcb_window_t dst_window;
   2600     int16_t      src_x;
   2601     int16_t      src_y;
   2602     uint16_t     src_width;
   2603     uint16_t     src_height;
   2604     int16_t      dst_x;
   2605     int16_t      dst_y;
   2606 } xcb_warp_pointer_request_t;
   2607 
   2608 typedef enum xcb_input_focus_t {
   2609     XCB_INPUT_FOCUS_NONE = 0,
   2610 /**< The focus reverts to `XCB_NONE`, so no window will have the input focus. */
   2611 
   2612     XCB_INPUT_FOCUS_POINTER_ROOT = 1,
   2613 /**< The focus reverts to `XCB_POINTER_ROOT` respectively. When the focus reverts,
   2614 FocusIn and FocusOut events are generated, but the last-focus-change time is
   2615 not changed. */
   2616 
   2617     XCB_INPUT_FOCUS_PARENT = 2,
   2618 /**< The focus reverts to the parent (or closest viewable ancestor) and the new
   2619 revert_to value is `XCB_INPUT_FOCUS_NONE`. */
   2620 
   2621     XCB_INPUT_FOCUS_FOLLOW_KEYBOARD = 3
   2622 /**< NOT YET DOCUMENTED. Only relevant for the xinput extension. */
   2623 
   2624 } xcb_input_focus_t;
   2625 
   2626 /** Opcode for xcb_set_input_focus. */
   2627 #define XCB_SET_INPUT_FOCUS 42
   2628 
   2629 /**
   2630  * @brief xcb_set_input_focus_request_t
   2631  **/
   2632 typedef struct xcb_set_input_focus_request_t {
   2633     uint8_t         major_opcode;
   2634     uint8_t         revert_to;
   2635     uint16_t        length;
   2636     xcb_window_t    focus;
   2637     xcb_timestamp_t time;
   2638 } xcb_set_input_focus_request_t;
   2639 
   2640 /**
   2641  * @brief xcb_get_input_focus_cookie_t
   2642  **/
   2643 typedef struct xcb_get_input_focus_cookie_t {
   2644     unsigned int sequence;
   2645 } xcb_get_input_focus_cookie_t;
   2646 
   2647 /** Opcode for xcb_get_input_focus. */
   2648 #define XCB_GET_INPUT_FOCUS 43
   2649 
   2650 /**
   2651  * @brief xcb_get_input_focus_request_t
   2652  **/
   2653 typedef struct xcb_get_input_focus_request_t {
   2654     uint8_t  major_opcode;
   2655     uint8_t  pad0;
   2656     uint16_t length;
   2657 } xcb_get_input_focus_request_t;
   2658 
   2659 /**
   2660  * @brief xcb_get_input_focus_reply_t
   2661  **/
   2662 typedef struct xcb_get_input_focus_reply_t {
   2663     uint8_t      response_type;
   2664     uint8_t      revert_to;
   2665     uint16_t     sequence;
   2666     uint32_t     length;
   2667     xcb_window_t focus;
   2668 } xcb_get_input_focus_reply_t;
   2669 
   2670 /**
   2671  * @brief xcb_query_keymap_cookie_t
   2672  **/
   2673 typedef struct xcb_query_keymap_cookie_t {
   2674     unsigned int sequence;
   2675 } xcb_query_keymap_cookie_t;
   2676 
   2677 /** Opcode for xcb_query_keymap. */
   2678 #define XCB_QUERY_KEYMAP 44
   2679 
   2680 /**
   2681  * @brief xcb_query_keymap_request_t
   2682  **/
   2683 typedef struct xcb_query_keymap_request_t {
   2684     uint8_t  major_opcode;
   2685     uint8_t  pad0;
   2686     uint16_t length;
   2687 } xcb_query_keymap_request_t;
   2688 
   2689 /**
   2690  * @brief xcb_query_keymap_reply_t
   2691  **/
   2692 typedef struct xcb_query_keymap_reply_t {
   2693     uint8_t  response_type;
   2694     uint8_t  pad0;
   2695     uint16_t sequence;
   2696     uint32_t length;
   2697     uint8_t  keys[32];
   2698 } xcb_query_keymap_reply_t;
   2699 
   2700 /** Opcode for xcb_open_font. */
   2701 #define XCB_OPEN_FONT 45
   2702 
   2703 /**
   2704  * @brief xcb_open_font_request_t
   2705  **/
   2706 typedef struct xcb_open_font_request_t {
   2707     uint8_t    major_opcode;
   2708     uint8_t    pad0;
   2709     uint16_t   length;
   2710     xcb_font_t fid;
   2711     uint16_t   name_len;
   2712     uint8_t    pad1[2];
   2713 } xcb_open_font_request_t;
   2714 
   2715 /** Opcode for xcb_close_font. */
   2716 #define XCB_CLOSE_FONT 46
   2717 
   2718 /**
   2719  * @brief xcb_close_font_request_t
   2720  **/
   2721 typedef struct xcb_close_font_request_t {
   2722     uint8_t    major_opcode;
   2723     uint8_t    pad0;
   2724     uint16_t   length;
   2725     xcb_font_t font;
   2726 } xcb_close_font_request_t;
   2727 
   2728 typedef enum xcb_font_draw_t {
   2729     XCB_FONT_DRAW_LEFT_TO_RIGHT = 0,
   2730     XCB_FONT_DRAW_RIGHT_TO_LEFT = 1
   2731 } xcb_font_draw_t;
   2732 
   2733 /**
   2734  * @brief xcb_fontprop_t
   2735  **/
   2736 typedef struct xcb_fontprop_t {
   2737     xcb_atom_t name;
   2738     uint32_t   value;
   2739 } xcb_fontprop_t;
   2740 
   2741 /**
   2742  * @brief xcb_fontprop_iterator_t
   2743  **/
   2744 typedef struct xcb_fontprop_iterator_t {
   2745     xcb_fontprop_t *data;
   2746     int             rem;
   2747     int             index;
   2748 } xcb_fontprop_iterator_t;
   2749 
   2750 /**
   2751  * @brief xcb_charinfo_t
   2752  **/
   2753 typedef struct xcb_charinfo_t {
   2754     int16_t  left_side_bearing;
   2755     int16_t  right_side_bearing;
   2756     int16_t  character_width;
   2757     int16_t  ascent;
   2758     int16_t  descent;
   2759     uint16_t attributes;
   2760 } xcb_charinfo_t;
   2761 
   2762 /**
   2763  * @brief xcb_charinfo_iterator_t
   2764  **/
   2765 typedef struct xcb_charinfo_iterator_t {
   2766     xcb_charinfo_t *data;
   2767     int             rem;
   2768     int             index;
   2769 } xcb_charinfo_iterator_t;
   2770 
   2771 /**
   2772  * @brief xcb_query_font_cookie_t
   2773  **/
   2774 typedef struct xcb_query_font_cookie_t {
   2775     unsigned int sequence;
   2776 } xcb_query_font_cookie_t;
   2777 
   2778 /** Opcode for xcb_query_font. */
   2779 #define XCB_QUERY_FONT 47
   2780 
   2781 /**
   2782  * @brief xcb_query_font_request_t
   2783  **/
   2784 typedef struct xcb_query_font_request_t {
   2785     uint8_t        major_opcode;
   2786     uint8_t        pad0;
   2787     uint16_t       length;
   2788     xcb_fontable_t font;
   2789 } xcb_query_font_request_t;
   2790 
   2791 /**
   2792  * @brief xcb_query_font_reply_t
   2793  **/
   2794 typedef struct xcb_query_font_reply_t {
   2795     uint8_t        response_type;
   2796     uint8_t        pad0;
   2797     uint16_t       sequence;
   2798     uint32_t       length;
   2799     xcb_charinfo_t min_bounds;
   2800     uint8_t        pad1[4];
   2801     xcb_charinfo_t max_bounds;
   2802     uint8_t        pad2[4];
   2803     uint16_t       min_char_or_byte2;
   2804     uint16_t       max_char_or_byte2;
   2805     uint16_t       default_char;
   2806     uint16_t       properties_len;
   2807     uint8_t        draw_direction;
   2808     uint8_t        min_byte1;
   2809     uint8_t        max_byte1;
   2810     uint8_t        all_chars_exist;
   2811     int16_t        font_ascent;
   2812     int16_t        font_descent;
   2813     uint32_t       char_infos_len;
   2814 } xcb_query_font_reply_t;
   2815 
   2816 /**
   2817  * @brief xcb_query_text_extents_cookie_t
   2818  **/
   2819 typedef struct xcb_query_text_extents_cookie_t {
   2820     unsigned int sequence;
   2821 } xcb_query_text_extents_cookie_t;
   2822 
   2823 /** Opcode for xcb_query_text_extents. */
   2824 #define XCB_QUERY_TEXT_EXTENTS 48
   2825 
   2826 /**
   2827  * @brief xcb_query_text_extents_request_t
   2828  **/
   2829 typedef struct xcb_query_text_extents_request_t {
   2830     uint8_t        major_opcode;
   2831     uint8_t        odd_length;
   2832     uint16_t       length;
   2833     xcb_fontable_t font;
   2834 } xcb_query_text_extents_request_t;
   2835 
   2836 /**
   2837  * @brief xcb_query_text_extents_reply_t
   2838  **/
   2839 typedef struct xcb_query_text_extents_reply_t {
   2840     uint8_t  response_type;
   2841     uint8_t  draw_direction;
   2842     uint16_t sequence;
   2843     uint32_t length;
   2844     int16_t  font_ascent;
   2845     int16_t  font_descent;
   2846     int16_t  overall_ascent;
   2847     int16_t  overall_descent;
   2848     int32_t  overall_width;
   2849     int32_t  overall_left;
   2850     int32_t  overall_right;
   2851 } xcb_query_text_extents_reply_t;
   2852 
   2853 /**
   2854  * @brief xcb_str_t
   2855  **/
   2856 typedef struct xcb_str_t {
   2857     uint8_t name_len;
   2858 } xcb_str_t;
   2859 
   2860 /**
   2861  * @brief xcb_str_iterator_t
   2862  **/
   2863 typedef struct xcb_str_iterator_t {
   2864     xcb_str_t *data;
   2865     int        rem;
   2866     int        index;
   2867 } xcb_str_iterator_t;
   2868 
   2869 /**
   2870  * @brief xcb_list_fonts_cookie_t
   2871  **/
   2872 typedef struct xcb_list_fonts_cookie_t {
   2873     unsigned int sequence;
   2874 } xcb_list_fonts_cookie_t;
   2875 
   2876 /** Opcode for xcb_list_fonts. */
   2877 #define XCB_LIST_FONTS 49
   2878 
   2879 /**
   2880  * @brief xcb_list_fonts_request_t
   2881  **/
   2882 typedef struct xcb_list_fonts_request_t {
   2883     uint8_t  major_opcode;
   2884     uint8_t  pad0;
   2885     uint16_t length;
   2886     uint16_t max_names;
   2887     uint16_t pattern_len;
   2888 } xcb_list_fonts_request_t;
   2889 
   2890 /**
   2891  * @brief xcb_list_fonts_reply_t
   2892  **/
   2893 typedef struct xcb_list_fonts_reply_t {
   2894     uint8_t  response_type;
   2895     uint8_t  pad0;
   2896     uint16_t sequence;
   2897     uint32_t length;
   2898     uint16_t names_len;
   2899     uint8_t  pad1[22];
   2900 } xcb_list_fonts_reply_t;
   2901 
   2902 /**
   2903  * @brief xcb_list_fonts_with_info_cookie_t
   2904  **/
   2905 typedef struct xcb_list_fonts_with_info_cookie_t {
   2906     unsigned int sequence;
   2907 } xcb_list_fonts_with_info_cookie_t;
   2908 
   2909 /** Opcode for xcb_list_fonts_with_info. */
   2910 #define XCB_LIST_FONTS_WITH_INFO 50
   2911 
   2912 /**
   2913  * @brief xcb_list_fonts_with_info_request_t
   2914  **/
   2915 typedef struct xcb_list_fonts_with_info_request_t {
   2916     uint8_t  major_opcode;
   2917     uint8_t  pad0;
   2918     uint16_t length;
   2919     uint16_t max_names;
   2920     uint16_t pattern_len;
   2921 } xcb_list_fonts_with_info_request_t;
   2922 
   2923 /**
   2924  * @brief xcb_list_fonts_with_info_reply_t
   2925  **/
   2926 typedef struct xcb_list_fonts_with_info_reply_t {
   2927     uint8_t        response_type;
   2928     uint8_t        name_len;
   2929     uint16_t       sequence;
   2930     uint32_t       length;
   2931     xcb_charinfo_t min_bounds;
   2932     uint8_t        pad0[4];
   2933     xcb_charinfo_t max_bounds;
   2934     uint8_t        pad1[4];
   2935     uint16_t       min_char_or_byte2;
   2936     uint16_t       max_char_or_byte2;
   2937     uint16_t       default_char;
   2938     uint16_t       properties_len;
   2939     uint8_t        draw_direction;
   2940     uint8_t        min_byte1;
   2941     uint8_t        max_byte1;
   2942     uint8_t        all_chars_exist;
   2943     int16_t        font_ascent;
   2944     int16_t        font_descent;
   2945     uint32_t       replies_hint;
   2946 } xcb_list_fonts_with_info_reply_t;
   2947 
   2948 /** Opcode for xcb_set_font_path. */
   2949 #define XCB_SET_FONT_PATH 51
   2950 
   2951 /**
   2952  * @brief xcb_set_font_path_request_t
   2953  **/
   2954 typedef struct xcb_set_font_path_request_t {
   2955     uint8_t  major_opcode;
   2956     uint8_t  pad0;
   2957     uint16_t length;
   2958     uint16_t font_qty;
   2959     uint8_t  pad1[2];
   2960 } xcb_set_font_path_request_t;
   2961 
   2962 /**
   2963  * @brief xcb_get_font_path_cookie_t
   2964  **/
   2965 typedef struct xcb_get_font_path_cookie_t {
   2966     unsigned int sequence;
   2967 } xcb_get_font_path_cookie_t;
   2968 
   2969 /** Opcode for xcb_get_font_path. */
   2970 #define XCB_GET_FONT_PATH 52
   2971 
   2972 /**
   2973  * @brief xcb_get_font_path_request_t
   2974  **/
   2975 typedef struct xcb_get_font_path_request_t {
   2976     uint8_t  major_opcode;
   2977     uint8_t  pad0;
   2978     uint16_t length;
   2979 } xcb_get_font_path_request_t;
   2980 
   2981 /**
   2982  * @brief xcb_get_font_path_reply_t
   2983  **/
   2984 typedef struct xcb_get_font_path_reply_t {
   2985     uint8_t  response_type;
   2986     uint8_t  pad0;
   2987     uint16_t sequence;
   2988     uint32_t length;
   2989     uint16_t path_len;
   2990     uint8_t  pad1[22];
   2991 } xcb_get_font_path_reply_t;
   2992 
   2993 /** Opcode for xcb_create_pixmap. */
   2994 #define XCB_CREATE_PIXMAP 53
   2995 
   2996 /**
   2997  * @brief xcb_create_pixmap_request_t
   2998  **/
   2999 typedef struct xcb_create_pixmap_request_t {
   3000     uint8_t        major_opcode;
   3001     uint8_t        depth;
   3002     uint16_t       length;
   3003     xcb_pixmap_t   pid;
   3004     xcb_drawable_t drawable;
   3005     uint16_t       width;
   3006     uint16_t       height;
   3007 } xcb_create_pixmap_request_t;
   3008 
   3009 /** Opcode for xcb_free_pixmap. */
   3010 #define XCB_FREE_PIXMAP 54
   3011 
   3012 /**
   3013  * @brief xcb_free_pixmap_request_t
   3014  **/
   3015 typedef struct xcb_free_pixmap_request_t {
   3016     uint8_t      major_opcode;
   3017     uint8_t      pad0;
   3018     uint16_t     length;
   3019     xcb_pixmap_t pixmap;
   3020 } xcb_free_pixmap_request_t;
   3021 
   3022 typedef enum xcb_gc_t {
   3023     XCB_GC_FUNCTION = 1,
   3024 /**< TODO: Refer to GX */
   3025 
   3026     XCB_GC_PLANE_MASK = 2,
   3027 /**< In graphics operations, given a source and destination pixel, the result is
   3028 computed bitwise on corresponding bits of the pixels; that is, a Boolean
   3029 operation is performed in each bit plane. The plane-mask restricts the
   3030 operation to a subset of planes, so the result is:
   3031 
   3032         ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask)) */
   3033 
   3034     XCB_GC_FOREGROUND = 4,
   3035 /**< Foreground colorpixel. */
   3036 
   3037     XCB_GC_BACKGROUND = 8,
   3038 /**< Background colorpixel. */
   3039 
   3040     XCB_GC_LINE_WIDTH = 16,
   3041 /**< The line-width is measured in pixels and can be greater than or equal to one, a wide line, or the
   3042 special value zero, a thin line. */
   3043 
   3044     XCB_GC_LINE_STYLE = 32,
   3045 /**< The line-style defines which sections of a line are drawn:
   3046 Solid                The full path of the line is drawn.
   3047 DoubleDash           The full path of the line is drawn, but the even dashes are filled differently
   3048                      than the odd dashes (see fill-style), with Butt cap-style used where even and
   3049                      odd dashes meet.
   3050 OnOffDash            Only the even dashes are drawn, and cap-style applies to all internal ends of
   3051                      the individual dashes (except NotLast is treated as Butt). */
   3052 
   3053     XCB_GC_CAP_STYLE = 64,
   3054 /**< The cap-style defines how the endpoints of a path are drawn:
   3055 NotLast    The result is equivalent to Butt, except that for a line-width of zero the final
   3056            endpoint is not drawn.
   3057 Butt       The result is square at the endpoint (perpendicular to the slope of the line)
   3058            with no projection beyond.
   3059 Round      The result is a circular arc with its diameter equal to the line-width, centered
   3060            on the endpoint; it is equivalent to Butt for line-width zero.
   3061 Projecting The result is square at the end, but the path continues beyond the endpoint for
   3062            a distance equal to half the line-width; it is equivalent to Butt for line-width
   3063            zero. */
   3064 
   3065     XCB_GC_JOIN_STYLE = 128,
   3066 /**< The join-style defines how corners are drawn for wide lines:
   3067 Miter               The outer edges of the two lines extend to meet at an angle. However, if the
   3068                     angle is less than 11 degrees, a Bevel join-style is used instead.
   3069 Round               The result is a circular arc with a diameter equal to the line-width, centered
   3070                     on the joinpoint.
   3071 Bevel               The result is Butt endpoint styles, and then the triangular notch is filled. */
   3072 
   3073     XCB_GC_FILL_STYLE = 256,
   3074 /**< The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill
   3075 requests (for example, PolyText8, PolyText16, PolyFillRectangle, FillPoly, and PolyFillArc)
   3076 as well as for line requests with line-style Solid, (for example, PolyLine, PolySegment,
   3077 PolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash
   3078 or DoubleDash:
   3079 Solid                     Foreground
   3080 Tiled                     Tile
   3081 OpaqueStippled            A tile with the same width and height as stipple but with background
   3082                           everywhere stipple has a zero and with foreground everywhere stipple
   3083                           has a one
   3084 Stippled                  Foreground masked by stipple
   3085 For the odd dashes for line requests with line-style DoubleDash:
   3086 Solid                     Background
   3087 Tiled                     Same as for even dashes
   3088 OpaqueStippled            Same as for even dashes
   3089 Stippled                  Background masked by stipple */
   3090 
   3091     XCB_GC_FILL_RULE = 512,
   3092 /**<  */
   3093 
   3094     XCB_GC_TILE = 1024,
   3095 /**< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
   3096 dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
   3097 the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
   3098 specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
   3099 origin of whatever destination drawable is specified in a graphics request.
   3100 The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
   3101 The stipple pixmap must have depth one and must have the same root as the gcontext (or a
   3102 Match error results). For fill-style Stippled (but not fill-style
   3103 OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
   3104 additional clip mask to be ANDed with the clip-mask.
   3105 Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
   3106 others. */
   3107 
   3108     XCB_GC_STIPPLE = 2048,
   3109 /**< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
   3110 dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
   3111 the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
   3112 specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
   3113 origin of whatever destination drawable is specified in a graphics request.
   3114 The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
   3115 The stipple pixmap must have depth one and must have the same root as the gcontext (or a
   3116 Match error results). For fill-style Stippled (but not fill-style
   3117 OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
   3118 additional clip mask to be ANDed with the clip-mask.
   3119 Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
   3120 others. */
   3121 
   3122     XCB_GC_TILE_STIPPLE_ORIGIN_X = 4096,
   3123 /**< TODO */
   3124 
   3125     XCB_GC_TILE_STIPPLE_ORIGIN_Y = 8192,
   3126 /**< TODO */
   3127 
   3128     XCB_GC_FONT = 16384,
   3129 /**< Which font to use for the `ImageText8` and `ImageText16` requests. */
   3130 
   3131     XCB_GC_SUBWINDOW_MODE = 32768,
   3132 /**< For ClipByChildren, both source and destination windows are additionally
   3133 clipped by all viewable InputOutput children. For IncludeInferiors, neither
   3134 source nor destination window is
   3135 clipped by inferiors. This will result in including subwindow contents in the source and drawing
   3136 through subwindow boundaries of the destination. The use of IncludeInferiors with a source or
   3137 destination window of one depth with mapped inferiors of differing depth is not illegal, but the
   3138 semantics is undefined by the core protocol. */
   3139 
   3140     XCB_GC_GRAPHICS_EXPOSURES = 65536,
   3141 /**< Whether ExposureEvents should be generated (1) or not (0).
   3142 
   3143 The default is 1. */
   3144 
   3145     XCB_GC_CLIP_ORIGIN_X = 131072,
   3146 /**< TODO */
   3147 
   3148     XCB_GC_CLIP_ORIGIN_Y = 262144,
   3149 /**< TODO */
   3150 
   3151     XCB_GC_CLIP_MASK = 524288,
   3152 /**< The clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has
   3153 bits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where
   3154 the clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip
   3155 sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. If a pixmap is specified as the clip-mask, it must have
   3156 depth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None,
   3157 then pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the
   3158 SetClipRectangles request. */
   3159 
   3160     XCB_GC_DASH_OFFSET = 1048576,
   3161 /**< TODO */
   3162 
   3163     XCB_GC_DASH_LIST = 2097152,
   3164 /**< TODO */
   3165 
   3166     XCB_GC_ARC_MODE = 4194304
   3167 /**< TODO */
   3168 
   3169 } xcb_gc_t;
   3170 
   3171 typedef enum xcb_gx_t {
   3172     XCB_GX_CLEAR = 0,
   3173     XCB_GX_AND = 1,
   3174     XCB_GX_AND_REVERSE = 2,
   3175     XCB_GX_COPY = 3,
   3176     XCB_GX_AND_INVERTED = 4,
   3177     XCB_GX_NOOP = 5,
   3178     XCB_GX_XOR = 6,
   3179     XCB_GX_OR = 7,
   3180     XCB_GX_NOR = 8,
   3181     XCB_GX_EQUIV = 9,
   3182     XCB_GX_INVERT = 10,
   3183     XCB_GX_OR_REVERSE = 11,
   3184     XCB_GX_COPY_INVERTED = 12,
   3185     XCB_GX_OR_INVERTED = 13,
   3186     XCB_GX_NAND = 14,
   3187     XCB_GX_SET = 15
   3188 } xcb_gx_t;
   3189 
   3190 typedef enum xcb_line_style_t {
   3191     XCB_LINE_STYLE_SOLID = 0,
   3192     XCB_LINE_STYLE_ON_OFF_DASH = 1,
   3193     XCB_LINE_STYLE_DOUBLE_DASH = 2
   3194 } xcb_line_style_t;
   3195 
   3196 typedef enum xcb_cap_style_t {
   3197     XCB_CAP_STYLE_NOT_LAST = 0,
   3198     XCB_CAP_STYLE_BUTT = 1,
   3199     XCB_CAP_STYLE_ROUND = 2,
   3200     XCB_CAP_STYLE_PROJECTING = 3
   3201 } xcb_cap_style_t;
   3202 
   3203 typedef enum xcb_join_style_t {
   3204     XCB_JOIN_STYLE_MITER = 0,
   3205     XCB_JOIN_STYLE_ROUND = 1,
   3206     XCB_JOIN_STYLE_BEVEL = 2
   3207 } xcb_join_style_t;
   3208 
   3209 typedef enum xcb_fill_style_t {
   3210     XCB_FILL_STYLE_SOLID = 0,
   3211     XCB_FILL_STYLE_TILED = 1,
   3212     XCB_FILL_STYLE_STIPPLED = 2,
   3213     XCB_FILL_STYLE_OPAQUE_STIPPLED = 3
   3214 } xcb_fill_style_t;
   3215 
   3216 typedef enum xcb_fill_rule_t {
   3217     XCB_FILL_RULE_EVEN_ODD = 0,
   3218     XCB_FILL_RULE_WINDING = 1
   3219 } xcb_fill_rule_t;
   3220 
   3221 typedef enum xcb_subwindow_mode_t {
   3222     XCB_SUBWINDOW_MODE_CLIP_BY_CHILDREN = 0,
   3223     XCB_SUBWINDOW_MODE_INCLUDE_INFERIORS = 1
   3224 } xcb_subwindow_mode_t;
   3225 
   3226 typedef enum xcb_arc_mode_t {
   3227     XCB_ARC_MODE_CHORD = 0,
   3228     XCB_ARC_MODE_PIE_SLICE = 1
   3229 } xcb_arc_mode_t;
   3230 
   3231 /**
   3232  * @brief xcb_create_gc_value_list_t
   3233  **/
   3234 typedef struct xcb_create_gc_value_list_t {
   3235     uint32_t     function;
   3236     uint32_t     plane_mask;
   3237     uint32_t     foreground;
   3238     uint32_t     background;
   3239     uint32_t     line_width;
   3240     uint32_t     line_style;
   3241     uint32_t     cap_style;
   3242     uint32_t     join_style;
   3243     uint32_t     fill_style;
   3244     uint32_t     fill_rule;
   3245     xcb_pixmap_t tile;
   3246     xcb_pixmap_t stipple;
   3247     int32_t      tile_stipple_x_origin;
   3248     int32_t      tile_stipple_y_origin;
   3249     xcb_font_t   font;
   3250     uint32_t     subwindow_mode;
   3251     xcb_bool32_t graphics_exposures;
   3252     int32_t      clip_x_origin;
   3253     int32_t      clip_y_origin;
   3254     xcb_pixmap_t clip_mask;
   3255     uint32_t     dash_offset;
   3256     uint32_t     dashes;
   3257     uint32_t     arc_mode;
   3258 } xcb_create_gc_value_list_t;
   3259 
   3260 /** Opcode for xcb_create_gc. */
   3261 #define XCB_CREATE_GC 55
   3262 
   3263 /**
   3264  * @brief xcb_create_gc_request_t
   3265  **/
   3266 typedef struct xcb_create_gc_request_t {
   3267     uint8_t        major_opcode;
   3268     uint8_t        pad0;
   3269     uint16_t       length;
   3270     xcb_gcontext_t cid;
   3271     xcb_drawable_t drawable;
   3272     uint32_t       value_mask;
   3273 } xcb_create_gc_request_t;
   3274 
   3275 /**
   3276  * @brief xcb_change_gc_value_list_t
   3277  **/
   3278 typedef struct xcb_change_gc_value_list_t {
   3279     uint32_t     function;
   3280     uint32_t     plane_mask;
   3281     uint32_t     foreground;
   3282     uint32_t     background;
   3283     uint32_t     line_width;
   3284     uint32_t     line_style;
   3285     uint32_t     cap_style;
   3286     uint32_t     join_style;
   3287     uint32_t     fill_style;
   3288     uint32_t     fill_rule;
   3289     xcb_pixmap_t tile;
   3290     xcb_pixmap_t stipple;
   3291     int32_t      tile_stipple_x_origin;
   3292     int32_t      tile_stipple_y_origin;
   3293     xcb_font_t   font;
   3294     uint32_t     subwindow_mode;
   3295     xcb_bool32_t graphics_exposures;
   3296     int32_t      clip_x_origin;
   3297     int32_t      clip_y_origin;
   3298     xcb_pixmap_t clip_mask;
   3299     uint32_t     dash_offset;
   3300     uint32_t     dashes;
   3301     uint32_t     arc_mode;
   3302 } xcb_change_gc_value_list_t;
   3303 
   3304 /** Opcode for xcb_change_gc. */
   3305 #define XCB_CHANGE_GC 56
   3306 
   3307 /**
   3308  * @brief xcb_change_gc_request_t
   3309  **/
   3310 typedef struct xcb_change_gc_request_t {
   3311     uint8_t        major_opcode;
   3312     uint8_t        pad0;
   3313     uint16_t       length;
   3314     xcb_gcontext_t gc;
   3315     uint32_t       value_mask;
   3316 } xcb_change_gc_request_t;
   3317 
   3318 /** Opcode for xcb_copy_gc. */
   3319 #define XCB_COPY_GC 57
   3320 
   3321 /**
   3322  * @brief xcb_copy_gc_request_t
   3323  **/
   3324 typedef struct xcb_copy_gc_request_t {
   3325     uint8_t        major_opcode;
   3326     uint8_t        pad0;
   3327     uint16_t       length;
   3328     xcb_gcontext_t src_gc;
   3329     xcb_gcontext_t dst_gc;
   3330     uint32_t       value_mask;
   3331 } xcb_copy_gc_request_t;
   3332 
   3333 /** Opcode for xcb_set_dashes. */
   3334 #define XCB_SET_DASHES 58
   3335 
   3336 /**
   3337  * @brief xcb_set_dashes_request_t
   3338  **/
   3339 typedef struct xcb_set_dashes_request_t {
   3340     uint8_t        major_opcode;
   3341     uint8_t        pad0;
   3342     uint16_t       length;
   3343     xcb_gcontext_t gc;
   3344     uint16_t       dash_offset;
   3345     uint16_t       dashes_len;
   3346 } xcb_set_dashes_request_t;
   3347 
   3348 typedef enum xcb_clip_ordering_t {
   3349     XCB_CLIP_ORDERING_UNSORTED = 0,
   3350     XCB_CLIP_ORDERING_Y_SORTED = 1,
   3351     XCB_CLIP_ORDERING_YX_SORTED = 2,
   3352     XCB_CLIP_ORDERING_YX_BANDED = 3
   3353 } xcb_clip_ordering_t;
   3354 
   3355 /** Opcode for xcb_set_clip_rectangles. */
   3356 #define XCB_SET_CLIP_RECTANGLES 59
   3357 
   3358 /**
   3359  * @brief xcb_set_clip_rectangles_request_t
   3360  **/
   3361 typedef struct xcb_set_clip_rectangles_request_t {
   3362     uint8_t        major_opcode;
   3363     uint8_t        ordering;
   3364     uint16_t       length;
   3365     xcb_gcontext_t gc;
   3366     int16_t        clip_x_origin;
   3367     int16_t        clip_y_origin;
   3368 } xcb_set_clip_rectangles_request_t;
   3369 
   3370 /** Opcode for xcb_free_gc. */
   3371 #define XCB_FREE_GC 60
   3372 
   3373 /**
   3374  * @brief xcb_free_gc_request_t
   3375  **/
   3376 typedef struct xcb_free_gc_request_t {
   3377     uint8_t        major_opcode;
   3378     uint8_t        pad0;
   3379     uint16_t       length;
   3380     xcb_gcontext_t gc;
   3381 } xcb_free_gc_request_t;
   3382 
   3383 /** Opcode for xcb_clear_area. */
   3384 #define XCB_CLEAR_AREA 61
   3385 
   3386 /**
   3387  * @brief xcb_clear_area_request_t
   3388  **/
   3389 typedef struct xcb_clear_area_request_t {
   3390     uint8_t      major_opcode;
   3391     uint8_t      exposures;
   3392     uint16_t     length;
   3393     xcb_window_t window;
   3394     int16_t      x;
   3395     int16_t      y;
   3396     uint16_t     width;
   3397     uint16_t     height;
   3398 } xcb_clear_area_request_t;
   3399 
   3400 /** Opcode for xcb_copy_area. */
   3401 #define XCB_COPY_AREA 62
   3402 
   3403 /**
   3404  * @brief xcb_copy_area_request_t
   3405  **/
   3406 typedef struct xcb_copy_area_request_t {
   3407     uint8_t        major_opcode;
   3408     uint8_t        pad0;
   3409     uint16_t       length;
   3410     xcb_drawable_t src_drawable;
   3411     xcb_drawable_t dst_drawable;
   3412     xcb_gcontext_t gc;
   3413     int16_t        src_x;
   3414     int16_t        src_y;
   3415     int16_t        dst_x;
   3416     int16_t        dst_y;
   3417     uint16_t       width;
   3418     uint16_t       height;
   3419 } xcb_copy_area_request_t;
   3420 
   3421 /** Opcode for xcb_copy_plane. */
   3422 #define XCB_COPY_PLANE 63
   3423 
   3424 /**
   3425  * @brief xcb_copy_plane_request_t
   3426  **/
   3427 typedef struct xcb_copy_plane_request_t {
   3428     uint8_t        major_opcode;
   3429     uint8_t        pad0;
   3430     uint16_t       length;
   3431     xcb_drawable_t src_drawable;
   3432     xcb_drawable_t dst_drawable;
   3433     xcb_gcontext_t gc;
   3434     int16_t        src_x;
   3435     int16_t        src_y;
   3436     int16_t        dst_x;
   3437     int16_t        dst_y;
   3438     uint16_t       width;
   3439     uint16_t       height;
   3440     uint32_t       bit_plane;
   3441 } xcb_copy_plane_request_t;
   3442 
   3443 typedef enum xcb_coord_mode_t {
   3444     XCB_COORD_MODE_ORIGIN = 0,
   3445 /**< Treats all coordinates as relative to the origin. */
   3446 
   3447     XCB_COORD_MODE_PREVIOUS = 1
   3448 /**< Treats all coordinates after the first as relative to the previous coordinate. */
   3449 
   3450 } xcb_coord_mode_t;
   3451 
   3452 /** Opcode for xcb_poly_point. */
   3453 #define XCB_POLY_POINT 64
   3454 
   3455 /**
   3456  * @brief xcb_poly_point_request_t
   3457  **/
   3458 typedef struct xcb_poly_point_request_t {
   3459     uint8_t        major_opcode;
   3460     uint8_t        coordinate_mode;
   3461     uint16_t       length;
   3462     xcb_drawable_t drawable;
   3463     xcb_gcontext_t gc;
   3464 } xcb_poly_point_request_t;
   3465 
   3466 /** Opcode for xcb_poly_line. */
   3467 #define XCB_POLY_LINE 65
   3468 
   3469 /**
   3470  * @brief xcb_poly_line_request_t
   3471  **/
   3472 typedef struct xcb_poly_line_request_t {
   3473     uint8_t        major_opcode;
   3474     uint8_t        coordinate_mode;
   3475     uint16_t       length;
   3476     xcb_drawable_t drawable;
   3477     xcb_gcontext_t gc;
   3478 } xcb_poly_line_request_t;
   3479 
   3480 /**
   3481  * @brief xcb_segment_t
   3482  **/
   3483 typedef struct xcb_segment_t {
   3484     int16_t x1;
   3485     int16_t y1;
   3486     int16_t x2;
   3487     int16_t y2;
   3488 } xcb_segment_t;
   3489 
   3490 /**
   3491  * @brief xcb_segment_iterator_t
   3492  **/
   3493 typedef struct xcb_segment_iterator_t {
   3494     xcb_segment_t *data;
   3495     int            rem;
   3496     int            index;
   3497 } xcb_segment_iterator_t;
   3498 
   3499 /** Opcode for xcb_poly_segment. */
   3500 #define XCB_POLY_SEGMENT 66
   3501 
   3502 /**
   3503  * @brief xcb_poly_segment_request_t
   3504  **/
   3505 typedef struct xcb_poly_segment_request_t {
   3506     uint8_t        major_opcode;
   3507     uint8_t        pad0;
   3508     uint16_t       length;
   3509     xcb_drawable_t drawable;
   3510     xcb_gcontext_t gc;
   3511 } xcb_poly_segment_request_t;
   3512 
   3513 /** Opcode for xcb_poly_rectangle. */
   3514 #define XCB_POLY_RECTANGLE 67
   3515 
   3516 /**
   3517  * @brief xcb_poly_rectangle_request_t
   3518  **/
   3519 typedef struct xcb_poly_rectangle_request_t {
   3520     uint8_t        major_opcode;
   3521     uint8_t        pad0;
   3522     uint16_t       length;
   3523     xcb_drawable_t drawable;
   3524     xcb_gcontext_t gc;
   3525 } xcb_poly_rectangle_request_t;
   3526 
   3527 /** Opcode for xcb_poly_arc. */
   3528 #define XCB_POLY_ARC 68
   3529 
   3530 /**
   3531  * @brief xcb_poly_arc_request_t
   3532  **/
   3533 typedef struct xcb_poly_arc_request_t {
   3534     uint8_t        major_opcode;
   3535     uint8_t        pad0;
   3536     uint16_t       length;
   3537     xcb_drawable_t drawable;
   3538     xcb_gcontext_t gc;
   3539 } xcb_poly_arc_request_t;
   3540 
   3541 typedef enum xcb_poly_shape_t {
   3542     XCB_POLY_SHAPE_COMPLEX = 0,
   3543     XCB_POLY_SHAPE_NONCONVEX = 1,
   3544     XCB_POLY_SHAPE_CONVEX = 2
   3545 } xcb_poly_shape_t;
   3546 
   3547 /** Opcode for xcb_fill_poly. */
   3548 #define XCB_FILL_POLY 69
   3549 
   3550 /**
   3551  * @brief xcb_fill_poly_request_t
   3552  **/
   3553 typedef struct xcb_fill_poly_request_t {
   3554     uint8_t        major_opcode;
   3555     uint8_t        pad0;
   3556     uint16_t       length;
   3557     xcb_drawable_t drawable;
   3558     xcb_gcontext_t gc;
   3559     uint8_t        shape;
   3560     uint8_t        coordinate_mode;
   3561     uint8_t        pad1[2];
   3562 } xcb_fill_poly_request_t;
   3563 
   3564 /** Opcode for xcb_poly_fill_rectangle. */
   3565 #define XCB_POLY_FILL_RECTANGLE 70
   3566 
   3567 /**
   3568  * @brief xcb_poly_fill_rectangle_request_t
   3569  **/
   3570 typedef struct xcb_poly_fill_rectangle_request_t {
   3571     uint8_t        major_opcode;
   3572     uint8_t        pad0;
   3573     uint16_t       length;
   3574     xcb_drawable_t drawable;
   3575     xcb_gcontext_t gc;
   3576 } xcb_poly_fill_rectangle_request_t;
   3577 
   3578 /** Opcode for xcb_poly_fill_arc. */
   3579 #define XCB_POLY_FILL_ARC 71
   3580 
   3581 /**
   3582  * @brief xcb_poly_fill_arc_request_t
   3583  **/
   3584 typedef struct xcb_poly_fill_arc_request_t {
   3585     uint8_t        major_opcode;
   3586     uint8_t        pad0;
   3587     uint16_t       length;
   3588     xcb_drawable_t drawable;
   3589     xcb_gcontext_t gc;
   3590 } xcb_poly_fill_arc_request_t;
   3591 
   3592 typedef enum xcb_image_format_t {
   3593     XCB_IMAGE_FORMAT_XY_BITMAP = 0,
   3594     XCB_IMAGE_FORMAT_XY_PIXMAP = 1,
   3595     XCB_IMAGE_FORMAT_Z_PIXMAP = 2
   3596 } xcb_image_format_t;
   3597 
   3598 /** Opcode for xcb_put_image. */
   3599 #define XCB_PUT_IMAGE 72
   3600 
   3601 /**
   3602  * @brief xcb_put_image_request_t
   3603  **/
   3604 typedef struct xcb_put_image_request_t {
   3605     uint8_t        major_opcode;
   3606     uint8_t        format;
   3607     uint16_t       length;
   3608     xcb_drawable_t drawable;
   3609     xcb_gcontext_t gc;
   3610     uint16_t       width;
   3611     uint16_t       height;
   3612     int16_t        dst_x;
   3613     int16_t        dst_y;
   3614     uint8_t        left_pad;
   3615     uint8_t        depth;
   3616     uint8_t        pad0[2];
   3617 } xcb_put_image_request_t;
   3618 
   3619 /**
   3620  * @brief xcb_get_image_cookie_t
   3621  **/
   3622 typedef struct xcb_get_image_cookie_t {
   3623     unsigned int sequence;
   3624 } xcb_get_image_cookie_t;
   3625 
   3626 /** Opcode for xcb_get_image. */
   3627 #define XCB_GET_IMAGE 73
   3628 
   3629 /**
   3630  * @brief xcb_get_image_request_t
   3631  **/
   3632 typedef struct xcb_get_image_request_t {
   3633     uint8_t        major_opcode;
   3634     uint8_t        format;
   3635     uint16_t       length;
   3636     xcb_drawable_t drawable;
   3637     int16_t        x;
   3638     int16_t        y;
   3639     uint16_t       width;
   3640     uint16_t       height;
   3641     uint32_t       plane_mask;
   3642 } xcb_get_image_request_t;
   3643 
   3644 /**
   3645  * @brief xcb_get_image_reply_t
   3646  **/
   3647 typedef struct xcb_get_image_reply_t {
   3648     uint8_t        response_type;
   3649     uint8_t        depth;
   3650     uint16_t       sequence;
   3651     uint32_t       length;
   3652     xcb_visualid_t visual;
   3653     uint8_t        pad0[20];
   3654 } xcb_get_image_reply_t;
   3655 
   3656 /** Opcode for xcb_poly_text_8. */
   3657 #define XCB_POLY_TEXT_8 74
   3658 
   3659 /**
   3660  * @brief xcb_poly_text_8_request_t
   3661  **/
   3662 typedef struct xcb_poly_text_8_request_t {
   3663     uint8_t        major_opcode;
   3664     uint8_t        pad0;
   3665     uint16_t       length;
   3666     xcb_drawable_t drawable;
   3667     xcb_gcontext_t gc;
   3668     int16_t        x;
   3669     int16_t        y;
   3670 } xcb_poly_text_8_request_t;
   3671 
   3672 /** Opcode for xcb_poly_text_16. */
   3673 #define XCB_POLY_TEXT_16 75
   3674 
   3675 /**
   3676  * @brief xcb_poly_text_16_request_t
   3677  **/
   3678 typedef struct xcb_poly_text_16_request_t {
   3679     uint8_t        major_opcode;
   3680     uint8_t        pad0;
   3681     uint16_t       length;
   3682     xcb_drawable_t drawable;
   3683     xcb_gcontext_t gc;
   3684     int16_t        x;
   3685     int16_t        y;
   3686 } xcb_poly_text_16_request_t;
   3687 
   3688 /** Opcode for xcb_image_text_8. */
   3689 #define XCB_IMAGE_TEXT_8 76
   3690 
   3691 /**
   3692  * @brief xcb_image_text_8_request_t
   3693  **/
   3694 typedef struct xcb_image_text_8_request_t {
   3695     uint8_t        major_opcode;
   3696     uint8_t        string_len;
   3697     uint16_t       length;
   3698     xcb_drawable_t drawable;
   3699     xcb_gcontext_t gc;
   3700     int16_t        x;
   3701     int16_t        y;
   3702 } xcb_image_text_8_request_t;
   3703 
   3704 /** Opcode for xcb_image_text_16. */
   3705 #define XCB_IMAGE_TEXT_16 77
   3706 
   3707 /**
   3708  * @brief xcb_image_text_16_request_t
   3709  **/
   3710 typedef struct xcb_image_text_16_request_t {
   3711     uint8_t        major_opcode;
   3712     uint8_t        string_len;
   3713     uint16_t       length;
   3714     xcb_drawable_t drawable;
   3715     xcb_gcontext_t gc;
   3716     int16_t        x;
   3717     int16_t        y;
   3718 } xcb_image_text_16_request_t;
   3719 
   3720 typedef enum xcb_colormap_alloc_t {
   3721     XCB_COLORMAP_ALLOC_NONE = 0,
   3722     XCB_COLORMAP_ALLOC_ALL = 1
   3723 } xcb_colormap_alloc_t;
   3724 
   3725 /** Opcode for xcb_create_colormap. */
   3726 #define XCB_CREATE_COLORMAP 78
   3727 
   3728 /**
   3729  * @brief xcb_create_colormap_request_t
   3730  **/
   3731 typedef struct xcb_create_colormap_request_t {
   3732     uint8_t        major_opcode;
   3733     uint8_t        alloc;
   3734     uint16_t       length;
   3735     xcb_colormap_t mid;
   3736     xcb_window_t   window;
   3737     xcb_visualid_t visual;
   3738 } xcb_create_colormap_request_t;
   3739 
   3740 /** Opcode for xcb_free_colormap. */
   3741 #define XCB_FREE_COLORMAP 79
   3742 
   3743 /**
   3744  * @brief xcb_free_colormap_request_t
   3745  **/
   3746 typedef struct xcb_free_colormap_request_t {
   3747     uint8_t        major_opcode;
   3748     uint8_t        pad0;
   3749     uint16_t       length;
   3750     xcb_colormap_t cmap;
   3751 } xcb_free_colormap_request_t;
   3752 
   3753 /** Opcode for xcb_copy_colormap_and_free. */
   3754 #define XCB_COPY_COLORMAP_AND_FREE 80
   3755 
   3756 /**
   3757  * @brief xcb_copy_colormap_and_free_request_t
   3758  **/
   3759 typedef struct xcb_copy_colormap_and_free_request_t {
   3760     uint8_t        major_opcode;
   3761     uint8_t        pad0;
   3762     uint16_t       length;
   3763     xcb_colormap_t mid;
   3764     xcb_colormap_t src_cmap;
   3765 } xcb_copy_colormap_and_free_request_t;
   3766 
   3767 /** Opcode for xcb_install_colormap. */
   3768 #define XCB_INSTALL_COLORMAP 81
   3769 
   3770 /**
   3771  * @brief xcb_install_colormap_request_t
   3772  **/
   3773 typedef struct xcb_install_colormap_request_t {
   3774     uint8_t        major_opcode;
   3775     uint8_t        pad0;
   3776     uint16_t       length;
   3777     xcb_colormap_t cmap;
   3778 } xcb_install_colormap_request_t;
   3779 
   3780 /** Opcode for xcb_uninstall_colormap. */
   3781 #define XCB_UNINSTALL_COLORMAP 82
   3782 
   3783 /**
   3784  * @brief xcb_uninstall_colormap_request_t
   3785  **/
   3786 typedef struct xcb_uninstall_colormap_request_t {
   3787     uint8_t        major_opcode;
   3788     uint8_t        pad0;
   3789     uint16_t       length;
   3790     xcb_colormap_t cmap;
   3791 } xcb_uninstall_colormap_request_t;
   3792 
   3793 /**
   3794  * @brief xcb_list_installed_colormaps_cookie_t
   3795  **/
   3796 typedef struct xcb_list_installed_colormaps_cookie_t {
   3797     unsigned int sequence;
   3798 } xcb_list_installed_colormaps_cookie_t;
   3799 
   3800 /** Opcode for xcb_list_installed_colormaps. */
   3801 #define XCB_LIST_INSTALLED_COLORMAPS 83
   3802 
   3803 /**
   3804  * @brief xcb_list_installed_colormaps_request_t
   3805  **/
   3806 typedef struct xcb_list_installed_colormaps_request_t {
   3807     uint8_t      major_opcode;
   3808     uint8_t      pad0;
   3809     uint16_t     length;
   3810     xcb_window_t window;
   3811 } xcb_list_installed_colormaps_request_t;
   3812 
   3813 /**
   3814  * @brief xcb_list_installed_colormaps_reply_t
   3815  **/
   3816 typedef struct xcb_list_installed_colormaps_reply_t {
   3817     uint8_t  response_type;
   3818     uint8_t  pad0;
   3819     uint16_t sequence;
   3820     uint32_t length;
   3821     uint16_t cmaps_len;
   3822     uint8_t  pad1[22];
   3823 } xcb_list_installed_colormaps_reply_t;
   3824 
   3825 /**
   3826  * @brief xcb_alloc_color_cookie_t
   3827  **/
   3828 typedef struct xcb_alloc_color_cookie_t {
   3829     unsigned int sequence;
   3830 } xcb_alloc_color_cookie_t;
   3831 
   3832 /** Opcode for xcb_alloc_color. */
   3833 #define XCB_ALLOC_COLOR 84
   3834 
   3835 /**
   3836  * @brief xcb_alloc_color_request_t
   3837  **/
   3838 typedef struct xcb_alloc_color_request_t {
   3839     uint8_t        major_opcode;
   3840     uint8_t        pad0;
   3841     uint16_t       length;
   3842     xcb_colormap_t cmap;
   3843     uint16_t       red;
   3844     uint16_t       green;
   3845     uint16_t       blue;
   3846     uint8_t        pad1[2];
   3847 } xcb_alloc_color_request_t;
   3848 
   3849 /**
   3850  * @brief xcb_alloc_color_reply_t
   3851  **/
   3852 typedef struct xcb_alloc_color_reply_t {
   3853     uint8_t  response_type;
   3854     uint8_t  pad0;
   3855     uint16_t sequence;
   3856     uint32_t length;
   3857     uint16_t red;
   3858     uint16_t green;
   3859     uint16_t blue;
   3860     uint8_t  pad1[2];
   3861     uint32_t pixel;
   3862 } xcb_alloc_color_reply_t;
   3863 
   3864 /**
   3865  * @brief xcb_alloc_named_color_cookie_t
   3866  **/
   3867 typedef struct xcb_alloc_named_color_cookie_t {
   3868     unsigned int sequence;
   3869 } xcb_alloc_named_color_cookie_t;
   3870 
   3871 /** Opcode for xcb_alloc_named_color. */
   3872 #define XCB_ALLOC_NAMED_COLOR 85
   3873 
   3874 /**
   3875  * @brief xcb_alloc_named_color_request_t
   3876  **/
   3877 typedef struct xcb_alloc_named_color_request_t {
   3878     uint8_t        major_opcode;
   3879     uint8_t        pad0;
   3880     uint16_t       length;
   3881     xcb_colormap_t cmap;
   3882     uint16_t       name_len;
   3883     uint8_t        pad1[2];
   3884 } xcb_alloc_named_color_request_t;
   3885 
   3886 /**
   3887  * @brief xcb_alloc_named_color_reply_t
   3888  **/
   3889 typedef struct xcb_alloc_named_color_reply_t {
   3890     uint8_t  response_type;
   3891     uint8_t  pad0;
   3892     uint16_t sequence;
   3893     uint32_t length;
   3894     uint32_t pixel;
   3895     uint16_t exact_red;
   3896     uint16_t exact_green;
   3897     uint16_t exact_blue;
   3898     uint16_t visual_red;
   3899     uint16_t visual_green;
   3900     uint16_t visual_blue;
   3901 } xcb_alloc_named_color_reply_t;
   3902 
   3903 /**
   3904  * @brief xcb_alloc_color_cells_cookie_t
   3905  **/
   3906 typedef struct xcb_alloc_color_cells_cookie_t {
   3907     unsigned int sequence;
   3908 } xcb_alloc_color_cells_cookie_t;
   3909 
   3910 /** Opcode for xcb_alloc_color_cells. */
   3911 #define XCB_ALLOC_COLOR_CELLS 86
   3912 
   3913 /**
   3914  * @brief xcb_alloc_color_cells_request_t
   3915  **/
   3916 typedef struct xcb_alloc_color_cells_request_t {
   3917     uint8_t        major_opcode;
   3918     uint8_t        contiguous;
   3919     uint16_t       length;
   3920     xcb_colormap_t cmap;
   3921     uint16_t       colors;
   3922     uint16_t       planes;
   3923 } xcb_alloc_color_cells_request_t;
   3924 
   3925 /**
   3926  * @brief xcb_alloc_color_cells_reply_t
   3927  **/
   3928 typedef struct xcb_alloc_color_cells_reply_t {
   3929     uint8_t  response_type;
   3930     uint8_t  pad0;
   3931     uint16_t sequence;
   3932     uint32_t length;
   3933     uint16_t pixels_len;
   3934     uint16_t masks_len;
   3935     uint8_t  pad1[20];
   3936 } xcb_alloc_color_cells_reply_t;
   3937 
   3938 /**
   3939  * @brief xcb_alloc_color_planes_cookie_t
   3940  **/
   3941 typedef struct xcb_alloc_color_planes_cookie_t {
   3942     unsigned int sequence;
   3943 } xcb_alloc_color_planes_cookie_t;
   3944 
   3945 /** Opcode for xcb_alloc_color_planes. */
   3946 #define XCB_ALLOC_COLOR_PLANES 87
   3947 
   3948 /**
   3949  * @brief xcb_alloc_color_planes_request_t
   3950  **/
   3951 typedef struct xcb_alloc_color_planes_request_t {
   3952     uint8_t        major_opcode;
   3953     uint8_t        contiguous;
   3954     uint16_t       length;
   3955     xcb_colormap_t cmap;
   3956     uint16_t       colors;
   3957     uint16_t       reds;
   3958     uint16_t       greens;
   3959     uint16_t       blues;
   3960 } xcb_alloc_color_planes_request_t;
   3961 
   3962 /**
   3963  * @brief xcb_alloc_color_planes_reply_t
   3964  **/
   3965 typedef struct xcb_alloc_color_planes_reply_t {
   3966     uint8_t  response_type;
   3967     uint8_t  pad0;
   3968     uint16_t sequence;
   3969     uint32_t length;
   3970     uint16_t pixels_len;
   3971     uint8_t  pad1[2];
   3972     uint32_t red_mask;
   3973     uint32_t green_mask;
   3974     uint32_t blue_mask;
   3975     uint8_t  pad2[8];
   3976 } xcb_alloc_color_planes_reply_t;
   3977 
   3978 /** Opcode for xcb_free_colors. */
   3979 #define XCB_FREE_COLORS 88
   3980 
   3981 /**
   3982  * @brief xcb_free_colors_request_t
   3983  **/
   3984 typedef struct xcb_free_colors_request_t {
   3985     uint8_t        major_opcode;
   3986     uint8_t        pad0;
   3987     uint16_t       length;
   3988     xcb_colormap_t cmap;
   3989     uint32_t       plane_mask;
   3990 } xcb_free_colors_request_t;
   3991 
   3992 typedef enum xcb_color_flag_t {
   3993     XCB_COLOR_FLAG_RED = 1,
   3994     XCB_COLOR_FLAG_GREEN = 2,
   3995     XCB_COLOR_FLAG_BLUE = 4
   3996 } xcb_color_flag_t;
   3997 
   3998 /**
   3999  * @brief xcb_coloritem_t
   4000  **/
   4001 typedef struct xcb_coloritem_t {
   4002     uint32_t pixel;
   4003     uint16_t red;
   4004     uint16_t green;
   4005     uint16_t blue;
   4006     uint8_t  flags;
   4007     uint8_t  pad0;
   4008 } xcb_coloritem_t;
   4009 
   4010 /**
   4011  * @brief xcb_coloritem_iterator_t
   4012  **/
   4013 typedef struct xcb_coloritem_iterator_t {
   4014     xcb_coloritem_t *data;
   4015     int              rem;
   4016     int              index;
   4017 } xcb_coloritem_iterator_t;
   4018 
   4019 /** Opcode for xcb_store_colors. */
   4020 #define XCB_STORE_COLORS 89
   4021 
   4022 /**
   4023  * @brief xcb_store_colors_request_t
   4024  **/
   4025 typedef struct xcb_store_colors_request_t {
   4026     uint8_t        major_opcode;
   4027     uint8_t        pad0;
   4028     uint16_t       length;
   4029     xcb_colormap_t cmap;
   4030 } xcb_store_colors_request_t;
   4031 
   4032 /** Opcode for xcb_store_named_color. */
   4033 #define XCB_STORE_NAMED_COLOR 90
   4034 
   4035 /**
   4036  * @brief xcb_store_named_color_request_t
   4037  **/
   4038 typedef struct xcb_store_named_color_request_t {
   4039     uint8_t        major_opcode;
   4040     uint8_t        flags;
   4041     uint16_t       length;
   4042     xcb_colormap_t cmap;
   4043     uint32_t       pixel;
   4044     uint16_t       name_len;
   4045     uint8_t        pad0[2];
   4046 } xcb_store_named_color_request_t;
   4047 
   4048 /**
   4049  * @brief xcb_rgb_t
   4050  **/
   4051 typedef struct xcb_rgb_t {
   4052     uint16_t red;
   4053     uint16_t green;
   4054     uint16_t blue;
   4055     uint8_t  pad0[2];
   4056 } xcb_rgb_t;
   4057 
   4058 /**
   4059  * @brief xcb_rgb_iterator_t
   4060  **/
   4061 typedef struct xcb_rgb_iterator_t {
   4062     xcb_rgb_t *data;
   4063     int        rem;
   4064     int        index;
   4065 } xcb_rgb_iterator_t;
   4066 
   4067 /**
   4068  * @brief xcb_query_colors_cookie_t
   4069  **/
   4070 typedef struct xcb_query_colors_cookie_t {
   4071     unsigned int sequence;
   4072 } xcb_query_colors_cookie_t;
   4073 
   4074 /** Opcode for xcb_query_colors. */
   4075 #define XCB_QUERY_COLORS 91
   4076 
   4077 /**
   4078  * @brief xcb_query_colors_request_t
   4079  **/
   4080 typedef struct xcb_query_colors_request_t {
   4081     uint8_t        major_opcode;
   4082     uint8_t        pad0;
   4083     uint16_t       length;
   4084     xcb_colormap_t cmap;
   4085 } xcb_query_colors_request_t;
   4086 
   4087 /**
   4088  * @brief xcb_query_colors_reply_t
   4089  **/
   4090 typedef struct xcb_query_colors_reply_t {
   4091     uint8_t  response_type;
   4092     uint8_t  pad0;
   4093     uint16_t sequence;
   4094     uint32_t length;
   4095     uint16_t colors_len;
   4096     uint8_t  pad1[22];
   4097 } xcb_query_colors_reply_t;
   4098 
   4099 /**
   4100  * @brief xcb_lookup_color_cookie_t
   4101  **/
   4102 typedef struct xcb_lookup_color_cookie_t {
   4103     unsigned int sequence;
   4104 } xcb_lookup_color_cookie_t;
   4105 
   4106 /** Opcode for xcb_lookup_color. */
   4107 #define XCB_LOOKUP_COLOR 92
   4108 
   4109 /**
   4110  * @brief xcb_lookup_color_request_t
   4111  **/
   4112 typedef struct xcb_lookup_color_request_t {
   4113     uint8_t        major_opcode;
   4114     uint8_t        pad0;
   4115     uint16_t       length;
   4116     xcb_colormap_t cmap;
   4117     uint16_t       name_len;
   4118     uint8_t        pad1[2];
   4119 } xcb_lookup_color_request_t;
   4120 
   4121 /**
   4122  * @brief xcb_lookup_color_reply_t
   4123  **/
   4124 typedef struct xcb_lookup_color_reply_t {
   4125     uint8_t  response_type;
   4126     uint8_t  pad0;
   4127     uint16_t sequence;
   4128     uint32_t length;
   4129     uint16_t exact_red;
   4130     uint16_t exact_green;
   4131     uint16_t exact_blue;
   4132     uint16_t visual_red;
   4133     uint16_t visual_green;
   4134     uint16_t visual_blue;
   4135 } xcb_lookup_color_reply_t;
   4136 
   4137 typedef enum xcb_pixmap_enum_t {
   4138     XCB_PIXMAP_NONE = 0
   4139 } xcb_pixmap_enum_t;
   4140 
   4141 /** Opcode for xcb_create_cursor. */
   4142 #define XCB_CREATE_CURSOR 93
   4143 
   4144 /**
   4145  * @brief xcb_create_cursor_request_t
   4146  **/
   4147 typedef struct xcb_create_cursor_request_t {
   4148     uint8_t      major_opcode;
   4149     uint8_t      pad0;
   4150     uint16_t     length;
   4151     xcb_cursor_t cid;
   4152     xcb_pixmap_t source;
   4153     xcb_pixmap_t mask;
   4154     uint16_t     fore_red;
   4155     uint16_t     fore_green;
   4156     uint16_t     fore_blue;
   4157     uint16_t     back_red;
   4158     uint16_t     back_green;
   4159     uint16_t     back_blue;
   4160     uint16_t     x;
   4161     uint16_t     y;
   4162 } xcb_create_cursor_request_t;
   4163 
   4164 typedef enum xcb_font_enum_t {
   4165     XCB_FONT_NONE = 0
   4166 } xcb_font_enum_t;
   4167 
   4168 /** Opcode for xcb_create_glyph_cursor. */
   4169 #define XCB_CREATE_GLYPH_CURSOR 94
   4170 
   4171 /**
   4172  * @brief xcb_create_glyph_cursor_request_t
   4173  **/
   4174 typedef struct xcb_create_glyph_cursor_request_t {
   4175     uint8_t      major_opcode;
   4176     uint8_t      pad0;
   4177     uint16_t     length;
   4178     xcb_cursor_t cid;
   4179     xcb_font_t   source_font;
   4180     xcb_font_t   mask_font;
   4181     uint16_t     source_char;
   4182     uint16_t     mask_char;
   4183     uint16_t     fore_red;
   4184     uint16_t     fore_green;
   4185     uint16_t     fore_blue;
   4186     uint16_t     back_red;
   4187     uint16_t     back_green;
   4188     uint16_t     back_blue;
   4189 } xcb_create_glyph_cursor_request_t;
   4190 
   4191 /** Opcode for xcb_free_cursor. */
   4192 #define XCB_FREE_CURSOR 95
   4193 
   4194 /**
   4195  * @brief xcb_free_cursor_request_t
   4196  **/
   4197 typedef struct xcb_free_cursor_request_t {
   4198     uint8_t      major_opcode;
   4199     uint8_t      pad0;
   4200     uint16_t     length;
   4201     xcb_cursor_t cursor;
   4202 } xcb_free_cursor_request_t;
   4203 
   4204 /** Opcode for xcb_recolor_cursor. */
   4205 #define XCB_RECOLOR_CURSOR 96
   4206 
   4207 /**
   4208  * @brief xcb_recolor_cursor_request_t
   4209  **/
   4210 typedef struct xcb_recolor_cursor_request_t {
   4211     uint8_t      major_opcode;
   4212     uint8_t      pad0;
   4213     uint16_t     length;
   4214     xcb_cursor_t cursor;
   4215     uint16_t     fore_red;
   4216     uint16_t     fore_green;
   4217     uint16_t     fore_blue;
   4218     uint16_t     back_red;
   4219     uint16_t     back_green;
   4220     uint16_t     back_blue;
   4221 } xcb_recolor_cursor_request_t;
   4222 
   4223 typedef enum xcb_query_shape_of_t {
   4224     XCB_QUERY_SHAPE_OF_LARGEST_CURSOR = 0,
   4225     XCB_QUERY_SHAPE_OF_FASTEST_TILE = 1,
   4226     XCB_QUERY_SHAPE_OF_FASTEST_STIPPLE = 2
   4227 } xcb_query_shape_of_t;
   4228 
   4229 /**
   4230  * @brief xcb_query_best_size_cookie_t
   4231  **/
   4232 typedef struct xcb_query_best_size_cookie_t {
   4233     unsigned int sequence;
   4234 } xcb_query_best_size_cookie_t;
   4235 
   4236 /** Opcode for xcb_query_best_size. */
   4237 #define XCB_QUERY_BEST_SIZE 97
   4238 
   4239 /**
   4240  * @brief xcb_query_best_size_request_t
   4241  **/
   4242 typedef struct xcb_query_best_size_request_t {
   4243     uint8_t        major_opcode;
   4244     uint8_t        _class;
   4245     uint16_t       length;
   4246     xcb_drawable_t drawable;
   4247     uint16_t       width;
   4248     uint16_t       height;
   4249 } xcb_query_best_size_request_t;
   4250 
   4251 /**
   4252  * @brief xcb_query_best_size_reply_t
   4253  **/
   4254 typedef struct xcb_query_best_size_reply_t {
   4255     uint8_t  response_type;
   4256     uint8_t  pad0;
   4257     uint16_t sequence;
   4258     uint32_t length;
   4259     uint16_t width;
   4260     uint16_t height;
   4261 } xcb_query_best_size_reply_t;
   4262 
   4263 /**
   4264  * @brief xcb_query_extension_cookie_t
   4265  **/
   4266 typedef struct xcb_query_extension_cookie_t {
   4267     unsigned int sequence;
   4268 } xcb_query_extension_cookie_t;
   4269 
   4270 /** Opcode for xcb_query_extension. */
   4271 #define XCB_QUERY_EXTENSION 98
   4272 
   4273 /**
   4274  * @brief xcb_query_extension_request_t
   4275  **/
   4276 typedef struct xcb_query_extension_request_t {
   4277     uint8_t  major_opcode;
   4278     uint8_t  pad0;
   4279     uint16_t length;
   4280     uint16_t name_len;
   4281     uint8_t  pad1[2];
   4282 } xcb_query_extension_request_t;
   4283 
   4284 /**
   4285  * @brief xcb_query_extension_reply_t
   4286  **/
   4287 typedef struct xcb_query_extension_reply_t {
   4288     uint8_t  response_type;
   4289     uint8_t  pad0;
   4290     uint16_t sequence;
   4291     uint32_t length;
   4292     uint8_t  present;
   4293     uint8_t  major_opcode;
   4294     uint8_t  first_event;
   4295     uint8_t  first_error;
   4296 } xcb_query_extension_reply_t;
   4297 
   4298 /**
   4299  * @brief xcb_list_extensions_cookie_t
   4300  **/
   4301 typedef struct xcb_list_extensions_cookie_t {
   4302     unsigned int sequence;
   4303 } xcb_list_extensions_cookie_t;
   4304 
   4305 /** Opcode for xcb_list_extensions. */
   4306 #define XCB_LIST_EXTENSIONS 99
   4307 
   4308 /**
   4309  * @brief xcb_list_extensions_request_t
   4310  **/
   4311 typedef struct xcb_list_extensions_request_t {
   4312     uint8_t  major_opcode;
   4313     uint8_t  pad0;
   4314     uint16_t length;
   4315 } xcb_list_extensions_request_t;
   4316 
   4317 /**
   4318  * @brief xcb_list_extensions_reply_t
   4319  **/
   4320 typedef struct xcb_list_extensions_reply_t {
   4321     uint8_t  response_type;
   4322     uint8_t  names_len;
   4323     uint16_t sequence;
   4324     uint32_t length;
   4325     uint8_t  pad0[24];
   4326 } xcb_list_extensions_reply_t;
   4327 
   4328 /** Opcode for xcb_change_keyboard_mapping. */
   4329 #define XCB_CHANGE_KEYBOARD_MAPPING 100
   4330 
   4331 /**
   4332  * @brief xcb_change_keyboard_mapping_request_t
   4333  **/
   4334 typedef struct xcb_change_keyboard_mapping_request_t {
   4335     uint8_t       major_opcode;
   4336     uint8_t       keycode_count;
   4337     uint16_t      length;
   4338     xcb_keycode_t first_keycode;
   4339     uint8_t       keysyms_per_keycode;
   4340     uint8_t       pad0[2];
   4341 } xcb_change_keyboard_mapping_request_t;
   4342 
   4343 /**
   4344  * @brief xcb_get_keyboard_mapping_cookie_t
   4345  **/
   4346 typedef struct xcb_get_keyboard_mapping_cookie_t {
   4347     unsigned int sequence;
   4348 } xcb_get_keyboard_mapping_cookie_t;
   4349 
   4350 /** Opcode for xcb_get_keyboard_mapping. */
   4351 #define XCB_GET_KEYBOARD_MAPPING 101
   4352 
   4353 /**
   4354  * @brief xcb_get_keyboard_mapping_request_t
   4355  **/
   4356 typedef struct xcb_get_keyboard_mapping_request_t {
   4357     uint8_t       major_opcode;
   4358     uint8_t       pad0;
   4359     uint16_t      length;
   4360     xcb_keycode_t first_keycode;
   4361     uint8_t       count;
   4362 } xcb_get_keyboard_mapping_request_t;
   4363 
   4364 /**
   4365  * @brief xcb_get_keyboard_mapping_reply_t
   4366  **/
   4367 typedef struct xcb_get_keyboard_mapping_reply_t {
   4368     uint8_t  response_type;
   4369     uint8_t  keysyms_per_keycode;
   4370     uint16_t sequence;
   4371     uint32_t length;
   4372     uint8_t  pad0[24];
   4373 } xcb_get_keyboard_mapping_reply_t;
   4374 
   4375 typedef enum xcb_kb_t {
   4376     XCB_KB_KEY_CLICK_PERCENT = 1,
   4377     XCB_KB_BELL_PERCENT = 2,
   4378     XCB_KB_BELL_PITCH = 4,
   4379     XCB_KB_BELL_DURATION = 8,
   4380     XCB_KB_LED = 16,
   4381     XCB_KB_LED_MODE = 32,
   4382     XCB_KB_KEY = 64,
   4383     XCB_KB_AUTO_REPEAT_MODE = 128
   4384 } xcb_kb_t;
   4385 
   4386 typedef enum xcb_led_mode_t {
   4387     XCB_LED_MODE_OFF = 0,
   4388     XCB_LED_MODE_ON = 1
   4389 } xcb_led_mode_t;
   4390 
   4391 typedef enum xcb_auto_repeat_mode_t {
   4392     XCB_AUTO_REPEAT_MODE_OFF = 0,
   4393     XCB_AUTO_REPEAT_MODE_ON = 1,
   4394     XCB_AUTO_REPEAT_MODE_DEFAULT = 2
   4395 } xcb_auto_repeat_mode_t;
   4396 
   4397 /**
   4398  * @brief xcb_change_keyboard_control_value_list_t
   4399  **/
   4400 typedef struct xcb_change_keyboard_control_value_list_t {
   4401     int32_t         key_click_percent;
   4402     int32_t         bell_percent;
   4403     int32_t         bell_pitch;
   4404     int32_t         bell_duration;
   4405     uint32_t        led;
   4406     uint32_t        led_mode;
   4407     xcb_keycode32_t key;
   4408     uint32_t        auto_repeat_mode;
   4409 } xcb_change_keyboard_control_value_list_t;
   4410 
   4411 /** Opcode for xcb_change_keyboard_control. */
   4412 #define XCB_CHANGE_KEYBOARD_CONTROL 102
   4413 
   4414 /**
   4415  * @brief xcb_change_keyboard_control_request_t
   4416  **/
   4417 typedef struct xcb_change_keyboard_control_request_t {
   4418     uint8_t  major_opcode;
   4419     uint8_t  pad0;
   4420     uint16_t length;
   4421     uint32_t value_mask;
   4422 } xcb_change_keyboard_control_request_t;
   4423 
   4424 /**
   4425  * @brief xcb_get_keyboard_control_cookie_t
   4426  **/
   4427 typedef struct xcb_get_keyboard_control_cookie_t {
   4428     unsigned int sequence;
   4429 } xcb_get_keyboard_control_cookie_t;
   4430 
   4431 /** Opcode for xcb_get_keyboard_control. */
   4432 #define XCB_GET_KEYBOARD_CONTROL 103
   4433 
   4434 /**
   4435  * @brief xcb_get_keyboard_control_request_t
   4436  **/
   4437 typedef struct xcb_get_keyboard_control_request_t {
   4438     uint8_t  major_opcode;
   4439     uint8_t  pad0;
   4440     uint16_t length;
   4441 } xcb_get_keyboard_control_request_t;
   4442 
   4443 /**
   4444  * @brief xcb_get_keyboard_control_reply_t
   4445  **/
   4446 typedef struct xcb_get_keyboard_control_reply_t {
   4447     uint8_t  response_type;
   4448     uint8_t  global_auto_repeat;
   4449     uint16_t sequence;
   4450     uint32_t length;
   4451     uint32_t led_mask;
   4452     uint8_t  key_click_percent;
   4453     uint8_t  bell_percent;
   4454     uint16_t bell_pitch;
   4455     uint16_t bell_duration;
   4456     uint8_t  pad0[2];
   4457     uint8_t  auto_repeats[32];
   4458 } xcb_get_keyboard_control_reply_t;
   4459 
   4460 /** Opcode for xcb_bell. */
   4461 #define XCB_BELL 104
   4462 
   4463 /**
   4464  * @brief xcb_bell_request_t
   4465  **/
   4466 typedef struct xcb_bell_request_t {
   4467     uint8_t  major_opcode;
   4468     int8_t   percent;
   4469     uint16_t length;
   4470 } xcb_bell_request_t;
   4471 
   4472 /** Opcode for xcb_change_pointer_control. */
   4473 #define XCB_CHANGE_POINTER_CONTROL 105
   4474 
   4475 /**
   4476  * @brief xcb_change_pointer_control_request_t
   4477  **/
   4478 typedef struct xcb_change_pointer_control_request_t {
   4479     uint8_t  major_opcode;
   4480     uint8_t  pad0;
   4481     uint16_t length;
   4482     int16_t  acceleration_numerator;
   4483     int16_t  acceleration_denominator;
   4484     int16_t  threshold;
   4485     uint8_t  do_acceleration;
   4486     uint8_t  do_threshold;
   4487 } xcb_change_pointer_control_request_t;
   4488 
   4489 /**
   4490  * @brief xcb_get_pointer_control_cookie_t
   4491  **/
   4492 typedef struct xcb_get_pointer_control_cookie_t {
   4493     unsigned int sequence;
   4494 } xcb_get_pointer_control_cookie_t;
   4495 
   4496 /** Opcode for xcb_get_pointer_control. */
   4497 #define XCB_GET_POINTER_CONTROL 106
   4498 
   4499 /**
   4500  * @brief xcb_get_pointer_control_request_t
   4501  **/
   4502 typedef struct xcb_get_pointer_control_request_t {
   4503     uint8_t  major_opcode;
   4504     uint8_t  pad0;
   4505     uint16_t length;
   4506 } xcb_get_pointer_control_request_t;
   4507 
   4508 /**
   4509  * @brief xcb_get_pointer_control_reply_t
   4510  **/
   4511 typedef struct xcb_get_pointer_control_reply_t {
   4512     uint8_t  response_type;
   4513     uint8_t  pad0;
   4514     uint16_t sequence;
   4515     uint32_t length;
   4516     uint16_t acceleration_numerator;
   4517     uint16_t acceleration_denominator;
   4518     uint16_t threshold;
   4519     uint8_t  pad1[18];
   4520 } xcb_get_pointer_control_reply_t;
   4521 
   4522 typedef enum xcb_blanking_t {
   4523     XCB_BLANKING_NOT_PREFERRED = 0,
   4524     XCB_BLANKING_PREFERRED = 1,
   4525     XCB_BLANKING_DEFAULT = 2
   4526 } xcb_blanking_t;
   4527 
   4528 typedef enum xcb_exposures_t {
   4529     XCB_EXPOSURES_NOT_ALLOWED = 0,
   4530     XCB_EXPOSURES_ALLOWED = 1,
   4531     XCB_EXPOSURES_DEFAULT = 2
   4532 } xcb_exposures_t;
   4533 
   4534 /** Opcode for xcb_set_screen_saver. */
   4535 #define XCB_SET_SCREEN_SAVER 107
   4536 
   4537 /**
   4538  * @brief xcb_set_screen_saver_request_t
   4539  **/
   4540 typedef struct xcb_set_screen_saver_request_t {
   4541     uint8_t  major_opcode;
   4542     uint8_t  pad0;
   4543     uint16_t length;
   4544     int16_t  timeout;
   4545     int16_t  interval;
   4546     uint8_t  prefer_blanking;
   4547     uint8_t  allow_exposures;
   4548 } xcb_set_screen_saver_request_t;
   4549 
   4550 /**
   4551  * @brief xcb_get_screen_saver_cookie_t
   4552  **/
   4553 typedef struct xcb_get_screen_saver_cookie_t {
   4554     unsigned int sequence;
   4555 } xcb_get_screen_saver_cookie_t;
   4556 
   4557 /** Opcode for xcb_get_screen_saver. */
   4558 #define XCB_GET_SCREEN_SAVER 108
   4559 
   4560 /**
   4561  * @brief xcb_get_screen_saver_request_t
   4562  **/
   4563 typedef struct xcb_get_screen_saver_request_t {
   4564     uint8_t  major_opcode;
   4565     uint8_t  pad0;
   4566     uint16_t length;
   4567 } xcb_get_screen_saver_request_t;
   4568 
   4569 /**
   4570  * @brief xcb_get_screen_saver_reply_t
   4571  **/
   4572 typedef struct xcb_get_screen_saver_reply_t {
   4573     uint8_t  response_type;
   4574     uint8_t  pad0;
   4575     uint16_t sequence;
   4576     uint32_t length;
   4577     uint16_t timeout;
   4578     uint16_t interval;
   4579     uint8_t  prefer_blanking;
   4580     uint8_t  allow_exposures;
   4581     uint8_t  pad1[18];
   4582 } xcb_get_screen_saver_reply_t;
   4583 
   4584 typedef enum xcb_host_mode_t {
   4585     XCB_HOST_MODE_INSERT = 0,
   4586     XCB_HOST_MODE_DELETE = 1
   4587 } xcb_host_mode_t;
   4588 
   4589 typedef enum xcb_family_t {
   4590     XCB_FAMILY_INTERNET = 0,
   4591     XCB_FAMILY_DECNET = 1,
   4592     XCB_FAMILY_CHAOS = 2,
   4593     XCB_FAMILY_SERVER_INTERPRETED = 5,
   4594     XCB_FAMILY_INTERNET_6 = 6
   4595 } xcb_family_t;
   4596 
   4597 /** Opcode for xcb_change_hosts. */
   4598 #define XCB_CHANGE_HOSTS 109
   4599 
   4600 /**
   4601  * @brief xcb_change_hosts_request_t
   4602  **/
   4603 typedef struct xcb_change_hosts_request_t {
   4604     uint8_t  major_opcode;
   4605     uint8_t  mode;
   4606     uint16_t length;
   4607     uint8_t  family;
   4608     uint8_t  pad0;
   4609     uint16_t address_len;
   4610 } xcb_change_hosts_request_t;
   4611 
   4612 /**
   4613  * @brief xcb_host_t
   4614  **/
   4615 typedef struct xcb_host_t {
   4616     uint8_t  family;
   4617     uint8_t  pad0;
   4618     uint16_t address_len;
   4619 } xcb_host_t;
   4620 
   4621 /**
   4622  * @brief xcb_host_iterator_t
   4623  **/
   4624 typedef struct xcb_host_iterator_t {
   4625     xcb_host_t *data;
   4626     int         rem;
   4627     int         index;
   4628 } xcb_host_iterator_t;
   4629 
   4630 /**
   4631  * @brief xcb_list_hosts_cookie_t
   4632  **/
   4633 typedef struct xcb_list_hosts_cookie_t {
   4634     unsigned int sequence;
   4635 } xcb_list_hosts_cookie_t;
   4636 
   4637 /** Opcode for xcb_list_hosts. */
   4638 #define XCB_LIST_HOSTS 110
   4639 
   4640 /**
   4641  * @brief xcb_list_hosts_request_t
   4642  **/
   4643 typedef struct xcb_list_hosts_request_t {
   4644     uint8_t  major_opcode;
   4645     uint8_t  pad0;
   4646     uint16_t length;
   4647 } xcb_list_hosts_request_t;
   4648 
   4649 /**
   4650  * @brief xcb_list_hosts_reply_t
   4651  **/
   4652 typedef struct xcb_list_hosts_reply_t {
   4653     uint8_t  response_type;
   4654     uint8_t  mode;
   4655     uint16_t sequence;
   4656     uint32_t length;
   4657     uint16_t hosts_len;
   4658     uint8_t  pad0[22];
   4659 } xcb_list_hosts_reply_t;
   4660 
   4661 typedef enum xcb_access_control_t {
   4662     XCB_ACCESS_CONTROL_DISABLE = 0,
   4663     XCB_ACCESS_CONTROL_ENABLE = 1
   4664 } xcb_access_control_t;
   4665 
   4666 /** Opcode for xcb_set_access_control. */
   4667 #define XCB_SET_ACCESS_CONTROL 111
   4668 
   4669 /**
   4670  * @brief xcb_set_access_control_request_t
   4671  **/
   4672 typedef struct xcb_set_access_control_request_t {
   4673     uint8_t  major_opcode;
   4674     uint8_t  mode;
   4675     uint16_t length;
   4676 } xcb_set_access_control_request_t;
   4677 
   4678 typedef enum xcb_close_down_t {
   4679     XCB_CLOSE_DOWN_DESTROY_ALL = 0,
   4680     XCB_CLOSE_DOWN_RETAIN_PERMANENT = 1,
   4681     XCB_CLOSE_DOWN_RETAIN_TEMPORARY = 2
   4682 } xcb_close_down_t;
   4683 
   4684 /** Opcode for xcb_set_close_down_mode. */
   4685 #define XCB_SET_CLOSE_DOWN_MODE 112
   4686 
   4687 /**
   4688  * @brief xcb_set_close_down_mode_request_t
   4689  **/
   4690 typedef struct xcb_set_close_down_mode_request_t {
   4691     uint8_t  major_opcode;
   4692     uint8_t  mode;
   4693     uint16_t length;
   4694 } xcb_set_close_down_mode_request_t;
   4695 
   4696 typedef enum xcb_kill_t {
   4697     XCB_KILL_ALL_TEMPORARY = 0
   4698 } xcb_kill_t;
   4699 
   4700 /** Opcode for xcb_kill_client. */
   4701 #define XCB_KILL_CLIENT 113
   4702 
   4703 /**
   4704  * @brief xcb_kill_client_request_t
   4705  **/
   4706 typedef struct xcb_kill_client_request_t {
   4707     uint8_t  major_opcode;
   4708     uint8_t  pad0;
   4709     uint16_t length;
   4710     uint32_t resource;
   4711 } xcb_kill_client_request_t;
   4712 
   4713 /** Opcode for xcb_rotate_properties. */
   4714 #define XCB_ROTATE_PROPERTIES 114
   4715 
   4716 /**
   4717  * @brief xcb_rotate_properties_request_t
   4718  **/
   4719 typedef struct xcb_rotate_properties_request_t {
   4720     uint8_t      major_opcode;
   4721     uint8_t      pad0;
   4722     uint16_t     length;
   4723     xcb_window_t window;
   4724     uint16_t     atoms_len;
   4725     int16_t      delta;
   4726 } xcb_rotate_properties_request_t;
   4727 
   4728 typedef enum xcb_screen_saver_t {
   4729     XCB_SCREEN_SAVER_RESET = 0,
   4730     XCB_SCREEN_SAVER_ACTIVE = 1
   4731 } xcb_screen_saver_t;
   4732 
   4733 /** Opcode for xcb_force_screen_saver. */
   4734 #define XCB_FORCE_SCREEN_SAVER 115
   4735 
   4736 /**
   4737  * @brief xcb_force_screen_saver_request_t
   4738  **/
   4739 typedef struct xcb_force_screen_saver_request_t {
   4740     uint8_t  major_opcode;
   4741     uint8_t  mode;
   4742     uint16_t length;
   4743 } xcb_force_screen_saver_request_t;
   4744 
   4745 typedef enum xcb_mapping_status_t {
   4746     XCB_MAPPING_STATUS_SUCCESS = 0,
   4747     XCB_MAPPING_STATUS_BUSY = 1,
   4748     XCB_MAPPING_STATUS_FAILURE = 2
   4749 } xcb_mapping_status_t;
   4750 
   4751 /**
   4752  * @brief xcb_set_pointer_mapping_cookie_t
   4753  **/
   4754 typedef struct xcb_set_pointer_mapping_cookie_t {
   4755     unsigned int sequence;
   4756 } xcb_set_pointer_mapping_cookie_t;
   4757 
   4758 /** Opcode for xcb_set_pointer_mapping. */
   4759 #define XCB_SET_POINTER_MAPPING 116
   4760 
   4761 /**
   4762  * @brief xcb_set_pointer_mapping_request_t
   4763  **/
   4764 typedef struct xcb_set_pointer_mapping_request_t {
   4765     uint8_t  major_opcode;
   4766     uint8_t  map_len;
   4767     uint16_t length;
   4768 } xcb_set_pointer_mapping_request_t;
   4769 
   4770 /**
   4771  * @brief xcb_set_pointer_mapping_reply_t
   4772  **/
   4773 typedef struct xcb_set_pointer_mapping_reply_t {
   4774     uint8_t  response_type;
   4775     uint8_t  status;
   4776     uint16_t sequence;
   4777     uint32_t length;
   4778 } xcb_set_pointer_mapping_reply_t;
   4779 
   4780 /**
   4781  * @brief xcb_get_pointer_mapping_cookie_t
   4782  **/
   4783 typedef struct xcb_get_pointer_mapping_cookie_t {
   4784     unsigned int sequence;
   4785 } xcb_get_pointer_mapping_cookie_t;
   4786 
   4787 /** Opcode for xcb_get_pointer_mapping. */
   4788 #define XCB_GET_POINTER_MAPPING 117
   4789 
   4790 /**
   4791  * @brief xcb_get_pointer_mapping_request_t
   4792  **/
   4793 typedef struct xcb_get_pointer_mapping_request_t {
   4794     uint8_t  major_opcode;
   4795     uint8_t  pad0;
   4796     uint16_t length;
   4797 } xcb_get_pointer_mapping_request_t;
   4798 
   4799 /**
   4800  * @brief xcb_get_pointer_mapping_reply_t
   4801  **/
   4802 typedef struct xcb_get_pointer_mapping_reply_t {
   4803     uint8_t  response_type;
   4804     uint8_t  map_len;
   4805     uint16_t sequence;
   4806     uint32_t length;
   4807     uint8_t  pad0[24];
   4808 } xcb_get_pointer_mapping_reply_t;
   4809 
   4810 typedef enum xcb_map_index_t {
   4811     XCB_MAP_INDEX_SHIFT = 0,
   4812     XCB_MAP_INDEX_LOCK = 1,
   4813     XCB_MAP_INDEX_CONTROL = 2,
   4814     XCB_MAP_INDEX_1 = 3,
   4815     XCB_MAP_INDEX_2 = 4,
   4816     XCB_MAP_INDEX_3 = 5,
   4817     XCB_MAP_INDEX_4 = 6,
   4818     XCB_MAP_INDEX_5 = 7
   4819 } xcb_map_index_t;
   4820 
   4821 /**
   4822  * @brief xcb_set_modifier_mapping_cookie_t
   4823  **/
   4824 typedef struct xcb_set_modifier_mapping_cookie_t {
   4825     unsigned int sequence;
   4826 } xcb_set_modifier_mapping_cookie_t;
   4827 
   4828 /** Opcode for xcb_set_modifier_mapping. */
   4829 #define XCB_SET_MODIFIER_MAPPING 118
   4830 
   4831 /**
   4832  * @brief xcb_set_modifier_mapping_request_t
   4833  **/
   4834 typedef struct xcb_set_modifier_mapping_request_t {
   4835     uint8_t  major_opcode;
   4836     uint8_t  keycodes_per_modifier;
   4837     uint16_t length;
   4838 } xcb_set_modifier_mapping_request_t;
   4839 
   4840 /**
   4841  * @brief xcb_set_modifier_mapping_reply_t
   4842  **/
   4843 typedef struct xcb_set_modifier_mapping_reply_t {
   4844     uint8_t  response_type;
   4845     uint8_t  status;
   4846     uint16_t sequence;
   4847     uint32_t length;
   4848 } xcb_set_modifier_mapping_reply_t;
   4849 
   4850 /**
   4851  * @brief xcb_get_modifier_mapping_cookie_t
   4852  **/
   4853 typedef struct xcb_get_modifier_mapping_cookie_t {
   4854     unsigned int sequence;
   4855 } xcb_get_modifier_mapping_cookie_t;
   4856 
   4857 /** Opcode for xcb_get_modifier_mapping. */
   4858 #define XCB_GET_MODIFIER_MAPPING 119
   4859 
   4860 /**
   4861  * @brief xcb_get_modifier_mapping_request_t
   4862  **/
   4863 typedef struct xcb_get_modifier_mapping_request_t {
   4864     uint8_t  major_opcode;
   4865     uint8_t  pad0;
   4866     uint16_t length;
   4867 } xcb_get_modifier_mapping_request_t;
   4868 
   4869 /**
   4870  * @brief xcb_get_modifier_mapping_reply_t
   4871  **/
   4872 typedef struct xcb_get_modifier_mapping_reply_t {
   4873     uint8_t  response_type;
   4874     uint8_t  keycodes_per_modifier;
   4875     uint16_t sequence;
   4876     uint32_t length;
   4877     uint8_t  pad0[24];
   4878 } xcb_get_modifier_mapping_reply_t;
   4879 
   4880 /** Opcode for xcb_no_operation. */
   4881 #define XCB_NO_OPERATION 127
   4882 
   4883 /**
   4884  * @brief xcb_no_operation_request_t
   4885  **/
   4886 typedef struct xcb_no_operation_request_t {
   4887     uint8_t  major_opcode;
   4888     uint8_t  pad0;
   4889     uint16_t length;
   4890 } xcb_no_operation_request_t;
   4891 
   4892 /**
   4893  * Get the next element of the iterator
   4894  * @param i Pointer to a xcb_char2b_iterator_t
   4895  *
   4896  * Get the next element in the iterator. The member rem is
   4897  * decreased by one. The member data points to the next
   4898  * element. The member index is increased by sizeof(xcb_char2b_t)
   4899  */
   4900 void
   4901 xcb_char2b_next (xcb_char2b_iterator_t *i);
   4902 
   4903 /**
   4904  * Return the iterator pointing to the last element
   4905  * @param i An xcb_char2b_iterator_t
   4906  * @return  The iterator pointing to the last element
   4907  *
   4908  * Set the current element in the iterator to the last element.
   4909  * The member rem is set to 0. The member data points to the
   4910  * last element.
   4911  */
   4912 xcb_generic_iterator_t
   4913 xcb_char2b_end (xcb_char2b_iterator_t i);
   4914 
   4915 /**
   4916  * Get the next element of the iterator
   4917  * @param i Pointer to a xcb_window_iterator_t
   4918  *
   4919  * Get the next element in the iterator. The member rem is
   4920  * decreased by one. The member data points to the next
   4921  * element. The member index is increased by sizeof(xcb_window_t)
   4922  */
   4923 void
   4924 xcb_window_next (xcb_window_iterator_t *i);
   4925 
   4926 /**
   4927  * Return the iterator pointing to the last element
   4928  * @param i An xcb_window_iterator_t
   4929  * @return  The iterator pointing to the last element
   4930  *
   4931  * Set the current element in the iterator to the last element.
   4932  * The member rem is set to 0. The member data points to the
   4933  * last element.
   4934  */
   4935 xcb_generic_iterator_t
   4936 xcb_window_end (xcb_window_iterator_t i);
   4937 
   4938 /**
   4939  * Get the next element of the iterator
   4940  * @param i Pointer to a xcb_pixmap_iterator_t
   4941  *
   4942  * Get the next element in the iterator. The member rem is
   4943  * decreased by one. The member data points to the next
   4944  * element. The member index is increased by sizeof(xcb_pixmap_t)
   4945  */
   4946 void
   4947 xcb_pixmap_next (xcb_pixmap_iterator_t *i);
   4948 
   4949 /**
   4950  * Return the iterator pointing to the last element
   4951  * @param i An xcb_pixmap_iterator_t
   4952  * @return  The iterator pointing to the last element
   4953  *
   4954  * Set the current element in the iterator to the last element.
   4955  * The member rem is set to 0. The member data points to the
   4956  * last element.
   4957  */
   4958 xcb_generic_iterator_t
   4959 xcb_pixmap_end (xcb_pixmap_iterator_t i);
   4960 
   4961 /**
   4962  * Get the next element of the iterator
   4963  * @param i Pointer to a xcb_cursor_iterator_t
   4964  *
   4965  * Get the next element in the iterator. The member rem is
   4966  * decreased by one. The member data points to the next
   4967  * element. The member index is increased by sizeof(xcb_cursor_t)
   4968  */
   4969 void
   4970 xcb_cursor_next (xcb_cursor_iterator_t *i);
   4971 
   4972 /**
   4973  * Return the iterator pointing to the last element
   4974  * @param i An xcb_cursor_iterator_t
   4975  * @return  The iterator pointing to the last element
   4976  *
   4977  * Set the current element in the iterator to the last element.
   4978  * The member rem is set to 0. The member data points to the
   4979  * last element.
   4980  */
   4981 xcb_generic_iterator_t
   4982 xcb_cursor_end (xcb_cursor_iterator_t i);
   4983 
   4984 /**
   4985  * Get the next element of the iterator
   4986  * @param i Pointer to a xcb_font_iterator_t
   4987  *
   4988  * Get the next element in the iterator. The member rem is
   4989  * decreased by one. The member data points to the next
   4990  * element. The member index is increased by sizeof(xcb_font_t)
   4991  */
   4992 void
   4993 xcb_font_next (xcb_font_iterator_t *i);
   4994 
   4995 /**
   4996  * Return the iterator pointing to the last element
   4997  * @param i An xcb_font_iterator_t
   4998  * @return  The iterator pointing to the last element
   4999  *
   5000  * Set the current element in the iterator to the last element.
   5001  * The member rem is set to 0. The member data points to the
   5002  * last element.
   5003  */
   5004 xcb_generic_iterator_t
   5005 xcb_font_end (xcb_font_iterator_t i);
   5006 
   5007 /**
   5008  * Get the next element of the iterator
   5009  * @param i Pointer to a xcb_gcontext_iterator_t
   5010  *
   5011  * Get the next element in the iterator. The member rem is
   5012  * decreased by one. The member data points to the next
   5013  * element. The member index is increased by sizeof(xcb_gcontext_t)
   5014  */
   5015 void
   5016 xcb_gcontext_next (xcb_gcontext_iterator_t *i);
   5017 
   5018 /**
   5019  * Return the iterator pointing to the last element
   5020  * @param i An xcb_gcontext_iterator_t
   5021  * @return  The iterator pointing to the last element
   5022  *
   5023  * Set the current element in the iterator to the last element.
   5024  * The member rem is set to 0. The member data points to the
   5025  * last element.
   5026  */
   5027 xcb_generic_iterator_t
   5028 xcb_gcontext_end (xcb_gcontext_iterator_t i);
   5029 
   5030 /**
   5031  * Get the next element of the iterator
   5032  * @param i Pointer to a xcb_colormap_iterator_t
   5033  *
   5034  * Get the next element in the iterator. The member rem is
   5035  * decreased by one. The member data points to the next
   5036  * element. The member index is increased by sizeof(xcb_colormap_t)
   5037  */
   5038 void
   5039 xcb_colormap_next (xcb_colormap_iterator_t *i);
   5040 
   5041 /**
   5042  * Return the iterator pointing to the last element
   5043  * @param i An xcb_colormap_iterator_t
   5044  * @return  The iterator pointing to the last element
   5045  *
   5046  * Set the current element in the iterator to the last element.
   5047  * The member rem is set to 0. The member data points to the
   5048  * last element.
   5049  */
   5050 xcb_generic_iterator_t
   5051 xcb_colormap_end (xcb_colormap_iterator_t i);
   5052 
   5053 /**
   5054  * Get the next element of the iterator
   5055  * @param i Pointer to a xcb_atom_iterator_t
   5056  *
   5057  * Get the next element in the iterator. The member rem is
   5058  * decreased by one. The member data points to the next
   5059  * element. The member index is increased by sizeof(xcb_atom_t)
   5060  */
   5061 void
   5062 xcb_atom_next (xcb_atom_iterator_t *i);
   5063 
   5064 /**
   5065  * Return the iterator pointing to the last element
   5066  * @param i An xcb_atom_iterator_t
   5067  * @return  The iterator pointing to the last element
   5068  *
   5069  * Set the current element in the iterator to the last element.
   5070  * The member rem is set to 0. The member data points to the
   5071  * last element.
   5072  */
   5073 xcb_generic_iterator_t
   5074 xcb_atom_end (xcb_atom_iterator_t i);
   5075 
   5076 /**
   5077  * Get the next element of the iterator
   5078  * @param i Pointer to a xcb_drawable_iterator_t
   5079  *
   5080  * Get the next element in the iterator. The member rem is
   5081  * decreased by one. The member data points to the next
   5082  * element. The member index is increased by sizeof(xcb_drawable_t)
   5083  */
   5084 void
   5085 xcb_drawable_next (xcb_drawable_iterator_t *i);
   5086 
   5087 /**
   5088  * Return the iterator pointing to the last element
   5089  * @param i An xcb_drawable_iterator_t
   5090  * @return  The iterator pointing to the last element
   5091  *
   5092  * Set the current element in the iterator to the last element.
   5093  * The member rem is set to 0. The member data points to the
   5094  * last element.
   5095  */
   5096 xcb_generic_iterator_t
   5097 xcb_drawable_end (xcb_drawable_iterator_t i);
   5098 
   5099 /**
   5100  * Get the next element of the iterator
   5101  * @param i Pointer to a xcb_fontable_iterator_t
   5102  *
   5103  * Get the next element in the iterator. The member rem is
   5104  * decreased by one. The member data points to the next
   5105  * element. The member index is increased by sizeof(xcb_fontable_t)
   5106  */
   5107 void
   5108 xcb_fontable_next (xcb_fontable_iterator_t *i);
   5109 
   5110 /**
   5111  * Return the iterator pointing to the last element
   5112  * @param i An xcb_fontable_iterator_t
   5113  * @return  The iterator pointing to the last element
   5114  *
   5115  * Set the current element in the iterator to the last element.
   5116  * The member rem is set to 0. The member data points to the
   5117  * last element.
   5118  */
   5119 xcb_generic_iterator_t
   5120 xcb_fontable_end (xcb_fontable_iterator_t i);
   5121 
   5122 /**
   5123  * Get the next element of the iterator
   5124  * @param i Pointer to a xcb_bool32_iterator_t
   5125  *
   5126  * Get the next element in the iterator. The member rem is
   5127  * decreased by one. The member data points to the next
   5128  * element. The member index is increased by sizeof(xcb_bool32_t)
   5129  */
   5130 void
   5131 xcb_bool32_next (xcb_bool32_iterator_t *i);
   5132 
   5133 /**
   5134  * Return the iterator pointing to the last element
   5135  * @param i An xcb_bool32_iterator_t
   5136  * @return  The iterator pointing to the last element
   5137  *
   5138  * Set the current element in the iterator to the last element.
   5139  * The member rem is set to 0. The member data points to the
   5140  * last element.
   5141  */
   5142 xcb_generic_iterator_t
   5143 xcb_bool32_end (xcb_bool32_iterator_t i);
   5144 
   5145 /**
   5146  * Get the next element of the iterator
   5147  * @param i Pointer to a xcb_visualid_iterator_t
   5148  *
   5149  * Get the next element in the iterator. The member rem is
   5150  * decreased by one. The member data points to the next
   5151  * element. The member index is increased by sizeof(xcb_visualid_t)
   5152  */
   5153 void
   5154 xcb_visualid_next (xcb_visualid_iterator_t *i);
   5155 
   5156 /**
   5157  * Return the iterator pointing to the last element
   5158  * @param i An xcb_visualid_iterator_t
   5159  * @return  The iterator pointing to the last element
   5160  *
   5161  * Set the current element in the iterator to the last element.
   5162  * The member rem is set to 0. The member data points to the
   5163  * last element.
   5164  */
   5165 xcb_generic_iterator_t
   5166 xcb_visualid_end (xcb_visualid_iterator_t i);
   5167 
   5168 /**
   5169  * Get the next element of the iterator
   5170  * @param i Pointer to a xcb_timestamp_iterator_t
   5171  *
   5172  * Get the next element in the iterator. The member rem is
   5173  * decreased by one. The member data points to the next
   5174  * element. The member index is increased by sizeof(xcb_timestamp_t)
   5175  */
   5176 void
   5177 xcb_timestamp_next (xcb_timestamp_iterator_t *i);
   5178 
   5179 /**
   5180  * Return the iterator pointing to the last element
   5181  * @param i An xcb_timestamp_iterator_t
   5182  * @return  The iterator pointing to the last element
   5183  *
   5184  * Set the current element in the iterator to the last element.
   5185  * The member rem is set to 0. The member data points to the
   5186  * last element.
   5187  */
   5188 xcb_generic_iterator_t
   5189 xcb_timestamp_end (xcb_timestamp_iterator_t i);
   5190 
   5191 /**
   5192  * Get the next element of the iterator
   5193  * @param i Pointer to a xcb_keysym_iterator_t
   5194  *
   5195  * Get the next element in the iterator. The member rem is
   5196  * decreased by one. The member data points to the next
   5197  * element. The member index is increased by sizeof(xcb_keysym_t)
   5198  */
   5199 void
   5200 xcb_keysym_next (xcb_keysym_iterator_t *i);
   5201 
   5202 /**
   5203  * Return the iterator pointing to the last element
   5204  * @param i An xcb_keysym_iterator_t
   5205  * @return  The iterator pointing to the last element
   5206  *
   5207  * Set the current element in the iterator to the last element.
   5208  * The member rem is set to 0. The member data points to the
   5209  * last element.
   5210  */
   5211 xcb_generic_iterator_t
   5212 xcb_keysym_end (xcb_keysym_iterator_t i);
   5213 
   5214 /**
   5215  * Get the next element of the iterator
   5216  * @param i Pointer to a xcb_keycode_iterator_t
   5217  *
   5218  * Get the next element in the iterator. The member rem is
   5219  * decreased by one. The member data points to the next
   5220  * element. The member index is increased by sizeof(xcb_keycode_t)
   5221  */
   5222 void
   5223 xcb_keycode_next (xcb_keycode_iterator_t *i);
   5224 
   5225 /**
   5226  * Return the iterator pointing to the last element
   5227  * @param i An xcb_keycode_iterator_t
   5228  * @return  The iterator pointing to the last element
   5229  *
   5230  * Set the current element in the iterator to the last element.
   5231  * The member rem is set to 0. The member data points to the
   5232  * last element.
   5233  */
   5234 xcb_generic_iterator_t
   5235 xcb_keycode_end (xcb_keycode_iterator_t i);
   5236 
   5237 /**
   5238  * Get the next element of the iterator
   5239  * @param i Pointer to a xcb_keycode32_iterator_t
   5240  *
   5241  * Get the next element in the iterator. The member rem is
   5242  * decreased by one. The member data points to the next
   5243  * element. The member index is increased by sizeof(xcb_keycode32_t)
   5244  */
   5245 void
   5246 xcb_keycode32_next (xcb_keycode32_iterator_t *i);
   5247 
   5248 /**
   5249  * Return the iterator pointing to the last element
   5250  * @param i An xcb_keycode32_iterator_t
   5251  * @return  The iterator pointing to the last element
   5252  *
   5253  * Set the current element in the iterator to the last element.
   5254  * The member rem is set to 0. The member data points to the
   5255  * last element.
   5256  */
   5257 xcb_generic_iterator_t
   5258 xcb_keycode32_end (xcb_keycode32_iterator_t i);
   5259 
   5260 /**
   5261  * Get the next element of the iterator
   5262  * @param i Pointer to a xcb_button_iterator_t
   5263  *
   5264  * Get the next element in the iterator. The member rem is
   5265  * decreased by one. The member data points to the next
   5266  * element. The member index is increased by sizeof(xcb_button_t)
   5267  */
   5268 void
   5269 xcb_button_next (xcb_button_iterator_t *i);
   5270 
   5271 /**
   5272  * Return the iterator pointing to the last element
   5273  * @param i An xcb_button_iterator_t
   5274  * @return  The iterator pointing to the last element
   5275  *
   5276  * Set the current element in the iterator to the last element.
   5277  * The member rem is set to 0. The member data points to the
   5278  * last element.
   5279  */
   5280 xcb_generic_iterator_t
   5281 xcb_button_end (xcb_button_iterator_t i);
   5282 
   5283 /**
   5284  * Get the next element of the iterator
   5285  * @param i Pointer to a xcb_point_iterator_t
   5286  *
   5287  * Get the next element in the iterator. The member rem is
   5288  * decreased by one. The member data points to the next
   5289  * element. The member index is increased by sizeof(xcb_point_t)
   5290  */
   5291 void
   5292 xcb_point_next (xcb_point_iterator_t *i);
   5293 
   5294 /**
   5295  * Return the iterator pointing to the last element
   5296  * @param i An xcb_point_iterator_t
   5297  * @return  The iterator pointing to the last element
   5298  *
   5299  * Set the current element in the iterator to the last element.
   5300  * The member rem is set to 0. The member data points to the
   5301  * last element.
   5302  */
   5303 xcb_generic_iterator_t
   5304 xcb_point_end (xcb_point_iterator_t i);
   5305 
   5306 /**
   5307  * Get the next element of the iterator
   5308  * @param i Pointer to a xcb_rectangle_iterator_t
   5309  *
   5310  * Get the next element in the iterator. The member rem is
   5311  * decreased by one. The member data points to the next
   5312  * element. The member index is increased by sizeof(xcb_rectangle_t)
   5313  */
   5314 void
   5315 xcb_rectangle_next (xcb_rectangle_iterator_t *i);
   5316 
   5317 /**
   5318  * Return the iterator pointing to the last element
   5319  * @param i An xcb_rectangle_iterator_t
   5320  * @return  The iterator pointing to the last element
   5321  *
   5322  * Set the current element in the iterator to the last element.
   5323  * The member rem is set to 0. The member data points to the
   5324  * last element.
   5325  */
   5326 xcb_generic_iterator_t
   5327 xcb_rectangle_end (xcb_rectangle_iterator_t i);
   5328 
   5329 /**
   5330  * Get the next element of the iterator
   5331  * @param i Pointer to a xcb_arc_iterator_t
   5332  *
   5333  * Get the next element in the iterator. The member rem is
   5334  * decreased by one. The member data points to the next
   5335  * element. The member index is increased by sizeof(xcb_arc_t)
   5336  */
   5337 void
   5338 xcb_arc_next (xcb_arc_iterator_t *i);
   5339 
   5340 /**
   5341  * Return the iterator pointing to the last element
   5342  * @param i An xcb_arc_iterator_t
   5343  * @return  The iterator pointing to the last element
   5344  *
   5345  * Set the current element in the iterator to the last element.
   5346  * The member rem is set to 0. The member data points to the
   5347  * last element.
   5348  */
   5349 xcb_generic_iterator_t
   5350 xcb_arc_end (xcb_arc_iterator_t i);
   5351 
   5352 /**
   5353  * Get the next element of the iterator
   5354  * @param i Pointer to a xcb_format_iterator_t
   5355  *
   5356  * Get the next element in the iterator. The member rem is
   5357  * decreased by one. The member data points to the next
   5358  * element. The member index is increased by sizeof(xcb_format_t)
   5359  */
   5360 void
   5361 xcb_format_next (xcb_format_iterator_t *i);
   5362 
   5363 /**
   5364  * Return the iterator pointing to the last element
   5365  * @param i An xcb_format_iterator_t
   5366  * @return  The iterator pointing to the last element
   5367  *
   5368  * Set the current element in the iterator to the last element.
   5369  * The member rem is set to 0. The member data points to the
   5370  * last element.
   5371  */
   5372 xcb_generic_iterator_t
   5373 xcb_format_end (xcb_format_iterator_t i);
   5374 
   5375 /**
   5376  * Get the next element of the iterator
   5377  * @param i Pointer to a xcb_visualtype_iterator_t
   5378  *
   5379  * Get the next element in the iterator. The member rem is
   5380  * decreased by one. The member data points to the next
   5381  * element. The member index is increased by sizeof(xcb_visualtype_t)
   5382  */
   5383 void
   5384 xcb_visualtype_next (xcb_visualtype_iterator_t *i);
   5385 
   5386 /**
   5387  * Return the iterator pointing to the last element
   5388  * @param i An xcb_visualtype_iterator_t
   5389  * @return  The iterator pointing to the last element
   5390  *
   5391  * Set the current element in the iterator to the last element.
   5392  * The member rem is set to 0. The member data points to the
   5393  * last element.
   5394  */
   5395 xcb_generic_iterator_t
   5396 xcb_visualtype_end (xcb_visualtype_iterator_t i);
   5397 
   5398 int
   5399 xcb_depth_sizeof (const void  *_buffer);
   5400 
   5401 xcb_visualtype_t *
   5402 xcb_depth_visuals (const xcb_depth_t *R);
   5403 
   5404 int
   5405 xcb_depth_visuals_length (const xcb_depth_t *R);
   5406 
   5407 xcb_visualtype_iterator_t
   5408 xcb_depth_visuals_iterator (const xcb_depth_t *R);
   5409 
   5410 /**
   5411  * Get the next element of the iterator
   5412  * @param i Pointer to a xcb_depth_iterator_t
   5413  *
   5414  * Get the next element in the iterator. The member rem is
   5415  * decreased by one. The member data points to the next
   5416  * element. The member index is increased by sizeof(xcb_depth_t)
   5417  */
   5418 void
   5419 xcb_depth_next (xcb_depth_iterator_t *i);
   5420 
   5421 /**
   5422  * Return the iterator pointing to the last element
   5423  * @param i An xcb_depth_iterator_t
   5424  * @return  The iterator pointing to the last element
   5425  *
   5426  * Set the current element in the iterator to the last element.
   5427  * The member rem is set to 0. The member data points to the
   5428  * last element.
   5429  */
   5430 xcb_generic_iterator_t
   5431 xcb_depth_end (xcb_depth_iterator_t i);
   5432 
   5433 int
   5434 xcb_screen_sizeof (const void  *_buffer);
   5435 
   5436 int
   5437 xcb_screen_allowed_depths_length (const xcb_screen_t *R);
   5438 
   5439 xcb_depth_iterator_t
   5440 xcb_screen_allowed_depths_iterator (const xcb_screen_t *R);
   5441 
   5442 /**
   5443  * Get the next element of the iterator
   5444  * @param i Pointer to a xcb_screen_iterator_t
   5445  *
   5446  * Get the next element in the iterator. The member rem is
   5447  * decreased by one. The member data points to the next
   5448  * element. The member index is increased by sizeof(xcb_screen_t)
   5449  */
   5450 void
   5451 xcb_screen_next (xcb_screen_iterator_t *i);
   5452 
   5453 /**
   5454  * Return the iterator pointing to the last element
   5455  * @param i An xcb_screen_iterator_t
   5456  * @return  The iterator pointing to the last element
   5457  *
   5458  * Set the current element in the iterator to the last element.
   5459  * The member rem is set to 0. The member data points to the
   5460  * last element.
   5461  */
   5462 xcb_generic_iterator_t
   5463 xcb_screen_end (xcb_screen_iterator_t i);
   5464 
   5465 int
   5466 xcb_setup_request_sizeof (const void  *_buffer);
   5467 
   5468 char *
   5469 xcb_setup_request_authorization_protocol_name (const xcb_setup_request_t *R);
   5470 
   5471 int
   5472 xcb_setup_request_authorization_protocol_name_length (const xcb_setup_request_t *R);
   5473 
   5474 xcb_generic_iterator_t
   5475 xcb_setup_request_authorization_protocol_name_end (const xcb_setup_request_t *R);
   5476 
   5477 char *
   5478 xcb_setup_request_authorization_protocol_data (const xcb_setup_request_t *R);
   5479 
   5480 int
   5481 xcb_setup_request_authorization_protocol_data_length (const xcb_setup_request_t *R);
   5482 
   5483 xcb_generic_iterator_t
   5484 xcb_setup_request_authorization_protocol_data_end (const xcb_setup_request_t *R);
   5485 
   5486 /**
   5487  * Get the next element of the iterator
   5488  * @param i Pointer to a xcb_setup_request_iterator_t
   5489  *
   5490  * Get the next element in the iterator. The member rem is
   5491  * decreased by one. The member data points to the next
   5492  * element. The member index is increased by sizeof(xcb_setup_request_t)
   5493  */
   5494 void
   5495 xcb_setup_request_next (xcb_setup_request_iterator_t *i);
   5496 
   5497 /**
   5498  * Return the iterator pointing to the last element
   5499  * @param i An xcb_setup_request_iterator_t
   5500  * @return  The iterator pointing to the last element
   5501  *
   5502  * Set the current element in the iterator to the last element.
   5503  * The member rem is set to 0. The member data points to the
   5504  * last element.
   5505  */
   5506 xcb_generic_iterator_t
   5507 xcb_setup_request_end (xcb_setup_request_iterator_t i);
   5508 
   5509 int
   5510 xcb_setup_failed_sizeof (const void  *_buffer);
   5511 
   5512 char *
   5513 xcb_setup_failed_reason (const xcb_setup_failed_t *R);
   5514 
   5515 int
   5516 xcb_setup_failed_reason_length (const xcb_setup_failed_t *R);
   5517 
   5518 xcb_generic_iterator_t
   5519 xcb_setup_failed_reason_end (const xcb_setup_failed_t *R);
   5520 
   5521 /**
   5522  * Get the next element of the iterator
   5523  * @param i Pointer to a xcb_setup_failed_iterator_t
   5524  *
   5525  * Get the next element in the iterator. The member rem is
   5526  * decreased by one. The member data points to the next
   5527  * element. The member index is increased by sizeof(xcb_setup_failed_t)
   5528  */
   5529 void
   5530 xcb_setup_failed_next (xcb_setup_failed_iterator_t *i);
   5531 
   5532 /**
   5533  * Return the iterator pointing to the last element
   5534  * @param i An xcb_setup_failed_iterator_t
   5535  * @return  The iterator pointing to the last element
   5536  *
   5537  * Set the current element in the iterator to the last element.
   5538  * The member rem is set to 0. The member data points to the
   5539  * last element.
   5540  */
   5541 xcb_generic_iterator_t
   5542 xcb_setup_failed_end (xcb_setup_failed_iterator_t i);
   5543 
   5544 int
   5545 xcb_setup_authenticate_sizeof (const void  *_buffer);
   5546 
   5547 char *
   5548 xcb_setup_authenticate_reason (const xcb_setup_authenticate_t *R);
   5549 
   5550 int
   5551 xcb_setup_authenticate_reason_length (const xcb_setup_authenticate_t *R);
   5552 
   5553 xcb_generic_iterator_t
   5554 xcb_setup_authenticate_reason_end (const xcb_setup_authenticate_t *R);
   5555 
   5556 /**
   5557  * Get the next element of the iterator
   5558  * @param i Pointer to a xcb_setup_authenticate_iterator_t
   5559  *
   5560  * Get the next element in the iterator. The member rem is
   5561  * decreased by one. The member data points to the next
   5562  * element. The member index is increased by sizeof(xcb_setup_authenticate_t)
   5563  */
   5564 void
   5565 xcb_setup_authenticate_next (xcb_setup_authenticate_iterator_t *i);
   5566 
   5567 /**
   5568  * Return the iterator pointing to the last element
   5569  * @param i An xcb_setup_authenticate_iterator_t
   5570  * @return  The iterator pointing to the last element
   5571  *
   5572  * Set the current element in the iterator to the last element.
   5573  * The member rem is set to 0. The member data points to the
   5574  * last element.
   5575  */
   5576 xcb_generic_iterator_t
   5577 xcb_setup_authenticate_end (xcb_setup_authenticate_iterator_t i);
   5578 
   5579 int
   5580 xcb_setup_sizeof (const void  *_buffer);
   5581 
   5582 char *
   5583 xcb_setup_vendor (const xcb_setup_t *R);
   5584 
   5585 int
   5586 xcb_setup_vendor_length (const xcb_setup_t *R);
   5587 
   5588 xcb_generic_iterator_t
   5589 xcb_setup_vendor_end (const xcb_setup_t *R);
   5590 
   5591 xcb_format_t *
   5592 xcb_setup_pixmap_formats (const xcb_setup_t *R);
   5593 
   5594 int
   5595 xcb_setup_pixmap_formats_length (const xcb_setup_t *R);
   5596 
   5597 xcb_format_iterator_t
   5598 xcb_setup_pixmap_formats_iterator (const xcb_setup_t *R);
   5599 
   5600 int
   5601 xcb_setup_roots_length (const xcb_setup_t *R);
   5602 
   5603 xcb_screen_iterator_t
   5604 xcb_setup_roots_iterator (const xcb_setup_t *R);
   5605 
   5606 /**
   5607  * Get the next element of the iterator
   5608  * @param i Pointer to a xcb_setup_iterator_t
   5609  *
   5610  * Get the next element in the iterator. The member rem is
   5611  * decreased by one. The member data points to the next
   5612  * element. The member index is increased by sizeof(xcb_setup_t)
   5613  */
   5614 void
   5615 xcb_setup_next (xcb_setup_iterator_t *i);
   5616 
   5617 /**
   5618  * Return the iterator pointing to the last element
   5619  * @param i An xcb_setup_iterator_t
   5620  * @return  The iterator pointing to the last element
   5621  *
   5622  * Set the current element in the iterator to the last element.
   5623  * The member rem is set to 0. The member data points to the
   5624  * last element.
   5625  */
   5626 xcb_generic_iterator_t
   5627 xcb_setup_end (xcb_setup_iterator_t i);
   5628 
   5629 /**
   5630  * Get the next element of the iterator
   5631  * @param i Pointer to a xcb_client_message_data_iterator_t
   5632  *
   5633  * Get the next element in the iterator. The member rem is
   5634  * decreased by one. The member data points to the next
   5635  * element. The member index is increased by sizeof(xcb_client_message_data_t)
   5636  */
   5637 void
   5638 xcb_client_message_data_next (xcb_client_message_data_iterator_t *i);
   5639 
   5640 /**
   5641  * Return the iterator pointing to the last element
   5642  * @param i An xcb_client_message_data_iterator_t
   5643  * @return  The iterator pointing to the last element
   5644  *
   5645  * Set the current element in the iterator to the last element.
   5646  * The member rem is set to 0. The member data points to the
   5647  * last element.
   5648  */
   5649 xcb_generic_iterator_t
   5650 xcb_client_message_data_end (xcb_client_message_data_iterator_t i);
   5651 
   5652 int
   5653 xcb_create_window_value_list_serialize (void                                 **_buffer,
   5654                                         uint32_t                               value_mask,
   5655                                         const xcb_create_window_value_list_t  *_aux);
   5656 
   5657 int
   5658 xcb_create_window_value_list_unpack (const void                      *_buffer,
   5659                                      uint32_t                         value_mask,
   5660                                      xcb_create_window_value_list_t  *_aux);
   5661 
   5662 int
   5663 xcb_create_window_value_list_sizeof (const void  *_buffer,
   5664                                      uint32_t     value_mask);
   5665 
   5666 int
   5667 xcb_create_window_sizeof (const void  *_buffer);
   5668 
   5669 /**
   5670  * @brief Creates a window
   5671  *
   5672  * @param c The connection
   5673  * @param depth Specifies the new window's depth (TODO: what unit?).
   5674  * \n
   5675  * The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
   5676  * \a parent window.
   5677  * @param wid The ID with which you will refer to the new window, created by
   5678  * `xcb_generate_id`.
   5679  * @param parent The parent window of the new window.
   5680  * @param x The X coordinate of the new window.
   5681  * @param y The Y coordinate of the new window.
   5682  * @param width The width of the new window.
   5683  * @param height The height of the new window.
   5684  * @param border_width TODO:
   5685  * \n
   5686  * Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
   5687  * @param _class A bitmask of #xcb_window_class_t values.
   5688  * @param _class \n
   5689  * @param visual Specifies the id for the new window's visual.
   5690  * \n
   5691  * The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
   5692  * \a parent window.
   5693  * @param value_mask A bitmask of #xcb_cw_t values.
   5694  * @return A cookie
   5695  *
   5696  * Creates an unmapped window as child of the specified \a parent window. A
   5697  * CreateNotify event will be generated. The new window is placed on top in the
   5698  * stacking order with respect to siblings.
   5699  *
   5700  * The coordinate system has the X axis horizontal and the Y axis vertical with
   5701  * the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
   5702  * of pixels, and coincide with pixel centers. Each window and pixmap has its own
   5703  * coordinate system. For a window, the origin is inside the border at the inside,
   5704  * upper-left corner.
   5705  *
   5706  * The created window is not yet displayed (mapped), call `xcb_map_window` to
   5707  * display it.
   5708  *
   5709  * The created window will initially use the same cursor as its parent.
   5710  *
   5711  * This form can be used only if the request will not cause
   5712  * a reply to be generated. Any returned error will be
   5713  * saved for handling by xcb_request_check().
   5714  */
   5715 xcb_void_cookie_t
   5716 xcb_create_window_checked (xcb_connection_t *c,
   5717                            uint8_t           depth,
   5718                            xcb_window_t      wid,
   5719                            xcb_window_t      parent,
   5720                            int16_t           x,
   5721                            int16_t           y,
   5722                            uint16_t          width,
   5723                            uint16_t          height,
   5724                            uint16_t          border_width,
   5725                            uint16_t          _class,
   5726                            xcb_visualid_t    visual,
   5727                            uint32_t          value_mask,
   5728                            const void       *value_list);
   5729 
   5730 /**
   5731  * @brief Creates a window
   5732  *
   5733  * @param c The connection
   5734  * @param depth Specifies the new window's depth (TODO: what unit?).
   5735  * \n
   5736  * The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
   5737  * \a parent window.
   5738  * @param wid The ID with which you will refer to the new window, created by
   5739  * `xcb_generate_id`.
   5740  * @param parent The parent window of the new window.
   5741  * @param x The X coordinate of the new window.
   5742  * @param y The Y coordinate of the new window.
   5743  * @param width The width of the new window.
   5744  * @param height The height of the new window.
   5745  * @param border_width TODO:
   5746  * \n
   5747  * Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
   5748  * @param _class A bitmask of #xcb_window_class_t values.
   5749  * @param _class \n
   5750  * @param visual Specifies the id for the new window's visual.
   5751  * \n
   5752  * The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
   5753  * \a parent window.
   5754  * @param value_mask A bitmask of #xcb_cw_t values.
   5755  * @return A cookie
   5756  *
   5757  * Creates an unmapped window as child of the specified \a parent window. A
   5758  * CreateNotify event will be generated. The new window is placed on top in the
   5759  * stacking order with respect to siblings.
   5760  *
   5761  * The coordinate system has the X axis horizontal and the Y axis vertical with
   5762  * the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
   5763  * of pixels, and coincide with pixel centers. Each window and pixmap has its own
   5764  * coordinate system. For a window, the origin is inside the border at the inside,
   5765  * upper-left corner.
   5766  *
   5767  * The created window is not yet displayed (mapped), call `xcb_map_window` to
   5768  * display it.
   5769  *
   5770  * The created window will initially use the same cursor as its parent.
   5771  *
   5772  */
   5773 xcb_void_cookie_t
   5774 xcb_create_window (xcb_connection_t *c,
   5775                    uint8_t           depth,
   5776                    xcb_window_t      wid,
   5777                    xcb_window_t      parent,
   5778                    int16_t           x,
   5779                    int16_t           y,
   5780                    uint16_t          width,
   5781                    uint16_t          height,
   5782                    uint16_t          border_width,
   5783                    uint16_t          _class,
   5784                    xcb_visualid_t    visual,
   5785                    uint32_t          value_mask,
   5786                    const void       *value_list);
   5787 
   5788 /**
   5789  * @brief Creates a window
   5790  *
   5791  * @param c The connection
   5792  * @param depth Specifies the new window's depth (TODO: what unit?).
   5793  * \n
   5794  * The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
   5795  * \a parent window.
   5796  * @param wid The ID with which you will refer to the new window, created by
   5797  * `xcb_generate_id`.
   5798  * @param parent The parent window of the new window.
   5799  * @param x The X coordinate of the new window.
   5800  * @param y The Y coordinate of the new window.
   5801  * @param width The width of the new window.
   5802  * @param height The height of the new window.
   5803  * @param border_width TODO:
   5804  * \n
   5805  * Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
   5806  * @param _class A bitmask of #xcb_window_class_t values.
   5807  * @param _class \n
   5808  * @param visual Specifies the id for the new window's visual.
   5809  * \n
   5810  * The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
   5811  * \a parent window.
   5812  * @param value_mask A bitmask of #xcb_cw_t values.
   5813  * @return A cookie
   5814  *
   5815  * Creates an unmapped window as child of the specified \a parent window. A
   5816  * CreateNotify event will be generated. The new window is placed on top in the
   5817  * stacking order with respect to siblings.
   5818  *
   5819  * The coordinate system has the X axis horizontal and the Y axis vertical with
   5820  * the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
   5821  * of pixels, and coincide with pixel centers. Each window and pixmap has its own
   5822  * coordinate system. For a window, the origin is inside the border at the inside,
   5823  * upper-left corner.
   5824  *
   5825  * The created window is not yet displayed (mapped), call `xcb_map_window` to
   5826  * display it.
   5827  *
   5828  * The created window will initially use the same cursor as its parent.
   5829  *
   5830  * This form can be used only if the request will not cause
   5831  * a reply to be generated. Any returned error will be
   5832  * saved for handling by xcb_request_check().
   5833  */
   5834 xcb_void_cookie_t
   5835 xcb_create_window_aux_checked (xcb_connection_t                     *c,
   5836                                uint8_t                               depth,
   5837                                xcb_window_t                          wid,
   5838                                xcb_window_t                          parent,
   5839                                int16_t                               x,
   5840                                int16_t                               y,
   5841                                uint16_t                              width,
   5842                                uint16_t                              height,
   5843                                uint16_t                              border_width,
   5844                                uint16_t                              _class,
   5845                                xcb_visualid_t                        visual,
   5846                                uint32_t                              value_mask,
   5847                                const xcb_create_window_value_list_t *value_list);
   5848 
   5849 /**
   5850  * @brief Creates a window
   5851  *
   5852  * @param c The connection
   5853  * @param depth Specifies the new window's depth (TODO: what unit?).
   5854  * \n
   5855  * The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
   5856  * \a parent window.
   5857  * @param wid The ID with which you will refer to the new window, created by
   5858  * `xcb_generate_id`.
   5859  * @param parent The parent window of the new window.
   5860  * @param x The X coordinate of the new window.
   5861  * @param y The Y coordinate of the new window.
   5862  * @param width The width of the new window.
   5863  * @param height The height of the new window.
   5864  * @param border_width TODO:
   5865  * \n
   5866  * Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
   5867  * @param _class A bitmask of #xcb_window_class_t values.
   5868  * @param _class \n
   5869  * @param visual Specifies the id for the new window's visual.
   5870  * \n
   5871  * The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
   5872  * \a parent window.
   5873  * @param value_mask A bitmask of #xcb_cw_t values.
   5874  * @return A cookie
   5875  *
   5876  * Creates an unmapped window as child of the specified \a parent window. A
   5877  * CreateNotify event will be generated. The new window is placed on top in the
   5878  * stacking order with respect to siblings.
   5879  *
   5880  * The coordinate system has the X axis horizontal and the Y axis vertical with
   5881  * the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
   5882  * of pixels, and coincide with pixel centers. Each window and pixmap has its own
   5883  * coordinate system. For a window, the origin is inside the border at the inside,
   5884  * upper-left corner.
   5885  *
   5886  * The created window is not yet displayed (mapped), call `xcb_map_window` to
   5887  * display it.
   5888  *
   5889  * The created window will initially use the same cursor as its parent.
   5890  *
   5891  */
   5892 xcb_void_cookie_t
   5893 xcb_create_window_aux (xcb_connection_t                     *c,
   5894                        uint8_t                               depth,
   5895                        xcb_window_t                          wid,
   5896                        xcb_window_t                          parent,
   5897                        int16_t                               x,
   5898                        int16_t                               y,
   5899                        uint16_t                              width,
   5900                        uint16_t                              height,
   5901                        uint16_t                              border_width,
   5902                        uint16_t                              _class,
   5903                        xcb_visualid_t                        visual,
   5904                        uint32_t                              value_mask,
   5905                        const xcb_create_window_value_list_t *value_list);
   5906 
   5907 void *
   5908 xcb_create_window_value_list (const xcb_create_window_request_t *R);
   5909 
   5910 int
   5911 xcb_change_window_attributes_value_list_serialize (void                                            **_buffer,
   5912                                                    uint32_t                                          value_mask,
   5913                                                    const xcb_change_window_attributes_value_list_t  *_aux);
   5914 
   5915 int
   5916 xcb_change_window_attributes_value_list_unpack (const void                                 *_buffer,
   5917                                                 uint32_t                                    value_mask,
   5918                                                 xcb_change_window_attributes_value_list_t  *_aux);
   5919 
   5920 int
   5921 xcb_change_window_attributes_value_list_sizeof (const void  *_buffer,
   5922                                                 uint32_t     value_mask);
   5923 
   5924 int
   5925 xcb_change_window_attributes_sizeof (const void  *_buffer);
   5926 
   5927 /**
   5928  * @brief change window attributes
   5929  *
   5930  * @param c The connection
   5931  * @param window The window to change.
   5932  * @param value_mask A bitmask of #xcb_cw_t values.
   5933  * @param value_mask \n
   5934  * @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
   5935  * order has to correspond to the order of possible \a value_mask bits. See the
   5936  * example.
   5937  * @return A cookie
   5938  *
   5939  * Changes the attributes specified by \a value_mask for the specified \a window.
   5940  *
   5941  * This form can be used only if the request will not cause
   5942  * a reply to be generated. Any returned error will be
   5943  * saved for handling by xcb_request_check().
   5944  */
   5945 xcb_void_cookie_t
   5946 xcb_change_window_attributes_checked (xcb_connection_t *c,
   5947                                       xcb_window_t      window,
   5948                                       uint32_t          value_mask,
   5949                                       const void       *value_list);
   5950 
   5951 /**
   5952  * @brief change window attributes
   5953  *
   5954  * @param c The connection
   5955  * @param window The window to change.
   5956  * @param value_mask A bitmask of #xcb_cw_t values.
   5957  * @param value_mask \n
   5958  * @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
   5959  * order has to correspond to the order of possible \a value_mask bits. See the
   5960  * example.
   5961  * @return A cookie
   5962  *
   5963  * Changes the attributes specified by \a value_mask for the specified \a window.
   5964  *
   5965  */
   5966 xcb_void_cookie_t
   5967 xcb_change_window_attributes (xcb_connection_t *c,
   5968                               xcb_window_t      window,
   5969                               uint32_t          value_mask,
   5970                               const void       *value_list);
   5971 
   5972 /**
   5973  * @brief change window attributes
   5974  *
   5975  * @param c The connection
   5976  * @param window The window to change.
   5977  * @param value_mask A bitmask of #xcb_cw_t values.
   5978  * @param value_mask \n
   5979  * @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
   5980  * order has to correspond to the order of possible \a value_mask bits. See the
   5981  * example.
   5982  * @return A cookie
   5983  *
   5984  * Changes the attributes specified by \a value_mask for the specified \a window.
   5985  *
   5986  * This form can be used only if the request will not cause
   5987  * a reply to be generated. Any returned error will be
   5988  * saved for handling by xcb_request_check().
   5989  */
   5990 xcb_void_cookie_t
   5991 xcb_change_window_attributes_aux_checked (xcb_connection_t                                *c,
   5992                                           xcb_window_t                                     window,
   5993                                           uint32_t                                         value_mask,
   5994                                           const xcb_change_window_attributes_value_list_t *value_list);
   5995 
   5996 /**
   5997  * @brief change window attributes
   5998  *
   5999  * @param c The connection
   6000  * @param window The window to change.
   6001  * @param value_mask A bitmask of #xcb_cw_t values.
   6002  * @param value_mask \n
   6003  * @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
   6004  * order has to correspond to the order of possible \a value_mask bits. See the
   6005  * example.
   6006  * @return A cookie
   6007  *
   6008  * Changes the attributes specified by \a value_mask for the specified \a window.
   6009  *
   6010  */
   6011 xcb_void_cookie_t
   6012 xcb_change_window_attributes_aux (xcb_connection_t                                *c,
   6013                                   xcb_window_t                                     window,
   6014                                   uint32_t                                         value_mask,
   6015                                   const xcb_change_window_attributes_value_list_t *value_list);
   6016 
   6017 void *
   6018 xcb_change_window_attributes_value_list (const xcb_change_window_attributes_request_t *R);
   6019 
   6020 /**
   6021  * @brief Gets window attributes
   6022  *
   6023  * @param c The connection
   6024  * @param window The window to get the attributes from.
   6025  * @return A cookie
   6026  *
   6027  * Gets the current attributes for the specified \a window.
   6028  *
   6029  */
   6030 xcb_get_window_attributes_cookie_t
   6031 xcb_get_window_attributes (xcb_connection_t *c,
   6032                            xcb_window_t      window);
   6033 
   6034 /**
   6035  * @brief Gets window attributes
   6036  *
   6037  * @param c The connection
   6038  * @param window The window to get the attributes from.
   6039  * @return A cookie
   6040  *
   6041  * Gets the current attributes for the specified \a window.
   6042  *
   6043  * This form can be used only if the request will cause
   6044  * a reply to be generated. Any returned error will be
   6045  * placed in the event queue.
   6046  */
   6047 xcb_get_window_attributes_cookie_t
   6048 xcb_get_window_attributes_unchecked (xcb_connection_t *c,
   6049                                      xcb_window_t      window);
   6050 
   6051 /**
   6052  * Return the reply
   6053  * @param c      The connection
   6054  * @param cookie The cookie
   6055  * @param e      The xcb_generic_error_t supplied
   6056  *
   6057  * Returns the reply of the request asked by
   6058  *
   6059  * The parameter @p e supplied to this function must be NULL if
   6060  * xcb_get_window_attributes_unchecked(). is used.
   6061  * Otherwise, it stores the error if any.
   6062  *
   6063  * The returned value must be freed by the caller using free().
   6064  */
   6065 xcb_get_window_attributes_reply_t *
   6066 xcb_get_window_attributes_reply (xcb_connection_t                    *c,
   6067                                  xcb_get_window_attributes_cookie_t   cookie  /**< */,
   6068                                  xcb_generic_error_t                **e);
   6069 
   6070 /**
   6071  * @brief Destroys a window
   6072  *
   6073  * @param c The connection
   6074  * @param window The window to destroy.
   6075  * @return A cookie
   6076  *
   6077  * Destroys the specified window and all of its subwindows. A DestroyNotify event
   6078  * is generated for each destroyed window (a DestroyNotify event is first generated
   6079  * for any given window's inferiors). If the window was mapped, it will be
   6080  * automatically unmapped before destroying.
   6081  *
   6082  * Calling DestroyWindow on the root window will do nothing.
   6083  *
   6084  * This form can be used only if the request will not cause
   6085  * a reply to be generated. Any returned error will be
   6086  * saved for handling by xcb_request_check().
   6087  */
   6088 xcb_void_cookie_t
   6089 xcb_destroy_window_checked (xcb_connection_t *c,
   6090                             xcb_window_t      window);
   6091 
   6092 /**
   6093  * @brief Destroys a window
   6094  *
   6095  * @param c The connection
   6096  * @param window The window to destroy.
   6097  * @return A cookie
   6098  *
   6099  * Destroys the specified window and all of its subwindows. A DestroyNotify event
   6100  * is generated for each destroyed window (a DestroyNotify event is first generated
   6101  * for any given window's inferiors). If the window was mapped, it will be
   6102  * automatically unmapped before destroying.
   6103  *
   6104  * Calling DestroyWindow on the root window will do nothing.
   6105  *
   6106  */
   6107 xcb_void_cookie_t
   6108 xcb_destroy_window (xcb_connection_t *c,
   6109                     xcb_window_t      window);
   6110 
   6111 /**
   6112  *
   6113  * @param c The connection
   6114  * @return A cookie
   6115  *
   6116  * Delivers a request to the X server.
   6117  *
   6118  * This form can be used only if the request will not cause
   6119  * a reply to be generated. Any returned error will be
   6120  * saved for handling by xcb_request_check().
   6121  */
   6122 xcb_void_cookie_t
   6123 xcb_destroy_subwindows_checked (xcb_connection_t *c,
   6124                                 xcb_window_t      window);
   6125 
   6126 /**
   6127  *
   6128  * @param c The connection
   6129  * @return A cookie
   6130  *
   6131  * Delivers a request to the X server.
   6132  *
   6133  */
   6134 xcb_void_cookie_t
   6135 xcb_destroy_subwindows (xcb_connection_t *c,
   6136                         xcb_window_t      window);
   6137 
   6138 /**
   6139  * @brief Changes a client's save set
   6140  *
   6141  * @param c The connection
   6142  * @param mode A bitmask of #xcb_set_mode_t values.
   6143  * @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
   6144  * @param window The window to add or delete to/from your save set.
   6145  * @return A cookie
   6146  *
   6147  * TODO: explain what the save set is for.
   6148  *
   6149  * This function either adds or removes the specified window to the client's (your
   6150  * application's) save set.
   6151  *
   6152  * This form can be used only if the request will not cause
   6153  * a reply to be generated. Any returned error will be
   6154  * saved for handling by xcb_request_check().
   6155  */
   6156 xcb_void_cookie_t
   6157 xcb_change_save_set_checked (xcb_connection_t *c,
   6158                              uint8_t           mode,
   6159                              xcb_window_t      window);
   6160 
   6161 /**
   6162  * @brief Changes a client's save set
   6163  *
   6164  * @param c The connection
   6165  * @param mode A bitmask of #xcb_set_mode_t values.
   6166  * @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
   6167  * @param window The window to add or delete to/from your save set.
   6168  * @return A cookie
   6169  *
   6170  * TODO: explain what the save set is for.
   6171  *
   6172  * This function either adds or removes the specified window to the client's (your
   6173  * application's) save set.
   6174  *
   6175  */
   6176 xcb_void_cookie_t
   6177 xcb_change_save_set (xcb_connection_t *c,
   6178                      uint8_t           mode,
   6179                      xcb_window_t      window);
   6180 
   6181 /**
   6182  * @brief Reparents a window
   6183  *
   6184  * @param c The connection
   6185  * @param window The window to reparent.
   6186  * @param parent The new parent of the window.
   6187  * @param x The X position of the window within its new parent.
   6188  * @param y The Y position of the window within its new parent.
   6189  * @return A cookie
   6190  *
   6191  * Makes the specified window a child of the specified parent window. If the
   6192  * window is mapped, it will automatically be unmapped before reparenting and
   6193  * re-mapped after reparenting. The window is placed in the stacking order on top
   6194  * with respect to sibling windows.
   6195  *
   6196  * After reparenting, a ReparentNotify event is generated.
   6197  *
   6198  * This form can be used only if the request will not cause
   6199  * a reply to be generated. Any returned error will be
   6200  * saved for handling by xcb_request_check().
   6201  */
   6202 xcb_void_cookie_t
   6203 xcb_reparent_window_checked (xcb_connection_t *c,
   6204                              xcb_window_t      window,
   6205                              xcb_window_t      parent,
   6206                              int16_t           x,
   6207                              int16_t           y);
   6208 
   6209 /**
   6210  * @brief Reparents a window
   6211  *
   6212  * @param c The connection
   6213  * @param window The window to reparent.
   6214  * @param parent The new parent of the window.
   6215  * @param x The X position of the window within its new parent.
   6216  * @param y The Y position of the window within its new parent.
   6217  * @return A cookie
   6218  *
   6219  * Makes the specified window a child of the specified parent window. If the
   6220  * window is mapped, it will automatically be unmapped before reparenting and
   6221  * re-mapped after reparenting. The window is placed in the stacking order on top
   6222  * with respect to sibling windows.
   6223  *
   6224  * After reparenting, a ReparentNotify event is generated.
   6225  *
   6226  */
   6227 xcb_void_cookie_t
   6228 xcb_reparent_window (xcb_connection_t *c,
   6229                      xcb_window_t      window,
   6230                      xcb_window_t      parent,
   6231                      int16_t           x,
   6232                      int16_t           y);
   6233 
   6234 /**
   6235  * @brief Makes a window visible
   6236  *
   6237  * @param c The connection
   6238  * @param window The window to make visible.
   6239  * @return A cookie
   6240  *
   6241  * Maps the specified window. This means making the window visible (as long as its
   6242  * parent is visible).
   6243  *
   6244  * This MapWindow request will be translated to a MapRequest request if a window
   6245  * manager is running. The window manager then decides to either map the window or
   6246  * not. Set the override-redirect window attribute to true if you want to bypass
   6247  * this mechanism.
   6248  *
   6249  * If the window manager decides to map the window (or if no window manager is
   6250  * running), a MapNotify event is generated.
   6251  *
   6252  * If the window becomes viewable and no earlier contents for it are remembered,
   6253  * the X server tiles the window with its background. If the window's background
   6254  * is undefined, the existing screen contents are not altered, and the X server
   6255  * generates zero or more Expose events.
   6256  *
   6257  * If the window type is InputOutput, an Expose event will be generated when the
   6258  * window becomes visible. The normal response to an Expose event should be to
   6259  * repaint the window.
   6260  *
   6261  * This form can be used only if the request will not cause
   6262  * a reply to be generated. Any returned error will be
   6263  * saved for handling by xcb_request_check().
   6264  */
   6265 xcb_void_cookie_t
   6266 xcb_map_window_checked (xcb_connection_t *c,
   6267                         xcb_window_t      window);
   6268 
   6269 /**
   6270  * @brief Makes a window visible
   6271  *
   6272  * @param c The connection
   6273  * @param window The window to make visible.
   6274  * @return A cookie
   6275  *
   6276  * Maps the specified window. This means making the window visible (as long as its
   6277  * parent is visible).
   6278  *
   6279  * This MapWindow request will be translated to a MapRequest request if a window
   6280  * manager is running. The window manager then decides to either map the window or
   6281  * not. Set the override-redirect window attribute to true if you want to bypass
   6282  * this mechanism.
   6283  *
   6284  * If the window manager decides to map the window (or if no window manager is
   6285  * running), a MapNotify event is generated.
   6286  *
   6287  * If the window becomes viewable and no earlier contents for it are remembered,
   6288  * the X server tiles the window with its background. If the window's background
   6289  * is undefined, the existing screen contents are not altered, and the X server
   6290  * generates zero or more Expose events.
   6291  *
   6292  * If the window type is InputOutput, an Expose event will be generated when the
   6293  * window becomes visible. The normal response to an Expose event should be to
   6294  * repaint the window.
   6295  *
   6296  */
   6297 xcb_void_cookie_t
   6298 xcb_map_window (xcb_connection_t *c,
   6299                 xcb_window_t      window);
   6300 
   6301 /**
   6302  *
   6303  * @param c The connection
   6304  * @return A cookie
   6305  *
   6306  * Delivers a request to the X server.
   6307  *
   6308  * This form can be used only if the request will not cause
   6309  * a reply to be generated. Any returned error will be
   6310  * saved for handling by xcb_request_check().
   6311  */
   6312 xcb_void_cookie_t
   6313 xcb_map_subwindows_checked (xcb_connection_t *c,
   6314                             xcb_window_t      window);
   6315 
   6316 /**
   6317  *
   6318  * @param c The connection
   6319  * @return A cookie
   6320  *
   6321  * Delivers a request to the X server.
   6322  *
   6323  */
   6324 xcb_void_cookie_t
   6325 xcb_map_subwindows (xcb_connection_t *c,
   6326                     xcb_window_t      window);
   6327 
   6328 /**
   6329  * @brief Makes a window invisible
   6330  *
   6331  * @param c The connection
   6332  * @param window The window to make invisible.
   6333  * @return A cookie
   6334  *
   6335  * Unmaps the specified window. This means making the window invisible (and all
   6336  * its child windows).
   6337  *
   6338  * Unmapping a window leads to the `UnmapNotify` event being generated. Also,
   6339  * `Expose` events are generated for formerly obscured windows.
   6340  *
   6341  * This form can be used only if the request will not cause
   6342  * a reply to be generated. Any returned error will be
   6343  * saved for handling by xcb_request_check().
   6344  */
   6345 xcb_void_cookie_t
   6346 xcb_unmap_window_checked (xcb_connection_t *c,
   6347                           xcb_window_t      window);
   6348 
   6349 /**
   6350  * @brief Makes a window invisible
   6351  *
   6352  * @param c The connection
   6353  * @param window The window to make invisible.
   6354  * @return A cookie
   6355  *
   6356  * Unmaps the specified window. This means making the window invisible (and all
   6357  * its child windows).
   6358  *
   6359  * Unmapping a window leads to the `UnmapNotify` event being generated. Also,
   6360  * `Expose` events are generated for formerly obscured windows.
   6361  *
   6362  */
   6363 xcb_void_cookie_t
   6364 xcb_unmap_window (xcb_connection_t *c,
   6365                   xcb_window_t      window);
   6366 
   6367 /**
   6368  *
   6369  * @param c The connection
   6370  * @return A cookie
   6371  *
   6372  * Delivers a request to the X server.
   6373  *
   6374  * This form can be used only if the request will not cause
   6375  * a reply to be generated. Any returned error will be
   6376  * saved for handling by xcb_request_check().
   6377  */
   6378 xcb_void_cookie_t
   6379 xcb_unmap_subwindows_checked (xcb_connection_t *c,
   6380                               xcb_window_t      window);
   6381 
   6382 /**
   6383  *
   6384  * @param c The connection
   6385  * @return A cookie
   6386  *
   6387  * Delivers a request to the X server.
   6388  *
   6389  */
   6390 xcb_void_cookie_t
   6391 xcb_unmap_subwindows (xcb_connection_t *c,
   6392                       xcb_window_t      window);
   6393 
   6394 int
   6395 xcb_configure_window_value_list_serialize (void                                    **_buffer,
   6396                                            uint16_t                                  value_mask,
   6397                                            const xcb_configure_window_value_list_t  *_aux);
   6398 
   6399 int
   6400 xcb_configure_window_value_list_unpack (const void                         *_buffer,
   6401                                         uint16_t                            value_mask,
   6402                                         xcb_configure_window_value_list_t  *_aux);
   6403 
   6404 int
   6405 xcb_configure_window_value_list_sizeof (const void  *_buffer,
   6406                                         uint16_t     value_mask);
   6407 
   6408 int
   6409 xcb_configure_window_sizeof (const void  *_buffer);
   6410 
   6411 /**
   6412  * @brief Configures window attributes
   6413  *
   6414  * @param c The connection
   6415  * @param window The window to configure.
   6416  * @param value_mask Bitmask of attributes to change.
   6417  * @param value_list New values, corresponding to the attributes in value_mask. The order has to
   6418  * correspond to the order of possible \a value_mask bits. See the example.
   6419  * @return A cookie
   6420  *
   6421  * Configures a window's size, position, border width and stacking order.
   6422  *
   6423  * This form can be used only if the request will not cause
   6424  * a reply to be generated. Any returned error will be
   6425  * saved for handling by xcb_request_check().
   6426  */
   6427 xcb_void_cookie_t
   6428 xcb_configure_window_checked (xcb_connection_t *c,
   6429                               xcb_window_t      window,
   6430                               uint16_t          value_mask,
   6431                               const void       *value_list);
   6432 
   6433 /**
   6434  * @brief Configures window attributes
   6435  *
   6436  * @param c The connection
   6437  * @param window The window to configure.
   6438  * @param value_mask Bitmask of attributes to change.
   6439  * @param value_list New values, corresponding to the attributes in value_mask. The order has to
   6440  * correspond to the order of possible \a value_mask bits. See the example.
   6441  * @return A cookie
   6442  *
   6443  * Configures a window's size, position, border width and stacking order.
   6444  *
   6445  */
   6446 xcb_void_cookie_t
   6447 xcb_configure_window (xcb_connection_t *c,
   6448                       xcb_window_t      window,
   6449                       uint16_t          value_mask,
   6450                       const void       *value_list);
   6451 
   6452 /**
   6453  * @brief Configures window attributes
   6454  *
   6455  * @param c The connection
   6456  * @param window The window to configure.
   6457  * @param value_mask Bitmask of attributes to change.
   6458  * @param value_list New values, corresponding to the attributes in value_mask. The order has to
   6459  * correspond to the order of possible \a value_mask bits. See the example.
   6460  * @return A cookie
   6461  *
   6462  * Configures a window's size, position, border width and stacking order.
   6463  *
   6464  * This form can be used only if the request will not cause
   6465  * a reply to be generated. Any returned error will be
   6466  * saved for handling by xcb_request_check().
   6467  */
   6468 xcb_void_cookie_t
   6469 xcb_configure_window_aux_checked (xcb_connection_t                        *c,
   6470                                   xcb_window_t                             window,
   6471                                   uint16_t                                 value_mask,
   6472                                   const xcb_configure_window_value_list_t *value_list);
   6473 
   6474 /**
   6475  * @brief Configures window attributes
   6476  *
   6477  * @param c The connection
   6478  * @param window The window to configure.
   6479  * @param value_mask Bitmask of attributes to change.
   6480  * @param value_list New values, corresponding to the attributes in value_mask. The order has to
   6481  * correspond to the order of possible \a value_mask bits. See the example.
   6482  * @return A cookie
   6483  *
   6484  * Configures a window's size, position, border width and stacking order.
   6485  *
   6486  */
   6487 xcb_void_cookie_t
   6488 xcb_configure_window_aux (xcb_connection_t                        *c,
   6489                           xcb_window_t                             window,
   6490                           uint16_t                                 value_mask,
   6491                           const xcb_configure_window_value_list_t *value_list);
   6492 
   6493 void *
   6494 xcb_configure_window_value_list (const xcb_configure_window_request_t *R);
   6495 
   6496 /**
   6497  * @brief Change window stacking order
   6498  *
   6499  * @param c The connection
   6500  * @param direction A bitmask of #xcb_circulate_t values.
   6501  * @param direction \n
   6502  * @param window The window to raise/lower (depending on \a direction).
   6503  * @return A cookie
   6504  *
   6505  * If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
   6506  * any) will be raised to the top of the stack.
   6507  *
   6508  * If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
   6509  * be lowered to the bottom of the stack.
   6510  *
   6511  * This form can be used only if the request will not cause
   6512  * a reply to be generated. Any returned error will be
   6513  * saved for handling by xcb_request_check().
   6514  */
   6515 xcb_void_cookie_t
   6516 xcb_circulate_window_checked (xcb_connection_t *c,
   6517                               uint8_t           direction,
   6518                               xcb_window_t      window);
   6519 
   6520 /**
   6521  * @brief Change window stacking order
   6522  *
   6523  * @param c The connection
   6524  * @param direction A bitmask of #xcb_circulate_t values.
   6525  * @param direction \n
   6526  * @param window The window to raise/lower (depending on \a direction).
   6527  * @return A cookie
   6528  *
   6529  * If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
   6530  * any) will be raised to the top of the stack.
   6531  *
   6532  * If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
   6533  * be lowered to the bottom of the stack.
   6534  *
   6535  */
   6536 xcb_void_cookie_t
   6537 xcb_circulate_window (xcb_connection_t *c,
   6538                       uint8_t           direction,
   6539                       xcb_window_t      window);
   6540 
   6541 /**
   6542  * @brief Get current window geometry
   6543  *
   6544  * @param c The connection
   6545  * @param drawable The drawable (`Window` or `Pixmap`) of which the geometry will be received.
   6546  * @return A cookie
   6547  *
   6548  * Gets the current geometry of the specified drawable (either `Window` or `Pixmap`).
   6549  *
   6550  */
   6551 xcb_get_geometry_cookie_t
   6552 xcb_get_geometry (xcb_connection_t *c,
   6553                   xcb_drawable_t    drawable);
   6554 
   6555 /**
   6556  * @brief Get current window geometry
   6557  *
   6558  * @param c The connection
   6559  * @param drawable The drawable (`Window` or `Pixmap`) of which the geometry will be received.
   6560  * @return A cookie
   6561  *
   6562  * Gets the current geometry of the specified drawable (either `Window` or `Pixmap`).
   6563  *
   6564  * This form can be used only if the request will cause
   6565  * a reply to be generated. Any returned error will be
   6566  * placed in the event queue.
   6567  */
   6568 xcb_get_geometry_cookie_t
   6569 xcb_get_geometry_unchecked (xcb_connection_t *c,
   6570                             xcb_drawable_t    drawable);
   6571 
   6572 /**
   6573  * Return the reply
   6574  * @param c      The connection
   6575  * @param cookie The cookie
   6576  * @param e      The xcb_generic_error_t supplied
   6577  *
   6578  * Returns the reply of the request asked by
   6579  *
   6580  * The parameter @p e supplied to this function must be NULL if
   6581  * xcb_get_geometry_unchecked(). is used.
   6582  * Otherwise, it stores the error if any.
   6583  *
   6584  * The returned value must be freed by the caller using free().
   6585  */
   6586 xcb_get_geometry_reply_t *
   6587 xcb_get_geometry_reply (xcb_connection_t           *c,
   6588                         xcb_get_geometry_cookie_t   cookie  /**< */,
   6589                         xcb_generic_error_t       **e);
   6590 
   6591 int
   6592 xcb_query_tree_sizeof (const void  *_buffer);
   6593 
   6594 /**
   6595  * @brief query the window tree
   6596  *
   6597  * @param c The connection
   6598  * @param window The \a window to query.
   6599  * @return A cookie
   6600  *
   6601  * Gets the root window ID, parent window ID and list of children windows for the
   6602  * specified \a window. The children are listed in bottom-to-top stacking order.
   6603  *
   6604  */
   6605 xcb_query_tree_cookie_t
   6606 xcb_query_tree (xcb_connection_t *c,
   6607                 xcb_window_t      window);
   6608 
   6609 /**
   6610  * @brief query the window tree
   6611  *
   6612  * @param c The connection
   6613  * @param window The \a window to query.
   6614  * @return A cookie
   6615  *
   6616  * Gets the root window ID, parent window ID and list of children windows for the
   6617  * specified \a window. The children are listed in bottom-to-top stacking order.
   6618  *
   6619  * This form can be used only if the request will cause
   6620  * a reply to be generated. Any returned error will be
   6621  * placed in the event queue.
   6622  */
   6623 xcb_query_tree_cookie_t
   6624 xcb_query_tree_unchecked (xcb_connection_t *c,
   6625                           xcb_window_t      window);
   6626 
   6627 xcb_window_t *
   6628 xcb_query_tree_children (const xcb_query_tree_reply_t *R);
   6629 
   6630 int
   6631 xcb_query_tree_children_length (const xcb_query_tree_reply_t *R);
   6632 
   6633 xcb_generic_iterator_t
   6634 xcb_query_tree_children_end (const xcb_query_tree_reply_t *R);
   6635 
   6636 /**
   6637  * Return the reply
   6638  * @param c      The connection
   6639  * @param cookie The cookie
   6640  * @param e      The xcb_generic_error_t supplied
   6641  *
   6642  * Returns the reply of the request asked by
   6643  *
   6644  * The parameter @p e supplied to this function must be NULL if
   6645  * xcb_query_tree_unchecked(). is used.
   6646  * Otherwise, it stores the error if any.
   6647  *
   6648  * The returned value must be freed by the caller using free().
   6649  */
   6650 xcb_query_tree_reply_t *
   6651 xcb_query_tree_reply (xcb_connection_t         *c,
   6652                       xcb_query_tree_cookie_t   cookie  /**< */,
   6653                       xcb_generic_error_t     **e);
   6654 
   6655 int
   6656 xcb_intern_atom_sizeof (const void  *_buffer);
   6657 
   6658 /**
   6659  * @brief Get atom identifier by name
   6660  *
   6661  * @param c The connection
   6662  * @param only_if_exists Return a valid atom id only if the atom already exists.
   6663  * @param name_len The length of the following \a name.
   6664  * @param name The name of the atom.
   6665  * @return A cookie
   6666  *
   6667  * Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
   6668  * name. Atoms are used in protocols like EWMH, for example to store window titles
   6669  * (`_NET_WM_NAME` atom) as property of a window.
   6670  *
   6671  * If \a only_if_exists is 0, the atom will be created if it does not already exist.
   6672  * If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
   6673  * not yet exist.
   6674  *
   6675  */
   6676 xcb_intern_atom_cookie_t
   6677 xcb_intern_atom (xcb_connection_t *c,
   6678                  uint8_t           only_if_exists,
   6679                  uint16_t          name_len,
   6680                  const char       *name);
   6681 
   6682 /**
   6683  * @brief Get atom identifier by name
   6684  *
   6685  * @param c The connection
   6686  * @param only_if_exists Return a valid atom id only if the atom already exists.
   6687  * @param name_len The length of the following \a name.
   6688  * @param name The name of the atom.
   6689  * @return A cookie
   6690  *
   6691  * Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
   6692  * name. Atoms are used in protocols like EWMH, for example to store window titles
   6693  * (`_NET_WM_NAME` atom) as property of a window.
   6694  *
   6695  * If \a only_if_exists is 0, the atom will be created if it does not already exist.
   6696  * If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
   6697  * not yet exist.
   6698  *
   6699  * This form can be used only if the request will cause
   6700  * a reply to be generated. Any returned error will be
   6701  * placed in the event queue.
   6702  */
   6703 xcb_intern_atom_cookie_t
   6704 xcb_intern_atom_unchecked (xcb_connection_t *c,
   6705                            uint8_t           only_if_exists,
   6706                            uint16_t          name_len,
   6707                            const char       *name);
   6708 
   6709 /**
   6710  * Return the reply
   6711  * @param c      The connection
   6712  * @param cookie The cookie
   6713  * @param e      The xcb_generic_error_t supplied
   6714  *
   6715  * Returns the reply of the request asked by
   6716  *
   6717  * The parameter @p e supplied to this function must be NULL if
   6718  * xcb_intern_atom_unchecked(). is used.
   6719  * Otherwise, it stores the error if any.
   6720  *
   6721  * The returned value must be freed by the caller using free().
   6722  */
   6723 xcb_intern_atom_reply_t *
   6724 xcb_intern_atom_reply (xcb_connection_t          *c,
   6725                        xcb_intern_atom_cookie_t   cookie  /**< */,
   6726                        xcb_generic_error_t      **e);
   6727 
   6728 int
   6729 xcb_get_atom_name_sizeof (const void  *_buffer);
   6730 
   6731 /**
   6732  *
   6733  * @param c The connection
   6734  * @return A cookie
   6735  *
   6736  * Delivers a request to the X server.
   6737  *
   6738  */
   6739 xcb_get_atom_name_cookie_t
   6740 xcb_get_atom_name (xcb_connection_t *c,
   6741                    xcb_atom_t        atom);
   6742 
   6743 /**
   6744  *
   6745  * @param c The connection
   6746  * @return A cookie
   6747  *
   6748  * Delivers a request to the X server.
   6749  *
   6750  * This form can be used only if the request will cause
   6751  * a reply to be generated. Any returned error will be
   6752  * placed in the event queue.
   6753  */
   6754 xcb_get_atom_name_cookie_t
   6755 xcb_get_atom_name_unchecked (xcb_connection_t *c,
   6756                              xcb_atom_t        atom);
   6757 
   6758 char *
   6759 xcb_get_atom_name_name (const xcb_get_atom_name_reply_t *R);
   6760 
   6761 int
   6762 xcb_get_atom_name_name_length (const xcb_get_atom_name_reply_t *R);
   6763 
   6764 xcb_generic_iterator_t
   6765 xcb_get_atom_name_name_end (const xcb_get_atom_name_reply_t *R);
   6766 
   6767 /**
   6768  * Return the reply
   6769  * @param c      The connection
   6770  * @param cookie The cookie
   6771  * @param e      The xcb_generic_error_t supplied
   6772  *
   6773  * Returns the reply of the request asked by
   6774  *
   6775  * The parameter @p e supplied to this function must be NULL if
   6776  * xcb_get_atom_name_unchecked(). is used.
   6777  * Otherwise, it stores the error if any.
   6778  *
   6779  * The returned value must be freed by the caller using free().
   6780  */
   6781 xcb_get_atom_name_reply_t *
   6782 xcb_get_atom_name_reply (xcb_connection_t            *c,
   6783                          xcb_get_atom_name_cookie_t   cookie  /**< */,
   6784                          xcb_generic_error_t        **e);
   6785 
   6786 int
   6787 xcb_change_property_sizeof (const void  *_buffer);
   6788 
   6789 /**
   6790  * @brief Changes a window property
   6791  *
   6792  * @param c The connection
   6793  * @param mode A bitmask of #xcb_prop_mode_t values.
   6794  * @param mode \n
   6795  * @param window The window whose property you want to change.
   6796  * @param property The property you want to change (an atom).
   6797  * @param type The type of the property you want to change (an atom).
   6798  * @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
   6799  * 32-bit quantities. Possible values are 8, 16 and 32. This information allows
   6800  * the X server to correctly perform byte-swap operations as necessary.
   6801  * @param data_len Specifies the number of elements (see \a format).
   6802  * @param data The property data.
   6803  * @return A cookie
   6804  *
   6805  * Sets or updates a property on the specified \a window. Properties are for
   6806  * example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
   6807  * Protocols such as EWMH also use properties - for example EWMH defines the
   6808  * window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
   6809  *
   6810  * This form can be used only if the request will not cause
   6811  * a reply to be generated. Any returned error will be
   6812  * saved for handling by xcb_request_check().
   6813  */
   6814 xcb_void_cookie_t
   6815 xcb_change_property_checked (xcb_connection_t *c,
   6816                              uint8_t           mode,
   6817                              xcb_window_t      window,
   6818                              xcb_atom_t        property,
   6819                              xcb_atom_t        type,
   6820                              uint8_t           format,
   6821                              uint32_t          data_len,
   6822                              const void       *data);
   6823 
   6824 /**
   6825  * @brief Changes a window property
   6826  *
   6827  * @param c The connection
   6828  * @param mode A bitmask of #xcb_prop_mode_t values.
   6829  * @param mode \n
   6830  * @param window The window whose property you want to change.
   6831  * @param property The property you want to change (an atom).
   6832  * @param type The type of the property you want to change (an atom).
   6833  * @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
   6834  * 32-bit quantities. Possible values are 8, 16 and 32. This information allows
   6835  * the X server to correctly perform byte-swap operations as necessary.
   6836  * @param data_len Specifies the number of elements (see \a format).
   6837  * @param data The property data.
   6838  * @return A cookie
   6839  *
   6840  * Sets or updates a property on the specified \a window. Properties are for
   6841  * example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
   6842  * Protocols such as EWMH also use properties - for example EWMH defines the
   6843  * window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
   6844  *
   6845  */
   6846 xcb_void_cookie_t
   6847 xcb_change_property (xcb_connection_t *c,
   6848                      uint8_t           mode,
   6849                      xcb_window_t      window,
   6850                      xcb_atom_t        property,
   6851                      xcb_atom_t        type,
   6852                      uint8_t           format,
   6853                      uint32_t          data_len,
   6854                      const void       *data);
   6855 
   6856 void *
   6857 xcb_change_property_data (const xcb_change_property_request_t *R);
   6858 
   6859 int
   6860 xcb_change_property_data_length (const xcb_change_property_request_t *R);
   6861 
   6862 xcb_generic_iterator_t
   6863 xcb_change_property_data_end (const xcb_change_property_request_t *R);
   6864 
   6865 /**
   6866  *
   6867  * @param c The connection
   6868  * @return A cookie
   6869  *
   6870  * Delivers a request to the X server.
   6871  *
   6872  * This form can be used only if the request will not cause
   6873  * a reply to be generated. Any returned error will be
   6874  * saved for handling by xcb_request_check().
   6875  */
   6876 xcb_void_cookie_t
   6877 xcb_delete_property_checked (xcb_connection_t *c,
   6878                              xcb_window_t      window,
   6879                              xcb_atom_t        property);
   6880 
   6881 /**
   6882  *
   6883  * @param c The connection
   6884  * @return A cookie
   6885  *
   6886  * Delivers a request to the X server.
   6887  *
   6888  */
   6889 xcb_void_cookie_t
   6890 xcb_delete_property (xcb_connection_t *c,
   6891                      xcb_window_t      window,
   6892                      xcb_atom_t        property);
   6893 
   6894 int
   6895 xcb_get_property_sizeof (const void  *_buffer);
   6896 
   6897 /**
   6898  * @brief Gets a window property
   6899  *
   6900  * @param c The connection
   6901  * @param _delete Whether the property should actually be deleted. For deleting a property, the
   6902  * specified \a type has to match the actual property type.
   6903  * @param window The window whose property you want to get.
   6904  * @param property The property you want to get (an atom).
   6905  * @param type The type of the property you want to get (an atom).
   6906  * @param long_offset Specifies the offset (in 32-bit multiples) in the specified property where the
   6907  * data is to be retrieved.
   6908  * @param long_length Specifies how many 32-bit multiples of data should be retrieved (e.g. if you
   6909  * set \a long_length to 4, you will receive 16 bytes of data).
   6910  * @return A cookie
   6911  *
   6912  * Gets the specified \a property from the specified \a window. Properties are for
   6913  * example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
   6914  * Protocols such as EWMH also use properties - for example EWMH defines the
   6915  * window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
   6916  *
   6917  * TODO: talk about \a type
   6918  *
   6919  * TODO: talk about `delete`
   6920  *
   6921  * TODO: talk about the offset/length thing. what's a valid use case?
   6922  *
   6923  */
   6924 xcb_get_property_cookie_t
   6925 xcb_get_property (xcb_connection_t *c,
   6926                   uint8_t           _delete,
   6927                   xcb_window_t      window,
   6928                   xcb_atom_t        property,
   6929                   xcb_atom_t        type,
   6930                   uint32_t          long_offset,
   6931                   uint32_t          long_length);
   6932 
   6933 /**
   6934  * @brief Gets a window property
   6935  *
   6936  * @param c The connection
   6937  * @param _delete Whether the property should actually be deleted. For deleting a property, the
   6938  * specified \a type has to match the actual property type.
   6939  * @param window The window whose property you want to get.
   6940  * @param property The property you want to get (an atom).
   6941  * @param type The type of the property you want to get (an atom).
   6942  * @param long_offset Specifies the offset (in 32-bit multiples) in the specified property where the
   6943  * data is to be retrieved.
   6944  * @param long_length Specifies how many 32-bit multiples of data should be retrieved (e.g. if you
   6945  * set \a long_length to 4, you will receive 16 bytes of data).
   6946  * @return A cookie
   6947  *
   6948  * Gets the specified \a property from the specified \a window. Properties are for
   6949  * example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
   6950  * Protocols such as EWMH also use properties - for example EWMH defines the
   6951  * window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
   6952  *
   6953  * TODO: talk about \a type
   6954  *
   6955  * TODO: talk about `delete`
   6956  *
   6957  * TODO: talk about the offset/length thing. what's a valid use case?
   6958  *
   6959  * This form can be used only if the request will cause
   6960  * a reply to be generated. Any returned error will be
   6961  * placed in the event queue.
   6962  */
   6963 xcb_get_property_cookie_t
   6964 xcb_get_property_unchecked (xcb_connection_t *c,
   6965                             uint8_t           _delete,
   6966                             xcb_window_t      window,
   6967                             xcb_atom_t        property,
   6968                             xcb_atom_t        type,
   6969                             uint32_t          long_offset,
   6970                             uint32_t          long_length);
   6971 
   6972 void *
   6973 xcb_get_property_value (const xcb_get_property_reply_t *R);
   6974 
   6975 int
   6976 xcb_get_property_value_length (const xcb_get_property_reply_t *R);
   6977 
   6978 xcb_generic_iterator_t
   6979 xcb_get_property_value_end (const xcb_get_property_reply_t *R);
   6980 
   6981 /**
   6982  * Return the reply
   6983  * @param c      The connection
   6984  * @param cookie The cookie
   6985  * @param e      The xcb_generic_error_t supplied
   6986  *
   6987  * Returns the reply of the request asked by
   6988  *
   6989  * The parameter @p e supplied to this function must be NULL if
   6990  * xcb_get_property_unchecked(). is used.
   6991  * Otherwise, it stores the error if any.
   6992  *
   6993  * The returned value must be freed by the caller using free().
   6994  */
   6995 xcb_get_property_reply_t *
   6996 xcb_get_property_reply (xcb_connection_t           *c,
   6997                         xcb_get_property_cookie_t   cookie  /**< */,
   6998                         xcb_generic_error_t       **e);
   6999 
   7000 int
   7001 xcb_list_properties_sizeof (const void  *_buffer);
   7002 
   7003 /**
   7004  *
   7005  * @param c The connection
   7006  * @return A cookie
   7007  *
   7008  * Delivers a request to the X server.
   7009  *
   7010  */
   7011 xcb_list_properties_cookie_t
   7012 xcb_list_properties (xcb_connection_t *c,
   7013                      xcb_window_t      window);
   7014 
   7015 /**
   7016  *
   7017  * @param c The connection
   7018  * @return A cookie
   7019  *
   7020  * Delivers a request to the X server.
   7021  *
   7022  * This form can be used only if the request will cause
   7023  * a reply to be generated. Any returned error will be
   7024  * placed in the event queue.
   7025  */
   7026 xcb_list_properties_cookie_t
   7027 xcb_list_properties_unchecked (xcb_connection_t *c,
   7028                                xcb_window_t      window);
   7029 
   7030 xcb_atom_t *
   7031 xcb_list_properties_atoms (const xcb_list_properties_reply_t *R);
   7032 
   7033 int
   7034 xcb_list_properties_atoms_length (const xcb_list_properties_reply_t *R);
   7035 
   7036 xcb_generic_iterator_t
   7037 xcb_list_properties_atoms_end (const xcb_list_properties_reply_t *R);
   7038 
   7039 /**
   7040  * Return the reply
   7041  * @param c      The connection
   7042  * @param cookie The cookie
   7043  * @param e      The xcb_generic_error_t supplied
   7044  *
   7045  * Returns the reply of the request asked by
   7046  *
   7047  * The parameter @p e supplied to this function must be NULL if
   7048  * xcb_list_properties_unchecked(). is used.
   7049  * Otherwise, it stores the error if any.
   7050  *
   7051  * The returned value must be freed by the caller using free().
   7052  */
   7053 xcb_list_properties_reply_t *
   7054 xcb_list_properties_reply (xcb_connection_t              *c,
   7055                            xcb_list_properties_cookie_t   cookie  /**< */,
   7056                            xcb_generic_error_t          **e);
   7057 
   7058 /**
   7059  * @brief Sets the owner of a selection
   7060  *
   7061  * @param c The connection
   7062  * @param owner The new owner of the selection.
   7063  * \n
   7064  * The special value `XCB_NONE` means that the selection will have no owner.
   7065  * @param selection The selection.
   7066  * @param time Timestamp to avoid race conditions when running X over the network.
   7067  * \n
   7068  * The selection will not be changed if \a time is earlier than the current
   7069  * last-change time of the \a selection or is later than the current X server time.
   7070  * Otherwise, the last-change time is set to the specified time.
   7071  * \n
   7072  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7073  * time.
   7074  * @return A cookie
   7075  *
   7076  * Makes `window` the owner of the selection \a selection and updates the
   7077  * last-change time of the specified selection.
   7078  *
   7079  * TODO: briefly explain what a selection is.
   7080  *
   7081  * This form can be used only if the request will not cause
   7082  * a reply to be generated. Any returned error will be
   7083  * saved for handling by xcb_request_check().
   7084  */
   7085 xcb_void_cookie_t
   7086 xcb_set_selection_owner_checked (xcb_connection_t *c,
   7087                                  xcb_window_t      owner,
   7088                                  xcb_atom_t        selection,
   7089                                  xcb_timestamp_t   time);
   7090 
   7091 /**
   7092  * @brief Sets the owner of a selection
   7093  *
   7094  * @param c The connection
   7095  * @param owner The new owner of the selection.
   7096  * \n
   7097  * The special value `XCB_NONE` means that the selection will have no owner.
   7098  * @param selection The selection.
   7099  * @param time Timestamp to avoid race conditions when running X over the network.
   7100  * \n
   7101  * The selection will not be changed if \a time is earlier than the current
   7102  * last-change time of the \a selection or is later than the current X server time.
   7103  * Otherwise, the last-change time is set to the specified time.
   7104  * \n
   7105  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7106  * time.
   7107  * @return A cookie
   7108  *
   7109  * Makes `window` the owner of the selection \a selection and updates the
   7110  * last-change time of the specified selection.
   7111  *
   7112  * TODO: briefly explain what a selection is.
   7113  *
   7114  */
   7115 xcb_void_cookie_t
   7116 xcb_set_selection_owner (xcb_connection_t *c,
   7117                          xcb_window_t      owner,
   7118                          xcb_atom_t        selection,
   7119                          xcb_timestamp_t   time);
   7120 
   7121 /**
   7122  * @brief Gets the owner of a selection
   7123  *
   7124  * @param c The connection
   7125  * @param selection The selection.
   7126  * @return A cookie
   7127  *
   7128  * Gets the owner of the specified selection.
   7129  *
   7130  * TODO: briefly explain what a selection is.
   7131  *
   7132  */
   7133 xcb_get_selection_owner_cookie_t
   7134 xcb_get_selection_owner (xcb_connection_t *c,
   7135                          xcb_atom_t        selection);
   7136 
   7137 /**
   7138  * @brief Gets the owner of a selection
   7139  *
   7140  * @param c The connection
   7141  * @param selection The selection.
   7142  * @return A cookie
   7143  *
   7144  * Gets the owner of the specified selection.
   7145  *
   7146  * TODO: briefly explain what a selection is.
   7147  *
   7148  * This form can be used only if the request will cause
   7149  * a reply to be generated. Any returned error will be
   7150  * placed in the event queue.
   7151  */
   7152 xcb_get_selection_owner_cookie_t
   7153 xcb_get_selection_owner_unchecked (xcb_connection_t *c,
   7154                                    xcb_atom_t        selection);
   7155 
   7156 /**
   7157  * Return the reply
   7158  * @param c      The connection
   7159  * @param cookie The cookie
   7160  * @param e      The xcb_generic_error_t supplied
   7161  *
   7162  * Returns the reply of the request asked by
   7163  *
   7164  * The parameter @p e supplied to this function must be NULL if
   7165  * xcb_get_selection_owner_unchecked(). is used.
   7166  * Otherwise, it stores the error if any.
   7167  *
   7168  * The returned value must be freed by the caller using free().
   7169  */
   7170 xcb_get_selection_owner_reply_t *
   7171 xcb_get_selection_owner_reply (xcb_connection_t                  *c,
   7172                                xcb_get_selection_owner_cookie_t   cookie  /**< */,
   7173                                xcb_generic_error_t              **e);
   7174 
   7175 /**
   7176  *
   7177  * @param c The connection
   7178  * @return A cookie
   7179  *
   7180  * Delivers a request to the X server.
   7181  *
   7182  * This form can be used only if the request will not cause
   7183  * a reply to be generated. Any returned error will be
   7184  * saved for handling by xcb_request_check().
   7185  */
   7186 xcb_void_cookie_t
   7187 xcb_convert_selection_checked (xcb_connection_t *c,
   7188                                xcb_window_t      requestor,
   7189                                xcb_atom_t        selection,
   7190                                xcb_atom_t        target,
   7191                                xcb_atom_t        property,
   7192                                xcb_timestamp_t   time);
   7193 
   7194 /**
   7195  *
   7196  * @param c The connection
   7197  * @return A cookie
   7198  *
   7199  * Delivers a request to the X server.
   7200  *
   7201  */
   7202 xcb_void_cookie_t
   7203 xcb_convert_selection (xcb_connection_t *c,
   7204                        xcb_window_t      requestor,
   7205                        xcb_atom_t        selection,
   7206                        xcb_atom_t        target,
   7207                        xcb_atom_t        property,
   7208                        xcb_timestamp_t   time);
   7209 
   7210 /**
   7211  * @brief send an event
   7212  *
   7213  * @param c The connection
   7214  * @param propagate If \a propagate is true and no clients have selected any event on \a destination,
   7215  * the destination is replaced with the closest ancestor of \a destination for
   7216  * which some client has selected a type in \a event_mask and for which no
   7217  * intervening window has that type in its do-not-propagate-mask. If no such
   7218  * window exists or if the window is an ancestor of the focus window and
   7219  * `InputFocus` was originally specified as the destination, the event is not sent
   7220  * to any clients. Otherwise, the event is reported to every client selecting on
   7221  * the final destination any of the types specified in \a event_mask.
   7222  * @param destination The window to send this event to. Every client which selects any event within
   7223  * \a event_mask on \a destination will get the event.
   7224  * \n
   7225  * The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
   7226  * that contains the mouse pointer.
   7227  * \n
   7228  * The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
   7229  * has the keyboard focus.
   7230  * @param event_mask Event_mask for determining which clients should receive the specified event.
   7231  * See \a destination and \a propagate.
   7232  * @param event The event to send to the specified \a destination.
   7233  * @return A cookie
   7234  *
   7235  * Identifies the \a destination window, determines which clients should receive
   7236  * the specified event and ignores any active grabs.
   7237  *
   7238  * The \a event must be one of the core events or an event defined by an extension,
   7239  * so that the X server can correctly byte-swap the contents as necessary. The
   7240  * contents of \a event are otherwise unaltered and unchecked except for the
   7241  * `send_event` field which is forced to 'true'.
   7242  *
   7243  * This form can be used only if the request will not cause
   7244  * a reply to be generated. Any returned error will be
   7245  * saved for handling by xcb_request_check().
   7246  */
   7247 xcb_void_cookie_t
   7248 xcb_send_event_checked (xcb_connection_t *c,
   7249                         uint8_t           propagate,
   7250                         xcb_window_t      destination,
   7251                         uint32_t          event_mask,
   7252                         const char       *event);
   7253 
   7254 /**
   7255  * @brief send an event
   7256  *
   7257  * @param c The connection
   7258  * @param propagate If \a propagate is true and no clients have selected any event on \a destination,
   7259  * the destination is replaced with the closest ancestor of \a destination for
   7260  * which some client has selected a type in \a event_mask and for which no
   7261  * intervening window has that type in its do-not-propagate-mask. If no such
   7262  * window exists or if the window is an ancestor of the focus window and
   7263  * `InputFocus` was originally specified as the destination, the event is not sent
   7264  * to any clients. Otherwise, the event is reported to every client selecting on
   7265  * the final destination any of the types specified in \a event_mask.
   7266  * @param destination The window to send this event to. Every client which selects any event within
   7267  * \a event_mask on \a destination will get the event.
   7268  * \n
   7269  * The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
   7270  * that contains the mouse pointer.
   7271  * \n
   7272  * The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
   7273  * has the keyboard focus.
   7274  * @param event_mask Event_mask for determining which clients should receive the specified event.
   7275  * See \a destination and \a propagate.
   7276  * @param event The event to send to the specified \a destination.
   7277  * @return A cookie
   7278  *
   7279  * Identifies the \a destination window, determines which clients should receive
   7280  * the specified event and ignores any active grabs.
   7281  *
   7282  * The \a event must be one of the core events or an event defined by an extension,
   7283  * so that the X server can correctly byte-swap the contents as necessary. The
   7284  * contents of \a event are otherwise unaltered and unchecked except for the
   7285  * `send_event` field which is forced to 'true'.
   7286  *
   7287  */
   7288 xcb_void_cookie_t
   7289 xcb_send_event (xcb_connection_t *c,
   7290                 uint8_t           propagate,
   7291                 xcb_window_t      destination,
   7292                 uint32_t          event_mask,
   7293                 const char       *event);
   7294 
   7295 /**
   7296  * @brief Grab the pointer
   7297  *
   7298  * @param c The connection
   7299  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7300  * reported to the \a grab_window.
   7301  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7302  * @param event_mask Specifies which pointer events are reported to the client.
   7303  * \n
   7304  * TODO: which values?
   7305  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7306  * @param pointer_mode \n
   7307  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7308  * @param keyboard_mode \n
   7309  * @param confine_to Specifies the window to confine the pointer in (the user will not be able to
   7310  * move the pointer out of that window).
   7311  * \n
   7312  * The special value `XCB_NONE` means don't confine the pointer.
   7313  * @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
   7314  * cursor.
   7315  * @param time The time argument allows you to avoid certain circumstances that come up if
   7316  * applications take a long time to respond or if there are long network delays.
   7317  * Consider a situation where you have two applications, both of which normally
   7318  * grab the pointer when clicked on. If both applications specify the timestamp
   7319  * from the event, the second application may wake up faster and successfully grab
   7320  * the pointer before the first application. The first application then will get
   7321  * an indication that the other application grabbed the pointer before its request
   7322  * was processed.
   7323  * \n
   7324  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7325  * time.
   7326  * @return A cookie
   7327  *
   7328  * Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
   7329  *
   7330  */
   7331 xcb_grab_pointer_cookie_t
   7332 xcb_grab_pointer (xcb_connection_t *c,
   7333                   uint8_t           owner_events,
   7334                   xcb_window_t      grab_window,
   7335                   uint16_t          event_mask,
   7336                   uint8_t           pointer_mode,
   7337                   uint8_t           keyboard_mode,
   7338                   xcb_window_t      confine_to,
   7339                   xcb_cursor_t      cursor,
   7340                   xcb_timestamp_t   time);
   7341 
   7342 /**
   7343  * @brief Grab the pointer
   7344  *
   7345  * @param c The connection
   7346  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7347  * reported to the \a grab_window.
   7348  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7349  * @param event_mask Specifies which pointer events are reported to the client.
   7350  * \n
   7351  * TODO: which values?
   7352  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7353  * @param pointer_mode \n
   7354  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7355  * @param keyboard_mode \n
   7356  * @param confine_to Specifies the window to confine the pointer in (the user will not be able to
   7357  * move the pointer out of that window).
   7358  * \n
   7359  * The special value `XCB_NONE` means don't confine the pointer.
   7360  * @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
   7361  * cursor.
   7362  * @param time The time argument allows you to avoid certain circumstances that come up if
   7363  * applications take a long time to respond or if there are long network delays.
   7364  * Consider a situation where you have two applications, both of which normally
   7365  * grab the pointer when clicked on. If both applications specify the timestamp
   7366  * from the event, the second application may wake up faster and successfully grab
   7367  * the pointer before the first application. The first application then will get
   7368  * an indication that the other application grabbed the pointer before its request
   7369  * was processed.
   7370  * \n
   7371  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7372  * time.
   7373  * @return A cookie
   7374  *
   7375  * Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
   7376  *
   7377  * This form can be used only if the request will cause
   7378  * a reply to be generated. Any returned error will be
   7379  * placed in the event queue.
   7380  */
   7381 xcb_grab_pointer_cookie_t
   7382 xcb_grab_pointer_unchecked (xcb_connection_t *c,
   7383                             uint8_t           owner_events,
   7384                             xcb_window_t      grab_window,
   7385                             uint16_t          event_mask,
   7386                             uint8_t           pointer_mode,
   7387                             uint8_t           keyboard_mode,
   7388                             xcb_window_t      confine_to,
   7389                             xcb_cursor_t      cursor,
   7390                             xcb_timestamp_t   time);
   7391 
   7392 /**
   7393  * Return the reply
   7394  * @param c      The connection
   7395  * @param cookie The cookie
   7396  * @param e      The xcb_generic_error_t supplied
   7397  *
   7398  * Returns the reply of the request asked by
   7399  *
   7400  * The parameter @p e supplied to this function must be NULL if
   7401  * xcb_grab_pointer_unchecked(). is used.
   7402  * Otherwise, it stores the error if any.
   7403  *
   7404  * The returned value must be freed by the caller using free().
   7405  */
   7406 xcb_grab_pointer_reply_t *
   7407 xcb_grab_pointer_reply (xcb_connection_t           *c,
   7408                         xcb_grab_pointer_cookie_t   cookie  /**< */,
   7409                         xcb_generic_error_t       **e);
   7410 
   7411 /**
   7412  * @brief release the pointer
   7413  *
   7414  * @param c The connection
   7415  * @param time Timestamp to avoid race conditions when running X over the network.
   7416  * \n
   7417  * The pointer will not be released if \a time is earlier than the
   7418  * last-pointer-grab time or later than the current X server time.
   7419  * @return A cookie
   7420  *
   7421  * Releases the pointer and any queued events if you actively grabbed the pointer
   7422  * before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
   7423  * press.
   7424  *
   7425  * EnterNotify and LeaveNotify events are generated.
   7426  *
   7427  * This form can be used only if the request will not cause
   7428  * a reply to be generated. Any returned error will be
   7429  * saved for handling by xcb_request_check().
   7430  */
   7431 xcb_void_cookie_t
   7432 xcb_ungrab_pointer_checked (xcb_connection_t *c,
   7433                             xcb_timestamp_t   time);
   7434 
   7435 /**
   7436  * @brief release the pointer
   7437  *
   7438  * @param c The connection
   7439  * @param time Timestamp to avoid race conditions when running X over the network.
   7440  * \n
   7441  * The pointer will not be released if \a time is earlier than the
   7442  * last-pointer-grab time or later than the current X server time.
   7443  * @return A cookie
   7444  *
   7445  * Releases the pointer and any queued events if you actively grabbed the pointer
   7446  * before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
   7447  * press.
   7448  *
   7449  * EnterNotify and LeaveNotify events are generated.
   7450  *
   7451  */
   7452 xcb_void_cookie_t
   7453 xcb_ungrab_pointer (xcb_connection_t *c,
   7454                     xcb_timestamp_t   time);
   7455 
   7456 /**
   7457  * @brief Grab pointer button(s)
   7458  *
   7459  * @param c The connection
   7460  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7461  * reported to the \a grab_window.
   7462  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7463  * @param event_mask Specifies which pointer events are reported to the client.
   7464  * \n
   7465  * TODO: which values?
   7466  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7467  * @param pointer_mode \n
   7468  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7469  * @param keyboard_mode \n
   7470  * @param confine_to Specifies the window to confine the pointer in (the user will not be able to
   7471  * move the pointer out of that window).
   7472  * \n
   7473  * The special value `XCB_NONE` means don't confine the pointer.
   7474  * @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
   7475  * cursor.
   7476  * @param button A bitmask of #xcb_button_index_t values.
   7477  * @param button \n
   7478  * @param modifiers The modifiers to grab.
   7479  * \n
   7480  * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
   7481  * possible modifier combinations.
   7482  * @return A cookie
   7483  *
   7484  * This request establishes a passive grab. The pointer is actively grabbed as
   7485  * described in GrabPointer, the last-pointer-grab time is set to the time at
   7486  * which the button was pressed (as transmitted in the ButtonPress event), and the
   7487  * ButtonPress event is reported if all of the following conditions are true:
   7488  *
   7489  * The pointer is not grabbed and the specified button is logically pressed when
   7490  * the specified modifier keys are logically down, and no other buttons or
   7491  * modifier keys are logically down.
   7492  *
   7493  * The grab-window contains the pointer.
   7494  *
   7495  * The confine-to window (if any) is viewable.
   7496  *
   7497  * A passive grab on the same button/key combination does not exist on any
   7498  * ancestor of grab-window.
   7499  *
   7500  * The interpretation of the remaining arguments is the same as for GrabPointer.
   7501  * The active grab is terminated automatically when the logical state of the
   7502  * pointer has all buttons released, independent of the logical state of modifier
   7503  * keys. Note that the logical state of a device (as seen by means of the
   7504  * protocol) may lag the physical state if device event processing is frozen. This
   7505  * request overrides all previous passive grabs by the same client on the same
   7506  * button/key combinations on the same window. A modifier of AnyModifier is
   7507  * equivalent to issuing the request for all possible modifier combinations
   7508  * (including the combination of no modifiers). It is not required that all
   7509  * specified modifiers have currently assigned keycodes. A button of AnyButton is
   7510  * equivalent to issuing the request for all possible buttons. Otherwise, it is
   7511  * not required that the button specified currently be assigned to a physical
   7512  * button.
   7513  *
   7514  * An Access error is generated if some other client has already issued a
   7515  * GrabButton request with the same button/key combination on the same window.
   7516  * When using AnyModifier or AnyButton, the request fails completely (no grabs are
   7517  * established), and an Access error is generated if there is a conflicting grab
   7518  * for any combination. The request has no effect on an active grab.
   7519  *
   7520  * This form can be used only if the request will not cause
   7521  * a reply to be generated. Any returned error will be
   7522  * saved for handling by xcb_request_check().
   7523  */
   7524 xcb_void_cookie_t
   7525 xcb_grab_button_checked (xcb_connection_t *c,
   7526                          uint8_t           owner_events,
   7527                          xcb_window_t      grab_window,
   7528                          uint16_t          event_mask,
   7529                          uint8_t           pointer_mode,
   7530                          uint8_t           keyboard_mode,
   7531                          xcb_window_t      confine_to,
   7532                          xcb_cursor_t      cursor,
   7533                          uint8_t           button,
   7534                          uint16_t          modifiers);
   7535 
   7536 /**
   7537  * @brief Grab pointer button(s)
   7538  *
   7539  * @param c The connection
   7540  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7541  * reported to the \a grab_window.
   7542  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7543  * @param event_mask Specifies which pointer events are reported to the client.
   7544  * \n
   7545  * TODO: which values?
   7546  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7547  * @param pointer_mode \n
   7548  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7549  * @param keyboard_mode \n
   7550  * @param confine_to Specifies the window to confine the pointer in (the user will not be able to
   7551  * move the pointer out of that window).
   7552  * \n
   7553  * The special value `XCB_NONE` means don't confine the pointer.
   7554  * @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
   7555  * cursor.
   7556  * @param button A bitmask of #xcb_button_index_t values.
   7557  * @param button \n
   7558  * @param modifiers The modifiers to grab.
   7559  * \n
   7560  * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
   7561  * possible modifier combinations.
   7562  * @return A cookie
   7563  *
   7564  * This request establishes a passive grab. The pointer is actively grabbed as
   7565  * described in GrabPointer, the last-pointer-grab time is set to the time at
   7566  * which the button was pressed (as transmitted in the ButtonPress event), and the
   7567  * ButtonPress event is reported if all of the following conditions are true:
   7568  *
   7569  * The pointer is not grabbed and the specified button is logically pressed when
   7570  * the specified modifier keys are logically down, and no other buttons or
   7571  * modifier keys are logically down.
   7572  *
   7573  * The grab-window contains the pointer.
   7574  *
   7575  * The confine-to window (if any) is viewable.
   7576  *
   7577  * A passive grab on the same button/key combination does not exist on any
   7578  * ancestor of grab-window.
   7579  *
   7580  * The interpretation of the remaining arguments is the same as for GrabPointer.
   7581  * The active grab is terminated automatically when the logical state of the
   7582  * pointer has all buttons released, independent of the logical state of modifier
   7583  * keys. Note that the logical state of a device (as seen by means of the
   7584  * protocol) may lag the physical state if device event processing is frozen. This
   7585  * request overrides all previous passive grabs by the same client on the same
   7586  * button/key combinations on the same window. A modifier of AnyModifier is
   7587  * equivalent to issuing the request for all possible modifier combinations
   7588  * (including the combination of no modifiers). It is not required that all
   7589  * specified modifiers have currently assigned keycodes. A button of AnyButton is
   7590  * equivalent to issuing the request for all possible buttons. Otherwise, it is
   7591  * not required that the button specified currently be assigned to a physical
   7592  * button.
   7593  *
   7594  * An Access error is generated if some other client has already issued a
   7595  * GrabButton request with the same button/key combination on the same window.
   7596  * When using AnyModifier or AnyButton, the request fails completely (no grabs are
   7597  * established), and an Access error is generated if there is a conflicting grab
   7598  * for any combination. The request has no effect on an active grab.
   7599  *
   7600  */
   7601 xcb_void_cookie_t
   7602 xcb_grab_button (xcb_connection_t *c,
   7603                  uint8_t           owner_events,
   7604                  xcb_window_t      grab_window,
   7605                  uint16_t          event_mask,
   7606                  uint8_t           pointer_mode,
   7607                  uint8_t           keyboard_mode,
   7608                  xcb_window_t      confine_to,
   7609                  xcb_cursor_t      cursor,
   7610                  uint8_t           button,
   7611                  uint16_t          modifiers);
   7612 
   7613 /**
   7614  *
   7615  * @param c The connection
   7616  * @return A cookie
   7617  *
   7618  * Delivers a request to the X server.
   7619  *
   7620  * This form can be used only if the request will not cause
   7621  * a reply to be generated. Any returned error will be
   7622  * saved for handling by xcb_request_check().
   7623  */
   7624 xcb_void_cookie_t
   7625 xcb_ungrab_button_checked (xcb_connection_t *c,
   7626                            uint8_t           button,
   7627                            xcb_window_t      grab_window,
   7628                            uint16_t          modifiers);
   7629 
   7630 /**
   7631  *
   7632  * @param c The connection
   7633  * @return A cookie
   7634  *
   7635  * Delivers a request to the X server.
   7636  *
   7637  */
   7638 xcb_void_cookie_t
   7639 xcb_ungrab_button (xcb_connection_t *c,
   7640                    uint8_t           button,
   7641                    xcb_window_t      grab_window,
   7642                    uint16_t          modifiers);
   7643 
   7644 /**
   7645  *
   7646  * @param c The connection
   7647  * @return A cookie
   7648  *
   7649  * Delivers a request to the X server.
   7650  *
   7651  * This form can be used only if the request will not cause
   7652  * a reply to be generated. Any returned error will be
   7653  * saved for handling by xcb_request_check().
   7654  */
   7655 xcb_void_cookie_t
   7656 xcb_change_active_pointer_grab_checked (xcb_connection_t *c,
   7657                                         xcb_cursor_t      cursor,
   7658                                         xcb_timestamp_t   time,
   7659                                         uint16_t          event_mask);
   7660 
   7661 /**
   7662  *
   7663  * @param c The connection
   7664  * @return A cookie
   7665  *
   7666  * Delivers a request to the X server.
   7667  *
   7668  */
   7669 xcb_void_cookie_t
   7670 xcb_change_active_pointer_grab (xcb_connection_t *c,
   7671                                 xcb_cursor_t      cursor,
   7672                                 xcb_timestamp_t   time,
   7673                                 uint16_t          event_mask);
   7674 
   7675 /**
   7676  * @brief Grab the keyboard
   7677  *
   7678  * @param c The connection
   7679  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7680  * reported to the \a grab_window.
   7681  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7682  * @param time Timestamp to avoid race conditions when running X over the network.
   7683  * \n
   7684  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7685  * time.
   7686  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7687  * @param pointer_mode \n
   7688  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7689  * @param keyboard_mode \n
   7690  * @return A cookie
   7691  *
   7692  * Actively grabs control of the keyboard and generates FocusIn and FocusOut
   7693  * events. Further key events are reported only to the grabbing client.
   7694  *
   7695  * Any active keyboard grab by this client is overridden. If the keyboard is
   7696  * actively grabbed by some other client, `AlreadyGrabbed` is returned. If
   7697  * \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
   7698  * is frozen by an active grab of another client, `GrabFrozen` is returned. If the
   7699  * specified \a time is earlier than the last-keyboard-grab time or later than the
   7700  * current X server time, `GrabInvalidTime` is returned. Otherwise, the
   7701  * last-keyboard-grab time is set to the specified time.
   7702  *
   7703  */
   7704 xcb_grab_keyboard_cookie_t
   7705 xcb_grab_keyboard (xcb_connection_t *c,
   7706                    uint8_t           owner_events,
   7707                    xcb_window_t      grab_window,
   7708                    xcb_timestamp_t   time,
   7709                    uint8_t           pointer_mode,
   7710                    uint8_t           keyboard_mode);
   7711 
   7712 /**
   7713  * @brief Grab the keyboard
   7714  *
   7715  * @param c The connection
   7716  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7717  * reported to the \a grab_window.
   7718  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7719  * @param time Timestamp to avoid race conditions when running X over the network.
   7720  * \n
   7721  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7722  * time.
   7723  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7724  * @param pointer_mode \n
   7725  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7726  * @param keyboard_mode \n
   7727  * @return A cookie
   7728  *
   7729  * Actively grabs control of the keyboard and generates FocusIn and FocusOut
   7730  * events. Further key events are reported only to the grabbing client.
   7731  *
   7732  * Any active keyboard grab by this client is overridden. If the keyboard is
   7733  * actively grabbed by some other client, `AlreadyGrabbed` is returned. If
   7734  * \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
   7735  * is frozen by an active grab of another client, `GrabFrozen` is returned. If the
   7736  * specified \a time is earlier than the last-keyboard-grab time or later than the
   7737  * current X server time, `GrabInvalidTime` is returned. Otherwise, the
   7738  * last-keyboard-grab time is set to the specified time.
   7739  *
   7740  * This form can be used only if the request will cause
   7741  * a reply to be generated. Any returned error will be
   7742  * placed in the event queue.
   7743  */
   7744 xcb_grab_keyboard_cookie_t
   7745 xcb_grab_keyboard_unchecked (xcb_connection_t *c,
   7746                              uint8_t           owner_events,
   7747                              xcb_window_t      grab_window,
   7748                              xcb_timestamp_t   time,
   7749                              uint8_t           pointer_mode,
   7750                              uint8_t           keyboard_mode);
   7751 
   7752 /**
   7753  * Return the reply
   7754  * @param c      The connection
   7755  * @param cookie The cookie
   7756  * @param e      The xcb_generic_error_t supplied
   7757  *
   7758  * Returns the reply of the request asked by
   7759  *
   7760  * The parameter @p e supplied to this function must be NULL if
   7761  * xcb_grab_keyboard_unchecked(). is used.
   7762  * Otherwise, it stores the error if any.
   7763  *
   7764  * The returned value must be freed by the caller using free().
   7765  */
   7766 xcb_grab_keyboard_reply_t *
   7767 xcb_grab_keyboard_reply (xcb_connection_t            *c,
   7768                          xcb_grab_keyboard_cookie_t   cookie  /**< */,
   7769                          xcb_generic_error_t        **e);
   7770 
   7771 /**
   7772  *
   7773  * @param c The connection
   7774  * @return A cookie
   7775  *
   7776  * Delivers a request to the X server.
   7777  *
   7778  * This form can be used only if the request will not cause
   7779  * a reply to be generated. Any returned error will be
   7780  * saved for handling by xcb_request_check().
   7781  */
   7782 xcb_void_cookie_t
   7783 xcb_ungrab_keyboard_checked (xcb_connection_t *c,
   7784                              xcb_timestamp_t   time);
   7785 
   7786 /**
   7787  *
   7788  * @param c The connection
   7789  * @return A cookie
   7790  *
   7791  * Delivers a request to the X server.
   7792  *
   7793  */
   7794 xcb_void_cookie_t
   7795 xcb_ungrab_keyboard (xcb_connection_t *c,
   7796                      xcb_timestamp_t   time);
   7797 
   7798 /**
   7799  * @brief Grab keyboard key(s)
   7800  *
   7801  * @param c The connection
   7802  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7803  * reported to the \a grab_window.
   7804  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7805  * @param modifiers The modifiers to grab.
   7806  * \n
   7807  * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
   7808  * possible modifier combinations.
   7809  * @param key The keycode of the key to grab.
   7810  * \n
   7811  * The special value `XCB_GRAB_ANY` means grab any key.
   7812  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7813  * @param pointer_mode \n
   7814  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7815  * @param keyboard_mode \n
   7816  * @return A cookie
   7817  *
   7818  * Establishes a passive grab on the keyboard. In the future, the keyboard is
   7819  * actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
   7820  * the time at which the key was pressed (as transmitted in the KeyPress event),
   7821  * and the KeyPress event is reported if all of the following conditions are true:
   7822  *
   7823  * The keyboard is not grabbed and the specified key (which can itself be a
   7824  * modifier key) is logically pressed when the specified modifier keys are
   7825  * logically down, and no other modifier keys are logically down.
   7826  *
   7827  * Either the grab_window is an ancestor of (or is) the focus window, or the
   7828  * grab_window is a descendant of the focus window and contains the pointer.
   7829  *
   7830  * A passive grab on the same key combination does not exist on any ancestor of
   7831  * grab_window.
   7832  *
   7833  * The interpretation of the remaining arguments is as for XGrabKeyboard.  The active grab is terminated
   7834  * automatically when the logical state of the keyboard has the specified key released (independent of the
   7835  * logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
   7836  *
   7837  * Note that the logical state of a device (as seen by client applications) may lag the physical state if
   7838  * device event processing is frozen.
   7839  *
   7840  * A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers).  It is not required that all modifiers specified
   7841  * have currently assigned KeyCodes.  A keycode argument of AnyKey is equivalent to issuing the request for
   7842  * all possible KeyCodes.  Otherwise, the specified keycode must be in the range specified by min_keycode
   7843  * and max_keycode in the connection setup, or a BadValue error results.
   7844  *
   7845  * If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
   7846  * error results.  When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
   7847  * results (no grabs are established) if there is a conflicting grab for any combination.
   7848  *
   7849  * This form can be used only if the request will not cause
   7850  * a reply to be generated. Any returned error will be
   7851  * saved for handling by xcb_request_check().
   7852  */
   7853 xcb_void_cookie_t
   7854 xcb_grab_key_checked (xcb_connection_t *c,
   7855                       uint8_t           owner_events,
   7856                       xcb_window_t      grab_window,
   7857                       uint16_t          modifiers,
   7858                       xcb_keycode_t     key,
   7859                       uint8_t           pointer_mode,
   7860                       uint8_t           keyboard_mode);
   7861 
   7862 /**
   7863  * @brief Grab keyboard key(s)
   7864  *
   7865  * @param c The connection
   7866  * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
   7867  * reported to the \a grab_window.
   7868  * @param grab_window Specifies the window on which the pointer should be grabbed.
   7869  * @param modifiers The modifiers to grab.
   7870  * \n
   7871  * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
   7872  * possible modifier combinations.
   7873  * @param key The keycode of the key to grab.
   7874  * \n
   7875  * The special value `XCB_GRAB_ANY` means grab any key.
   7876  * @param pointer_mode A bitmask of #xcb_grab_mode_t values.
   7877  * @param pointer_mode \n
   7878  * @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
   7879  * @param keyboard_mode \n
   7880  * @return A cookie
   7881  *
   7882  * Establishes a passive grab on the keyboard. In the future, the keyboard is
   7883  * actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
   7884  * the time at which the key was pressed (as transmitted in the KeyPress event),
   7885  * and the KeyPress event is reported if all of the following conditions are true:
   7886  *
   7887  * The keyboard is not grabbed and the specified key (which can itself be a
   7888  * modifier key) is logically pressed when the specified modifier keys are
   7889  * logically down, and no other modifier keys are logically down.
   7890  *
   7891  * Either the grab_window is an ancestor of (or is) the focus window, or the
   7892  * grab_window is a descendant of the focus window and contains the pointer.
   7893  *
   7894  * A passive grab on the same key combination does not exist on any ancestor of
   7895  * grab_window.
   7896  *
   7897  * The interpretation of the remaining arguments is as for XGrabKeyboard.  The active grab is terminated
   7898  * automatically when the logical state of the keyboard has the specified key released (independent of the
   7899  * logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
   7900  *
   7901  * Note that the logical state of a device (as seen by client applications) may lag the physical state if
   7902  * device event processing is frozen.
   7903  *
   7904  * A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers).  It is not required that all modifiers specified
   7905  * have currently assigned KeyCodes.  A keycode argument of AnyKey is equivalent to issuing the request for
   7906  * all possible KeyCodes.  Otherwise, the specified keycode must be in the range specified by min_keycode
   7907  * and max_keycode in the connection setup, or a BadValue error results.
   7908  *
   7909  * If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
   7910  * error results.  When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
   7911  * results (no grabs are established) if there is a conflicting grab for any combination.
   7912  *
   7913  */
   7914 xcb_void_cookie_t
   7915 xcb_grab_key (xcb_connection_t *c,
   7916               uint8_t           owner_events,
   7917               xcb_window_t      grab_window,
   7918               uint16_t          modifiers,
   7919               xcb_keycode_t     key,
   7920               uint8_t           pointer_mode,
   7921               uint8_t           keyboard_mode);
   7922 
   7923 /**
   7924  * @brief release a key combination
   7925  *
   7926  * @param c The connection
   7927  * @param key The keycode of the specified key combination.
   7928  * \n
   7929  * Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
   7930  * @param grab_window The window on which the grabbed key combination will be released.
   7931  * @param modifiers The modifiers of the specified key combination.
   7932  * \n
   7933  * Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
   7934  * with every possible modifier combination.
   7935  * @return A cookie
   7936  *
   7937  * Releases the key combination on \a grab_window if you grabbed it using
   7938  * `xcb_grab_key` before.
   7939  *
   7940  * This form can be used only if the request will not cause
   7941  * a reply to be generated. Any returned error will be
   7942  * saved for handling by xcb_request_check().
   7943  */
   7944 xcb_void_cookie_t
   7945 xcb_ungrab_key_checked (xcb_connection_t *c,
   7946                         xcb_keycode_t     key,
   7947                         xcb_window_t      grab_window,
   7948                         uint16_t          modifiers);
   7949 
   7950 /**
   7951  * @brief release a key combination
   7952  *
   7953  * @param c The connection
   7954  * @param key The keycode of the specified key combination.
   7955  * \n
   7956  * Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
   7957  * @param grab_window The window on which the grabbed key combination will be released.
   7958  * @param modifiers The modifiers of the specified key combination.
   7959  * \n
   7960  * Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
   7961  * with every possible modifier combination.
   7962  * @return A cookie
   7963  *
   7964  * Releases the key combination on \a grab_window if you grabbed it using
   7965  * `xcb_grab_key` before.
   7966  *
   7967  */
   7968 xcb_void_cookie_t
   7969 xcb_ungrab_key (xcb_connection_t *c,
   7970                 xcb_keycode_t     key,
   7971                 xcb_window_t      grab_window,
   7972                 uint16_t          modifiers);
   7973 
   7974 /**
   7975  * @brief release queued events
   7976  *
   7977  * @param c The connection
   7978  * @param mode A bitmask of #xcb_allow_t values.
   7979  * @param mode \n
   7980  * @param time Timestamp to avoid race conditions when running X over the network.
   7981  * \n
   7982  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   7983  * time.
   7984  * @return A cookie
   7985  *
   7986  * Releases queued events if the client has caused a device (pointer/keyboard) to
   7987  * freeze due to grabbing it actively. This request has no effect if \a time is
   7988  * earlier than the last-grab time of the most recent active grab for this client
   7989  * or if \a time is later than the current X server time.
   7990  *
   7991  * This form can be used only if the request will not cause
   7992  * a reply to be generated. Any returned error will be
   7993  * saved for handling by xcb_request_check().
   7994  */
   7995 xcb_void_cookie_t
   7996 xcb_allow_events_checked (xcb_connection_t *c,
   7997                           uint8_t           mode,
   7998                           xcb_timestamp_t   time);
   7999 
   8000 /**
   8001  * @brief release queued events
   8002  *
   8003  * @param c The connection
   8004  * @param mode A bitmask of #xcb_allow_t values.
   8005  * @param mode \n
   8006  * @param time Timestamp to avoid race conditions when running X over the network.
   8007  * \n
   8008  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   8009  * time.
   8010  * @return A cookie
   8011  *
   8012  * Releases queued events if the client has caused a device (pointer/keyboard) to
   8013  * freeze due to grabbing it actively. This request has no effect if \a time is
   8014  * earlier than the last-grab time of the most recent active grab for this client
   8015  * or if \a time is later than the current X server time.
   8016  *
   8017  */
   8018 xcb_void_cookie_t
   8019 xcb_allow_events (xcb_connection_t *c,
   8020                   uint8_t           mode,
   8021                   xcb_timestamp_t   time);
   8022 
   8023 /**
   8024  *
   8025  * @param c The connection
   8026  * @return A cookie
   8027  *
   8028  * Delivers a request to the X server.
   8029  *
   8030  * This form can be used only if the request will not cause
   8031  * a reply to be generated. Any returned error will be
   8032  * saved for handling by xcb_request_check().
   8033  */
   8034 xcb_void_cookie_t
   8035 xcb_grab_server_checked (xcb_connection_t *c);
   8036 
   8037 /**
   8038  *
   8039  * @param c The connection
   8040  * @return A cookie
   8041  *
   8042  * Delivers a request to the X server.
   8043  *
   8044  */
   8045 xcb_void_cookie_t
   8046 xcb_grab_server (xcb_connection_t *c);
   8047 
   8048 /**
   8049  *
   8050  * @param c The connection
   8051  * @return A cookie
   8052  *
   8053  * Delivers a request to the X server.
   8054  *
   8055  * This form can be used only if the request will not cause
   8056  * a reply to be generated. Any returned error will be
   8057  * saved for handling by xcb_request_check().
   8058  */
   8059 xcb_void_cookie_t
   8060 xcb_ungrab_server_checked (xcb_connection_t *c);
   8061 
   8062 /**
   8063  *
   8064  * @param c The connection
   8065  * @return A cookie
   8066  *
   8067  * Delivers a request to the X server.
   8068  *
   8069  */
   8070 xcb_void_cookie_t
   8071 xcb_ungrab_server (xcb_connection_t *c);
   8072 
   8073 /**
   8074  * @brief get pointer coordinates
   8075  *
   8076  * @param c The connection
   8077  * @param window A window to check if the pointer is on the same screen as \a window (see the
   8078  * `same_screen` field in the reply).
   8079  * @return A cookie
   8080  *
   8081  * Gets the root window the pointer is logically on and the pointer coordinates
   8082  * relative to the root window's origin.
   8083  *
   8084  */
   8085 xcb_query_pointer_cookie_t
   8086 xcb_query_pointer (xcb_connection_t *c,
   8087                    xcb_window_t      window);
   8088 
   8089 /**
   8090  * @brief get pointer coordinates
   8091  *
   8092  * @param c The connection
   8093  * @param window A window to check if the pointer is on the same screen as \a window (see the
   8094  * `same_screen` field in the reply).
   8095  * @return A cookie
   8096  *
   8097  * Gets the root window the pointer is logically on and the pointer coordinates
   8098  * relative to the root window's origin.
   8099  *
   8100  * This form can be used only if the request will cause
   8101  * a reply to be generated. Any returned error will be
   8102  * placed in the event queue.
   8103  */
   8104 xcb_query_pointer_cookie_t
   8105 xcb_query_pointer_unchecked (xcb_connection_t *c,
   8106                              xcb_window_t      window);
   8107 
   8108 /**
   8109  * Return the reply
   8110  * @param c      The connection
   8111  * @param cookie The cookie
   8112  * @param e      The xcb_generic_error_t supplied
   8113  *
   8114  * Returns the reply of the request asked by
   8115  *
   8116  * The parameter @p e supplied to this function must be NULL if
   8117  * xcb_query_pointer_unchecked(). is used.
   8118  * Otherwise, it stores the error if any.
   8119  *
   8120  * The returned value must be freed by the caller using free().
   8121  */
   8122 xcb_query_pointer_reply_t *
   8123 xcb_query_pointer_reply (xcb_connection_t            *c,
   8124                          xcb_query_pointer_cookie_t   cookie  /**< */,
   8125                          xcb_generic_error_t        **e);
   8126 
   8127 /**
   8128  * Get the next element of the iterator
   8129  * @param i Pointer to a xcb_timecoord_iterator_t
   8130  *
   8131  * Get the next element in the iterator. The member rem is
   8132  * decreased by one. The member data points to the next
   8133  * element. The member index is increased by sizeof(xcb_timecoord_t)
   8134  */
   8135 void
   8136 xcb_timecoord_next (xcb_timecoord_iterator_t *i);
   8137 
   8138 /**
   8139  * Return the iterator pointing to the last element
   8140  * @param i An xcb_timecoord_iterator_t
   8141  * @return  The iterator pointing to the last element
   8142  *
   8143  * Set the current element in the iterator to the last element.
   8144  * The member rem is set to 0. The member data points to the
   8145  * last element.
   8146  */
   8147 xcb_generic_iterator_t
   8148 xcb_timecoord_end (xcb_timecoord_iterator_t i);
   8149 
   8150 int
   8151 xcb_get_motion_events_sizeof (const void  *_buffer);
   8152 
   8153 /**
   8154  *
   8155  * @param c The connection
   8156  * @return A cookie
   8157  *
   8158  * Delivers a request to the X server.
   8159  *
   8160  */
   8161 xcb_get_motion_events_cookie_t
   8162 xcb_get_motion_events (xcb_connection_t *c,
   8163                        xcb_window_t      window,
   8164                        xcb_timestamp_t   start,
   8165                        xcb_timestamp_t   stop);
   8166 
   8167 /**
   8168  *
   8169  * @param c The connection
   8170  * @return A cookie
   8171  *
   8172  * Delivers a request to the X server.
   8173  *
   8174  * This form can be used only if the request will cause
   8175  * a reply to be generated. Any returned error will be
   8176  * placed in the event queue.
   8177  */
   8178 xcb_get_motion_events_cookie_t
   8179 xcb_get_motion_events_unchecked (xcb_connection_t *c,
   8180                                  xcb_window_t      window,
   8181                                  xcb_timestamp_t   start,
   8182                                  xcb_timestamp_t   stop);
   8183 
   8184 xcb_timecoord_t *
   8185 xcb_get_motion_events_events (const xcb_get_motion_events_reply_t *R);
   8186 
   8187 int
   8188 xcb_get_motion_events_events_length (const xcb_get_motion_events_reply_t *R);
   8189 
   8190 xcb_timecoord_iterator_t
   8191 xcb_get_motion_events_events_iterator (const xcb_get_motion_events_reply_t *R);
   8192 
   8193 /**
   8194  * Return the reply
   8195  * @param c      The connection
   8196  * @param cookie The cookie
   8197  * @param e      The xcb_generic_error_t supplied
   8198  *
   8199  * Returns the reply of the request asked by
   8200  *
   8201  * The parameter @p e supplied to this function must be NULL if
   8202  * xcb_get_motion_events_unchecked(). is used.
   8203  * Otherwise, it stores the error if any.
   8204  *
   8205  * The returned value must be freed by the caller using free().
   8206  */
   8207 xcb_get_motion_events_reply_t *
   8208 xcb_get_motion_events_reply (xcb_connection_t                *c,
   8209                              xcb_get_motion_events_cookie_t   cookie  /**< */,
   8210                              xcb_generic_error_t            **e);
   8211 
   8212 /**
   8213  *
   8214  * @param c The connection
   8215  * @return A cookie
   8216  *
   8217  * Delivers a request to the X server.
   8218  *
   8219  */
   8220 xcb_translate_coordinates_cookie_t
   8221 xcb_translate_coordinates (xcb_connection_t *c,
   8222                            xcb_window_t      src_window,
   8223                            xcb_window_t      dst_window,
   8224                            int16_t           src_x,
   8225                            int16_t           src_y);
   8226 
   8227 /**
   8228  *
   8229  * @param c The connection
   8230  * @return A cookie
   8231  *
   8232  * Delivers a request to the X server.
   8233  *
   8234  * This form can be used only if the request will cause
   8235  * a reply to be generated. Any returned error will be
   8236  * placed in the event queue.
   8237  */
   8238 xcb_translate_coordinates_cookie_t
   8239 xcb_translate_coordinates_unchecked (xcb_connection_t *c,
   8240                                      xcb_window_t      src_window,
   8241                                      xcb_window_t      dst_window,
   8242                                      int16_t           src_x,
   8243                                      int16_t           src_y);
   8244 
   8245 /**
   8246  * Return the reply
   8247  * @param c      The connection
   8248  * @param cookie The cookie
   8249  * @param e      The xcb_generic_error_t supplied
   8250  *
   8251  * Returns the reply of the request asked by
   8252  *
   8253  * The parameter @p e supplied to this function must be NULL if
   8254  * xcb_translate_coordinates_unchecked(). is used.
   8255  * Otherwise, it stores the error if any.
   8256  *
   8257  * The returned value must be freed by the caller using free().
   8258  */
   8259 xcb_translate_coordinates_reply_t *
   8260 xcb_translate_coordinates_reply (xcb_connection_t                    *c,
   8261                                  xcb_translate_coordinates_cookie_t   cookie  /**< */,
   8262                                  xcb_generic_error_t                **e);
   8263 
   8264 /**
   8265  * @brief move mouse pointer
   8266  *
   8267  * @param c The connection
   8268  * @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
   8269  * pointer is inside \a src_window and within the rectangle specified by (\a src_x,
   8270  * \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
   8271  * \a src_window.
   8272  * @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
   8273  * offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
   8274  * `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
   8275  * relative to the current position of the pointer.
   8276  * @return A cookie
   8277  *
   8278  * Moves the mouse pointer to the specified position.
   8279  *
   8280  * If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
   8281  * pointer is inside \a src_window and within the rectangle specified by (\a src_x,
   8282  * \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
   8283  * \a src_window.
   8284  *
   8285  * If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
   8286  * offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
   8287  * `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
   8288  * relative to the current position of the pointer.
   8289  *
   8290  * This form can be used only if the request will not cause
   8291  * a reply to be generated. Any returned error will be
   8292  * saved for handling by xcb_request_check().
   8293  */
   8294 xcb_void_cookie_t
   8295 xcb_warp_pointer_checked (xcb_connection_t *c,
   8296                           xcb_window_t      src_window,
   8297                           xcb_window_t      dst_window,
   8298                           int16_t           src_x,
   8299                           int16_t           src_y,
   8300                           uint16_t          src_width,
   8301                           uint16_t          src_height,
   8302                           int16_t           dst_x,
   8303                           int16_t           dst_y);
   8304 
   8305 /**
   8306  * @brief move mouse pointer
   8307  *
   8308  * @param c The connection
   8309  * @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
   8310  * pointer is inside \a src_window and within the rectangle specified by (\a src_x,
   8311  * \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
   8312  * \a src_window.
   8313  * @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
   8314  * offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
   8315  * `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
   8316  * relative to the current position of the pointer.
   8317  * @return A cookie
   8318  *
   8319  * Moves the mouse pointer to the specified position.
   8320  *
   8321  * If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
   8322  * pointer is inside \a src_window and within the rectangle specified by (\a src_x,
   8323  * \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
   8324  * \a src_window.
   8325  *
   8326  * If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
   8327  * offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
   8328  * `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
   8329  * relative to the current position of the pointer.
   8330  *
   8331  */
   8332 xcb_void_cookie_t
   8333 xcb_warp_pointer (xcb_connection_t *c,
   8334                   xcb_window_t      src_window,
   8335                   xcb_window_t      dst_window,
   8336                   int16_t           src_x,
   8337                   int16_t           src_y,
   8338                   uint16_t          src_width,
   8339                   uint16_t          src_height,
   8340                   int16_t           dst_x,
   8341                   int16_t           dst_y);
   8342 
   8343 /**
   8344  * @brief Sets input focus
   8345  *
   8346  * @param c The connection
   8347  * @param revert_to A bitmask of #xcb_input_focus_t values.
   8348  * @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
   8349  * is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
   8350  * @param focus The window to focus. All keyboard events will be reported to this window. The
   8351  * window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
   8352  * \n
   8353  * If \a focus is `XCB_NONE` (TODO), all keyboard events are
   8354  * discarded until a new focus window is set.
   8355  * \n
   8356  * If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
   8357  * screen on which the pointer is on currently.
   8358  * @param time Timestamp to avoid race conditions when running X over the network.
   8359  * \n
   8360  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   8361  * time.
   8362  * @return A cookie
   8363  *
   8364  * Changes the input focus and the last-focus-change time. If the specified \a time
   8365  * is earlier than the current last-focus-change time, the request is ignored (to
   8366  * avoid race conditions when running X over the network).
   8367  *
   8368  * A FocusIn and FocusOut event is generated when focus is changed.
   8369  *
   8370  * This form can be used only if the request will not cause
   8371  * a reply to be generated. Any returned error will be
   8372  * saved for handling by xcb_request_check().
   8373  */
   8374 xcb_void_cookie_t
   8375 xcb_set_input_focus_checked (xcb_connection_t *c,
   8376                              uint8_t           revert_to,
   8377                              xcb_window_t      focus,
   8378                              xcb_timestamp_t   time);
   8379 
   8380 /**
   8381  * @brief Sets input focus
   8382  *
   8383  * @param c The connection
   8384  * @param revert_to A bitmask of #xcb_input_focus_t values.
   8385  * @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
   8386  * is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
   8387  * @param focus The window to focus. All keyboard events will be reported to this window. The
   8388  * window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
   8389  * \n
   8390  * If \a focus is `XCB_NONE` (TODO), all keyboard events are
   8391  * discarded until a new focus window is set.
   8392  * \n
   8393  * If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
   8394  * screen on which the pointer is on currently.
   8395  * @param time Timestamp to avoid race conditions when running X over the network.
   8396  * \n
   8397  * The special value `XCB_CURRENT_TIME` will be replaced with the current server
   8398  * time.
   8399  * @return A cookie
   8400  *
   8401  * Changes the input focus and the last-focus-change time. If the specified \a time
   8402  * is earlier than the current last-focus-change time, the request is ignored (to
   8403  * avoid race conditions when running X over the network).
   8404  *
   8405  * A FocusIn and FocusOut event is generated when focus is changed.
   8406  *
   8407  */
   8408 xcb_void_cookie_t
   8409 xcb_set_input_focus (xcb_connection_t *c,
   8410                      uint8_t           revert_to,
   8411                      xcb_window_t      focus,
   8412                      xcb_timestamp_t   time);
   8413 
   8414 /**
   8415  *
   8416  * @param c The connection
   8417  * @return A cookie
   8418  *
   8419  * Delivers a request to the X server.
   8420  *
   8421  */
   8422 xcb_get_input_focus_cookie_t
   8423 xcb_get_input_focus (xcb_connection_t *c);
   8424 
   8425 /**
   8426  *
   8427  * @param c The connection
   8428  * @return A cookie
   8429  *
   8430  * Delivers a request to the X server.
   8431  *
   8432  * This form can be used only if the request will cause
   8433  * a reply to be generated. Any returned error will be
   8434  * placed in the event queue.
   8435  */
   8436 xcb_get_input_focus_cookie_t
   8437 xcb_get_input_focus_unchecked (xcb_connection_t *c);
   8438 
   8439 /**
   8440  * Return the reply
   8441  * @param c      The connection
   8442  * @param cookie The cookie
   8443  * @param e      The xcb_generic_error_t supplied
   8444  *
   8445  * Returns the reply of the request asked by
   8446  *
   8447  * The parameter @p e supplied to this function must be NULL if
   8448  * xcb_get_input_focus_unchecked(). is used.
   8449  * Otherwise, it stores the error if any.
   8450  *
   8451  * The returned value must be freed by the caller using free().
   8452  */
   8453 xcb_get_input_focus_reply_t *
   8454 xcb_get_input_focus_reply (xcb_connection_t              *c,
   8455                            xcb_get_input_focus_cookie_t   cookie  /**< */,
   8456                            xcb_generic_error_t          **e);
   8457 
   8458 /**
   8459  *
   8460  * @param c The connection
   8461  * @return A cookie
   8462  *
   8463  * Delivers a request to the X server.
   8464  *
   8465  */
   8466 xcb_query_keymap_cookie_t
   8467 xcb_query_keymap (xcb_connection_t *c);
   8468 
   8469 /**
   8470  *
   8471  * @param c The connection
   8472  * @return A cookie
   8473  *
   8474  * Delivers a request to the X server.
   8475  *
   8476  * This form can be used only if the request will cause
   8477  * a reply to be generated. Any returned error will be
   8478  * placed in the event queue.
   8479  */
   8480 xcb_query_keymap_cookie_t
   8481 xcb_query_keymap_unchecked (xcb_connection_t *c);
   8482 
   8483 /**
   8484  * Return the reply
   8485  * @param c      The connection
   8486  * @param cookie The cookie
   8487  * @param e      The xcb_generic_error_t supplied
   8488  *
   8489  * Returns the reply of the request asked by
   8490  *
   8491  * The parameter @p e supplied to this function must be NULL if
   8492  * xcb_query_keymap_unchecked(). is used.
   8493  * Otherwise, it stores the error if any.
   8494  *
   8495  * The returned value must be freed by the caller using free().
   8496  */
   8497 xcb_query_keymap_reply_t *
   8498 xcb_query_keymap_reply (xcb_connection_t           *c,
   8499                         xcb_query_keymap_cookie_t   cookie  /**< */,
   8500                         xcb_generic_error_t       **e);
   8501 
   8502 int
   8503 xcb_open_font_sizeof (const void  *_buffer);
   8504 
   8505 /**
   8506  * @brief opens a font
   8507  *
   8508  * @param c The connection
   8509  * @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
   8510  * @param name_len Length (in bytes) of \a name.
   8511  * @param name A pattern describing an X core font.
   8512  * @return A cookie
   8513  *
   8514  * Opens any X core font matching the given \a name (for example "-misc-fixed-*").
   8515  *
   8516  * Note that X core fonts are deprecated (but still supported) in favor of
   8517  * client-side rendering using Xft.
   8518  *
   8519  * This form can be used only if the request will not cause
   8520  * a reply to be generated. Any returned error will be
   8521  * saved for handling by xcb_request_check().
   8522  */
   8523 xcb_void_cookie_t
   8524 xcb_open_font_checked (xcb_connection_t *c,
   8525                        xcb_font_t        fid,
   8526                        uint16_t          name_len,
   8527                        const char       *name);
   8528 
   8529 /**
   8530  * @brief opens a font
   8531  *
   8532  * @param c The connection
   8533  * @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
   8534  * @param name_len Length (in bytes) of \a name.
   8535  * @param name A pattern describing an X core font.
   8536  * @return A cookie
   8537  *
   8538  * Opens any X core font matching the given \a name (for example "-misc-fixed-*").
   8539  *
   8540  * Note that X core fonts are deprecated (but still supported) in favor of
   8541  * client-side rendering using Xft.
   8542  *
   8543  */
   8544 xcb_void_cookie_t
   8545 xcb_open_font (xcb_connection_t *c,
   8546                xcb_font_t        fid,
   8547                uint16_t          name_len,
   8548                const char       *name);
   8549 
   8550 char *
   8551 xcb_open_font_name (const xcb_open_font_request_t *R);
   8552 
   8553 int
   8554 xcb_open_font_name_length (const xcb_open_font_request_t *R);
   8555 
   8556 xcb_generic_iterator_t
   8557 xcb_open_font_name_end (const xcb_open_font_request_t *R);
   8558 
   8559 /**
   8560  *
   8561  * @param c The connection
   8562  * @return A cookie
   8563  *
   8564  * Delivers a request to the X server.
   8565  *
   8566  * This form can be used only if the request will not cause
   8567  * a reply to be generated. Any returned error will be
   8568  * saved for handling by xcb_request_check().
   8569  */
   8570 xcb_void_cookie_t
   8571 xcb_close_font_checked (xcb_connection_t *c,
   8572                         xcb_font_t        font);
   8573 
   8574 /**
   8575  *
   8576  * @param c The connection
   8577  * @return A cookie
   8578  *
   8579  * Delivers a request to the X server.
   8580  *
   8581  */
   8582 xcb_void_cookie_t
   8583 xcb_close_font (xcb_connection_t *c,
   8584                 xcb_font_t        font);
   8585 
   8586 /**
   8587  * Get the next element of the iterator
   8588  * @param i Pointer to a xcb_fontprop_iterator_t
   8589  *
   8590  * Get the next element in the iterator. The member rem is
   8591  * decreased by one. The member data points to the next
   8592  * element. The member index is increased by sizeof(xcb_fontprop_t)
   8593  */
   8594 void
   8595 xcb_fontprop_next (xcb_fontprop_iterator_t *i);
   8596 
   8597 /**
   8598  * Return the iterator pointing to the last element
   8599  * @param i An xcb_fontprop_iterator_t
   8600  * @return  The iterator pointing to the last element
   8601  *
   8602  * Set the current element in the iterator to the last element.
   8603  * The member rem is set to 0. The member data points to the
   8604  * last element.
   8605  */
   8606 xcb_generic_iterator_t
   8607 xcb_fontprop_end (xcb_fontprop_iterator_t i);
   8608 
   8609 /**
   8610  * Get the next element of the iterator
   8611  * @param i Pointer to a xcb_charinfo_iterator_t
   8612  *
   8613  * Get the next element in the iterator. The member rem is
   8614  * decreased by one. The member data points to the next
   8615  * element. The member index is increased by sizeof(xcb_charinfo_t)
   8616  */
   8617 void
   8618 xcb_charinfo_next (xcb_charinfo_iterator_t *i);
   8619 
   8620 /**
   8621  * Return the iterator pointing to the last element
   8622  * @param i An xcb_charinfo_iterator_t
   8623  * @return  The iterator pointing to the last element
   8624  *
   8625  * Set the current element in the iterator to the last element.
   8626  * The member rem is set to 0. The member data points to the
   8627  * last element.
   8628  */
   8629 xcb_generic_iterator_t
   8630 xcb_charinfo_end (xcb_charinfo_iterator_t i);
   8631 
   8632 int
   8633 xcb_query_font_sizeof (const void  *_buffer);
   8634 
   8635 /**
   8636  * @brief query font metrics
   8637  *
   8638  * @param c The connection
   8639  * @param font The fontable (Font or Graphics Context) to query.
   8640  * @return A cookie
   8641  *
   8642  * Queries information associated with the font.
   8643  *
   8644  */
   8645 xcb_query_font_cookie_t
   8646 xcb_query_font (xcb_connection_t *c,
   8647                 xcb_fontable_t    font);
   8648 
   8649 /**
   8650  * @brief query font metrics
   8651  *
   8652  * @param c The connection
   8653  * @param font The fontable (Font or Graphics Context) to query.
   8654  * @return A cookie
   8655  *
   8656  * Queries information associated with the font.
   8657  *
   8658  * This form can be used only if the request will cause
   8659  * a reply to be generated. Any returned error will be
   8660  * placed in the event queue.
   8661  */
   8662 xcb_query_font_cookie_t
   8663 xcb_query_font_unchecked (xcb_connection_t *c,
   8664                           xcb_fontable_t    font);
   8665 
   8666 xcb_fontprop_t *
   8667 xcb_query_font_properties (const xcb_query_font_reply_t *R);
   8668 
   8669 int
   8670 xcb_query_font_properties_length (const xcb_query_font_reply_t *R);
   8671 
   8672 xcb_fontprop_iterator_t
   8673 xcb_query_font_properties_iterator (const xcb_query_font_reply_t *R);
   8674 
   8675 xcb_charinfo_t *
   8676 xcb_query_font_char_infos (const xcb_query_font_reply_t *R);
   8677 
   8678 int
   8679 xcb_query_font_char_infos_length (const xcb_query_font_reply_t *R);
   8680 
   8681 xcb_charinfo_iterator_t
   8682 xcb_query_font_char_infos_iterator (const xcb_query_font_reply_t *R);
   8683 
   8684 /**
   8685  * Return the reply
   8686  * @param c      The connection
   8687  * @param cookie The cookie
   8688  * @param e      The xcb_generic_error_t supplied
   8689  *
   8690  * Returns the reply of the request asked by
   8691  *
   8692  * The parameter @p e supplied to this function must be NULL if
   8693  * xcb_query_font_unchecked(). is used.
   8694  * Otherwise, it stores the error if any.
   8695  *
   8696  * The returned value must be freed by the caller using free().
   8697  */
   8698 xcb_query_font_reply_t *
   8699 xcb_query_font_reply (xcb_connection_t         *c,
   8700                       xcb_query_font_cookie_t   cookie  /**< */,
   8701                       xcb_generic_error_t     **e);
   8702 
   8703 int
   8704 xcb_query_text_extents_sizeof (const void  *_buffer,
   8705                                uint32_t     string_len);
   8706 
   8707 /**
   8708  * @brief get text extents
   8709  *
   8710  * @param c The connection
   8711  * @param font The \a font to calculate text extents in. You can also pass a graphics context.
   8712  * @param string_len The number of characters in \a string.
   8713  * @param string The text to get text extents for.
   8714  * @return A cookie
   8715  *
   8716  * Query text extents from the X11 server. This request returns the bounding box
   8717  * of the specified 16-bit character string in the specified \a font or the font
   8718  * contained in the specified graphics context.
   8719  *
   8720  * `font_ascent` is set to the maximum of the ascent metrics of all characters in
   8721  * the string. `font_descent` is set to the maximum of the descent metrics.
   8722  * `overall_width` is set to the sum of the character-width metrics of all
   8723  * characters in the string. For each character in the string, let W be the sum of
   8724  * the character-width metrics of all characters preceding it in the string. Let L
   8725  * be the left-side-bearing metric of the character plus W. Let R be the
   8726  * right-side-bearing metric of the character plus W. The lbearing member is set
   8727  * to the minimum L of all characters in the string. The rbearing member is set to
   8728  * the maximum R.
   8729  *
   8730  * For fonts defined with linear indexing rather than 2-byte matrix indexing, each
   8731  * `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
   8732  * most significant byte. If the font has no defined default character, undefined
   8733  * characters in the string are taken to have all zero metrics.
   8734  *
   8735  * Characters with all zero metrics are ignored. If the font has no defined
   8736  * default_char, the undefined characters in the string are also ignored.
   8737  *
   8738  */
   8739 xcb_query_text_extents_cookie_t
   8740 xcb_query_text_extents (xcb_connection_t   *c,
   8741                         xcb_fontable_t      font,
   8742                         uint32_t            string_len,
   8743                         const xcb_char2b_t *string);
   8744 
   8745 /**
   8746  * @brief get text extents
   8747  *
   8748  * @param c The connection
   8749  * @param font The \a font to calculate text extents in. You can also pass a graphics context.
   8750  * @param string_len The number of characters in \a string.
   8751  * @param string The text to get text extents for.
   8752  * @return A cookie
   8753  *
   8754  * Query text extents from the X11 server. This request returns the bounding box
   8755  * of the specified 16-bit character string in the specified \a font or the font
   8756  * contained in the specified graphics context.
   8757  *
   8758  * `font_ascent` is set to the maximum of the ascent metrics of all characters in
   8759  * the string. `font_descent` is set to the maximum of the descent metrics.
   8760  * `overall_width` is set to the sum of the character-width metrics of all
   8761  * characters in the string. For each character in the string, let W be the sum of
   8762  * the character-width metrics of all characters preceding it in the string. Let L
   8763  * be the left-side-bearing metric of the character plus W. Let R be the
   8764  * right-side-bearing metric of the character plus W. The lbearing member is set
   8765  * to the minimum L of all characters in the string. The rbearing member is set to
   8766  * the maximum R.
   8767  *
   8768  * For fonts defined with linear indexing rather than 2-byte matrix indexing, each
   8769  * `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
   8770  * most significant byte. If the font has no defined default character, undefined
   8771  * characters in the string are taken to have all zero metrics.
   8772  *
   8773  * Characters with all zero metrics are ignored. If the font has no defined
   8774  * default_char, the undefined characters in the string are also ignored.
   8775  *
   8776  * This form can be used only if the request will cause
   8777  * a reply to be generated. Any returned error will be
   8778  * placed in the event queue.
   8779  */
   8780 xcb_query_text_extents_cookie_t
   8781 xcb_query_text_extents_unchecked (xcb_connection_t   *c,
   8782                                   xcb_fontable_t      font,
   8783                                   uint32_t            string_len,
   8784                                   const xcb_char2b_t *string);
   8785 
   8786 /**
   8787  * Return the reply
   8788  * @param c      The connection
   8789  * @param cookie The cookie
   8790  * @param e      The xcb_generic_error_t supplied
   8791  *
   8792  * Returns the reply of the request asked by
   8793  *
   8794  * The parameter @p e supplied to this function must be NULL if
   8795  * xcb_query_text_extents_unchecked(). is used.
   8796  * Otherwise, it stores the error if any.
   8797  *
   8798  * The returned value must be freed by the caller using free().
   8799  */
   8800 xcb_query_text_extents_reply_t *
   8801 xcb_query_text_extents_reply (xcb_connection_t                 *c,
   8802                               xcb_query_text_extents_cookie_t   cookie  /**< */,
   8803                               xcb_generic_error_t             **e);
   8804 
   8805 int
   8806 xcb_str_sizeof (const void  *_buffer);
   8807 
   8808 char *
   8809 xcb_str_name (const xcb_str_t *R);
   8810 
   8811 int
   8812 xcb_str_name_length (const xcb_str_t *R);
   8813 
   8814 xcb_generic_iterator_t
   8815 xcb_str_name_end (const xcb_str_t *R);
   8816 
   8817 /**
   8818  * Get the next element of the iterator
   8819  * @param i Pointer to a xcb_str_iterator_t
   8820  *
   8821  * Get the next element in the iterator. The member rem is
   8822  * decreased by one. The member data points to the next
   8823  * element. The member index is increased by sizeof(xcb_str_t)
   8824  */
   8825 void
   8826 xcb_str_next (xcb_str_iterator_t *i);
   8827 
   8828 /**
   8829  * Return the iterator pointing to the last element
   8830  * @param i An xcb_str_iterator_t
   8831  * @return  The iterator pointing to the last element
   8832  *
   8833  * Set the current element in the iterator to the last element.
   8834  * The member rem is set to 0. The member data points to the
   8835  * last element.
   8836  */
   8837 xcb_generic_iterator_t
   8838 xcb_str_end (xcb_str_iterator_t i);
   8839 
   8840 int
   8841 xcb_list_fonts_sizeof (const void  *_buffer);
   8842 
   8843 /**
   8844  * @brief get matching font names
   8845  *
   8846  * @param c The connection
   8847  * @param max_names The maximum number of fonts to be returned.
   8848  * @param pattern_len The length (in bytes) of \a pattern.
   8849  * @param pattern A font pattern, for example "-misc-fixed-*".
   8850  * \n
   8851  * The asterisk (*) is a wildcard for any number of characters. The question mark
   8852  * (?) is a wildcard for a single character. Use of uppercase or lowercase does
   8853  * not matter.
   8854  * @return A cookie
   8855  *
   8856  * Gets a list of available font names which match the given \a pattern.
   8857  *
   8858  */
   8859 xcb_list_fonts_cookie_t
   8860 xcb_list_fonts (xcb_connection_t *c,
   8861                 uint16_t          max_names,
   8862                 uint16_t          pattern_len,
   8863                 const char       *pattern);
   8864 
   8865 /**
   8866  * @brief get matching font names
   8867  *
   8868  * @param c The connection
   8869  * @param max_names The maximum number of fonts to be returned.
   8870  * @param pattern_len The length (in bytes) of \a pattern.
   8871  * @param pattern A font pattern, for example "-misc-fixed-*".
   8872  * \n
   8873  * The asterisk (*) is a wildcard for any number of characters. The question mark
   8874  * (?) is a wildcard for a single character. Use of uppercase or lowercase does
   8875  * not matter.
   8876  * @return A cookie
   8877  *
   8878  * Gets a list of available font names which match the given \a pattern.
   8879  *
   8880  * This form can be used only if the request will cause
   8881  * a reply to be generated. Any returned error will be
   8882  * placed in the event queue.
   8883  */
   8884 xcb_list_fonts_cookie_t
   8885 xcb_list_fonts_unchecked (xcb_connection_t *c,
   8886                           uint16_t          max_names,
   8887                           uint16_t          pattern_len,
   8888                           const char       *pattern);
   8889 
   8890 int
   8891 xcb_list_fonts_names_length (const xcb_list_fonts_reply_t *R);
   8892 
   8893 xcb_str_iterator_t
   8894 xcb_list_fonts_names_iterator (const xcb_list_fonts_reply_t *R);
   8895 
   8896 /**
   8897  * Return the reply
   8898  * @param c      The connection
   8899  * @param cookie The cookie
   8900  * @param e      The xcb_generic_error_t supplied
   8901  *
   8902  * Returns the reply of the request asked by
   8903  *
   8904  * The parameter @p e supplied to this function must be NULL if
   8905  * xcb_list_fonts_unchecked(). is used.
   8906  * Otherwise, it stores the error if any.
   8907  *
   8908  * The returned value must be freed by the caller using free().
   8909  */
   8910 xcb_list_fonts_reply_t *
   8911 xcb_list_fonts_reply (xcb_connection_t         *c,
   8912                       xcb_list_fonts_cookie_t   cookie  /**< */,
   8913                       xcb_generic_error_t     **e);
   8914 
   8915 int
   8916 xcb_list_fonts_with_info_sizeof (const void  *_buffer);
   8917 
   8918 /**
   8919  * @brief get matching font names and information
   8920  *
   8921  * @param c The connection
   8922  * @param max_names The maximum number of fonts to be returned.
   8923  * @param pattern_len The length (in bytes) of \a pattern.
   8924  * @param pattern A font pattern, for example "-misc-fixed-*".
   8925  * \n
   8926  * The asterisk (*) is a wildcard for any number of characters. The question mark
   8927  * (?) is a wildcard for a single character. Use of uppercase or lowercase does
   8928  * not matter.
   8929  * @return A cookie
   8930  *
   8931  * Gets a list of available font names which match the given \a pattern.
   8932  *
   8933  */
   8934 xcb_list_fonts_with_info_cookie_t
   8935 xcb_list_fonts_with_info (xcb_connection_t *c,
   8936                           uint16_t          max_names,
   8937                           uint16_t          pattern_len,
   8938                           const char       *pattern);
   8939 
   8940 /**
   8941  * @brief get matching font names and information
   8942  *
   8943  * @param c The connection
   8944  * @param max_names The maximum number of fonts to be returned.
   8945  * @param pattern_len The length (in bytes) of \a pattern.
   8946  * @param pattern A font pattern, for example "-misc-fixed-*".
   8947  * \n
   8948  * The asterisk (*) is a wildcard for any number of characters. The question mark
   8949  * (?) is a wildcard for a single character. Use of uppercase or lowercase does
   8950  * not matter.
   8951  * @return A cookie
   8952  *
   8953  * Gets a list of available font names which match the given \a pattern.
   8954  *
   8955  * This form can be used only if the request will cause
   8956  * a reply to be generated. Any returned error will be
   8957  * placed in the event queue.
   8958  */
   8959 xcb_list_fonts_with_info_cookie_t
   8960 xcb_list_fonts_with_info_unchecked (xcb_connection_t *c,
   8961                                     uint16_t          max_names,
   8962                                     uint16_t          pattern_len,
   8963                                     const char       *pattern);
   8964 
   8965 xcb_fontprop_t *
   8966 xcb_list_fonts_with_info_properties (const xcb_list_fonts_with_info_reply_t *R);
   8967 
   8968 int
   8969 xcb_list_fonts_with_info_properties_length (const xcb_list_fonts_with_info_reply_t *R);
   8970 
   8971 xcb_fontprop_iterator_t
   8972 xcb_list_fonts_with_info_properties_iterator (const xcb_list_fonts_with_info_reply_t *R);
   8973 
   8974 char *
   8975 xcb_list_fonts_with_info_name (const xcb_list_fonts_with_info_reply_t *R);
   8976 
   8977 int
   8978 xcb_list_fonts_with_info_name_length (const xcb_list_fonts_with_info_reply_t *R);
   8979 
   8980 xcb_generic_iterator_t
   8981 xcb_list_fonts_with_info_name_end (const xcb_list_fonts_with_info_reply_t *R);
   8982 
   8983 /**
   8984  * Return the reply
   8985  * @param c      The connection
   8986  * @param cookie The cookie
   8987  * @param e      The xcb_generic_error_t supplied
   8988  *
   8989  * Returns the reply of the request asked by
   8990  *
   8991  * The parameter @p e supplied to this function must be NULL if
   8992  * xcb_list_fonts_with_info_unchecked(). is used.
   8993  * Otherwise, it stores the error if any.
   8994  *
   8995  * The returned value must be freed by the caller using free().
   8996  */
   8997 xcb_list_fonts_with_info_reply_t *
   8998 xcb_list_fonts_with_info_reply (xcb_connection_t                   *c,
   8999                                 xcb_list_fonts_with_info_cookie_t   cookie  /**< */,
   9000                                 xcb_generic_error_t               **e);
   9001 
   9002 int
   9003 xcb_set_font_path_sizeof (const void  *_buffer);
   9004 
   9005 /**
   9006  *
   9007  * @param c The connection
   9008  * @return A cookie
   9009  *
   9010  * Delivers a request to the X server.
   9011  *
   9012  * This form can be used only if the request will not cause
   9013  * a reply to be generated. Any returned error will be
   9014  * saved for handling by xcb_request_check().
   9015  */
   9016 xcb_void_cookie_t
   9017 xcb_set_font_path_checked (xcb_connection_t *c,
   9018                            uint16_t          font_qty,
   9019                            const xcb_str_t  *font);
   9020 
   9021 /**
   9022  *
   9023  * @param c The connection
   9024  * @return A cookie
   9025  *
   9026  * Delivers a request to the X server.
   9027  *
   9028  */
   9029 xcb_void_cookie_t
   9030 xcb_set_font_path (xcb_connection_t *c,
   9031                    uint16_t          font_qty,
   9032                    const xcb_str_t  *font);
   9033 
   9034 int
   9035 xcb_set_font_path_font_length (const xcb_set_font_path_request_t *R);
   9036 
   9037 xcb_str_iterator_t
   9038 xcb_set_font_path_font_iterator (const xcb_set_font_path_request_t *R);
   9039 
   9040 int
   9041 xcb_get_font_path_sizeof (const void  *_buffer);
   9042 
   9043 /**
   9044  *
   9045  * @param c The connection
   9046  * @return A cookie
   9047  *
   9048  * Delivers a request to the X server.
   9049  *
   9050  */
   9051 xcb_get_font_path_cookie_t
   9052 xcb_get_font_path (xcb_connection_t *c);
   9053 
   9054 /**
   9055  *
   9056  * @param c The connection
   9057  * @return A cookie
   9058  *
   9059  * Delivers a request to the X server.
   9060  *
   9061  * This form can be used only if the request will cause
   9062  * a reply to be generated. Any returned error will be
   9063  * placed in the event queue.
   9064  */
   9065 xcb_get_font_path_cookie_t
   9066 xcb_get_font_path_unchecked (xcb_connection_t *c);
   9067 
   9068 int
   9069 xcb_get_font_path_path_length (const xcb_get_font_path_reply_t *R);
   9070 
   9071 xcb_str_iterator_t
   9072 xcb_get_font_path_path_iterator (const xcb_get_font_path_reply_t *R);
   9073 
   9074 /**
   9075  * Return the reply
   9076  * @param c      The connection
   9077  * @param cookie The cookie
   9078  * @param e      The xcb_generic_error_t supplied
   9079  *
   9080  * Returns the reply of the request asked by
   9081  *
   9082  * The parameter @p e supplied to this function must be NULL if
   9083  * xcb_get_font_path_unchecked(). is used.
   9084  * Otherwise, it stores the error if any.
   9085  *
   9086  * The returned value must be freed by the caller using free().
   9087  */
   9088 xcb_get_font_path_reply_t *
   9089 xcb_get_font_path_reply (xcb_connection_t            *c,
   9090                          xcb_get_font_path_cookie_t   cookie  /**< */,
   9091                          xcb_generic_error_t        **e);
   9092 
   9093 /**
   9094  * @brief Creates a pixmap
   9095  *
   9096  * @param c The connection
   9097  * @param depth TODO
   9098  * @param pid The ID with which you will refer to the new pixmap, created by
   9099  * `xcb_generate_id`.
   9100  * @param drawable Drawable to get the screen from.
   9101  * @param width The width of the new pixmap.
   9102  * @param height The height of the new pixmap.
   9103  * @return A cookie
   9104  *
   9105  * Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
   9106  * is on and only with drawables of the same \a depth.
   9107  *
   9108  * This form can be used only if the request will not cause
   9109  * a reply to be generated. Any returned error will be
   9110  * saved for handling by xcb_request_check().
   9111  */
   9112 xcb_void_cookie_t
   9113 xcb_create_pixmap_checked (xcb_connection_t *c,
   9114                            uint8_t           depth,
   9115                            xcb_pixmap_t      pid,
   9116                            xcb_drawable_t    drawable,
   9117                            uint16_t          width,
   9118                            uint16_t          height);
   9119 
   9120 /**
   9121  * @brief Creates a pixmap
   9122  *
   9123  * @param c The connection
   9124  * @param depth TODO
   9125  * @param pid The ID with which you will refer to the new pixmap, created by
   9126  * `xcb_generate_id`.
   9127  * @param drawable Drawable to get the screen from.
   9128  * @param width The width of the new pixmap.
   9129  * @param height The height of the new pixmap.
   9130  * @return A cookie
   9131  *
   9132  * Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
   9133  * is on and only with drawables of the same \a depth.
   9134  *
   9135  */
   9136 xcb_void_cookie_t
   9137 xcb_create_pixmap (xcb_connection_t *c,
   9138                    uint8_t           depth,
   9139                    xcb_pixmap_t      pid,
   9140                    xcb_drawable_t    drawable,
   9141                    uint16_t          width,
   9142                    uint16_t          height);
   9143 
   9144 /**
   9145  * @brief Destroys a pixmap
   9146  *
   9147  * @param c The connection
   9148  * @param pixmap The pixmap to destroy.
   9149  * @return A cookie
   9150  *
   9151  * Deletes the association between the pixmap ID and the pixmap. The pixmap
   9152  * storage will be freed when there are no more references to it.
   9153  *
   9154  * This form can be used only if the request will not cause
   9155  * a reply to be generated. Any returned error will be
   9156  * saved for handling by xcb_request_check().
   9157  */
   9158 xcb_void_cookie_t
   9159 xcb_free_pixmap_checked (xcb_connection_t *c,
   9160                          xcb_pixmap_t      pixmap);
   9161 
   9162 /**
   9163  * @brief Destroys a pixmap
   9164  *
   9165  * @param c The connection
   9166  * @param pixmap The pixmap to destroy.
   9167  * @return A cookie
   9168  *
   9169  * Deletes the association between the pixmap ID and the pixmap. The pixmap
   9170  * storage will be freed when there are no more references to it.
   9171  *
   9172  */
   9173 xcb_void_cookie_t
   9174 xcb_free_pixmap (xcb_connection_t *c,
   9175                  xcb_pixmap_t      pixmap);
   9176 
   9177 int
   9178 xcb_create_gc_value_list_serialize (void                             **_buffer,
   9179                                     uint32_t                           value_mask,
   9180                                     const xcb_create_gc_value_list_t  *_aux);
   9181 
   9182 int
   9183 xcb_create_gc_value_list_unpack (const void                  *_buffer,
   9184                                  uint32_t                     value_mask,
   9185                                  xcb_create_gc_value_list_t  *_aux);
   9186 
   9187 int
   9188 xcb_create_gc_value_list_sizeof (const void  *_buffer,
   9189                                  uint32_t     value_mask);
   9190 
   9191 int
   9192 xcb_create_gc_sizeof (const void  *_buffer);
   9193 
   9194 /**
   9195  * @brief Creates a graphics context
   9196  *
   9197  * @param c The connection
   9198  * @param cid The ID with which you will refer to the graphics context, created by
   9199  * `xcb_generate_id`.
   9200  * @param drawable Drawable to get the root/depth from.
   9201  * @return A cookie
   9202  *
   9203  * Creates a graphics context. The graphics context can be used with any drawable
   9204  * that has the same root and depth as the specified drawable.
   9205  *
   9206  * This form can be used only if the request will not cause
   9207  * a reply to be generated. Any returned error will be
   9208  * saved for handling by xcb_request_check().
   9209  */
   9210 xcb_void_cookie_t
   9211 xcb_create_gc_checked (xcb_connection_t *c,
   9212                        xcb_gcontext_t    cid,
   9213                        xcb_drawable_t    drawable,
   9214                        uint32_t          value_mask,
   9215                        const void       *value_list);
   9216 
   9217 /**
   9218  * @brief Creates a graphics context
   9219  *
   9220  * @param c The connection
   9221  * @param cid The ID with which you will refer to the graphics context, created by
   9222  * `xcb_generate_id`.
   9223  * @param drawable Drawable to get the root/depth from.
   9224  * @return A cookie
   9225  *
   9226  * Creates a graphics context. The graphics context can be used with any drawable
   9227  * that has the same root and depth as the specified drawable.
   9228  *
   9229  */
   9230 xcb_void_cookie_t
   9231 xcb_create_gc (xcb_connection_t *c,
   9232                xcb_gcontext_t    cid,
   9233                xcb_drawable_t    drawable,
   9234                uint32_t          value_mask,
   9235                const void       *value_list);
   9236 
   9237 /**
   9238  * @brief Creates a graphics context
   9239  *
   9240  * @param c The connection
   9241  * @param cid The ID with which you will refer to the graphics context, created by
   9242  * `xcb_generate_id`.
   9243  * @param drawable Drawable to get the root/depth from.
   9244  * @return A cookie
   9245  *
   9246  * Creates a graphics context. The graphics context can be used with any drawable
   9247  * that has the same root and depth as the specified drawable.
   9248  *
   9249  * This form can be used only if the request will not cause
   9250  * a reply to be generated. Any returned error will be
   9251  * saved for handling by xcb_request_check().
   9252  */
   9253 xcb_void_cookie_t
   9254 xcb_create_gc_aux_checked (xcb_connection_t                 *c,
   9255                            xcb_gcontext_t                    cid,
   9256                            xcb_drawable_t                    drawable,
   9257                            uint32_t                          value_mask,
   9258                            const xcb_create_gc_value_list_t *value_list);
   9259 
   9260 /**
   9261  * @brief Creates a graphics context
   9262  *
   9263  * @param c The connection
   9264  * @param cid The ID with which you will refer to the graphics context, created by
   9265  * `xcb_generate_id`.
   9266  * @param drawable Drawable to get the root/depth from.
   9267  * @return A cookie
   9268  *
   9269  * Creates a graphics context. The graphics context can be used with any drawable
   9270  * that has the same root and depth as the specified drawable.
   9271  *
   9272  */
   9273 xcb_void_cookie_t
   9274 xcb_create_gc_aux (xcb_connection_t                 *c,
   9275                    xcb_gcontext_t                    cid,
   9276                    xcb_drawable_t                    drawable,
   9277                    uint32_t                          value_mask,
   9278                    const xcb_create_gc_value_list_t *value_list);
   9279 
   9280 void *
   9281 xcb_create_gc_value_list (const xcb_create_gc_request_t *R);
   9282 
   9283 int
   9284 xcb_change_gc_value_list_serialize (void                             **_buffer,
   9285                                     uint32_t                           value_mask,
   9286                                     const xcb_change_gc_value_list_t  *_aux);
   9287 
   9288 int
   9289 xcb_change_gc_value_list_unpack (const void                  *_buffer,
   9290                                  uint32_t                     value_mask,
   9291                                  xcb_change_gc_value_list_t  *_aux);
   9292 
   9293 int
   9294 xcb_change_gc_value_list_sizeof (const void  *_buffer,
   9295                                  uint32_t     value_mask);
   9296 
   9297 int
   9298 xcb_change_gc_sizeof (const void  *_buffer);
   9299 
   9300 /**
   9301  * @brief change graphics context components
   9302  *
   9303  * @param c The connection
   9304  * @param gc The graphics context to change.
   9305  * @param value_mask A bitmask of #xcb_gc_t values.
   9306  * @param value_mask \n
   9307  * @param value_list Values for each of the components specified in the bitmask \a value_mask. The
   9308  * order has to correspond to the order of possible \a value_mask bits. See the
   9309  * example.
   9310  * @return A cookie
   9311  *
   9312  * Changes the components specified by \a value_mask for the specified graphics context.
   9313  *
   9314  * This form can be used only if the request will not cause
   9315  * a reply to be generated. Any returned error will be
   9316  * saved for handling by xcb_request_check().
   9317  */
   9318 xcb_void_cookie_t
   9319 xcb_change_gc_checked (xcb_connection_t *c,
   9320                        xcb_gcontext_t    gc,
   9321                        uint32_t          value_mask,
   9322                        const void       *value_list);
   9323 
   9324 /**
   9325  * @brief change graphics context components
   9326  *
   9327  * @param c The connection
   9328  * @param gc The graphics context to change.
   9329  * @param value_mask A bitmask of #xcb_gc_t values.
   9330  * @param value_mask \n
   9331  * @param value_list Values for each of the components specified in the bitmask \a value_mask. The
   9332  * order has to correspond to the order of possible \a value_mask bits. See the
   9333  * example.
   9334  * @return A cookie
   9335  *
   9336  * Changes the components specified by \a value_mask for the specified graphics context.
   9337  *
   9338  */
   9339 xcb_void_cookie_t
   9340 xcb_change_gc (xcb_connection_t *c,
   9341                xcb_gcontext_t    gc,
   9342                uint32_t          value_mask,
   9343                const void       *value_list);
   9344 
   9345 /**
   9346  * @brief change graphics context components
   9347  *
   9348  * @param c The connection
   9349  * @param gc The graphics context to change.
   9350  * @param value_mask A bitmask of #xcb_gc_t values.
   9351  * @param value_mask \n
   9352  * @param value_list Values for each of the components specified in the bitmask \a value_mask. The
   9353  * order has to correspond to the order of possible \a value_mask bits. See the
   9354  * example.
   9355  * @return A cookie
   9356  *
   9357  * Changes the components specified by \a value_mask for the specified graphics context.
   9358  *
   9359  * This form can be used only if the request will not cause
   9360  * a reply to be generated. Any returned error will be
   9361  * saved for handling by xcb_request_check().
   9362  */
   9363 xcb_void_cookie_t
   9364 xcb_change_gc_aux_checked (xcb_connection_t                 *c,
   9365                            xcb_gcontext_t                    gc,
   9366                            uint32_t                          value_mask,
   9367                            const xcb_change_gc_value_list_t *value_list);
   9368 
   9369 /**
   9370  * @brief change graphics context components
   9371  *
   9372  * @param c The connection
   9373  * @param gc The graphics context to change.
   9374  * @param value_mask A bitmask of #xcb_gc_t values.
   9375  * @param value_mask \n
   9376  * @param value_list Values for each of the components specified in the bitmask \a value_mask. The
   9377  * order has to correspond to the order of possible \a value_mask bits. See the
   9378  * example.
   9379  * @return A cookie
   9380  *
   9381  * Changes the components specified by \a value_mask for the specified graphics context.
   9382  *
   9383  */
   9384 xcb_void_cookie_t
   9385 xcb_change_gc_aux (xcb_connection_t                 *c,
   9386                    xcb_gcontext_t                    gc,
   9387                    uint32_t                          value_mask,
   9388                    const xcb_change_gc_value_list_t *value_list);
   9389 
   9390 void *
   9391 xcb_change_gc_value_list (const xcb_change_gc_request_t *R);
   9392 
   9393 /**
   9394  *
   9395  * @param c The connection
   9396  * @return A cookie
   9397  *
   9398  * Delivers a request to the X server.
   9399  *
   9400  * This form can be used only if the request will not cause
   9401  * a reply to be generated. Any returned error will be
   9402  * saved for handling by xcb_request_check().
   9403  */
   9404 xcb_void_cookie_t
   9405 xcb_copy_gc_checked (xcb_connection_t *c,
   9406                      xcb_gcontext_t    src_gc,
   9407                      xcb_gcontext_t    dst_gc,
   9408                      uint32_t          value_mask);
   9409 
   9410 /**
   9411  *
   9412  * @param c The connection
   9413  * @return A cookie
   9414  *
   9415  * Delivers a request to the X server.
   9416  *
   9417  */
   9418 xcb_void_cookie_t
   9419 xcb_copy_gc (xcb_connection_t *c,
   9420              xcb_gcontext_t    src_gc,
   9421              xcb_gcontext_t    dst_gc,
   9422              uint32_t          value_mask);
   9423 
   9424 int
   9425 xcb_set_dashes_sizeof (const void  *_buffer);
   9426 
   9427 /**
   9428  *
   9429  * @param c The connection
   9430  * @return A cookie
   9431  *
   9432  * Delivers a request to the X server.
   9433  *
   9434  * This form can be used only if the request will not cause
   9435  * a reply to be generated. Any returned error will be
   9436  * saved for handling by xcb_request_check().
   9437  */
   9438 xcb_void_cookie_t
   9439 xcb_set_dashes_checked (xcb_connection_t *c,
   9440                         xcb_gcontext_t    gc,
   9441                         uint16_t          dash_offset,
   9442                         uint16_t          dashes_len,
   9443                         const uint8_t    *dashes);
   9444 
   9445 /**
   9446  *
   9447  * @param c The connection
   9448  * @return A cookie
   9449  *
   9450  * Delivers a request to the X server.
   9451  *
   9452  */
   9453 xcb_void_cookie_t
   9454 xcb_set_dashes (xcb_connection_t *c,
   9455                 xcb_gcontext_t    gc,
   9456                 uint16_t          dash_offset,
   9457                 uint16_t          dashes_len,
   9458                 const uint8_t    *dashes);
   9459 
   9460 uint8_t *
   9461 xcb_set_dashes_dashes (const xcb_set_dashes_request_t *R);
   9462 
   9463 int
   9464 xcb_set_dashes_dashes_length (const xcb_set_dashes_request_t *R);
   9465 
   9466 xcb_generic_iterator_t
   9467 xcb_set_dashes_dashes_end (const xcb_set_dashes_request_t *R);
   9468 
   9469 int
   9470 xcb_set_clip_rectangles_sizeof (const void  *_buffer,
   9471                                 uint32_t     rectangles_len);
   9472 
   9473 /**
   9474  *
   9475  * @param c The connection
   9476  * @return A cookie
   9477  *
   9478  * Delivers a request to the X server.
   9479  *
   9480  * This form can be used only if the request will not cause
   9481  * a reply to be generated. Any returned error will be
   9482  * saved for handling by xcb_request_check().
   9483  */
   9484 xcb_void_cookie_t
   9485 xcb_set_clip_rectangles_checked (xcb_connection_t      *c,
   9486                                  uint8_t                ordering,
   9487                                  xcb_gcontext_t         gc,
   9488                                  int16_t                clip_x_origin,
   9489                                  int16_t                clip_y_origin,
   9490                                  uint32_t               rectangles_len,
   9491                                  const xcb_rectangle_t *rectangles);
   9492 
   9493 /**
   9494  *
   9495  * @param c The connection
   9496  * @return A cookie
   9497  *
   9498  * Delivers a request to the X server.
   9499  *
   9500  */
   9501 xcb_void_cookie_t
   9502 xcb_set_clip_rectangles (xcb_connection_t      *c,
   9503                          uint8_t                ordering,
   9504                          xcb_gcontext_t         gc,
   9505                          int16_t                clip_x_origin,
   9506                          int16_t                clip_y_origin,
   9507                          uint32_t               rectangles_len,
   9508                          const xcb_rectangle_t *rectangles);
   9509 
   9510 xcb_rectangle_t *
   9511 xcb_set_clip_rectangles_rectangles (const xcb_set_clip_rectangles_request_t *R);
   9512 
   9513 int
   9514 xcb_set_clip_rectangles_rectangles_length (const xcb_set_clip_rectangles_request_t *R);
   9515 
   9516 xcb_rectangle_iterator_t
   9517 xcb_set_clip_rectangles_rectangles_iterator (const xcb_set_clip_rectangles_request_t *R);
   9518 
   9519 /**
   9520  * @brief Destroys a graphics context
   9521  *
   9522  * @param c The connection
   9523  * @param gc The graphics context to destroy.
   9524  * @return A cookie
   9525  *
   9526  * Destroys the specified \a gc and all associated storage.
   9527  *
   9528  * This form can be used only if the request will not cause
   9529  * a reply to be generated. Any returned error will be
   9530  * saved for handling by xcb_request_check().
   9531  */
   9532 xcb_void_cookie_t
   9533 xcb_free_gc_checked (xcb_connection_t *c,
   9534                      xcb_gcontext_t    gc);
   9535 
   9536 /**
   9537  * @brief Destroys a graphics context
   9538  *
   9539  * @param c The connection
   9540  * @param gc The graphics context to destroy.
   9541  * @return A cookie
   9542  *
   9543  * Destroys the specified \a gc and all associated storage.
   9544  *
   9545  */
   9546 xcb_void_cookie_t
   9547 xcb_free_gc (xcb_connection_t *c,
   9548              xcb_gcontext_t    gc);
   9549 
   9550 /**
   9551  *
   9552  * @param c The connection
   9553  * @return A cookie
   9554  *
   9555  * Delivers a request to the X server.
   9556  *
   9557  * This form can be used only if the request will not cause
   9558  * a reply to be generated. Any returned error will be
   9559  * saved for handling by xcb_request_check().
   9560  */
   9561 xcb_void_cookie_t
   9562 xcb_clear_area_checked (xcb_connection_t *c,
   9563                         uint8_t           exposures,
   9564                         xcb_window_t      window,
   9565                         int16_t           x,
   9566                         int16_t           y,
   9567                         uint16_t          width,
   9568                         uint16_t          height);
   9569 
   9570 /**
   9571  *
   9572  * @param c The connection
   9573  * @return A cookie
   9574  *
   9575  * Delivers a request to the X server.
   9576  *
   9577  */
   9578 xcb_void_cookie_t
   9579 xcb_clear_area (xcb_connection_t *c,
   9580                 uint8_t           exposures,
   9581                 xcb_window_t      window,
   9582                 int16_t           x,
   9583                 int16_t           y,
   9584                 uint16_t          width,
   9585                 uint16_t          height);
   9586 
   9587 /**
   9588  * @brief copy areas
   9589  *
   9590  * @param c The connection
   9591  * @param src_drawable The source drawable (Window or Pixmap).
   9592  * @param dst_drawable The destination drawable (Window or Pixmap).
   9593  * @param gc The graphics context to use.
   9594  * @param src_x The source X coordinate.
   9595  * @param src_y The source Y coordinate.
   9596  * @param dst_x The destination X coordinate.
   9597  * @param dst_y The destination Y coordinate.
   9598  * @param width The width of the area to copy (in pixels).
   9599  * @param height The height of the area to copy (in pixels).
   9600  * @return A cookie
   9601  *
   9602  * Copies the specified rectangle from \a src_drawable to \a dst_drawable.
   9603  *
   9604  * This form can be used only if the request will not cause
   9605  * a reply to be generated. Any returned error will be
   9606  * saved for handling by xcb_request_check().
   9607  */
   9608 xcb_void_cookie_t
   9609 xcb_copy_area_checked (xcb_connection_t *c,
   9610                        xcb_drawable_t    src_drawable,
   9611                        xcb_drawable_t    dst_drawable,
   9612                        xcb_gcontext_t    gc,
   9613                        int16_t           src_x,
   9614                        int16_t           src_y,
   9615                        int16_t           dst_x,
   9616                        int16_t           dst_y,
   9617                        uint16_t          width,
   9618                        uint16_t          height);
   9619 
   9620 /**
   9621  * @brief copy areas
   9622  *
   9623  * @param c The connection
   9624  * @param src_drawable The source drawable (Window or Pixmap).
   9625  * @param dst_drawable The destination drawable (Window or Pixmap).
   9626  * @param gc The graphics context to use.
   9627  * @param src_x The source X coordinate.
   9628  * @param src_y The source Y coordinate.
   9629  * @param dst_x The destination X coordinate.
   9630  * @param dst_y The destination Y coordinate.
   9631  * @param width The width of the area to copy (in pixels).
   9632  * @param height The height of the area to copy (in pixels).
   9633  * @return A cookie
   9634  *
   9635  * Copies the specified rectangle from \a src_drawable to \a dst_drawable.
   9636  *
   9637  */
   9638 xcb_void_cookie_t
   9639 xcb_copy_area (xcb_connection_t *c,
   9640                xcb_drawable_t    src_drawable,
   9641                xcb_drawable_t    dst_drawable,
   9642                xcb_gcontext_t    gc,
   9643                int16_t           src_x,
   9644                int16_t           src_y,
   9645                int16_t           dst_x,
   9646                int16_t           dst_y,
   9647                uint16_t          width,
   9648                uint16_t          height);
   9649 
   9650 /**
   9651  *
   9652  * @param c The connection
   9653  * @return A cookie
   9654  *
   9655  * Delivers a request to the X server.
   9656  *
   9657  * This form can be used only if the request will not cause
   9658  * a reply to be generated. Any returned error will be
   9659  * saved for handling by xcb_request_check().
   9660  */
   9661 xcb_void_cookie_t
   9662 xcb_copy_plane_checked (xcb_connection_t *c,
   9663                         xcb_drawable_t    src_drawable,
   9664                         xcb_drawable_t    dst_drawable,
   9665                         xcb_gcontext_t    gc,
   9666                         int16_t           src_x,
   9667                         int16_t           src_y,
   9668                         int16_t           dst_x,
   9669                         int16_t           dst_y,
   9670                         uint16_t          width,
   9671                         uint16_t          height,
   9672                         uint32_t          bit_plane);
   9673 
   9674 /**
   9675  *
   9676  * @param c The connection
   9677  * @return A cookie
   9678  *
   9679  * Delivers a request to the X server.
   9680  *
   9681  */
   9682 xcb_void_cookie_t
   9683 xcb_copy_plane (xcb_connection_t *c,
   9684                 xcb_drawable_t    src_drawable,
   9685                 xcb_drawable_t    dst_drawable,
   9686                 xcb_gcontext_t    gc,
   9687                 int16_t           src_x,
   9688                 int16_t           src_y,
   9689                 int16_t           dst_x,
   9690                 int16_t           dst_y,
   9691                 uint16_t          width,
   9692                 uint16_t          height,
   9693                 uint32_t          bit_plane);
   9694 
   9695 int
   9696 xcb_poly_point_sizeof (const void  *_buffer,
   9697                        uint32_t     points_len);
   9698 
   9699 /**
   9700  *
   9701  * @param c The connection
   9702  * @return A cookie
   9703  *
   9704  * Delivers a request to the X server.
   9705  *
   9706  * This form can be used only if the request will not cause
   9707  * a reply to be generated. Any returned error will be
   9708  * saved for handling by xcb_request_check().
   9709  */
   9710 xcb_void_cookie_t
   9711 xcb_poly_point_checked (xcb_connection_t  *c,
   9712                         uint8_t            coordinate_mode,
   9713                         xcb_drawable_t     drawable,
   9714                         xcb_gcontext_t     gc,
   9715                         uint32_t           points_len,
   9716                         const xcb_point_t *points);
   9717 
   9718 /**
   9719  *
   9720  * @param c The connection
   9721  * @return A cookie
   9722  *
   9723  * Delivers a request to the X server.
   9724  *
   9725  */
   9726 xcb_void_cookie_t
   9727 xcb_poly_point (xcb_connection_t  *c,
   9728                 uint8_t            coordinate_mode,
   9729                 xcb_drawable_t     drawable,
   9730                 xcb_gcontext_t     gc,
   9731                 uint32_t           points_len,
   9732                 const xcb_point_t *points);
   9733 
   9734 xcb_point_t *
   9735 xcb_poly_point_points (const xcb_poly_point_request_t *R);
   9736 
   9737 int
   9738 xcb_poly_point_points_length (const xcb_poly_point_request_t *R);
   9739 
   9740 xcb_point_iterator_t
   9741 xcb_poly_point_points_iterator (const xcb_poly_point_request_t *R);
   9742 
   9743 int
   9744 xcb_poly_line_sizeof (const void  *_buffer,
   9745                       uint32_t     points_len);
   9746 
   9747 /**
   9748  * @brief draw lines
   9749  *
   9750  * @param c The connection
   9751  * @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
   9752  * @param coordinate_mode \n
   9753  * @param drawable The drawable to draw the line(s) on.
   9754  * @param gc The graphics context to use.
   9755  * @param points_len The number of `xcb_point_t` structures in \a points.
   9756  * @param points An array of points.
   9757  * @return A cookie
   9758  *
   9759  * Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
   9760  * in the \a points array. The lines are drawn in the order listed in the array.
   9761  * They join correctly at all intermediate points, and if the first and last
   9762  * points coincide, the first and last lines also join correctly. For any given
   9763  * line, a pixel is not drawn more than once. If thin (zero line-width) lines
   9764  * intersect, the intersecting pixels are drawn multiple times. If wide lines
   9765  * intersect, the intersecting pixels are drawn only once, as though the entire
   9766  * request were a single, filled shape.
   9767  *
   9768  * This form can be used only if the request will not cause
   9769  * a reply to be generated. Any returned error will be
   9770  * saved for handling by xcb_request_check().
   9771  */
   9772 xcb_void_cookie_t
   9773 xcb_poly_line_checked (xcb_connection_t  *c,
   9774                        uint8_t            coordinate_mode,
   9775                        xcb_drawable_t     drawable,
   9776                        xcb_gcontext_t     gc,
   9777                        uint32_t           points_len,
   9778                        const xcb_point_t *points);
   9779 
   9780 /**
   9781  * @brief draw lines
   9782  *
   9783  * @param c The connection
   9784  * @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
   9785  * @param coordinate_mode \n
   9786  * @param drawable The drawable to draw the line(s) on.
   9787  * @param gc The graphics context to use.
   9788  * @param points_len The number of `xcb_point_t` structures in \a points.
   9789  * @param points An array of points.
   9790  * @return A cookie
   9791  *
   9792  * Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
   9793  * in the \a points array. The lines are drawn in the order listed in the array.
   9794  * They join correctly at all intermediate points, and if the first and last
   9795  * points coincide, the first and last lines also join correctly. For any given
   9796  * line, a pixel is not drawn more than once. If thin (zero line-width) lines
   9797  * intersect, the intersecting pixels are drawn multiple times. If wide lines
   9798  * intersect, the intersecting pixels are drawn only once, as though the entire
   9799  * request were a single, filled shape.
   9800  *
   9801  */
   9802 xcb_void_cookie_t
   9803 xcb_poly_line (xcb_connection_t  *c,
   9804                uint8_t            coordinate_mode,
   9805                xcb_drawable_t     drawable,
   9806                xcb_gcontext_t     gc,
   9807                uint32_t           points_len,
   9808                const xcb_point_t *points);
   9809 
   9810 xcb_point_t *
   9811 xcb_poly_line_points (const xcb_poly_line_request_t *R);
   9812 
   9813 int
   9814 xcb_poly_line_points_length (const xcb_poly_line_request_t *R);
   9815 
   9816 xcb_point_iterator_t
   9817 xcb_poly_line_points_iterator (const xcb_poly_line_request_t *R);
   9818 
   9819 /**
   9820  * Get the next element of the iterator
   9821  * @param i Pointer to a xcb_segment_iterator_t
   9822  *
   9823  * Get the next element in the iterator. The member rem is
   9824  * decreased by one. The member data points to the next
   9825  * element. The member index is increased by sizeof(xcb_segment_t)
   9826  */
   9827 void
   9828 xcb_segment_next (xcb_segment_iterator_t *i);
   9829 
   9830 /**
   9831  * Return the iterator pointing to the last element
   9832  * @param i An xcb_segment_iterator_t
   9833  * @return  The iterator pointing to the last element
   9834  *
   9835  * Set the current element in the iterator to the last element.
   9836  * The member rem is set to 0. The member data points to the
   9837  * last element.
   9838  */
   9839 xcb_generic_iterator_t
   9840 xcb_segment_end (xcb_segment_iterator_t i);
   9841 
   9842 int
   9843 xcb_poly_segment_sizeof (const void  *_buffer,
   9844                          uint32_t     segments_len);
   9845 
   9846 /**
   9847  * @brief draw lines
   9848  *
   9849  * @param c The connection
   9850  * @param drawable A drawable (Window or Pixmap) to draw on.
   9851  * @param gc The graphics context to use.
   9852  * \n
   9853  * TODO: document which attributes of a gc are used
   9854  * @param segments_len The number of `xcb_segment_t` structures in \a segments.
   9855  * @param segments An array of `xcb_segment_t` structures.
   9856  * @return A cookie
   9857  *
   9858  * Draws multiple, unconnected lines. For each segment, a line is drawn between
   9859  * (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
   9860  * `xcb_segment_t` structures and does not perform joining at coincident
   9861  * endpoints. For any given line, a pixel is not drawn more than once. If lines
   9862  * intersect, the intersecting pixels are drawn multiple times.
   9863  *
   9864  * TODO: include the xcb_segment_t data structure
   9865  *
   9866  * TODO: an example
   9867  *
   9868  * This form can be used only if the request will not cause
   9869  * a reply to be generated. Any returned error will be
   9870  * saved for handling by xcb_request_check().
   9871  */
   9872 xcb_void_cookie_t
   9873 xcb_poly_segment_checked (xcb_connection_t    *c,
   9874                           xcb_drawable_t       drawable,
   9875                           xcb_gcontext_t       gc,
   9876                           uint32_t             segments_len,
   9877                           const xcb_segment_t *segments);
   9878 
   9879 /**
   9880  * @brief draw lines
   9881  *
   9882  * @param c The connection
   9883  * @param drawable A drawable (Window or Pixmap) to draw on.
   9884  * @param gc The graphics context to use.
   9885  * \n
   9886  * TODO: document which attributes of a gc are used
   9887  * @param segments_len The number of `xcb_segment_t` structures in \a segments.
   9888  * @param segments An array of `xcb_segment_t` structures.
   9889  * @return A cookie
   9890  *
   9891  * Draws multiple, unconnected lines. For each segment, a line is drawn between
   9892  * (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
   9893  * `xcb_segment_t` structures and does not perform joining at coincident
   9894  * endpoints. For any given line, a pixel is not drawn more than once. If lines
   9895  * intersect, the intersecting pixels are drawn multiple times.
   9896  *
   9897  * TODO: include the xcb_segment_t data structure
   9898  *
   9899  * TODO: an example
   9900  *
   9901  */
   9902 xcb_void_cookie_t
   9903 xcb_poly_segment (xcb_connection_t    *c,
   9904                   xcb_drawable_t       drawable,
   9905                   xcb_gcontext_t       gc,
   9906                   uint32_t             segments_len,
   9907                   const xcb_segment_t *segments);
   9908 
   9909 xcb_segment_t *
   9910 xcb_poly_segment_segments (const xcb_poly_segment_request_t *R);
   9911 
   9912 int
   9913 xcb_poly_segment_segments_length (const xcb_poly_segment_request_t *R);
   9914 
   9915 xcb_segment_iterator_t
   9916 xcb_poly_segment_segments_iterator (const xcb_poly_segment_request_t *R);
   9917 
   9918 int
   9919 xcb_poly_rectangle_sizeof (const void  *_buffer,
   9920                            uint32_t     rectangles_len);
   9921 
   9922 /**
   9923  *
   9924  * @param c The connection
   9925  * @return A cookie
   9926  *
   9927  * Delivers a request to the X server.
   9928  *
   9929  * This form can be used only if the request will not cause
   9930  * a reply to be generated. Any returned error will be
   9931  * saved for handling by xcb_request_check().
   9932  */
   9933 xcb_void_cookie_t
   9934 xcb_poly_rectangle_checked (xcb_connection_t      *c,
   9935                             xcb_drawable_t         drawable,
   9936                             xcb_gcontext_t         gc,
   9937                             uint32_t               rectangles_len,
   9938                             const xcb_rectangle_t *rectangles);
   9939 
   9940 /**
   9941  *
   9942  * @param c The connection
   9943  * @return A cookie
   9944  *
   9945  * Delivers a request to the X server.
   9946  *
   9947  */
   9948 xcb_void_cookie_t
   9949 xcb_poly_rectangle (xcb_connection_t      *c,
   9950                     xcb_drawable_t         drawable,
   9951                     xcb_gcontext_t         gc,
   9952                     uint32_t               rectangles_len,
   9953                     const xcb_rectangle_t *rectangles);
   9954 
   9955 xcb_rectangle_t *
   9956 xcb_poly_rectangle_rectangles (const xcb_poly_rectangle_request_t *R);
   9957 
   9958 int
   9959 xcb_poly_rectangle_rectangles_length (const xcb_poly_rectangle_request_t *R);
   9960 
   9961 xcb_rectangle_iterator_t
   9962 xcb_poly_rectangle_rectangles_iterator (const xcb_poly_rectangle_request_t *R);
   9963 
   9964 int
   9965 xcb_poly_arc_sizeof (const void  *_buffer,
   9966                      uint32_t     arcs_len);
   9967 
   9968 /**
   9969  *
   9970  * @param c The connection
   9971  * @return A cookie
   9972  *
   9973  * Delivers a request to the X server.
   9974  *
   9975  * This form can be used only if the request will not cause
   9976  * a reply to be generated. Any returned error will be
   9977  * saved for handling by xcb_request_check().
   9978  */
   9979 xcb_void_cookie_t
   9980 xcb_poly_arc_checked (xcb_connection_t *c,
   9981                       xcb_drawable_t    drawable,
   9982                       xcb_gcontext_t    gc,
   9983                       uint32_t          arcs_len,
   9984                       const xcb_arc_t  *arcs);
   9985 
   9986 /**
   9987  *
   9988  * @param c The connection
   9989  * @return A cookie
   9990  *
   9991  * Delivers a request to the X server.
   9992  *
   9993  */
   9994 xcb_void_cookie_t
   9995 xcb_poly_arc (xcb_connection_t *c,
   9996               xcb_drawable_t    drawable,
   9997               xcb_gcontext_t    gc,
   9998               uint32_t          arcs_len,
   9999               const xcb_arc_t  *arcs);
   10000 
   10001 xcb_arc_t *
   10002 xcb_poly_arc_arcs (const xcb_poly_arc_request_t *R);
   10003 
   10004 int
   10005 xcb_poly_arc_arcs_length (const xcb_poly_arc_request_t *R);
   10006 
   10007 xcb_arc_iterator_t
   10008 xcb_poly_arc_arcs_iterator (const xcb_poly_arc_request_t *R);
   10009 
   10010 int
   10011 xcb_fill_poly_sizeof (const void  *_buffer,
   10012                       uint32_t     points_len);
   10013 
   10014 /**
   10015  *
   10016  * @param c The connection
   10017  * @return A cookie
   10018  *
   10019  * Delivers a request to the X server.
   10020  *
   10021  * This form can be used only if the request will not cause
   10022  * a reply to be generated. Any returned error will be
   10023  * saved for handling by xcb_request_check().
   10024  */
   10025 xcb_void_cookie_t
   10026 xcb_fill_poly_checked (xcb_connection_t  *c,
   10027                        xcb_drawable_t     drawable,
   10028                        xcb_gcontext_t     gc,
   10029                        uint8_t            shape,
   10030                        uint8_t            coordinate_mode,
   10031                        uint32_t           points_len,
   10032                        const xcb_point_t *points);
   10033 
   10034 /**
   10035  *
   10036  * @param c The connection
   10037  * @return A cookie
   10038  *
   10039  * Delivers a request to the X server.
   10040  *
   10041  */
   10042 xcb_void_cookie_t
   10043 xcb_fill_poly (xcb_connection_t  *c,
   10044                xcb_drawable_t     drawable,
   10045                xcb_gcontext_t     gc,
   10046                uint8_t            shape,
   10047                uint8_t            coordinate_mode,
   10048                uint32_t           points_len,
   10049                const xcb_point_t *points);
   10050 
   10051 xcb_point_t *
   10052 xcb_fill_poly_points (const xcb_fill_poly_request_t *R);
   10053 
   10054 int
   10055 xcb_fill_poly_points_length (const xcb_fill_poly_request_t *R);
   10056 
   10057 xcb_point_iterator_t
   10058 xcb_fill_poly_points_iterator (const xcb_fill_poly_request_t *R);
   10059 
   10060 int
   10061 xcb_poly_fill_rectangle_sizeof (const void  *_buffer,
   10062                                 uint32_t     rectangles_len);
   10063 
   10064 /**
   10065  * @brief Fills rectangles
   10066  *
   10067  * @param c The connection
   10068  * @param drawable The drawable (Window or Pixmap) to draw on.
   10069  * @param gc The graphics context to use.
   10070  * \n
   10071  * The following graphics context components are used: function, plane-mask,
   10072  * fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10073  * \n
   10074  * The following graphics context mode-dependent components are used:
   10075  * foreground, background, tile, stipple, tile-stipple-x-origin, and
   10076  * tile-stipple-y-origin.
   10077  * @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
   10078  * @param rectangles The rectangles to fill.
   10079  * @return A cookie
   10080  *
   10081  * Fills the specified rectangle(s) in the order listed in the array. For any
   10082  * given rectangle, each pixel is not drawn more than once. If rectangles
   10083  * intersect, the intersecting pixels are drawn multiple times.
   10084  *
   10085  * This form can be used only if the request will not cause
   10086  * a reply to be generated. Any returned error will be
   10087  * saved for handling by xcb_request_check().
   10088  */
   10089 xcb_void_cookie_t
   10090 xcb_poly_fill_rectangle_checked (xcb_connection_t      *c,
   10091                                  xcb_drawable_t         drawable,
   10092                                  xcb_gcontext_t         gc,
   10093                                  uint32_t               rectangles_len,
   10094                                  const xcb_rectangle_t *rectangles);
   10095 
   10096 /**
   10097  * @brief Fills rectangles
   10098  *
   10099  * @param c The connection
   10100  * @param drawable The drawable (Window or Pixmap) to draw on.
   10101  * @param gc The graphics context to use.
   10102  * \n
   10103  * The following graphics context components are used: function, plane-mask,
   10104  * fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10105  * \n
   10106  * The following graphics context mode-dependent components are used:
   10107  * foreground, background, tile, stipple, tile-stipple-x-origin, and
   10108  * tile-stipple-y-origin.
   10109  * @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
   10110  * @param rectangles The rectangles to fill.
   10111  * @return A cookie
   10112  *
   10113  * Fills the specified rectangle(s) in the order listed in the array. For any
   10114  * given rectangle, each pixel is not drawn more than once. If rectangles
   10115  * intersect, the intersecting pixels are drawn multiple times.
   10116  *
   10117  */
   10118 xcb_void_cookie_t
   10119 xcb_poly_fill_rectangle (xcb_connection_t      *c,
   10120                          xcb_drawable_t         drawable,
   10121                          xcb_gcontext_t         gc,
   10122                          uint32_t               rectangles_len,
   10123                          const xcb_rectangle_t *rectangles);
   10124 
   10125 xcb_rectangle_t *
   10126 xcb_poly_fill_rectangle_rectangles (const xcb_poly_fill_rectangle_request_t *R);
   10127 
   10128 int
   10129 xcb_poly_fill_rectangle_rectangles_length (const xcb_poly_fill_rectangle_request_t *R);
   10130 
   10131 xcb_rectangle_iterator_t
   10132 xcb_poly_fill_rectangle_rectangles_iterator (const xcb_poly_fill_rectangle_request_t *R);
   10133 
   10134 int
   10135 xcb_poly_fill_arc_sizeof (const void  *_buffer,
   10136                           uint32_t     arcs_len);
   10137 
   10138 /**
   10139  *
   10140  * @param c The connection
   10141  * @return A cookie
   10142  *
   10143  * Delivers a request to the X server.
   10144  *
   10145  * This form can be used only if the request will not cause
   10146  * a reply to be generated. Any returned error will be
   10147  * saved for handling by xcb_request_check().
   10148  */
   10149 xcb_void_cookie_t
   10150 xcb_poly_fill_arc_checked (xcb_connection_t *c,
   10151                            xcb_drawable_t    drawable,
   10152                            xcb_gcontext_t    gc,
   10153                            uint32_t          arcs_len,
   10154                            const xcb_arc_t  *arcs);
   10155 
   10156 /**
   10157  *
   10158  * @param c The connection
   10159  * @return A cookie
   10160  *
   10161  * Delivers a request to the X server.
   10162  *
   10163  */
   10164 xcb_void_cookie_t
   10165 xcb_poly_fill_arc (xcb_connection_t *c,
   10166                    xcb_drawable_t    drawable,
   10167                    xcb_gcontext_t    gc,
   10168                    uint32_t          arcs_len,
   10169                    const xcb_arc_t  *arcs);
   10170 
   10171 xcb_arc_t *
   10172 xcb_poly_fill_arc_arcs (const xcb_poly_fill_arc_request_t *R);
   10173 
   10174 int
   10175 xcb_poly_fill_arc_arcs_length (const xcb_poly_fill_arc_request_t *R);
   10176 
   10177 xcb_arc_iterator_t
   10178 xcb_poly_fill_arc_arcs_iterator (const xcb_poly_fill_arc_request_t *R);
   10179 
   10180 int
   10181 xcb_put_image_sizeof (const void  *_buffer,
   10182                       uint32_t     data_len);
   10183 
   10184 /**
   10185  *
   10186  * @param c The connection
   10187  * @return A cookie
   10188  *
   10189  * Delivers a request to the X server.
   10190  *
   10191  * This form can be used only if the request will not cause
   10192  * a reply to be generated. Any returned error will be
   10193  * saved for handling by xcb_request_check().
   10194  */
   10195 xcb_void_cookie_t
   10196 xcb_put_image_checked (xcb_connection_t *c,
   10197                        uint8_t           format,
   10198                        xcb_drawable_t    drawable,
   10199                        xcb_gcontext_t    gc,
   10200                        uint16_t          width,
   10201                        uint16_t          height,
   10202                        int16_t           dst_x,
   10203                        int16_t           dst_y,
   10204                        uint8_t           left_pad,
   10205                        uint8_t           depth,
   10206                        uint32_t          data_len,
   10207                        const uint8_t    *data);
   10208 
   10209 /**
   10210  *
   10211  * @param c The connection
   10212  * @return A cookie
   10213  *
   10214  * Delivers a request to the X server.
   10215  *
   10216  */
   10217 xcb_void_cookie_t
   10218 xcb_put_image (xcb_connection_t *c,
   10219                uint8_t           format,
   10220                xcb_drawable_t    drawable,
   10221                xcb_gcontext_t    gc,
   10222                uint16_t          width,
   10223                uint16_t          height,
   10224                int16_t           dst_x,
   10225                int16_t           dst_y,
   10226                uint8_t           left_pad,
   10227                uint8_t           depth,
   10228                uint32_t          data_len,
   10229                const uint8_t    *data);
   10230 
   10231 uint8_t *
   10232 xcb_put_image_data (const xcb_put_image_request_t *R);
   10233 
   10234 int
   10235 xcb_put_image_data_length (const xcb_put_image_request_t *R);
   10236 
   10237 xcb_generic_iterator_t
   10238 xcb_put_image_data_end (const xcb_put_image_request_t *R);
   10239 
   10240 int
   10241 xcb_get_image_sizeof (const void  *_buffer);
   10242 
   10243 /**
   10244  *
   10245  * @param c The connection
   10246  * @return A cookie
   10247  *
   10248  * Delivers a request to the X server.
   10249  *
   10250  */
   10251 xcb_get_image_cookie_t
   10252 xcb_get_image (xcb_connection_t *c,
   10253                uint8_t           format,
   10254                xcb_drawable_t    drawable,
   10255                int16_t           x,
   10256                int16_t           y,
   10257                uint16_t          width,
   10258                uint16_t          height,
   10259                uint32_t          plane_mask);
   10260 
   10261 /**
   10262  *
   10263  * @param c The connection
   10264  * @return A cookie
   10265  *
   10266  * Delivers a request to the X server.
   10267  *
   10268  * This form can be used only if the request will cause
   10269  * a reply to be generated. Any returned error will be
   10270  * placed in the event queue.
   10271  */
   10272 xcb_get_image_cookie_t
   10273 xcb_get_image_unchecked (xcb_connection_t *c,
   10274                          uint8_t           format,
   10275                          xcb_drawable_t    drawable,
   10276                          int16_t           x,
   10277                          int16_t           y,
   10278                          uint16_t          width,
   10279                          uint16_t          height,
   10280                          uint32_t          plane_mask);
   10281 
   10282 uint8_t *
   10283 xcb_get_image_data (const xcb_get_image_reply_t *R);
   10284 
   10285 int
   10286 xcb_get_image_data_length (const xcb_get_image_reply_t *R);
   10287 
   10288 xcb_generic_iterator_t
   10289 xcb_get_image_data_end (const xcb_get_image_reply_t *R);
   10290 
   10291 /**
   10292  * Return the reply
   10293  * @param c      The connection
   10294  * @param cookie The cookie
   10295  * @param e      The xcb_generic_error_t supplied
   10296  *
   10297  * Returns the reply of the request asked by
   10298  *
   10299  * The parameter @p e supplied to this function must be NULL if
   10300  * xcb_get_image_unchecked(). is used.
   10301  * Otherwise, it stores the error if any.
   10302  *
   10303  * The returned value must be freed by the caller using free().
   10304  */
   10305 xcb_get_image_reply_t *
   10306 xcb_get_image_reply (xcb_connection_t        *c,
   10307                      xcb_get_image_cookie_t   cookie  /**< */,
   10308                      xcb_generic_error_t    **e);
   10309 
   10310 int
   10311 xcb_poly_text_8_sizeof (const void  *_buffer,
   10312                         uint32_t     items_len);
   10313 
   10314 /**
   10315  *
   10316  * @param c The connection
   10317  * @return A cookie
   10318  *
   10319  * Delivers a request to the X server.
   10320  *
   10321  * This form can be used only if the request will not cause
   10322  * a reply to be generated. Any returned error will be
   10323  * saved for handling by xcb_request_check().
   10324  */
   10325 xcb_void_cookie_t
   10326 xcb_poly_text_8_checked (xcb_connection_t *c,
   10327                          xcb_drawable_t    drawable,
   10328                          xcb_gcontext_t    gc,
   10329                          int16_t           x,
   10330                          int16_t           y,
   10331                          uint32_t          items_len,
   10332                          const uint8_t    *items);
   10333 
   10334 /**
   10335  *
   10336  * @param c The connection
   10337  * @return A cookie
   10338  *
   10339  * Delivers a request to the X server.
   10340  *
   10341  */
   10342 xcb_void_cookie_t
   10343 xcb_poly_text_8 (xcb_connection_t *c,
   10344                  xcb_drawable_t    drawable,
   10345                  xcb_gcontext_t    gc,
   10346                  int16_t           x,
   10347                  int16_t           y,
   10348                  uint32_t          items_len,
   10349                  const uint8_t    *items);
   10350 
   10351 uint8_t *
   10352 xcb_poly_text_8_items (const xcb_poly_text_8_request_t *R);
   10353 
   10354 int
   10355 xcb_poly_text_8_items_length (const xcb_poly_text_8_request_t *R);
   10356 
   10357 xcb_generic_iterator_t
   10358 xcb_poly_text_8_items_end (const xcb_poly_text_8_request_t *R);
   10359 
   10360 int
   10361 xcb_poly_text_16_sizeof (const void  *_buffer,
   10362                          uint32_t     items_len);
   10363 
   10364 /**
   10365  *
   10366  * @param c The connection
   10367  * @return A cookie
   10368  *
   10369  * Delivers a request to the X server.
   10370  *
   10371  * This form can be used only if the request will not cause
   10372  * a reply to be generated. Any returned error will be
   10373  * saved for handling by xcb_request_check().
   10374  */
   10375 xcb_void_cookie_t
   10376 xcb_poly_text_16_checked (xcb_connection_t *c,
   10377                           xcb_drawable_t    drawable,
   10378                           xcb_gcontext_t    gc,
   10379                           int16_t           x,
   10380                           int16_t           y,
   10381                           uint32_t          items_len,
   10382                           const uint8_t    *items);
   10383 
   10384 /**
   10385  *
   10386  * @param c The connection
   10387  * @return A cookie
   10388  *
   10389  * Delivers a request to the X server.
   10390  *
   10391  */
   10392 xcb_void_cookie_t
   10393 xcb_poly_text_16 (xcb_connection_t *c,
   10394                   xcb_drawable_t    drawable,
   10395                   xcb_gcontext_t    gc,
   10396                   int16_t           x,
   10397                   int16_t           y,
   10398                   uint32_t          items_len,
   10399                   const uint8_t    *items);
   10400 
   10401 uint8_t *
   10402 xcb_poly_text_16_items (const xcb_poly_text_16_request_t *R);
   10403 
   10404 int
   10405 xcb_poly_text_16_items_length (const xcb_poly_text_16_request_t *R);
   10406 
   10407 xcb_generic_iterator_t
   10408 xcb_poly_text_16_items_end (const xcb_poly_text_16_request_t *R);
   10409 
   10410 int
   10411 xcb_image_text_8_sizeof (const void  *_buffer);
   10412 
   10413 /**
   10414  * @brief Draws text
   10415  *
   10416  * @param c The connection
   10417  * @param string_len The length of the \a string. Note that this parameter limited by 255 due to
   10418  * using 8 bits!
   10419  * @param drawable The drawable (Window or Pixmap) to draw text on.
   10420  * @param gc The graphics context to use.
   10421  * \n
   10422  * The following graphics context components are used: plane-mask, foreground,
   10423  * background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10424  * @param x The x coordinate of the first character, relative to the origin of \a drawable.
   10425  * @param y The y coordinate of the first character, relative to the origin of \a drawable.
   10426  * @param string The string to draw. Only the first 255 characters are relevant due to the data
   10427  * type of \a string_len.
   10428  * @return A cookie
   10429  *
   10430  * Fills the destination rectangle with the background pixel from \a gc, then
   10431  * paints the text with the foreground pixel from \a gc. The upper-left corner of
   10432  * the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
   10433  * the height is font-ascent + font-descent. The overall-width, font-ascent and
   10434  * font-descent are as returned by `xcb_query_text_extents` (TODO).
   10435  *
   10436  * Note that using X core fonts is deprecated (but still supported) in favor of
   10437  * client-side rendering using Xft.
   10438  *
   10439  * This form can be used only if the request will not cause
   10440  * a reply to be generated. Any returned error will be
   10441  * saved for handling by xcb_request_check().
   10442  */
   10443 xcb_void_cookie_t
   10444 xcb_image_text_8_checked (xcb_connection_t *c,
   10445                           uint8_t           string_len,
   10446                           xcb_drawable_t    drawable,
   10447                           xcb_gcontext_t    gc,
   10448                           int16_t           x,
   10449                           int16_t           y,
   10450                           const char       *string);
   10451 
   10452 /**
   10453  * @brief Draws text
   10454  *
   10455  * @param c The connection
   10456  * @param string_len The length of the \a string. Note that this parameter limited by 255 due to
   10457  * using 8 bits!
   10458  * @param drawable The drawable (Window or Pixmap) to draw text on.
   10459  * @param gc The graphics context to use.
   10460  * \n
   10461  * The following graphics context components are used: plane-mask, foreground,
   10462  * background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10463  * @param x The x coordinate of the first character, relative to the origin of \a drawable.
   10464  * @param y The y coordinate of the first character, relative to the origin of \a drawable.
   10465  * @param string The string to draw. Only the first 255 characters are relevant due to the data
   10466  * type of \a string_len.
   10467  * @return A cookie
   10468  *
   10469  * Fills the destination rectangle with the background pixel from \a gc, then
   10470  * paints the text with the foreground pixel from \a gc. The upper-left corner of
   10471  * the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
   10472  * the height is font-ascent + font-descent. The overall-width, font-ascent and
   10473  * font-descent are as returned by `xcb_query_text_extents` (TODO).
   10474  *
   10475  * Note that using X core fonts is deprecated (but still supported) in favor of
   10476  * client-side rendering using Xft.
   10477  *
   10478  */
   10479 xcb_void_cookie_t
   10480 xcb_image_text_8 (xcb_connection_t *c,
   10481                   uint8_t           string_len,
   10482                   xcb_drawable_t    drawable,
   10483                   xcb_gcontext_t    gc,
   10484                   int16_t           x,
   10485                   int16_t           y,
   10486                   const char       *string);
   10487 
   10488 char *
   10489 xcb_image_text_8_string (const xcb_image_text_8_request_t *R);
   10490 
   10491 int
   10492 xcb_image_text_8_string_length (const xcb_image_text_8_request_t *R);
   10493 
   10494 xcb_generic_iterator_t
   10495 xcb_image_text_8_string_end (const xcb_image_text_8_request_t *R);
   10496 
   10497 int
   10498 xcb_image_text_16_sizeof (const void  *_buffer);
   10499 
   10500 /**
   10501  * @brief Draws text
   10502  *
   10503  * @param c The connection
   10504  * @param string_len The length of the \a string in characters. Note that this parameter limited by
   10505  * 255 due to using 8 bits!
   10506  * @param drawable The drawable (Window or Pixmap) to draw text on.
   10507  * @param gc The graphics context to use.
   10508  * \n
   10509  * The following graphics context components are used: plane-mask, foreground,
   10510  * background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10511  * @param x The x coordinate of the first character, relative to the origin of \a drawable.
   10512  * @param y The y coordinate of the first character, relative to the origin of \a drawable.
   10513  * @param string The string to draw. Only the first 255 characters are relevant due to the data
   10514  * type of \a string_len. Every character uses 2 bytes (hence the 16 in this
   10515  * request's name).
   10516  * @return A cookie
   10517  *
   10518  * Fills the destination rectangle with the background pixel from \a gc, then
   10519  * paints the text with the foreground pixel from \a gc. The upper-left corner of
   10520  * the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
   10521  * the height is font-ascent + font-descent. The overall-width, font-ascent and
   10522  * font-descent are as returned by `xcb_query_text_extents` (TODO).
   10523  *
   10524  * Note that using X core fonts is deprecated (but still supported) in favor of
   10525  * client-side rendering using Xft.
   10526  *
   10527  * This form can be used only if the request will not cause
   10528  * a reply to be generated. Any returned error will be
   10529  * saved for handling by xcb_request_check().
   10530  */
   10531 xcb_void_cookie_t
   10532 xcb_image_text_16_checked (xcb_connection_t   *c,
   10533                            uint8_t             string_len,
   10534                            xcb_drawable_t      drawable,
   10535                            xcb_gcontext_t      gc,
   10536                            int16_t             x,
   10537                            int16_t             y,
   10538                            const xcb_char2b_t *string);
   10539 
   10540 /**
   10541  * @brief Draws text
   10542  *
   10543  * @param c The connection
   10544  * @param string_len The length of the \a string in characters. Note that this parameter limited by
   10545  * 255 due to using 8 bits!
   10546  * @param drawable The drawable (Window or Pixmap) to draw text on.
   10547  * @param gc The graphics context to use.
   10548  * \n
   10549  * The following graphics context components are used: plane-mask, foreground,
   10550  * background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
   10551  * @param x The x coordinate of the first character, relative to the origin of \a drawable.
   10552  * @param y The y coordinate of the first character, relative to the origin of \a drawable.
   10553  * @param string The string to draw. Only the first 255 characters are relevant due to the data
   10554  * type of \a string_len. Every character uses 2 bytes (hence the 16 in this
   10555  * request's name).
   10556  * @return A cookie
   10557  *
   10558  * Fills the destination rectangle with the background pixel from \a gc, then
   10559  * paints the text with the foreground pixel from \a gc. The upper-left corner of
   10560  * the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
   10561  * the height is font-ascent + font-descent. The overall-width, font-ascent and
   10562  * font-descent are as returned by `xcb_query_text_extents` (TODO).
   10563  *
   10564  * Note that using X core fonts is deprecated (but still supported) in favor of
   10565  * client-side rendering using Xft.
   10566  *
   10567  */
   10568 xcb_void_cookie_t
   10569 xcb_image_text_16 (xcb_connection_t   *c,
   10570                    uint8_t             string_len,
   10571                    xcb_drawable_t      drawable,
   10572                    xcb_gcontext_t      gc,
   10573                    int16_t             x,
   10574                    int16_t             y,
   10575                    const xcb_char2b_t *string);
   10576 
   10577 xcb_char2b_t *
   10578 xcb_image_text_16_string (const xcb_image_text_16_request_t *R);
   10579 
   10580 int
   10581 xcb_image_text_16_string_length (const xcb_image_text_16_request_t *R);
   10582 
   10583 xcb_char2b_iterator_t
   10584 xcb_image_text_16_string_iterator (const xcb_image_text_16_request_t *R);
   10585 
   10586 /**
   10587  *
   10588  * @param c The connection
   10589  * @return A cookie
   10590  *
   10591  * Delivers a request to the X server.
   10592  *
   10593  * This form can be used only if the request will not cause
   10594  * a reply to be generated. Any returned error will be
   10595  * saved for handling by xcb_request_check().
   10596  */
   10597 xcb_void_cookie_t
   10598 xcb_create_colormap_checked (xcb_connection_t *c,
   10599                              uint8_t           alloc,
   10600                              xcb_colormap_t    mid,
   10601                              xcb_window_t      window,
   10602                              xcb_visualid_t    visual);
   10603 
   10604 /**
   10605  *
   10606  * @param c The connection
   10607  * @return A cookie
   10608  *
   10609  * Delivers a request to the X server.
   10610  *
   10611  */
   10612 xcb_void_cookie_t
   10613 xcb_create_colormap (xcb_connection_t *c,
   10614                      uint8_t           alloc,
   10615                      xcb_colormap_t    mid,
   10616                      xcb_window_t      window,
   10617                      xcb_visualid_t    visual);
   10618 
   10619 /**
   10620  *
   10621  * @param c The connection
   10622  * @return A cookie
   10623  *
   10624  * Delivers a request to the X server.
   10625  *
   10626  * This form can be used only if the request will not cause
   10627  * a reply to be generated. Any returned error will be
   10628  * saved for handling by xcb_request_check().
   10629  */
   10630 xcb_void_cookie_t
   10631 xcb_free_colormap_checked (xcb_connection_t *c,
   10632                            xcb_colormap_t    cmap);
   10633 
   10634 /**
   10635  *
   10636  * @param c The connection
   10637  * @return A cookie
   10638  *
   10639  * Delivers a request to the X server.
   10640  *
   10641  */
   10642 xcb_void_cookie_t
   10643 xcb_free_colormap (xcb_connection_t *c,
   10644                    xcb_colormap_t    cmap);
   10645 
   10646 /**
   10647  *
   10648  * @param c The connection
   10649  * @return A cookie
   10650  *
   10651  * Delivers a request to the X server.
   10652  *
   10653  * This form can be used only if the request will not cause
   10654  * a reply to be generated. Any returned error will be
   10655  * saved for handling by xcb_request_check().
   10656  */
   10657 xcb_void_cookie_t
   10658 xcb_copy_colormap_and_free_checked (xcb_connection_t *c,
   10659                                     xcb_colormap_t    mid,
   10660                                     xcb_colormap_t    src_cmap);
   10661 
   10662 /**
   10663  *
   10664  * @param c The connection
   10665  * @return A cookie
   10666  *
   10667  * Delivers a request to the X server.
   10668  *
   10669  */
   10670 xcb_void_cookie_t
   10671 xcb_copy_colormap_and_free (xcb_connection_t *c,
   10672                             xcb_colormap_t    mid,
   10673                             xcb_colormap_t    src_cmap);
   10674 
   10675 /**
   10676  *
   10677  * @param c The connection
   10678  * @return A cookie
   10679  *
   10680  * Delivers a request to the X server.
   10681  *
   10682  * This form can be used only if the request will not cause
   10683  * a reply to be generated. Any returned error will be
   10684  * saved for handling by xcb_request_check().
   10685  */
   10686 xcb_void_cookie_t
   10687 xcb_install_colormap_checked (xcb_connection_t *c,
   10688                               xcb_colormap_t    cmap);
   10689 
   10690 /**
   10691  *
   10692  * @param c The connection
   10693  * @return A cookie
   10694  *
   10695  * Delivers a request to the X server.
   10696  *
   10697  */
   10698 xcb_void_cookie_t
   10699 xcb_install_colormap (xcb_connection_t *c,
   10700                       xcb_colormap_t    cmap);
   10701 
   10702 /**
   10703  *
   10704  * @param c The connection
   10705  * @return A cookie
   10706  *
   10707  * Delivers a request to the X server.
   10708  *
   10709  * This form can be used only if the request will not cause
   10710  * a reply to be generated. Any returned error will be
   10711  * saved for handling by xcb_request_check().
   10712  */
   10713 xcb_void_cookie_t
   10714 xcb_uninstall_colormap_checked (xcb_connection_t *c,
   10715                                 xcb_colormap_t    cmap);
   10716 
   10717 /**
   10718  *
   10719  * @param c The connection
   10720  * @return A cookie
   10721  *
   10722  * Delivers a request to the X server.
   10723  *
   10724  */
   10725 xcb_void_cookie_t
   10726 xcb_uninstall_colormap (xcb_connection_t *c,
   10727                         xcb_colormap_t    cmap);
   10728 
   10729 int
   10730 xcb_list_installed_colormaps_sizeof (const void  *_buffer);
   10731 
   10732 /**
   10733  *
   10734  * @param c The connection
   10735  * @return A cookie
   10736  *
   10737  * Delivers a request to the X server.
   10738  *
   10739  */
   10740 xcb_list_installed_colormaps_cookie_t
   10741 xcb_list_installed_colormaps (xcb_connection_t *c,
   10742                               xcb_window_t      window);
   10743 
   10744 /**
   10745  *
   10746  * @param c The connection
   10747  * @return A cookie
   10748  *
   10749  * Delivers a request to the X server.
   10750  *
   10751  * This form can be used only if the request will cause
   10752  * a reply to be generated. Any returned error will be
   10753  * placed in the event queue.
   10754  */
   10755 xcb_list_installed_colormaps_cookie_t
   10756 xcb_list_installed_colormaps_unchecked (xcb_connection_t *c,
   10757                                         xcb_window_t      window);
   10758 
   10759 xcb_colormap_t *
   10760 xcb_list_installed_colormaps_cmaps (const xcb_list_installed_colormaps_reply_t *R);
   10761 
   10762 int
   10763 xcb_list_installed_colormaps_cmaps_length (const xcb_list_installed_colormaps_reply_t *R);
   10764 
   10765 xcb_generic_iterator_t
   10766 xcb_list_installed_colormaps_cmaps_end (const xcb_list_installed_colormaps_reply_t *R);
   10767 
   10768 /**
   10769  * Return the reply
   10770  * @param c      The connection
   10771  * @param cookie The cookie
   10772  * @param e      The xcb_generic_error_t supplied
   10773  *
   10774  * Returns the reply of the request asked by
   10775  *
   10776  * The parameter @p e supplied to this function must be NULL if
   10777  * xcb_list_installed_colormaps_unchecked(). is used.
   10778  * Otherwise, it stores the error if any.
   10779  *
   10780  * The returned value must be freed by the caller using free().
   10781  */
   10782 xcb_list_installed_colormaps_reply_t *
   10783 xcb_list_installed_colormaps_reply (xcb_connection_t                       *c,
   10784                                     xcb_list_installed_colormaps_cookie_t   cookie  /**< */,
   10785                                     xcb_generic_error_t                   **e);
   10786 
   10787 /**
   10788  * @brief Allocate a color
   10789  *
   10790  * @param c The connection
   10791  * @param cmap TODO
   10792  * @param red The red value of your color.
   10793  * @param green The green value of your color.
   10794  * @param blue The blue value of your color.
   10795  * @return A cookie
   10796  *
   10797  * Allocates a read-only colormap entry corresponding to the closest RGB value
   10798  * supported by the hardware. If you are using TrueColor, you can take a shortcut
   10799  * and directly calculate the color pixel value to avoid the round trip. But, for
   10800  * example, on 16-bit color setups (VNC), you can easily get the closest supported
   10801  * RGB value to the RGB value you are specifying.
   10802  *
   10803  */
   10804 xcb_alloc_color_cookie_t
   10805 xcb_alloc_color (xcb_connection_t *c,
   10806                  xcb_colormap_t    cmap,
   10807                  uint16_t          red,
   10808                  uint16_t          green,
   10809                  uint16_t          blue);
   10810 
   10811 /**
   10812  * @brief Allocate a color
   10813  *
   10814  * @param c The connection
   10815  * @param cmap TODO
   10816  * @param red The red value of your color.
   10817  * @param green The green value of your color.
   10818  * @param blue The blue value of your color.
   10819  * @return A cookie
   10820  *
   10821  * Allocates a read-only colormap entry corresponding to the closest RGB value
   10822  * supported by the hardware. If you are using TrueColor, you can take a shortcut
   10823  * and directly calculate the color pixel value to avoid the round trip. But, for
   10824  * example, on 16-bit color setups (VNC), you can easily get the closest supported
   10825  * RGB value to the RGB value you are specifying.
   10826  *
   10827  * This form can be used only if the request will cause
   10828  * a reply to be generated. Any returned error will be
   10829  * placed in the event queue.
   10830  */
   10831 xcb_alloc_color_cookie_t
   10832 xcb_alloc_color_unchecked (xcb_connection_t *c,
   10833                            xcb_colormap_t    cmap,
   10834                            uint16_t          red,
   10835                            uint16_t          green,
   10836                            uint16_t          blue);
   10837 
   10838 /**
   10839  * Return the reply
   10840  * @param c      The connection
   10841  * @param cookie The cookie
   10842  * @param e      The xcb_generic_error_t supplied
   10843  *
   10844  * Returns the reply of the request asked by
   10845  *
   10846  * The parameter @p e supplied to this function must be NULL if
   10847  * xcb_alloc_color_unchecked(). is used.
   10848  * Otherwise, it stores the error if any.
   10849  *
   10850  * The returned value must be freed by the caller using free().
   10851  */
   10852 xcb_alloc_color_reply_t *
   10853 xcb_alloc_color_reply (xcb_connection_t          *c,
   10854                        xcb_alloc_color_cookie_t   cookie  /**< */,
   10855                        xcb_generic_error_t      **e);
   10856 
   10857 int
   10858 xcb_alloc_named_color_sizeof (const void  *_buffer);
   10859 
   10860 /**
   10861  *
   10862  * @param c The connection
   10863  * @return A cookie
   10864  *
   10865  * Delivers a request to the X server.
   10866  *
   10867  */
   10868 xcb_alloc_named_color_cookie_t
   10869 xcb_alloc_named_color (xcb_connection_t *c,
   10870                        xcb_colormap_t    cmap,
   10871                        uint16_t          name_len,
   10872                        const char       *name);
   10873 
   10874 /**
   10875  *
   10876  * @param c The connection
   10877  * @return A cookie
   10878  *
   10879  * Delivers a request to the X server.
   10880  *
   10881  * This form can be used only if the request will cause
   10882  * a reply to be generated. Any returned error will be
   10883  * placed in the event queue.
   10884  */
   10885 xcb_alloc_named_color_cookie_t
   10886 xcb_alloc_named_color_unchecked (xcb_connection_t *c,
   10887                                  xcb_colormap_t    cmap,
   10888                                  uint16_t          name_len,
   10889                                  const char       *name);
   10890 
   10891 /**
   10892  * Return the reply
   10893  * @param c      The connection
   10894  * @param cookie The cookie
   10895  * @param e      The xcb_generic_error_t supplied
   10896  *
   10897  * Returns the reply of the request asked by
   10898  *
   10899  * The parameter @p e supplied to this function must be NULL if
   10900  * xcb_alloc_named_color_unchecked(). is used.
   10901  * Otherwise, it stores the error if any.
   10902  *
   10903  * The returned value must be freed by the caller using free().
   10904  */
   10905 xcb_alloc_named_color_reply_t *
   10906 xcb_alloc_named_color_reply (xcb_connection_t                *c,
   10907                              xcb_alloc_named_color_cookie_t   cookie  /**< */,
   10908                              xcb_generic_error_t            **e);
   10909 
   10910 int
   10911 xcb_alloc_color_cells_sizeof (const void  *_buffer);
   10912 
   10913 /**
   10914  *
   10915  * @param c The connection
   10916  * @return A cookie
   10917  *
   10918  * Delivers a request to the X server.
   10919  *
   10920  */
   10921 xcb_alloc_color_cells_cookie_t
   10922 xcb_alloc_color_cells (xcb_connection_t *c,
   10923                        uint8_t           contiguous,
   10924                        xcb_colormap_t    cmap,
   10925                        uint16_t          colors,
   10926                        uint16_t          planes);
   10927 
   10928 /**
   10929  *
   10930  * @param c The connection
   10931  * @return A cookie
   10932  *
   10933  * Delivers a request to the X server.
   10934  *
   10935  * This form can be used only if the request will cause
   10936  * a reply to be generated. Any returned error will be
   10937  * placed in the event queue.
   10938  */
   10939 xcb_alloc_color_cells_cookie_t
   10940 xcb_alloc_color_cells_unchecked (xcb_connection_t *c,
   10941                                  uint8_t           contiguous,
   10942                                  xcb_colormap_t    cmap,
   10943                                  uint16_t          colors,
   10944                                  uint16_t          planes);
   10945 
   10946 uint32_t *
   10947 xcb_alloc_color_cells_pixels (const xcb_alloc_color_cells_reply_t *R);
   10948 
   10949 int
   10950 xcb_alloc_color_cells_pixels_length (const xcb_alloc_color_cells_reply_t *R);
   10951 
   10952 xcb_generic_iterator_t
   10953 xcb_alloc_color_cells_pixels_end (const xcb_alloc_color_cells_reply_t *R);
   10954 
   10955 uint32_t *
   10956 xcb_alloc_color_cells_masks (const xcb_alloc_color_cells_reply_t *R);
   10957 
   10958 int
   10959 xcb_alloc_color_cells_masks_length (const xcb_alloc_color_cells_reply_t *R);
   10960 
   10961 xcb_generic_iterator_t
   10962 xcb_alloc_color_cells_masks_end (const xcb_alloc_color_cells_reply_t *R);
   10963 
   10964 /**
   10965  * Return the reply
   10966  * @param c      The connection
   10967  * @param cookie The cookie
   10968  * @param e      The xcb_generic_error_t supplied
   10969  *
   10970  * Returns the reply of the request asked by
   10971  *
   10972  * The parameter @p e supplied to this function must be NULL if
   10973  * xcb_alloc_color_cells_unchecked(). is used.
   10974  * Otherwise, it stores the error if any.
   10975  *
   10976  * The returned value must be freed by the caller using free().
   10977  */
   10978 xcb_alloc_color_cells_reply_t *
   10979 xcb_alloc_color_cells_reply (xcb_connection_t                *c,
   10980                              xcb_alloc_color_cells_cookie_t   cookie  /**< */,
   10981                              xcb_generic_error_t            **e);
   10982 
   10983 int
   10984 xcb_alloc_color_planes_sizeof (const void  *_buffer);
   10985 
   10986 /**
   10987  *
   10988  * @param c The connection
   10989  * @return A cookie
   10990  *
   10991  * Delivers a request to the X server.
   10992  *
   10993  */
   10994 xcb_alloc_color_planes_cookie_t
   10995 xcb_alloc_color_planes (xcb_connection_t *c,
   10996                         uint8_t           contiguous,
   10997                         xcb_colormap_t    cmap,
   10998                         uint16_t          colors,
   10999                         uint16_t          reds,
   11000                         uint16_t          greens,
   11001                         uint16_t          blues);
   11002 
   11003 /**
   11004  *
   11005  * @param c The connection
   11006  * @return A cookie
   11007  *
   11008  * Delivers a request to the X server.
   11009  *
   11010  * This form can be used only if the request will cause
   11011  * a reply to be generated. Any returned error will be
   11012  * placed in the event queue.
   11013  */
   11014 xcb_alloc_color_planes_cookie_t
   11015 xcb_alloc_color_planes_unchecked (xcb_connection_t *c,
   11016                                   uint8_t           contiguous,
   11017                                   xcb_colormap_t    cmap,
   11018                                   uint16_t          colors,
   11019                                   uint16_t          reds,
   11020                                   uint16_t          greens,
   11021                                   uint16_t          blues);
   11022 
   11023 uint32_t *
   11024 xcb_alloc_color_planes_pixels (const xcb_alloc_color_planes_reply_t *R);
   11025 
   11026 int
   11027 xcb_alloc_color_planes_pixels_length (const xcb_alloc_color_planes_reply_t *R);
   11028 
   11029 xcb_generic_iterator_t
   11030 xcb_alloc_color_planes_pixels_end (const xcb_alloc_color_planes_reply_t *R);
   11031 
   11032 /**
   11033  * Return the reply
   11034  * @param c      The connection
   11035  * @param cookie The cookie
   11036  * @param e      The xcb_generic_error_t supplied
   11037  *
   11038  * Returns the reply of the request asked by
   11039  *
   11040  * The parameter @p e supplied to this function must be NULL if
   11041  * xcb_alloc_color_planes_unchecked(). is used.
   11042  * Otherwise, it stores the error if any.
   11043  *
   11044  * The returned value must be freed by the caller using free().
   11045  */
   11046 xcb_alloc_color_planes_reply_t *
   11047 xcb_alloc_color_planes_reply (xcb_connection_t                 *c,
   11048                               xcb_alloc_color_planes_cookie_t   cookie  /**< */,
   11049                               xcb_generic_error_t             **e);
   11050 
   11051 int
   11052 xcb_free_colors_sizeof (const void  *_buffer,
   11053                         uint32_t     pixels_len);
   11054 
   11055 /**
   11056  *
   11057  * @param c The connection
   11058  * @return A cookie
   11059  *
   11060  * Delivers a request to the X server.
   11061  *
   11062  * This form can be used only if the request will not cause
   11063  * a reply to be generated. Any returned error will be
   11064  * saved for handling by xcb_request_check().
   11065  */
   11066 xcb_void_cookie_t
   11067 xcb_free_colors_checked (xcb_connection_t *c,
   11068                          xcb_colormap_t    cmap,
   11069                          uint32_t          plane_mask,
   11070                          uint32_t          pixels_len,
   11071                          const uint32_t   *pixels);
   11072 
   11073 /**
   11074  *
   11075  * @param c The connection
   11076  * @return A cookie
   11077  *
   11078  * Delivers a request to the X server.
   11079  *
   11080  */
   11081 xcb_void_cookie_t
   11082 xcb_free_colors (xcb_connection_t *c,
   11083                  xcb_colormap_t    cmap,
   11084                  uint32_t          plane_mask,
   11085                  uint32_t          pixels_len,
   11086                  const uint32_t   *pixels);
   11087 
   11088 uint32_t *
   11089 xcb_free_colors_pixels (const xcb_free_colors_request_t *R);
   11090 
   11091 int
   11092 xcb_free_colors_pixels_length (const xcb_free_colors_request_t *R);
   11093 
   11094 xcb_generic_iterator_t
   11095 xcb_free_colors_pixels_end (const xcb_free_colors_request_t *R);
   11096 
   11097 /**
   11098  * Get the next element of the iterator
   11099  * @param i Pointer to a xcb_coloritem_iterator_t
   11100  *
   11101  * Get the next element in the iterator. The member rem is
   11102  * decreased by one. The member data points to the next
   11103  * element. The member index is increased by sizeof(xcb_coloritem_t)
   11104  */
   11105 void
   11106 xcb_coloritem_next (xcb_coloritem_iterator_t *i);
   11107 
   11108 /**
   11109  * Return the iterator pointing to the last element
   11110  * @param i An xcb_coloritem_iterator_t
   11111  * @return  The iterator pointing to the last element
   11112  *
   11113  * Set the current element in the iterator to the last element.
   11114  * The member rem is set to 0. The member data points to the
   11115  * last element.
   11116  */
   11117 xcb_generic_iterator_t
   11118 xcb_coloritem_end (xcb_coloritem_iterator_t i);
   11119 
   11120 int
   11121 xcb_store_colors_sizeof (const void  *_buffer,
   11122                          uint32_t     items_len);
   11123 
   11124 /**
   11125  *
   11126  * @param c The connection
   11127  * @return A cookie
   11128  *
   11129  * Delivers a request to the X server.
   11130  *
   11131  * This form can be used only if the request will not cause
   11132  * a reply to be generated. Any returned error will be
   11133  * saved for handling by xcb_request_check().
   11134  */
   11135 xcb_void_cookie_t
   11136 xcb_store_colors_checked (xcb_connection_t      *c,
   11137                           xcb_colormap_t         cmap,
   11138                           uint32_t               items_len,
   11139                           const xcb_coloritem_t *items);
   11140 
   11141 /**
   11142  *
   11143  * @param c The connection
   11144  * @return A cookie
   11145  *
   11146  * Delivers a request to the X server.
   11147  *
   11148  */
   11149 xcb_void_cookie_t
   11150 xcb_store_colors (xcb_connection_t      *c,
   11151                   xcb_colormap_t         cmap,
   11152                   uint32_t               items_len,
   11153                   const xcb_coloritem_t *items);
   11154 
   11155 xcb_coloritem_t *
   11156 xcb_store_colors_items (const xcb_store_colors_request_t *R);
   11157 
   11158 int
   11159 xcb_store_colors_items_length (const xcb_store_colors_request_t *R);
   11160 
   11161 xcb_coloritem_iterator_t
   11162 xcb_store_colors_items_iterator (const xcb_store_colors_request_t *R);
   11163 
   11164 int
   11165 xcb_store_named_color_sizeof (const void  *_buffer);
   11166 
   11167 /**
   11168  *
   11169  * @param c The connection
   11170  * @return A cookie
   11171  *
   11172  * Delivers a request to the X server.
   11173  *
   11174  * This form can be used only if the request will not cause
   11175  * a reply to be generated. Any returned error will be
   11176  * saved for handling by xcb_request_check().
   11177  */
   11178 xcb_void_cookie_t
   11179 xcb_store_named_color_checked (xcb_connection_t *c,
   11180                                uint8_t           flags,
   11181                                xcb_colormap_t    cmap,
   11182                                uint32_t          pixel,
   11183                                uint16_t          name_len,
   11184                                const char       *name);
   11185 
   11186 /**
   11187  *
   11188  * @param c The connection
   11189  * @return A cookie
   11190  *
   11191  * Delivers a request to the X server.
   11192  *
   11193  */
   11194 xcb_void_cookie_t
   11195 xcb_store_named_color (xcb_connection_t *c,
   11196                        uint8_t           flags,
   11197                        xcb_colormap_t    cmap,
   11198                        uint32_t          pixel,
   11199                        uint16_t          name_len,
   11200                        const char       *name);
   11201 
   11202 char *
   11203 xcb_store_named_color_name (const xcb_store_named_color_request_t *R);
   11204 
   11205 int
   11206 xcb_store_named_color_name_length (const xcb_store_named_color_request_t *R);
   11207 
   11208 xcb_generic_iterator_t
   11209 xcb_store_named_color_name_end (const xcb_store_named_color_request_t *R);
   11210 
   11211 /**
   11212  * Get the next element of the iterator
   11213  * @param i Pointer to a xcb_rgb_iterator_t
   11214  *
   11215  * Get the next element in the iterator. The member rem is
   11216  * decreased by one. The member data points to the next
   11217  * element. The member index is increased by sizeof(xcb_rgb_t)
   11218  */
   11219 void
   11220 xcb_rgb_next (xcb_rgb_iterator_t *i);
   11221 
   11222 /**
   11223  * Return the iterator pointing to the last element
   11224  * @param i An xcb_rgb_iterator_t
   11225  * @return  The iterator pointing to the last element
   11226  *
   11227  * Set the current element in the iterator to the last element.
   11228  * The member rem is set to 0. The member data points to the
   11229  * last element.
   11230  */
   11231 xcb_generic_iterator_t
   11232 xcb_rgb_end (xcb_rgb_iterator_t i);
   11233 
   11234 int
   11235 xcb_query_colors_sizeof (const void  *_buffer,
   11236                          uint32_t     pixels_len);
   11237 
   11238 /**
   11239  *
   11240  * @param c The connection
   11241  * @return A cookie
   11242  *
   11243  * Delivers a request to the X server.
   11244  *
   11245  */
   11246 xcb_query_colors_cookie_t
   11247 xcb_query_colors (xcb_connection_t *c,
   11248                   xcb_colormap_t    cmap,
   11249                   uint32_t          pixels_len,
   11250                   const uint32_t   *pixels);
   11251 
   11252 /**
   11253  *
   11254  * @param c The connection
   11255  * @return A cookie
   11256  *
   11257  * Delivers a request to the X server.
   11258  *
   11259  * This form can be used only if the request will cause
   11260  * a reply to be generated. Any returned error will be
   11261  * placed in the event queue.
   11262  */
   11263 xcb_query_colors_cookie_t
   11264 xcb_query_colors_unchecked (xcb_connection_t *c,
   11265                             xcb_colormap_t    cmap,
   11266                             uint32_t          pixels_len,
   11267                             const uint32_t   *pixels);
   11268 
   11269 xcb_rgb_t *
   11270 xcb_query_colors_colors (const xcb_query_colors_reply_t *R);
   11271 
   11272 int
   11273 xcb_query_colors_colors_length (const xcb_query_colors_reply_t *R);
   11274 
   11275 xcb_rgb_iterator_t
   11276 xcb_query_colors_colors_iterator (const xcb_query_colors_reply_t *R);
   11277 
   11278 /**
   11279  * Return the reply
   11280  * @param c      The connection
   11281  * @param cookie The cookie
   11282  * @param e      The xcb_generic_error_t supplied
   11283  *
   11284  * Returns the reply of the request asked by
   11285  *
   11286  * The parameter @p e supplied to this function must be NULL if
   11287  * xcb_query_colors_unchecked(). is used.
   11288  * Otherwise, it stores the error if any.
   11289  *
   11290  * The returned value must be freed by the caller using free().
   11291  */
   11292 xcb_query_colors_reply_t *
   11293 xcb_query_colors_reply (xcb_connection_t           *c,
   11294                         xcb_query_colors_cookie_t   cookie  /**< */,
   11295                         xcb_generic_error_t       **e);
   11296 
   11297 int
   11298 xcb_lookup_color_sizeof (const void  *_buffer);
   11299 
   11300 /**
   11301  *
   11302  * @param c The connection
   11303  * @return A cookie
   11304  *
   11305  * Delivers a request to the X server.
   11306  *
   11307  */
   11308 xcb_lookup_color_cookie_t
   11309 xcb_lookup_color (xcb_connection_t *c,
   11310                   xcb_colormap_t    cmap,
   11311                   uint16_t          name_len,
   11312                   const char       *name);
   11313 
   11314 /**
   11315  *
   11316  * @param c The connection
   11317  * @return A cookie
   11318  *
   11319  * Delivers a request to the X server.
   11320  *
   11321  * This form can be used only if the request will cause
   11322  * a reply to be generated. Any returned error will be
   11323  * placed in the event queue.
   11324  */
   11325 xcb_lookup_color_cookie_t
   11326 xcb_lookup_color_unchecked (xcb_connection_t *c,
   11327                             xcb_colormap_t    cmap,
   11328                             uint16_t          name_len,
   11329                             const char       *name);
   11330 
   11331 /**
   11332  * Return the reply
   11333  * @param c      The connection
   11334  * @param cookie The cookie
   11335  * @param e      The xcb_generic_error_t supplied
   11336  *
   11337  * Returns the reply of the request asked by
   11338  *
   11339  * The parameter @p e supplied to this function must be NULL if
   11340  * xcb_lookup_color_unchecked(). is used.
   11341  * Otherwise, it stores the error if any.
   11342  *
   11343  * The returned value must be freed by the caller using free().
   11344  */
   11345 xcb_lookup_color_reply_t *
   11346 xcb_lookup_color_reply (xcb_connection_t           *c,
   11347                         xcb_lookup_color_cookie_t   cookie  /**< */,
   11348                         xcb_generic_error_t       **e);
   11349 
   11350 /**
   11351  *
   11352  * @param c The connection
   11353  * @return A cookie
   11354  *
   11355  * Delivers a request to the X server.
   11356  *
   11357  * This form can be used only if the request will not cause
   11358  * a reply to be generated. Any returned error will be
   11359  * saved for handling by xcb_request_check().
   11360  */
   11361 xcb_void_cookie_t
   11362 xcb_create_cursor_checked (xcb_connection_t *c,
   11363                            xcb_cursor_t      cid,
   11364                            xcb_pixmap_t      source,
   11365                            xcb_pixmap_t      mask,
   11366                            uint16_t          fore_red,
   11367                            uint16_t          fore_green,
   11368                            uint16_t          fore_blue,
   11369                            uint16_t          back_red,
   11370                            uint16_t          back_green,
   11371                            uint16_t          back_blue,
   11372                            uint16_t          x,
   11373                            uint16_t          y);
   11374 
   11375 /**
   11376  *
   11377  * @param c The connection
   11378  * @return A cookie
   11379  *
   11380  * Delivers a request to the X server.
   11381  *
   11382  */
   11383 xcb_void_cookie_t
   11384 xcb_create_cursor (xcb_connection_t *c,
   11385                    xcb_cursor_t      cid,
   11386                    xcb_pixmap_t      source,
   11387                    xcb_pixmap_t      mask,
   11388                    uint16_t          fore_red,
   11389                    uint16_t          fore_green,
   11390                    uint16_t          fore_blue,
   11391                    uint16_t          back_red,
   11392                    uint16_t          back_green,
   11393                    uint16_t          back_blue,
   11394                    uint16_t          x,
   11395                    uint16_t          y);
   11396 
   11397 /**
   11398  * @brief create cursor
   11399  *
   11400  * @param c The connection
   11401  * @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
   11402  * @param source_font In which font to look for the cursor glyph.
   11403  * @param mask_font In which font to look for the mask glyph.
   11404  * @param source_char The glyph of \a source_font to use.
   11405  * @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
   11406  * which source pixels are displayed. All pixels which are set to 0 are not
   11407  * displayed.
   11408  * @param fore_red The red value of the foreground color.
   11409  * @param fore_green The green value of the foreground color.
   11410  * @param fore_blue The blue value of the foreground color.
   11411  * @param back_red The red value of the background color.
   11412  * @param back_green The green value of the background color.
   11413  * @param back_blue The blue value of the background color.
   11414  * @return A cookie
   11415  *
   11416  * Creates a cursor from a font glyph. X provides a set of standard cursor shapes
   11417  * in a special font named cursor. Applications are encouraged to use this
   11418  * interface for their cursors because the font can be customized for the
   11419  * individual display type.
   11420  *
   11421  * All pixels which are set to 1 in the source will use the foreground color (as
   11422  * specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
   11423  * will use the background color (as specified by \a back_red, \a back_green and
   11424  * \a back_blue).
   11425  *
   11426  * This form can be used only if the request will not cause
   11427  * a reply to be generated. Any returned error will be
   11428  * saved for handling by xcb_request_check().
   11429  */
   11430 xcb_void_cookie_t
   11431 xcb_create_glyph_cursor_checked (xcb_connection_t *c,
   11432                                  xcb_cursor_t      cid,
   11433                                  xcb_font_t        source_font,
   11434                                  xcb_font_t        mask_font,
   11435                                  uint16_t          source_char,
   11436                                  uint16_t          mask_char,
   11437                                  uint16_t          fore_red,
   11438                                  uint16_t          fore_green,
   11439                                  uint16_t          fore_blue,
   11440                                  uint16_t          back_red,
   11441                                  uint16_t          back_green,
   11442                                  uint16_t          back_blue);
   11443 
   11444 /**
   11445  * @brief create cursor
   11446  *
   11447  * @param c The connection
   11448  * @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
   11449  * @param source_font In which font to look for the cursor glyph.
   11450  * @param mask_font In which font to look for the mask glyph.
   11451  * @param source_char The glyph of \a source_font to use.
   11452  * @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
   11453  * which source pixels are displayed. All pixels which are set to 0 are not
   11454  * displayed.
   11455  * @param fore_red The red value of the foreground color.
   11456  * @param fore_green The green value of the foreground color.
   11457  * @param fore_blue The blue value of the foreground color.
   11458  * @param back_red The red value of the background color.
   11459  * @param back_green The green value of the background color.
   11460  * @param back_blue The blue value of the background color.
   11461  * @return A cookie
   11462  *
   11463  * Creates a cursor from a font glyph. X provides a set of standard cursor shapes
   11464  * in a special font named cursor. Applications are encouraged to use this
   11465  * interface for their cursors because the font can be customized for the
   11466  * individual display type.
   11467  *
   11468  * All pixels which are set to 1 in the source will use the foreground color (as
   11469  * specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
   11470  * will use the background color (as specified by \a back_red, \a back_green and
   11471  * \a back_blue).
   11472  *
   11473  */
   11474 xcb_void_cookie_t
   11475 xcb_create_glyph_cursor (xcb_connection_t *c,
   11476                          xcb_cursor_t      cid,
   11477                          xcb_font_t        source_font,
   11478                          xcb_font_t        mask_font,
   11479                          uint16_t          source_char,
   11480                          uint16_t          mask_char,
   11481                          uint16_t          fore_red,
   11482                          uint16_t          fore_green,
   11483                          uint16_t          fore_blue,
   11484                          uint16_t          back_red,
   11485                          uint16_t          back_green,
   11486                          uint16_t          back_blue);
   11487 
   11488 /**
   11489  * @brief Deletes a cursor
   11490  *
   11491  * @param c The connection
   11492  * @param cursor The cursor to destroy.
   11493  * @return A cookie
   11494  *
   11495  * Deletes the association between the cursor resource ID and the specified
   11496  * cursor. The cursor is freed when no other resource references it.
   11497  *
   11498  * This form can be used only if the request will not cause
   11499  * a reply to be generated. Any returned error will be
   11500  * saved for handling by xcb_request_check().
   11501  */
   11502 xcb_void_cookie_t
   11503 xcb_free_cursor_checked (xcb_connection_t *c,
   11504                          xcb_cursor_t      cursor);
   11505 
   11506 /**
   11507  * @brief Deletes a cursor
   11508  *
   11509  * @param c The connection
   11510  * @param cursor The cursor to destroy.
   11511  * @return A cookie
   11512  *
   11513  * Deletes the association between the cursor resource ID and the specified
   11514  * cursor. The cursor is freed when no other resource references it.
   11515  *
   11516  */
   11517 xcb_void_cookie_t
   11518 xcb_free_cursor (xcb_connection_t *c,
   11519                  xcb_cursor_t      cursor);
   11520 
   11521 /**
   11522  *
   11523  * @param c The connection
   11524  * @return A cookie
   11525  *
   11526  * Delivers a request to the X server.
   11527  *
   11528  * This form can be used only if the request will not cause
   11529  * a reply to be generated. Any returned error will be
   11530  * saved for handling by xcb_request_check().
   11531  */
   11532 xcb_void_cookie_t
   11533 xcb_recolor_cursor_checked (xcb_connection_t *c,
   11534                             xcb_cursor_t      cursor,
   11535                             uint16_t          fore_red,
   11536                             uint16_t          fore_green,
   11537                             uint16_t          fore_blue,
   11538                             uint16_t          back_red,
   11539                             uint16_t          back_green,
   11540                             uint16_t          back_blue);
   11541 
   11542 /**
   11543  *
   11544  * @param c The connection
   11545  * @return A cookie
   11546  *
   11547  * Delivers a request to the X server.
   11548  *
   11549  */
   11550 xcb_void_cookie_t
   11551 xcb_recolor_cursor (xcb_connection_t *c,
   11552                     xcb_cursor_t      cursor,
   11553                     uint16_t          fore_red,
   11554                     uint16_t          fore_green,
   11555                     uint16_t          fore_blue,
   11556                     uint16_t          back_red,
   11557                     uint16_t          back_green,
   11558                     uint16_t          back_blue);
   11559 
   11560 /**
   11561  *
   11562  * @param c The connection
   11563  * @return A cookie
   11564  *
   11565  * Delivers a request to the X server.
   11566  *
   11567  */
   11568 xcb_query_best_size_cookie_t
   11569 xcb_query_best_size (xcb_connection_t *c,
   11570                      uint8_t           _class,
   11571                      xcb_drawable_t    drawable,
   11572                      uint16_t          width,
   11573                      uint16_t          height);
   11574 
   11575 /**
   11576  *
   11577  * @param c The connection
   11578  * @return A cookie
   11579  *
   11580  * Delivers a request to the X server.
   11581  *
   11582  * This form can be used only if the request will cause
   11583  * a reply to be generated. Any returned error will be
   11584  * placed in the event queue.
   11585  */
   11586 xcb_query_best_size_cookie_t
   11587 xcb_query_best_size_unchecked (xcb_connection_t *c,
   11588                                uint8_t           _class,
   11589                                xcb_drawable_t    drawable,
   11590                                uint16_t          width,
   11591                                uint16_t          height);
   11592 
   11593 /**
   11594  * Return the reply
   11595  * @param c      The connection
   11596  * @param cookie The cookie
   11597  * @param e      The xcb_generic_error_t supplied
   11598  *
   11599  * Returns the reply of the request asked by
   11600  *
   11601  * The parameter @p e supplied to this function must be NULL if
   11602  * xcb_query_best_size_unchecked(). is used.
   11603  * Otherwise, it stores the error if any.
   11604  *
   11605  * The returned value must be freed by the caller using free().
   11606  */
   11607 xcb_query_best_size_reply_t *
   11608 xcb_query_best_size_reply (xcb_connection_t              *c,
   11609                            xcb_query_best_size_cookie_t   cookie  /**< */,
   11610                            xcb_generic_error_t          **e);
   11611 
   11612 int
   11613 xcb_query_extension_sizeof (const void  *_buffer);
   11614 
   11615 /**
   11616  * @brief check if extension is present
   11617  *
   11618  * @param c The connection
   11619  * @param name_len The length of \a name in bytes.
   11620  * @param name The name of the extension to query, for example "RANDR". This is case
   11621  * sensitive!
   11622  * @return A cookie
   11623  *
   11624  * Determines if the specified extension is present on this X11 server.
   11625  *
   11626  * Every extension has a unique `major_opcode` to identify requests, the minor
   11627  * opcodes and request formats are extension-specific. If the extension provides
   11628  * events and errors, the `first_event` and `first_error` fields in the reply are
   11629  * set accordingly.
   11630  *
   11631  * There should rarely be a need to use this request directly, XCB provides the
   11632  * `xcb_get_extension_data` function instead.
   11633  *
   11634  */
   11635 xcb_query_extension_cookie_t
   11636 xcb_query_extension (xcb_connection_t *c,
   11637                      uint16_t          name_len,
   11638                      const char       *name);
   11639 
   11640 /**
   11641  * @brief check if extension is present
   11642  *
   11643  * @param c The connection
   11644  * @param name_len The length of \a name in bytes.
   11645  * @param name The name of the extension to query, for example "RANDR". This is case
   11646  * sensitive!
   11647  * @return A cookie
   11648  *
   11649  * Determines if the specified extension is present on this X11 server.
   11650  *
   11651  * Every extension has a unique `major_opcode` to identify requests, the minor
   11652  * opcodes and request formats are extension-specific. If the extension provides
   11653  * events and errors, the `first_event` and `first_error` fields in the reply are
   11654  * set accordingly.
   11655  *
   11656  * There should rarely be a need to use this request directly, XCB provides the
   11657  * `xcb_get_extension_data` function instead.
   11658  *
   11659  * This form can be used only if the request will cause
   11660  * a reply to be generated. Any returned error will be
   11661  * placed in the event queue.
   11662  */
   11663 xcb_query_extension_cookie_t
   11664 xcb_query_extension_unchecked (xcb_connection_t *c,
   11665                                uint16_t          name_len,
   11666                                const char       *name);
   11667 
   11668 /**
   11669  * Return the reply
   11670  * @param c      The connection
   11671  * @param cookie The cookie
   11672  * @param e      The xcb_generic_error_t supplied
   11673  *
   11674  * Returns the reply of the request asked by
   11675  *
   11676  * The parameter @p e supplied to this function must be NULL if
   11677  * xcb_query_extension_unchecked(). is used.
   11678  * Otherwise, it stores the error if any.
   11679  *
   11680  * The returned value must be freed by the caller using free().
   11681  */
   11682 xcb_query_extension_reply_t *
   11683 xcb_query_extension_reply (xcb_connection_t              *c,
   11684                            xcb_query_extension_cookie_t   cookie  /**< */,
   11685                            xcb_generic_error_t          **e);
   11686 
   11687 int
   11688 xcb_list_extensions_sizeof (const void  *_buffer);
   11689 
   11690 /**
   11691  *
   11692  * @param c The connection
   11693  * @return A cookie
   11694  *
   11695  * Delivers a request to the X server.
   11696  *
   11697  */
   11698 xcb_list_extensions_cookie_t
   11699 xcb_list_extensions (xcb_connection_t *c);
   11700 
   11701 /**
   11702  *
   11703  * @param c The connection
   11704  * @return A cookie
   11705  *
   11706  * Delivers a request to the X server.
   11707  *
   11708  * This form can be used only if the request will cause
   11709  * a reply to be generated. Any returned error will be
   11710  * placed in the event queue.
   11711  */
   11712 xcb_list_extensions_cookie_t
   11713 xcb_list_extensions_unchecked (xcb_connection_t *c);
   11714 
   11715 int
   11716 xcb_list_extensions_names_length (const xcb_list_extensions_reply_t *R);
   11717 
   11718 xcb_str_iterator_t
   11719 xcb_list_extensions_names_iterator (const xcb_list_extensions_reply_t *R);
   11720 
   11721 /**
   11722  * Return the reply
   11723  * @param c      The connection
   11724  * @param cookie The cookie
   11725  * @param e      The xcb_generic_error_t supplied
   11726  *
   11727  * Returns the reply of the request asked by
   11728  *
   11729  * The parameter @p e supplied to this function must be NULL if
   11730  * xcb_list_extensions_unchecked(). is used.
   11731  * Otherwise, it stores the error if any.
   11732  *
   11733  * The returned value must be freed by the caller using free().
   11734  */
   11735 xcb_list_extensions_reply_t *
   11736 xcb_list_extensions_reply (xcb_connection_t              *c,
   11737                            xcb_list_extensions_cookie_t   cookie  /**< */,
   11738                            xcb_generic_error_t          **e);
   11739 
   11740 int
   11741 xcb_change_keyboard_mapping_sizeof (const void  *_buffer);
   11742 
   11743 /**
   11744  *
   11745  * @param c The connection
   11746  * @return A cookie
   11747  *
   11748  * Delivers a request to the X server.
   11749  *
   11750  * This form can be used only if the request will not cause
   11751  * a reply to be generated. Any returned error will be
   11752  * saved for handling by xcb_request_check().
   11753  */
   11754 xcb_void_cookie_t
   11755 xcb_change_keyboard_mapping_checked (xcb_connection_t   *c,
   11756                                      uint8_t             keycode_count,
   11757                                      xcb_keycode_t       first_keycode,
   11758                                      uint8_t             keysyms_per_keycode,
   11759                                      const xcb_keysym_t *keysyms);
   11760 
   11761 /**
   11762  *
   11763  * @param c The connection
   11764  * @return A cookie
   11765  *
   11766  * Delivers a request to the X server.
   11767  *
   11768  */
   11769 xcb_void_cookie_t
   11770 xcb_change_keyboard_mapping (xcb_connection_t   *c,
   11771                              uint8_t             keycode_count,
   11772                              xcb_keycode_t       first_keycode,
   11773                              uint8_t             keysyms_per_keycode,
   11774                              const xcb_keysym_t *keysyms);
   11775 
   11776 xcb_keysym_t *
   11777 xcb_change_keyboard_mapping_keysyms (const xcb_change_keyboard_mapping_request_t *R);
   11778 
   11779 int
   11780 xcb_change_keyboard_mapping_keysyms_length (const xcb_change_keyboard_mapping_request_t *R);
   11781 
   11782 xcb_generic_iterator_t
   11783 xcb_change_keyboard_mapping_keysyms_end (const xcb_change_keyboard_mapping_request_t *R);
   11784 
   11785 int
   11786 xcb_get_keyboard_mapping_sizeof (const void  *_buffer);
   11787 
   11788 /**
   11789  *
   11790  * @param c The connection
   11791  * @return A cookie
   11792  *
   11793  * Delivers a request to the X server.
   11794  *
   11795  */
   11796 xcb_get_keyboard_mapping_cookie_t
   11797 xcb_get_keyboard_mapping (xcb_connection_t *c,
   11798                           xcb_keycode_t     first_keycode,
   11799                           uint8_t           count);
   11800 
   11801 /**
   11802  *
   11803  * @param c The connection
   11804  * @return A cookie
   11805  *
   11806  * Delivers a request to the X server.
   11807  *
   11808  * This form can be used only if the request will cause
   11809  * a reply to be generated. Any returned error will be
   11810  * placed in the event queue.
   11811  */
   11812 xcb_get_keyboard_mapping_cookie_t
   11813 xcb_get_keyboard_mapping_unchecked (xcb_connection_t *c,
   11814                                     xcb_keycode_t     first_keycode,
   11815                                     uint8_t           count);
   11816 
   11817 xcb_keysym_t *
   11818 xcb_get_keyboard_mapping_keysyms (const xcb_get_keyboard_mapping_reply_t *R);
   11819 
   11820 int
   11821 xcb_get_keyboard_mapping_keysyms_length (const xcb_get_keyboard_mapping_reply_t *R);
   11822 
   11823 xcb_generic_iterator_t
   11824 xcb_get_keyboard_mapping_keysyms_end (const xcb_get_keyboard_mapping_reply_t *R);
   11825 
   11826 /**
   11827  * Return the reply
   11828  * @param c      The connection
   11829  * @param cookie The cookie
   11830  * @param e      The xcb_generic_error_t supplied
   11831  *
   11832  * Returns the reply of the request asked by
   11833  *
   11834  * The parameter @p e supplied to this function must be NULL if
   11835  * xcb_get_keyboard_mapping_unchecked(). is used.
   11836  * Otherwise, it stores the error if any.
   11837  *
   11838  * The returned value must be freed by the caller using free().
   11839  */
   11840 xcb_get_keyboard_mapping_reply_t *
   11841 xcb_get_keyboard_mapping_reply (xcb_connection_t                   *c,
   11842                                 xcb_get_keyboard_mapping_cookie_t   cookie  /**< */,
   11843                                 xcb_generic_error_t               **e);
   11844 
   11845 int
   11846 xcb_change_keyboard_control_value_list_serialize (void                                           **_buffer,
   11847                                                   uint32_t                                         value_mask,
   11848                                                   const xcb_change_keyboard_control_value_list_t  *_aux);
   11849 
   11850 int
   11851 xcb_change_keyboard_control_value_list_unpack (const void                                *_buffer,
   11852                                                uint32_t                                   value_mask,
   11853                                                xcb_change_keyboard_control_value_list_t  *_aux);
   11854 
   11855 int
   11856 xcb_change_keyboard_control_value_list_sizeof (const void  *_buffer,
   11857                                                uint32_t     value_mask);
   11858 
   11859 int
   11860 xcb_change_keyboard_control_sizeof (const void  *_buffer);
   11861 
   11862 /**
   11863  *
   11864  * @param c The connection
   11865  * @return A cookie
   11866  *
   11867  * Delivers a request to the X server.
   11868  *
   11869  * This form can be used only if the request will not cause
   11870  * a reply to be generated. Any returned error will be
   11871  * saved for handling by xcb_request_check().
   11872  */
   11873 xcb_void_cookie_t
   11874 xcb_change_keyboard_control_checked (xcb_connection_t *c,
   11875                                      uint32_t          value_mask,
   11876                                      const void       *value_list);
   11877 
   11878 /**
   11879  *
   11880  * @param c The connection
   11881  * @return A cookie
   11882  *
   11883  * Delivers a request to the X server.
   11884  *
   11885  */
   11886 xcb_void_cookie_t
   11887 xcb_change_keyboard_control (xcb_connection_t *c,
   11888                              uint32_t          value_mask,
   11889                              const void       *value_list);
   11890 
   11891 /**
   11892  *
   11893  * @param c The connection
   11894  * @return A cookie
   11895  *
   11896  * Delivers a request to the X server.
   11897  *
   11898  * This form can be used only if the request will not cause
   11899  * a reply to be generated. Any returned error will be
   11900  * saved for handling by xcb_request_check().
   11901  */
   11902 xcb_void_cookie_t
   11903 xcb_change_keyboard_control_aux_checked (xcb_connection_t                               *c,
   11904                                          uint32_t                                        value_mask,
   11905                                          const xcb_change_keyboard_control_value_list_t *value_list);
   11906 
   11907 /**
   11908  *
   11909  * @param c The connection
   11910  * @return A cookie
   11911  *
   11912  * Delivers a request to the X server.
   11913  *
   11914  */
   11915 xcb_void_cookie_t
   11916 xcb_change_keyboard_control_aux (xcb_connection_t                               *c,
   11917                                  uint32_t                                        value_mask,
   11918                                  const xcb_change_keyboard_control_value_list_t *value_list);
   11919 
   11920 void *
   11921 xcb_change_keyboard_control_value_list (const xcb_change_keyboard_control_request_t *R);
   11922 
   11923 /**
   11924  *
   11925  * @param c The connection
   11926  * @return A cookie
   11927  *
   11928  * Delivers a request to the X server.
   11929  *
   11930  */
   11931 xcb_get_keyboard_control_cookie_t
   11932 xcb_get_keyboard_control (xcb_connection_t *c);
   11933 
   11934 /**
   11935  *
   11936  * @param c The connection
   11937  * @return A cookie
   11938  *
   11939  * Delivers a request to the X server.
   11940  *
   11941  * This form can be used only if the request will cause
   11942  * a reply to be generated. Any returned error will be
   11943  * placed in the event queue.
   11944  */
   11945 xcb_get_keyboard_control_cookie_t
   11946 xcb_get_keyboard_control_unchecked (xcb_connection_t *c);
   11947 
   11948 /**
   11949  * Return the reply
   11950  * @param c      The connection
   11951  * @param cookie The cookie
   11952  * @param e      The xcb_generic_error_t supplied
   11953  *
   11954  * Returns the reply of the request asked by
   11955  *
   11956  * The parameter @p e supplied to this function must be NULL if
   11957  * xcb_get_keyboard_control_unchecked(). is used.
   11958  * Otherwise, it stores the error if any.
   11959  *
   11960  * The returned value must be freed by the caller using free().
   11961  */
   11962 xcb_get_keyboard_control_reply_t *
   11963 xcb_get_keyboard_control_reply (xcb_connection_t                   *c,
   11964                                 xcb_get_keyboard_control_cookie_t   cookie  /**< */,
   11965                                 xcb_generic_error_t               **e);
   11966 
   11967 /**
   11968  *
   11969  * @param c The connection
   11970  * @return A cookie
   11971  *
   11972  * Delivers a request to the X server.
   11973  *
   11974  * This form can be used only if the request will not cause
   11975  * a reply to be generated. Any returned error will be
   11976  * saved for handling by xcb_request_check().
   11977  */
   11978 xcb_void_cookie_t
   11979 xcb_bell_checked (xcb_connection_t *c,
   11980                   int8_t            percent);
   11981 
   11982 /**
   11983  *
   11984  * @param c The connection
   11985  * @return A cookie
   11986  *
   11987  * Delivers a request to the X server.
   11988  *
   11989  */
   11990 xcb_void_cookie_t
   11991 xcb_bell (xcb_connection_t *c,
   11992           int8_t            percent);
   11993 
   11994 /**
   11995  *
   11996  * @param c The connection
   11997  * @return A cookie
   11998  *
   11999  * Delivers a request to the X server.
   12000  *
   12001  * This form can be used only if the request will not cause
   12002  * a reply to be generated. Any returned error will be
   12003  * saved for handling by xcb_request_check().
   12004  */
   12005 xcb_void_cookie_t
   12006 xcb_change_pointer_control_checked (xcb_connection_t *c,
   12007                                     int16_t           acceleration_numerator,
   12008                                     int16_t           acceleration_denominator,
   12009                                     int16_t           threshold,
   12010                                     uint8_t           do_acceleration,
   12011                                     uint8_t           do_threshold);
   12012 
   12013 /**
   12014  *
   12015  * @param c The connection
   12016  * @return A cookie
   12017  *
   12018  * Delivers a request to the X server.
   12019  *
   12020  */
   12021 xcb_void_cookie_t
   12022 xcb_change_pointer_control (xcb_connection_t *c,
   12023                             int16_t           acceleration_numerator,
   12024                             int16_t           acceleration_denominator,
   12025                             int16_t           threshold,
   12026                             uint8_t           do_acceleration,
   12027                             uint8_t           do_threshold);
   12028 
   12029 /**
   12030  *
   12031  * @param c The connection
   12032  * @return A cookie
   12033  *
   12034  * Delivers a request to the X server.
   12035  *
   12036  */
   12037 xcb_get_pointer_control_cookie_t
   12038 xcb_get_pointer_control (xcb_connection_t *c);
   12039 
   12040 /**
   12041  *
   12042  * @param c The connection
   12043  * @return A cookie
   12044  *
   12045  * Delivers a request to the X server.
   12046  *
   12047  * This form can be used only if the request will cause
   12048  * a reply to be generated. Any returned error will be
   12049  * placed in the event queue.
   12050  */
   12051 xcb_get_pointer_control_cookie_t
   12052 xcb_get_pointer_control_unchecked (xcb_connection_t *c);
   12053 
   12054 /**
   12055  * Return the reply
   12056  * @param c      The connection
   12057  * @param cookie The cookie
   12058  * @param e      The xcb_generic_error_t supplied
   12059  *
   12060  * Returns the reply of the request asked by
   12061  *
   12062  * The parameter @p e supplied to this function must be NULL if
   12063  * xcb_get_pointer_control_unchecked(). is used.
   12064  * Otherwise, it stores the error if any.
   12065  *
   12066  * The returned value must be freed by the caller using free().
   12067  */
   12068 xcb_get_pointer_control_reply_t *
   12069 xcb_get_pointer_control_reply (xcb_connection_t                  *c,
   12070                                xcb_get_pointer_control_cookie_t   cookie  /**< */,
   12071                                xcb_generic_error_t              **e);
   12072 
   12073 /**
   12074  *
   12075  * @param c The connection
   12076  * @return A cookie
   12077  *
   12078  * Delivers a request to the X server.
   12079  *
   12080  * This form can be used only if the request will not cause
   12081  * a reply to be generated. Any returned error will be
   12082  * saved for handling by xcb_request_check().
   12083  */
   12084 xcb_void_cookie_t
   12085 xcb_set_screen_saver_checked (xcb_connection_t *c,
   12086                               int16_t           timeout,
   12087                               int16_t           interval,
   12088                               uint8_t           prefer_blanking,
   12089                               uint8_t           allow_exposures);
   12090 
   12091 /**
   12092  *
   12093  * @param c The connection
   12094  * @return A cookie
   12095  *
   12096  * Delivers a request to the X server.
   12097  *
   12098  */
   12099 xcb_void_cookie_t
   12100 xcb_set_screen_saver (xcb_connection_t *c,
   12101                       int16_t           timeout,
   12102                       int16_t           interval,
   12103                       uint8_t           prefer_blanking,
   12104                       uint8_t           allow_exposures);
   12105 
   12106 /**
   12107  *
   12108  * @param c The connection
   12109  * @return A cookie
   12110  *
   12111  * Delivers a request to the X server.
   12112  *
   12113  */
   12114 xcb_get_screen_saver_cookie_t
   12115 xcb_get_screen_saver (xcb_connection_t *c);
   12116 
   12117 /**
   12118  *
   12119  * @param c The connection
   12120  * @return A cookie
   12121  *
   12122  * Delivers a request to the X server.
   12123  *
   12124  * This form can be used only if the request will cause
   12125  * a reply to be generated. Any returned error will be
   12126  * placed in the event queue.
   12127  */
   12128 xcb_get_screen_saver_cookie_t
   12129 xcb_get_screen_saver_unchecked (xcb_connection_t *c);
   12130 
   12131 /**
   12132  * Return the reply
   12133  * @param c      The connection
   12134  * @param cookie The cookie
   12135  * @param e      The xcb_generic_error_t supplied
   12136  *
   12137  * Returns the reply of the request asked by
   12138  *
   12139  * The parameter @p e supplied to this function must be NULL if
   12140  * xcb_get_screen_saver_unchecked(). is used.
   12141  * Otherwise, it stores the error if any.
   12142  *
   12143  * The returned value must be freed by the caller using free().
   12144  */
   12145 xcb_get_screen_saver_reply_t *
   12146 xcb_get_screen_saver_reply (xcb_connection_t               *c,
   12147                             xcb_get_screen_saver_cookie_t   cookie  /**< */,
   12148                             xcb_generic_error_t           **e);
   12149 
   12150 int
   12151 xcb_change_hosts_sizeof (const void  *_buffer);
   12152 
   12153 /**
   12154  *
   12155  * @param c The connection
   12156  * @return A cookie
   12157  *
   12158  * Delivers a request to the X server.
   12159  *
   12160  * This form can be used only if the request will not cause
   12161  * a reply to be generated. Any returned error will be
   12162  * saved for handling by xcb_request_check().
   12163  */
   12164 xcb_void_cookie_t
   12165 xcb_change_hosts_checked (xcb_connection_t *c,
   12166                           uint8_t           mode,
   12167                           uint8_t           family,
   12168                           uint16_t          address_len,
   12169                           const uint8_t    *address);
   12170 
   12171 /**
   12172  *
   12173  * @param c The connection
   12174  * @return A cookie
   12175  *
   12176  * Delivers a request to the X server.
   12177  *
   12178  */
   12179 xcb_void_cookie_t
   12180 xcb_change_hosts (xcb_connection_t *c,
   12181                   uint8_t           mode,
   12182                   uint8_t           family,
   12183                   uint16_t          address_len,
   12184                   const uint8_t    *address);
   12185 
   12186 uint8_t *
   12187 xcb_change_hosts_address (const xcb_change_hosts_request_t *R);
   12188 
   12189 int
   12190 xcb_change_hosts_address_length (const xcb_change_hosts_request_t *R);
   12191 
   12192 xcb_generic_iterator_t
   12193 xcb_change_hosts_address_end (const xcb_change_hosts_request_t *R);
   12194 
   12195 int
   12196 xcb_host_sizeof (const void  *_buffer);
   12197 
   12198 uint8_t *
   12199 xcb_host_address (const xcb_host_t *R);
   12200 
   12201 int
   12202 xcb_host_address_length (const xcb_host_t *R);
   12203 
   12204 xcb_generic_iterator_t
   12205 xcb_host_address_end (const xcb_host_t *R);
   12206 
   12207 /**
   12208  * Get the next element of the iterator
   12209  * @param i Pointer to a xcb_host_iterator_t
   12210  *
   12211  * Get the next element in the iterator. The member rem is
   12212  * decreased by one. The member data points to the next
   12213  * element. The member index is increased by sizeof(xcb_host_t)
   12214  */
   12215 void
   12216 xcb_host_next (xcb_host_iterator_t *i);
   12217 
   12218 /**
   12219  * Return the iterator pointing to the last element
   12220  * @param i An xcb_host_iterator_t
   12221  * @return  The iterator pointing to the last element
   12222  *
   12223  * Set the current element in the iterator to the last element.
   12224  * The member rem is set to 0. The member data points to the
   12225  * last element.
   12226  */
   12227 xcb_generic_iterator_t
   12228 xcb_host_end (xcb_host_iterator_t i);
   12229 
   12230 int
   12231 xcb_list_hosts_sizeof (const void  *_buffer);
   12232 
   12233 /**
   12234  *
   12235  * @param c The connection
   12236  * @return A cookie
   12237  *
   12238  * Delivers a request to the X server.
   12239  *
   12240  */
   12241 xcb_list_hosts_cookie_t
   12242 xcb_list_hosts (xcb_connection_t *c);
   12243 
   12244 /**
   12245  *
   12246  * @param c The connection
   12247  * @return A cookie
   12248  *
   12249  * Delivers a request to the X server.
   12250  *
   12251  * This form can be used only if the request will cause
   12252  * a reply to be generated. Any returned error will be
   12253  * placed in the event queue.
   12254  */
   12255 xcb_list_hosts_cookie_t
   12256 xcb_list_hosts_unchecked (xcb_connection_t *c);
   12257 
   12258 int
   12259 xcb_list_hosts_hosts_length (const xcb_list_hosts_reply_t *R);
   12260 
   12261 xcb_host_iterator_t
   12262 xcb_list_hosts_hosts_iterator (const xcb_list_hosts_reply_t *R);
   12263 
   12264 /**
   12265  * Return the reply
   12266  * @param c      The connection
   12267  * @param cookie The cookie
   12268  * @param e      The xcb_generic_error_t supplied
   12269  *
   12270  * Returns the reply of the request asked by
   12271  *
   12272  * The parameter @p e supplied to this function must be NULL if
   12273  * xcb_list_hosts_unchecked(). is used.
   12274  * Otherwise, it stores the error if any.
   12275  *
   12276  * The returned value must be freed by the caller using free().
   12277  */
   12278 xcb_list_hosts_reply_t *
   12279 xcb_list_hosts_reply (xcb_connection_t         *c,
   12280                       xcb_list_hosts_cookie_t   cookie  /**< */,
   12281                       xcb_generic_error_t     **e);
   12282 
   12283 /**
   12284  *
   12285  * @param c The connection
   12286  * @return A cookie
   12287  *
   12288  * Delivers a request to the X server.
   12289  *
   12290  * This form can be used only if the request will not cause
   12291  * a reply to be generated. Any returned error will be
   12292  * saved for handling by xcb_request_check().
   12293  */
   12294 xcb_void_cookie_t
   12295 xcb_set_access_control_checked (xcb_connection_t *c,
   12296                                 uint8_t           mode);
   12297 
   12298 /**
   12299  *
   12300  * @param c The connection
   12301  * @return A cookie
   12302  *
   12303  * Delivers a request to the X server.
   12304  *
   12305  */
   12306 xcb_void_cookie_t
   12307 xcb_set_access_control (xcb_connection_t *c,
   12308                         uint8_t           mode);
   12309 
   12310 /**
   12311  *
   12312  * @param c The connection
   12313  * @return A cookie
   12314  *
   12315  * Delivers a request to the X server.
   12316  *
   12317  * This form can be used only if the request will not cause
   12318  * a reply to be generated. Any returned error will be
   12319  * saved for handling by xcb_request_check().
   12320  */
   12321 xcb_void_cookie_t
   12322 xcb_set_close_down_mode_checked (xcb_connection_t *c,
   12323                                  uint8_t           mode);
   12324 
   12325 /**
   12326  *
   12327  * @param c The connection
   12328  * @return A cookie
   12329  *
   12330  * Delivers a request to the X server.
   12331  *
   12332  */
   12333 xcb_void_cookie_t
   12334 xcb_set_close_down_mode (xcb_connection_t *c,
   12335                          uint8_t           mode);
   12336 
   12337 /**
   12338  * @brief kills a client
   12339  *
   12340  * @param c The connection
   12341  * @param resource Any resource belonging to the client (for example a Window), used to identify
   12342  * the client connection.
   12343  * \n
   12344  * The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
   12345  * that have terminated in `RetainTemporary` (TODO) are destroyed.
   12346  * @return A cookie
   12347  *
   12348  * Forces a close down of the client that created the specified \a resource.
   12349  *
   12350  * This form can be used only if the request will not cause
   12351  * a reply to be generated. Any returned error will be
   12352  * saved for handling by xcb_request_check().
   12353  */
   12354 xcb_void_cookie_t
   12355 xcb_kill_client_checked (xcb_connection_t *c,
   12356                          uint32_t          resource);
   12357 
   12358 /**
   12359  * @brief kills a client
   12360  *
   12361  * @param c The connection
   12362  * @param resource Any resource belonging to the client (for example a Window), used to identify
   12363  * the client connection.
   12364  * \n
   12365  * The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
   12366  * that have terminated in `RetainTemporary` (TODO) are destroyed.
   12367  * @return A cookie
   12368  *
   12369  * Forces a close down of the client that created the specified \a resource.
   12370  *
   12371  */
   12372 xcb_void_cookie_t
   12373 xcb_kill_client (xcb_connection_t *c,
   12374                  uint32_t          resource);
   12375 
   12376 int
   12377 xcb_rotate_properties_sizeof (const void  *_buffer);
   12378 
   12379 /**
   12380  *
   12381  * @param c The connection
   12382  * @return A cookie
   12383  *
   12384  * Delivers a request to the X server.
   12385  *
   12386  * This form can be used only if the request will not cause
   12387  * a reply to be generated. Any returned error will be
   12388  * saved for handling by xcb_request_check().
   12389  */
   12390 xcb_void_cookie_t
   12391 xcb_rotate_properties_checked (xcb_connection_t *c,
   12392                                xcb_window_t      window,
   12393                                uint16_t          atoms_len,
   12394                                int16_t           delta,
   12395                                const xcb_atom_t *atoms);
   12396 
   12397 /**
   12398  *
   12399  * @param c The connection
   12400  * @return A cookie
   12401  *
   12402  * Delivers a request to the X server.
   12403  *
   12404  */
   12405 xcb_void_cookie_t
   12406 xcb_rotate_properties (xcb_connection_t *c,
   12407                        xcb_window_t      window,
   12408                        uint16_t          atoms_len,
   12409                        int16_t           delta,
   12410                        const xcb_atom_t *atoms);
   12411 
   12412 xcb_atom_t *
   12413 xcb_rotate_properties_atoms (const xcb_rotate_properties_request_t *R);
   12414 
   12415 int
   12416 xcb_rotate_properties_atoms_length (const xcb_rotate_properties_request_t *R);
   12417 
   12418 xcb_generic_iterator_t
   12419 xcb_rotate_properties_atoms_end (const xcb_rotate_properties_request_t *R);
   12420 
   12421 /**
   12422  *
   12423  * @param c The connection
   12424  * @return A cookie
   12425  *
   12426  * Delivers a request to the X server.
   12427  *
   12428  * This form can be used only if the request will not cause
   12429  * a reply to be generated. Any returned error will be
   12430  * saved for handling by xcb_request_check().
   12431  */
   12432 xcb_void_cookie_t
   12433 xcb_force_screen_saver_checked (xcb_connection_t *c,
   12434                                 uint8_t           mode);
   12435 
   12436 /**
   12437  *
   12438  * @param c The connection
   12439  * @return A cookie
   12440  *
   12441  * Delivers a request to the X server.
   12442  *
   12443  */
   12444 xcb_void_cookie_t
   12445 xcb_force_screen_saver (xcb_connection_t *c,
   12446                         uint8_t           mode);
   12447 
   12448 int
   12449 xcb_set_pointer_mapping_sizeof (const void  *_buffer);
   12450 
   12451 /**
   12452  *
   12453  * @param c The connection
   12454  * @return A cookie
   12455  *
   12456  * Delivers a request to the X server.
   12457  *
   12458  */
   12459 xcb_set_pointer_mapping_cookie_t
   12460 xcb_set_pointer_mapping (xcb_connection_t *c,
   12461                          uint8_t           map_len,
   12462                          const uint8_t    *map);
   12463 
   12464 /**
   12465  *
   12466  * @param c The connection
   12467  * @return A cookie
   12468  *
   12469  * Delivers a request to the X server.
   12470  *
   12471  * This form can be used only if the request will cause
   12472  * a reply to be generated. Any returned error will be
   12473  * placed in the event queue.
   12474  */
   12475 xcb_set_pointer_mapping_cookie_t
   12476 xcb_set_pointer_mapping_unchecked (xcb_connection_t *c,
   12477                                    uint8_t           map_len,
   12478                                    const uint8_t    *map);
   12479 
   12480 /**
   12481  * Return the reply
   12482  * @param c      The connection
   12483  * @param cookie The cookie
   12484  * @param e      The xcb_generic_error_t supplied
   12485  *
   12486  * Returns the reply of the request asked by
   12487  *
   12488  * The parameter @p e supplied to this function must be NULL if
   12489  * xcb_set_pointer_mapping_unchecked(). is used.
   12490  * Otherwise, it stores the error if any.
   12491  *
   12492  * The returned value must be freed by the caller using free().
   12493  */
   12494 xcb_set_pointer_mapping_reply_t *
   12495 xcb_set_pointer_mapping_reply (xcb_connection_t                  *c,
   12496                                xcb_set_pointer_mapping_cookie_t   cookie  /**< */,
   12497                                xcb_generic_error_t              **e);
   12498 
   12499 int
   12500 xcb_get_pointer_mapping_sizeof (const void  *_buffer);
   12501 
   12502 /**
   12503  *
   12504  * @param c The connection
   12505  * @return A cookie
   12506  *
   12507  * Delivers a request to the X server.
   12508  *
   12509  */
   12510 xcb_get_pointer_mapping_cookie_t
   12511 xcb_get_pointer_mapping (xcb_connection_t *c);
   12512 
   12513 /**
   12514  *
   12515  * @param c The connection
   12516  * @return A cookie
   12517  *
   12518  * Delivers a request to the X server.
   12519  *
   12520  * This form can be used only if the request will cause
   12521  * a reply to be generated. Any returned error will be
   12522  * placed in the event queue.
   12523  */
   12524 xcb_get_pointer_mapping_cookie_t
   12525 xcb_get_pointer_mapping_unchecked (xcb_connection_t *c);
   12526 
   12527 uint8_t *
   12528 xcb_get_pointer_mapping_map (const xcb_get_pointer_mapping_reply_t *R);
   12529 
   12530 int
   12531 xcb_get_pointer_mapping_map_length (const xcb_get_pointer_mapping_reply_t *R);
   12532 
   12533 xcb_generic_iterator_t
   12534 xcb_get_pointer_mapping_map_end (const xcb_get_pointer_mapping_reply_t *R);
   12535 
   12536 /**
   12537  * Return the reply
   12538  * @param c      The connection
   12539  * @param cookie The cookie
   12540  * @param e      The xcb_generic_error_t supplied
   12541  *
   12542  * Returns the reply of the request asked by
   12543  *
   12544  * The parameter @p e supplied to this function must be NULL if
   12545  * xcb_get_pointer_mapping_unchecked(). is used.
   12546  * Otherwise, it stores the error if any.
   12547  *
   12548  * The returned value must be freed by the caller using free().
   12549  */
   12550 xcb_get_pointer_mapping_reply_t *
   12551 xcb_get_pointer_mapping_reply (xcb_connection_t                  *c,
   12552                                xcb_get_pointer_mapping_cookie_t   cookie  /**< */,
   12553                                xcb_generic_error_t              **e);
   12554 
   12555 int
   12556 xcb_set_modifier_mapping_sizeof (const void  *_buffer);
   12557 
   12558 /**
   12559  *
   12560  * @param c The connection
   12561  * @return A cookie
   12562  *
   12563  * Delivers a request to the X server.
   12564  *
   12565  */
   12566 xcb_set_modifier_mapping_cookie_t
   12567 xcb_set_modifier_mapping (xcb_connection_t    *c,
   12568                           uint8_t              keycodes_per_modifier,
   12569                           const xcb_keycode_t *keycodes);
   12570 
   12571 /**
   12572  *
   12573  * @param c The connection
   12574  * @return A cookie
   12575  *
   12576  * Delivers a request to the X server.
   12577  *
   12578  * This form can be used only if the request will cause
   12579  * a reply to be generated. Any returned error will be
   12580  * placed in the event queue.
   12581  */
   12582 xcb_set_modifier_mapping_cookie_t
   12583 xcb_set_modifier_mapping_unchecked (xcb_connection_t    *c,
   12584                                     uint8_t              keycodes_per_modifier,
   12585                                     const xcb_keycode_t *keycodes);
   12586 
   12587 /**
   12588  * Return the reply
   12589  * @param c      The connection
   12590  * @param cookie The cookie
   12591  * @param e      The xcb_generic_error_t supplied
   12592  *
   12593  * Returns the reply of the request asked by
   12594  *
   12595  * The parameter @p e supplied to this function must be NULL if
   12596  * xcb_set_modifier_mapping_unchecked(). is used.
   12597  * Otherwise, it stores the error if any.
   12598  *
   12599  * The returned value must be freed by the caller using free().
   12600  */
   12601 xcb_set_modifier_mapping_reply_t *
   12602 xcb_set_modifier_mapping_reply (xcb_connection_t                   *c,
   12603                                 xcb_set_modifier_mapping_cookie_t   cookie  /**< */,
   12604                                 xcb_generic_error_t               **e);
   12605 
   12606 int
   12607 xcb_get_modifier_mapping_sizeof (const void  *_buffer);
   12608 
   12609 /**
   12610  *
   12611  * @param c The connection
   12612  * @return A cookie
   12613  *
   12614  * Delivers a request to the X server.
   12615  *
   12616  */
   12617 xcb_get_modifier_mapping_cookie_t
   12618 xcb_get_modifier_mapping (xcb_connection_t *c);
   12619 
   12620 /**
   12621  *
   12622  * @param c The connection
   12623  * @return A cookie
   12624  *
   12625  * Delivers a request to the X server.
   12626  *
   12627  * This form can be used only if the request will cause
   12628  * a reply to be generated. Any returned error will be
   12629  * placed in the event queue.
   12630  */
   12631 xcb_get_modifier_mapping_cookie_t
   12632 xcb_get_modifier_mapping_unchecked (xcb_connection_t *c);
   12633 
   12634 xcb_keycode_t *
   12635 xcb_get_modifier_mapping_keycodes (const xcb_get_modifier_mapping_reply_t *R);
   12636 
   12637 int
   12638 xcb_get_modifier_mapping_keycodes_length (const xcb_get_modifier_mapping_reply_t *R);
   12639 
   12640 xcb_generic_iterator_t
   12641 xcb_get_modifier_mapping_keycodes_end (const xcb_get_modifier_mapping_reply_t *R);
   12642 
   12643 /**
   12644  * Return the reply
   12645  * @param c      The connection
   12646  * @param cookie The cookie
   12647  * @param e      The xcb_generic_error_t supplied
   12648  *
   12649  * Returns the reply of the request asked by
   12650  *
   12651  * The parameter @p e supplied to this function must be NULL if
   12652  * xcb_get_modifier_mapping_unchecked(). is used.
   12653  * Otherwise, it stores the error if any.
   12654  *
   12655  * The returned value must be freed by the caller using free().
   12656  */
   12657 xcb_get_modifier_mapping_reply_t *
   12658 xcb_get_modifier_mapping_reply (xcb_connection_t                   *c,
   12659                                 xcb_get_modifier_mapping_cookie_t   cookie  /**< */,
   12660                                 xcb_generic_error_t               **e);
   12661 
   12662 /**
   12663  *
   12664  * @param c The connection
   12665  * @return A cookie
   12666  *
   12667  * Delivers a request to the X server.
   12668  *
   12669  * This form can be used only if the request will not cause
   12670  * a reply to be generated. Any returned error will be
   12671  * saved for handling by xcb_request_check().
   12672  */
   12673 xcb_void_cookie_t
   12674 xcb_no_operation_checked (xcb_connection_t *c);
   12675 
   12676 /**
   12677  *
   12678  * @param c The connection
   12679  * @return A cookie
   12680  *
   12681  * Delivers a request to the X server.
   12682  *
   12683  */
   12684 xcb_void_cookie_t
   12685 xcb_no_operation (xcb_connection_t *c);
   12686 
   12687 
   12688 #ifdef __cplusplus
   12689 }
   12690 #endif
   12691 
   12692 #endif
   12693 
   12694 /**
   12695  * @}
   12696  */
   12697