# {.deadCodeElim: on.}

# type
#   xcb_extension_t* {.bycopy.} = object
#     name*: cstring
#     global_id*: cint

# const
#   XCB_BIGREQUESTS_MAJOR_VERSION* = 0
#   XCB_BIGREQUESTS_MINOR_VERSION* = 0

# var xcb_big_requests_id*: xcb_extension_t

# ## *
# ##  @brief xcb_big_requests_enable_cookie_t
# ##

# type
#   xcb_big_requests_enable_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_big_requests_enable.

# const
#   XCB_BIG_REQUESTS_ENABLE* = 0

# ## *
# ##  @brief xcb_big_requests_enable_request_t
# ##

# type
#   xcb_big_requests_enable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_big_requests_enable_reply_t
# ##

# type
#   xcb_big_requests_enable_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     maximum_request_length*: uint32


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# #proc xcb_big_requests_enable*(c: ptr xcb_connection_t): xcb_big_requests_enable_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# #proc xcb_big_requests_enable_unchecked*(c: ptr xcb_connection_t): xcb_big_requests_enable_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_big_requests_enable_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# # proc xcb_big_requests_enable_reply*(c: ptr xcb_connection_t; cookie: xcb_big_requests_enable_cookie_t; ## *<
# #                                    e: ptr ptr xcb_generic_error_t): ptr xcb_big_requests_enable_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from composite.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Composite_API XCB Composite API
# ##  @brief Composite XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto, xfixes

# const
#   XCB_COMPOSITE_MAJOR_VERSION* = 0
#   XCB_COMPOSITE_MINOR_VERSION* = 4

# var xcb_composite_id*: xcb_extension_t

# type
#   xcb_composite_redirect_t* = enum
#     XCB_COMPOSITE_REDIRECT_AUTOMATIC = 0, XCB_COMPOSITE_REDIRECT_MANUAL = 1


# ## *
# ##  @brief xcb_composite_query_version_cookie_t
# ##

# type
#   xcb_composite_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_composite_query_version.

# const
#   XCB_COMPOSITE_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_composite_query_version_request_t
# ##

# type
#   xcb_composite_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint32
#     client_minor_version*: uint32


# ## *
# ##  @brief xcb_composite_query_version_reply_t
# ##

# type
#   xcb_composite_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_composite_redirect_window.

# const
#   XCB_COMPOSITE_REDIRECT_WINDOW* = 1

# ## *
# ##  @brief xcb_composite_redirect_window_request_t
# ##

# type
#   xcb_composite_redirect_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     update*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_composite_redirect_subwindows.

# const
#   XCB_COMPOSITE_REDIRECT_SUBWINDOWS* = 2

# ## *
# ##  @brief xcb_composite_redirect_subwindows_request_t
# ##

# type
#   xcb_composite_redirect_subwindows_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     update*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_composite_unredirect_window.

# const
#   XCB_COMPOSITE_UNREDIRECT_WINDOW* = 3

# ## *
# ##  @brief xcb_composite_unredirect_window_request_t
# ##

# type
#   xcb_composite_unredirect_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     update*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_composite_unredirect_subwindows.

# const
#   XCB_COMPOSITE_UNREDIRECT_SUBWINDOWS* = 4

# ## *
# ##  @brief xcb_composite_unredirect_subwindows_request_t
# ##

# type
#   xcb_composite_unredirect_subwindows_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     update*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_composite_create_region_from_border_clip.

# const
#   XCB_COMPOSITE_CREATE_REGION_FROM_BORDER_CLIP* = 5

# ## *
# ##  @brief xcb_composite_create_region_from_border_clip_request_t
# ##

# type
#   xcb_composite_create_region_from_border_clip_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     window*: xcb_window_t


# ## * Opcode for xcb_composite_name_window_pixmap.

# const
#   XCB_COMPOSITE_NAME_WINDOW_PIXMAP* = 6

# ## *
# ##  @brief xcb_composite_name_window_pixmap_request_t
# ##

# type
#   xcb_composite_name_window_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     pixmap*: xcb_pixmap_t


# ## *
# ##  @brief xcb_composite_get_overlay_window_cookie_t
# ##

# type
#   xcb_composite_get_overlay_window_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_composite_get_overlay_window.

# const
#   XCB_COMPOSITE_GET_OVERLAY_WINDOW* = 7

# ## *
# ##  @brief xcb_composite_get_overlay_window_request_t
# ##

# type
#   xcb_composite_get_overlay_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_composite_get_overlay_window_reply_t
# ##

# type
#   xcb_composite_get_overlay_window_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     overlay_win*: xcb_window_t
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_composite_release_overlay_window.

# const
#   XCB_COMPOSITE_RELEASE_OVERLAY_WINDOW* = 8

# ## *
# ##  @brief xcb_composite_release_overlay_window_request_t
# ##

# type
#   xcb_composite_release_overlay_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_query_version*(c: ptr xcb_connection_t;
#                                  client_major_version: uint32;
#                                  client_minor_version: uint32): xcb_composite_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_composite_query_version_unchecked*(c: ptr xcb_connection_t;
#     client_major_version: uint32; client_minor_version: uint32): xcb_composite_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_composite_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_composite_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_composite_query_version_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_composite_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_redirect_window_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_redirect_window*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                    update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_redirect_subwindows_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_redirect_subwindows*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_unredirect_window_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_unredirect_window*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_unredirect_subwindows_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_unredirect_subwindows*(c: ptr xcb_connection_t;
#     window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_create_region_from_border_clip_checked*(
#     c: ptr xcb_connection_t; region: xcb_xfixes_region_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_create_region_from_border_clip*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_name_window_pixmap_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_name_window_pixmap*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_get_overlay_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_composite_get_overlay_window_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_composite_get_overlay_window_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_composite_get_overlay_window_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_composite_get_overlay_window_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_composite_get_overlay_window_reply*(c: ptr xcb_connection_t; cookie: xcb_composite_get_overlay_window_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_composite_get_overlay_window_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_composite_release_overlay_window_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_composite_release_overlay_window*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from damage.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Damage_API XCB Damage API
# ##  @brief Damage XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto, xfixes

# const
#   XCB_DAMAGE_MAJOR_VERSION* = 1
#   XCB_DAMAGE_MINOR_VERSION* = 1

# var xcb_damage_id*: xcb_extension_t

# type
#   xcb_damage_damage_t* = uint32

# ## *
# ##  @brief xcb_damage_damage_iterator_t
# ##

# type
#   xcb_damage_damage_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_damage_damage_t
#     rem*: cint
#     index*: cint

#   xcb_damage_report_level_t* = enum
#     XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES = 0,
#     XCB_DAMAGE_REPORT_LEVEL_DELTA_RECTANGLES = 1,
#     XCB_DAMAGE_REPORT_LEVEL_BOUNDING_BOX = 2, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY = 3


# ## * Opcode for xcb_damage_bad_damage.

# const
#   XCB_DAMAGE_BAD_DAMAGE* = 0

# ## *
# ##  @brief xcb_damage_bad_damage_error_t
# ##

# type
#   xcb_damage_bad_damage_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## *
# ##  @brief xcb_damage_query_version_cookie_t
# ##

# type
#   xcb_damage_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_damage_query_version.

# const
#   XCB_DAMAGE_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_damage_query_version_request_t
# ##

# type
#   xcb_damage_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint32
#     client_minor_version*: uint32


# ## *
# ##  @brief xcb_damage_query_version_reply_t
# ##

# type
#   xcb_damage_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_damage_create.

# const
#   XCB_DAMAGE_CREATE* = 1

# ## *
# ##  @brief xcb_damage_create_request_t
# ##

# type
#   xcb_damage_create_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     damage*: xcb_damage_damage_t
#     drawable*: xcb_drawable_t
#     level*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_damage_destroy.

# const
#   XCB_DAMAGE_DESTROY* = 2

# ## *
# ##  @brief xcb_damage_destroy_request_t
# ##

# type
#   xcb_damage_destroy_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     damage*: xcb_damage_damage_t


# ## * Opcode for xcb_damage_subtract.

# const
#   XCB_DAMAGE_SUBTRACT* = 3

# ## *
# ##  @brief xcb_damage_subtract_request_t
# ##

# type
#   xcb_damage_subtract_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     damage*: xcb_damage_damage_t
#     repair*: xcb_xfixes_region_t
#     parts*: xcb_xfixes_region_t


# ## * Opcode for xcb_damage_add.

# const
#   XCB_DAMAGE_ADD* = 4

# ## *
# ##  @brief xcb_damage_add_request_t
# ##

# type
#   xcb_damage_add_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     region*: xcb_xfixes_region_t


# ## * Opcode for xcb_damage_notify.

# const
#   XCB_DAMAGE_NOTIFY* = 0

# ## *
# ##  @brief xcb_damage_notify_event_t
# ##

# type
#   xcb_damage_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     level*: uint8
#     sequence*: uint16
#     drawable*: xcb_drawable_t
#     damage*: xcb_damage_damage_t
#     timestamp*: xcb_timestamp_t
#     area*: xcb_rectangle_t
#     geometry*: xcb_rectangle_t


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_damage_damage_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_damage_damage_t)
# ##

# proc xcb_damage_damage_next*(i: ptr xcb_damage_damage_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_damage_damage_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_damage_damage_end*(i: xcb_damage_damage_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_damage_query_version*(c: ptr xcb_connection_t;
#                               client_major_version: uint32;
#                               client_minor_version: uint32): xcb_damage_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_damage_query_version_unchecked*(c: ptr xcb_connection_t;
#                                         client_major_version: uint32;
#                                         client_minor_version: uint32): xcb_damage_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_damage_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_damage_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_damage_query_version_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_damage_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_damage_create_checked*(c: ptr xcb_connection_t;
#                                damage: xcb_damage_damage_t;
#                                drawable: xcb_drawable_t; level: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_damage_create*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t;
#                        drawable: xcb_drawable_t; level: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_damage_destroy_checked*(c: ptr xcb_connection_t;
#                                 damage: xcb_damage_damage_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_damage_destroy*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_damage_subtract_checked*(c: ptr xcb_connection_t;
#                                  damage: xcb_damage_damage_t;
#                                  repair: xcb_xfixes_region_t;
#                                  parts: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_damage_subtract*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t;
#                          repair: xcb_xfixes_region_t; parts: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_damage_add_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                             region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_damage_add*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                     region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from dpms.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_DPMS_API XCB DPMS API
# ##  @brief DPMS XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb

# const
#   XCB_DPMS_MAJOR_VERSION* = 0
#   XCB_DPMS_MINOR_VERSION* = 0

# var xcb_dpms_id*: xcb_extension_t

# ## *
# ##  @brief xcb_dpms_get_version_cookie_t
# ##

# type
#   xcb_dpms_get_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dpms_get_version.

# const
#   XCB_DPMS_GET_VERSION* = 0

# ## *
# ##  @brief xcb_dpms_get_version_request_t
# ##

# type
#   xcb_dpms_get_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint16
#     client_minor_version*: uint16


# ## *
# ##  @brief xcb_dpms_get_version_reply_t
# ##

# type
#   xcb_dpms_get_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major_version*: uint16
#     server_minor_version*: uint16


# ## *
# ##  @brief xcb_dpms_capable_cookie_t
# ##

# type
#   xcb_dpms_capable_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dpms_capable.

# const
#   XCB_DPMS_CAPABLE* = 1

# ## *
# ##  @brief xcb_dpms_capable_request_t
# ##

# type
#   xcb_dpms_capable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_dpms_capable_reply_t
# ##

# type
#   xcb_dpms_capable_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     capable*: uint8
#     pad1*: array[23, uint8]


# ## *
# ##  @brief xcb_dpms_get_timeouts_cookie_t
# ##

# type
#   xcb_dpms_get_timeouts_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dpms_get_timeouts.

# const
#   XCB_DPMS_GET_TIMEOUTS* = 2

# ## *
# ##  @brief xcb_dpms_get_timeouts_request_t
# ##

# type
#   xcb_dpms_get_timeouts_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_dpms_get_timeouts_reply_t
# ##

# type
#   xcb_dpms_get_timeouts_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     standby_timeout*: uint16
#     suspend_timeout*: uint16
#     off_timeout*: uint16
#     pad1*: array[18, uint8]


# ## * Opcode for xcb_dpms_set_timeouts.

# const
#   XCB_DPMS_SET_TIMEOUTS* = 3

# ## *
# ##  @brief xcb_dpms_set_timeouts_request_t
# ##

# type
#   xcb_dpms_set_timeouts_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     standby_timeout*: uint16
#     suspend_timeout*: uint16
#     off_timeout*: uint16


# ## * Opcode for xcb_dpms_enable.

# const
#   XCB_DPMS_ENABLE* = 4

# ## *
# ##  @brief xcb_dpms_enable_request_t
# ##

# type
#   xcb_dpms_enable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## * Opcode for xcb_dpms_disable.

# const
#   XCB_DPMS_DISABLE* = 5

# ## *
# ##  @brief xcb_dpms_disable_request_t
# ##

# type
#   xcb_dpms_disable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16

#   xcb_dpms_dpms_mode_t* = enum
#     XCB_DPMS_DPMS_MODE_ON = 0, XCB_DPMS_DPMS_MODE_STANDBY = 1,
#     XCB_DPMS_DPMS_MODE_SUSPEND = 2, XCB_DPMS_DPMS_MODE_OFF = 3


# ## * Opcode for xcb_dpms_force_level.

# const
#   XCB_DPMS_FORCE_LEVEL* = 6

# ## *
# ##  @brief xcb_dpms_force_level_request_t
# ##

# type
#   xcb_dpms_force_level_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     power_level*: uint16


# ## *
# ##  @brief xcb_dpms_info_cookie_t
# ##

# type
#   xcb_dpms_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dpms_info.

# const
#   XCB_DPMS_INFO* = 7

# ## *
# ##  @brief xcb_dpms_info_request_t
# ##

# type
#   xcb_dpms_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_dpms_info_reply_t
# ##

# type
#   xcb_dpms_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     power_level*: uint16
#     state*: uint8
#     pad1*: array[21, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_get_version*(c: ptr xcb_connection_t; client_major_version: uint16;
#                           client_minor_version: uint16): xcb_dpms_get_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dpms_get_version_unchecked*(c: ptr xcb_connection_t;
#                                     client_major_version: uint16;
#                                     client_minor_version: uint16): xcb_dpms_get_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dpms_get_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dpms_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_get_version_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_get_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_capable*(c: ptr xcb_connection_t): xcb_dpms_capable_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dpms_capable_unchecked*(c: ptr xcb_connection_t): xcb_dpms_capable_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dpms_capable_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dpms_capable_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_capable_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_capable_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_get_timeouts*(c: ptr xcb_connection_t): xcb_dpms_get_timeouts_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dpms_get_timeouts_unchecked*(c: ptr xcb_connection_t): xcb_dpms_get_timeouts_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dpms_get_timeouts_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dpms_get_timeouts_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_get_timeouts_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_get_timeouts_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dpms_set_timeouts_checked*(c: ptr xcb_connection_t;
#                                    standby_timeout: uint16;
#                                    suspend_timeout: uint16;
#                                    off_timeout: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_set_timeouts*(c: ptr xcb_connection_t; standby_timeout: uint16;
#                            suspend_timeout: uint16; off_timeout: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# #proc xcb_dpms_enable_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_enable*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dpms_disable_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_disable*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dpms_force_level_checked*(c: ptr xcb_connection_t; power_level: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_force_level*(c: ptr xcb_connection_t; power_level: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dpms_info*(c: ptr xcb_connection_t): xcb_dpms_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dpms_info_unchecked*(c: ptr xcb_connection_t): xcb_dpms_info_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dpms_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dpms_info_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_info_cookie_t; ## *<
#                          e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_info_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from dri2.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_DRI2_API XCB DRI2 API
# ##  @brief DRI2 XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_DRI2_MAJOR_VERSION* = 1
#   XCB_DRI2_MINOR_VERSION* = 4

# var xcb_dri2_id*: xcb_extension_t

# type
#   xcb_dri2_attachment_t* = enum
#     XCB_DRI2_ATTACHMENT_BUFFER_FRONT_LEFT = 0,
#     XCB_DRI2_ATTACHMENT_BUFFER_BACK_LEFT = 1,
#     XCB_DRI2_ATTACHMENT_BUFFER_FRONT_RIGHT = 2,
#     XCB_DRI2_ATTACHMENT_BUFFER_BACK_RIGHT = 3,
#     XCB_DRI2_ATTACHMENT_BUFFER_DEPTH = 4, XCB_DRI2_ATTACHMENT_BUFFER_STENCIL = 5,
#     XCB_DRI2_ATTACHMENT_BUFFER_ACCUM = 6,
#     XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_LEFT = 7,
#     XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_RIGHT = 8,
#     XCB_DRI2_ATTACHMENT_BUFFER_DEPTH_STENCIL = 9,
#     XCB_DRI2_ATTACHMENT_BUFFER_HIZ = 10
#   xcb_dri2_driver_type_t* = enum
#     XCB_DRI2_DRIVER_TYPE_DRI = 0, XCB_DRI2_DRIVER_TYPE_VDPAU = 1
#   xcb_dri2_event_type_t* = enum
#     XCB_DRI2_EVENT_TYPE_EXCHANGE_COMPLETE = 1,
#     XCB_DRI2_EVENT_TYPE_BLIT_COMPLETE = 2, XCB_DRI2_EVENT_TYPE_FLIP_COMPLETE = 3




# ## *
# ##  @brief xcb_dri2_dri2_buffer_t
# ##

# type
#   xcb_dri2_dri2_buffer_t* {.bycopy.} = object
#     attachment*: uint32
#     name*: uint32
#     pitch*: uint32
#     cpp*: uint32
#     flags*: uint32


# ## *
# ##  @brief xcb_dri2_dri2_buffer_iterator_t
# ##

# type
#   xcb_dri2_dri2_buffer_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_dri2_dri2_buffer_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_dri2_attach_format_t
# ##

# type
#   xcb_dri2_attach_format_t* {.bycopy.} = object
#     attachment*: uint32
#     format*: uint32


# ## *
# ##  @brief xcb_dri2_attach_format_iterator_t
# ##

# type
#   xcb_dri2_attach_format_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_dri2_attach_format_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_dri2_query_version_cookie_t
# ##

# type
#   xcb_dri2_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_query_version.

# const
#   XCB_DRI2_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_dri2_query_version_request_t
# ##

# type
#   xcb_dri2_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_dri2_query_version_reply_t
# ##

# type
#   xcb_dri2_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_dri2_connect_cookie_t
# ##

# type
#   xcb_dri2_connect_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_connect.

# const
#   XCB_DRI2_CONNECT* = 1

# ## *
# ##  @brief xcb_dri2_connect_request_t
# ##

# type
#   xcb_dri2_connect_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     driver_type*: uint32


# ## *
# ##  @brief xcb_dri2_connect_reply_t
# ##

# type
#   xcb_dri2_connect_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     driver_name_length*: uint32
#     device_name_length*: uint32
#     pad1*: array[16, uint8]


# ## *
# ##  @brief xcb_dri2_authenticate_cookie_t
# ##

# type
#   xcb_dri2_authenticate_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_authenticate.

# const
#   XCB_DRI2_AUTHENTICATE* = 2

# ## *
# ##  @brief xcb_dri2_authenticate_request_t
# ##

# type
#   xcb_dri2_authenticate_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     magic*: uint32


# ## *
# ##  @brief xcb_dri2_authenticate_reply_t
# ##

# type
#   xcb_dri2_authenticate_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     authenticated*: uint32


# ## * Opcode for xcb_dri2_create_drawable.

# const
#   XCB_DRI2_CREATE_DRAWABLE* = 3

# ## *
# ##  @brief xcb_dri2_create_drawable_request_t
# ##

# type
#   xcb_dri2_create_drawable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## * Opcode for xcb_dri2_destroy_drawable.

# const
#   XCB_DRI2_DESTROY_DRAWABLE* = 4

# ## *
# ##  @brief xcb_dri2_destroy_drawable_request_t
# ##

# type
#   xcb_dri2_destroy_drawable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  @brief xcb_dri2_get_buffers_cookie_t
# ##

# type
#   xcb_dri2_get_buffers_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_get_buffers.

# const
#   XCB_DRI2_GET_BUFFERS* = 5

# ## *
# ##  @brief xcb_dri2_get_buffers_request_t
# ##

# type
#   xcb_dri2_get_buffers_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     count*: uint32


# ## *
# ##  @brief xcb_dri2_get_buffers_reply_t
# ##

# type
#   xcb_dri2_get_buffers_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint32
#     height*: uint32
#     count*: uint32
#     pad1*: array[12, uint8]


# ## *
# ##  @brief xcb_dri2_copy_region_cookie_t
# ##

# type
#   xcb_dri2_copy_region_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_copy_region.

# const
#   XCB_DRI2_COPY_REGION* = 6

# ## *
# ##  @brief xcb_dri2_copy_region_request_t
# ##

# type
#   xcb_dri2_copy_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     region*: uint32
#     dest*: uint32
#     src*: uint32


# ## *
# ##  @brief xcb_dri2_copy_region_reply_t
# ##

# type
#   xcb_dri2_copy_region_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32


# ## *
# ##  @brief xcb_dri2_get_buffers_with_format_cookie_t
# ##

# type
#   xcb_dri2_get_buffers_with_format_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_get_buffers_with_format.

# const
#   XCB_DRI2_GET_BUFFERS_WITH_FORMAT* = 7

# ## *
# ##  @brief xcb_dri2_get_buffers_with_format_request_t
# ##

# type
#   xcb_dri2_get_buffers_with_format_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     count*: uint32


# ## *
# ##  @brief xcb_dri2_get_buffers_with_format_reply_t
# ##

# type
#   xcb_dri2_get_buffers_with_format_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint32
#     height*: uint32
#     count*: uint32
#     pad1*: array[12, uint8]


# ## *
# ##  @brief xcb_dri2_swap_buffers_cookie_t
# ##

# type
#   xcb_dri2_swap_buffers_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_swap_buffers.

# const
#   XCB_DRI2_SWAP_BUFFERS* = 8

# ## *
# ##  @brief xcb_dri2_swap_buffers_request_t
# ##

# type
#   xcb_dri2_swap_buffers_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     target_msc_hi*: uint32
#     target_msc_lo*: uint32
#     divisor_hi*: uint32
#     divisor_lo*: uint32
#     remainder_hi*: uint32
#     remainder_lo*: uint32


# ## *
# ##  @brief xcb_dri2_swap_buffers_reply_t
# ##

# type
#   xcb_dri2_swap_buffers_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     swap_hi*: uint32
#     swap_lo*: uint32


# ## *
# ##  @brief xcb_dri2_get_msc_cookie_t
# ##

# type
#   xcb_dri2_get_msc_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_get_msc.

# const
#   XCB_DRI2_GET_MSC* = 9

# ## *
# ##  @brief xcb_dri2_get_msc_request_t
# ##

# type
#   xcb_dri2_get_msc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  @brief xcb_dri2_get_msc_reply_t
# ##

# type
#   xcb_dri2_get_msc_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     ust_hi*: uint32
#     ust_lo*: uint32
#     msc_hi*: uint32
#     msc_lo*: uint32
#     sbc_hi*: uint32
#     sbc_lo*: uint32


# ## *
# ##  @brief xcb_dri2_wait_msc_cookie_t
# ##

# type
#   xcb_dri2_wait_msc_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_wait_msc.

# const
#   XCB_DRI2_WAIT_MSC* = 10

# ## *
# ##  @brief xcb_dri2_wait_msc_request_t
# ##

# type
#   xcb_dri2_wait_msc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     target_msc_hi*: uint32
#     target_msc_lo*: uint32
#     divisor_hi*: uint32
#     divisor_lo*: uint32
#     remainder_hi*: uint32
#     remainder_lo*: uint32


# ## *
# ##  @brief xcb_dri2_wait_msc_reply_t
# ##

# type
#   xcb_dri2_wait_msc_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     ust_hi*: uint32
#     ust_lo*: uint32
#     msc_hi*: uint32
#     msc_lo*: uint32
#     sbc_hi*: uint32
#     sbc_lo*: uint32


# ## *
# ##  @brief xcb_dri2_wait_sbc_cookie_t
# ##

# type
#   xcb_dri2_wait_sbc_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_wait_sbc.

# const
#   XCB_DRI2_WAIT_SBC* = 11

# ## *
# ##  @brief xcb_dri2_wait_sbc_request_t
# ##

# type
#   xcb_dri2_wait_sbc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     target_sbc_hi*: uint32
#     target_sbc_lo*: uint32


# ## *
# ##  @brief xcb_dri2_wait_sbc_reply_t
# ##

# type
#   xcb_dri2_wait_sbc_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     ust_hi*: uint32
#     ust_lo*: uint32
#     msc_hi*: uint32
#     msc_lo*: uint32
#     sbc_hi*: uint32
#     sbc_lo*: uint32


# ## * Opcode for xcb_dri2_swap_interval.

# const
#   XCB_DRI2_SWAP_INTERVAL* = 12

# ## *
# ##  @brief xcb_dri2_swap_interval_request_t
# ##

# type
#   xcb_dri2_swap_interval_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     interval*: uint32


# ## *
# ##  @brief xcb_dri2_get_param_cookie_t
# ##

# type
#   xcb_dri2_get_param_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri2_get_param.

# const
#   XCB_DRI2_GET_PARAM* = 13

# ## *
# ##  @brief xcb_dri2_get_param_request_t
# ##

# type
#   xcb_dri2_get_param_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     param*: uint32


# ## *
# ##  @brief xcb_dri2_get_param_reply_t
# ##

# type
#   xcb_dri2_get_param_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     is_param_recognized*: uint8
#     sequence*: uint16
#     length*: uint32
#     value_hi*: uint32
#     value_lo*: uint32


# ## * Opcode for xcb_dri2_buffer_swap_complete.

# const
#   XCB_DRI2_BUFFER_SWAP_COMPLETE* = 0

# ## *
# ##  @brief xcb_dri2_buffer_swap_complete_event_t
# ##

# type
#   xcb_dri2_buffer_swap_complete_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event_type*: uint16
#     pad1*: array[2, uint8]
#     drawable*: xcb_drawable_t
#     ust_hi*: uint32
#     ust_lo*: uint32
#     msc_hi*: uint32
#     msc_lo*: uint32
#     sbc*: uint32


# ## * Opcode for xcb_dri2_invalidate_buffers.

# const
#   XCB_DRI2_INVALIDATE_BUFFERS* = 1

# ## *
# ##  @brief xcb_dri2_invalidate_buffers_event_t
# ##

# type
#   xcb_dri2_invalidate_buffers_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_dri2_dri2_buffer_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_dri2_dri2_buffer_t)
# ##

# proc xcb_dri2_dri2_buffer_next*(i: ptr xcb_dri2_dri2_buffer_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_dri2_dri2_buffer_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_dri2_dri2_buffer_end*(i: xcb_dri2_dri2_buffer_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_dri2_attach_format_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_dri2_attach_format_t)
# ##

# proc xcb_dri2_attach_format_next*(i: ptr xcb_dri2_attach_format_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_dri2_attach_format_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_dri2_attach_format_end*(i: xcb_dri2_attach_format_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_query_version*(c: ptr xcb_connection_t; major_version: uint32;
#                             minor_version: uint32): xcb_dri2_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_query_version_unchecked*(c: ptr xcb_connection_t;
#                                       major_version: uint32;
#                                       minor_version: uint32): xcb_dri2_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_query_version_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_query_version_reply_t
# proc xcb_dri2_connect_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_connect*(c: ptr xcb_connection_t; window: xcb_window_t;
#                       driver_type: uint32): xcb_dri2_connect_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_connect_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 driver_type: uint32): xcb_dri2_connect_cookie_t
# proc xcb_dri2_connect_driver_name*(R: ptr xcb_dri2_connect_reply_t): cstring
# proc xcb_dri2_connect_driver_name_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_driver_name_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# proc xcb_dri2_connect_alignment_pad*(R: ptr xcb_dri2_connect_reply_t): pointer
# proc xcb_dri2_connect_alignment_pad_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_alignment_pad_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# proc xcb_dri2_connect_device_name*(R: ptr xcb_dri2_connect_reply_t): cstring
# proc xcb_dri2_connect_device_name_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_device_name_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_connect_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_connect_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_connect_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_connect_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_authenticate*(c: ptr xcb_connection_t; window: xcb_window_t;
#                            magic: uint32): xcb_dri2_authenticate_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_authenticate_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      magic: uint32): xcb_dri2_authenticate_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_authenticate_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_authenticate_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_authenticate_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_authenticate_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri2_create_drawable_checked*(c: ptr xcb_connection_t;
#                                       drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_create_drawable*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri2_destroy_drawable_checked*(c: ptr xcb_connection_t;
#                                        drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_destroy_drawable*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_void_cookie_t
# proc xcb_dri2_get_buffers_sizeof*(_buffer: pointer; attachments_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_get_buffers*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                           count: uint32; attachments_len: uint32;
#                           attachments: ptr uint32): xcb_dri2_get_buffers_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_get_buffers_unchecked*(c: ptr xcb_connection_t;
#                                     drawable: xcb_drawable_t; count: uint32;
#                                     attachments_len: uint32;
#                                     attachments: ptr uint32): xcb_dri2_get_buffers_cookie_t
# proc xcb_dri2_get_buffers_buffers*(R: ptr xcb_dri2_get_buffers_reply_t): ptr xcb_dri2_dri2_buffer_t
# proc xcb_dri2_get_buffers_buffers_length*(R: ptr xcb_dri2_get_buffers_reply_t): cint
# proc xcb_dri2_get_buffers_buffers_iterator*(R: ptr xcb_dri2_get_buffers_reply_t): xcb_dri2_dri2_buffer_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_get_buffers_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_get_buffers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_buffers_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_buffers_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_copy_region*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                           region: uint32; dest: uint32; src: uint32): xcb_dri2_copy_region_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_copy_region_unchecked*(c: ptr xcb_connection_t;
#                                     drawable: xcb_drawable_t; region: uint32;
#                                     dest: uint32; src: uint32): xcb_dri2_copy_region_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_copy_region_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_copy_region_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_copy_region_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_copy_region_reply_t
# proc xcb_dri2_get_buffers_with_format_sizeof*(_buffer: pointer;
#     attachments_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_get_buffers_with_format*(c: ptr xcb_connection_t;
#                                       drawable: xcb_drawable_t; count: uint32;
#                                       attachments_len: uint32;
#                                       attachments: ptr xcb_dri2_attach_format_t): xcb_dri2_get_buffers_with_format_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_get_buffers_with_format_unchecked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; count: uint32; attachments_len: uint32;
#     attachments: ptr xcb_dri2_attach_format_t): xcb_dri2_get_buffers_with_format_cookie_t
# proc xcb_dri2_get_buffers_with_format_buffers*(
#     R: ptr xcb_dri2_get_buffers_with_format_reply_t): ptr xcb_dri2_dri2_buffer_t
# proc xcb_dri2_get_buffers_with_format_buffers_length*(
#     R: ptr xcb_dri2_get_buffers_with_format_reply_t): cint
# proc xcb_dri2_get_buffers_with_format_buffers_iterator*(
#     R: ptr xcb_dri2_get_buffers_with_format_reply_t): xcb_dri2_dri2_buffer_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_get_buffers_with_format_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_get_buffers_with_format_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_buffers_with_format_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_buffers_with_format_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_swap_buffers*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                            target_msc_hi: uint32; target_msc_lo: uint32;
#                            divisor_hi: uint32; divisor_lo: uint32;
#                            remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_swap_buffers_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_swap_buffers_unchecked*(c: ptr xcb_connection_t;
#                                      drawable: xcb_drawable_t;
#                                      target_msc_hi: uint32;
#                                      target_msc_lo: uint32;
#                                      divisor_hi: uint32; divisor_lo: uint32;
#                                      remainder_hi: uint32;
#                                      remainder_lo: uint32): xcb_dri2_swap_buffers_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_swap_buffers_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_swap_buffers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_swap_buffers_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_swap_buffers_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_get_msc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_dri2_get_msc_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_get_msc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_dri2_get_msc_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_get_msc_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_get_msc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_msc_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_msc_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_wait_msc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                        target_msc_hi: uint32; target_msc_lo: uint32;
#                        divisor_hi: uint32; divisor_lo: uint32;
#                        remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_wait_msc_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_wait_msc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                  target_msc_hi: uint32; target_msc_lo: uint32;
#                                  divisor_hi: uint32; divisor_lo: uint32;
#                                  remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_wait_msc_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_wait_msc_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_wait_msc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_wait_msc_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_wait_msc_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_wait_sbc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                        target_sbc_hi: uint32; target_sbc_lo: uint32): xcb_dri2_wait_sbc_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_wait_sbc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                  target_sbc_hi: uint32; target_sbc_lo: uint32): xcb_dri2_wait_sbc_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_wait_sbc_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_wait_sbc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_wait_sbc_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_wait_sbc_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri2_swap_interval_checked*(c: ptr xcb_connection_t;
#                                     drawable: xcb_drawable_t; interval: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_swap_interval*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                             interval: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri2_get_param*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                         param: uint32): xcb_dri2_get_param_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri2_get_param_unchecked*(c: ptr xcb_connection_t;
#                                   drawable: xcb_drawable_t; param: uint32): xcb_dri2_get_param_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri2_get_param_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri2_get_param_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_param_cookie_t; ## *<
#                               e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_param_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from dri3.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_DRI3_API XCB DRI3 API
# ##  @brief DRI3 XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_DRI3_MAJOR_VERSION* = 1
#   XCB_DRI3_MINOR_VERSION* = 2

# var xcb_dri3_id*: xcb_extension_t

# ## *
# ##  @brief xcb_dri3_query_version_cookie_t
# ##

# type
#   xcb_dri3_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_query_version.

# const
#   XCB_DRI3_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_dri3_query_version_request_t
# ##

# type
#   xcb_dri3_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_dri3_query_version_reply_t
# ##

# type
#   xcb_dri3_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_dri3_open_cookie_t
# ##

# type
#   xcb_dri3_open_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_open.

# const
#   XCB_DRI3_OPEN* = 1

# ## *
# ##  @brief xcb_dri3_open_request_t
# ##

# type
#   xcb_dri3_open_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     provider*: uint32


# ## *
# ##  @brief xcb_dri3_open_reply_t
# ##

# type
#   xcb_dri3_open_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## * Opcode for xcb_dri3_pixmap_from_buffer.

# const
#   XCB_DRI3_PIXMAP_FROM_BUFFER* = 2

# ## *
# ##  @brief xcb_dri3_pixmap_from_buffer_request_t
# ##

# type
#   xcb_dri3_pixmap_from_buffer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pixmap*: xcb_pixmap_t
#     drawable*: xcb_drawable_t
#     size*: uint32
#     width*: uint16
#     height*: uint16
#     stride*: uint16
#     depth*: uint8
#     bpp*: uint8


# ## *
# ##  @brief xcb_dri3_buffer_from_pixmap_cookie_t
# ##

# type
#   xcb_dri3_buffer_from_pixmap_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_buffer_from_pixmap.

# const
#   XCB_DRI3_BUFFER_FROM_PIXMAP* = 3

# ## *
# ##  @brief xcb_dri3_buffer_from_pixmap_request_t
# ##

# type
#   xcb_dri3_buffer_from_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pixmap*: xcb_pixmap_t


# ## *
# ##  @brief xcb_dri3_buffer_from_pixmap_reply_t
# ##

# type
#   xcb_dri3_buffer_from_pixmap_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     size*: uint32
#     width*: uint16
#     height*: uint16
#     stride*: uint16
#     depth*: uint8
#     bpp*: uint8
#     pad0*: array[12, uint8]


# ## * Opcode for xcb_dri3_fence_from_fd.

# const
#   XCB_DRI3_FENCE_FROM_FD* = 4

# ## *
# ##  @brief xcb_dri3_fence_from_fd_request_t
# ##

# type
#   xcb_dri3_fence_from_fd_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     fence*: uint32
#     initially_triggered*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_dri3_fd_from_fence_cookie_t
# ##

# type
#   xcb_dri3_fd_from_fence_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_fd_from_fence.

# const
#   XCB_DRI3_FD_FROM_FENCE* = 5

# ## *
# ##  @brief xcb_dri3_fd_from_fence_request_t
# ##

# type
#   xcb_dri3_fd_from_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     fence*: uint32


# ## *
# ##  @brief xcb_dri3_fd_from_fence_reply_t
# ##

# type
#   xcb_dri3_fd_from_fence_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## *
# ##  @brief xcb_dri3_get_supported_modifiers_cookie_t
# ##

# type
#   xcb_dri3_get_supported_modifiers_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_get_supported_modifiers.

# const
#   XCB_DRI3_GET_SUPPORTED_MODIFIERS* = 6

# ## *
# ##  @brief xcb_dri3_get_supported_modifiers_request_t
# ##

# type
#   xcb_dri3_get_supported_modifiers_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: uint32
#     depth*: uint8
#     bpp*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_dri3_get_supported_modifiers_reply_t
# ##

# type
#   xcb_dri3_get_supported_modifiers_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_window_modifiers*: uint32
#     num_screen_modifiers*: uint32
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_dri3_pixmap_from_buffers.

# const
#   XCB_DRI3_PIXMAP_FROM_BUFFERS* = 7

# ## *
# ##  @brief xcb_dri3_pixmap_from_buffers_request_t
# ##

# type
#   xcb_dri3_pixmap_from_buffers_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pixmap*: xcb_pixmap_t
#     window*: xcb_window_t
#     num_buffers*: uint8
#     pad0*: array[3, uint8]
#     width*: uint16
#     height*: uint16
#     stride0*: uint32
#     offset0*: uint32
#     stride1*: uint32
#     offset1*: uint32
#     stride2*: uint32
#     offset2*: uint32
#     stride3*: uint32
#     offset3*: uint32
#     depth*: uint8
#     bpp*: uint8
#     pad1*: array[2, uint8]
#     modifier*: uint64


# ## *
# ##  @brief xcb_dri3_buffers_from_pixmap_cookie_t
# ##

# type
#   xcb_dri3_buffers_from_pixmap_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_dri3_buffers_from_pixmap.

# const
#   XCB_DRI3_BUFFERS_FROM_PIXMAP* = 8

# ## *
# ##  @brief xcb_dri3_buffers_from_pixmap_request_t
# ##

# type
#   xcb_dri3_buffers_from_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pixmap*: xcb_pixmap_t


# ## *
# ##  @brief xcb_dri3_buffers_from_pixmap_reply_t
# ##

# type
#   xcb_dri3_buffers_from_pixmap_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint16
#     height*: uint16
#     pad0*: array[4, uint8]
#     modifier*: uint64
#     depth*: uint8
#     bpp*: uint8
#     pad1*: array[6, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_query_version*(c: ptr xcb_connection_t; major_version: uint32;
#                             minor_version: uint32): xcb_dri3_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_query_version_unchecked*(c: ptr xcb_connection_t;
#                                       major_version: uint32;
#                                       minor_version: uint32): xcb_dri3_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_query_version_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_open*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                    provider: uint32): xcb_dri3_open_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_open_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                              provider: uint32): xcb_dri3_open_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_open_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_open_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_open_cookie_t; ## *<
#                          e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_open_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_open_reply_fds*(c: ptr xcb_connection_t; ## *<
#                              reply: ptr xcb_dri3_open_reply_t): ptr cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri3_pixmap_from_buffer_checked*(c: ptr xcb_connection_t;
#     pixmap: xcb_pixmap_t; drawable: xcb_drawable_t; size: uint32; width: uint16;
#     height: uint16; stride: uint16; depth: uint8; bpp: uint8; pixmap_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_pixmap_from_buffer*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t;
#                                  drawable: xcb_drawable_t; size: uint32;
#                                  width: uint16; height: uint16;
#                                  stride: uint16; depth: uint8; bpp: uint8;
#                                  pixmap_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_buffer_from_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_dri3_buffer_from_pixmap_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_buffer_from_pixmap_unchecked*(c: ptr xcb_connection_t;
#     pixmap: xcb_pixmap_t): xcb_dri3_buffer_from_pixmap_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_buffer_from_pixmap_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_buffer_from_pixmap_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_buffer_from_pixmap_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_buffer_from_pixmap_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_buffer_from_pixmap_reply_fds*(c: ptr xcb_connection_t; ## *<
#     reply: ptr xcb_dri3_buffer_from_pixmap_reply_t): ptr cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri3_fence_from_fd_checked*(c: ptr xcb_connection_t;
#                                     drawable: xcb_drawable_t; fence: uint32;
#                                     initially_triggered: uint8;
#                                     fence_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_fence_from_fd*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                             fence: uint32; initially_triggered: uint8;
#                             fence_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_fd_from_fence*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                             fence: uint32): xcb_dri3_fd_from_fence_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_fd_from_fence_unchecked*(c: ptr xcb_connection_t;
#                                       drawable: xcb_drawable_t; fence: uint32): xcb_dri3_fd_from_fence_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_fd_from_fence_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_fd_from_fence_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_fd_from_fence_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_fd_from_fence_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_fd_from_fence_reply_fds*(c: ptr xcb_connection_t; ## *<
#                                       reply: ptr xcb_dri3_fd_from_fence_reply_t): ptr cint
# proc xcb_dri3_get_supported_modifiers_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_get_supported_modifiers*(c: ptr xcb_connection_t; window: uint32;
#                                       depth: uint8; bpp: uint8): xcb_dri3_get_supported_modifiers_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_get_supported_modifiers_unchecked*(c: ptr xcb_connection_t;
#     window: uint32; depth: uint8; bpp: uint8): xcb_dri3_get_supported_modifiers_cookie_t
# proc xcb_dri3_get_supported_modifiers_window_modifiers*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): ptr uint64
# proc xcb_dri3_get_supported_modifiers_window_modifiers_length*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): cint
# proc xcb_dri3_get_supported_modifiers_window_modifiers_end*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_get_supported_modifiers_screen_modifiers*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): ptr uint64
# proc xcb_dri3_get_supported_modifiers_screen_modifiers_length*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): cint
# proc xcb_dri3_get_supported_modifiers_screen_modifiers_end*(
#     R: ptr xcb_dri3_get_supported_modifiers_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_get_supported_modifiers_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_get_supported_modifiers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_get_supported_modifiers_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_get_supported_modifiers_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_dri3_pixmap_from_buffers_checked*(c: ptr xcb_connection_t;
#     pixmap: xcb_pixmap_t; window: xcb_window_t; num_buffers: uint8; width: uint16;
#     height: uint16; stride0: uint32; offset0: uint32; stride1: uint32;
#     offset1: uint32; stride2: uint32; offset2: uint32; stride3: uint32;
#     offset3: uint32; depth: uint8; bpp: uint8; modifier: uint64;
#     buffers: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_pixmap_from_buffers*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t;
#                                   window: xcb_window_t; num_buffers: uint8;
#                                   width: uint16; height: uint16;
#                                   stride0: uint32; offset0: uint32;
#                                   stride1: uint32; offset1: uint32;
#                                   stride2: uint32; offset2: uint32;
#                                   stride3: uint32; offset3: uint32;
#                                   depth: uint8; bpp: uint8; modifier: uint64;
#                                   buffers: ptr int32): xcb_void_cookie_t
# proc xcb_dri3_buffers_from_pixmap_sizeof*(_buffer: pointer; buffers: int32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_dri3_buffers_from_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_dri3_buffers_from_pixmap_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_dri3_buffers_from_pixmap_unchecked*(c: ptr xcb_connection_t;
#     pixmap: xcb_pixmap_t): xcb_dri3_buffers_from_pixmap_cookie_t
# proc xcb_dri3_buffers_from_pixmap_strides*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr uint32
# proc xcb_dri3_buffers_from_pixmap_strides_length*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_strides_end*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_buffers_from_pixmap_offsets*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr uint32
# proc xcb_dri3_buffers_from_pixmap_offsets_length*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_offsets_end*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_buffers_from_pixmap_buffers*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr int32
# proc xcb_dri3_buffers_from_pixmap_buffers_length*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_buffers_end*(
#     R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_dri3_buffers_from_pixmap_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_buffers_from_pixmap_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_buffers_from_pixmap_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_buffers_from_pixmap_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_dri3_buffers_from_pixmap_reply_fds*(c: ptr xcb_connection_t; ## *<
#     reply: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr cint
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from ge.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_GenericEvent_API XCB GenericEvent API
# ##  @brief GenericEvent XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb

# const
#   XCB_GENERICEVENT_MAJOR_VERSION* = 1
#   XCB_GENERICEVENT_MINOR_VERSION* = 0

# var xcb_genericevent_id*: xcb_extension_t

# ## *
# ##  @brief xcb_genericevent_query_version_cookie_t
# ##

# type
#   xcb_genericevent_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_genericevent_query_version.

# const
#   XCB_GENERICEVENT_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_genericevent_query_version_request_t
# ##

# type
#   xcb_genericevent_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint16
#     client_minor_version*: uint16


# ## *
# ##  @brief xcb_genericevent_query_version_reply_t
# ##

# type
#   xcb_genericevent_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16
#     pad1*: array[20, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_genericevent_query_version*(c: ptr xcb_connection_t;
#                                     client_major_version: uint16;
#                                     client_minor_version: uint16): xcb_genericevent_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_genericevent_query_version_unchecked*(c: ptr xcb_connection_t;
#     client_major_version: uint16; client_minor_version: uint16): xcb_genericevent_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_genericevent_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_genericevent_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_genericevent_query_version_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_genericevent_query_version_reply_t

# import
#   xcb, xproto

# import
#   xcb, xproto, randr, xfixes, sync

# const
#   XCB_PRESENT_MAJOR_VERSION* = 1
#   XCB_PRESENT_MINOR_VERSION* = 2

# var xcb_present_id*: xcb_extension_t

# type
#   xcb_present_event_enum_t* = enum
#     XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0, XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1,
#     XCB_PRESENT_EVENT_IDLE_NOTIFY = 2, XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3
#   xcb_present_event_mask_t* = enum
#     XCB_PRESENT_EVENT_MASK_NO_EVENT = 0,
#     XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1,
#     XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2,
#     XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4,
#     XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8
#   xcb_present_option_t* = enum
#     XCB_PRESENT_OPTION_NONE = 0, XCB_PRESENT_OPTION_ASYNC = 1,
#     XCB_PRESENT_OPTION_COPY = 2, XCB_PRESENT_OPTION_UST = 4,
#     XCB_PRESENT_OPTION_SUBOPTIMAL = 8
#   xcb_present_capability_t* = enum
#     XCB_PRESENT_CAPABILITY_NONE = 0, XCB_PRESENT_CAPABILITY_ASYNC = 1,
#     XCB_PRESENT_CAPABILITY_FENCE = 2, XCB_PRESENT_CAPABILITY_UST = 4
#   xcb_present_complete_kind_t* = enum
#     XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0, XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1
#   xcb_present_complete_mode_t* = enum
#     XCB_PRESENT_COMPLETE_MODE_COPY = 0, XCB_PRESENT_COMPLETE_MODE_FLIP = 1,
#     XCB_PRESENT_COMPLETE_MODE_SKIP = 2,
#     XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3







# ## *
# ##  @brief xcb_present_notify_t
# ##

# type
#   xcb_present_notify_t* {.bycopy.} = object
#     window*: xcb_window_t
#     serial*: uint32


# ## *
# ##  @brief xcb_present_notify_iterator_t
# ##

# type
#   xcb_present_notify_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_present_notify_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_present_query_version_cookie_t
# ##

# type
#   xcb_present_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_present_query_version.

# const
#   XCB_PRESENT_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_present_query_version_request_t
# ##

# type
#   xcb_present_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_present_query_version_reply_t
# ##

# type
#   xcb_present_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32


# ## * Opcode for xcb_present_pixmap.

# const
#   XCB_PRESENT_PIXMAP* = 1

# ## *
# ##  @brief xcb_present_pixmap_request_t
# ##

# type
#   xcb_present_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     pixmap*: xcb_pixmap_t
#     serial*: uint32
#     valid*: xcb_xfixes_region_t
#     update*: xcb_xfixes_region_t
#     x_off*: int16
#     y_off*: int16
#     target_crtc*: xcb_randr_crtc_t
#     wait_fence*: xcb_sync_fence_t
#     idle_fence*: xcb_sync_fence_t
#     options*: uint32
#     pad0*: array[4, uint8]
#     target_msc*: uint64
#     divisor*: uint64
#     remainder*: uint64


# ## * Opcode for xcb_present_notify_msc.

# const
#   XCB_PRESENT_NOTIFY_MSC* = 2

# ## *
# ##  @brief xcb_present_notify_msc_request_t
# ##

# type
#   xcb_present_notify_msc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     serial*: uint32
#     pad0*: array[4, uint8]
#     target_msc*: uint64
#     divisor*: uint64
#     remainder*: uint64

#   xcb_present_event_t* = uint32

# ## *
# ##  @brief xcb_present_event_iterator_t
# ##

# type
#   xcb_present_event_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_present_event_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_present_select_input.

# const
#   XCB_PRESENT_SELECT_INPUT* = 3

# ## *
# ##  @brief xcb_present_select_input_request_t
# ##

# type
#   xcb_present_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     eid*: xcb_present_event_t
#     window*: xcb_window_t
#     event_mask*: uint32


# ## *
# ##  @brief xcb_present_query_capabilities_cookie_t
# ##

# type
#   xcb_present_query_capabilities_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_present_query_capabilities.

# const
#   XCB_PRESENT_QUERY_CAPABILITIES* = 4

# ## *
# ##  @brief xcb_present_query_capabilities_request_t
# ##

# type
#   xcb_present_query_capabilities_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     target*: uint32


# ## *
# ##  @brief xcb_present_query_capabilities_reply_t
# ##

# type
#   xcb_present_query_capabilities_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     capabilities*: uint32


# ## * Opcode for xcb_present_generic.

# const
#   XCB_PRESENT_GENERIC* = 0

# ## *
# ##  @brief xcb_present_generic_event_t
# ##

# type
#   xcb_present_generic_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     evtype*: uint16
#     pad0*: array[2, uint8]
#     event*: xcb_present_event_t


# ## * Opcode for xcb_present_configure_notify.

# const
#   XCB_PRESENT_CONFIGURE_NOTIFY* = 0

# ## *
# ##  @brief xcb_present_configure_notify_event_t
# ##

# type
#   xcb_present_configure_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     pad0*: array[2, uint8]
#     event*: xcb_present_event_t
#     window*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     off_x*: int16
#     off_y*: int16
#     full_sequence*: uint32
#     pixmap_width*: uint16
#     pixmap_height*: uint16
#     pixmap_flags*: uint32


# ## * Opcode for xcb_present_complete_notify.

# const
#   XCB_PRESENT_COMPLETE_NOTIFY* = 1

# ## *
# ##  @brief xcb_present_complete_notify_event_t
# ##

# type
#   xcb_present_complete_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     kind*: uint8
#     mode*: uint8
#     event*: xcb_present_event_t
#     window*: xcb_window_t
#     serial*: uint32
#     ust*: uint64
#     full_sequence*: uint32
#     msc*: uint64


# ## * Opcode for xcb_present_idle_notify.

# const
#   XCB_PRESENT_IDLE_NOTIFY* = 2

# ## *
# ##  @brief xcb_present_idle_notify_event_t
# ##

# type
#   xcb_present_idle_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     pad0*: array[2, uint8]
#     event*: xcb_present_event_t
#     window*: xcb_window_t
#     serial*: uint32
#     pixmap*: xcb_pixmap_t
#     idle_fence*: xcb_sync_fence_t
#     full_sequence*: uint32


# ## * Opcode for xcb_present_redirect_notify.

# const
#   XCB_PRESENT_REDIRECT_NOTIFY* = 3

# ## *
# ##  @brief xcb_present_redirect_notify_event_t
# ##

# type
#   xcb_present_redirect_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     update_window*: uint8
#     pad0*: uint8
#     event*: xcb_present_event_t
#     event_window*: xcb_window_t
#     window*: xcb_window_t
#     pixmap*: xcb_pixmap_t
#     serial*: uint32
#     full_sequence*: uint32
#     valid_region*: xcb_xfixes_region_t
#     update_region*: xcb_xfixes_region_t
#     valid_rect*: xcb_rectangle_t
#     update_rect*: xcb_rectangle_t
#     x_off*: int16
#     y_off*: int16
#     target_crtc*: xcb_randr_crtc_t
#     wait_fence*: xcb_sync_fence_t
#     idle_fence*: xcb_sync_fence_t
#     options*: uint32
#     pad1*: array[4, uint8]
#     target_msc*: uint64
#     divisor*: uint64
#     remainder*: uint64


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_present_notify_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_present_notify_t)
# ##

# proc xcb_present_notify_next*(i: ptr xcb_present_notify_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_present_notify_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_present_notify_end*(i: xcb_present_notify_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_present_query_version*(c: ptr xcb_connection_t; major_version: uint32;
#                                minor_version: uint32): xcb_present_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_present_query_version_unchecked*(c: ptr xcb_connection_t;
#     major_version: uint32; minor_version: uint32): xcb_present_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_present_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_present_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_present_query_version_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_present_query_version_reply_t
# proc xcb_present_pixmap_sizeof*(_buffer: pointer; notifies_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_present_pixmap_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 pixmap: xcb_pixmap_t; serial: uint32;
#                                 valid: xcb_xfixes_region_t;
#                                 update: xcb_xfixes_region_t; x_off: int16;
#                                 y_off: int16; target_crtc: xcb_randr_crtc_t;
#                                 wait_fence: xcb_sync_fence_t;
#                                 idle_fence: xcb_sync_fence_t; options: uint32;
#                                 target_msc: uint64; divisor: uint64;
#                                 remainder: uint64; notifies_len: uint32;
#                                 notifies: ptr xcb_present_notify_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_present_pixmap*(c: ptr xcb_connection_t; window: xcb_window_t;
#                         pixmap: xcb_pixmap_t; serial: uint32;
#                         valid: xcb_xfixes_region_t; update: xcb_xfixes_region_t;
#                         x_off: int16; y_off: int16;
#                         target_crtc: xcb_randr_crtc_t;
#                         wait_fence: xcb_sync_fence_t;
#                         idle_fence: xcb_sync_fence_t; options: uint32;
#                         target_msc: uint64; divisor: uint64;
#                         remainder: uint64; notifies_len: uint32;
#                         notifies: ptr xcb_present_notify_t): xcb_void_cookie_t
# proc xcb_present_pixmap_notifies*(R: ptr xcb_present_pixmap_request_t): ptr xcb_present_notify_t
# proc xcb_present_pixmap_notifies_length*(R: ptr xcb_present_pixmap_request_t): cint
# proc xcb_present_pixmap_notifies_iterator*(R: ptr xcb_present_pixmap_request_t): xcb_present_notify_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_present_notify_msc_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     serial: uint32; target_msc: uint64;
#                                     divisor: uint64; remainder: uint64): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_present_notify_msc*(c: ptr xcb_connection_t; window: xcb_window_t;
#                             serial: uint32; target_msc: uint64;
#                             divisor: uint64; remainder: uint64): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_present_event_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_present_event_t)
# ##

# proc xcb_present_event_next*(i: ptr xcb_present_event_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_present_event_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_present_event_end*(i: xcb_present_event_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_present_select_input_checked*(c: ptr xcb_connection_t;
#                                       eid: xcb_present_event_t;
#                                       window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_present_select_input*(c: ptr xcb_connection_t; eid: xcb_present_event_t;
#                               window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_present_query_capabilities*(c: ptr xcb_connection_t; target: uint32): xcb_present_query_capabilities_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_present_query_capabilities_unchecked*(c: ptr xcb_connection_t;
#     target: uint32): xcb_present_query_capabilities_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_present_query_capabilities_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_present_query_capabilities_reply*(c: ptr xcb_connection_t; cookie: xcb_present_query_capabilities_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_present_query_capabilities_reply_t
# proc xcb_present_redirect_notify_sizeof*(_buffer: pointer; notifies_len: uint32): cint
# proc xcb_present_redirect_notify_notifies*(
#     R: ptr xcb_present_redirect_notify_event_t): ptr xcb_present_notify_t
# proc xcb_present_redirect_notify_notifies_length*(
#     R: ptr xcb_present_redirect_notify_event_t): cint
# proc xcb_present_redirect_notify_notifies_iterator*(
#     R: ptr xcb_present_redirect_notify_event_t): xcb_present_notify_iterator_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from randr.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_RandR_API XCB RandR API
# ##  @brief RandR XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto, render

# const
#   XCB_RANDR_MAJOR_VERSION* = 1
#   XCB_RANDR_MINOR_VERSION* = 6

# var xcb_randr_id*: xcb_extension_t

# type
#   xcb_randr_mode_t* = uint32

# ## *
# ##  @brief xcb_randr_mode_iterator_t
# ##

# type
#   xcb_randr_mode_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_mode_t
#     rem*: cint
#     index*: cint

#   xcb_randr_crtc_t* = uint32

# ## *
# ##  @brief xcb_randr_crtc_iterator_t
# ##

# type
#   xcb_randr_crtc_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_crtc_t
#     rem*: cint
#     index*: cint

#   xcb_randr_output_t* = uint32

# ## *
# ##  @brief xcb_randr_output_iterator_t
# ##

# type
#   xcb_randr_output_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_output_t
#     rem*: cint
#     index*: cint

#   xcb_randr_provider_t* = uint32

# ## *
# ##  @brief xcb_randr_provider_iterator_t
# ##

# type
#   xcb_randr_provider_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_provider_t
#     rem*: cint
#     index*: cint

#   xcb_randr_lease_t* = uint32

# ## *
# ##  @brief xcb_randr_lease_iterator_t
# ##

# type
#   xcb_randr_lease_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_lease_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_randr_bad_output.

# const
#   XCB_RANDR_BAD_OUTPUT* = 0

# ## *
# ##  @brief xcb_randr_bad_output_error_t
# ##

# type
#   xcb_randr_bad_output_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_randr_bad_crtc.

# const
#   XCB_RANDR_BAD_CRTC* = 1

# ## *
# ##  @brief xcb_randr_bad_crtc_error_t
# ##

# type
#   xcb_randr_bad_crtc_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_randr_bad_mode.

# const
#   XCB_RANDR_BAD_MODE* = 2

# ## *
# ##  @brief xcb_randr_bad_mode_error_t
# ##

# type
#   xcb_randr_bad_mode_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_randr_bad_provider.

# const
#   XCB_RANDR_BAD_PROVIDER* = 3

# ## *
# ##  @brief xcb_randr_bad_provider_error_t
# ##

# type
#   xcb_randr_bad_provider_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16

#   xcb_randr_rotation_t* = enum
#     XCB_RANDR_ROTATION_ROTATE_0 = 1, XCB_RANDR_ROTATION_ROTATE_90 = 2,
#     XCB_RANDR_ROTATION_ROTATE_180 = 4, XCB_RANDR_ROTATION_ROTATE_270 = 8,
#     XCB_RANDR_ROTATION_REFLECT_X = 16, XCB_RANDR_ROTATION_REFLECT_Y = 32


# ## *
# ##  @brief xcb_randr_screen_size_t
# ##

# type
#   xcb_randr_screen_size_t* {.bycopy.} = object
#     width*: uint16
#     height*: uint16
#     mwidth*: uint16
#     mheight*: uint16


# ## *
# ##  @brief xcb_randr_screen_size_iterator_t
# ##

# type
#   xcb_randr_screen_size_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_screen_size_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_refresh_rates_t
# ##

# type
#   xcb_randr_refresh_rates_t* {.bycopy.} = object
#     nRates*: uint16


# ## *
# ##  @brief xcb_randr_refresh_rates_iterator_t
# ##

# type
#   xcb_randr_refresh_rates_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_refresh_rates_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_query_version_cookie_t
# ##

# type
#   xcb_randr_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_query_version.

# const
#   XCB_RANDR_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_randr_query_version_request_t
# ##

# type
#   xcb_randr_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint32
#     minor_version*: uint32


# ## *
# ##  @brief xcb_randr_query_version_reply_t
# ##

# type
#   xcb_randr_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32
#     pad1*: array[16, uint8]

#   xcb_randr_set_config_t* = enum
#     XCB_RANDR_SET_CONFIG_SUCCESS = 0, XCB_RANDR_SET_CONFIG_INVALID_CONFIG_TIME = 1,
#     XCB_RANDR_SET_CONFIG_INVALID_TIME = 2, XCB_RANDR_SET_CONFIG_FAILED = 3


# ## *
# ##  @brief xcb_randr_set_screen_config_cookie_t
# ##

# type
#   xcb_randr_set_screen_config_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_set_screen_config.

# const
#   XCB_RANDR_SET_SCREEN_CONFIG* = 2

# ## *
# ##  @brief xcb_randr_set_screen_config_request_t
# ##

# type
#   xcb_randr_set_screen_config_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     sizeID*: uint16
#     rotation*: uint16
#     rate*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_set_screen_config_reply_t
# ##

# type
#   xcb_randr_set_screen_config_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     new_timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     root*: xcb_window_t
#     subpixel_order*: uint16
#     pad0*: array[10, uint8]

#   xcb_randr_notify_mask_t* = enum
#     XCB_RANDR_NOTIFY_MASK_SCREEN_CHANGE = 1, XCB_RANDR_NOTIFY_MASK_CRTC_CHANGE = 2,
#     XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE = 4,
#     XCB_RANDR_NOTIFY_MASK_OUTPUT_PROPERTY = 8,
#     XCB_RANDR_NOTIFY_MASK_PROVIDER_CHANGE = 16,
#     XCB_RANDR_NOTIFY_MASK_PROVIDER_PROPERTY = 32,
#     XCB_RANDR_NOTIFY_MASK_RESOURCE_CHANGE = 64, XCB_RANDR_NOTIFY_MASK_LEASE = 128


# ## * Opcode for xcb_randr_select_input.

# const
#   XCB_RANDR_SELECT_INPUT* = 4

# ## *
# ##  @brief xcb_randr_select_input_request_t
# ##

# type
#   xcb_randr_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     enable*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_get_screen_info_cookie_t
# ##

# type
#   xcb_randr_get_screen_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_screen_info.

# const
#   XCB_RANDR_GET_SCREEN_INFO* = 5

# ## *
# ##  @brief xcb_randr_get_screen_info_request_t
# ##

# type
#   xcb_randr_get_screen_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t

# ## *
# ##  @brief xcb_randr_get_screen_size_range_cookie_t
# ##

# type
#   xcb_randr_get_screen_size_range_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_screen_size_range.

# const
#   XCB_RANDR_GET_SCREEN_SIZE_RANGE* = 6

# ## *
# ##  @brief xcb_randr_get_screen_size_range_request_t
# ##

# type
#   xcb_randr_get_screen_size_range_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_randr_get_screen_size_range_reply_t
# ##

# type
#   xcb_randr_get_screen_size_range_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     min_width*: uint16
#     min_height*: uint16
#     max_width*: uint16
#     max_height*: uint16
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_randr_set_screen_size.

# const
#   XCB_RANDR_SET_SCREEN_SIZE* = 7

# ## *
# ##  @brief xcb_randr_set_screen_size_request_t
# ##

# type
#   xcb_randr_set_screen_size_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     width*: uint16
#     height*: uint16
#     mm_width*: uint32
#     mm_height*: uint32

#   xcb_randr_mode_flag_t* = enum
#     XCB_RANDR_MODE_FLAG_HSYNC_POSITIVE = 1, XCB_RANDR_MODE_FLAG_HSYNC_NEGATIVE = 2,
#     XCB_RANDR_MODE_FLAG_VSYNC_POSITIVE = 4, XCB_RANDR_MODE_FLAG_VSYNC_NEGATIVE = 8,
#     XCB_RANDR_MODE_FLAG_INTERLACE = 16, XCB_RANDR_MODE_FLAG_DOUBLE_SCAN = 32,
#     XCB_RANDR_MODE_FLAG_CSYNC = 64, XCB_RANDR_MODE_FLAG_CSYNC_POSITIVE = 128,
#     XCB_RANDR_MODE_FLAG_CSYNC_NEGATIVE = 256,
#     XCB_RANDR_MODE_FLAG_HSKEW_PRESENT = 512, XCB_RANDR_MODE_FLAG_BCAST = 1024,
#     XCB_RANDR_MODE_FLAG_PIXEL_MULTIPLEX = 2048,
#     XCB_RANDR_MODE_FLAG_DOUBLE_CLOCK = 4096, XCB_RANDR_MODE_FLAG_HALVE_CLOCK = 8192

# type
#   xcb_randr_mode_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_mode_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_get_screen_resources_cookie_t
# ##

# type
#   xcb_randr_get_screen_resources_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_screen_resources.

# const
#   XCB_RANDR_GET_SCREEN_RESOURCES* = 8

# ## *
# ##  @brief xcb_randr_get_screen_resources_request_t
# ##

# type
#   xcb_randr_get_screen_resources_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_randr_get_screen_resources_reply_t
# ##

# type
#   xcb_randr_connection_t* = enum
#     XCB_RANDR_CONNECTION_CONNECTED = 0, XCB_RANDR_CONNECTION_DISCONNECTED = 1,
#     XCB_RANDR_CONNECTION_UNKNOWN = 2

# type
#   xcb_randr_get_output_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8

# const
#   XCB_RANDR_GET_OUTPUT_INFO* = 9

# type
#   xcb_randr_get_output_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     config_timestamp*: xcb_timestamp_t


# ## *
# ##  @brief xcb_randr_get_output_info_reply_t
# ##


# ## *
# ##  @brief xcb_randr_list_output_properties_cookie_t
# ##

# type
#   xcb_randr_list_output_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_list_output_properties.

# const
#   XCB_RANDR_LIST_OUTPUT_PROPERTIES* = 10

# ## *
# ##  @brief xcb_randr_list_output_properties_request_t
# ##

# type
#   xcb_randr_list_output_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t


# ## *
# ##  @brief xcb_randr_list_output_properties_reply_t
# ##

# type
#   xcb_randr_list_output_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_atoms*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_randr_query_output_property_cookie_t
# ##

# type
#   xcb_randr_query_output_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_query_output_property.

# const
#   XCB_RANDR_QUERY_OUTPUT_PROPERTY* = 11

# ## *
# ##  @brief xcb_randr_query_output_property_request_t
# ##

# type
#   xcb_randr_query_output_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_randr_query_output_property_reply_t
# ##

# type
#   xcb_randr_query_output_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pending*: uint8
#     range*: uint8
#     immutable*: uint8
#     pad1*: array[21, uint8]


# ## * Opcode for xcb_randr_configure_output_property.

# const
#   XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY* = 12

# ## *
# ##  @brief xcb_randr_configure_output_property_request_t
# ##

# type
#   xcb_randr_configure_output_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     property*: xcb_atom_t
#     pending*: uint8
#     range*: uint8
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_randr_change_output_property.

# const
#   XCB_RANDR_CHANGE_OUTPUT_PROPERTY* = 13

# ## *
# ##  @brief xcb_randr_change_output_property_request_t
# ##

# type
#   xcb_randr_change_output_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     format*: uint8
#     mode*: uint8
#     pad0*: array[2, uint8]
#     num_units*: uint32


# ## * Opcode for xcb_randr_delete_output_property.

# const
#   XCB_RANDR_DELETE_OUTPUT_PROPERTY* = 14

# ## *
# ##  @brief xcb_randr_delete_output_property_request_t
# ##

# type
#   xcb_randr_delete_output_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     property*: xcb_atom_t

# type
#   xcb_randr_get_output_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_output_property.

# const
#   XCB_RANDR_GET_OUTPUT_PROPERTY* = 15

# ## *
# ##  @brief xcb_randr_get_output_property_request_t
# ##

# type
#   xcb_randr_get_output_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     long_offset*: uint32
#     long_length*: uint32
#     _delete*: uint8
#     pending*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_get_output_property_reply_t
# ##

# type
#   xcb_randr_get_output_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     format*: uint8
#     sequence*: uint16
#     length*: uint32
#     `type`*: xcb_atom_t
#     bytes_after*: uint32
#     num_items*: uint32
#     pad0*: array[12, uint8]


# ## *
# ##  @brief xcb_randr_create_mode_cookie_t
# ##

# type
#   xcb_randr_create_mode_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_create_mode.

# const
#   XCB_RANDR_CREATE_MODE* = 16

# ## *
# ##  @brief xcb_randr_create_mode_request_t
# ##

# type
#   xcb_randr_create_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     mode_info*: xcb_randr_mode_info_t


# ## *
# ##  @brief xcb_randr_create_mode_reply_t
# ##

# type
#   xcb_randr_create_mode_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     mode*: xcb_randr_mode_t
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_randr_destroy_mode.

# const
#   XCB_RANDR_DESTROY_MODE* = 17

# ## *
# ##  @brief xcb_randr_destroy_mode_request_t
# ##

# type
#   xcb_randr_destroy_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     mode*: xcb_randr_mode_t


# ## * Opcode for xcb_randr_add_output_mode.

# const
#   XCB_RANDR_ADD_OUTPUT_MODE* = 18

# ## *
# ##  @brief xcb_randr_add_output_mode_request_t
# ##

# type
#   xcb_randr_add_output_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     mode*: xcb_randr_mode_t


# ## * Opcode for xcb_randr_delete_output_mode.

# const
#   XCB_RANDR_DELETE_OUTPUT_MODE* = 19

# ## *
# ##  @brief xcb_randr_delete_output_mode_request_t
# ##

# type
#   xcb_randr_delete_output_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output*: xcb_randr_output_t
#     mode*: xcb_randr_mode_t


# ## *
# ##  @brief xcb_randr_get_crtc_info_cookie_t
# ##

# type
#   xcb_randr_get_crtc_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_crtc_info.

# const
#   XCB_RANDR_GET_CRTC_INFO* = 20

# ## *
# ##  @brief xcb_randr_get_crtc_info_request_t
# ##

# type
#   xcb_randr_get_crtc_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t
#     config_timestamp*: xcb_timestamp_t

# type
#   xcb_randr_set_crtc_config_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_set_crtc_config.

# const
#   XCB_RANDR_SET_CRTC_CONFIG* = 21

# ## *
# ##  @brief xcb_randr_set_crtc_config_request_t
# ##

# type
#   xcb_randr_set_crtc_config_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t
#     timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     x*: int16
#     y*: int16
#     mode*: xcb_randr_mode_t
#     rotation*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_set_crtc_config_reply_t
# ##

# type
#   xcb_randr_set_crtc_config_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     pad0*: array[20, uint8]


# ## *
# ##  @brief xcb_randr_get_crtc_gamma_size_cookie_t
# ##

# type
#   xcb_randr_get_crtc_gamma_size_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_crtc_gamma_size.

# const
#   XCB_RANDR_GET_CRTC_GAMMA_SIZE* = 22

# ## *
# ##  @brief xcb_randr_get_crtc_gamma_size_request_t
# ##

# type
#   xcb_randr_get_crtc_gamma_size_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t


# ## *
# ##  @brief xcb_randr_get_crtc_gamma_size_reply_t
# ##

# type
#   xcb_randr_get_crtc_gamma_size_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     size*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_randr_get_crtc_gamma_cookie_t
# ##

# type
#   xcb_randr_get_crtc_gamma_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_crtc_gamma.

# const
#   XCB_RANDR_GET_CRTC_GAMMA* = 23

# ## *
# ##  @brief xcb_randr_get_crtc_gamma_request_t
# ##

# type
#   xcb_randr_get_crtc_gamma_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t


# ## *
# ##  @brief xcb_randr_get_crtc_gamma_reply_t
# ##

# type
#   xcb_randr_get_crtc_gamma_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     size*: uint16
#     pad1*: array[22, uint8]


# ## * Opcode for xcb_randr_set_crtc_gamma.

# const
#   XCB_RANDR_SET_CRTC_GAMMA* = 24

# ## *
# ##  @brief xcb_randr_set_crtc_gamma_request_t
# ##

# type
#   xcb_randr_set_crtc_gamma_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t
#     size*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_get_screen_resources_current_cookie_t
# ##

# type
#   xcb_randr_get_screen_resources_current_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_screen_resources_current.

# const
#   XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT* = 25

# ## *
# ##  @brief xcb_randr_get_screen_resources_current_request_t
# ##

# type
#   xcb_randr_get_screen_resources_current_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_randr_get_screen_resources_current_reply_t
# ##

# type
#   xcb_randr_get_screen_resources_current_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     num_crtcs*: uint16
#     num_outputs*: uint16
#     num_modes*: uint16
#     names_len*: uint16
#     pad1*: array[8, uint8]

#   xcb_randr_transform_t* = enum
#     XCB_RANDR_TRANSFORM_UNIT = 1, XCB_RANDR_TRANSFORM_SCALE_UP = 2,
#     XCB_RANDR_TRANSFORM_SCALE_DOWN = 4, XCB_RANDR_TRANSFORM_PROJECTIVE = 8


# ## * Opcode for xcb_randr_set_crtc_transform.

# const
#   XCB_RANDR_SET_CRTC_TRANSFORM* = 26

# ## *
# ##  @brief xcb_randr_set_crtc_transform_request_t
# ##

# type
#   xcb_randr_set_crtc_transform_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t
#     transform*: xcb_render_transform_t
#     filter_len*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_get_crtc_transform_cookie_t
# ##

# type
#   xcb_randr_get_crtc_transform_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_crtc_transform.

# const
#   XCB_RANDR_GET_CRTC_TRANSFORM* = 27

# ## *
# ##  @brief xcb_randr_get_crtc_transform_request_t
# ##

# type
#   xcb_randr_get_crtc_transform_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t


# ## *
# ##  @brief xcb_randr_get_crtc_transform_reply_t
# ##

# type
#   xcb_randr_get_crtc_transform_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pending_transform*: xcb_render_transform_t
#     has_transforms*: uint8
#     pad1*: array[3, uint8]
#     current_transform*: xcb_render_transform_t
#     pad2*: array[4, uint8]
#     pending_len*: uint16
#     pending_nparams*: uint16
#     current_len*: uint16
#     current_nparams*: uint16


# ## *
# ##  @brief xcb_randr_get_panning_cookie_t
# ##

# type
#   xcb_randr_get_panning_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_panning.

# const
#   XCB_RANDR_GET_PANNING* = 28

# ## *
# ##  @brief xcb_randr_get_panning_request_t
# ##

# type
#   xcb_randr_get_panning_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t


# ## *
# ##  @brief xcb_randr_get_panning_reply_t
# ##

# type
#   xcb_randr_get_panning_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     left*: uint16
#     top*: uint16
#     width*: uint16
#     height*: uint16
#     track_left*: uint16
#     track_top*: uint16
#     track_width*: uint16
#     track_height*: uint16
#     border_left*: int16
#     border_top*: int16
#     border_right*: int16
#     border_bottom*: int16


# ## *
# ##  @brief xcb_randr_set_panning_cookie_t
# ##

# type
#   xcb_randr_set_panning_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_set_panning.

# const
#   XCB_RANDR_SET_PANNING* = 29

# ## *
# ##  @brief xcb_randr_set_panning_request_t
# ##

# type
#   xcb_randr_set_panning_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     crtc*: xcb_randr_crtc_t
#     timestamp*: xcb_timestamp_t
#     left*: uint16
#     top*: uint16
#     width*: uint16
#     height*: uint16
#     track_left*: uint16
#     track_top*: uint16
#     track_width*: uint16
#     track_height*: uint16
#     border_left*: int16
#     border_top*: int16
#     border_right*: int16
#     border_bottom*: int16


# ## *
# ##  @brief xcb_randr_set_panning_reply_t
# ##

# type
#   xcb_randr_set_panning_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t


# ## * Opcode for xcb_randr_set_output_primary.

# const
#   XCB_RANDR_SET_OUTPUT_PRIMARY* = 30

# ## *
# ##  @brief xcb_randr_set_output_primary_request_t
# ##

# type
#   xcb_randr_set_output_primary_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     output*: xcb_randr_output_t


# ## *
# ##  @brief xcb_randr_get_output_primary_cookie_t
# ##

# type
#   xcb_randr_get_output_primary_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_output_primary.

# const
#   XCB_RANDR_GET_OUTPUT_PRIMARY* = 31

# ## *
# ##  @brief xcb_randr_get_output_primary_request_t
# ##

# type
#   xcb_randr_get_output_primary_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_randr_get_output_primary_reply_t
# ##

# type
#   xcb_randr_get_output_primary_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     output*: xcb_randr_output_t


# ## *
# ##  @brief xcb_randr_get_providers_cookie_t
# ##

# type
#   xcb_randr_get_providers_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_providers.

# const
#   XCB_RANDR_GET_PROVIDERS* = 32

# ## *
# ##  @brief xcb_randr_get_providers_request_t
# ##

# type
#   xcb_randr_get_providers_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_randr_get_providers_reply_t
# ##

# type
#   xcb_randr_get_providers_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     num_providers*: uint16
#     pad1*: array[18, uint8]

#   xcb_randr_provider_capability_t* = enum
#     XCB_RANDR_PROVIDER_CAPABILITY_SOURCE_OUTPUT = 1,
#     XCB_RANDR_PROVIDER_CAPABILITY_SINK_OUTPUT = 2,
#     XCB_RANDR_PROVIDER_CAPABILITY_SOURCE_OFFLOAD = 4,
#     XCB_RANDR_PROVIDER_CAPABILITY_SINK_OFFLOAD = 8


# ## *
# ##  @brief xcb_randr_get_provider_info_cookie_t
# ##

# type
#   xcb_randr_get_provider_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_provider_info.

# const
#   XCB_RANDR_GET_PROVIDER_INFO* = 33

# ## *
# ##  @brief xcb_randr_get_provider_info_request_t
# ##

# type
#   xcb_randr_get_provider_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     config_timestamp*: xcb_timestamp_t


# ## *
# ##  @brief xcb_randr_get_provider_info_reply_t
# ##

# type
#   xcb_randr_get_provider_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     capabilities*: uint32
#     num_crtcs*: uint16
#     num_outputs*: uint16
#     num_associated_providers*: uint16
#     name_len*: uint16
#     pad0*: array[8, uint8]


# ## * Opcode for xcb_randr_set_provider_offload_sink.

# const
#   XCB_RANDR_SET_PROVIDER_OFFLOAD_SINK* = 34

# ## *
# ##  @brief xcb_randr_set_provider_offload_sink_request_t
# ##

# type
#   xcb_randr_set_provider_offload_sink_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     sink_provider*: xcb_randr_provider_t
#     config_timestamp*: xcb_timestamp_t


# ## * Opcode for xcb_randr_set_provider_output_source.

# const
#   XCB_RANDR_SET_PROVIDER_OUTPUT_SOURCE* = 35

# ## *
# ##  @brief xcb_randr_set_provider_output_source_request_t
# ##

# type
#   xcb_randr_set_provider_output_source_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     source_provider*: xcb_randr_provider_t
#     config_timestamp*: xcb_timestamp_t


# ## *
# ##  @brief xcb_randr_list_provider_properties_cookie_t
# ##

# type
#   xcb_randr_list_provider_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_list_provider_properties.

# const
#   XCB_RANDR_LIST_PROVIDER_PROPERTIES* = 36

# ## *
# ##  @brief xcb_randr_list_provider_properties_request_t
# ##

# type
#   xcb_randr_list_provider_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t


# ## *
# ##  @brief xcb_randr_list_provider_properties_reply_t
# ##

# type
#   xcb_randr_list_provider_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_atoms*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_randr_query_provider_property_cookie_t
# ##

# type
#   xcb_randr_query_provider_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_query_provider_property.

# const
#   XCB_RANDR_QUERY_PROVIDER_PROPERTY* = 37

# ## *
# ##  @brief xcb_randr_query_provider_property_request_t
# ##

# type
#   xcb_randr_query_provider_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_randr_query_provider_property_reply_t
# ##

# type
#   xcb_randr_query_provider_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pending*: uint8
#     range*: uint8
#     immutable*: uint8
#     pad1*: array[21, uint8]


# ## * Opcode for xcb_randr_configure_provider_property.

# const
#   XCB_RANDR_CONFIGURE_PROVIDER_PROPERTY* = 38

# ## *
# ##  @brief xcb_randr_configure_provider_property_request_t
# ##

# type
#   xcb_randr_configure_provider_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     property*: xcb_atom_t
#     pending*: uint8
#     range*: uint8
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_randr_change_provider_property.

# const
#   XCB_RANDR_CHANGE_PROVIDER_PROPERTY* = 39

# ## *
# ##  @brief xcb_randr_change_provider_property_request_t
# ##

# type
#   xcb_randr_change_provider_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     format*: uint8
#     mode*: uint8
#     pad0*: array[2, uint8]
#     num_items*: uint32


# ## * Opcode for xcb_randr_delete_provider_property.

# const
#   XCB_RANDR_DELETE_PROVIDER_PROPERTY* = 40

# ## *
# ##  @brief xcb_randr_delete_provider_property_request_t
# ##

# type
#   xcb_randr_delete_provider_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_randr_get_provider_property_cookie_t
# ##

# type
#   xcb_randr_get_provider_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_provider_property.

# const
#   XCB_RANDR_GET_PROVIDER_PROPERTY* = 41

# ## *
# ##  @brief xcb_randr_get_provider_property_request_t
# ##

# type
#   xcb_randr_get_provider_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     provider*: xcb_randr_provider_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     long_offset*: uint32
#     long_length*: uint32
#     _delete*: uint8
#     pending*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_randr_get_provider_property_reply_t
# ##

# type
#   xcb_randr_get_provider_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     format*: uint8
#     sequence*: uint16
#     length*: uint32
#     `type`*: xcb_atom_t
#     bytes_after*: uint32
#     num_items*: uint32
#     pad0*: array[12, uint8]


# ## * Opcode for xcb_randr_screen_change_notify.

# const
#   XCB_RANDR_SCREEN_CHANGE_NOTIFY* = 0

# ## *
# ##  @brief xcb_randr_screen_change_notify_event_t
# ##

# type
#   xcb_randr_screen_change_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     rotation*: uint8
#     sequence*: uint16
#     timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     root*: xcb_window_t
#     request_window*: xcb_window_t
#     sizeID*: uint16
#     subpixel_order*: uint16
#     width*: uint16
#     height*: uint16
#     mwidth*: uint16
#     mheight*: uint16

#   xcb_randr_notify_t* = enum
#     XCB_RANDR_NOTIFY_CRTC_CHANGE = 0, XCB_RANDR_NOTIFY_OUTPUT_CHANGE = 1,
#     XCB_RANDR_NOTIFY_OUTPUT_PROPERTY = 2, XCB_RANDR_NOTIFY_PROVIDER_CHANGE = 3,
#     XCB_RANDR_NOTIFY_PROVIDER_PROPERTY = 4, XCB_RANDR_NOTIFY_RESOURCE_CHANGE = 5,
#     XCB_RANDR_NOTIFY_LEASE = 6


# ## *
# ##  @brief xcb_randr_crtc_change_t
# ##

# type
#   xcb_randr_crtc_change_t* {.bycopy.} = object
#     timestamp*: xcb_timestamp_t
#     window*: xcb_window_t
#     crtc*: xcb_randr_crtc_t
#     mode*: xcb_randr_mode_t
#     rotation*: uint16
#     pad0*: array[2, uint8]
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_randr_crtc_change_iterator_t
# ##

# type
#   xcb_randr_crtc_change_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_crtc_change_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_output_change_t
# ##

# type
#   xcb_randr_output_change_t* {.bycopy.} = object
#     timestamp*: xcb_timestamp_t
#     config_timestamp*: xcb_timestamp_t
#     window*: xcb_window_t
#     output*: xcb_randr_output_t
#     crtc*: xcb_randr_crtc_t
#     mode*: xcb_randr_mode_t
#     rotation*: uint16
#     connection*: uint8
#     subpixel_order*: uint8


# ## *
# ##  @brief xcb_randr_output_change_iterator_t
# ##

# type
#   xcb_randr_output_change_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_output_change_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_output_property_t
# ##

# type
#   xcb_randr_output_property_t* {.bycopy.} = object
#     window*: xcb_window_t
#     output*: xcb_randr_output_t
#     atom*: xcb_atom_t
#     timestamp*: xcb_timestamp_t
#     status*: uint8
#     pad0*: array[11, uint8]


# ## *
# ##  @brief xcb_randr_output_property_iterator_t
# ##

# type
#   xcb_randr_output_property_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_output_property_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_provider_change_t
# ##

# type
#   xcb_randr_provider_change_t* {.bycopy.} = object
#     timestamp*: xcb_timestamp_t
#     window*: xcb_window_t
#     provider*: xcb_randr_provider_t
#     pad0*: array[16, uint8]


# ## *
# ##  @brief xcb_randr_provider_change_iterator_t
# ##

# type
#   xcb_randr_provider_change_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_provider_change_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_provider_property_t
# ##

# type
#   xcb_randr_provider_property_t* {.bycopy.} = object
#     window*: xcb_window_t
#     provider*: xcb_randr_provider_t
#     atom*: xcb_atom_t
#     timestamp*: xcb_timestamp_t
#     state*: uint8
#     pad0*: array[11, uint8]


# ## *
# ##  @brief xcb_randr_provider_property_iterator_t
# ##

# type
#   xcb_randr_provider_property_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_provider_property_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_resource_change_t
# ##

# type
#   xcb_randr_resource_change_t* {.bycopy.} = object
#     timestamp*: xcb_timestamp_t
#     window*: xcb_window_t
#     pad0*: array[20, uint8]


# ## *
# ##  @brief xcb_randr_resource_change_iterator_t
# ##

# type
#   xcb_randr_resource_change_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_resource_change_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_monitor_info_t
# ##

# type
#   xcb_randr_monitor_info_t* {.bycopy.} = object
#     name*: xcb_atom_t
#     primary*: uint8
#     automatic*: uint8
#     nOutput*: uint16
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     width_in_millimeters*: uint32
#     height_in_millimeters*: uint32


# ## *
# ##  @brief xcb_randr_monitor_info_iterator_t
# ##

# type
#   xcb_randr_monitor_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_monitor_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_get_monitors_cookie_t
# ##

# type
#   xcb_randr_get_monitors_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_get_monitors.

# const
#   XCB_RANDR_GET_MONITORS* = 42

# ## *
# ##  @brief xcb_randr_get_monitors_request_t
# ##

# type
#   xcb_randr_get_monitors_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     get_active*: uint8


# ## *
# ##  @brief xcb_randr_get_monitors_reply_t
# ##

# type
#   xcb_randr_get_monitors_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     timestamp*: xcb_timestamp_t
#     nMonitors*: uint32
#     nOutputs*: uint32
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_randr_set_monitor.

# const
#   XCB_RANDR_SET_MONITOR* = 43

# ## *
# ##  @brief xcb_randr_set_monitor_request_t
# ##

# type
#   xcb_randr_set_monitor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_randr_delete_monitor.

# const
#   XCB_RANDR_DELETE_MONITOR* = 44

# ## *
# ##  @brief xcb_randr_delete_monitor_request_t
# ##

# type
#   xcb_randr_delete_monitor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     name*: xcb_atom_t


# ## *
# ##  @brief xcb_randr_create_lease_cookie_t
# ##

# type
#   xcb_randr_create_lease_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_randr_create_lease.

# const
#   XCB_RANDR_CREATE_LEASE* = 45

# ## *
# ##  @brief xcb_randr_create_lease_request_t
# ##

# type
#   xcb_randr_create_lease_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     lid*: xcb_randr_lease_t
#     num_crtcs*: uint16
#     num_outputs*: uint16


# ## *
# ##  @brief xcb_randr_create_lease_reply_t
# ##

# type
#   xcb_randr_create_lease_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## * Opcode for xcb_randr_free_lease.

# const
#   XCB_RANDR_FREE_LEASE* = 46

# ## *
# ##  @brief xcb_randr_free_lease_request_t
# ##

# type
#   xcb_randr_free_lease_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     lid*: xcb_randr_lease_t
#     terminate*: uint8


# ## *
# ##  @brief xcb_randr_lease_notify_t
# ##

# type
#   xcb_randr_lease_notify_t* {.bycopy.} = object
#     timestamp*: xcb_timestamp_t
#     window*: xcb_window_t
#     lease*: xcb_randr_lease_t
#     created*: uint8
#     pad0*: array[15, uint8]


# ## *
# ##  @brief xcb_randr_lease_notify_iterator_t
# ##

# type
#   xcb_randr_lease_notify_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_lease_notify_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_randr_notify_data_t
# ##

# type
#   xcb_randr_notify_data_t* {.bycopy.} = object {.union.}
#     cc*: xcb_randr_crtc_change_t
#     oc*: xcb_randr_output_change_t
#     op*: xcb_randr_output_property_t
#     pc*: xcb_randr_provider_change_t
#     pp*: xcb_randr_provider_property_t
#     rc*: xcb_randr_resource_change_t
#     lc*: xcb_randr_lease_notify_t


# ## *
# ##  @brief xcb_randr_notify_data_iterator_t
# ##

# type
#   xcb_randr_notify_data_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_randr_notify_data_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_randr_notify.

# const
#   XCB_RANDR_NOTIFY* = 1

# ## *
# ##  @brief xcb_randr_notify_event_t
# ##

# type
#   xcb_randr_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     subCode*: uint8
#     sequence*: uint16
#     u*: xcb_randr_notify_data_t


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_mode_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_mode_t)
# ##


# proc xcb_randr_list_output_properties_sizeof*(buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_list_output_properties_unchecked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t): xcb_randr_list_output_properties_cookie_t

# proc xcb_randr_list_output_properties_atoms_length*(
#     R: ptr xcb_randr_list_output_properties_reply_t): cint
# proc xcb_randr_list_output_properties_atoms_end*(
#     R: ptr xcb_randr_list_output_properties_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_list_output_properties_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##


# proc xcb_randr_query_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_query_output_property*(c: ptr xcb_connection_t;
#                                      output: xcb_randr_output_t;
#                                      property: xcb_atom_t): xcb_randr_query_output_property_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_query_output_property_unchecked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t): xcb_randr_query_output_property_cookie_t
# proc xcb_randr_query_output_property_valid_values*(
#     R: ptr xcb_randr_query_output_property_reply_t): ptr int32
# proc xcb_randr_query_output_property_valid_values_length*(
#     R: ptr xcb_randr_query_output_property_reply_t): cint
# proc xcb_randr_query_output_property_valid_values_end*(
#     R: ptr xcb_randr_query_output_property_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_query_output_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_query_output_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_query_output_property_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_query_output_property_reply_t
# proc xcb_randr_configure_output_property_sizeof*(_buffer: pointer;
#     values_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_configure_output_property_checked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t; pending: uint8;
#     range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_configure_output_property*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t; pending: uint8;
#     range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# proc xcb_randr_configure_output_property_values*(
#     R: ptr xcb_randr_configure_output_property_request_t): ptr int32
# proc xcb_randr_configure_output_property_values_length*(
#     R: ptr xcb_randr_configure_output_property_request_t): cint
# proc xcb_randr_configure_output_property_values_end*(
#     R: ptr xcb_randr_configure_output_property_request_t): xcb_generic_iterator_t
# proc xcb_randr_change_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_change_output_property_checked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t; `type`: xcb_atom_t;
#     format: uint8; mode: uint8; num_units: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_change_output_property*(c: ptr xcb_connection_t;
#                                       output: xcb_randr_output_t;
#                                       property: xcb_atom_t; `type`: xcb_atom_t;
#                                       format: uint8; mode: uint8;
#                                       num_units: uint32; data: pointer): xcb_void_cookie_t
# proc xcb_randr_change_output_property_data*(
#     R: ptr xcb_randr_change_output_property_request_t): pointer
# proc xcb_randr_change_output_property_data_length*(
#     R: ptr xcb_randr_change_output_property_request_t): cint
# proc xcb_randr_change_output_property_data_end*(
#     R: ptr xcb_randr_change_output_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_delete_output_property_checked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_delete_output_property*(c: ptr xcb_connection_t;
#                                       output: xcb_randr_output_t;
#                                       property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_get_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_output_property_unchecked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; property: xcb_atom_t; `type`: xcb_atom_t;
#     long_offset: uint32; long_length: uint32; _delete: uint8; pending: uint8): xcb_randr_get_output_property_cookie_t


# proc xcb_randr_get_output_property_data_end*(
#     R: ptr xcb_randr_get_output_property_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_output_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##


# proc xcb_randr_create_mode_sizeof*(_buffer: pointer; name_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_create_mode_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      mode_info: xcb_randr_mode_info_t;
#                                      name_len: uint32; name: cstring): xcb_randr_create_mode_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_create_mode_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_destroy_mode_checked*(c: ptr xcb_connection_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_destroy_mode*(c: ptr xcb_connection_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_add_output_mode_checked*(c: ptr xcb_connection_t;
#                                        output: xcb_randr_output_t;
#                                        mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_add_output_mode*(c: ptr xcb_connection_t; output: xcb_randr_output_t;
#                                mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_delete_output_mode_checked*(c: ptr xcb_connection_t;
#     output: xcb_randr_output_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_delete_output_mode*(c: ptr xcb_connection_t;
#                                   output: xcb_randr_output_t;
#                                   mode: xcb_randr_mode_t): xcb_void_cookie_t
# proc xcb_randr_get_crtc_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_crtc_info*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
#                              config_timestamp: xcb_timestamp_t): xcb_randr_get_crtc_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_crtc_info_unchecked*(c: ptr xcb_connection_t;
#                                        crtc: xcb_randr_crtc_t;
#                                        config_timestamp: xcb_timestamp_t): xcb_randr_get_crtc_info_cookie_t


# proc xcb_randr_get_crtc_info_possible_end*(R: ptr xcb_randr_get_crtc_info_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_crtc_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_set_crtc_config_sizeof*(_buffer: pointer; outputs_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_crtc_config*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
#                                timestamp: xcb_timestamp_t;
#                                config_timestamp: xcb_timestamp_t; x: int16;
#                                y: int16; mode: xcb_randr_mode_t;
#                                rotation: uint16; outputs_len: uint32;
#                                outputs: ptr xcb_randr_output_t): xcb_randr_set_crtc_config_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_set_crtc_config_unchecked*(c: ptr xcb_connection_t;
#     crtc: xcb_randr_crtc_t; timestamp: xcb_timestamp_t;
#     config_timestamp: xcb_timestamp_t; x: int16; y: int16; mode: xcb_randr_mode_t;
#     rotation: uint16; outputs_len: uint32; outputs: ptr xcb_randr_output_t): xcb_randr_set_crtc_config_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_set_crtc_config_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_set_crtc_config_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_set_crtc_config_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_randr_set_crtc_config_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_crtc_gamma_size*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_size_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_crtc_gamma_size_unchecked*(c: ptr xcb_connection_t;
#     crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_size_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_crtc_gamma_size_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_crtc_gamma_size_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_gamma_size_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_gamma_size_reply_t
# proc xcb_randr_get_crtc_gamma_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_crtc_gamma*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_crtc_gamma_unchecked*(c: ptr xcb_connection_t;
#                                         crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_cookie_t
# proc xcb_randr_get_crtc_gamma_red*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_red_length*(R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_red_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_gamma_green*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_green_length*(
#     R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_green_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_gamma_blue*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_blue_length*(
#     R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_blue_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_crtc_gamma_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_crtc_gamma_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_gamma_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_gamma_reply_t
# proc xcb_randr_set_crtc_gamma_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_crtc_gamma_checked*(c: ptr xcb_connection_t;
#                                       crtc: xcb_randr_crtc_t; size: uint16;
#                                       red: ptr uint16; green: ptr uint16;
#                                       blue: ptr uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_crtc_gamma*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
#                               size: uint16; red: ptr uint16; green: ptr uint16;
#                               blue: ptr uint16): xcb_void_cookie_t
# proc xcb_randr_set_crtc_gamma_red*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_red_length*(
#     R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_red_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_gamma_green*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_green_length*(
#     R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_green_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_gamma_blue*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_blue_length*(
#     R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_blue_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_get_screen_resources_current_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_screen_resources_current*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_randr_get_screen_resources_current_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##


# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_screen_resources_current_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_screen_resources_current_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_screen_resources_current_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_screen_resources_current_reply_t
# proc xcb_randr_set_crtc_transform_sizeof*(_buffer: pointer;
#     filter_params_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_crtc_transform_checked*(c: ptr xcb_connection_t;
#     crtc: xcb_randr_crtc_t; transform: xcb_render_transform_t; filter_len: uint16;
#     filter_name: cstring; filter_params_len: uint32;
#     filter_params: ptr xcb_render_fixed_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_crtc_transform*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
#                                   transform: xcb_render_transform_t;
#                                   filter_len: uint16; filter_name: cstring;
#                                   filter_params_len: uint32;
#                                   filter_params: ptr xcb_render_fixed_t): xcb_void_cookie_t
# proc xcb_randr_set_crtc_transform_filter_name*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): cstring
# proc xcb_randr_set_crtc_transform_filter_name_length*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): cint
# proc xcb_randr_set_crtc_transform_filter_name_end*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_transform_filter_params*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): ptr xcb_render_fixed_t
# proc xcb_randr_set_crtc_transform_filter_params_length*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): cint
# proc xcb_randr_set_crtc_transform_filter_params_end*(
#     R: ptr xcb_randr_set_crtc_transform_request_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_crtc_transform*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_transform_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_crtc_transform_unchecked*(c: ptr xcb_connection_t;
#     crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_transform_cookie_t
# proc xcb_randr_get_crtc_transform_pending_filter_name*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cstring
# proc xcb_randr_get_crtc_transform_pending_filter_name_length*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_pending_filter_name_end*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_pending_params*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): ptr xcb_render_fixed_t
# proc xcb_randr_get_crtc_transform_pending_params_length*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_pending_params_end*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_current_filter_name*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cstring
# proc xcb_randr_get_crtc_transform_current_filter_name_length*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_current_filter_name_end*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_current_params*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): ptr xcb_render_fixed_t
# proc xcb_randr_get_crtc_transform_current_params_length*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_current_params_end*(
#     R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_crtc_transform_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_crtc_transform_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_transform_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_transform_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_panning*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_panning_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_panning_unchecked*(c: ptr xcb_connection_t;
#                                      crtc: xcb_randr_crtc_t): xcb_randr_get_panning_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_panning_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_panning_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_panning_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_panning_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_panning*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
#                            timestamp: xcb_timestamp_t; left: uint16;
#                            top: uint16; width: uint16; height: uint16;
#                            track_left: uint16; track_top: uint16;
#                            track_width: uint16; track_height: uint16;
#                            border_left: int16; border_top: int16;
#                            border_right: int16; border_bottom: int16): xcb_randr_set_panning_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_set_panning_unchecked*(c: ptr xcb_connection_t;
#                                      crtc: xcb_randr_crtc_t;
#                                      timestamp: xcb_timestamp_t; left: uint16;
#                                      top: uint16; width: uint16;
#                                      height: uint16; track_left: uint16;
#                                      track_top: uint16; track_width: uint16;
#                                      track_height: uint16; border_left: int16;
#                                      border_top: int16; border_right: int16;
#                                      border_bottom: int16): xcb_randr_set_panning_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_set_panning_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_set_panning_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_set_panning_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_randr_set_panning_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_output_primary_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; output: xcb_randr_output_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_output_primary*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                   output: xcb_randr_output_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_output_primary_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_randr_get_output_primary_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_output_primary_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_providers_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_providers*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_providers_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_providers_unchecked*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t): xcb_randr_get_providers_cookie_t
# proc xcb_randr_get_providers_providers*(R: ptr xcb_randr_get_providers_reply_t): ptr xcb_randr_provider_t
# proc xcb_randr_get_providers_providers_length*(
#     R: ptr xcb_randr_get_providers_reply_t): cint
# proc xcb_randr_get_providers_providers_end*(
#     R: ptr xcb_randr_get_providers_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_providers_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_providers_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_providers_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_providers_reply_t
# proc xcb_randr_get_provider_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_provider_info*(c: ptr xcb_connection_t;
#                                  provider: xcb_randr_provider_t;
#                                  config_timestamp: xcb_timestamp_t): xcb_randr_get_provider_info_cookie_t


# proc xcb_randr_get_provider_info_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_provider_info_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_provider_info_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_provider_offload_sink_checked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; sink_provider: xcb_randr_provider_t;
#     config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_provider_offload_sink*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; sink_provider: xcb_randr_provider_t;
#     config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_provider_output_source_checked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; source_provider: xcb_randr_provider_t;
#     config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_provider_output_source*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; source_provider: xcb_randr_provider_t;
#     config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# proc xcb_randr_list_provider_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_query_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_query_provider_property*(c: ptr xcb_connection_t;
#                                        provider: xcb_randr_provider_t;
#                                        property: xcb_atom_t): xcb_randr_query_provider_property_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_query_provider_property_unchecked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t): xcb_randr_query_provider_property_cookie_t
# proc xcb_randr_query_provider_property_valid_values*(
#     R: ptr xcb_randr_query_provider_property_reply_t): ptr int32
# proc xcb_randr_query_provider_property_valid_values_length*(
#     R: ptr xcb_randr_query_provider_property_reply_t): cint
# proc xcb_randr_query_provider_property_valid_values_end*(
#     R: ptr xcb_randr_query_provider_property_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_query_provider_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_query_provider_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_query_provider_property_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_query_provider_property_reply_t
# proc xcb_randr_configure_provider_property_sizeof*(_buffer: pointer;
#     values_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_configure_provider_property_checked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t; pending: uint8;
#     range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_configure_provider_property*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t; pending: uint8;
#     range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# proc xcb_randr_configure_provider_property_values*(
#     R: ptr xcb_randr_configure_provider_property_request_t): ptr int32
# proc xcb_randr_configure_provider_property_values_length*(
#     R: ptr xcb_randr_configure_provider_property_request_t): cint
# proc xcb_randr_configure_provider_property_values_end*(
#     R: ptr xcb_randr_configure_provider_property_request_t): xcb_generic_iterator_t
# proc xcb_randr_change_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_change_provider_property_checked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t; `type`: xcb_atom_t;
#     format: uint8; mode: uint8; num_items: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_change_provider_property*(c: ptr xcb_connection_t;
#                                         provider: xcb_randr_provider_t;
#                                         property: xcb_atom_t; `type`: xcb_atom_t;
#                                         format: uint8; mode: uint8;
#                                         num_items: uint32; data: pointer): xcb_void_cookie_t
# proc xcb_randr_change_provider_property_data*(
#     R: ptr xcb_randr_change_provider_property_request_t): pointer
# proc xcb_randr_change_provider_property_data_length*(
#     R: ptr xcb_randr_change_provider_property_request_t): cint
# proc xcb_randr_change_provider_property_data_end*(
#     R: ptr xcb_randr_change_provider_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_delete_provider_property_checked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_delete_provider_property*(c: ptr xcb_connection_t;
#                                         provider: xcb_randr_provider_t;
#                                         property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_get_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_get_provider_property*(c: ptr xcb_connection_t;
#                                      provider: xcb_randr_provider_t;
#                                      property: xcb_atom_t; `type`: xcb_atom_t;
#                                      long_offset: uint32; long_length: uint32;
#                                      _delete: uint8; pending: uint8): xcb_randr_get_provider_property_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_get_provider_property_unchecked*(c: ptr xcb_connection_t;
#     provider: xcb_randr_provider_t; property: xcb_atom_t; `type`: xcb_atom_t;
#     long_offset: uint32; long_length: uint32; _delete: uint8; pending: uint8): xcb_randr_get_provider_property_cookie_t
# proc xcb_randr_get_provider_property_data*(
#     R: ptr xcb_randr_get_provider_property_reply_t): pointer
# proc xcb_randr_get_provider_property_data_length*(
#     R: ptr xcb_randr_get_provider_property_reply_t): cint
# proc xcb_randr_get_provider_property_data_end*(
#     R: ptr xcb_randr_get_provider_property_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_get_provider_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_get_provider_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_provider_property_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_provider_property_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_crtc_change_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_crtc_change_t)
# ##

# proc xcb_randr_crtc_change_next*(i: ptr xcb_randr_crtc_change_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_crtc_change_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_crtc_change_end*(i: xcb_randr_crtc_change_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_output_change_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_output_change_t)
# ##

# proc xcb_randr_output_change_next*(i: ptr xcb_randr_output_change_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_output_change_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_output_change_end*(i: xcb_randr_output_change_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_output_property_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_output_property_t)
# ##

# proc xcb_randr_output_property_next*(i: ptr xcb_randr_output_property_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_output_property_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_output_property_end*(i: xcb_randr_output_property_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_provider_change_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_provider_change_t)
# ##

# proc xcb_randr_provider_change_next*(i: ptr xcb_randr_provider_change_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_provider_change_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_provider_change_end*(i: xcb_randr_provider_change_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_provider_property_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_provider_property_t)
# ##

# proc xcb_randr_provider_property_next*(i: ptr xcb_randr_provider_property_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_provider_property_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_provider_property_end*(i: xcb_randr_provider_property_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_resource_change_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_resource_change_t)
# ##

# proc xcb_randr_resource_change_next*(i: ptr xcb_randr_resource_change_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_resource_change_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_resource_change_end*(i: xcb_randr_resource_change_iterator_t): xcb_generic_iterator_t
# proc xcb_randr_monitor_info_sizeof*(_buffer: pointer): cint
# proc xcb_randr_monitor_info_outputs_end*(R: ptr xcb_randr_monitor_info_t): xcb_generic_iterator_t

# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_monitor_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_monitor_info_end*(i: xcb_randr_monitor_info_iterator_t): xcb_generic_iterator_t

# proc xcb_randr_set_monitor_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_set_monitor_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                    monitorinfo: ptr xcb_randr_monitor_info_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_set_monitor*(c: ptr xcb_connection_t; window: xcb_window_t;
#                            monitorinfo: ptr xcb_randr_monitor_info_t): xcb_void_cookie_t
# proc xcb_randr_set_monitor_monitorinfo*(R: ptr xcb_randr_set_monitor_request_t): ptr xcb_randr_monitor_info_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_delete_monitor_checked*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; name: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_delete_monitor*(c: ptr xcb_connection_t; window: xcb_window_t;
#                               name: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_create_lease_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_create_lease*(c: ptr xcb_connection_t; window: xcb_window_t;
#                             lid: xcb_randr_lease_t; num_crtcs: uint16;
#                             num_outputs: uint16; crtcs: ptr xcb_randr_crtc_t;
#                             outputs: ptr xcb_randr_output_t): xcb_randr_create_lease_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_randr_create_lease_unchecked*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t;
#                                       lid: xcb_randr_lease_t; num_crtcs: uint16;
#                                       num_outputs: uint16;
#                                       crtcs: ptr xcb_randr_crtc_t;
#                                       outputs: ptr xcb_randr_output_t): xcb_randr_create_lease_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_randr_create_lease_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_create_lease_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_create_lease_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_randr_create_lease_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_randr_create_lease_reply_fds*(c: ptr xcb_connection_t; ## *<
#                                       reply: ptr xcb_randr_create_lease_reply_t): ptr cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_randr_free_lease_checked*(c: ptr xcb_connection_t; lid: xcb_randr_lease_t;
#                                   terminate: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_randr_free_lease*(c: ptr xcb_connection_t; lid: xcb_randr_lease_t;
#                           terminate: uint8): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_lease_notify_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_lease_notify_t)
# ##

# proc xcb_randr_lease_notify_next*(i: ptr xcb_randr_lease_notify_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_lease_notify_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_lease_notify_end*(i: xcb_randr_lease_notify_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_randr_notify_data_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_randr_notify_data_t)
# ##

# proc xcb_randr_notify_data_next*(i: ptr xcb_randr_notify_data_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_randr_notify_data_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_randr_notify_data_end*(i: xcb_randr_notify_data_iterator_t): xcb_generic_iterator_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from record.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Record_API XCB Record API
# ##  @brief Record XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb

# const
#   XCB_RECORD_MAJOR_VERSION* = 1
#   XCB_RECORD_MINOR_VERSION* = 13

# var xcb_record_id*: xcb_extension_t

# type
#   xcb_record_context_t* = uint32

# ## *
# ##  @brief xcb_record_context_iterator_t
# ##

# type
#   xcb_record_context_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_context_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_record_range_8_t
# ##

# type
#   xcb_record_range_8_t* {.bycopy.} = object
#     first*: uint8
#     last*: uint8


# ## *
# ##  @brief xcb_record_range_8_iterator_t
# ##

# type
#   xcb_record_range_8_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_range_8_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_record_range_16_t
# ##

# type
#   xcb_record_range_16_t* {.bycopy.} = object
#     first*: uint16
#     last*: uint16


# ## *
# ##  @brief xcb_record_range_16_iterator_t
# ##

# type
#   xcb_record_range_16_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_range_16_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_record_ext_range_t
# ##

# type
#   xcb_record_ext_range_t* {.bycopy.} = object
#     major*: xcb_record_range_8_t
#     minor*: xcb_record_range_16_t


# ## *
# ##  @brief xcb_record_ext_range_iterator_t
# ##

# type
#   xcb_record_ext_range_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_ext_range_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_record_range_t
# ##

# type
#   xcb_record_range_t* {.bycopy.} = object
#     core_requests*: xcb_record_range_8_t
#     core_replies*: xcb_record_range_8_t
#     ext_requests*: xcb_record_ext_range_t
#     ext_replies*: xcb_record_ext_range_t
#     delivered_events*: xcb_record_range_8_t
#     device_events*: xcb_record_range_8_t
#     errors*: xcb_record_range_8_t
#     client_started*: uint8
#     client_died*: uint8


# ## *
# ##  @brief xcb_record_range_iterator_t
# ##

# type
#   xcb_record_range_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_range_t
#     rem*: cint
#     index*: cint

#   xcb_record_element_header_t* = uint8

# ## *
# ##  @brief xcb_record_element_header_iterator_t
# ##

# type
#   xcb_record_element_header_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_element_header_t
#     rem*: cint
#     index*: cint

#   xcb_record_h_type_t* = enum
#     XCB_RECORD_H_TYPE_FROM_SERVER_TIME = 1, XCB_RECORD_H_TYPE_FROM_CLIENT_TIME = 2,
#     XCB_RECORD_H_TYPE_FROM_CLIENT_SEQUENCE = 4
#   xcb_record_client_spec_t* = uint32


# ## *
# ##  @brief xcb_record_client_spec_iterator_t
# ##

# type
#   xcb_record_client_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_client_spec_t
#     rem*: cint
#     index*: cint

#   xcb_record_cs_t* = enum
#     XCB_RECORD_CS_CURRENT_CLIENTS = 1, XCB_RECORD_CS_FUTURE_CLIENTS = 2,
#     XCB_RECORD_CS_ALL_CLIENTS = 3


# ## *
# ##  @brief xcb_record_client_info_t
# ##

# type
#   xcb_record_client_info_t* {.bycopy.} = object
#     client_resource*: xcb_record_client_spec_t
#     num_ranges*: uint32


# ## *
# ##  @brief xcb_record_client_info_iterator_t
# ##

# type
#   xcb_record_client_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_record_client_info_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_record_bad_context.

# const
#   XCB_RECORD_BAD_CONTEXT* = 0

# ## *
# ##  @brief xcb_record_bad_context_error_t
# ##

# type
#   xcb_record_bad_context_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     invalid_record*: uint32


# ## *
# ##  @brief xcb_record_query_version_cookie_t
# ##

# type
#   xcb_record_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_record_query_version.

# const
#   XCB_RECORD_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_record_query_version_request_t
# ##

# type
#   xcb_record_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint16
#     minor_version*: uint16


# ## *
# ##  @brief xcb_record_query_version_reply_t
# ##

# type
#   xcb_record_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16


# ## * Opcode for xcb_record_create_context.

# const
#   XCB_RECORD_CREATE_CONTEXT* = 1

# ## *
# ##  @brief xcb_record_create_context_request_t
# ##

# type
#   xcb_record_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t
#     element_header*: xcb_record_element_header_t
#     pad0*: array[3, uint8]
#     num_client_specs*: uint32
#     num_ranges*: uint32


# ## * Opcode for xcb_record_register_clients.

# const
#   XCB_RECORD_REGISTER_CLIENTS* = 2

# ## *
# ##  @brief xcb_record_register_clients_request_t
# ##

# type
#   xcb_record_register_clients_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t
#     element_header*: xcb_record_element_header_t
#     pad0*: array[3, uint8]
#     num_client_specs*: uint32
#     num_ranges*: uint32


# ## * Opcode for xcb_record_unregister_clients.

# const
#   XCB_RECORD_UNREGISTER_CLIENTS* = 3

# ## *
# ##  @brief xcb_record_unregister_clients_request_t
# ##

# type
#   xcb_record_unregister_clients_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t
#     num_client_specs*: uint32


# ## *
# ##  @brief xcb_record_get_context_cookie_t
# ##

# type
#   xcb_record_get_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_record_get_context.

# const
#   XCB_RECORD_GET_CONTEXT* = 4

# ## *
# ##  @brief xcb_record_get_context_request_t
# ##

# type
#   xcb_record_get_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t


# ## *
# ##  @brief xcb_record_get_context_reply_t
# ##

# type
#   xcb_record_get_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     enabled*: uint8
#     sequence*: uint16
#     length*: uint32
#     element_header*: xcb_record_element_header_t
#     pad0*: array[3, uint8]
#     num_intercepted_clients*: uint32
#     pad1*: array[16, uint8]


# ## *
# ##  @brief xcb_record_enable_context_cookie_t
# ##

# type
#   xcb_record_enable_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_record_enable_context.

# const
#   XCB_RECORD_ENABLE_CONTEXT* = 5

# ## *
# ##  @brief xcb_record_enable_context_request_t
# ##

# type
#   xcb_record_enable_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t


# ## *
# ##  @brief xcb_record_enable_context_reply_t
# ##

# type
#   xcb_record_enable_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     category*: uint8
#     sequence*: uint16
#     length*: uint32
#     element_header*: xcb_record_element_header_t
#     client_swapped*: uint8
#     pad0*: array[2, uint8]
#     xid_base*: uint32
#     server_time*: uint32
#     rec_sequence_num*: uint32
#     pad1*: array[8, uint8]


# ## * Opcode for xcb_record_disable_context.

# const
#   XCB_RECORD_DISABLE_CONTEXT* = 6

# ## *
# ##  @brief xcb_record_disable_context_request_t
# ##

# type
#   xcb_record_disable_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t


# ## * Opcode for xcb_record_free_context.

# const
#   XCB_RECORD_FREE_CONTEXT* = 7

# ## *
# ##  @brief xcb_record_free_context_request_t
# ##

# type
#   xcb_record_free_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_record_context_t


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_context_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_context_t)
# ##

# proc xcb_record_context_next*(i: ptr xcb_record_context_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_context_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_context_end*(i: xcb_record_context_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_range_8_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_range_8_t)
# ##

# proc xcb_record_range_8_next*(i: ptr xcb_record_range_8_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_range_8_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_range_8_end*(i: xcb_record_range_8_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_range_16_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_range_16_t)
# ##

# proc xcb_record_range_16_next*(i: ptr xcb_record_range_16_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_range_16_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_range_16_end*(i: xcb_record_range_16_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_ext_range_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_ext_range_t)
# ##

# proc xcb_record_ext_range_next*(i: ptr xcb_record_ext_range_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_ext_range_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_ext_range_end*(i: xcb_record_ext_range_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_range_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_range_t)
# ##

# proc xcb_record_range_next*(i: ptr xcb_record_range_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_range_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_range_end*(i: xcb_record_range_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_element_header_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_element_header_t)
# ##

# proc xcb_record_element_header_next*(i: ptr xcb_record_element_header_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_element_header_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_element_header_end*(i: xcb_record_element_header_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_client_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_client_spec_t)
# ##

# proc xcb_record_client_spec_next*(i: ptr xcb_record_client_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_client_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_client_spec_end*(i: xcb_record_client_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_record_client_info_sizeof*(_buffer: pointer): cint
# proc xcb_record_client_info_ranges*(R: ptr xcb_record_client_info_t): ptr xcb_record_range_t
# proc xcb_record_client_info_ranges_length*(R: ptr xcb_record_client_info_t): cint
# proc xcb_record_client_info_ranges_iterator*(R: ptr xcb_record_client_info_t): xcb_record_range_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_record_client_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_record_client_info_t)
# ##

# proc xcb_record_client_info_next*(i: ptr xcb_record_client_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_record_client_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_record_client_info_end*(i: xcb_record_client_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_query_version*(c: ptr xcb_connection_t; major_version: uint16;
#                               minor_version: uint16): xcb_record_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_record_query_version_unchecked*(c: ptr xcb_connection_t;
#                                         major_version: uint16;
#                                         minor_version: uint16): xcb_record_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_record_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_record_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_record_query_version_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_record_query_version_reply_t
# proc xcb_record_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_record_create_context_checked*(c: ptr xcb_connection_t;
#                                        context: xcb_record_context_t;
#     element_header: xcb_record_element_header_t; num_client_specs: uint32;
#                                        num_ranges: uint32; client_specs: ptr xcb_record_client_spec_t;
#                                        ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_create_context*(c: ptr xcb_connection_t;
#                                context: xcb_record_context_t;
#                                element_header: xcb_record_element_header_t;
#                                num_client_specs: uint32; num_ranges: uint32;
#                                client_specs: ptr xcb_record_client_spec_t;
#                                ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# proc xcb_record_create_context_client_specs*(
#     R: ptr xcb_record_create_context_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_create_context_client_specs_length*(
#     R: ptr xcb_record_create_context_request_t): cint
# proc xcb_record_create_context_client_specs_end*(
#     R: ptr xcb_record_create_context_request_t): xcb_generic_iterator_t
# proc xcb_record_create_context_ranges*(R: ptr xcb_record_create_context_request_t): ptr xcb_record_range_t
# proc xcb_record_create_context_ranges_length*(
#     R: ptr xcb_record_create_context_request_t): cint
# proc xcb_record_create_context_ranges_iterator*(
#     R: ptr xcb_record_create_context_request_t): xcb_record_range_iterator_t
# proc xcb_record_register_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_record_register_clients_checked*(c: ptr xcb_connection_t;
#     context: xcb_record_context_t; element_header: xcb_record_element_header_t;
#     num_client_specs: uint32; num_ranges: uint32;
#     client_specs: ptr xcb_record_client_spec_t; ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_register_clients*(c: ptr xcb_connection_t;
#                                  context: xcb_record_context_t;
#                                  element_header: xcb_record_element_header_t;
#                                  num_client_specs: uint32; num_ranges: uint32;
#                                  client_specs: ptr xcb_record_client_spec_t;
#                                  ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# proc xcb_record_register_clients_client_specs*(
#     R: ptr xcb_record_register_clients_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_register_clients_client_specs_length*(
#     R: ptr xcb_record_register_clients_request_t): cint
# proc xcb_record_register_clients_client_specs_end*(
#     R: ptr xcb_record_register_clients_request_t): xcb_generic_iterator_t
# proc xcb_record_register_clients_ranges*(R: ptr xcb_record_register_clients_request_t): ptr xcb_record_range_t
# proc xcb_record_register_clients_ranges_length*(
#     R: ptr xcb_record_register_clients_request_t): cint
# proc xcb_record_register_clients_ranges_iterator*(
#     R: ptr xcb_record_register_clients_request_t): xcb_record_range_iterator_t
# proc xcb_record_unregister_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_record_unregister_clients_checked*(c: ptr xcb_connection_t;
#     context: xcb_record_context_t; num_client_specs: uint32;
#     client_specs: ptr xcb_record_client_spec_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_unregister_clients*(c: ptr xcb_connection_t;
#                                    context: xcb_record_context_t;
#                                    num_client_specs: uint32;
#                                    client_specs: ptr xcb_record_client_spec_t): xcb_void_cookie_t
# proc xcb_record_unregister_clients_client_specs*(
#     R: ptr xcb_record_unregister_clients_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_unregister_clients_client_specs_length*(
#     R: ptr xcb_record_unregister_clients_request_t): cint
# proc xcb_record_unregister_clients_client_specs_end*(
#     R: ptr xcb_record_unregister_clients_request_t): xcb_generic_iterator_t
# proc xcb_record_get_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_get_context*(c: ptr xcb_connection_t; context: xcb_record_context_t): xcb_record_get_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_record_get_context_unchecked*(c: ptr xcb_connection_t;
#                                       context: xcb_record_context_t): xcb_record_get_context_cookie_t
# proc xcb_record_get_context_intercepted_clients_length*(
#     R: ptr xcb_record_get_context_reply_t): cint
# proc xcb_record_get_context_intercepted_clients_iterator*(
#     R: ptr xcb_record_get_context_reply_t): xcb_record_client_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_record_get_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_record_get_context_reply*(c: ptr xcb_connection_t; cookie: xcb_record_get_context_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_record_get_context_reply_t
# proc xcb_record_enable_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_enable_context*(c: ptr xcb_connection_t;
#                                context: xcb_record_context_t): xcb_record_enable_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_record_enable_context_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_record_context_t): xcb_record_enable_context_cookie_t
# proc xcb_record_enable_context_data*(R: ptr xcb_record_enable_context_reply_t): ptr uint8
# proc xcb_record_enable_context_data_length*(
#     R: ptr xcb_record_enable_context_reply_t): cint
# proc xcb_record_enable_context_data_end*(R: ptr xcb_record_enable_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_record_enable_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_record_enable_context_reply*(c: ptr xcb_connection_t; cookie: xcb_record_enable_context_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_record_enable_context_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_record_disable_context_checked*(c: ptr xcb_connection_t;
#                                         context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_disable_context*(c: ptr xcb_connection_t;
#                                 context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_record_free_context_checked*(c: ptr xcb_connection_t;
#                                      context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_record_free_context*(c: ptr xcb_connection_t; context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from render.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Render_API XCB Render API
# ##  @brief Render XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_RENDER_MAJOR_VERSION* = 0
#   XCB_RENDER_MINOR_VERSION* = 11

# var xcb_render_id*: xcb_extension_t

# type
#   xcb_render_pict_type_t* = enum
#     XCB_RENDER_PICT_TYPE_INDEXED = 0, XCB_RENDER_PICT_TYPE_DIRECT = 1
#   xcb_render_picture_enum_t* = enum
#     XCB_RENDER_PICTURE_NONE = 0
#   xcb_render_pict_op_t* = enum
#     XCB_RENDER_PICT_OP_CLEAR = 0, XCB_RENDER_PICT_OP_SRC = 1,
#     XCB_RENDER_PICT_OP_DST = 2, XCB_RENDER_PICT_OP_OVER = 3,
#     XCB_RENDER_PICT_OP_OVER_REVERSE = 4, XCB_RENDER_PICT_OP_IN = 5,
#     XCB_RENDER_PICT_OP_IN_REVERSE = 6, XCB_RENDER_PICT_OP_OUT = 7,
#     XCB_RENDER_PICT_OP_OUT_REVERSE = 8, XCB_RENDER_PICT_OP_ATOP = 9,
#     XCB_RENDER_PICT_OP_ATOP_REVERSE = 10, XCB_RENDER_PICT_OP_XOR = 11,
#     XCB_RENDER_PICT_OP_ADD = 12, XCB_RENDER_PICT_OP_SATURATE = 13,
#     XCB_RENDER_PICT_OP_DISJOINT_CLEAR = 16, XCB_RENDER_PICT_OP_DISJOINT_SRC = 17,
#     XCB_RENDER_PICT_OP_DISJOINT_DST = 18, XCB_RENDER_PICT_OP_DISJOINT_OVER = 19,
#     XCB_RENDER_PICT_OP_DISJOINT_OVER_REVERSE = 20,
#     XCB_RENDER_PICT_OP_DISJOINT_IN = 21,
#     XCB_RENDER_PICT_OP_DISJOINT_IN_REVERSE = 22,
#     XCB_RENDER_PICT_OP_DISJOINT_OUT = 23,
#     XCB_RENDER_PICT_OP_DISJOINT_OUT_REVERSE = 24,
#     XCB_RENDER_PICT_OP_DISJOINT_ATOP = 25,
#     XCB_RENDER_PICT_OP_DISJOINT_ATOP_REVERSE = 26,
#     XCB_RENDER_PICT_OP_DISJOINT_XOR = 27, XCB_RENDER_PICT_OP_CONJOINT_CLEAR = 32,
#     XCB_RENDER_PICT_OP_CONJOINT_SRC = 33, XCB_RENDER_PICT_OP_CONJOINT_DST = 34,
#     XCB_RENDER_PICT_OP_CONJOINT_OVER = 35,
#     XCB_RENDER_PICT_OP_CONJOINT_OVER_REVERSE = 36,
#     XCB_RENDER_PICT_OP_CONJOINT_IN = 37,
#     XCB_RENDER_PICT_OP_CONJOINT_IN_REVERSE = 38,
#     XCB_RENDER_PICT_OP_CONJOINT_OUT = 39,
#     XCB_RENDER_PICT_OP_CONJOINT_OUT_REVERSE = 40,
#     XCB_RENDER_PICT_OP_CONJOINT_ATOP = 41,
#     XCB_RENDER_PICT_OP_CONJOINT_ATOP_REVERSE = 42,
#     XCB_RENDER_PICT_OP_CONJOINT_XOR = 43, XCB_RENDER_PICT_OP_MULTIPLY = 48,
#     XCB_RENDER_PICT_OP_SCREEN = 49, XCB_RENDER_PICT_OP_OVERLAY = 50,
#     XCB_RENDER_PICT_OP_DARKEN = 51, XCB_RENDER_PICT_OP_LIGHTEN = 52,
#     XCB_RENDER_PICT_OP_COLOR_DODGE = 53, XCB_RENDER_PICT_OP_COLOR_BURN = 54,
#     XCB_RENDER_PICT_OP_HARD_LIGHT = 55, XCB_RENDER_PICT_OP_SOFT_LIGHT = 56,
#     XCB_RENDER_PICT_OP_DIFFERENCE = 57, XCB_RENDER_PICT_OP_EXCLUSION = 58,
#     XCB_RENDER_PICT_OP_HSL_HUE = 59, XCB_RENDER_PICT_OP_HSL_SATURATION = 60,
#     XCB_RENDER_PICT_OP_HSL_COLOR = 61, XCB_RENDER_PICT_OP_HSL_LUMINOSITY = 62
#   xcb_render_poly_edge_t* = enum
#     XCB_RENDER_POLY_EDGE_SHARP = 0, XCB_RENDER_POLY_EDGE_SMOOTH = 1
#   xcb_render_poly_mode_t* = enum
#     XCB_RENDER_POLY_MODE_PRECISE = 0, XCB_RENDER_POLY_MODE_IMPRECISE = 1
#   xcb_render_cp_t* = enum
#     XCB_RENDER_CP_REPEAT = 1, XCB_RENDER_CP_ALPHA_MAP = 2,
#     XCB_RENDER_CP_ALPHA_X_ORIGIN = 4, XCB_RENDER_CP_ALPHA_Y_ORIGIN = 8,
#     XCB_RENDER_CP_CLIP_X_ORIGIN = 16, XCB_RENDER_CP_CLIP_Y_ORIGIN = 32,
#     XCB_RENDER_CP_CLIP_MASK = 64, XCB_RENDER_CP_GRAPHICS_EXPOSURE = 128,
#     XCB_RENDER_CP_SUBWINDOW_MODE = 256, XCB_RENDER_CP_POLY_EDGE = 512,
#     XCB_RENDER_CP_POLY_MODE = 1024, XCB_RENDER_CP_DITHER = 2048,
#     XCB_RENDER_CP_COMPONENT_ALPHA = 4096
#   xcb_render_sub_pixel_t* = enum
#     XCB_RENDER_SUB_PIXEL_UNKNOWN = 0, XCB_RENDER_SUB_PIXEL_HORIZONTAL_RGB = 1,
#     XCB_RENDER_SUB_PIXEL_HORIZONTAL_BGR = 2, XCB_RENDER_SUB_PIXEL_VERTICAL_RGB = 3,
#     XCB_RENDER_SUB_PIXEL_VERTICAL_BGR = 4, XCB_RENDER_SUB_PIXEL_NONE = 5
#   xcb_render_repeat_t* = enum
#     XCB_RENDER_REPEAT_NONE = 0, XCB_RENDER_REPEAT_NORMAL = 1,
#     XCB_RENDER_REPEAT_PAD = 2, XCB_RENDER_REPEAT_REFLECT = 3
#   xcb_render_glyph_t* = uint32









# ## *
# ##  @brief xcb_render_glyph_iterator_t
# ##

# type
#   xcb_render_glyph_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_glyph_t
#     rem*: cint
#     index*: cint

#   xcb_render_glyphset_t* = uint32

# ## *
# ##  @brief xcb_render_glyphset_iterator_t
# ##

# type
#   xcb_render_glyphset_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_glyphset_t
#     rem*: cint
#     index*: cint

#   xcb_render_picture_t* = uint32

# ## *
# ##  @brief xcb_render_picture_iterator_t
# ##

# type
#   xcb_render_picture_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_picture_t
#     rem*: cint
#     index*: cint

#   xcb_render_pictformat_t* = uint32

# ## *
# ##  @brief xcb_render_pictformat_iterator_t
# ##

# type
#   xcb_render_pictformat_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pictformat_t
#     rem*: cint
#     index*: cint

#   xcb_render_fixed_t* = int32

# ## *
# ##  @brief xcb_render_fixed_iterator_t
# ##

# type
#   xcb_render_fixed_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_fixed_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_render_pict_format.

# const
#   XCB_RENDER_PICT_FORMAT* = 0

# ## *
# ##  @brief xcb_render_pict_format_error_t
# ##

# type
#   xcb_render_pict_format_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_render_picture.

# const
#   XCB_RENDER_PICTURE* = 1

# ## *
# ##  @brief xcb_render_picture_error_t
# ##

# type
#   xcb_render_picture_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_render_pict_op.

# const
#   XCB_RENDER_PICT_OP* = 2

# ## *
# ##  @brief xcb_render_pict_op_error_t
# ##

# type
#   xcb_render_pict_op_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_render_glyph_set.

# const
#   XCB_RENDER_GLYPH_SET* = 3

# ## *
# ##  @brief xcb_render_glyph_set_error_t
# ##

# type
#   xcb_render_glyph_set_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_render_glyph.

# const
#   XCB_RENDER_GLYPH* = 4

# ## *
# ##  @brief xcb_render_glyph_error_t
# ##

# type
#   xcb_render_glyph_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## *
# ##  @brief xcb_render_directformat_t
# ##

# type
#   xcb_render_directformat_t* {.bycopy.} = object
#     red_shift*: uint16
#     red_mask*: uint16
#     green_shift*: uint16
#     green_mask*: uint16
#     blue_shift*: uint16
#     blue_mask*: uint16
#     alpha_shift*: uint16
#     alpha_mask*: uint16


# ## *
# ##  @brief xcb_render_directformat_iterator_t
# ##

# type
#   xcb_render_directformat_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_directformat_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_pictforminfo_t
# ##

# type
#   xcb_render_pictforminfo_t* {.bycopy.} = object
#     id*: xcb_render_pictformat_t
#     `type`*: uint8
#     depth*: uint8
#     pad0*: array[2, uint8]
#     direct*: xcb_render_directformat_t
#     colormap*: xcb_colormap_t


# ## *
# ##  @brief xcb_render_pictforminfo_iterator_t
# ##

# type
#   xcb_render_pictforminfo_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pictforminfo_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_pictvisual_t
# ##

# type
#   xcb_render_pictvisual_t* {.bycopy.} = object
#     visual*: xcb_visualid_t
#     format*: xcb_render_pictformat_t


# ## *
# ##  @brief xcb_render_pictvisual_iterator_t
# ##

# type
#   xcb_render_pictvisual_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pictvisual_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_pictdepth_t
# ##

# type
#   xcb_render_pictdepth_t* {.bycopy.} = object
#     depth*: uint8
#     pad0*: uint8
#     num_visuals*: uint16
#     pad1*: array[4, uint8]


# ## *
# ##  @brief xcb_render_pictdepth_iterator_t
# ##

# type
#   xcb_render_pictdepth_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pictdepth_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_pictscreen_t
# ##

# type
#   xcb_render_pictscreen_t* {.bycopy.} = object
#     num_depths*: uint32
#     fallback*: xcb_render_pictformat_t


# ## *
# ##  @brief xcb_render_pictscreen_iterator_t
# ##

# type
#   xcb_render_pictscreen_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pictscreen_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_indexvalue_t
# ##

# type
#   xcb_render_indexvalue_t* {.bycopy.} = object
#     pixel*: uint32
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     alpha*: uint16


# ## *
# ##  @brief xcb_render_indexvalue_iterator_t
# ##

# type
#   xcb_render_indexvalue_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_indexvalue_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_color_t
# ##

# type
#   xcb_render_color_t* {.bycopy.} = object
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     alpha*: uint16


# ## *
# ##  @brief xcb_render_color_iterator_t
# ##

# type
#   xcb_render_color_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_color_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_pointfix_t
# ##

# type
#   xcb_render_pointfix_t* {.bycopy.} = object
#     x*: xcb_render_fixed_t
#     y*: xcb_render_fixed_t


# ## *
# ##  @brief xcb_render_pointfix_iterator_t
# ##

# type
#   xcb_render_pointfix_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_pointfix_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_linefix_t
# ##

# type
#   xcb_render_linefix_t* {.bycopy.} = object
#     p1*: xcb_render_pointfix_t
#     p2*: xcb_render_pointfix_t


# ## *
# ##  @brief xcb_render_linefix_iterator_t
# ##

# type
#   xcb_render_linefix_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_linefix_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_triangle_t
# ##

# type
#   xcb_render_triangle_t* {.bycopy.} = object
#     p1*: xcb_render_pointfix_t
#     p2*: xcb_render_pointfix_t
#     p3*: xcb_render_pointfix_t


# ## *
# ##  @brief xcb_render_triangle_iterator_t
# ##

# type
#   xcb_render_triangle_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_triangle_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_trapezoid_t
# ##

# type
#   xcb_render_trapezoid_t* {.bycopy.} = object
#     top*: xcb_render_fixed_t
#     bottom*: xcb_render_fixed_t
#     left*: xcb_render_linefix_t
#     right*: xcb_render_linefix_t


# ## *
# ##  @brief xcb_render_trapezoid_iterator_t
# ##

# type
#   xcb_render_trapezoid_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_trapezoid_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_glyphinfo_t
# ##

# type
#   xcb_render_glyphinfo_t* {.bycopy.} = object
#     width*: uint16
#     height*: uint16
#     x*: int16
#     y*: int16
#     x_off*: int16
#     y_off*: int16


# ## *
# ##  @brief xcb_render_glyphinfo_iterator_t
# ##

# type
#   xcb_render_glyphinfo_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_glyphinfo_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_query_version_cookie_t
# ##

# type
#   xcb_render_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_render_query_version.

# const
#   XCB_RENDER_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_render_query_version_request_t
# ##

# type
#   xcb_render_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint32
#     client_minor_version*: uint32


# ## *
# ##  @brief xcb_render_query_version_reply_t
# ##

# type
#   xcb_render_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32
#     pad1*: array[16, uint8]


# ## *
# ##  @brief xcb_render_query_pict_formats_cookie_t
# ##

# type
#   xcb_render_query_pict_formats_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_render_query_pict_formats.

# const
#   XCB_RENDER_QUERY_PICT_FORMATS* = 1

# ## *
# ##  @brief xcb_render_query_pict_formats_request_t
# ##

# type
#   xcb_render_query_pict_formats_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_render_query_pict_formats_reply_t
# ##

# type
#   xcb_render_query_pict_formats_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_formats*: uint32
#     num_screens*: uint32
#     num_depths*: uint32
#     num_visuals*: uint32
#     num_subpixel*: uint32
#     pad1*: array[4, uint8]


# ## *
# ##  @brief xcb_render_query_pict_index_values_cookie_t
# ##

# type
#   xcb_render_query_pict_index_values_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_render_query_pict_index_values.

# const
#   XCB_RENDER_QUERY_PICT_INDEX_VALUES* = 2

# ## *
# ##  @brief xcb_render_query_pict_index_values_request_t
# ##

# type
#   xcb_render_query_pict_index_values_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     format*: xcb_render_pictformat_t


# ## *
# ##  @brief xcb_render_query_pict_index_values_reply_t
# ##

# type
#   xcb_render_query_pict_index_values_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_values*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_render_create_picture_value_list_t
# ##

# type
#   xcb_render_create_picture_value_list_t* {.bycopy.} = object
#     repeat*: uint32
#     alphamap*: xcb_render_picture_t
#     alphaxorigin*: int32
#     alphayorigin*: int32
#     clipxorigin*: int32
#     clipyorigin*: int32
#     clipmask*: xcb_pixmap_t
#     graphicsexposure*: uint32
#     subwindowmode*: uint32
#     polyedge*: uint32
#     polymode*: uint32
#     dither*: xcb_atom_t
#     componentalpha*: uint32


# ## * Opcode for xcb_render_create_picture.

# const
#   XCB_RENDER_CREATE_PICTURE* = 4

# ## *
# ##  @brief xcb_render_create_picture_request_t
# ##

# type
#   xcb_render_create_picture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pid*: xcb_render_picture_t
#     drawable*: xcb_drawable_t
#     format*: xcb_render_pictformat_t
#     value_mask*: uint32


# ## *
# ##  @brief xcb_render_change_picture_value_list_t
# ##

# type
#   xcb_render_change_picture_value_list_t* {.bycopy.} = object
#     repeat*: uint32
#     alphamap*: xcb_render_picture_t
#     alphaxorigin*: int32
#     alphayorigin*: int32
#     clipxorigin*: int32
#     clipyorigin*: int32
#     clipmask*: xcb_pixmap_t
#     graphicsexposure*: uint32
#     subwindowmode*: uint32
#     polyedge*: uint32
#     polymode*: uint32
#     dither*: xcb_atom_t
#     componentalpha*: uint32


# ## * Opcode for xcb_render_change_picture.

# const
#   XCB_RENDER_CHANGE_PICTURE* = 5

# ## *
# ##  @brief xcb_render_change_picture_request_t
# ##

# type
#   xcb_render_change_picture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     value_mask*: uint32


# ## * Opcode for xcb_render_set_picture_clip_rectangles.

# const
#   XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES* = 6

# ## *
# ##  @brief xcb_render_set_picture_clip_rectangles_request_t
# ##

# type
#   xcb_render_set_picture_clip_rectangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     clip_x_origin*: int16
#     clip_y_origin*: int16


# ## * Opcode for xcb_render_free_picture.

# const
#   XCB_RENDER_FREE_PICTURE* = 7

# ## *
# ##  @brief xcb_render_free_picture_request_t
# ##

# type
#   xcb_render_free_picture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t


# ## * Opcode for xcb_render_composite.

# const
#   XCB_RENDER_COMPOSITE* = 8

# ## *
# ##  @brief xcb_render_composite_request_t
# ##

# type
#   xcb_render_composite_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     mask*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     src_x*: int16
#     src_y*: int16
#     mask_x*: int16
#     mask_y*: int16
#     dst_x*: int16
#     dst_y*: int16
#     width*: uint16
#     height*: uint16


# ## * Opcode for xcb_render_trapezoids.

# const
#   XCB_RENDER_TRAPEZOIDS* = 10

# ## *
# ##  @brief xcb_render_trapezoids_request_t
# ##

# type
#   xcb_render_trapezoids_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_triangles.

# const
#   XCB_RENDER_TRIANGLES* = 11

# ## *
# ##  @brief xcb_render_triangles_request_t
# ##

# type
#   xcb_render_triangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_tri_strip.

# const
#   XCB_RENDER_TRI_STRIP* = 12

# ## *
# ##  @brief xcb_render_tri_strip_request_t
# ##

# type
#   xcb_render_tri_strip_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_tri_fan.

# const
#   XCB_RENDER_TRI_FAN* = 13

# ## *
# ##  @brief xcb_render_tri_fan_request_t
# ##

# type
#   xcb_render_tri_fan_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_create_glyph_set.

# const
#   XCB_RENDER_CREATE_GLYPH_SET* = 17

# ## *
# ##  @brief xcb_render_create_glyph_set_request_t
# ##

# type
#   xcb_render_create_glyph_set_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     gsid*: xcb_render_glyphset_t
#     format*: xcb_render_pictformat_t


# ## * Opcode for xcb_render_reference_glyph_set.

# const
#   XCB_RENDER_REFERENCE_GLYPH_SET* = 18

# ## *
# ##  @brief xcb_render_reference_glyph_set_request_t
# ##

# type
#   xcb_render_reference_glyph_set_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     gsid*: xcb_render_glyphset_t
#     existing*: xcb_render_glyphset_t


# ## * Opcode for xcb_render_free_glyph_set.

# const
#   XCB_RENDER_FREE_GLYPH_SET* = 19

# ## *
# ##  @brief xcb_render_free_glyph_set_request_t
# ##

# type
#   xcb_render_free_glyph_set_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     glyphset*: xcb_render_glyphset_t


# ## * Opcode for xcb_render_add_glyphs.

# const
#   XCB_RENDER_ADD_GLYPHS* = 20

# ## *
# ##  @brief xcb_render_add_glyphs_request_t
# ##

# type
#   xcb_render_add_glyphs_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     glyphset*: xcb_render_glyphset_t
#     glyphs_len*: uint32


# ## * Opcode for xcb_render_free_glyphs.

# const
#   XCB_RENDER_FREE_GLYPHS* = 22

# ## *
# ##  @brief xcb_render_free_glyphs_request_t
# ##

# type
#   xcb_render_free_glyphs_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     glyphset*: xcb_render_glyphset_t


# ## * Opcode for xcb_render_composite_glyphs_8.

# const
#   XCB_RENDER_COMPOSITE_GLYPHS_8* = 23

# ## *
# ##  @brief xcb_render_composite_glyphs_8_request_t
# ##

# type
#   xcb_render_composite_glyphs_8_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     glyphset*: xcb_render_glyphset_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_composite_glyphs_16.

# const
#   XCB_RENDER_COMPOSITE_GLYPHS_16* = 24

# ## *
# ##  @brief xcb_render_composite_glyphs_16_request_t
# ##

# type
#   xcb_render_composite_glyphs_16_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     glyphset*: xcb_render_glyphset_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_composite_glyphs_32.

# const
#   XCB_RENDER_COMPOSITE_GLYPHS_32* = 25

# ## *
# ##  @brief xcb_render_composite_glyphs_32_request_t
# ##

# type
#   xcb_render_composite_glyphs_32_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     src*: xcb_render_picture_t
#     dst*: xcb_render_picture_t
#     mask_format*: xcb_render_pictformat_t
#     glyphset*: xcb_render_glyphset_t
#     src_x*: int16
#     src_y*: int16


# ## * Opcode for xcb_render_fill_rectangles.

# const
#   XCB_RENDER_FILL_RECTANGLES* = 26

# ## *
# ##  @brief xcb_render_fill_rectangles_request_t
# ##

# type
#   xcb_render_fill_rectangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     op*: uint8
#     pad0*: array[3, uint8]
#     dst*: xcb_render_picture_t
#     color*: xcb_render_color_t


# ## * Opcode for xcb_render_create_cursor.

# const
#   XCB_RENDER_CREATE_CURSOR* = 27

# ## *
# ##  @brief xcb_render_create_cursor_request_t
# ##

# type
#   xcb_render_create_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cid*: xcb_cursor_t
#     source*: xcb_render_picture_t
#     x*: uint16
#     y*: uint16


# ## *
# ##  @brief xcb_render_transform_t
# ##

# type
#   xcb_render_transform_t* {.bycopy.} = object
#     matrix11*: xcb_render_fixed_t
#     matrix12*: xcb_render_fixed_t
#     matrix13*: xcb_render_fixed_t
#     matrix21*: xcb_render_fixed_t
#     matrix22*: xcb_render_fixed_t
#     matrix23*: xcb_render_fixed_t
#     matrix31*: xcb_render_fixed_t
#     matrix32*: xcb_render_fixed_t
#     matrix33*: xcb_render_fixed_t


# ## *
# ##  @brief xcb_render_transform_iterator_t
# ##

# type
#   xcb_render_transform_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_transform_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_render_set_picture_transform.

# const
#   XCB_RENDER_SET_PICTURE_TRANSFORM* = 28

# ## *
# ##  @brief xcb_render_set_picture_transform_request_t
# ##

# type
#   xcb_render_set_picture_transform_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     transform*: xcb_render_transform_t


# ## *
# ##  @brief xcb_render_query_filters_cookie_t
# ##

# type
#   xcb_render_query_filters_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_render_query_filters.

# const
#   XCB_RENDER_QUERY_FILTERS* = 29

# ## *
# ##  @brief xcb_render_query_filters_request_t
# ##

# type
#   xcb_render_query_filters_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  @brief xcb_render_query_filters_reply_t
# ##

# type
#   xcb_render_query_filters_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_aliases*: uint32
#     num_filters*: uint32
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_render_set_picture_filter.

# const
#   XCB_RENDER_SET_PICTURE_FILTER* = 30

# ## *
# ##  @brief xcb_render_set_picture_filter_request_t
# ##

# type
#   xcb_render_set_picture_filter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     filter_len*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_render_animcursorelt_t
# ##

# type
#   xcb_render_animcursorelt_t* {.bycopy.} = object
#     cursor*: xcb_cursor_t
#     delay*: uint32


# ## *
# ##  @brief xcb_render_animcursorelt_iterator_t
# ##

# type
#   xcb_render_animcursorelt_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_animcursorelt_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_render_create_anim_cursor.

# const
#   XCB_RENDER_CREATE_ANIM_CURSOR* = 31

# ## *
# ##  @brief xcb_render_create_anim_cursor_request_t
# ##

# type
#   xcb_render_create_anim_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cid*: xcb_cursor_t


# ## *
# ##  @brief xcb_render_spanfix_t
# ##

# type
#   xcb_render_spanfix_t* {.bycopy.} = object
#     l*: xcb_render_fixed_t
#     r*: xcb_render_fixed_t
#     y*: xcb_render_fixed_t


# ## *
# ##  @brief xcb_render_spanfix_iterator_t
# ##

# type
#   xcb_render_spanfix_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_spanfix_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_render_trap_t
# ##

# type
#   xcb_render_trap_t* {.bycopy.} = object
#     top*: xcb_render_spanfix_t
#     bot*: xcb_render_spanfix_t


# ## *
# ##  @brief xcb_render_trap_iterator_t
# ##

# type
#   xcb_render_trap_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_render_trap_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_render_add_traps.

# const
#   XCB_RENDER_ADD_TRAPS* = 32

# ## *
# ##  @brief xcb_render_add_traps_request_t
# ##

# type
#   xcb_render_add_traps_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     x_off*: int16
#     y_off*: int16


# ## * Opcode for xcb_render_create_solid_fill.

# const
#   XCB_RENDER_CREATE_SOLID_FILL* = 33

# ## *
# ##  @brief xcb_render_create_solid_fill_request_t
# ##

# type
#   xcb_render_create_solid_fill_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     color*: xcb_render_color_t


# ## * Opcode for xcb_render_create_linear_gradient.

# const
#   XCB_RENDER_CREATE_LINEAR_GRADIENT* = 34

# ## *
# ##  @brief xcb_render_create_linear_gradient_request_t
# ##

# type
#   xcb_render_create_linear_gradient_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     p1*: xcb_render_pointfix_t
#     p2*: xcb_render_pointfix_t
#     num_stops*: uint32


# ## * Opcode for xcb_render_create_radial_gradient.

# const
#   XCB_RENDER_CREATE_RADIAL_GRADIENT* = 35

# ## *
# ##  @brief xcb_render_create_radial_gradient_request_t
# ##

# type
#   xcb_render_create_radial_gradient_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     inner*: xcb_render_pointfix_t
#     outer*: xcb_render_pointfix_t
#     inner_radius*: xcb_render_fixed_t
#     outer_radius*: xcb_render_fixed_t
#     num_stops*: uint32


# ## * Opcode for xcb_render_create_conical_gradient.

# const
#   XCB_RENDER_CREATE_CONICAL_GRADIENT* = 36

# ## *
# ##  @brief xcb_render_create_conical_gradient_request_t
# ##

# type
#   xcb_render_create_conical_gradient_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     center*: xcb_render_pointfix_t
#     angle*: xcb_render_fixed_t
#     num_stops*: uint32


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_glyph_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_glyph_t)
# ##

# proc xcb_render_glyph_next*(i: ptr xcb_render_glyph_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_glyph_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_glyph_end*(i: xcb_render_glyph_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_glyphset_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_glyphset_t)
# ##

# proc xcb_render_glyphset_next*(i: ptr xcb_render_glyphset_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_glyphset_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_glyphset_end*(i: xcb_render_glyphset_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_picture_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_picture_t)
# ##

# proc xcb_render_picture_next*(i: ptr xcb_render_picture_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_picture_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_picture_end*(i: xcb_render_picture_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pictformat_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pictformat_t)
# ##

# proc xcb_render_pictformat_next*(i: ptr xcb_render_pictformat_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pictformat_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pictformat_end*(i: xcb_render_pictformat_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_fixed_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_fixed_t)
# ##

# proc xcb_render_fixed_next*(i: ptr xcb_render_fixed_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_fixed_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_fixed_end*(i: xcb_render_fixed_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_directformat_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_directformat_t)
# ##

# proc xcb_render_directformat_next*(i: ptr xcb_render_directformat_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_directformat_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_directformat_end*(i: xcb_render_directformat_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pictforminfo_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pictforminfo_t)
# ##

# proc xcb_render_pictforminfo_next*(i: ptr xcb_render_pictforminfo_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pictforminfo_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pictforminfo_end*(i: xcb_render_pictforminfo_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pictvisual_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pictvisual_t)
# ##

# proc xcb_render_pictvisual_next*(i: ptr xcb_render_pictvisual_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pictvisual_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pictvisual_end*(i: xcb_render_pictvisual_iterator_t): xcb_generic_iterator_t
# proc xcb_render_pictdepth_sizeof*(_buffer: pointer): cint
# proc xcb_render_pictdepth_visuals*(R: ptr xcb_render_pictdepth_t): ptr xcb_render_pictvisual_t
# proc xcb_render_pictdepth_visuals_length*(R: ptr xcb_render_pictdepth_t): cint
# proc xcb_render_pictdepth_visuals_iterator*(R: ptr xcb_render_pictdepth_t): xcb_render_pictvisual_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pictdepth_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pictdepth_t)
# ##

# proc xcb_render_pictdepth_next*(i: ptr xcb_render_pictdepth_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pictdepth_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pictdepth_end*(i: xcb_render_pictdepth_iterator_t): xcb_generic_iterator_t
# proc xcb_render_pictscreen_sizeof*(_buffer: pointer): cint
# proc xcb_render_pictscreen_depths_length*(R: ptr xcb_render_pictscreen_t): cint
# proc xcb_render_pictscreen_depths_iterator*(R: ptr xcb_render_pictscreen_t): xcb_render_pictdepth_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pictscreen_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pictscreen_t)
# ##

# proc xcb_render_pictscreen_next*(i: ptr xcb_render_pictscreen_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pictscreen_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pictscreen_end*(i: xcb_render_pictscreen_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_indexvalue_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_indexvalue_t)
# ##

# proc xcb_render_indexvalue_next*(i: ptr xcb_render_indexvalue_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_indexvalue_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_indexvalue_end*(i: xcb_render_indexvalue_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_color_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_color_t)
# ##

# proc xcb_render_color_next*(i: ptr xcb_render_color_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_color_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_color_end*(i: xcb_render_color_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_pointfix_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_pointfix_t)
# ##

# proc xcb_render_pointfix_next*(i: ptr xcb_render_pointfix_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_pointfix_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_pointfix_end*(i: xcb_render_pointfix_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_linefix_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_linefix_t)
# ##

# proc xcb_render_linefix_next*(i: ptr xcb_render_linefix_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_linefix_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_linefix_end*(i: xcb_render_linefix_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_triangle_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_triangle_t)
# ##

# proc xcb_render_triangle_next*(i: ptr xcb_render_triangle_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_triangle_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_triangle_end*(i: xcb_render_triangle_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_trapezoid_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_trapezoid_t)
# ##

# proc xcb_render_trapezoid_next*(i: ptr xcb_render_trapezoid_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_trapezoid_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_trapezoid_end*(i: xcb_render_trapezoid_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_glyphinfo_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_glyphinfo_t)
# ##

# proc xcb_render_glyphinfo_next*(i: ptr xcb_render_glyphinfo_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_glyphinfo_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_glyphinfo_end*(i: xcb_render_glyphinfo_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_query_version*(c: ptr xcb_connection_t;
#                               client_major_version: uint32;
#                               client_minor_version: uint32): xcb_render_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_render_query_version_unchecked*(c: ptr xcb_connection_t;
#                                         client_major_version: uint32;
#                                         client_minor_version: uint32): xcb_render_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_render_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_render_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_version_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_version_reply_t
# proc xcb_render_query_pict_formats_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_query_pict_formats*(c: ptr xcb_connection_t): xcb_render_query_pict_formats_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_render_query_pict_formats_unchecked*(c: ptr xcb_connection_t): xcb_render_query_pict_formats_cookie_t
# proc xcb_render_query_pict_formats_formats*(
#     R: ptr xcb_render_query_pict_formats_reply_t): ptr xcb_render_pictforminfo_t
# proc xcb_render_query_pict_formats_formats_length*(
#     R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_formats_iterator*(
#     R: ptr xcb_render_query_pict_formats_reply_t): xcb_render_pictforminfo_iterator_t
# proc xcb_render_query_pict_formats_screens_length*(
#     R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_screens_iterator*(
#     R: ptr xcb_render_query_pict_formats_reply_t): xcb_render_pictscreen_iterator_t
# proc xcb_render_query_pict_formats_subpixels*(
#     R: ptr xcb_render_query_pict_formats_reply_t): ptr uint32
# proc xcb_render_query_pict_formats_subpixels_length*(
#     R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_subpixels_end*(
#     R: ptr xcb_render_query_pict_formats_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_render_query_pict_formats_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_render_query_pict_formats_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_pict_formats_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_pict_formats_reply_t
# proc xcb_render_query_pict_index_values_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_query_pict_index_values*(c: ptr xcb_connection_t;
#                                         format: xcb_render_pictformat_t): xcb_render_query_pict_index_values_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_render_query_pict_index_values_unchecked*(c: ptr xcb_connection_t;
#     format: xcb_render_pictformat_t): xcb_render_query_pict_index_values_cookie_t
# proc xcb_render_query_pict_index_values_values*(
#     R: ptr xcb_render_query_pict_index_values_reply_t): ptr xcb_render_indexvalue_t
# proc xcb_render_query_pict_index_values_values_length*(
#     R: ptr xcb_render_query_pict_index_values_reply_t): cint
# proc xcb_render_query_pict_index_values_values_iterator*(
#     R: ptr xcb_render_query_pict_index_values_reply_t): xcb_render_indexvalue_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_render_query_pict_index_values_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_render_query_pict_index_values_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_pict_index_values_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_pict_index_values_reply_t
# proc xcb_render_create_picture_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_render_create_picture_value_list_t): cint
# proc xcb_render_create_picture_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_render_create_picture_value_list_t): cint
# proc xcb_render_create_picture_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_render_create_picture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_picture_checked*(c: ptr xcb_connection_t;
#                                        pid: xcb_render_picture_t;
#                                        drawable: xcb_drawable_t;
#                                        format: xcb_render_pictformat_t;
#                                        value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_picture*(c: ptr xcb_connection_t; pid: xcb_render_picture_t;
#                                drawable: xcb_drawable_t;
#                                format: xcb_render_pictformat_t;
#                                value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_picture_aux_checked*(c: ptr xcb_connection_t;
#     pid: xcb_render_picture_t; drawable: xcb_drawable_t;
#     format: xcb_render_pictformat_t; value_mask: uint32;
#     value_list: ptr xcb_render_create_picture_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_picture_aux*(c: ptr xcb_connection_t;
#                                    pid: xcb_render_picture_t;
#                                    drawable: xcb_drawable_t;
#                                    format: xcb_render_pictformat_t;
#                                    value_mask: uint32; value_list: ptr xcb_render_create_picture_value_list_t): xcb_void_cookie_t
# proc xcb_render_create_picture_value_list*(
#     R: ptr xcb_render_create_picture_request_t): pointer
# proc xcb_render_change_picture_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_render_change_picture_value_list_t): cint
# proc xcb_render_change_picture_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_render_change_picture_value_list_t): cint
# proc xcb_render_change_picture_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_render_change_picture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_change_picture_checked*(c: ptr xcb_connection_t;
#                                        picture: xcb_render_picture_t;
#                                        value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_change_picture*(c: ptr xcb_connection_t;
#                                picture: xcb_render_picture_t;
#                                value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_change_picture_aux_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; value_mask: uint32;
#     value_list: ptr xcb_render_change_picture_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_change_picture_aux*(c: ptr xcb_connection_t;
#                                    picture: xcb_render_picture_t;
#                                    value_mask: uint32; value_list: ptr xcb_render_change_picture_value_list_t): xcb_void_cookie_t
# proc xcb_render_change_picture_value_list*(
#     R: ptr xcb_render_change_picture_request_t): pointer
# proc xcb_render_set_picture_clip_rectangles_sizeof*(_buffer: pointer;
#     rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_set_picture_clip_rectangles_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; clip_x_origin: int16; clip_y_origin: int16;
#     rectangles_len: uint32; rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_set_picture_clip_rectangles*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; clip_x_origin: int16; clip_y_origin: int16;
#     rectangles_len: uint32; rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_render_set_picture_clip_rectangles_rectangles*(
#     R: ptr xcb_render_set_picture_clip_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_render_set_picture_clip_rectangles_rectangles_length*(
#     R: ptr xcb_render_set_picture_clip_rectangles_request_t): cint
# proc xcb_render_set_picture_clip_rectangles_rectangles_iterator*(
#     R: ptr xcb_render_set_picture_clip_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_free_picture_checked*(c: ptr xcb_connection_t;
#                                      picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_free_picture*(c: ptr xcb_connection_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_composite_checked*(c: ptr xcb_connection_t; op: uint8;
#                                   src: xcb_render_picture_t;
#                                   mask: xcb_render_picture_t;
#                                   dst: xcb_render_picture_t; src_x: int16;
#                                   src_y: int16; mask_x: int16; mask_y: int16;
#                                   dst_x: int16; dst_y: int16; width: uint16;
#                                   height: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_composite*(c: ptr xcb_connection_t; op: uint8;
#                           src: xcb_render_picture_t; mask: xcb_render_picture_t;
#                           dst: xcb_render_picture_t; src_x: int16; src_y: int16;
#                           mask_x: int16; mask_y: int16; dst_x: int16;
#                           dst_y: int16; width: uint16; height: uint16): xcb_void_cookie_t
# proc xcb_render_trapezoids_sizeof*(_buffer: pointer; traps_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_trapezoids_checked*(c: ptr xcb_connection_t; op: uint8;
#                                    src: xcb_render_picture_t;
#                                    dst: xcb_render_picture_t;
#                                    mask_format: xcb_render_pictformat_t;
#                                    src_x: int16; src_y: int16;
#                                    traps_len: uint32;
#                                    traps: ptr xcb_render_trapezoid_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_trapezoids*(c: ptr xcb_connection_t; op: uint8;
#                            src: xcb_render_picture_t; dst: xcb_render_picture_t;
#                            mask_format: xcb_render_pictformat_t; src_x: int16;
#                            src_y: int16; traps_len: uint32;
#                            traps: ptr xcb_render_trapezoid_t): xcb_void_cookie_t
# proc xcb_render_trapezoids_traps*(R: ptr xcb_render_trapezoids_request_t): ptr xcb_render_trapezoid_t
# proc xcb_render_trapezoids_traps_length*(R: ptr xcb_render_trapezoids_request_t): cint
# proc xcb_render_trapezoids_traps_iterator*(R: ptr xcb_render_trapezoids_request_t): xcb_render_trapezoid_iterator_t
# proc xcb_render_triangles_sizeof*(_buffer: pointer; triangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_triangles_checked*(c: ptr xcb_connection_t; op: uint8;
#                                   src: xcb_render_picture_t;
#                                   dst: xcb_render_picture_t;
#                                   mask_format: xcb_render_pictformat_t;
#                                   src_x: int16; src_y: int16;
#                                   triangles_len: uint32;
#                                   triangles: ptr xcb_render_triangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_triangles*(c: ptr xcb_connection_t; op: uint8;
#                           src: xcb_render_picture_t; dst: xcb_render_picture_t;
#                           mask_format: xcb_render_pictformat_t; src_x: int16;
#                           src_y: int16; triangles_len: uint32;
#                           triangles: ptr xcb_render_triangle_t): xcb_void_cookie_t
# proc xcb_render_triangles_triangles*(R: ptr xcb_render_triangles_request_t): ptr xcb_render_triangle_t
# proc xcb_render_triangles_triangles_length*(R: ptr xcb_render_triangles_request_t): cint
# proc xcb_render_triangles_triangles_iterator*(
#     R: ptr xcb_render_triangles_request_t): xcb_render_triangle_iterator_t
# proc xcb_render_tri_strip_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_tri_strip_checked*(c: ptr xcb_connection_t; op: uint8;
#                                   src: xcb_render_picture_t;
#                                   dst: xcb_render_picture_t;
#                                   mask_format: xcb_render_pictformat_t;
#                                   src_x: int16; src_y: int16;
#                                   points_len: uint32;
#                                   points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_tri_strip*(c: ptr xcb_connection_t; op: uint8;
#                           src: xcb_render_picture_t; dst: xcb_render_picture_t;
#                           mask_format: xcb_render_pictformat_t; src_x: int16;
#                           src_y: int16; points_len: uint32;
#                           points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# proc xcb_render_tri_strip_points*(R: ptr xcb_render_tri_strip_request_t): ptr xcb_render_pointfix_t
# proc xcb_render_tri_strip_points_length*(R: ptr xcb_render_tri_strip_request_t): cint
# proc xcb_render_tri_strip_points_iterator*(R: ptr xcb_render_tri_strip_request_t): xcb_render_pointfix_iterator_t
# proc xcb_render_tri_fan_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_tri_fan_checked*(c: ptr xcb_connection_t; op: uint8;
#                                 src: xcb_render_picture_t;
#                                 dst: xcb_render_picture_t;
#                                 mask_format: xcb_render_pictformat_t;
#                                 src_x: int16; src_y: int16;
#                                 points_len: uint32;
#                                 points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_tri_fan*(c: ptr xcb_connection_t; op: uint8;
#                         src: xcb_render_picture_t; dst: xcb_render_picture_t;
#                         mask_format: xcb_render_pictformat_t; src_x: int16;
#                         src_y: int16; points_len: uint32;
#                         points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# proc xcb_render_tri_fan_points*(R: ptr xcb_render_tri_fan_request_t): ptr xcb_render_pointfix_t
# proc xcb_render_tri_fan_points_length*(R: ptr xcb_render_tri_fan_request_t): cint
# proc xcb_render_tri_fan_points_iterator*(R: ptr xcb_render_tri_fan_request_t): xcb_render_pointfix_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_glyph_set_checked*(c: ptr xcb_connection_t;
#     gsid: xcb_render_glyphset_t; format: xcb_render_pictformat_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_glyph_set*(c: ptr xcb_connection_t;
#                                  gsid: xcb_render_glyphset_t;
#                                  format: xcb_render_pictformat_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_reference_glyph_set_checked*(c: ptr xcb_connection_t;
#     gsid: xcb_render_glyphset_t; existing: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_reference_glyph_set*(c: ptr xcb_connection_t;
#                                     gsid: xcb_render_glyphset_t;
#                                     existing: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_free_glyph_set_checked*(c: ptr xcb_connection_t;
#                                        glyphset: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_free_glyph_set*(c: ptr xcb_connection_t;
#                                glyphset: xcb_render_glyphset_t): xcb_void_cookie_t
# proc xcb_render_add_glyphs_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_add_glyphs_checked*(c: ptr xcb_connection_t;
#                                    glyphset: xcb_render_glyphset_t;
#                                    glyphs_len: uint32; glyphids: ptr uint32;
#                                    glyphs: ptr xcb_render_glyphinfo_t;
#                                    data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_add_glyphs*(c: ptr xcb_connection_t;
#                            glyphset: xcb_render_glyphset_t; glyphs_len: uint32;
#                            glyphids: ptr uint32;
#                            glyphs: ptr xcb_render_glyphinfo_t; data_len: uint32;
#                            data: ptr uint8): xcb_void_cookie_t
# proc xcb_render_add_glyphs_glyphids*(R: ptr xcb_render_add_glyphs_request_t): ptr uint32
# proc xcb_render_add_glyphs_glyphids_length*(
#     R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_glyphids_end*(R: ptr xcb_render_add_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_add_glyphs_glyphs*(R: ptr xcb_render_add_glyphs_request_t): ptr xcb_render_glyphinfo_t
# proc xcb_render_add_glyphs_glyphs_length*(R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_glyphs_iterator*(
#     R: ptr xcb_render_add_glyphs_request_t): xcb_render_glyphinfo_iterator_t
# proc xcb_render_add_glyphs_data*(R: ptr xcb_render_add_glyphs_request_t): ptr uint8
# proc xcb_render_add_glyphs_data_length*(R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_data_end*(R: ptr xcb_render_add_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_free_glyphs_sizeof*(_buffer: pointer; glyphs_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_free_glyphs_checked*(c: ptr xcb_connection_t;
#                                     glyphset: xcb_render_glyphset_t;
#                                     glyphs_len: uint32;
#                                     glyphs: ptr xcb_render_glyph_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_free_glyphs*(c: ptr xcb_connection_t;
#                             glyphset: xcb_render_glyphset_t; glyphs_len: uint32;
#                             glyphs: ptr xcb_render_glyph_t): xcb_void_cookie_t
# proc xcb_render_free_glyphs_glyphs*(R: ptr xcb_render_free_glyphs_request_t): ptr xcb_render_glyph_t
# proc xcb_render_free_glyphs_glyphs_length*(
#     R: ptr xcb_render_free_glyphs_request_t): cint
# proc xcb_render_free_glyphs_glyphs_end*(R: ptr xcb_render_free_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_8_sizeof*(_buffer: pointer;
#     glyphcmds_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_composite_glyphs_8_checked*(c: ptr xcb_connection_t; op: uint8;
#     src: xcb_render_picture_t; dst: xcb_render_picture_t;
#     mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
#     src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_composite_glyphs_8*(c: ptr xcb_connection_t; op: uint8;
#                                    src: xcb_render_picture_t;
#                                    dst: xcb_render_picture_t;
#                                    mask_format: xcb_render_pictformat_t;
#                                    glyphset: xcb_render_glyphset_t;
#                                    src_x: int16; src_y: int16;
#                                    glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_8_glyphcmds*(
#     R: ptr xcb_render_composite_glyphs_8_request_t): ptr uint8
# proc xcb_render_composite_glyphs_8_glyphcmds_length*(
#     R: ptr xcb_render_composite_glyphs_8_request_t): cint
# proc xcb_render_composite_glyphs_8_glyphcmds_end*(
#     R: ptr xcb_render_composite_glyphs_8_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_16_sizeof*(_buffer: pointer;
#     glyphcmds_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_composite_glyphs_16_checked*(c: ptr xcb_connection_t; op: uint8;
#     src: xcb_render_picture_t; dst: xcb_render_picture_t;
#     mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
#     src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_composite_glyphs_16*(c: ptr xcb_connection_t; op: uint8;
#                                     src: xcb_render_picture_t;
#                                     dst: xcb_render_picture_t;
#                                     mask_format: xcb_render_pictformat_t;
#                                     glyphset: xcb_render_glyphset_t;
#                                     src_x: int16; src_y: int16;
#                                     glyphcmds_len: uint32;
#                                     glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_16_glyphcmds*(
#     R: ptr xcb_render_composite_glyphs_16_request_t): ptr uint8
# proc xcb_render_composite_glyphs_16_glyphcmds_length*(
#     R: ptr xcb_render_composite_glyphs_16_request_t): cint
# proc xcb_render_composite_glyphs_16_glyphcmds_end*(
#     R: ptr xcb_render_composite_glyphs_16_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_32_sizeof*(_buffer: pointer;
#     glyphcmds_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_composite_glyphs_32_checked*(c: ptr xcb_connection_t; op: uint8;
#     src: xcb_render_picture_t; dst: xcb_render_picture_t;
#     mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
#     src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_composite_glyphs_32*(c: ptr xcb_connection_t; op: uint8;
#                                     src: xcb_render_picture_t;
#                                     dst: xcb_render_picture_t;
#                                     mask_format: xcb_render_pictformat_t;
#                                     glyphset: xcb_render_glyphset_t;
#                                     src_x: int16; src_y: int16;
#                                     glyphcmds_len: uint32;
#                                     glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_32_glyphcmds*(
#     R: ptr xcb_render_composite_glyphs_32_request_t): ptr uint8
# proc xcb_render_composite_glyphs_32_glyphcmds_length*(
#     R: ptr xcb_render_composite_glyphs_32_request_t): cint
# proc xcb_render_composite_glyphs_32_glyphcmds_end*(
#     R: ptr xcb_render_composite_glyphs_32_request_t): xcb_generic_iterator_t
# proc xcb_render_fill_rectangles_sizeof*(_buffer: pointer; rects_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_fill_rectangles_checked*(c: ptr xcb_connection_t; op: uint8;
#                                         dst: xcb_render_picture_t;
#                                         color: xcb_render_color_t;
#                                         rects_len: uint32;
#                                         rects: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_fill_rectangles*(c: ptr xcb_connection_t; op: uint8;
#                                 dst: xcb_render_picture_t;
#                                 color: xcb_render_color_t; rects_len: uint32;
#                                 rects: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_render_fill_rectangles_rects*(R: ptr xcb_render_fill_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_render_fill_rectangles_rects_length*(
#     R: ptr xcb_render_fill_rectangles_request_t): cint
# proc xcb_render_fill_rectangles_rects_iterator*(
#     R: ptr xcb_render_fill_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                                       source: xcb_render_picture_t; x: uint16;
#                                       y: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                               source: xcb_render_picture_t; x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_transform_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_transform_t)
# ##

# proc xcb_render_transform_next*(i: ptr xcb_render_transform_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_transform_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_transform_end*(i: xcb_render_transform_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_set_picture_transform_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; transform: xcb_render_transform_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_set_picture_transform*(c: ptr xcb_connection_t;
#                                       picture: xcb_render_picture_t;
#                                       transform: xcb_render_transform_t): xcb_void_cookie_t
# proc xcb_render_query_filters_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_query_filters*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_render_query_filters_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_render_query_filters_unchecked*(c: ptr xcb_connection_t;
#                                         drawable: xcb_drawable_t): xcb_render_query_filters_cookie_t
# proc xcb_render_query_filters_aliases*(R: ptr xcb_render_query_filters_reply_t): ptr uint16
# proc xcb_render_query_filters_aliases_length*(
#     R: ptr xcb_render_query_filters_reply_t): cint
# proc xcb_render_query_filters_aliases_end*(
#     R: ptr xcb_render_query_filters_reply_t): xcb_generic_iterator_t
# proc xcb_render_query_filters_filters_length*(
#     R: ptr xcb_render_query_filters_reply_t): cint
# proc xcb_render_query_filters_filters_iterator*(
#     R: ptr xcb_render_query_filters_reply_t): xcb_str_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_render_query_filters_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_render_query_filters_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_filters_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_filters_reply_t
# proc xcb_render_set_picture_filter_sizeof*(_buffer: pointer; values_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_set_picture_filter_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; filter_len: uint16; filter: cstring;
#     values_len: uint32; values: ptr xcb_render_fixed_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_set_picture_filter*(c: ptr xcb_connection_t;
#                                    picture: xcb_render_picture_t;
#                                    filter_len: uint16; filter: cstring;
#                                    values_len: uint32;
#                                    values: ptr xcb_render_fixed_t): xcb_void_cookie_t
# proc xcb_render_set_picture_filter_filter*(
#     R: ptr xcb_render_set_picture_filter_request_t): cstring
# proc xcb_render_set_picture_filter_filter_length*(
#     R: ptr xcb_render_set_picture_filter_request_t): cint
# proc xcb_render_set_picture_filter_filter_end*(
#     R: ptr xcb_render_set_picture_filter_request_t): xcb_generic_iterator_t
# proc xcb_render_set_picture_filter_values*(
#     R: ptr xcb_render_set_picture_filter_request_t): ptr xcb_render_fixed_t
# proc xcb_render_set_picture_filter_values_length*(
#     R: ptr xcb_render_set_picture_filter_request_t): cint
# proc xcb_render_set_picture_filter_values_end*(
#     R: ptr xcb_render_set_picture_filter_request_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_animcursorelt_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_animcursorelt_t)
# ##

# proc xcb_render_animcursorelt_next*(i: ptr xcb_render_animcursorelt_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_animcursorelt_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_animcursorelt_end*(i: xcb_render_animcursorelt_iterator_t): xcb_generic_iterator_t
# proc xcb_render_create_anim_cursor_sizeof*(_buffer: pointer; cursors_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_anim_cursor_checked*(c: ptr xcb_connection_t;
#     cid: xcb_cursor_t; cursors_len: uint32;
#     cursors: ptr xcb_render_animcursorelt_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_anim_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                                    cursors_len: uint32;
#                                    cursors: ptr xcb_render_animcursorelt_t): xcb_void_cookie_t
# proc xcb_render_create_anim_cursor_cursors*(
#     R: ptr xcb_render_create_anim_cursor_request_t): ptr xcb_render_animcursorelt_t
# proc xcb_render_create_anim_cursor_cursors_length*(
#     R: ptr xcb_render_create_anim_cursor_request_t): cint
# proc xcb_render_create_anim_cursor_cursors_iterator*(
#     R: ptr xcb_render_create_anim_cursor_request_t): xcb_render_animcursorelt_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_spanfix_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_spanfix_t)
# ##

# proc xcb_render_spanfix_next*(i: ptr xcb_render_spanfix_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_spanfix_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_spanfix_end*(i: xcb_render_spanfix_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_render_trap_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_render_trap_t)
# ##

# proc xcb_render_trap_next*(i: ptr xcb_render_trap_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_render_trap_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_render_trap_end*(i: xcb_render_trap_iterator_t): xcb_generic_iterator_t
# proc xcb_render_add_traps_sizeof*(_buffer: pointer; traps_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_add_traps_checked*(c: ptr xcb_connection_t;
#                                   picture: xcb_render_picture_t; x_off: int16;
#                                   y_off: int16; traps_len: uint32;
#                                   traps: ptr xcb_render_trap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_add_traps*(c: ptr xcb_connection_t; picture: xcb_render_picture_t;
#                           x_off: int16; y_off: int16; traps_len: uint32;
#                           traps: ptr xcb_render_trap_t): xcb_void_cookie_t
# proc xcb_render_add_traps_traps*(R: ptr xcb_render_add_traps_request_t): ptr xcb_render_trap_t
# proc xcb_render_add_traps_traps_length*(R: ptr xcb_render_add_traps_request_t): cint
# proc xcb_render_add_traps_traps_iterator*(R: ptr xcb_render_add_traps_request_t): xcb_render_trap_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_solid_fill_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; color: xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_solid_fill*(c: ptr xcb_connection_t;
#                                   picture: xcb_render_picture_t;
#                                   color: xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_linear_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_linear_gradient_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; p1: xcb_render_pointfix_t;
#     p2: xcb_render_pointfix_t; num_stops: uint32; stops: ptr xcb_render_fixed_t;
#     colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_linear_gradient*(c: ptr xcb_connection_t;
#                                        picture: xcb_render_picture_t;
#                                        p1: xcb_render_pointfix_t;
#                                        p2: xcb_render_pointfix_t;
#                                        num_stops: uint32;
#                                        stops: ptr xcb_render_fixed_t;
#                                        colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_linear_gradient_stops*(
#     R: ptr xcb_render_create_linear_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_linear_gradient_stops_length*(
#     R: ptr xcb_render_create_linear_gradient_request_t): cint
# proc xcb_render_create_linear_gradient_stops_end*(
#     R: ptr xcb_render_create_linear_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_linear_gradient_colors*(
#     R: ptr xcb_render_create_linear_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_linear_gradient_colors_length*(
#     R: ptr xcb_render_create_linear_gradient_request_t): cint
# proc xcb_render_create_linear_gradient_colors_iterator*(
#     R: ptr xcb_render_create_linear_gradient_request_t): xcb_render_color_iterator_t
# proc xcb_render_create_radial_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_radial_gradient_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; inner: xcb_render_pointfix_t;
#     outer: xcb_render_pointfix_t; inner_radius: xcb_render_fixed_t;
#     outer_radius: xcb_render_fixed_t; num_stops: uint32;
#     stops: ptr xcb_render_fixed_t; colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_radial_gradient*(c: ptr xcb_connection_t;
#                                        picture: xcb_render_picture_t;
#                                        inner: xcb_render_pointfix_t;
#                                        outer: xcb_render_pointfix_t;
#                                        inner_radius: xcb_render_fixed_t;
#                                        outer_radius: xcb_render_fixed_t;
#                                        num_stops: uint32;
#                                        stops: ptr xcb_render_fixed_t;
#                                        colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_radial_gradient_stops*(
#     R: ptr xcb_render_create_radial_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_radial_gradient_stops_length*(
#     R: ptr xcb_render_create_radial_gradient_request_t): cint
# proc xcb_render_create_radial_gradient_stops_end*(
#     R: ptr xcb_render_create_radial_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_radial_gradient_colors*(
#     R: ptr xcb_render_create_radial_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_radial_gradient_colors_length*(
#     R: ptr xcb_render_create_radial_gradient_request_t): cint
# proc xcb_render_create_radial_gradient_colors_iterator*(
#     R: ptr xcb_render_create_radial_gradient_request_t): xcb_render_color_iterator_t
# proc xcb_render_create_conical_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_render_create_conical_gradient_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; center: xcb_render_pointfix_t;
#     angle: xcb_render_fixed_t; num_stops: uint32; stops: ptr xcb_render_fixed_t;
#     colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_render_create_conical_gradient*(c: ptr xcb_connection_t;
#                                         picture: xcb_render_picture_t;
#                                         center: xcb_render_pointfix_t;
#                                         angle: xcb_render_fixed_t;
#                                         num_stops: uint32;
#                                         stops: ptr xcb_render_fixed_t;
#                                         colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_conical_gradient_stops*(
#     R: ptr xcb_render_create_conical_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_conical_gradient_stops_length*(
#     R: ptr xcb_render_create_conical_gradient_request_t): cint
# proc xcb_render_create_conical_gradient_stops_end*(
#     R: ptr xcb_render_create_conical_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_conical_gradient_colors*(
#     R: ptr xcb_render_create_conical_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_conical_gradient_colors_length*(
#     R: ptr xcb_render_create_conical_gradient_request_t): cint
# proc xcb_render_create_conical_gradient_colors_iterator*(
#     R: ptr xcb_render_create_conical_gradient_request_t): xcb_render_color_iterator_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from res.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Res_API XCB Res API
# ##  @brief Res XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_RES_MAJOR_VERSION* = 1
#   XCB_RES_MINOR_VERSION* = 2

# var xcb_res_id*: xcb_extension_t

# ## *
# ##  @brief xcb_res_client_t
# ##

# type
#   xcb_res_client_t* {.bycopy.} = object
#     resource_base*: uint32
#     resource_mask*: uint32


# ## *
# ##  @brief xcb_res_client_iterator_t
# ##

# type
#   xcb_res_client_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_client_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_type_t
# ##

# type
#   xcb_res_type_t* {.bycopy.} = object
#     resource_type*: xcb_atom_t
#     count*: uint32


# ## *
# ##  @brief xcb_res_type_iterator_t
# ##

# type
#   xcb_res_type_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_type_t
#     rem*: cint
#     index*: cint

#   xcb_res_client_id_mask_t* = enum
#     XCB_RES_CLIENT_ID_MASK_CLIENT_XID = 1,
#     XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID = 2


# ## *
# ##  @brief xcb_res_client_id_spec_t
# ##

# type
#   xcb_res_client_id_spec_t* {.bycopy.} = object
#     client*: uint32
#     mask*: uint32


# ## *
# ##  @brief xcb_res_client_id_spec_iterator_t
# ##

# type
#   xcb_res_client_id_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_client_id_spec_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_client_id_value_t
# ##

# type
#   xcb_res_client_id_value_t* {.bycopy.} = object
#     spec*: xcb_res_client_id_spec_t
#     length*: uint32


# ## *
# ##  @brief xcb_res_client_id_value_iterator_t
# ##

# type
#   xcb_res_client_id_value_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_client_id_value_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_resource_id_spec_t
# ##

# type
#   xcb_res_resource_id_spec_t* {.bycopy.} = object
#     resource*: uint32
#     `type`*: uint32


# ## *
# ##  @brief xcb_res_resource_id_spec_iterator_t
# ##

# type
#   xcb_res_resource_id_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_resource_id_spec_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_resource_size_spec_t
# ##

# type
#   xcb_res_resource_size_spec_t* {.bycopy.} = object
#     spec*: xcb_res_resource_id_spec_t
#     bytes*: uint32
#     ref_count*: uint32
#     use_count*: uint32


# ## *
# ##  @brief xcb_res_resource_size_spec_iterator_t
# ##

# type
#   xcb_res_resource_size_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_resource_size_spec_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_resource_size_value_t
# ##

# type
#   xcb_res_resource_size_value_t* {.bycopy.} = object
#     size*: xcb_res_resource_size_spec_t
#     num_cross_references*: uint32


# ## *
# ##  @brief xcb_res_resource_size_value_iterator_t
# ##

# type
#   xcb_res_resource_size_value_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_res_resource_size_value_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_res_query_version_cookie_t
# ##

# type
#   xcb_res_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_version.

# const
#   XCB_RES_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_res_query_version_request_t
# ##

# type
#   xcb_res_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major*: uint8
#     client_minor*: uint8


# ## *
# ##  @brief xcb_res_query_version_reply_t
# ##

# type
#   xcb_res_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major*: uint16
#     server_minor*: uint16


# ## *
# ##  @brief xcb_res_query_clients_cookie_t
# ##

# type
#   xcb_res_query_clients_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_clients.

# const
#   XCB_RES_QUERY_CLIENTS* = 1

# ## *
# ##  @brief xcb_res_query_clients_request_t
# ##

# type
#   xcb_res_query_clients_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_res_query_clients_reply_t
# ##

# type
#   xcb_res_query_clients_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_clients*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_res_query_client_resources_cookie_t
# ##

# type
#   xcb_res_query_client_resources_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_client_resources.

# const
#   XCB_RES_QUERY_CLIENT_RESOURCES* = 2

# ## *
# ##  @brief xcb_res_query_client_resources_request_t
# ##

# type
#   xcb_res_query_client_resources_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     xid*: uint32


# ## *
# ##  @brief xcb_res_query_client_resources_reply_t
# ##

# type
#   xcb_res_query_client_resources_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_types*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_res_query_client_pixmap_bytes_cookie_t
# ##

# type
#   xcb_res_query_client_pixmap_bytes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_client_pixmap_bytes.

# const
#   XCB_RES_QUERY_CLIENT_PIXMAP_BYTES* = 3

# ## *
# ##  @brief xcb_res_query_client_pixmap_bytes_request_t
# ##

# type
#   xcb_res_query_client_pixmap_bytes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     xid*: uint32


# ## *
# ##  @brief xcb_res_query_client_pixmap_bytes_reply_t
# ##

# type
#   xcb_res_query_client_pixmap_bytes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     bytes*: uint32
#     bytes_overflow*: uint32


# ## *
# ##  @brief xcb_res_query_client_ids_cookie_t
# ##

# type
#   xcb_res_query_client_ids_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_client_ids.

# const
#   XCB_RES_QUERY_CLIENT_IDS* = 4

# ## *
# ##  @brief xcb_res_query_client_ids_request_t
# ##

# type
#   xcb_res_query_client_ids_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     num_specs*: uint32


# ## *
# ##  @brief xcb_res_query_client_ids_reply_t
# ##

# type
#   xcb_res_query_client_ids_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_ids*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_res_query_resource_bytes_cookie_t
# ##

# type
#   xcb_res_query_resource_bytes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_res_query_resource_bytes.

# const
#   XCB_RES_QUERY_RESOURCE_BYTES* = 5

# ## *
# ##  @brief xcb_res_query_resource_bytes_request_t
# ##

# type
#   xcb_res_query_resource_bytes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client*: uint32
#     num_specs*: uint32


# ## *
# ##  @brief xcb_res_query_resource_bytes_reply_t
# ##

# type
#   xcb_res_query_resource_bytes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_sizes*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_client_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_client_t)
# ##

# proc xcb_res_client_next*(i: ptr xcb_res_client_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_client_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_client_end*(i: xcb_res_client_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_type_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_type_t)
# ##

# proc xcb_res_type_next*(i: ptr xcb_res_type_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_type_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_type_end*(i: xcb_res_type_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_client_id_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_client_id_spec_t)
# ##

# proc xcb_res_client_id_spec_next*(i: ptr xcb_res_client_id_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_client_id_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_client_id_spec_end*(i: xcb_res_client_id_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_res_client_id_value_sizeof*(_buffer: pointer): cint
# proc xcb_res_client_id_value_value*(R: ptr xcb_res_client_id_value_t): ptr uint32
# proc xcb_res_client_id_value_value_length*(R: ptr xcb_res_client_id_value_t): cint
# proc xcb_res_client_id_value_value_end*(R: ptr xcb_res_client_id_value_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_client_id_value_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_client_id_value_t)
# ##

# proc xcb_res_client_id_value_next*(i: ptr xcb_res_client_id_value_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_client_id_value_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_client_id_value_end*(i: xcb_res_client_id_value_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_resource_id_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_resource_id_spec_t)
# ##

# proc xcb_res_resource_id_spec_next*(i: ptr xcb_res_resource_id_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_resource_id_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_resource_id_spec_end*(i: xcb_res_resource_id_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_resource_size_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_resource_size_spec_t)
# ##

# proc xcb_res_resource_size_spec_next*(i: ptr xcb_res_resource_size_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_resource_size_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_resource_size_spec_end*(i: xcb_res_resource_size_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_res_resource_size_value_sizeof*(_buffer: pointer): cint
# proc xcb_res_resource_size_value_cross_references*(
#     R: ptr xcb_res_resource_size_value_t): ptr xcb_res_resource_size_spec_t
# proc xcb_res_resource_size_value_cross_references_length*(
#     R: ptr xcb_res_resource_size_value_t): cint
# proc xcb_res_resource_size_value_cross_references_iterator*(
#     R: ptr xcb_res_resource_size_value_t): xcb_res_resource_size_spec_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_res_resource_size_value_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_res_resource_size_value_t)
# ##

# proc xcb_res_resource_size_value_next*(i: ptr xcb_res_resource_size_value_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_res_resource_size_value_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_res_resource_size_value_end*(i: xcb_res_resource_size_value_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_version*(c: ptr xcb_connection_t; client_major: uint8;
#                            client_minor: uint8): xcb_res_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_version_unchecked*(c: ptr xcb_connection_t;
#                                      client_major: uint8; client_minor: uint8): xcb_res_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_version_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_version_reply_t
# proc xcb_res_query_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_clients*(c: ptr xcb_connection_t): xcb_res_query_clients_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_clients_unchecked*(c: ptr xcb_connection_t): xcb_res_query_clients_cookie_t
# proc xcb_res_query_clients_clients*(R: ptr xcb_res_query_clients_reply_t): ptr xcb_res_client_t
# proc xcb_res_query_clients_clients_length*(R: ptr xcb_res_query_clients_reply_t): cint
# proc xcb_res_query_clients_clients_iterator*(R: ptr xcb_res_query_clients_reply_t): xcb_res_client_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_clients_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_clients_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_clients_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_clients_reply_t
# proc xcb_res_query_client_resources_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_client_resources*(c: ptr xcb_connection_t; xid: uint32): xcb_res_query_client_resources_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_client_resources_unchecked*(c: ptr xcb_connection_t;
#     xid: uint32): xcb_res_query_client_resources_cookie_t
# proc xcb_res_query_client_resources_types*(
#     R: ptr xcb_res_query_client_resources_reply_t): ptr xcb_res_type_t
# proc xcb_res_query_client_resources_types_length*(
#     R: ptr xcb_res_query_client_resources_reply_t): cint
# proc xcb_res_query_client_resources_types_iterator*(
#     R: ptr xcb_res_query_client_resources_reply_t): xcb_res_type_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_client_resources_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_client_resources_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_resources_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_resources_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_client_pixmap_bytes*(c: ptr xcb_connection_t; xid: uint32): xcb_res_query_client_pixmap_bytes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_client_pixmap_bytes_unchecked*(c: ptr xcb_connection_t;
#     xid: uint32): xcb_res_query_client_pixmap_bytes_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_client_pixmap_bytes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_client_pixmap_bytes_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_pixmap_bytes_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_pixmap_bytes_reply_t
# proc xcb_res_query_client_ids_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_client_ids*(c: ptr xcb_connection_t; num_specs: uint32;
#                               specs: ptr xcb_res_client_id_spec_t): xcb_res_query_client_ids_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_client_ids_unchecked*(c: ptr xcb_connection_t;
#                                         num_specs: uint32;
#                                         specs: ptr xcb_res_client_id_spec_t): xcb_res_query_client_ids_cookie_t
# proc xcb_res_query_client_ids_ids_length*(R: ptr xcb_res_query_client_ids_reply_t): cint
# proc xcb_res_query_client_ids_ids_iterator*(
#     R: ptr xcb_res_query_client_ids_reply_t): xcb_res_client_id_value_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_client_ids_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_client_ids_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_ids_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_ids_reply_t
# proc xcb_res_query_resource_bytes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_res_query_resource_bytes*(c: ptr xcb_connection_t; client: uint32;
#                                   num_specs: uint32;
#                                   specs: ptr xcb_res_resource_id_spec_t): xcb_res_query_resource_bytes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_res_query_resource_bytes_unchecked*(c: ptr xcb_connection_t;
#     client: uint32; num_specs: uint32; specs: ptr xcb_res_resource_id_spec_t): xcb_res_query_resource_bytes_cookie_t
# proc xcb_res_query_resource_bytes_sizes_length*(
#     R: ptr xcb_res_query_resource_bytes_reply_t): cint
# proc xcb_res_query_resource_bytes_sizes_iterator*(
#     R: ptr xcb_res_query_resource_bytes_reply_t): xcb_res_resource_size_value_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_res_query_resource_bytes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_res_query_resource_bytes_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_resource_bytes_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_resource_bytes_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from screensaver.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_ScreenSaver_API XCB ScreenSaver API
# ##  @brief ScreenSaver XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_SCREENSAVER_MAJOR_VERSION* = 1
#   XCB_SCREENSAVER_MINOR_VERSION* = 1

# var xcb_screensaver_id*: xcb_extension_t

# type
#   xcb_screensaver_kind_t* = enum
#     XCB_SCREENSAVER_KIND_BLANKED = 0, XCB_SCREENSAVER_KIND_INTERNAL = 1,
#     XCB_SCREENSAVER_KIND_EXTERNAL = 2
#   xcb_screensaver_event_t* = enum
#     XCB_SCREENSAVER_EVENT_NOTIFY_MASK = 1, XCB_SCREENSAVER_EVENT_CYCLE_MASK = 2
#   xcb_screensaver_state_t* = enum
#     XCB_SCREENSAVER_STATE_OFF = 0, XCB_SCREENSAVER_STATE_ON = 1,
#     XCB_SCREENSAVER_STATE_CYCLE = 2, XCB_SCREENSAVER_STATE_DISABLED = 3




# ## *
# ##  @brief xcb_screensaver_query_version_cookie_t
# ##

# type
#   xcb_screensaver_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_screensaver_query_version.

# const
#   XCB_SCREENSAVER_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_screensaver_query_version_request_t
# ##

# type
#   xcb_screensaver_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint8
#     client_minor_version*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_screensaver_query_version_reply_t
# ##

# type
#   xcb_screensaver_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major_version*: uint16
#     server_minor_version*: uint16
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_screensaver_query_info_cookie_t
# ##

# type
#   xcb_screensaver_query_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_screensaver_query_info.

# const
#   XCB_SCREENSAVER_QUERY_INFO* = 1

# ## *
# ##  @brief xcb_screensaver_query_info_request_t
# ##

# type
#   xcb_screensaver_query_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  @brief xcb_screensaver_query_info_reply_t
# ##

# type
#   xcb_screensaver_query_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     state*: uint8
#     sequence*: uint16
#     length*: uint32
#     saver_window*: xcb_window_t
#     ms_until_server*: uint32
#     ms_since_user_input*: uint32
#     event_mask*: uint32
#     kind*: uint8
#     pad0*: array[7, uint8]


# ## * Opcode for xcb_screensaver_select_input.

# const
#   XCB_SCREENSAVER_SELECT_INPUT* = 2

# ## *
# ##  @brief xcb_screensaver_select_input_request_t
# ##

# type
#   xcb_screensaver_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     event_mask*: uint32


# ## *
# ##  @brief xcb_screensaver_set_attributes_value_list_t
# ##

# type
#   xcb_screensaver_set_attributes_value_list_t* {.bycopy.} = object
#     background_pixmap*: xcb_pixmap_t
#     background_pixel*: uint32
#     border_pixmap*: xcb_pixmap_t
#     border_pixel*: uint32
#     bit_gravity*: uint32
#     win_gravity*: uint32
#     backing_store*: uint32
#     backing_planes*: uint32
#     backing_pixel*: uint32
#     override_redirect*: xcb_bool32_t
#     save_under*: xcb_bool32_t
#     event_mask*: uint32
#     do_not_propogate_mask*: uint32
#     colormap*: xcb_colormap_t
#     cursor*: xcb_cursor_t


# ## * Opcode for xcb_screensaver_set_attributes.

# const
#   XCB_SCREENSAVER_SET_ATTRIBUTES* = 3

# ## *
# ##  @brief xcb_screensaver_set_attributes_request_t
# ##

# type
#   xcb_screensaver_set_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     _class*: uint8
#     depth*: uint8
#     visual*: xcb_visualid_t
#     value_mask*: uint32


# ## * Opcode for xcb_screensaver_unset_attributes.

# const
#   XCB_SCREENSAVER_UNSET_ATTRIBUTES* = 4

# ## *
# ##  @brief xcb_screensaver_unset_attributes_request_t
# ##

# type
#   xcb_screensaver_unset_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## * Opcode for xcb_screensaver_suspend.

# const
#   XCB_SCREENSAVER_SUSPEND* = 5

# ## *
# ##  @brief xcb_screensaver_suspend_request_t
# ##

# type
#   xcb_screensaver_suspend_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     suspend*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_screensaver_notify.

# const
#   XCB_SCREENSAVER_NOTIFY* = 0

# ## *
# ##  @brief xcb_screensaver_notify_event_t
# ##

# type
#   xcb_screensaver_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     state*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     window*: xcb_window_t
#     kind*: uint8
#     forced*: uint8
#     pad0*: array[14, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_query_version*(c: ptr xcb_connection_t;
#                                    client_major_version: uint8;
#                                    client_minor_version: uint8): xcb_screensaver_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_screensaver_query_version_unchecked*(c: ptr xcb_connection_t;
#     client_major_version: uint8; client_minor_version: uint8): xcb_screensaver_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_screensaver_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_screensaver_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_screensaver_query_version_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_screensaver_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_query_info*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_screensaver_query_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_screensaver_query_info_unchecked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t): xcb_screensaver_query_info_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_screensaver_query_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_screensaver_query_info_reply*(c: ptr xcb_connection_t; cookie: xcb_screensaver_query_info_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_screensaver_query_info_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_screensaver_select_input_checked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_select_input*(c: ptr xcb_connection_t;
#                                   drawable: xcb_drawable_t; event_mask: uint32): xcb_void_cookie_t
# proc xcb_screensaver_set_attributes_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_screensaver_set_attributes_value_list_t): cint
# proc xcb_screensaver_set_attributes_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_screensaver_set_attributes_value_list_t): cint
# proc xcb_screensaver_set_attributes_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_screensaver_set_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_screensaver_set_attributes_checked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; x: int16; y: int16; width: uint16; height: uint16;
#     border_width: uint16; _class: uint8; depth: uint8; visual: xcb_visualid_t;
#     value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_set_attributes*(c: ptr xcb_connection_t;
#                                     drawable: xcb_drawable_t; x: int16;
#                                     y: int16; width: uint16; height: uint16;
#                                     border_width: uint16; _class: uint8;
#                                     depth: uint8; visual: xcb_visualid_t;
#                                     value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_screensaver_set_attributes_aux_checked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; x: int16; y: int16; width: uint16; height: uint16;
#     border_width: uint16; _class: uint8; depth: uint8; visual: xcb_visualid_t;
#     value_mask: uint32;
#     value_list: ptr xcb_screensaver_set_attributes_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_set_attributes_aux*(c: ptr xcb_connection_t;
#                                         drawable: xcb_drawable_t; x: int16;
#                                         y: int16; width: uint16;
#                                         height: uint16; border_width: uint16;
#                                         _class: uint8; depth: uint8;
#                                         visual: xcb_visualid_t;
#                                         value_mask: uint32; value_list: ptr xcb_screensaver_set_attributes_value_list_t): xcb_void_cookie_t
# proc xcb_screensaver_set_attributes_value_list*(
#     R: ptr xcb_screensaver_set_attributes_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_screensaver_unset_attributes_checked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_unset_attributes*(c: ptr xcb_connection_t;
#                                       drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_screensaver_suspend_checked*(c: ptr xcb_connection_t; suspend: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_screensaver_suspend*(c: ptr xcb_connection_t; suspend: uint8): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from shape.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Shape_API XCB Shape API
# ##  @brief Shape XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_SHAPE_MAJOR_VERSION* = 1
#   XCB_SHAPE_MINOR_VERSION* = 1

# var xcb_shape_id*: xcb_extension_t

# type
#   xcb_shape_op_t* = uint8

# ## *
# ##  @brief xcb_shape_op_iterator_t
# ##

# type
#   xcb_shape_op_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_shape_op_t
#     rem*: cint
#     index*: cint

#   xcb_shape_kind_t* = uint8

# ## *
# ##  @brief xcb_shape_kind_iterator_t
# ##

# type
#   xcb_shape_kind_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_shape_kind_t
#     rem*: cint
#     index*: cint

#   xcb_shape_so_t* = enum
#     XCB_SHAPE_SO_SET = 0, XCB_SHAPE_SO_UNION = 1, XCB_SHAPE_SO_INTERSECT = 2,
#     XCB_SHAPE_SO_SUBTRACT = 3, XCB_SHAPE_SO_INVERT = 4
#   xcb_shape_sk_t* = enum
#     XCB_SHAPE_SK_BOUNDING = 0, XCB_SHAPE_SK_CLIP = 1, XCB_SHAPE_SK_INPUT = 2



# ## * Opcode for xcb_shape_notify.

# const
#   XCB_SHAPE_NOTIFY* = 0

# ## *
# ##  @brief xcb_shape_notify_event_t
# ##

# type
#   xcb_shape_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     shape_kind*: xcb_shape_kind_t
#     sequence*: uint16
#     affected_window*: xcb_window_t
#     extents_x*: int16
#     extents_y*: int16
#     extents_width*: uint16
#     extents_height*: uint16
#     server_time*: xcb_timestamp_t
#     shaped*: uint8
#     pad0*: array[11, uint8]


# ## *
# ##  @brief xcb_shape_query_version_cookie_t
# ##

# type
#   xcb_shape_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shape_query_version.

# const
#   XCB_SHAPE_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_shape_query_version_request_t
# ##

# type
#   xcb_shape_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_shape_query_version_reply_t
# ##

# type
#   xcb_shape_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16


# ## * Opcode for xcb_shape_rectangles.

# const
#   XCB_SHAPE_RECTANGLES* = 1

# ## *
# ##  @brief xcb_shape_rectangles_request_t
# ##

# type
#   xcb_shape_rectangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     operation*: xcb_shape_op_t
#     destination_kind*: xcb_shape_kind_t
#     ordering*: uint8
#     pad0*: uint8
#     destination_window*: xcb_window_t
#     x_offset*: int16
#     y_offset*: int16


# ## * Opcode for xcb_shape_mask.

# const
#   XCB_SHAPE_MASK* = 2

# ## *
# ##  @brief xcb_shape_mask_request_t
# ##

# type
#   xcb_shape_mask_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     operation*: xcb_shape_op_t
#     destination_kind*: xcb_shape_kind_t
#     pad0*: array[2, uint8]
#     destination_window*: xcb_window_t
#     x_offset*: int16
#     y_offset*: int16
#     source_bitmap*: xcb_pixmap_t


# ## * Opcode for xcb_shape_combine.

# const
#   XCB_SHAPE_COMBINE* = 3

# ## *
# ##  @brief xcb_shape_combine_request_t
# ##

# type
#   xcb_shape_combine_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     operation*: xcb_shape_op_t
#     destination_kind*: xcb_shape_kind_t
#     source_kind*: xcb_shape_kind_t
#     pad0*: uint8
#     destination_window*: xcb_window_t
#     x_offset*: int16
#     y_offset*: int16
#     source_window*: xcb_window_t


# ## * Opcode for xcb_shape_offset.

# const
#   XCB_SHAPE_OFFSET* = 4

# ## *
# ##  @brief xcb_shape_offset_request_t
# ##

# type
#   xcb_shape_offset_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     destination_kind*: xcb_shape_kind_t
#     pad0*: array[3, uint8]
#     destination_window*: xcb_window_t
#     x_offset*: int16
#     y_offset*: int16


# ## *
# ##  @brief xcb_shape_query_extents_cookie_t
# ##

# type
#   xcb_shape_query_extents_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shape_query_extents.

# const
#   XCB_SHAPE_QUERY_EXTENTS* = 5

# ## *
# ##  @brief xcb_shape_query_extents_request_t
# ##

# type
#   xcb_shape_query_extents_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     destination_window*: xcb_window_t


# ## *
# ##  @brief xcb_shape_query_extents_reply_t
# ##

# type
#   xcb_shape_query_extents_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     bounding_shaped*: uint8
#     clip_shaped*: uint8
#     pad1*: array[2, uint8]
#     bounding_shape_extents_x*: int16
#     bounding_shape_extents_y*: int16
#     bounding_shape_extents_width*: uint16
#     bounding_shape_extents_height*: uint16
#     clip_shape_extents_x*: int16
#     clip_shape_extents_y*: int16
#     clip_shape_extents_width*: uint16
#     clip_shape_extents_height*: uint16


# ## * Opcode for xcb_shape_select_input.

# const
#   XCB_SHAPE_SELECT_INPUT* = 6

# ## *
# ##  @brief xcb_shape_select_input_request_t
# ##

# type
#   xcb_shape_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     destination_window*: xcb_window_t
#     enable*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_shape_input_selected_cookie_t
# ##

# type
#   xcb_shape_input_selected_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shape_input_selected.

# const
#   XCB_SHAPE_INPUT_SELECTED* = 7

# ## *
# ##  @brief xcb_shape_input_selected_request_t
# ##

# type
#   xcb_shape_input_selected_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     destination_window*: xcb_window_t


# ## *
# ##  @brief xcb_shape_input_selected_reply_t
# ##

# type
#   xcb_shape_input_selected_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     enabled*: uint8
#     sequence*: uint16
#     length*: uint32


# ## *
# ##  @brief xcb_shape_get_rectangles_cookie_t
# ##

# type
#   xcb_shape_get_rectangles_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shape_get_rectangles.

# const
#   XCB_SHAPE_GET_RECTANGLES* = 8

# ## *
# ##  @brief xcb_shape_get_rectangles_request_t
# ##

# type
#   xcb_shape_get_rectangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     source_kind*: xcb_shape_kind_t
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_shape_get_rectangles_reply_t
# ##

# type
#   xcb_shape_get_rectangles_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     ordering*: uint8
#     sequence*: uint16
#     length*: uint32
#     rectangles_len*: uint32
#     pad0*: array[20, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_shape_op_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_shape_op_t)
# ##

# proc xcb_shape_op_next*(i: ptr xcb_shape_op_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_shape_op_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_shape_op_end*(i: xcb_shape_op_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_shape_kind_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_shape_kind_t)
# ##

# proc xcb_shape_kind_next*(i: ptr xcb_shape_kind_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_shape_kind_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_shape_kind_end*(i: xcb_shape_kind_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_query_version*(c: ptr xcb_connection_t): xcb_shape_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shape_query_version_unchecked*(c: ptr xcb_connection_t): xcb_shape_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shape_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shape_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_query_version_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_shape_query_version_reply_t
# proc xcb_shape_rectangles_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shape_rectangles_checked*(c: ptr xcb_connection_t;
#                                   operation: xcb_shape_op_t;
#                                   destination_kind: xcb_shape_kind_t;
#                                   ordering: uint8;
#                                   destination_window: xcb_window_t;
#                                   x_offset: int16; y_offset: int16;
#                                   rectangles_len: uint32;
#                                   rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_rectangles*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
#                           destination_kind: xcb_shape_kind_t; ordering: uint8;
#                           destination_window: xcb_window_t; x_offset: int16;
#                           y_offset: int16; rectangles_len: uint32;
#                           rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_shape_rectangles_rectangles*(R: ptr xcb_shape_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_shape_rectangles_rectangles_length*(
#     R: ptr xcb_shape_rectangles_request_t): cint
# proc xcb_shape_rectangles_rectangles_iterator*(
#     R: ptr xcb_shape_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shape_mask_checked*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
#                             destination_kind: xcb_shape_kind_t;
#                             destination_window: xcb_window_t; x_offset: int16;
#                             y_offset: int16; source_bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_mask*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
#                     destination_kind: xcb_shape_kind_t;
#                     destination_window: xcb_window_t; x_offset: int16;
#                     y_offset: int16; source_bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shape_combine_checked*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
#                                destination_kind: xcb_shape_kind_t;
#                                source_kind: xcb_shape_kind_t;
#                                destination_window: xcb_window_t;
#                                x_offset: int16; y_offset: int16;
#                                source_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_combine*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
#                        destination_kind: xcb_shape_kind_t;
#                        source_kind: xcb_shape_kind_t;
#                        destination_window: xcb_window_t; x_offset: int16;
#                        y_offset: int16; source_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shape_offset_checked*(c: ptr xcb_connection_t;
#                               destination_kind: xcb_shape_kind_t;
#                               destination_window: xcb_window_t; x_offset: int16;
#                               y_offset: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_offset*(c: ptr xcb_connection_t; destination_kind: xcb_shape_kind_t;
#                       destination_window: xcb_window_t; x_offset: int16;
#                       y_offset: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_query_extents*(c: ptr xcb_connection_t;
#                              destination_window: xcb_window_t): xcb_shape_query_extents_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shape_query_extents_unchecked*(c: ptr xcb_connection_t;
#                                        destination_window: xcb_window_t): xcb_shape_query_extents_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shape_query_extents_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shape_query_extents_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_query_extents_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_shape_query_extents_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shape_select_input_checked*(c: ptr xcb_connection_t;
#                                     destination_window: xcb_window_t;
#                                     enable: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_select_input*(c: ptr xcb_connection_t;
#                             destination_window: xcb_window_t; enable: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_input_selected*(c: ptr xcb_connection_t;
#                               destination_window: xcb_window_t): xcb_shape_input_selected_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shape_input_selected_unchecked*(c: ptr xcb_connection_t;
#                                         destination_window: xcb_window_t): xcb_shape_input_selected_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shape_input_selected_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shape_input_selected_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_input_selected_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_shape_input_selected_reply_t
# proc xcb_shape_get_rectangles_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shape_get_rectangles*(c: ptr xcb_connection_t; window: xcb_window_t;
#                               source_kind: xcb_shape_kind_t): xcb_shape_get_rectangles_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shape_get_rectangles_unchecked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t;
#                                         source_kind: xcb_shape_kind_t): xcb_shape_get_rectangles_cookie_t
# proc xcb_shape_get_rectangles_rectangles*(R: ptr xcb_shape_get_rectangles_reply_t): ptr xcb_rectangle_t
# proc xcb_shape_get_rectangles_rectangles_length*(
#     R: ptr xcb_shape_get_rectangles_reply_t): cint
# proc xcb_shape_get_rectangles_rectangles_iterator*(
#     R: ptr xcb_shape_get_rectangles_reply_t): xcb_rectangle_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shape_get_rectangles_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shape_get_rectangles_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_get_rectangles_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_shape_get_rectangles_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from shm.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Shm_API XCB Shm API
# ##  @brief Shm XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_SHM_MAJOR_VERSION* = 1
#   XCB_SHM_MINOR_VERSION* = 2

# var xcb_shm_id*: xcb_extension_t

# type
#   xcb_shm_seg_t* = uint32

# ## *
# ##  @brief xcb_shm_seg_iterator_t
# ##

# type
#   xcb_shm_seg_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_shm_seg_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_shm_completion.

# const
#   XCB_SHM_COMPLETION* = 0

# ## *
# ##  @brief xcb_shm_completion_event_t
# ##

# type
#   xcb_shm_completion_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     drawable*: xcb_drawable_t
#     minor_event*: uint16
#     major_event*: uint8
#     pad1*: uint8
#     shmseg*: xcb_shm_seg_t
#     offset*: uint32


# ## * Opcode for xcb_shm_bad_seg.

# const
#   XCB_SHM_BAD_SEG* = 0

# type
#   xcb_shm_bad_seg_error_t* = xcb_value_error_t

# ## *
# ##  @brief xcb_shm_query_version_cookie_t
# ##

# type
#   xcb_shm_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shm_query_version.

# const
#   XCB_SHM_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_shm_query_version_request_t
# ##

# type
#   xcb_shm_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_shm_query_version_reply_t
# ##

# type
#   xcb_shm_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     shared_pixmaps*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16
#     uid*: uint16
#     gid*: uint16
#     pixmap_format*: uint8
#     pad0*: array[15, uint8]


# ## * Opcode for xcb_shm_attach.

# const
#   XCB_SHM_ATTACH* = 1

# ## *
# ##  @brief xcb_shm_attach_request_t
# ##

# type
#   xcb_shm_attach_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     shmseg*: xcb_shm_seg_t
#     shmid*: uint32
#     read_only*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_shm_detach.

# const
#   XCB_SHM_DETACH* = 2

# ## *
# ##  @brief xcb_shm_detach_request_t
# ##

# type
#   xcb_shm_detach_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     shmseg*: xcb_shm_seg_t


# ## * Opcode for xcb_shm_put_image.

# const
#   XCB_SHM_PUT_IMAGE* = 3

# ## *
# ##  @brief xcb_shm_put_image_request_t
# ##

# type
#   xcb_shm_put_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     total_width*: uint16
#     total_height*: uint16
#     src_x*: uint16
#     src_y*: uint16
#     src_width*: uint16
#     src_height*: uint16
#     dst_x*: int16
#     dst_y*: int16
#     depth*: uint8
#     format*: uint8
#     send_event*: uint8
#     pad0*: uint8
#     shmseg*: xcb_shm_seg_t
#     offset*: uint32


# ## *
# ##  @brief xcb_shm_get_image_cookie_t
# ##

# type
#   xcb_shm_get_image_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shm_get_image.

# const
#   XCB_SHM_GET_IMAGE* = 4

# ## *
# ##  @brief xcb_shm_get_image_request_t
# ##

# type
#   xcb_shm_get_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     plane_mask*: uint32
#     format*: uint8
#     pad0*: array[3, uint8]
#     shmseg*: xcb_shm_seg_t
#     offset*: uint32


# ## *
# ##  @brief xcb_shm_get_image_reply_t
# ##

# type
#   xcb_shm_get_image_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     depth*: uint8
#     sequence*: uint16
#     length*: uint32
#     visual*: xcb_visualid_t
#     size*: uint32


# ## * Opcode for xcb_shm_create_pixmap.

# const
#   XCB_SHM_CREATE_PIXMAP* = 5

# ## *
# ##  @brief xcb_shm_create_pixmap_request_t
# ##

# type
#   xcb_shm_create_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     pid*: xcb_pixmap_t
#     drawable*: xcb_drawable_t
#     width*: uint16
#     height*: uint16
#     depth*: uint8
#     pad0*: array[3, uint8]
#     shmseg*: xcb_shm_seg_t
#     offset*: uint32


# ## * Opcode for xcb_shm_attach_fd.

# const
#   XCB_SHM_ATTACH_FD* = 6

# ## *
# ##  @brief xcb_shm_attach_fd_request_t
# ##

# type
#   xcb_shm_attach_fd_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     shmseg*: xcb_shm_seg_t
#     read_only*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_shm_create_segment_cookie_t
# ##

# type
#   xcb_shm_create_segment_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_shm_create_segment.

# const
#   XCB_SHM_CREATE_SEGMENT* = 7

# ## *
# ##  @brief xcb_shm_create_segment_request_t
# ##

# type
#   xcb_shm_create_segment_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     shmseg*: xcb_shm_seg_t
#     size*: uint32
#     read_only*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_shm_create_segment_reply_t
# ##

# type
#   xcb_shm_create_segment_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     nfd*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_shm_seg_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_shm_seg_t)
# ##

# proc xcb_shm_seg_next*(i: ptr xcb_shm_seg_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_shm_seg_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_shm_seg_end*(i: xcb_shm_seg_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_query_version*(c: ptr xcb_connection_t): xcb_shm_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shm_query_version_unchecked*(c: ptr xcb_connection_t): xcb_shm_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shm_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shm_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_query_version_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_shm_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shm_attach_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
#                             shmid: uint32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_attach*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t; shmid: uint32;
#                     read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shm_detach_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_detach*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shm_put_image_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                gc: xcb_gcontext_t; total_width: uint16;
#                                total_height: uint16; src_x: uint16;
#                                src_y: uint16; src_width: uint16;
#                                src_height: uint16; dst_x: int16; dst_y: int16;
#                                depth: uint8; format: uint8; send_event: uint8;
#                                shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_put_image*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                        gc: xcb_gcontext_t; total_width: uint16;
#                        total_height: uint16; src_x: uint16; src_y: uint16;
#                        src_width: uint16; src_height: uint16; dst_x: int16;
#                        dst_y: int16; depth: uint8; format: uint8;
#                        send_event: uint8; shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_get_image*(c: ptr xcb_connection_t; drawable: xcb_drawable_t; x: int16;
#                        y: int16; width: uint16; height: uint16;
#                        plane_mask: uint32; format: uint8; shmseg: xcb_shm_seg_t;
#                        offset: uint32): xcb_shm_get_image_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shm_get_image_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                  x: int16; y: int16; width: uint16;
#                                  height: uint16; plane_mask: uint32;
#                                  format: uint8; shmseg: xcb_shm_seg_t;
#                                  offset: uint32): xcb_shm_get_image_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shm_get_image_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shm_get_image_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_get_image_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_shm_get_image_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shm_create_pixmap_checked*(c: ptr xcb_connection_t; pid: xcb_pixmap_t;
#                                    drawable: xcb_drawable_t; width: uint16;
#                                    height: uint16; depth: uint8;
#                                    shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_create_pixmap*(c: ptr xcb_connection_t; pid: xcb_pixmap_t;
#                            drawable: xcb_drawable_t; width: uint16;
#                            height: uint16; depth: uint8; shmseg: xcb_shm_seg_t;
#                            offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_shm_attach_fd_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
#                                shm_fd: int32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_attach_fd*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
#                        shm_fd: int32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_shm_create_segment*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
#                             size: uint32; read_only: uint8): xcb_shm_create_segment_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_shm_create_segment_unchecked*(c: ptr xcb_connection_t;
#                                       shmseg: xcb_shm_seg_t; size: uint32;
#                                       read_only: uint8): xcb_shm_create_segment_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_shm_create_segment_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shm_create_segment_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_create_segment_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_shm_create_segment_reply_t
# ## *
# ##  Return the reply fds
# ##  @param c      The connection
# ##  @param reply  The reply
# ##
# ##  Returns the array of reply fds of the request asked by
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_shm_create_segment_reply_fds*(c: ptr xcb_connection_t; ## *<
#                                       reply: ptr xcb_shm_create_segment_reply_t): ptr cint
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from sync.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Sync_API XCB Sync API
# ##  @brief Sync XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_SYNC_MAJOR_VERSION* = 3
#   XCB_SYNC_MINOR_VERSION* = 1

# var xcb_sync_id*: xcb_extension_t

# type
#   xcb_sync_alarm_t* = uint32

# ## *
# ##  @brief xcb_sync_alarm_iterator_t
# ##

# type
#   xcb_sync_alarm_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_alarm_t
#     rem*: cint
#     index*: cint

#   xcb_sync_alarmstate_t* = enum
#     XCB_SYNC_ALARMSTATE_ACTIVE = 0, XCB_SYNC_ALARMSTATE_INACTIVE = 1,
#     XCB_SYNC_ALARMSTATE_DESTROYED = 2
#   xcb_sync_counter_t* = uint32


# ## *
# ##  @brief xcb_sync_counter_iterator_t
# ##

# type
#   xcb_sync_counter_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_counter_t
#     rem*: cint
#     index*: cint

#   xcb_sync_fence_t* = uint32

# ## *
# ##  @brief xcb_sync_fence_iterator_t
# ##

# type
#   xcb_sync_fence_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_fence_t
#     rem*: cint
#     index*: cint

#   xcb_sync_testtype_t* = enum
#     XCB_SYNC_TESTTYPE_POSITIVE_TRANSITION = 0,
#     XCB_SYNC_TESTTYPE_NEGATIVE_TRANSITION = 1,
#     XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON = 2,
#     XCB_SYNC_TESTTYPE_NEGATIVE_COMPARISON = 3
#   xcb_sync_valuetype_t* = enum
#     XCB_SYNC_VALUETYPE_ABSOLUTE = 0, XCB_SYNC_VALUETYPE_RELATIVE = 1
#   xcb_sync_ca_t* = enum
#     XCB_SYNC_CA_COUNTER = 1, XCB_SYNC_CA_VALUE_TYPE = 2, XCB_SYNC_CA_VALUE = 4,
#     XCB_SYNC_CA_TEST_TYPE = 8, XCB_SYNC_CA_DELTA = 16, XCB_SYNC_CA_EVENTS = 32




# ## *
# ##  @brief xcb_sync_int64_t
# ##

# type
#   xcb_sync_int64_t* {.bycopy.} = object
#     hi*: int32
#     lo*: uint32


# ## *
# ##  @brief xcb_sync_int64_iterator_t
# ##

# type
#   xcb_sync_int64_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_int64_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_sync_systemcounter_t
# ##

# type
#   xcb_sync_systemcounter_t* {.bycopy.} = object
#     counter*: xcb_sync_counter_t
#     resolution*: xcb_sync_int64_t
#     name_len*: uint16


# ## *
# ##  @brief xcb_sync_systemcounter_iterator_t
# ##

# type
#   xcb_sync_systemcounter_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_systemcounter_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_sync_trigger_t
# ##

# type
#   xcb_sync_trigger_t* {.bycopy.} = object
#     counter*: xcb_sync_counter_t
#     wait_type*: uint32
#     wait_value*: xcb_sync_int64_t
#     test_type*: uint32


# ## *
# ##  @brief xcb_sync_trigger_iterator_t
# ##

# type
#   xcb_sync_trigger_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_trigger_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_sync_waitcondition_t
# ##

# type
#   xcb_sync_waitcondition_t* {.bycopy.} = object
#     trigger*: xcb_sync_trigger_t
#     event_threshold*: xcb_sync_int64_t


# ## *
# ##  @brief xcb_sync_waitcondition_iterator_t
# ##

# type
#   xcb_sync_waitcondition_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_sync_waitcondition_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_sync_counter.

# const
#   XCB_SYNC_COUNTER* = 0

# ## *
# ##  @brief xcb_sync_counter_error_t
# ##

# type
#   xcb_sync_counter_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     bad_counter*: uint32
#     minor_opcode*: uint16
#     major_opcode*: uint8


# ## * Opcode for xcb_sync_alarm.

# const
#   XCB_SYNC_ALARM* = 1

# ## *
# ##  @brief xcb_sync_alarm_error_t
# ##

# type
#   xcb_sync_alarm_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     bad_alarm*: uint32
#     minor_opcode*: uint16
#     major_opcode*: uint8


# ## *
# ##  @brief xcb_sync_initialize_cookie_t
# ##

# type
#   xcb_sync_initialize_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_initialize.

# const
#   XCB_SYNC_INITIALIZE* = 0

# ## *
# ##  @brief xcb_sync_initialize_request_t
# ##

# type
#   xcb_sync_initialize_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     desired_major_version*: uint8
#     desired_minor_version*: uint8


# ## *
# ##  @brief xcb_sync_initialize_reply_t
# ##

# type
#   xcb_sync_initialize_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint8
#     minor_version*: uint8
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_sync_list_system_counters_cookie_t
# ##

# type
#   xcb_sync_list_system_counters_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_list_system_counters.

# const
#   XCB_SYNC_LIST_SYSTEM_COUNTERS* = 1

# ## *
# ##  @brief xcb_sync_list_system_counters_request_t
# ##

# type
#   xcb_sync_list_system_counters_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_sync_list_system_counters_reply_t
# ##

# type
#   xcb_sync_list_system_counters_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     counters_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_sync_create_counter.

# const
#   XCB_SYNC_CREATE_COUNTER* = 2

# ## *
# ##  @brief xcb_sync_create_counter_request_t
# ##

# type
#   xcb_sync_create_counter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     id*: xcb_sync_counter_t
#     initial_value*: xcb_sync_int64_t


# ## * Opcode for xcb_sync_destroy_counter.

# const
#   XCB_SYNC_DESTROY_COUNTER* = 6

# ## *
# ##  @brief xcb_sync_destroy_counter_request_t
# ##

# type
#   xcb_sync_destroy_counter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     counter*: xcb_sync_counter_t


# ## *
# ##  @brief xcb_sync_query_counter_cookie_t
# ##

# type
#   xcb_sync_query_counter_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_query_counter.

# const
#   XCB_SYNC_QUERY_COUNTER* = 5

# ## *
# ##  @brief xcb_sync_query_counter_request_t
# ##

# type
#   xcb_sync_query_counter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     counter*: xcb_sync_counter_t


# ## *
# ##  @brief xcb_sync_query_counter_reply_t
# ##

# type
#   xcb_sync_query_counter_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     counter_value*: xcb_sync_int64_t


# ## * Opcode for xcb_sync_await.

# const
#   XCB_SYNC_AWAIT* = 7

# ## *
# ##  @brief xcb_sync_await_request_t
# ##

# type
#   xcb_sync_await_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## * Opcode for xcb_sync_change_counter.

# const
#   XCB_SYNC_CHANGE_COUNTER* = 4

# ## *
# ##  @brief xcb_sync_change_counter_request_t
# ##

# type
#   xcb_sync_change_counter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     counter*: xcb_sync_counter_t
#     amount*: xcb_sync_int64_t


# ## * Opcode for xcb_sync_set_counter.

# const
#   XCB_SYNC_SET_COUNTER* = 3

# ## *
# ##  @brief xcb_sync_set_counter_request_t
# ##

# type
#   xcb_sync_set_counter_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     counter*: xcb_sync_counter_t
#     value*: xcb_sync_int64_t


# ## *
# ##  @brief xcb_sync_create_alarm_value_list_t
# ##

# type
#   xcb_sync_create_alarm_value_list_t* {.bycopy.} = object
#     counter*: xcb_sync_counter_t
#     valueType*: uint32
#     value*: xcb_sync_int64_t
#     testType*: uint32
#     delta*: xcb_sync_int64_t
#     events*: uint32


# ## * Opcode for xcb_sync_create_alarm.

# const
#   XCB_SYNC_CREATE_ALARM* = 8

# ## *
# ##  @brief xcb_sync_create_alarm_request_t
# ##

# type
#   xcb_sync_create_alarm_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     id*: xcb_sync_alarm_t
#     value_mask*: uint32


# ## *
# ##  @brief xcb_sync_change_alarm_value_list_t
# ##

# type
#   xcb_sync_change_alarm_value_list_t* {.bycopy.} = object
#     counter*: xcb_sync_counter_t
#     valueType*: uint32
#     value*: xcb_sync_int64_t
#     testType*: uint32
#     delta*: xcb_sync_int64_t
#     events*: uint32


# ## * Opcode for xcb_sync_change_alarm.

# const
#   XCB_SYNC_CHANGE_ALARM* = 9

# ## *
# ##  @brief xcb_sync_change_alarm_request_t
# ##

# type
#   xcb_sync_change_alarm_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     id*: xcb_sync_alarm_t
#     value_mask*: uint32


# ## * Opcode for xcb_sync_destroy_alarm.

# const
#   XCB_SYNC_DESTROY_ALARM* = 11

# ## *
# ##  @brief xcb_sync_destroy_alarm_request_t
# ##

# type
#   xcb_sync_destroy_alarm_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     alarm*: xcb_sync_alarm_t


# ## *
# ##  @brief xcb_sync_query_alarm_cookie_t
# ##

# type
#   xcb_sync_query_alarm_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_query_alarm.

# const
#   XCB_SYNC_QUERY_ALARM* = 10

# ## *
# ##  @brief xcb_sync_query_alarm_request_t
# ##

# type
#   xcb_sync_query_alarm_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     alarm*: xcb_sync_alarm_t


# ## *
# ##  @brief xcb_sync_query_alarm_reply_t
# ##

# type
#   xcb_sync_query_alarm_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     trigger*: xcb_sync_trigger_t
#     delta*: xcb_sync_int64_t
#     events*: uint8
#     state*: uint8
#     pad1*: array[2, uint8]


# ## * Opcode for xcb_sync_set_priority.

# const
#   XCB_SYNC_SET_PRIORITY* = 12

# ## *
# ##  @brief xcb_sync_set_priority_request_t
# ##

# type
#   xcb_sync_set_priority_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     id*: uint32
#     priority*: int32


# ## *
# ##  @brief xcb_sync_get_priority_cookie_t
# ##

# type
#   xcb_sync_get_priority_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_get_priority.

# const
#   XCB_SYNC_GET_PRIORITY* = 13

# ## *
# ##  @brief xcb_sync_get_priority_request_t
# ##

# type
#   xcb_sync_get_priority_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     id*: uint32


# ## *
# ##  @brief xcb_sync_get_priority_reply_t
# ##

# type
#   xcb_sync_get_priority_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     priority*: int32


# ## * Opcode for xcb_sync_create_fence.

# const
#   XCB_SYNC_CREATE_FENCE* = 14

# ## *
# ##  @brief xcb_sync_create_fence_request_t
# ##

# type
#   xcb_sync_create_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     fence*: xcb_sync_fence_t
#     initially_triggered*: uint8


# ## * Opcode for xcb_sync_trigger_fence.

# const
#   XCB_SYNC_TRIGGER_FENCE* = 15

# ## *
# ##  @brief xcb_sync_trigger_fence_request_t
# ##

# type
#   xcb_sync_trigger_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     fence*: xcb_sync_fence_t


# ## * Opcode for xcb_sync_reset_fence.

# const
#   XCB_SYNC_RESET_FENCE* = 16

# ## *
# ##  @brief xcb_sync_reset_fence_request_t
# ##

# type
#   xcb_sync_reset_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     fence*: xcb_sync_fence_t


# ## * Opcode for xcb_sync_destroy_fence.

# const
#   XCB_SYNC_DESTROY_FENCE* = 17

# ## *
# ##  @brief xcb_sync_destroy_fence_request_t
# ##

# type
#   xcb_sync_destroy_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     fence*: xcb_sync_fence_t


# ## *
# ##  @brief xcb_sync_query_fence_cookie_t
# ##

# type
#   xcb_sync_query_fence_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_sync_query_fence.

# const
#   XCB_SYNC_QUERY_FENCE* = 18

# ## *
# ##  @brief xcb_sync_query_fence_request_t
# ##

# type
#   xcb_sync_query_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     fence*: xcb_sync_fence_t


# ## *
# ##  @brief xcb_sync_query_fence_reply_t
# ##

# type
#   xcb_sync_query_fence_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     triggered*: uint8
#     pad1*: array[23, uint8]


# ## * Opcode for xcb_sync_await_fence.

# const
#   XCB_SYNC_AWAIT_FENCE* = 19

# ## *
# ##  @brief xcb_sync_await_fence_request_t
# ##

# type
#   xcb_sync_await_fence_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## * Opcode for xcb_sync_counter_notify.

# const
#   XCB_SYNC_COUNTER_NOTIFY* = 0

# ## *
# ##  @brief xcb_sync_counter_notify_event_t
# ##

# type
#   xcb_sync_counter_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     kind*: uint8
#     sequence*: uint16
#     counter*: xcb_sync_counter_t
#     wait_value*: xcb_sync_int64_t
#     counter_value*: xcb_sync_int64_t
#     timestamp*: xcb_timestamp_t
#     count*: uint16
#     destroyed*: uint8
#     pad0*: uint8


# ## * Opcode for xcb_sync_alarm_notify.

# const
#   XCB_SYNC_ALARM_NOTIFY* = 1

# ## *
# ##  @brief xcb_sync_alarm_notify_event_t
# ##

# type
#   xcb_sync_alarm_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     kind*: uint8
#     sequence*: uint16
#     alarm*: xcb_sync_alarm_t
#     counter_value*: xcb_sync_int64_t
#     alarm_value*: xcb_sync_int64_t
#     timestamp*: xcb_timestamp_t
#     state*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_alarm_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_alarm_t)
# ##

# proc xcb_sync_alarm_next*(i: ptr xcb_sync_alarm_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_alarm_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_alarm_end*(i: xcb_sync_alarm_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_counter_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_counter_t)
# ##

# proc xcb_sync_counter_next*(i: ptr xcb_sync_counter_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_counter_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_counter_end*(i: xcb_sync_counter_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_fence_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_fence_t)
# ##

# proc xcb_sync_fence_next*(i: ptr xcb_sync_fence_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_fence_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_fence_end*(i: xcb_sync_fence_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_int64_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_int64_t)
# ##

# proc xcb_sync_int64_next*(i: ptr xcb_sync_int64_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_int64_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_int64_end*(i: xcb_sync_int64_iterator_t): xcb_generic_iterator_t
# proc xcb_sync_systemcounter_sizeof*(_buffer: pointer): cint
# proc xcb_sync_systemcounter_name*(R: ptr xcb_sync_systemcounter_t): cstring
# proc xcb_sync_systemcounter_name_length*(R: ptr xcb_sync_systemcounter_t): cint
# proc xcb_sync_systemcounter_name_end*(R: ptr xcb_sync_systemcounter_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_systemcounter_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_systemcounter_t)
# ##

# proc xcb_sync_systemcounter_next*(i: ptr xcb_sync_systemcounter_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_systemcounter_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_systemcounter_end*(i: xcb_sync_systemcounter_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_trigger_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_trigger_t)
# ##

# proc xcb_sync_trigger_next*(i: ptr xcb_sync_trigger_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_trigger_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_trigger_end*(i: xcb_sync_trigger_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_sync_waitcondition_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_sync_waitcondition_t)
# ##

# proc xcb_sync_waitcondition_next*(i: ptr xcb_sync_waitcondition_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_sync_waitcondition_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_sync_waitcondition_end*(i: xcb_sync_waitcondition_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_initialize*(c: ptr xcb_connection_t; desired_major_version: uint8;
#                          desired_minor_version: uint8): xcb_sync_initialize_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_initialize_unchecked*(c: ptr xcb_connection_t;
#                                    desired_major_version: uint8;
#                                    desired_minor_version: uint8): xcb_sync_initialize_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_initialize_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_initialize_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_initialize_cookie_t; ## *<
#                                e: ptr ptr xcb_generic_error_t): ptr xcb_sync_initialize_reply_t
# proc xcb_sync_list_system_counters_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_list_system_counters*(c: ptr xcb_connection_t): xcb_sync_list_system_counters_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_list_system_counters_unchecked*(c: ptr xcb_connection_t): xcb_sync_list_system_counters_cookie_t
# proc xcb_sync_list_system_counters_counters_length*(
#     R: ptr xcb_sync_list_system_counters_reply_t): cint
# proc xcb_sync_list_system_counters_counters_iterator*(
#     R: ptr xcb_sync_list_system_counters_reply_t): xcb_sync_systemcounter_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_list_system_counters_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_list_system_counters_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_list_system_counters_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_sync_list_system_counters_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_create_counter_checked*(c: ptr xcb_connection_t;
#                                      id: xcb_sync_counter_t;
#                                      initial_value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_create_counter*(c: ptr xcb_connection_t; id: xcb_sync_counter_t;
#                              initial_value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_destroy_counter_checked*(c: ptr xcb_connection_t;
#                                       counter: xcb_sync_counter_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_destroy_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_query_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t): xcb_sync_query_counter_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_query_counter_unchecked*(c: ptr xcb_connection_t;
#                                       counter: xcb_sync_counter_t): xcb_sync_query_counter_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_query_counter_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_query_counter_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_counter_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_counter_reply_t
# proc xcb_sync_await_sizeof*(_buffer: pointer; wait_list_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_await_checked*(c: ptr xcb_connection_t; wait_list_len: uint32;
#                             wait_list: ptr xcb_sync_waitcondition_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_await*(c: ptr xcb_connection_t; wait_list_len: uint32;
#                     wait_list: ptr xcb_sync_waitcondition_t): xcb_void_cookie_t
# proc xcb_sync_await_wait_list*(R: ptr xcb_sync_await_request_t): ptr xcb_sync_waitcondition_t
# proc xcb_sync_await_wait_list_length*(R: ptr xcb_sync_await_request_t): cint
# proc xcb_sync_await_wait_list_iterator*(R: ptr xcb_sync_await_request_t): xcb_sync_waitcondition_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_change_counter_checked*(c: ptr xcb_connection_t;
#                                      counter: xcb_sync_counter_t;
#                                      amount: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_change_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t;
#                              amount: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_set_counter_checked*(c: ptr xcb_connection_t;
#                                   counter: xcb_sync_counter_t;
#                                   value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_set_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t;
#                           value: xcb_sync_int64_t): xcb_void_cookie_t
# proc xcb_sync_create_alarm_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_sync_create_alarm_value_list_t): cint
# proc xcb_sync_create_alarm_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_sync_create_alarm_value_list_t): cint
# proc xcb_sync_create_alarm_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_sync_create_alarm_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_create_alarm_checked*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                                    value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_create_alarm*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                            value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_create_alarm_aux_checked*(c: ptr xcb_connection_t;
#                                        id: xcb_sync_alarm_t; value_mask: uint32;
#     value_list: ptr xcb_sync_create_alarm_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_create_alarm_aux*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                                value_mask: uint32; value_list: ptr xcb_sync_create_alarm_value_list_t): xcb_void_cookie_t
# proc xcb_sync_create_alarm_value_list*(R: ptr xcb_sync_create_alarm_request_t): pointer
# proc xcb_sync_change_alarm_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_sync_change_alarm_value_list_t): cint
# proc xcb_sync_change_alarm_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_sync_change_alarm_value_list_t): cint
# proc xcb_sync_change_alarm_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_sync_change_alarm_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_change_alarm_checked*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                                    value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_change_alarm*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                            value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_change_alarm_aux_checked*(c: ptr xcb_connection_t;
#                                        id: xcb_sync_alarm_t; value_mask: uint32;
#     value_list: ptr xcb_sync_change_alarm_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_change_alarm_aux*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
#                                value_mask: uint32; value_list: ptr xcb_sync_change_alarm_value_list_t): xcb_void_cookie_t
# proc xcb_sync_change_alarm_value_list*(R: ptr xcb_sync_change_alarm_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_destroy_alarm_checked*(c: ptr xcb_connection_t;
#                                     alarm: xcb_sync_alarm_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_destroy_alarm*(c: ptr xcb_connection_t; alarm: xcb_sync_alarm_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_query_alarm*(c: ptr xcb_connection_t; alarm: xcb_sync_alarm_t): xcb_sync_query_alarm_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_query_alarm_unchecked*(c: ptr xcb_connection_t;
#                                     alarm: xcb_sync_alarm_t): xcb_sync_query_alarm_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_query_alarm_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_query_alarm_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_alarm_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_alarm_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_set_priority_checked*(c: ptr xcb_connection_t; id: uint32;
#                                    priority: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_set_priority*(c: ptr xcb_connection_t; id: uint32; priority: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_get_priority*(c: ptr xcb_connection_t; id: uint32): xcb_sync_get_priority_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_get_priority_unchecked*(c: ptr xcb_connection_t; id: uint32): xcb_sync_get_priority_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_get_priority_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_get_priority_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_get_priority_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_sync_get_priority_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_create_fence_checked*(c: ptr xcb_connection_t;
#                                    drawable: xcb_drawable_t;
#                                    fence: xcb_sync_fence_t;
#                                    initially_triggered: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_create_fence*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                            fence: xcb_sync_fence_t; initially_triggered: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_trigger_fence_checked*(c: ptr xcb_connection_t;
#                                     fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_trigger_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_reset_fence_checked*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_reset_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_destroy_fence_checked*(c: ptr xcb_connection_t;
#                                     fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_destroy_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_query_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_sync_query_fence_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_sync_query_fence_unchecked*(c: ptr xcb_connection_t;
#                                     fence: xcb_sync_fence_t): xcb_sync_query_fence_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_sync_query_fence_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_sync_query_fence_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_fence_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_fence_reply_t
# proc xcb_sync_await_fence_sizeof*(_buffer: pointer; fence_list_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_sync_await_fence_checked*(c: ptr xcb_connection_t;
#                                   fence_list_len: uint32;
#                                   fence_list: ptr xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_sync_await_fence*(c: ptr xcb_connection_t; fence_list_len: uint32;
#                           fence_list: ptr xcb_sync_fence_t): xcb_void_cookie_t
# proc xcb_sync_await_fence_fence_list*(R: ptr xcb_sync_await_fence_request_t): ptr xcb_sync_fence_t
# proc xcb_sync_await_fence_fence_list_length*(
#     R: ptr xcb_sync_await_fence_request_t): cint
# proc xcb_sync_await_fence_fence_list_end*(R: ptr xcb_sync_await_fence_request_t): xcb_generic_iterator_t
# ## *
# ##  @}
# ##

# proc xcb_atom_name_by_screen*(base: cstring; screen: uint8): cstring
# proc xcb_atom_name_by_resource*(base: cstring; resource: uint32): cstring
# proc xcb_atom_name_unique*(base: cstring; id: uint32): cstring
# proc xcb_aux_get_depth*(c: ptr xcb_connection_t; screen: ptr xcb_screen_t): uint8
# proc xcb_aux_get_depth_of_visual*(screen: ptr xcb_screen_t; id: xcb_visualid_t): uint8
# proc xcb_aux_get_screen*(c: ptr xcb_connection_t; screen: cint): ptr xcb_screen_t
# proc xcb_aux_get_visualtype*(c: ptr xcb_connection_t; screen: cint;
#                             vid: xcb_visualid_t): ptr xcb_visualtype_t
# proc xcb_aux_find_visual_by_id*(screen: ptr xcb_screen_t; id: xcb_visualid_t): ptr xcb_visualtype_t
# proc xcb_aux_find_visual_by_attrs*(screen: ptr xcb_screen_t; class_: int8;
#                                   depth: int8): ptr xcb_visualtype_t
# proc xcb_aux_sync*(c: ptr xcb_connection_t)
# ##  internal helper macro for XCB_AUX_ADD_PARAM
# ## It gives the offset of the field 'param' in the structure pointed to by
# ## 'paramsp' in multiples of an uint32's size.

# template XCB_AUX_INTERNAL_OFFSETOF*(paramsp, param: untyped): untyped =
#   (cast[ptr uint32]((addr(((paramsp).param)))) - cast[ptr uint32]((paramsp)))

# ##  add an optional parameter to an xcb_params_* structure
# ## parameters:
# ##     maskp: pointer to bitmask whos bits mark used parameters
# ##     paramsp: pointer to structure with parameters
# ##     param: parameter to set
# ##     value: value to set the parameter to
# ##

# template XCB_AUX_ADD_PARAM*(maskp, paramsp, param, value: untyped): untyped =
#   (
#     ((maskp)[] = (maskp)[] or 1 shl XCB_AUX_INTERNAL_OFFSETOF((paramsp), param))
#     ((paramsp).param = (value)))

# type
#   xcb_params_cw_t* {.bycopy.} = object
#     back_pixmap*: uint32
#     back_pixel*: uint32
#     border_pixmap*: uint32
#     border_pixel*: uint32
#     bit_gravity*: uint32
#     win_gravity*: uint32
#     backing_store*: uint32
#     backing_planes*: uint32
#     backing_pixel*: uint32
#     override_redirect*: uint32
#     save_under*: uint32
#     event_mask*: uint32
#     dont_propagate*: uint32
#     colormap*: uint32
#     cursor*: uint32


# proc xcb_aux_create_window*(c: ptr xcb_connection_t; depth: uint8;
#                            wid: xcb_window_t; parent: xcb_window_t; x: int16;
#                            y: int16; width: uint16; height: uint16;
#                            border_width: uint16; class_: uint16;
#                            visual: xcb_visualid_t; mask: uint32;
#                            params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_create_window_checked*(c: ptr xcb_connection_t; depth: uint8;
#                                    wid: xcb_window_t; parent: xcb_window_t;
#                                    x: int16; y: int16; width: uint16;
#                                    height: uint16; border_width: uint16;
#                                    class_: uint16; visual: xcb_visualid_t;
#                                    mask: uint32; params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_change_window_attributes*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; mask: uint32;
#                                       params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_change_window_attributes_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; mask: uint32; params: ptr xcb_params_cw_t): xcb_void_cookie_t
# type
#   xcb_params_configure_window_t* {.bycopy.} = object
#     x*: int32
#     y*: int32
#     width*: uint32
#     height*: uint32
#     border_width*: uint32
#     sibling*: uint32
#     stack_mode*: uint32


# proc xcb_aux_configure_window*(c: ptr xcb_connection_t; window: xcb_window_t;
#                               mask: uint16;
#                               params: ptr xcb_params_configure_window_t): xcb_void_cookie_t
# type
#   xcb_params_gc_t* {.bycopy.} = object
#     function*: uint32
#     plane_mask*: uint32
#     foreground*: uint32
#     background*: uint32
#     line_width*: uint32
#     line_style*: uint32
#     cap_style*: uint32
#     join_style*: uint32
#     fill_style*: uint32
#     fill_rule*: uint32
#     tile*: uint32
#     stipple*: uint32
#     tile_stipple_origin_x*: uint32
#     tile_stipple_origin_y*: uint32
#     font*: uint32
#     subwindow_mode*: uint32
#     graphics_exposures*: uint32
#     clip_originX*: uint32
#     clip_originY*: uint32
#     mask*: uint32
#     dash_offset*: uint32
#     dash_list*: uint32
#     arc_mode*: uint32


# proc xcb_aux_create_gc*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
#                        drawable: xcb_drawable_t; mask: uint32;
#                        params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_create_gc_checked*(c: ptr xcb_connection_t; gid: xcb_gcontext_t;
#                                drawable: xcb_drawable_t; mask: uint32;
#                                params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_change_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t; mask: uint32;
#                        params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_change_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                                mask: uint32; params: ptr xcb_params_gc_t): xcb_void_cookie_t
# type
#   xcb_params_keyboard_t* {.bycopy.} = object
#     key_click_percent*: uint32
#     bell_percent*: uint32
#     bell_pitch*: uint32
#     bell_duration*: uint32
#     led*: uint32
#     led_mode*: uint32
#     key*: uint32
#     auto_repeat_mode*: uint32


# proc xcb_aux_change_keyboard_control*(c: ptr xcb_connection_t; mask: uint32;
#                                      params: ptr xcb_params_keyboard_t): xcb_void_cookie_t
# proc xcb_aux_parse_color*(color_name: cstring; red: ptr uint16; green: ptr uint16;
#                          blue: ptr uint16): cint
# proc xcb_aux_set_line_attributes_checked*(dpy: ptr xcb_connection_t;
#     gc: xcb_gcontext_t; linewidth: uint16; linestyle: int32; capstyle: int32;
#     joinstyle: int32): xcb_void_cookie_t
# proc xcb_aux_clear_window*(dpy: ptr xcb_connection_t; w: xcb_window_t): xcb_void_cookie_t
# ##  Copyright (C) 2007 Bart Massey
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# ## *
# ##  @defgroup xcb__bitops XCB Bit Operations
# ##
# ##  Inline functions for common bit ops used in XCB and elsewhere.
# ##
# ##  @{
# ##
# ## *
# ##  Create a low-order bitmask.
# ##  @param n Mask size.
# ##  @return Mask.
# ##
# ##  Create a bitmask with the lower @p n bits set and the
# ##  rest of the word clear.
# ##  @ingroup xcb__bitops
# ##

# proc xcb_mask*(n: uint32): uint32 =
#   return if n == 32: not 0 else: (1 shl n) - 1

# ## *
# ##  Population count.
# ##  @param n Integer representing a bitset.
# ##  @return Number of 1 bits in the bitset.
# ##
# ##  This is a reasonably fast algorithm for counting the bits
# ##  in a 32-bit word.  Currently a classic binary
# ##  divide-and-conquer popcount: popcount_2() from
# ##  http://en.wikipedia.org/wiki/Hamming_weight.
# ##  @ingroup xcb__bitops
# ##
# ##  15 ops, 3 long immediates, 14 stages, 9 alu ops, 9 alu stages

# proc xcb_popcount*(x: uint32): uint32 =
#   var m1: uint32 = 0x55555555
#   var m2: uint32 = 0x33333333
#   var m4: uint32 = 0x0F0F0F0F
#   dec(x, (x shr 1) and m1)
#   x = (x and m2) + ((x shr 2) and m2)
#   x = (x + (x shr 4)) and m4
#   inc(x, x shr 8)
#   return (x + (x shr 16)) and 0x0000003F

# ## *
# ##  Round up to the next power-of-two unit size.
# ##  @param base Number to be rounded up.
# ##  @param pad Multiple to be rounded to; must be a power of two.
# ##  @return Rounded-up number.
# ##
# ##  Rounds @p base up to a multiple of @p pad, where @p pad
# ##  is a power of two.  The more general case is handled by
# ##  xcb_roundup().
# ##  @ingroup xcb__bitops
# ##

# proc xcb_roundup_2*(base: uint32; pad: uint32): uint32 =
#   return (base + pad - 1) and -pad

# ## *
# ##  Round down to the next power-of-two unit size.
# ##  @param base Number to be rounded down.
# ##  @param pad Multiple to be rounded to; must be a power of two.
# ##  @return Rounded-down number.
# ##
# ##  Rounds @p base down to a multiple of @p pad, where @p pad
# ##  is a power of two.  The more general case is handled by
# ##  xcb_rounddown().
# ##  @ingroup xcb__bitops
# ##

# proc xcb_rounddown_2*(base: uint32; pad: uint32): uint32 =
#   return base and -pad

# ## *
# ##  Round up to the next unit size.
# ##  @param base Number to be rounded up.
# ##  @param pad Multiple to be rounded to.
# ##  @return Rounded-up number.
# ##
# ##  This is a general routine for rounding @p base up
# ##  to a multiple of @p pad.  If you know that @p pad
# ##  is a power of two, you should probably call xcb_roundup_2()
# ##  instead.
# ##  @ingroup xcb__bitops
# ##

# proc xcb_roundup*(base: uint32; pad: uint32): uint32 =
#   var b: uint32 = base + pad - 1
#   ##  faster if pad is a power of two
#   if ((pad - 1) and pad) == 0:
#     return b and -pad
#   return b - b mod pad

# ## *
# ##  Round down to the next unit size.
# ##  @param base Number to be rounded down.
# ##  @param pad Multiple to be rounded to.
# ##  @return Rounded-down number.
# ##
# ##  This is a general routine for rounding @p base down
# ##  to a multiple of @p pad.  If you know that @p pad
# ##  is a power of two, you should probably call xcb_rounddown_2()
# ##  instead.
# ##  @ingroup xcb__bitops
# ##

# proc xcb_rounddown*(base: uint32; pad: uint32): uint32 =
#   ##  faster if pad is a power of two
#   if ((pad - 1) and pad) == 0:
#     return base and -pad
#   return base - base mod pad

# ## *
# ##  Reverse bits of word.
# ##  @param x Target word.
# ##  @param n Number of low-order bits to reverse.
# ##  @return Word with low @p n bits reversed, all others 0.
# ##
# ##  Reverses the bottom @p n bits of @p x.
# ##  @ingroup xcb__bitops
# ##

# proc xcb_bit_reverse*(x: uint32; n: uint8): uint32 =
#   var m1: uint32 = 0x00FF00FF
#   var m2: uint32 = 0x0F0F0F0F
#   var m3: uint32 = 0x33333333
#   var m4: uint32 = 0x55555555
#   x = ((x shl 16) or (x shr 16))
#   x = ((x and m1) shl 8) or ((x shr 8) and m1)
#   x = ((x and m2) shl 4) or ((x shr 4) and m2)
#   x = ((x and m3) shl 2) or ((x shr 2) and m3)
#   x = ((x and m4) shl 1) or ((x shr 1) and m4)
#   x = x shr (32 - n)
#   return x

# ## *
# ##  Host byte order.
# ##  @return The byte order of the host.
# ##
# ##  Tests the host's byte order and returns either
# ##  XCB_IMAGE_ORDER_MSB_FIRST or XCB_IMAGE_ORDER_LSB_FIRST
# ##  as appropriate.
# ##  @ingroup xcb__bitops
# ##

# proc xcb_host_byte_order*(): xcb_image_order_t =
#   var endian_test: uint32 = 0x01020304
#   case cast[cstring](addr(endian_test))[]
#   of 0x00000001:
#     return XCB_IMAGE_ORDER_MSB_FIRST
#   of 0x00000004:
#     return XCB_IMAGE_ORDER_LSB_FIRST
#   assert(0)

# ##  Copyright © 2013 Michael Stapelberg
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# ## *
# ##  @defgroup xcb__cursor_context_t XCB Cursor Functions
# ##
# ##  These functions are the equivalent of libXcursor, but re-implemented for
# ##  XCB. They respect the user’s configured cursor theme when loading cursors,
# ##  specified by the X resources setting "Xcursor.theme".
# ##
# ##  Here is how you would use these functions to change the X11 root window
# ##  cursor to "watch":
# ##  @code
# ##  int screennr;
# ##  xcb_connection_t *conn = xcb_connect(NULL, &screennr);
# ##  if (conn == NULL || xcb_connection_has_error(conn))
# ##      err(EXIT_FAILURE, "Could not connect to X11");
# ##
# ##  xcb_screen_t *screen = xcb_aux_get_screen(conn, screennr);
# ##  xcb_cursor_context_t *ctx;
# ##  if (xcb_cursor_context_new(conn, screen, &ctx) < 0)
# ##      err(EXIT_FAILURE, "Could not initialize xcb-cursor");
# ##
# ##  xcb_cursor_t cid = xcb_cursor_load_cursor(ctx, "watch");
# ##
# ##  xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data;
# ##  xcb_change_window_attributes(conn, screen->root, XCB_CW_CURSOR, (uint32[]){ cid });
# ##  xcb_flush(conn);
# ##
# ##  xcb_cursor_context_free(ctx);
# ##  xcb_disconnect(conn);
# ##  @endcode
# ##
# ##  @{
# ##
# ## *
# ##  @struct xcb_cursor_context_t
# ##  Describes a context for using this library.
# ##
# ##  Create a context with @ref xcb_cursor_context_new (), then load one or more
# ##  cursors with @ref xcb_cursor_load_cursor () and destroy the context with @ref
# ##  xcb_cursor_context_free ().
# ##


# ## *
# ##  Create a new @ref xcb_cursor_context_t.
# ##
# ##  @param conn A working XCB connection, which will be used until you destroy
# ##  the context with @ref xcb_cursor_context_free ().
# ##  @param screen The xcb_screen_t to use (e.g. for getting the RESOURCE_MANAGER
# ##  contents, for creating cursors on, for using the size as fallback when
# ##  calculating the best cursor size).
# ##  @param ctx A pointer to an xcb_cursor_context_t* which will be modified to
# ##  refer to the newly created context.
# ##  @return 0 on success, a negative error code otherwise.
# ##
# ##  @ingroup xcb_cursor_context_t
# ##

# proc xcb_cursor_context_new*(conn: ptr xcb_connection_t; screen: ptr xcb_screen_t;
#                             ctx: ptr ptr xcb_cursor_context_t): cint
# ## *
# ##  Loads the specified cursor, either from the cursor theme or by falling back
# ##  to the X11 "cursor" font.
# ##
# ##  @param ctx A cursor context, created with @ref xcb_cursor_context_new ()
# ##  @param name The name of the cursor to load, e.g. "watch".
# ##  @returns The ID of the created cursor. When you are done using it, use
# ##  xcb_free_cursor. Calling @ref xcb_cursor_context_free () will NOT free the
# ##  created cursor.
# ##
# ##

# proc xcb_cursor_load_cursor*(ctx: ptr xcb_cursor_context_t; name: cstring): xcb_cursor_t
# ## *
# ##  Frees the @ref xcb_cursor_context_t.
# ##
# ##  @param ctx The context to free.
# ##
# ##

# proc xcb_cursor_context_free*(ctx: ptr xcb_cursor_context_t)
# ## *
# ##  @}
# ##

# ##
# ##  Copyright (C) 2008-2009 Julien Danjou <julien@danjou.info>
# ##
# ##  Permission is hereby granted, free of charge, to any person
# ##  obtaining a copy of this software and associated documentation
# ##  files (the "Software"), to deal in the Software without
# ##  restriction, including without limitation the rights to use, copy,
# ##  modify, merge, publish, distribute, sublicense, and/or sell copies
# ##  of the Software, and to permit persons to whom the Software is
# ##  furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be
# ##  included in all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# ##  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# ##  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# ##  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# ##  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# ##  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# ##  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or
# ##  their institutions shall not be used in advertising or otherwise to
# ##  promote the sale, use or other dealings in this Software without
# ##  prior written authorization from the authors.
# ##
# ## *
# ##  @defgroup xcb__event_t XCB Event Functions
# ##
# ##  These functions ease the handling of X events received.
# ##
# ##  @{
# ##

# ## *
# ##  @brief Bit mask to find event type regardless of event source.
# ##
# ##  Each event in the X11 protocol contains an 8-bit type code.
# ##  The most-significant bit in this code is set if the event was
# ##  generated from a SendEvent request. This mask can be used to
# ##  determine the type of event regardless of how the event was
# ##  generated. See the X11R6 protocol specification for details.
# ##

# const
#   XCB_EVENT_RESPONSE_TYPE_MASK* = (0x0000007F)

# template XCB_EVENT_RESPONSE_TYPE*(e: untyped): untyped =
#   (e.response_type and XCB_EVENT_RESPONSE_TYPE_MASK)

# template XCB_EVENT_SENT*(e: untyped): untyped =
#   (e.response_type and not XCB_EVENT_RESPONSE_TYPE_MASK)

# ## *
# ##  @brief Convert an event response type to a label.
# ##  @param type The event type.
# ##  @return A string with the event name, or NULL if unknown.
# ##

# proc xcb_event_get_label*(`type`: uint8): cstring
# ## *
# ##  @brief Convert an event error type to a label.
# ##  @param type The error type.
# ##  @return A string with the event name, or NULL if unknown or if the event is
# ##  not an error.
# ##

# proc xcb_event_get_error_label*(`type`: uint8): cstring
# ## *
# ##  @brief Convert an event request type to a label.
# ##  @param type The request type.
# ##  @return A string with the event name, or NULL if unknown or if the event is
# ##  not an error.
# ##

# proc xcb_event_get_request_label*(`type`: uint8): cstring
# ## *
# ##  @}
# ##

# ##
# ##  Copyright (C) 2009-2011 Arnaud Fontaine <arnau@debian.org>
# ##
# ##  Permission  is  hereby  granted,  free  of charge,  to  any  person
# ##  obtaining  a copy  of  this software  and associated  documentation
# ##  files   (the  "Software"),   to  deal   in  the   Software  without
# ##  restriction, including without limitation  the rights to use, copy,
# ##  modify, merge, publish,  distribute, sublicense, and/or sell copies
# ##  of  the Software, and  to permit  persons to  whom the  Software is
# ##  furnished to do so, subject to the following conditions:
# ##
# ##  The  above copyright  notice and  this permission  notice  shall be
# ##  included in all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE  IS PROVIDED  "AS IS", WITHOUT  WARRANTY OF  ANY KIND,
# ##  EXPRESS OR IMPLIED, INCLUDING BUT  NOT LIMITED TO THE WARRANTIES OF
# ##  MERCHANTABILITY,   FITNESS    FOR   A   PARTICULAR    PURPOSE   AND
# ##  NONINFRINGEMENT. IN  NO EVENT SHALL  THE AUTHORS BE LIABLE  FOR ANY
# ##  CLAIM,  DAMAGES  OR  OTHER  LIABILITY,  WHETHER  IN  AN  ACTION  OF
# ##  CONTRACT, TORT OR OTHERWISE, ARISING  FROM, OUT OF OR IN CONNECTION
# ##  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as  contained in  this notice, the  names of the  authors or
# ##  their institutions shall not be used in advertising or otherwise to
# ##  promote the  sale, use or  other dealings in this  Software without
# ##  prior written authorization from the authors.
# ##
# ## *
# ##  @defgroup xcb__ewmh_t XCB EWMH Functions
# ##
# ##  These functions  allow easy handling  of the protocol  described in
# ##  the Extended Window Manager  Hints specification. The list of Atoms
# ##  is stored as an M4 file  (atomlist.m4) where each Atom is stored as
# ##  a variable defined in the header.
# ##
# ##  Replies of requests generating a  list of pointers (such as list of
# ##  windows, atoms and UTF-8 strings)  are simply stored as a structure
# ##  holding  the XCB  reply which  should (usually)  never  be accessed
# ##  directly and has  to be wipe afterwards. This  structure provides a
# ##  convenient access to the list given in the reply itself.
# ##
# ##  @{
# ##

# ## *
# ##  @brief Hold EWMH information specific to a screen
# ##

# type
#   xcb_ewmh_connection_t* {.bycopy.} = object
#     connection*: ptr xcb_connection_t ## * The X connection
#     ## * The screens on this connection
#     screens*: ptr ptr xcb_screen_t
#     nb_screens*: cint          ## * _NET_WM_CM_Sn atoms depending on the number of screens
#     _NET_WM_CM_Sn*: ptr xcb_atom_t ## * The EWMH atoms of this connection
#     _NET_SUPPORTED*: xcb_atom_t
#     _NET_CLIENT_LIST*: xcb_atom_t
#     _NET_CLIENT_LIST_STACKING*: xcb_atom_t
#     _NET_NUMBER_OF_DESKTOPS*: xcb_atom_t
#     _NET_DESKTOP_GEOMETRY*: xcb_atom_t
#     _NET_DESKTOP_VIEWPORT*: xcb_atom_t
#     _NET_CURRENT_DESKTOP*: xcb_atom_t
#     _NET_DESKTOP_NAMES*: xcb_atom_t
#     _NET_ACTIVE_WINDOW*: xcb_atom_t
#     _NET_WORKAREA*: xcb_atom_t
#     _NET_SUPPORTING_WM_CHECK*: xcb_atom_t
#     _NET_VIRTUAL_ROOTS*: xcb_atom_t
#     _NET_DESKTOP_LAYOUT*: xcb_atom_t
#     _NET_SHOWING_DESKTOP*: xcb_atom_t
#     _NET_CLOSE_WINDOW*: xcb_atom_t
#     _NET_MOVERESIZE_WINDOW*: xcb_atom_t
#     _NET_WM_MOVERESIZE*: xcb_atom_t
#     _NET_RESTACK_WINDOW*: xcb_atom_t
#     _NET_REQUEST_FRAME_EXTENTS*: xcb_atom_t
#     _NET_WM_NAME*: xcb_atom_t
#     _NET_WM_VISIBLE_NAME*: xcb_atom_t
#     _NET_WM_ICON_NAME*: xcb_atom_t
#     _NET_WM_VISIBLE_ICON_NAME*: xcb_atom_t
#     _NET_WM_DESKTOP*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE*: xcb_atom_t
#     _NET_WM_STATE*: xcb_atom_t
#     _NET_WM_ALLOWED_ACTIONS*: xcb_atom_t
#     _NET_WM_STRUT*: xcb_atom_t
#     _NET_WM_STRUT_PARTIAL*: xcb_atom_t
#     _NET_WM_ICON_GEOMETRY*: xcb_atom_t
#     _NET_WM_ICON*: xcb_atom_t
#     _NET_WM_PID*: xcb_atom_t
#     _NET_WM_HANDLED_ICONS*: xcb_atom_t
#     _NET_WM_USER_TIME*: xcb_atom_t
#     _NET_WM_USER_TIME_WINDOW*: xcb_atom_t
#     _NET_FRAME_EXTENTS*: xcb_atom_t
#     _NET_WM_PING*: xcb_atom_t
#     _NET_WM_SYNC_REQUEST*: xcb_atom_t
#     _NET_WM_SYNC_REQUEST_COUNTER*: xcb_atom_t
#     _NET_WM_FULLSCREEN_MONITORS*: xcb_atom_t
#     _NET_WM_FULL_PLACEMENT*: xcb_atom_t
#     UTF8_STRING*: xcb_atom_t
#     WM_PROTOCOLS*: xcb_atom_t
#     MANAGER*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_DESKTOP*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_DOCK*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_TOOLBAR*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_MENU*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_UTILITY*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_SPLASH*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_DIALOG*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_DROPDOWN_MENU*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_POPUP_MENU*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_TOOLTIP*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_NOTIFICATION*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_COMBO*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_DND*: xcb_atom_t
#     _NET_WM_WINDOW_TYPE_NORMAL*: xcb_atom_t
#     _NET_WM_STATE_MODAL*: xcb_atom_t
#     _NET_WM_STATE_STICKY*: xcb_atom_t
#     _NET_WM_STATE_MAXIMIZED_VERT*: xcb_atom_t
#     _NET_WM_STATE_MAXIMIZED_HORZ*: xcb_atom_t
#     _NET_WM_STATE_SHADED*: xcb_atom_t
#     _NET_WM_STATE_SKIP_TASKBAR*: xcb_atom_t
#     _NET_WM_STATE_SKIP_PAGER*: xcb_atom_t
#     _NET_WM_STATE_HIDDEN*: xcb_atom_t
#     _NET_WM_STATE_FULLSCREEN*: xcb_atom_t
#     _NET_WM_STATE_ABOVE*: xcb_atom_t
#     _NET_WM_STATE_BELOW*: xcb_atom_t
#     _NET_WM_STATE_DEMANDS_ATTENTION*: xcb_atom_t
#     _NET_WM_ACTION_MOVE*: xcb_atom_t
#     _NET_WM_ACTION_RESIZE*: xcb_atom_t
#     _NET_WM_ACTION_MINIMIZE*: xcb_atom_t
#     _NET_WM_ACTION_SHADE*: xcb_atom_t
#     _NET_WM_ACTION_STICK*: xcb_atom_t
#     _NET_WM_ACTION_MAXIMIZE_HORZ*: xcb_atom_t
#     _NET_WM_ACTION_MAXIMIZE_VERT*: xcb_atom_t
#     _NET_WM_ACTION_FULLSCREEN*: xcb_atom_t
#     _NET_WM_ACTION_CHANGE_DESKTOP*: xcb_atom_t
#     _NET_WM_ACTION_CLOSE*: xcb_atom_t
#     _NET_WM_ACTION_ABOVE*: xcb_atom_t
#     _NET_WM_ACTION_BELOW*: xcb_atom_t


# ## *
# ##  @brief Hold a GetProperty reply containing a list of Atoms
# ##

# type
#   xcb_ewmh_get_atoms_reply_t* {.bycopy.} = object
#     atoms_len*: uint32       ## * The number of Atoms
#     ## * The list of Atoms
#     atoms*: ptr xcb_atom_t      ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Hold a GetProperty reply containing a list of Windows
# ##

# type
#   xcb_ewmh_get_windows_reply_t* {.bycopy.} = object
#     windows_len*: uint32     ## * The number of Windows
#     ## * The list of Windows
#     windows*: ptr xcb_window_t  ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Hold a GetProperty reply containg a list of UTF-8 strings
# ##

# type
#   xcb_ewmh_get_utf8_strings_reply_t* {.bycopy.} = object
#     strings_len*: uint32     ## * The number of UTF-8 strings
#     ## * The list of UTF-8 strings
#     strings*: cstring          ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Coordinates Property values
# ##

# type
#   xcb_ewmh_coordinates_t* {.bycopy.} = object
#     x*: uint32               ## * The x coordinate
#     ## * The y coordinate
#     y*: uint32


# ## *
# ##  @brief Hold reply of _NET_DESKTOP_VIEWPORT GetProperty
# ##

# type
#   xcb_ewmh_get_desktop_viewport_reply_t* {.bycopy.} = object
#     desktop_viewport_len*: uint32 ## * The number of desktop viewports
#     ## * The desktop viewports
#     desktop_viewport*: ptr xcb_ewmh_coordinates_t ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Geometry Property values
# ##

# type
#   xcb_ewmh_geometry_t* {.bycopy.} = object
#     x*: uint32               ## * The x coordinate
#     ## * The y coordinate
#     y*: uint32               ## * The width
#     width*: uint32           ## * The height
#     height*: uint32


# ## *
# ##  @brief Hold reply of a _NET_WORKAREA GetProperty
# ##

# type
#   xcb_ewmh_get_workarea_reply_t* {.bycopy.} = object
#     workarea_len*: uint32    ## * The number of desktop workarea
#     ## * The list of desktop workarea
#     workarea*: ptr xcb_ewmh_geometry_t ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Source indication in requests
# ##

# type ## * No source at all (for clients supporting an older version of
#     ##       EWMH specification)
#   xcb_ewmh_client_source_type_t* = enum
#     XCB_EWMH_CLIENT_SOURCE_TYPE_NONE = 0, ## * Normal application
#     XCB_EWMH_CLIENT_SOURCE_TYPE_NORMAL = 1, ## * Pagers and other clients that represent direct user actions
#     XCB_EWMH_CLIENT_SOURCE_TYPE_OTHER = 2


# ## *
# ##  @brief _NET_DESKTOP_LAYOUT orientation
# ##

# type                          ## * Horizontal orientation (desktops laid out in rows)
#   xcb_ewmh_desktop_layout_orientation_t* = enum
#     XCB_EWMH_WM_ORIENTATION_HORZ = 0, ## * Vertical orientation (desktops laid out in columns)
#     XCB_EWMH_WM_ORIENTATION_VERT = 1


# ## *
# ##  @brief _NET_DESKTOP_LAYOUT starting corner
# ##

# type                          ## * Starting corner on the top left
#   xcb_ewmh_desktop_layout_starting_corner_t* = enum
#     XCB_EWMH_WM_TOPLEFT = 0,    ## * Starting corner on the top right
#     XCB_EWMH_WM_TOPRIGHT = 1,   ## * Starting corner on the bottom right
#     XCB_EWMH_WM_BOTTOMRIGHT = 2, ## * Starting corner on the bottom left
#     XCB_EWMH_WM_BOTTOMLEFT = 3


# ## *
# ##  @brief Hold reply of a _NET_DESKTOP_LAYOUT GetProperty
# ##  @see xcb_ewmh_desktop_layout_orientation_t
# ##  @see xcb_ewmh_desktop_layout_starting_corner_t
# ##

# type
#   xcb_ewmh_get_desktop_layout_reply_t* {.bycopy.} = object
#     orientation*: uint32     ## * The desktops orientation
#     ## * The number of columns
#     columns*: uint32         ## * The number of rows
#     rows*: uint32            ## * The desktops starting corner
#     starting_corner*: uint32


# ## *
# ##  @brief _NET_WM_MOVERESIZE value when moving via keyboard
# ##  @see xcb_ewmh_moveresize_direction_t
# ##

# type                          ## * The window x coordinate
#   xcb_ewmh_moveresize_window_opt_flags_t* = enum
#     XCB_EWMH_MOVERESIZE_WINDOW_X = (1 shl 8), ## * The window y coordinate
#     XCB_EWMH_MOVERESIZE_WINDOW_Y = (1 shl 9), ## * The window width
#     XCB_EWMH_MOVERESIZE_WINDOW_WIDTH = (1 shl 10), ## * The window height
#     XCB_EWMH_MOVERESIZE_WINDOW_HEIGHT = (1 shl 11)


# ## *
# ##  @brief _NET_WM_MOVERESIZE window movement or resizing
# ##

# type                          ## * Resizing applied on the top left edge
#   xcb_ewmh_moveresize_direction_t* = enum
#     XCB_EWMH_WM_MOVERESIZE_SIZE_TOPLEFT = 0, ## * Resizing applied on the top edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_TOP = 1, ## * Resizing applied on the top right edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_TOPRIGHT = 2, ## * Resizing applied on the right edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_RIGHT = 3, ## * Resizing applied on the bottom right edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4, ## * Resizing applied on the bottom edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOM = 5, ## * Resizing applied on the bottom left edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6, ## * Resizing applied on the left edge
#     XCB_EWMH_WM_MOVERESIZE_SIZE_LEFT = 7, ##  Movement only
#     XCB_EWMH_WM_MOVERESIZE_MOVE = 8, ##  Size via keyboard
#     XCB_EWMH_WM_MOVERESIZE_SIZE_KEYBOARD = 9, ##  Move via keyboard
#     XCB_EWMH_WM_MOVERESIZE_MOVE_KEYBOARD = 10, ##  Cancel operation
#     XCB_EWMH_WM_MOVERESIZE_CANCEL = 11


# ## *
# ##  @brief Action on the _NET_WM_STATE property
# ##

# type                          ##  Remove/unset property
#   xcb_ewmh_wm_state_action_t* = enum
#     XCB_EWMH_WM_STATE_REMOVE = 0, ##  Add/set property
#     XCB_EWMH_WM_STATE_ADD = 1,  ##  Toggle property
#     XCB_EWMH_WM_STATE_TOGGLE = 2


# ## *
# ##  @brief Hold reply of _NET_WM_STRUT_PARTIAL GetProperty
# ##

# type
#   xcb_ewmh_wm_strut_partial_t* {.bycopy.} = object
#     left*: uint32            ## * Reserved space on the left border of the screen
#     ## * Reserved space on the right border of the screen
#     right*: uint32           ## * Reserved space on the top border of the screen
#     top*: uint32             ## * Reserved space on the bottom border of the screen
#     bottom*: uint32          ## * Beginning y coordinate of the left strut
#     left_start_y*: uint32    ## * Ending y coordinate of the left strut
#     left_end_y*: uint32      ## * Beginning y coordinate of the right strut
#     right_start_y*: uint32   ## * Ending y coordinate of the right strut
#     right_end_y*: uint32     ## * Beginning x coordinate of the top strut
#     top_start_x*: uint32     ## * Ending x coordinate of the top strut
#     top_end_x*: uint32       ## * Beginning x coordinate of the bottom strut
#     bottom_start_x*: uint32  ## * Ending x coordinate of the bottom strut
#     bottom_end_x*: uint32


# ## *
# ##  @brief Hold a single icon from reply of _NET_WM_ICON GetProperty
# ##

# type
#   xcb_ewmh_wm_icon_iterator_t* {.bycopy.} = object
#     width*: uint32           ## * Icon width
#     ## * Icon height
#     height*: uint32          ## * Rows, left to right and top to bottom of the CARDINAL ARGB
#     data*: ptr uint32         ## * Number of icons remaining
#     rem*: uint8                ## * Index of the current icon in the array of icons
#     index*: uint8


# ## *
# ##  @brief Hold reply of _NET_WM_ICON GetProperty
# ##

# type
#   xcb_ewmh_get_wm_icon_reply_t* {.bycopy.} = object
#     num_icons*: uint8          ## * Number of icons
#     ## * The actual GetProperty reply
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Hold reply of _NET_REQUEST_FRAME_EXTENTS GetProperty
# ##

# type
#   xcb_ewmh_get_extents_reply_t* {.bycopy.} = object
#     left*: uint32            ## * Width of the left border
#     ## * Width of the right border
#     right*: uint32           ## * Width of the top border
#     top*: uint32             ## * Width of the bottom border
#     bottom*: uint32


# ## *
# ##  @brief Hold reply of _NET_WM_FULLSCREEN_MONITORS GetProperty
# ##

# type
#   xcb_ewmh_get_wm_fullscreen_monitors_reply_t* {.bycopy.} = object
#     top*: uint32 ## * Monitor whose top edge defines the top edge of the fullscreen
#                  ##       window
#     ## * Monitor whose bottom edge defines the bottom edge of the
#     ##       fullscreen window
#     bottom*: uint32 ## * Monitor whose left edge defines the left edge of the fullscreen
#                     ##       window
#     left*: uint32 ## * Monitor whose right edge defines the right edge of the
#                   ##       fullscreen window
#     right*: uint32


# ## *
# ##  @brief Send InternAtom requests for the EWMH atoms and its required atoms
# ##
# ##  @param c The connection to the X server
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The cookies corresponding to EWMH atoms
# ##


# proc xcb_ewmh_connection_wipe*(ewmh: ptr xcb_ewmh_connection_t) {.inline.} =
#   free(ewmh.screens)
#   free(ewmh._NET_WM_CM_Sn)

# ## *
# ##  @brief Send a SendEvent request containing a ClientMessage event
# ##
# ##  This  function is  called  by all  the xcb_ewmh_request*  functions
# ##  whose should be used instead of calling directly this function
# ##
# ##  @param c The X connection
# ##  @param window The window where the action will be applied
# ##  @param dest The destination window (usually the root window)
# ##  @param atom The type of the message
# ##  @param data_len The length of data to be sent
# ##  @param data The data to be sent
# ##  @return The cookie associated with the SendEvent request
# ##

# proc xcb_ewmh_send_client_message*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                   dest: xcb_window_t; atom: xcb_atom_t;
#                                   data_len: uint32; data: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_window_from_reply*(window: ptr xcb_window_t;
#                                     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                cookie: xcb_get_property_cookie_t;
#                                window: ptr xcb_window_t;
#                                e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_get_cardinal_from_reply*(cardinal: ptr uint32;
#                                       r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_cardinal_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                  cookie: xcb_get_property_cookie_t;
#                                  cardinal: ptr uint32;
#                                  e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Get  a list  of atoms from  a given GetProperty  reply whose
# ##  type is ATOM
# ##
# ##  This  function  is  called  by  all  the  xcb_ewmh_get_*_from_reply
# ##  functions  whose should  be used  instead of  calling  it directly.
# ##  Indeed,  The GetProperty request  has been  previously sent  by the
# ##  corresponding xcb_ewmh_get_*.
# ##
# ##  @param atoms The atoms list
# ##  @param r The reply to get the atoms list from
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_atoms_from_reply*(atoms: ptr xcb_ewmh_get_atoms_reply_t;
#                                    r: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Get a list of atoms  from the reply of a GetProperty request
# ##  whose type is ATOM
# ##
# ##  This function  is called by all  the xcb_ewmh_get_*_reply functions
# ##  whose  should   be  used  instead  of  calling   it  directly.  The
# ##  GetProperty request  has been previously sent  by the corresponding
# ##  xcb_ewmh_get_*.
# ##
# ##  @param ewmh The per-screen EWMH specific information
# ##  @param cookie The GetProperty cookie
# ##  @param atoms The atoms list
# ##  @param e The error if any
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_atoms_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                               cookie: xcb_get_property_cookie_t;
#                               atoms: ptr xcb_ewmh_get_atoms_reply_t;
#                               e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe the Atoms list reply
# ##
# ##  This function must be called to free the memory allocated for atoms
# ##  when the reply is requested in *_reply functions.
# ##
# ##  @param data The X reply to be freed
# ##

# proc xcb_ewmh_get_atoms_reply_wipe*(data: ptr xcb_ewmh_get_atoms_reply_t)
# ## *
# ##  @brief Get  a list  of atoms from  a given GetProperty  reply whose
# ##  type is WINDOW
# ##
# ##  This  function  is  called  by  all  the  xcb_ewmh_get_*_from_reply
# ##  functions  whose should  be used  instead of  calling  it directly.
# ##  Indeed,  The GetProperty request  has been  previously sent  by the
# ##  corresponding xcb_ewmh_get_*.
# ##
# ##  @param atoms The atoms list
# ##  @param r The reply to get the atoms list from
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_windows_from_reply*(atoms: ptr xcb_ewmh_get_windows_reply_t;
#                                      r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_utf8_strings_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_utf8_strings_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                      cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                      e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Get a list of atoms  from the reply of a GetProperty request
# ##  whose type is WINDOW
# ##
# ##  This function  is called by all  the xcb_ewmh_get_*_reply functions
# ##  whose  should   be  used  instead  of  calling   it  directly.  The
# ##  GetProperty request  has been previously sent  by the corresponding
# ##  xcb_ewmh_get_*.
# ##
# ##  @param ewmh The per-screen EWMH specific information
# ##  @param cookie The GetProperty cookie
# ##  @param atoms The atoms list
# ##  @param e The error if any
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_windows_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                 cookie: xcb_get_property_cookie_t;
#                                 atoms: ptr xcb_ewmh_get_windows_reply_t;
#                                 e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe the windows list reply
# ##
# ##  This function must  be called to the free  the memory allocated for
# ##  windows when the reply is requested in '_reply' functions.
# ##
# ##  @param data The X reply to be freed
# ##

# proc xcb_ewmh_get_windows_reply_wipe*(data: ptr xcb_ewmh_get_windows_reply_t)
# ## *
# ##  @brief Wipe the UTF-8 strings list reply
# ##
# ##  This function must  be called to the free  the memory allocated for
# ##  UTF-8 strings when the reply is requested in '_reply' functions.
# ##
# ##  @param data The X reply to be freed
# ##

# proc xcb_ewmh_get_utf8_strings_reply_wipe*(
#     data: ptr xcb_ewmh_get_utf8_strings_reply_t)
# ## *
# ##  @brief Send a ChangeProperty request for _NET_SUPPORTED
# ##
# ##  _NET_SUPPORTED, ATOM[]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of Atoms supported by the WM
# ##  @param list The Atoms supported by the WM
# ##  @return Cookie associated with the ChangeProperty _NET_SUPPORTED request
# ##

# proc xcb_ewmh_set_supported*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                             list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_supported
# ##

# proc xcb_ewmh_set_supported_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                     screen_nbr: cint; list_len: uint32;
#                                     list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##  @brief Send  GetProperty request to get  _NET_SUPPORTED root window
# ##         property
# ##
# ##  _NET_SUPPORTED, ATOM[]/32
# ##
# ##  This property MUST  be set by the Window  Manager to indicate which
# ##  hints it supports. For example: considering _NET_WM_STATE both this
# ##  atom   and   all   supported  states   e.g.    _NET_WM_STATE_MODAL,
# ##  _NET_WM_STATE_STICKY, would be  listed. This assumes that backwards
# ##  incompatible changes will  not be made to the  hints (without being
# ##  renamed).
# ##
# ##  This form can be used only if  the request will cause a reply to be
# ##  generated. Any returned error will be placed in the event queue.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_SUPPORTED cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_supported_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                       screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_supported_unchecked
# ##

# proc xcb_ewmh_get_supported*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Get the list of supported atoms
# ##
# ##  @param supported The list of atoms contained in the reply
# ##  @param r GetProperty _NET_SUPPORTED reply
# ##

# proc xcb_ewmh_get_supported_from_reply*(supported: ptr xcb_ewmh_get_atoms_reply_t;
#                                        r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_atoms_from_reply(supported, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_SUPPORTED cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_window_supported_unchecked() is used.  Otherwise, it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_SUPPORTED GetProperty request cookie
# ##  @param supported The reply to be filled
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_supported_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                   cookie: xcb_get_property_cookie_t;
#                                   supported: ptr xcb_ewmh_get_atoms_reply_t;
#                                   e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_atoms_reply(ewmh, cookie, supported, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_CLIENT_LIST
# ##
# ##  _NET_CLIENT_LIST, WINDOW[]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of Atoms supported by the WM
# ##  @param list The Atoms supported by the WM
# ##  @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST request
# ##

# proc xcb_ewmh_set_client_list*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                               list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_client_list
# ##

# proc xcb_ewmh_set_client_list_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                       screen_nbr: cint; list_len: uint32;
#                                       list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Send GetProperty request to get _NET_CLIENT_LIST root window
# ##         property
# ##
# ##  This  array   contains  all  X   Windows  managed  by   the  Window
# ##  Manager. _NET_CLIENT_LIST has  initial mapping order, starting with
# ##  the oldest window.  This property SHOULD be set  and updated by the
# ##  Window Manager.
# ##
# ##  @param ewmh The information relative to EWMH.
# ##  @return The _NET_CLIENT_LIST cookie of the GetProperty request.
# ##

# proc xcb_ewmh_get_client_list_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Send GetProperty request to get _NET_CLIENT_LIST root window
# ##         property
# ##
# ##  @see xcb_ewmh_get_client_list_unchecked
# ##  @param ewmh The information relative to EWMH.
# ##  @return The _NET_CLIENT_LIST cookie of the GetProperty request.
# ##

# proc xcb_ewmh_get_client_list*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief  Get   the  list  of  client  windows   from  a  GetProperty
# ##  _NET_CLIENT_LIST reply
# ##
# ##  @param clients The list of clients contained in the reply
# ##  @param r GetProperty _NET_CLIENT_LIST reply
# ##

# proc xcb_ewmh_get_client_list_from_reply*(
#     clients: ptr xcb_ewmh_get_windows_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_windows_from_reply(clients, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_window_client_list_unchecked()  is   used.   Otherwise,  it
# ##  stores the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_CLIENT_LIST GetProperty request cookie
# ##  @param clients The list of clients to be filled
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_client_list_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                     cookie: xcb_get_property_cookie_t;
#                                     clients: ptr xcb_ewmh_get_windows_reply_t;
#                                     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_CLIENT_LIST_STACKING
# ##
# ##  _NET_CLIENT_LIST_STACKING, WINDOW[]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of Atoms supported by the WM
# ##  @param list The Atoms supported by the WM
# ##  @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST_STACKING request
# ##

# proc xcb_ewmh_set_client_list_stacking*(ewmh: ptr xcb_ewmh_connection_t;
#                                        screen_nbr: cint; list_len: uint32;
#                                        list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_client_list_stacking
# ##

# proc xcb_ewmh_set_client_list_stacking_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send GetProperty  request to  get _NET_CLIENT_LIST_STACKING
# ##         root window property
# ##
# ##  This  array   contains  all  X   Windows  managed  by   the  Window
# ##  Manager.  _NET_CLIENT_LIST_STACKING   has  initial  mapping  order,
# ##  starting with the  oldest window.  This property SHOULD  be set and
# ##  updated by the Window Manager.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @return The _NET_CLIENT_LIST_STACKING cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_client_list_stacking_unchecked*(
#     ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_client_list_unchecked
# ##

# proc xcb_ewmh_get_client_list_stacking*(ewmh: ptr xcb_ewmh_connection_t;
#                                        screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief  Get   the  list  of  client  windows   from  a  GetProperty
# ##  _NET_CLIENT_LIST_STACKING reply
# ##
# ##  @param clients The list of clients contained in the reply
# ##  @param r GetProperty _NET_CLIENT_LIST_STACKING reply
# ##

# proc xcb_ewmh_get_client_list_stacking_from_reply*(
#     clients: ptr xcb_ewmh_get_windows_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_windows_from_reply(clients, r)

# ## *
# ##  @brief  Get reply  from  the GetProperty  _NET_CLIENT_LIST_STACKING
# ##  cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_window_client_list_stacking_unchecked()       is      used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_CLIENT_LIST_STACKING GetProperty request cookie
# ##  @param clients The list of clients to be filled
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_client_list_stacking_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; clients: ptr xcb_ewmh_get_windows_reply_t;
#     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_NUMBER_OF_DESKTOPS
# ##
# ##  _NET_NUMBER_OF_DESKTOPS? CARDINAL/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param number_of_desktops The number of desktops
# ##  @return Cookie associated with the ChangeProperty _NET_NUMBER_OF_DESKTOPS request
# ##

# proc xcb_ewmh_set_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
#                                      screen_nbr: cint;
#                                      number_of_desktops: uint32): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_number_of_desktops
# ##

# proc xcb_ewmh_set_number_of_desktops_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; number_of_desktops: uint32): xcb_void_cookie_t
# ## *
# ##  @brief Send GetProperty request to get _NET_NUMBER_OF_DESKTOPS root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_NUMBER_OF_DESKTOPS cookie of the GetProperty request.
# ##

# proc xcb_ewmh_get_number_of_desktops_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_number_of_desktops_unchecked
# ##

# proc xcb_ewmh_get_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
#                                      screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief  Get   the  list  of  client  windows   from  a  GetProperty
# ##  _NET_NUMBER_OF_DESKTOPS reply
# ##
# ##  @param clients The list of clients contained in the reply
# ##  @param r GetProperty _NET_NUMBER_OF_DESKTOPS reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_number_of_desktops_from_reply*(
#     number_of_desktops: ptr uint32; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(number_of_desktops, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_NUMBER_OF_DESKTOPS cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_window_number_of_desktops_unchecked()  is used.  Otherwise,
# ##  it stores the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_NUMBER_OF_DESKTOPS GetProperty request cookie
# ##  @param supported The reply to be filled
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_number_of_desktops_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; number_of_desktops: ptr uint32;
#     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, number_of_desktops, e)

# proc xcb_ewmh_request_change_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; new_number_of_desktops: uint32): xcb_void_cookie_t {.inline.} =
#   return xcb_ewmh_send_client_message(ewmh.connection, XCB_NONE,
#                                      ewmh.screens[screen_nbr].root,
#                                      ewmh._NET_NUMBER_OF_DESKTOPS,
#                                      sizeof((new_number_of_desktops)),
#                                      addr(new_number_of_desktops))

# ## *
# ##  @brief Send a ChangeProperty request for _NET_DESKTOP_GEOMETRY
# ##
# ##  _NET_DESKTOP_GEOMETRY width, height, CARDINAL[2]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_width The new desktop width
# ##  @param new_height The new desktop height
# ##  @return Cookie associated with the ChangeProperty _NET_DESKTOP_GEOMETRY request
# ##

# proc xcb_ewmh_set_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint; new_width: uint32;
#                                    new_height: uint32): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_desktop_geometry
# ##

# proc xcb_ewmh_set_desktop_geometry_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; new_width: uint32; new_height: uint32): xcb_void_cookie_t
# ## *
# ##  @brief Send  GetProperty request to  get _NET_DESKTOP_GEOMETRY root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_DESKTOP_GEOMETRY cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_desktop_geometry_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_desktop_geometry_unchecked
# ##

# proc xcb_ewmh_get_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Send ClientMessage requesting to change the _NET_DESKTOP_GEOMETRY
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_width The new desktop width
# ##  @param new_height The new desktop height
# ##  @return The SendEvent cookie
# ##

# proc xcb_ewmh_request_change_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; new_width: uint32; new_height: uint32): xcb_void_cookie_t
# ## *
# ##  @brief    Get   the   desktop    geometry   from    a   GetProperty
# ##  _NET_DESKTOP_GEOMETRY reply
# ##
# ##  @param width The current desktop width
# ##  @param height The current desktop height
# ##  @param r GetProperty _NET_DESKTOP_GEOMETRY reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_geometry_from_reply*(width: ptr uint32;
#     height: ptr uint32; r: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Get reply from the GetProperty _NET_DESKTOP_GEOMETRY cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_desktop_geometry_unchecked() is used.  Otherwise, it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_DESKTOP_GEOMETRY GetProperty request cookie
# ##  @param width The current desktop width
# ##  @param width The current desktop height
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_geometry_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; width: ptr uint32; height: ptr uint32;
#     e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Send a ChangeProperty request for _NET_DESKTOP_VIEWPORT
# ##
# ##  _NET_DESKTOP_VIEWPORT x, y, CARDINAL[][2]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of desktop viewports
# ##  @param list The desktop viewports
# ##  @return Cookie associated with the ChangeProperty _NET_DESKTOP_VIEWPORT request
# ##

# proc xcb_ewmh_set_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint; list_len: uint32;
#                                    list: ptr xcb_ewmh_coordinates_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_desktop_viewport
# ##

# proc xcb_ewmh_set_desktop_viewport_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; list_len: uint32; list: ptr xcb_ewmh_coordinates_t): xcb_void_cookie_t
# ## *
# ##  @brief Send  GetProperty request to  get _NET_DESKTOP_VIEWPORT root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_DESKTOP_VIEWPORT cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_desktop_viewport_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_desktop_viewport_unchecked
# ##

# proc xcb_ewmh_get_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Send ClientMessage requesting to change the _NET_DESKTOP_VIEWPORT
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_x The new x coordinate
# ##  @param new_y The new y coordinate
# ##  @return The SendEvent cookie
# ##

# proc xcb_ewmh_request_change_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; x: uint32; y: uint32): xcb_void_cookie_t
# ## *
# ##  @brief    Get   the   desktop    geometry   from    a   GetProperty
# ##  _NET_DESKTOP_VIEWPORT reply
# ##
# ##  @param vp The  current desktop viewports
# ##  @param r GetProperty _NET_DESKTOP_VIEWPORT reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_viewport_from_reply*(
#     vp: ptr xcb_ewmh_get_desktop_viewport_reply_t; r: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Get reply from the GetProperty _NET_DESKTOP_VIEWPORT cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_desktop_viewport_unchecked() is used.  Otherwise, it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_DESKTOP_VIEWPORT GetProperty request cookie
# ##  @param vp The current desktop viewports
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_viewport_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t;
#     vp: ptr xcb_ewmh_get_desktop_viewport_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe the desktop viewports list reply
# ##
# ##  This function must be called to free the memory allocated for atoms
# ##  when the reply  is requested in xcb_ewmh_get_desktop_viewport_reply
# ##  function.
# ##
# ##  @param r The X reply to be freed
# ##

# proc xcb_ewmh_get_desktop_viewport_reply_wipe*(
#     r: ptr xcb_ewmh_get_desktop_viewport_reply_t)
# ## *
# ##  @brief Send a ChangeProperty request for _NET_CURRENT_DESKTOP
# ##
# ##  _NET_CURRENT_DESKTOP desktop, CARDINAL/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_current_desktop The new current desktop
# ##  @return Cookie associated with the ChangeProperty _NET_CURRENT_DESKTOP request
# ##

# proc xcb_ewmh_set_current_desktop*(ewmh: ptr xcb_ewmh_connection_t;
#                                   screen_nbr: cint; new_current_desktop: uint32): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_current_desktop
# ##

# proc xcb_ewmh_set_current_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; new_current_desktop: uint32): xcb_void_cookie_t
# ## *
# ##  @brief  Send GetProperty request  to get  _NET_CURRENT_DESKTOP root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_CURRENT_DESKTOP cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_current_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_current_desktop_unchecked
# ##

# proc xcb_ewmh_get_current_desktop*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Send ClientMessage requesting to change the _NET_CURRENT_DESKTOP
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_desktop The new current desktop
# ##  @param timestamp The request timestamp
# ##  @return The SendEvent cookie
# ##

# proc xcb_ewmh_request_change_current_desktop*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; new_desktop: uint32; timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief    Get   the   desktop    geometry   from    a   GetProperty
# ##  _NET_CURRENT_DESKTOP reply
# ##
# ##  @param current_desktop The  current desktop
# ##  @param r GetProperty _NET_CURRENT_DESKTOP reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_current_desktop_from_reply*(current_desktop: ptr uint32;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(current_desktop, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_CURRENT_DESKTOP cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_current_desktop_unchecked() is  used.  Otherwise, it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_CURRENT_DESKTOP GetProperty request cookie
# ##  @param vp The current desktop
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_current_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                         cookie: xcb_get_property_cookie_t;
#                                         current_desktop: ptr uint32;
#                                         e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, current_desktop, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_DESKTOP_NAMES
# ##
# ##  _NET_DESKTOP_NAMES, UTF8_STRING[]
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param strings_len The number of desktop names
# ##  @param strings The desktop names
# ##  @return Cookie associated with the ChangeProperty _NET_DESKTOP_NAMES request
# ##

# proc xcb_ewmh_set_desktop_names*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                                 strings_len: uint32; strings: cstring): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_desktop_names
# ##

# proc xcb_ewmh_set_desktop_names_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint; strings_len: uint32;
#                                         strings: cstring): xcb_void_cookie_t
# ## *
# ##  @brief  Send  GetProperty request  to  get _NET_DESKTOP_NAMES  root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @return The _NET_DESKTOP_NAMES cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_desktop_names_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_desktop_names_unchecked
# ##

# proc xcb_ewmh_get_desktop_names*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief    Get   the   desktop    geometry   from    a   GetProperty
# ##  _NET_DESKTOP_NAMES reply
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param names The desktop names
# ##  @param r GetProperty _NET_DESKTOP_NAMES reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_names_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     names: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_from_reply(ewmh, names, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_DESKTOP_NAMES cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_desktop_names_unchecked()  is used.   Otherwise,  it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_DESKTOP_NAMES GetProperty request cookie
# ##  @param names The desktop names
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_desktop_names_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                       cookie: xcb_get_property_cookie_t; names: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                       e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, names, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_ACTIVE_WINDOW
# ##
# ##  _NET_ACTIVE_WINDOW, WINDOW/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param new_active_window The window to make active
# ##  @return Cookie associated with the ChangeProperty _NET_ACTIVE_WINDOW request
# ##

# proc xcb_ewmh_set_active_window*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                                 new_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_active_window
# ##

# proc xcb_ewmh_set_active_window_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint;
#                                         new_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Send ClientMessage requesting to change the _NET_ACTIVE_WINDOW
# ##
# ##  The window ID  of the currently active window or  None if no window
# ##  has  the focus.  This  is a  read-only property  set by  the Window
# ##  Manager. If a Client wants to activate another window, it MUST send
# ##  a  _NET_ACTIVE_WINDOW  client  message  to  the  root  window.  The
# ##  timestamp is Client's  last user activity timestamp at  the time of
# ##  the request, and the currently active window is the Client's active
# ##  toplevel window, if any (the Window Manager may be e.g. more likely
# ##  to obey  the request  if it will  mean transferring focus  from one
# ##  active window to another).
# ##
# ##  @see xcb_ewmh_client_source_type_t
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @param window_to_active The window ID to activate
# ##  @param source_indication The source indication
# ##  @param timestamp The client's last user activity timestamp
# ##  @param current_active_window The currently active window or None
# ##

# proc xcb_ewmh_request_change_active_window*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; window_to_activate: xcb_window_t;
#     source_indication: xcb_ewmh_client_source_type_t; timestamp: xcb_timestamp_t;
#     current_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send  GetProperty request  to  get _NET_ACTIVE_WINDOW  root
# ##         window property
# ##
# ##  The window ID  of the currently active window or  None if no window
# ##  has  the focus.  This is  a read-only  property set  by  the Window
# ##  Manager.  This property  SHOULD be  set and  updated by  the Window
# ##  Manager.
# ##
# ##  This form can be used only if  the request will cause a reply to be
# ##  generated. Any returned error will be placed in the event queue.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_active_window_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief  Send  GetProperty request  to  get _NET_ACTIVE_WINDOW  root
# ##         window property
# ##
# ##  @see xcb_ewmh_get_active_window_unchecked
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_active_window*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief  Get   the  list  of  client  windows   from  a  GetProperty
# ##  _NET_ACTIVE_WINDOW reply
# ##
# ##  @param active_window The current active window
# ##  @param r GetProperty _NET_ACTIVE_WINDOW_OF_DESKTOPS reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_active_window_from_reply*(active_window: ptr xcb_window_t;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_window_from_reply(active_window, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_ACTIVE_WINDOW cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_active_window_unchecked()  is used.   Otherwise,  it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH.
# ##  @param cookie The _NET_ACTIVE_WINDOW GetProperty request cookie.
# ##  @param active_window The reply to be filled.
# ##  @param The xcb_generic_error_t supplied.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_ewmh_get_active_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                       cookie: xcb_get_property_cookie_t;
#                                       active_window: ptr xcb_window_t;
#                                       e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_window_reply(ewmh, cookie, active_window, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_WORKAREA
# ##
# ##  _NET_WORKAREA, x, y, width, height CARDINAL[][4]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of desktops workareas
# ##  @param list The desktops workareas
# ##  @return Cookie associated with the ChangeProperty _NET_WORKAREA request
# ##

# proc xcb_ewmh_set_workarea*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                            list_len: uint32; list: ptr xcb_ewmh_geometry_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_workarea
# ##

# proc xcb_ewmh_set_workarea_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint; list_len: uint32;
#                                    list: ptr xcb_ewmh_geometry_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send  GetProperty request  to  get _NET_WORKAREA  root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_WORKAREA cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_workarea_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                      screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_virtual_roots_unchecked
# ##


# ## *
# ##  @brief Wipe the workarea list reply
# ##
# ##  This function must be called to free the memory allocated for atoms
# ##  when   the  reply   is  requested   in  xcb_ewmh_get_workarea_reply
# ##  function.
# ##
# ##  @param r The X reply to be freed
# ##

# proc xcb_ewmh_get_workarea_reply_wipe*(r: ptr xcb_ewmh_get_workarea_reply_t)
# ## *
# ##  @brief Send a ChangeProperty request for _NET_SUPPORTING_WM_CHECK
# ##
# ##  _NET_SUPPORTING_WM_CHECK, WINDOW/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param parent_window The root window or child window created by the WM
# ##  @param child_window The child window created by the WM
# ##  @return Cookie associated with the ChangeProperty _NET_SUPPORTING_WM_CHECK request
# ##

# proc xcb_ewmh_set_supporting_wm_check*(ewmh: ptr xcb_ewmh_connection_t;
#                                       parent_window: xcb_window_t;
#                                       child_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_supporting_wm_check
# ##

# proc xcb_ewmh_set_supporting_wm_check_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     parent_window: xcb_window_t; child_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send GetProperty  request  to get  _NET_SUPPORTING_WM_CHECK
# ##         root window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_SUPPORTING_WM_CHECK cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_supporting_wm_check_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_supporting_wm_check_unchecked
# ##

# proc xcb_ewmh_get_supporting_wm_check*(ewmh: ptr xcb_ewmh_connection_t;
#                                       window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief  Get   the  list  of  client  windows   from  a  GetProperty
# ##  _NET_SUPPORTING_WM_CHECK reply
# ##
# ##  @param window The child window created by the WM
# ##  @param r GetProperty _NET_SUPPORTING_WM_CHECK reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_supporting_wm_check_from_reply*(window: ptr xcb_window_t;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_window_from_reply(window, r)

# ## *
# ##  @brief  Get  reply  from the  GetProperty  _NET_SUPPORTING_WM_CHECK
# ##  cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_supporting_wm_check_unchecked()  is  used.   Otherwise,  it
# ##  stores the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_SUPPORTING_WM_CHECK GetProperty request cookie
# ##  @param window The reply to be filled
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_supporting_wm_check_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; window: ptr xcb_window_t;
#     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_window_reply(ewmh, cookie, window, e)

# ## *
# ##  @brief Send a ChangeProperty request for _NET_VIRTUAL_ROOTS
# ##
# ##  _NET_VIRTUAL_ROOTS, WINDOW[]/32
# ##
# ##  @param ewmh The per-screen EWMH information
# ##  @param screen_nbr The screen number
# ##  @param list_len The number of virtual root windows
# ##  @param list The virtual root windows
# ##  @return Cookie associated with the ChangeProperty _NET_VIRTUAL_ROOTS request
# ##

# proc xcb_ewmh_set_virtual_roots*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                                 list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_virtual_roots
# ##

# proc xcb_ewmh_set_virtual_roots_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint; list_len: uint32;
#                                         list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send  GetProperty request  to  get _NET_VIRTUAL_ROOTS  root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_VIRTUAL_ROOTS cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_virtual_roots_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_virtual_roots_unchecked
# ##

# proc xcb_ewmh_get_virtual_roots*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @brief Get  the desktop  geometry from a  GetProperty _NET_WORKAREA
# ##  reply
# ##
# ##  @param virtual_roots The current virtual root windows
# ##  @param r GetProperty _NET_VIRTUAL_ROOTS reply
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_virtual_roots_from_reply*(
#     virtual_roots: ptr xcb_ewmh_get_windows_reply_t;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_windows_from_reply(virtual_roots, r)

# ## *
# ##  @brief Get reply from the GetProperty _NET_VIRTUAL_ROOTS cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_virtual_roots_unchecked()  is used.   Otherwise,  it stores
# ##  the error if any.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param cookie The _NET_VIRTUAL_ROOTS GetProperty request cookie
# ##  @param virtual_roots The current virtual root windows
# ##  @param The xcb_generic_error_t supplied
# ##  @return Return 1 on success, 0 otherwise
# ##

# proc xcb_ewmh_get_virtual_roots_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                       cookie: xcb_get_property_cookie_t;
#     virtual_roots: ptr xcb_ewmh_get_windows_reply_t; e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_windows_reply(ewmh, cookie, virtual_roots, e)

# proc xcb_ewmh_set_desktop_layout*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#     orientation: xcb_ewmh_desktop_layout_orientation_t; columns: uint32;
#                                  rows: uint32; starting_corner: xcb_ewmh_desktop_layout_starting_corner_t): xcb_void_cookie_t
# proc xcb_ewmh_set_desktop_layout_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; orientation: xcb_ewmh_desktop_layout_orientation_t;
#     columns: uint32; rows: uint32;
#     starting_corner: xcb_ewmh_desktop_layout_starting_corner_t): xcb_void_cookie_t
# ## *
# ##  @brief  Send GetProperty  request to  get  _NET_DESKTOP_LAYOUT root
# ##         window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_DESKTOP_LAYOUT cookie of the GetProperty request
# ##

# proc xcb_ewmh_get_desktop_layout_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_ewmh_get_desktop_layout_unchecked
# ##

# proc xcb_ewmh_get_desktop_layout*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_desktop_layout_from_reply*(
#     desktop_layouts: ptr xcb_ewmh_get_desktop_layout_reply_t;
#     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_desktop_layout_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                        cookie: xcb_get_property_cookie_t;
#     desktop_layouts: ptr xcb_ewmh_get_desktop_layout_reply_t;
#                                        e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t;
#                                   screen_nbr: cint; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_showing_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_showing_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_showing_desktop_from_reply*(desktop: ptr uint32;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(desktop, r)

# proc xcb_ewmh_get_showing_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                         cookie: xcb_get_property_cookie_t;
#                                         desktop: ptr uint32;
#                                         e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e)

# proc xcb_ewmh_request_change_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t;
#     screen_nbr: cint; enter: uint32): xcb_void_cookie_t {.inline.} =
#   return xcb_ewmh_send_client_message(ewmh.connection, XCB_NONE,
#                                      ewmh.screens[screen_nbr].root,
#                                      ewmh._NET_SHOWING_DESKTOP, sizeof((enter)),
#                                      addr(enter))

# proc xcb_ewmh_request_close_window*(ewmh: ptr xcb_ewmh_connection_t;
#                                    screen_nbr: cint;
#                                    window_to_close: xcb_window_t;
#                                    timestamp: xcb_timestamp_t; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_request_moveresize_window*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint;
#                                         moveresize_window: xcb_window_t;
#                                         gravity: xcb_gravity_t; source_indication: xcb_ewmh_client_source_type_t;
#     flags: xcb_ewmh_moveresize_window_opt_flags_t; x: uint32; y: uint32;
#                                         width: uint32; height: uint32): xcb_void_cookie_t
# proc xcb_ewmh_request_wm_moveresize*(ewmh: ptr xcb_ewmh_connection_t;
#                                     screen_nbr: cint;
#                                     moveresize_window: xcb_window_t;
#                                     x_root: uint32; y_root: uint32;
#                                     direction: xcb_ewmh_moveresize_direction_t;
#                                     button: xcb_button_index_t; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_request_restack_window*(ewmh: ptr xcb_ewmh_connection_t;
#                                      screen_nbr: cint;
#                                      window_to_restack: xcb_window_t;
#                                      sibling_window: xcb_window_t;
#                                      detail: xcb_stack_mode_t): xcb_void_cookie_t
# proc xcb_ewmh_request_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
#                                     screen_nbr: cint; client_window: xcb_window_t): xcb_void_cookie_t {.
#     inline.} =
#   return xcb_ewmh_send_client_message(ewmh.connection, client_window,
#                                      ewmh.screens[screen_nbr].root,
#                                      ewmh._NET_REQUEST_FRAME_EXTENTS, 0, nil)

# proc xcb_ewmh_set_wm_name*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                           strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                   window: xcb_window_t; strings_len: uint32;
#                                   strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_name*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                      r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)

# proc xcb_ewmh_get_wm_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                 cookie: xcb_get_property_cookie_t;
#                                 data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                 e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)

# proc xcb_ewmh_set_wm_visible_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                   window: xcb_window_t; strings_len: uint32;
#                                   strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_visible_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_visible_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                   window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)

# proc xcb_ewmh_get_wm_visible_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                         cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                         e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)

# proc xcb_ewmh_set_wm_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                window: xcb_window_t; strings_len: uint32;
#                                strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_icon_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                        window: xcb_window_t;
#                                        strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)

# proc xcb_ewmh_get_wm_icon_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                      cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#                                      e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)

# proc xcb_ewmh_set_wm_visible_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                        window: xcb_window_t;
#                                        strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_visible_icon_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name_unchecked*(
#     ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
#                                        window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name_from_reply*(
#     ewmh: ptr xcb_ewmh_connection_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)

# proc xcb_ewmh_get_wm_visible_icon_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t;
#     data: ptr xcb_ewmh_get_utf8_strings_reply_t; e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)

# proc xcb_ewmh_set_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                              desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                        window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_desktop_from_reply*(desktop: ptr uint32;
#                                         r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(desktop, r)

# proc xcb_ewmh_get_wm_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                    cookie: xcb_get_property_cookie_t;
#                                    desktop: ptr uint32;
#                                    e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e)

# proc xcb_ewmh_request_change_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint;
#                                         client_window: xcb_window_t;
#                                         new_desktop: uint32; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_window_type*(ewmh: ptr xcb_ewmh_connection_t;
#                                  window: xcb_window_t; list_len: uint32;
#                                  list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_window_type_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_window_type_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_window_type*(ewmh: ptr xcb_ewmh_connection_t;
#                                  window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_window_type_from_reply*(
#     wtypes: ptr xcb_ewmh_get_atoms_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_window_type_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                        cookie: xcb_get_property_cookie_t;
#                                        name: ptr xcb_ewmh_get_atoms_reply_t;
#                                        e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_state*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                            list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_state_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t; list_len: uint32;
#                                    list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_state_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_state*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_state_from_reply*(wtypes: ptr xcb_ewmh_get_atoms_reply_t;
#                                       r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_state_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                  cookie: xcb_get_property_cookie_t;
#                                  name: ptr xcb_ewmh_get_atoms_reply_t;
#                                  e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_request_change_wm_state*(ewmh: ptr xcb_ewmh_connection_t;
#                                       screen_nbr: cint;
#                                       client_window: xcb_window_t;
#                                       action: xcb_ewmh_wm_state_action_t;
#                                       first_property: xcb_atom_t;
#                                       second_property: xcb_atom_t;
#     source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_allowed_actions*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t; list_len: uint32;
#                                      list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_allowed_actions_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions_from_reply*(
#     wtypes: ptr xcb_ewmh_get_atoms_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_allowed_actions_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; name: ptr xcb_ewmh_get_atoms_reply_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_strut*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                            left: uint32; right: uint32; top: uint32;
#                            bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_strut_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t; left: uint32;
#                                    right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_strut_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_from_reply*(struts: ptr xcb_ewmh_get_extents_reply_t;
#                                       r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_strut_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                  cookie: xcb_get_property_cookie_t;
#                                  struts: ptr xcb_ewmh_get_extents_reply_t;
#                                  e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_strut_partial*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t;
#                                    wm_strut: xcb_ewmh_wm_strut_partial_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_strut_partial_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; wm_strut: xcb_ewmh_wm_strut_partial_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_strut_partial_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_partial*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_partial_from_reply*(
#     struts: ptr xcb_ewmh_wm_strut_partial_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_strut_partial_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; struts: ptr xcb_ewmh_wm_strut_partial_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_icon_geometry*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t; left: uint32;
#                                    right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_icon_geometry_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; left: uint32; right: uint32; top: uint32;
#     bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry_from_reply*(icons: ptr xcb_ewmh_geometry_t;
#     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_geometry_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; icons: ptr xcb_ewmh_geometry_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Send ChangeProperty request to set _NET_WM_ICON window
# ##         property. The given data is considered to be already
# ##         prepared, namely that it is an array such as: WIDTH1,
# ##         HEIGHT1, IMG1, WIDTH2, HEIGHT2, IMG2.
# ##
# ##         If you only want to add or append a single icon, you may
# ##         consider using xcb_ewmh_append_wm_icon_checked which is far
# ##         easier to use.
# ##
# ##  _NET_WM_ICON CARDINAL[][2+n]/32
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param mode ChangeProperty mode (xcb_prop_mode_t)
# ##  @param window The window to set the property on
# ##  @param data_len Length of the data
# ##  @param data The data
# ##

# proc xcb_ewmh_set_wm_icon_checked*(ewmh: ptr xcb_ewmh_connection_t; mode: uint8;
#                                   window: xcb_window_t; data_len: uint32;
#                                   data: ptr uint32): xcb_void_cookie_t {.inline.} =
#   return xcb_change_property_checked(ewmh.connection, mode, window,
#                                     ewmh._NET_WM_ICON, XCB_ATOM_CARDINAL, 32,
#                                     data_len, data)

# ## *
# ##  @see xcb_ewmh_set_wm_icon_checked
# ##

# proc xcb_ewmh_set_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; mode: uint8;
#                           window: xcb_window_t; data_len: uint32;
#                           data: ptr uint32): xcb_void_cookie_t {.inline.} =
#   return xcb_change_property(ewmh.connection, mode, window, ewmh._NET_WM_ICON,
#                             XCB_ATOM_CARDINAL, 32, data_len, data)

# proc xcb_ewmh_append_wm_icon_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                      window: xcb_window_t; width: uint32;
#                                      height: uint32; img_len: uint32;
#                                      img: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_append_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                              width: uint32; height: uint32; img_len: uint32;
#                              img: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_from_reply*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t;
#                                      r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                 cookie: xcb_get_property_cookie_t;
#                                 wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t;
#                                 e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_get_wm_icon_iterator*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t): xcb_ewmh_wm_icon_iterator_t
# proc xcb_ewmh_get_wm_icon_length*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_next*(`iterator`: ptr xcb_ewmh_wm_icon_iterator_t)
# proc xcb_ewmh_get_wm_icon_reply_wipe*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t)
# proc xcb_ewmh_set_wm_pid*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                          pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_pid_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                  window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_pid_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_pid*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_pid_from_reply*(pid: ptr uint32;
#                                     r: ptr xcb_get_property_reply_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(pid, r)

# proc xcb_ewmh_get_wm_pid_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                cookie: xcb_get_property_cookie_t;
#                                pid: ptr uint32; e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, pid, e)

# proc xcb_ewmh_set_wm_handled_icons*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t; handled_icons: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_handled_icons_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; handled_icons: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_handled_icons_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_handled_icons*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_handled_icons_from_reply*(handled_icons: ptr uint32;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(handled_icons, r)

# proc xcb_ewmh_get_wm_handled_icons_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; handled_icons: ptr uint32;
#     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, handled_icons, e)

# proc xcb_ewmh_set_wm_user_time*(ewmh: ptr xcb_ewmh_connection_t;
#                                window: xcb_window_t; xtime: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_user_time_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                        window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_user_time_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time*(ewmh: ptr xcb_ewmh_connection_t;
#                                window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_from_reply*(xtime: ptr uint32;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(xtime, r)

# proc xcb_ewmh_get_wm_user_time_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                      cookie: xcb_get_property_cookie_t;
#                                      xtime: ptr uint32;
#                                      e: ptr ptr xcb_generic_error_t): uint8 {.
#     inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e)

# proc xcb_ewmh_set_wm_user_time_window*(ewmh: ptr xcb_ewmh_connection_t;
#                                       window: xcb_window_t; xtime: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_user_time_window_checked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_user_time_window_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_window*(ewmh: ptr xcb_ewmh_connection_t;
#                                       window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_window_from_reply*(xtime: ptr uint32;
#     r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_from_reply(xtime, r)

# proc xcb_ewmh_get_wm_user_time_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; xtime: ptr uint32;
#     e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
#   return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e)

# proc xcb_ewmh_set_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
#                                 window: xcb_window_t; left: uint32;
#                                 right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_frame_extents_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         window: xcb_window_t; left: uint32;
#                                         right: uint32; top: uint32;
#                                         bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_frame_extents_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
#                                 window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_frame_extents_from_reply*(
#     frame_extents: ptr xcb_ewmh_get_extents_reply_t;
#     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_frame_extents_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                       cookie: xcb_get_property_cookie_t;
#     frame_extents: ptr xcb_ewmh_get_extents_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_send_wm_ping*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#                            timestamp: xcb_timestamp_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_sync_request_counter*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; wm_sync_request_counter_atom: xcb_atom_t; low: uint32;
#     high: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_sync_request_counter_checked*(
#     ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
#     wm_sync_request_counter_atom: xcb_atom_t; low: uint32; high: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter_unchecked*(
#     ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter_from_reply*(counter: ptr uint64;
#     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_sync_request_counter_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t; counter: ptr uint64;
#     e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_send_wm_sync_request*(ewmh: ptr xcb_ewmh_connection_t;
#                                    window: xcb_window_t;
#                                    wm_protocols_atom: xcb_atom_t;
#                                    wm_sync_request_atom: xcb_atom_t;
#                                    timestamp: xcb_timestamp_t; counter: uint64): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_fullscreen_monitors*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t; top: uint32; bottom: uint32; left: uint32;
#     right: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_fullscreen_monitors_checked*(
#     ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t; top: uint32;
#     bottom: uint32; left: uint32; right: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors_unchecked*(
#     ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors*(ewmh: ptr xcb_ewmh_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors_from_reply*(
#     monitors: ptr xcb_ewmh_get_wm_fullscreen_monitors_reply_t;
#     r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_fullscreen_monitors_reply*(ewmh: ptr xcb_ewmh_connection_t;
#     cookie: xcb_get_property_cookie_t;
#     monitors: ptr xcb_ewmh_get_wm_fullscreen_monitors_reply_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_request_change_wm_fullscreen_monitors*(
#     ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint; window: xcb_window_t;
#     top: uint32; bottom: uint32; left: uint32; right: uint32;
#     source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# ## *
# ##  @brief Set _NET_WM_CM_Sn ownership to the given window
# ##
# ##  For  each  screen they  manage,  compositing  manager MUST  acquire
# ##  ownership of a selection named _NET_WM_CM_Sn, where n is the screen
# ##  number.
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @param owner The new owner of _NET_WM_CM_Sn selection
# ##  @param timestamp The client's last user activity timestamp
# ##  @param selection_data1 Optional data described by ICCCM
# ##  @param selection_data2 Optional data described by ICCCM
# ##

# proc xcb_ewmh_set_wm_cm_owner*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
#                               owner: xcb_window_t; timestamp: xcb_timestamp_t;
#                               selection_data1: uint32; selection_data2: uint32): xcb_void_cookie_t
# ## *
# ##  @see xcb_ewmh_set_wm_cm_owner
# ##

# proc xcb_ewmh_set_wm_cm_owner_checked*(ewmh: ptr xcb_ewmh_connection_t;
#                                       screen_nbr: cint; owner: xcb_window_t;
#                                       timestamp: xcb_timestamp_t;
#                                       selection_data1: uint32;
#                                       selection_data2: uint32): xcb_void_cookie_t
# ## *
# ##  @brief   Send  GetSelectOwner   request   to  get   the  owner   of
# ##         _NET_WM_CM_Sn root window property
# ##
# ##  @param ewmh The information relative to EWMH
# ##  @param screen_nbr The screen number
# ##  @return The _NET_WM_CM_Sn cookie of the GetSelectionOwner request
# ##

# proc xcb_ewmh_get_wm_cm_owner_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
#                                         screen_nbr: cint): xcb_get_selection_owner_cookie_t
# ## *
# ##  @see xcb_ewmh_get_wm_cm_owner_unchecked
# ##

# proc xcb_ewmh_get_wm_cm_owner*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_selection_owner_cookie_t
# proc xcb_ewmh_get_wm_cm_owner_from_reply*(owner: ptr xcb_window_t;
#     r: ptr xcb_get_selection_owner_reply_t): uint8
# ## *
# ##  @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
# ##
# ##  The  parameter  e  supplied  to  this  function  must  be  NULL  if
# ##  xcb_get_window_client_list_unchecked()  is   used.   Otherwise,  it
# ##  stores the error if any.
# ##
# ##  @param ewmh The information relative to EWMH.
# ##  @param cookie The _NET_WM_CM_Sn GetSelectionOwner request cookie.
# ##  @param owner The window ID which owns the selection or None.
# ##  @param The xcb_generic_error_t supplied.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_ewmh_get_wm_cm_owner_reply*(ewmh: ptr xcb_ewmh_connection_t;
#                                     cookie: xcb_get_selection_owner_cookie_t;
#                                     owner: ptr xcb_window_t;
#                                     e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @}
# ##

# ##
# ##  Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
# ##  All Rights Reserved.
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##


# ##  xcb_ext.c


# ##  xcb_out.c

# type
#   xcb_protocol_request_t* {.bycopy.} = object
#     count*: csize
#     ext*: ptr xcb_extension_t
#     opcode*: uint8
#     isvoid*: uint8

#   xcb_send_request_flags_t* = enum
#     XCB_REQUEST_CHECKED = 1 shl 0, XCB_REQUEST_RAW = 1 shl 1,
#     XCB_REQUEST_DISCARD_REPLY = 1 shl 2, XCB_REQUEST_REPLY_FDS = 1 shl 3


# ## *
# ##  @brief Send a request to the server.
# ##  @param c The connection to the X server.
# ##  @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ##  @param vector Data to send; must have two iovecs before start for internal use.
# ##  @param request Information about the request to be sent.
# ##  @return The request's sequence number on success, 0 otherwise.
# ##
# ##  This function sends a new request to the X server. The data of the request is
# ##  given as an array of @c iovecs in the @p vector argument. The length of that
# ##  array and the necessary management information are given in the @p request
# ##  argument.
# ##
# ##  When this function returns, the request might or might not be sent already.
# ##  Use xcb_flush() to make sure that it really was sent.
# ##
# ##  Please note that this function is not the preferred way for sending requests.
# ##  It's better to use the generated wrapper functions.
# ##
# ##  Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ##  so they must be valid!
# ##

# proc xcb_send_request*(c: ptr xcb_connection_t; flags: cint; vector: ptr iovec;
#                       request: ptr xcb_protocol_request_t): uint8
# ## *
# ##  @brief Send a request to the server.
# ##  @param c The connection to the X server.
# ##  @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ##  @param vector Data to send; must have two iovecs before start for internal use.
# ##  @param request Information about the request to be sent.
# ##  @param num_fds Number of additional file descriptors to send to the server
# ##  @param fds Additional file descriptors that should be send to the server.
# ##  @return The request's sequence number on success, 0 otherwise.
# ##
# ##  This function sends a new request to the X server. The data of the request is
# ##  given as an array of @c iovecs in the @p vector argument. The length of that
# ##  array and the necessary management information are given in the @p request
# ##  argument.
# ##
# ##  If @p num_fds is non-zero, @p fds points to an array of file descriptors that
# ##  will be sent to the X server along with this request. After this function
# ##  returns, all file descriptors sent are owned by xcb and will be closed
# ##  eventually.
# ##
# ##  When this function returns, the request might or might not be sent already.
# ##  Use xcb_flush() to make sure that it really was sent.
# ##
# ##  Please note that this function is not the preferred way for sending requests.
# ##
# ##  Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ##  so they must be valid!
# ##

# proc xcb_send_request_with_fds*(c: ptr xcb_connection_t; flags: cint;
#                                vector: ptr iovec;
#                                request: ptr xcb_protocol_request_t; num_fds: uint8;
#                                fds: ptr cint): uint8
# ## *
# ##  @brief Send a request to the server, with 64-bit sequence number returned.
# ##  @param c The connection to the X server.
# ##  @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ##  @param vector Data to send; must have two iovecs before start for internal use.
# ##  @param request Information about the request to be sent.
# ##  @return The request's sequence number on success, 0 otherwise.
# ##
# ##  This function sends a new request to the X server. The data of the request is
# ##  given as an array of @c iovecs in the @p vector argument. The length of that
# ##  array and the necessary management information are given in the @p request
# ##  argument.
# ##
# ##  When this function returns, the request might or might not be sent already.
# ##  Use xcb_flush() to make sure that it really was sent.
# ##
# ##  Please note that this function is not the preferred way for sending requests.
# ##  It's better to use the generated wrapper functions.
# ##
# ##  Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ##  so they must be valid!
# ##

# proc xcb_send_request64*(c: ptr xcb_connection_t; flags: cint; vector: ptr iovec;
#                         request: ptr xcb_protocol_request_t): uint64
# ## *
# ##  @brief Send a request to the server, with 64-bit sequence number returned.
# ##  @param c The connection to the X server.
# ##  @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ##  @param vector Data to send; must have two iovecs before start for internal use.
# ##  @param request Information about the request to be sent.
# ##  @param num_fds Number of additional file descriptors to send to the server
# ##  @param fds Additional file descriptors that should be send to the server.
# ##  @return The request's sequence number on success, 0 otherwise.
# ##
# ##  This function sends a new request to the X server. The data of the request is
# ##  given as an array of @c iovecs in the @p vector argument. The length of that
# ##  array and the necessary management information are given in the @p request
# ##  argument.
# ##
# ##  If @p num_fds is non-zero, @p fds points to an array of file descriptors that
# ##  will be sent to the X server along with this request. After this function
# ##  returns, all file descriptors sent are owned by xcb and will be closed
# ##  eventually.
# ##
# ##  When this function returns, the request might or might not be sent already.
# ##  Use xcb_flush() to make sure that it really was sent.
# ##
# ##  Please note that this function is not the preferred way for sending requests.
# ##  It's better to use the generated wrapper functions.
# ##
# ##  Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ##  so they must be valid!
# ##

# proc xcb_send_request_with_fds64*(c: ptr xcb_connection_t; flags: cint;
#                                  vector: ptr iovec;
#                                  request: ptr xcb_protocol_request_t;
#                                  num_fds: uint8; fds: ptr cint): uint64
# ## *
# ##  @brief Send a file descriptor to the server in the next call to xcb_send_request.
# ##  @param c The connection to the X server.
# ##  @param fd The file descriptor to send.
# ##
# ##  After this function returns, the file descriptor given is owned by xcb and
# ##  will be closed eventually.
# ##
# ##  @deprecated This function cannot be used in a thread-safe way. Two threads
# ##  that run xcb_send_fd(); xcb_send_request(); could mix up their file
# ##  descriptors. Instead, xcb_send_request_with_fds() should be used.
# ##

# proc xcb_send_fd*(c: ptr xcb_connection_t; fd: cint)
# ## *
# ##  @brief Take over the write side of the socket
# ##  @param c The connection to the X server.
# ##  @param return_socket Callback function that will be called when xcb wants
# ##                         to use the socket again.
# ##  @param closure Argument to the callback function.
# ##  @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ##  @param sent Location to the sequence number of the last sequence request.
# ##               Must not be NULL.
# ##  @return 1 on success, else 0.
# ##
# ##  xcb_take_socket allows external code to ask XCB for permission to
# ##  take over the write side of the socket and send raw data with
# ##  xcb_writev. xcb_take_socket provides the sequence number of the last
# ##  request XCB sent. The caller of xcb_take_socket must supply a
# ##  callback which XCB can call when it wants the write side of the
# ##  socket back to make a request. This callback synchronizes with the
# ##  external socket owner and flushes any output queues if appropriate.
# ##  If you are sending requests which won't cause a reply, please note the
# ##  comment for xcb_writev which explains some sequence number wrap issues.
# ##
# ##  All replies that are generated while the socket is owned externally have
# ##  @p flags applied to them. For example, use XCB_REQUEST_CHECK if you don't
# ##  want errors to go to xcb's normal error handling, but instead having to be
# ##  picked up via xcb_wait_for_reply(), xcb_poll_for_reply() or
# ##  xcb_request_check().
# ##

# proc xcb_take_socket*(c: ptr xcb_connection_t;
#                      return_socket: proc (closure: pointer); closure: pointer;
#                      flags: cint; sent: ptr uint64): cint
# ## *
# ##  @brief Send raw data to the X server.
# ##  @param c The connection to the X server.
# ##  @param vector Array of data to be sent.
# ##  @param count Number of entries in @p vector.
# ##  @param requests Number of requests that are being sent.
# ##  @return 1 on success, else 0.
# ##
# ##  You must own the write-side of the socket (you've called
# ##  xcb_take_socket, and haven't returned from return_socket yet) to call
# ##  xcb_writev. Also, the iovec must have at least 1 byte of data in it.
# ##  You have to make sure that xcb can detect sequence number wraps correctly.
# ##  This means that the first request you send after xcb_take_socket must cause a
# ##  reply (e.g. just insert a GetInputFocus request). After every (1 << 16) - 1
# ##  requests without a reply, you have to insert a request which will cause a
# ##  reply. You can again use GetInputFocus for this. You do not have to wait for
# ##  any of the GetInputFocus replies, but can instead handle them via
# ##  xcb_discard_reply().
# ##

# proc xcb_writev*(c: ptr xcb_connection_t; vector: ptr iovec; count: cint;
#                 requests: uint64): cint
# ##  xcb_in.c
# ## *
# ##  @brief Wait for the reply of a given request.
# ##  @param c The connection to the X server.
# ##  @param request Sequence number of the request as returned by xcb_send_request().
# ##  @param e Location to store errors in, or NULL. Ignored for unchecked requests.
# ##
# ##  Returns the reply to the given request or returns null in the event of
# ##  errors. Blocks until the reply or error for the request arrives, or an I/O
# ##  error occurs.
# ##

# proc xcb_wait_for_reply*(c: ptr xcb_connection_t; request: uint8;
#                         e: ptr ptr xcb_generic_error_t): pointer
# ## *
# ##  @brief Wait for the reply of a given request, with 64-bit sequence number
# ##  @param c The connection to the X server.
# ##  @param request 64-bit sequence number of the request as returned by xcb_send_request64().
# ##  @param e Location to store errors in, or NULL. Ignored for unchecked requests.
# ##
# ##  Returns the reply to the given request or returns null in the event of
# ##  errors. Blocks until the reply or error for the request arrives, or an I/O
# ##  error occurs.
# ##
# ##  Unlike its xcb_wait_for_reply() counterpart, the given sequence number is not
# ##  automatically "widened" to 64-bit.
# ##

# proc xcb_wait_for_reply64*(c: ptr xcb_connection_t; request: uint64;
#                           e: ptr ptr xcb_generic_error_t): pointer
# ## *
# ##  @brief Poll for the reply of a given request.
# ##  @param c The connection to the X server.
# ##  @param request Sequence number of the request as returned by xcb_send_request().
# ##  @param reply Location to store the reply in, must not be NULL.
# ##  @param error Location to store errors in, or NULL. Ignored for unchecked requests.
# ##  @return 1 when the reply to the request was returned, else 0.
# ##
# ##  Checks if the reply to the given request already received. Does not block.
# ##

# proc xcb_poll_for_reply*(c: ptr xcb_connection_t; request: uint8; reply: ptr pointer;
#                         error: ptr ptr xcb_generic_error_t): cint
# ## *
# ##  @brief Poll for the reply of a given request, with 64-bit sequence number.
# ##  @param c The connection to the X server.
# ##  @param request 64-bit sequence number of the request as returned by xcb_send_request().
# ##  @param reply Location to store the reply in, must not be NULL.
# ##  @param error Location to store errors in, or NULL. Ignored for unchecked requests.
# ##  @return 1 when the reply to the request was returned, else 0.
# ##
# ##  Checks if the reply to the given request already received. Does not block.
# ##
# ##  Unlike its xcb_poll_for_reply() counterpart, the given sequence number is not
# ##  automatically "widened" to 64-bit.
# ##

# proc xcb_poll_for_reply64*(c: ptr xcb_connection_t; request: uint64;
#                           reply: ptr pointer; error: ptr ptr xcb_generic_error_t): cint
# ## *
# ##  @brief Don't use this, only needed by the generated code.
# ##  @param c The connection to the X server.
# ##  @param reply A reply that was received from the server
# ##  @param replylen The size of the reply.
# ##  @return Pointer to the location where received file descriptors are stored.
# ##

# proc xcb_get_reply_fds*(c: ptr xcb_connection_t; reply: pointer; replylen: csize): ptr cint
# ##  xcb_util.c
# ## *
# ##  @param mask The mask to check
# ##  @return The number of set bits in the mask
# ##

# proc xcb_popcount*(mask: uint32): cint
# ## *
# ##  @param list The base of an array
# ##  @param len The length of the array
# ##  @return The sum of all entries in the array.
# ##

# proc xcb_sumof*(list: ptr uint8; len: cint): cint
# ##
# ##  Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
# ##  All Rights Reserved.
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# when defined(__solaris__):
# else:
# when not defined(_WIN32):
# else:
#   import
#     xcb_windefs

# ## *
# ##  @file xcb.h
# ##

# const
#   XCB_PACKED* = __attribute__((__packed__))

# ## *
# ##  @defgroup XCB_Core_API XCB Core API
# ##  @brief Core API of the XCB library.
# ##
# ##  @{
# ##
# ##  Pre-defined constants
# ## * Current protocol version

# const
#   X_PROTOCOL* = 11

# ## * Current minor version

# const
#   X_PROTOCOL_REVISION* = 0

# ## * X_TCP_PORT + display number = server port for TCP transport

# const
#   X_TCP_PORT* = 6000

# ## * xcb connection errors because of socket, pipe and other stream errors.

# const
#   XCB_CONN_ERROR* = 1

# ## * xcb connection shutdown because of extension not supported

# const
#   XCB_CONN_CLOSED_EXT_NOTSUPPORTED* = 2

# ## * malloc(), calloc() and realloc() error upon failure, for eg ENOMEM

# const
#   XCB_CONN_CLOSED_MEM_INSUFFICIENT* = 3

# ## * Connection closed, exceeding request length that server accepts.

# const
#   XCB_CONN_CLOSED_REQ_LEN_EXCEED* = 4

# ## * Connection closed, error during parsing display string.

# const
#   XCB_CONN_CLOSED_PARSE_ERR* = 5

# ## * Connection closed because the server does not have a screen matching the display.

# const
#   XCB_CONN_CLOSED_INVALID_SCREEN* = 6

# ## * Connection closed because some FD passing operation failed

# const
#   XCB_CONN_CLOSED_FDPASSING_FAILED* = 7

# template XCB_TYPE_PAD*(T, I: untyped): untyped =
#   (-(I) and (if sizeof((T)) > 4: 3 else: sizeof((T)) - 1))

# ##  Opaque structures
# ## *
# ##  @brief XCB Connection structure.
# ##
# ##  A structure that contain all data that  XCB needs to communicate with an X server.
# ##


# ## *< Opaque structure containing all data that  XCB needs to communicate with an X server.
# ##  Other types
# ## *
# ##  @brief Generic iterator.
# ##
# ##  A generic iterator structure.
# ##

# type
#   xcb_generic_iterator_t* {.bycopy.} = object
#     data*: pointer             ## *< Data of the current iterator
#     rem*: cint                 ## *< remaining elements
#     index*: cint               ## *< index of the current iterator


# ## *
# ##  @brief Generic reply.
# ##
# ##  A generic reply structure.
# ##

# type
#   xcb_generic_reply_t* {.bycopy.} = object
#     response_type*: uint8    ## *< Type of the response
#     pad0*: uint8             ## *< Padding
#     sequence*: uint16        ## *< Sequence number
#     length*: uint32          ## *< Length of the response


# ## *
# ##  @brief Generic event.
# ##
# ##  A generic event structure.
# ##

# type
#   xcb_generic_event_t* {.bycopy.} = object
#     response_type*: uint8    ## *< Type of the response
#     pad0*: uint8             ## *< Padding
#     sequence*: uint16        ## *< Sequence number
#     pad*: array[7, uint32]    ## *< Padding
#     full_sequence*: uint32   ## *< full sequence


# ## *
# ##  @brief Raw Generic event.
# ##
# ##  A generic event structure as used on the wire, i.e., without the full_sequence field
# ##

# type
#   xcb_raw_generic_event_t* {.bycopy.} = object
#     response_type*: uint8    ## *< Type of the response
#     pad0*: uint8             ## *< Padding
#     sequence*: uint16        ## *< Sequence number
#     pad*: array[7, uint32]    ## *< Padding


# ## *
# ##  @brief GE event
# ##
# ##  An event as sent by the XGE extension. The length field specifies the
# ##  number of 4-byte blocks trailing the struct.
# ##
# ##  @deprecated Since some fields in this struct have unfortunate names, it is
# ##  recommended to use xcb_ge_generic_event_t instead.
# ##

# type
#   xcb_ge_event_t* {.bycopy.} = object
#     response_type*: uint8    ## *< Type of the response
#     pad0*: uint8             ## *< Padding
#     sequence*: uint16        ## *< Sequence number
#     length*: uint32
#     event_type*: uint16
#     pad1*: uint16
#     pad*: array[5, uint32]    ## *< Padding
#     full_sequence*: uint32   ## *< full sequence


# ## *
# ##  @brief Generic error.
# ##
# ##  A generic error structure.
# ##

# type
#   xcb_generic_error_t* {.bycopy.} = object
#     response_type*: uint8    ## *< Type of the response
#     error_code*: uint8       ## *< Error code
#     sequence*: uint16        ## *< Sequence number
#     resource_id*: uint32     ## * < Resource ID for requests with side effects only
#     minor_code*: uint16      ## * < Minor opcode of the failed request
#     major_code*: uint8       ## * < Major opcode of the failed request
#     pad0*: uint8
#     pad*: array[5, uint32]    ## *< Padding
#     full_sequence*: uint32   ## *< full sequence


# ## *
# ##  @brief Generic cookie.
# ##
# ##  A generic cookie structure.
# ##

# type
#   xcb_void_cookie_t* {.bycopy.} = object
#     sequence*: uint8           ## *< Sequence number


# ##  Include the generated xproto header.

# import
#   xproto

# ## * XCB_NONE is the universal null resource or null atom parameter value for many core X requests

# const
#   XCB_NONE* = 0

# ## * XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters

# const
#   XCB_COPY_FROM_PARENT* = 0

# ## * XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t

# const
#   XCB_CURRENT_TIME* = 0

# ## * XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables

# const
#   XCB_NO_SYMBOL* = 0

# ##  xcb_auth.c
# ## *
# ##  @brief Container for authorization information.
# ##
# ##  A container for authorization information to be sent to the X server.
# ##

# type
#   xcb_auth_info_t* {.bycopy.} = object
#     namelen*: cint             ## *< Length of the string name (as returned by strlen).
#     name*: cstring             ## *< String containing the authentication protocol name, such as "MIT-MAGIC-COOKIE-1" or "XDM-AUTHORIZATION-1".
#     datalen*: cint             ## *< Length of the data member.
#     data*: cstring             ## *< Data interpreted in a protocol-specific manner.


# ##  xcb_out.c
# ## *
# ##  @brief Forces any buffered output to be written to the server.
# ##  @param c The connection to the X server.
# ##  @return > @c 0 on success, <= @c 0 otherwise.
# ##
# ##  Forces any buffered output to be written to the server. Blocks
# ##  until the write is complete.
# ##

# proc xcb_flush*(c: ptr xcb_connection_t): cint
# ## *
# ##  @brief Returns the maximum request length that this server accepts.
# ##  @param c The connection to the X server.
# ##  @return The maximum request length field.
# ##
# ##  In the absence of the BIG-REQUESTS extension, returns the
# ##  maximum request length field from the connection setup data, which
# ##  may be as much as 65535. If the server supports BIG-REQUESTS, then
# ##  the maximum request length field from the reply to the
# ##  BigRequestsEnable request will be returned instead.
# ##
# ##  Note that this length is measured in four-byte units, making the
# ##  theoretical maximum lengths roughly 256kB without BIG-REQUESTS and
# ##  16GB with.
# ##

# proc xcb_get_maximum_request_length*(c: ptr xcb_connection_t): uint32
# ## *
# ##  @brief Prefetch the maximum request length without blocking.
# ##  @param c The connection to the X server.
# ##
# ##  Without blocking, does as much work as possible toward computing
# ##  the maximum request length accepted by the X server.
# ##
# ##  Invoking this function may cause a call to xcb_big_requests_enable,
# ##  but will not block waiting for the reply.
# ##  xcb_get_maximum_request_length will return the prefetched data
# ##  after possibly blocking while the reply is retrieved.
# ##
# ##  Note that in order for this function to be fully non-blocking, the
# ##  application must previously have called
# ##  xcb_prefetch_extension_data(c, &xcb_big_requests_id) and the reply
# ##  must have already arrived.
# ##

# proc xcb_prefetch_maximum_request_length*(c: ptr xcb_connection_t)
# ##  xcb_in.c
# ## *
# ##  @brief Returns the next event or error from the server.
# ##  @param c The connection to the X server.
# ##  @return The next event from the server.
# ##
# ##  Returns the next event or error from the server, or returns null in
# ##  the event of an I/O error. Blocks until either an event or error
# ##  arrive, or an I/O error occurs.
# ##

# proc xcb_wait_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t
# ## *
# ##  @brief Returns the next event or error from the server.
# ##  @param c The connection to the X server.
# ##  @return The next event from the server.
# ##
# ##  Returns the next event or error from the server, if one is
# ##  available, or returns @c NULL otherwise. If no event is available, that
# ##  might be because an I/O error like connection close occurred while
# ##  attempting to read the next event, in which case the connection is
# ##  shut down when this function returns.
# ##

# proc xcb_poll_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t
# ## *
# ##  @brief Returns the next event without reading from the connection.
# ##  @param c The connection to the X server.
# ##  @return The next already queued event from the server.
# ##
# ##  This is a version of xcb_poll_for_event that only examines the
# ##  event queue for new events. The function doesn't try to read new
# ##  events from the connection if no queued events are found.
# ##
# ##  This function is useful for callers that know in advance that all
# ##  interesting events have already been read from the connection. For
# ##  example, callers might use xcb_wait_for_reply and be interested
# ##  only of events that preceded a specific reply.
# ##
# type
#   xcb_special_event_t* = xcb_special_event

# ## *
# ##  @brief Returns the next event from a special queue
# ##

# proc xcb_poll_for_special_event*(c: ptr xcb_connection_t;
#                                 se: ptr xcb_special_event_t): ptr xcb_generic_event_t
# ## *
# ##  @brief Returns the next event from a special queue, blocking until one arrives
# ##

# proc xcb_wait_for_special_event*(c: ptr xcb_connection_t;
#                                 se: ptr xcb_special_event_t): ptr xcb_generic_event_t
# ## *
# ##  @typedef typedef struct xcb_extension_t xcb_extension_t
# ##


# ## *< Opaque structure used as key for xcb_get_extension_data_t.
# ## *
# ##  @brief Listen for a special event
# ##

# proc xcb_register_for_special_xge*(c: ptr xcb_connection_t;
#                                   ext: ptr xcb_extension_t; eid: uint32;
#                                   stamp: ptr uint32): ptr xcb_special_event_t
# ## *
# ##  @brief Stop listening for a special event
# ##

# proc xcb_unregister_for_special_event*(c: ptr xcb_connection_t;
#                                       se: ptr xcb_special_event_t)
# ## *
# ##  @brief Return the error for a request, or NULL if none can ever arrive.
# ##  @param c The connection to the X server.
# ##  @param cookie The request cookie.
# ##  @return The error for the request, or NULL if none can ever arrive.
# ##
# ##  The xcb_void_cookie_t cookie supplied to this function must have resulted
# ##  from a call to xcb_[request_name]_checked().  This function will block
# ##  until one of two conditions happens.  If an error is received, it will be
# ##  returned.  If a reply to a subsequent request has already arrived, no error
# ##  can arrive for this request, so this function will return NULL.
# ##
# ##  Note that this function will perform a sync if needed to ensure that the
# ##  sequence number will advance beyond that provided in cookie; this is a
# ##  convenience to avoid races in determining whether the sync is needed.
# ##

# proc xcb_request_check*(c: ptr xcb_connection_t; cookie: xcb_void_cookie_t): ptr xcb_generic_error_t
# ## *
# ##  @brief Discards the reply for a request.
# ##  @param c The connection to the X server.
# ##  @param sequence The request sequence number from a cookie.
# ##
# ##  Discards the reply for a request. Additionally, any error generated
# ##  by the request is also discarded (unless it was an _unchecked request
# ##  and the error has already arrived).
# ##
# ##  This function will not block even if the reply is not yet available.
# ##
# ##  Note that the sequence really does have to come from an xcb cookie;
# ##  this function is not designed to operate on socket-handoff replies.
# ##

# proc xcb_discard_reply*(c: ptr xcb_connection_t; sequence: uint8)
# ## *
# ##  @brief Discards the reply for a request, given by a 64bit sequence number
# ##  @param c The connection to the X server.
# ##  @param sequence 64-bit sequence number as returned by xcb_send_request64().
# ##
# ##  Discards the reply for a request. Additionally, any error generated
# ##  by the request is also discarded (unless it was an _unchecked request
# ##  and the error has already arrived).
# ##
# ##  This function will not block even if the reply is not yet available.
# ##
# ##  Note that the sequence really does have to come from xcb_send_request64();
# ##  the cookie sequence number is defined as "unsigned" int and therefore
# ##  not 64-bit on all platforms.
# ##  This function is not designed to operate on socket-handoff replies.
# ##
# ##  Unlike its xcb_discard_reply() counterpart, the given sequence number is not
# ##  automatically "widened" to 64-bit.
# ##

# proc xcb_discard_reply64*(c: ptr xcb_connection_t; sequence: uint64)
# ##  xcb_ext.c
# ## *
# ##  @brief Caches reply information from QueryExtension requests.
# ##  @param c The connection.
# ##  @param ext The extension data.
# ##  @return A pointer to the xcb_query_extension_reply_t for the extension.
# ##
# ##  This function is the primary interface to the "extension cache",
# ##  which caches reply information from QueryExtension
# ##  requests. Invoking this function may cause a call to
# ##  xcb_query_extension to retrieve extension information from the
# ##  server, and may block until extension data is received from the
# ##  server.
# ##
# ##  The result must not be freed. This storage is managed by the cache
# ##  itself.
# ##

# proc xcb_get_setup*(c: ptr xcb_connection_t): ptr xcb_setup_t
# ## *
# ##  @brief Access the file descriptor of the connection.
# ##  @param c The connection.
# ##  @return The file descriptor.
# ##
# ##  Accessor for the file descriptor that was passed to the
# ##  xcb_connect_to_fd call that returned @p c.
# ##

# proc xcb_get_file_descriptor*(c: ptr xcb_connection_t): cint
# ## *
# ##  @brief Test whether the connection has shut down due to a fatal error.
# ##  @param c The connection.
# ##  @return > 0 if the connection is in an error state; 0 otherwise.
# ##
# ##  Some errors that occur in the context of an xcb_connection_t
# ##  are unrecoverable. When such an error occurs, the
# ##  connection is shut down and further operations on the
# ##  xcb_connection_t have no effect, but memory will not be freed until
# ##  xcb_disconnect() is called on the xcb_connection_t.
# ##
# ##  @return XCB_CONN_ERROR, because of socket errors, pipe errors or other stream errors.
# ##  @return XCB_CONN_CLOSED_EXT_NOTSUPPORTED, when extension not supported.
# ##  @return XCB_CONN_CLOSED_MEM_INSUFFICIENT, when memory not available.
# ##  @return XCB_CONN_CLOSED_REQ_LEN_EXCEED, exceeding request length that server accepts.
# ##  @return XCB_CONN_CLOSED_PARSE_ERR, error during parsing display string.
# ##  @return XCB_CONN_CLOSED_INVALID_SCREEN, because the server does not have a screen matching the display.
# ##

# proc xcb_connection_has_error*(c: ptr xcb_connection_t): cint
# ## *
# ##  @brief Connects to the X server.
# ##  @param fd The file descriptor.
# ##  @param auth_info Authentication data.
# ##  @return A newly allocated xcb_connection_t structure.
# ##
# ##  Connects to an X server, given the open socket @p fd and the
# ##  xcb_auth_info_t @p auth_info. The file descriptor @p fd is
# ##  bidirectionally connected to an X server. If the connection
# ##  should be unauthenticated, @p auth_info must be @c
# ##  NULL.
# ##
# ##  Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ##  Callers need to use xcb_connection_has_error() to check for failure.
# ##  When finished, use xcb_disconnect() to close the connection and free
# ##  the structure.
# ##

# proc xcb_connect_to_fd*(fd: cint; auth_info: ptr xcb_auth_info_t): ptr xcb_connection_t
# ## *
# ##  @brief Closes the connection.
# ##  @param c The connection.
# ##
# ##  Closes the file descriptor and frees all memory associated with the
# ##  connection @c c. If @p c is @c NULL, nothing is done.
# ##

# proc xcb_disconnect*(c: ptr xcb_connection_t)
# ##  xcb_util.c
# ## *
# ##  @brief Parses a display string name in the form documented by X(7x).
# ##  @param name The name of the display.
# ##  @param host A pointer to a malloc'd copy of the hostname.
# ##  @param display A pointer to the display number.
# ##  @param screen A pointer to the screen number.
# ##  @return 0 on failure, non 0 otherwise.
# ##
# ##  Parses the display string name @p display_name in the form
# ##  documented by X(7x). Has no side effects on failure. If
# ##  @p displayname is @c NULL or empty, it uses the environment
# ##  variable DISPLAY. @p hostp is a pointer to a newly allocated string
# ##  that contain the host name. @p displayp is set to the display
# ##  number and @p screenp to the preferred screen number. @p screenp
# ##  can be @c NULL. If @p displayname does not contain a screen number,
# ##  it is set to @c 0.
# ##

# proc xcb_parse_display*(name: cstring; host: cstringArray; display: ptr cint;
#                        screen: ptr cint): cint
# ## *
# ##  @brief Connects to the X server.
# ##  @param displayname The name of the display.
# ##  @param screenp A pointer to a preferred screen number.
# ##  @return A newly allocated xcb_connection_t structure.
# ##
# ##  Connects to the X server specified by @p displayname. If @p
# ##  displayname is @c NULL, uses the value of the DISPLAY environment
# ##  variable. If a particular screen on that server is preferred, the
# ##  int pointed to by @p screenp (if not @c NULL) will be set to that
# ##  screen; otherwise the screen will be set to 0.
# ##
# ##  Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ##  Callers need to use xcb_connection_has_error() to check for failure.
# ##  When finished, use xcb_disconnect() to close the connection and free
# ##  the structure.
# ##

# proc xcb_connect*(displayname: cstring; screenp: ptr cint): ptr xcb_connection_t
# ## *
# ##  @brief Connects to the X server, using an authorization information.
# ##  @param display The name of the display.
# ##  @param auth The authorization information.
# ##  @param screen A pointer to a preferred screen number.
# ##  @return A newly allocated xcb_connection_t structure.
# ##
# ##  Connects to the X server specified by @p displayname, using the
# ##  authorization @p auth. If a particular screen on that server is
# ##  preferred, the int pointed to by @p screenp (if not @c NULL) will
# ##  be set to that screen; otherwise @p screenp will be set to 0.
# ##
# ##  Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ##  Callers need to use xcb_connection_has_error() to check for failure.
# ##  When finished, use xcb_disconnect() to close the connection and free
# ##  the structure.
# ##

# proc xcb_connect_to_display_with_auth_info*(display: cstring;
#     auth: ptr xcb_auth_info_t; screen: ptr cint): ptr xcb_connection_t
# ##  xcb_xid.c
# ## *
# ##  @brief Allocates an XID for a new object.
# ##  @param c The connection.
# ##  @return A newly allocated XID.
# ##
# ##  Allocates an XID for a new object. Typically used just prior to
# ##  various object creation functions, such as xcb_create_window.
# ##

# proc xcb_generate_id*(c: ptr xcb_connection_t): uint32
# ## *
# ##  @}
# ##

# ##
# ##  Copyright (C) 2008 Arnaud Fontaine <arnau@debian.org>
# ##  Copyright (C) 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
# ##
# ##  Permission is hereby granted, free of charge, to any person
# ##  obtaining a copy of this software and associated documentation
# ##  files (the "Software"), to deal in the Software without
# ##  restriction, including without limitation the rights to use, copy,
# ##  modify, merge, publish, distribute, sublicense, and/or sell copies
# ##  of the Software, and to permit persons to whom the Software is
# ##  furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be
# ##  included in all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# ##  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# ##  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# ##  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# ##  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# ##  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# ##  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or
# ##  their institutions shall not be used in advertising or otherwise to
# ##  promote the sale, use or other dealings in this Software without
# ##  prior written authorization from the authors.
# ##
# ## *
# ##  @defgroup xcb__icccm_t XCB ICCCM Functions
# ##
# ##  These functions allow easy handling of the protocol described in the
# ##  Inter-Client Communication Conventions Manual.
# ##
# ##  @{
# ##

# ## *
# ##  @brief TextProperty reply structure.
# ##

# type
#   xcb_icccm_get_text_property_reply_t* {.bycopy.} = object
#     _reply*: ptr xcb_get_property_reply_t ## * Store reply to avoid memory allocation, should normally not be
#                                        ##     used directly
#     ## * Encoding used
#     encoding*: xcb_atom_t      ## * Length of the name field above
#     name_len*: uint32        ## * Property value
#     name*: cstring             ## * Format, may be 8, 16 or 32
#     format*: uint8


# ## *
# ##  @brief Deliver a GetProperty request to the X server.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param property Property atom to get.
# ##  @return The request cookie.
# ##
# ##  Allow to get a window property, in most case you might want to use
# ##  above functions to get an ICCCM property for a given window.
# ##

# proc xcb_icccm_get_text_property*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                  property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_text_property()
# ##

# proc xcb_icccm_get_text_property_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the property value of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie TextProperty request cookie.
# ##  @param prop TextProperty reply which is to be filled.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  If the function return 0 (failure), the content of prop is unmodified and
# ##  therefore the structure must not be wiped.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_text_property_unchecked() is used.  Otherwise, it stores
# ##  the error if any.  prop structure members should be freed by
# ##  xcb_icccm_get_text_property_reply_wipe().
# ##

# proc xcb_icccm_get_text_property_reply*(c: ptr xcb_connection_t;
#                                        cookie: xcb_get_property_cookie_t; prop: ptr xcb_icccm_get_text_property_reply_t;
#                                        e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe prop structure members previously allocated by
# ##         xcb_icccm_get_text_property_reply().
# ##  @param prop prop structure whose members is going to be freed.
# ##

# proc xcb_icccm_get_text_property_reply_wipe*(
#     prop: ptr xcb_icccm_get_text_property_reply_t)
# ##  WM_NAME
# ## *
# ##  @brief Deliver a SetProperty request to set WM_NAME property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ##  @param format Encoding format.
# ##  @param name_len Length of name value to set.
# ##  @param name Name value to set.
# ##

# proc xcb_icccm_set_wm_name_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                    encoding: xcb_atom_t; format: uint8;
#                                    name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_name_checked()
# ##

# proc xcb_icccm_set_wm_name*(c: ptr xcb_connection_t; window: xcb_window_t;
#                            encoding: xcb_atom_t; format: uint8;
#                            name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ##  @brief Deliver a GetProperty request to the X server for WM_NAME.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_name*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_name()
# ##

# proc xcb_icccm_get_wm_name_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the WM_NAME property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param prop WM_NAME property value.
# ##  @param e Error if any.
# ##  @see xcb_icccm_get_text_property_reply()
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_name_reply*(c: ptr xcb_connection_t;
#                                  cookie: xcb_get_property_cookie_t;
#                                  prop: ptr xcb_icccm_get_text_property_reply_t;
#                                  e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_ICON_NAME
# ## *
# ##  @brief Deliver a SetProperty request to set WM_ICON_NAME property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ##  @param format Encoding format.
# ##  @param name_len Length of name value to set.
# ##  @param name Name value to set.
# ##

# proc xcb_icccm_set_wm_icon_name_checked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t;
#                                         encoding: xcb_atom_t; format: uint8;
#                                         name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_icon_name_checked()
# ##

# proc xcb_icccm_set_wm_icon_name*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 encoding: xcb_atom_t; format: uint8;
#                                 name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get WM_ICON_NAME property of a window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_icon_name*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_icon_name()
# ##

# proc xcb_icccm_get_wm_icon_name_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the WM_ICON_NAME property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param prop WM_ICON_NAME property value.
# ##  @param e Error if any.
# ##  @see xcb_icccm_get_text_property_reply()
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_icon_name_reply*(c: ptr xcb_connection_t;
#                                       cookie: xcb_get_property_cookie_t; prop: ptr xcb_icccm_get_text_property_reply_t;
#                                       e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_COLORMAP_WINDOWS
# ## *
# ##  @brief Deliver a ChangeProperty request to set WM_COLORMAP_WINDOWS property value.
# ##  @param c The connection to the X server.
# ##  @param wm_colormap_windows The WM_COLORMAP_WINDOWS atom
# ##  @param window Window X identifier.
# ##  @param list_len Windows list len.
# ##  @param list Windows list.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_set_wm_colormap_windows_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; wm_colormap_windows_atom: xcb_atom_t; list_len: uint32;
#     list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_colormap_windows_checked()
# ##

# proc xcb_icccm_set_wm_colormap_windows*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t;
#                                        wm_colormap_windows_atom: xcb_atom_t;
#                                        list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief WM_COLORMAP_WINDOWS structure.
# ##

# type
#   xcb_icccm_get_wm_colormap_windows_reply_t* {.bycopy.} = object
#     windows_len*: uint32     ## * Length of the windows list
#     ## * Windows list
#     windows*: ptr xcb_window_t ## * Store reply to avoid memory allocation, should normally not be
#                             ##     used directly
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Send request to get WM_COLORMAP_WINDOWS property of a given window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_colormap_windows*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t;
#                                        wm_colormap_windows_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_colormap_windows()
# ##

# proc xcb_icccm_get_wm_colormap_windows_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; wm_colormap_windows_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
# ##  @param reply The reply of the GetProperty request.
# ##  @param colormap_windows WM_COLORMAP property value.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  protocols structure members should be freed by
# ##  xcb_icccm_get_wm_protocols_reply_wipe().
# ##

# proc xcb_icccm_get_wm_colormap_windows_from_reply*(
#     reply: ptr xcb_get_property_reply_t;
#     colormap_windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t): uint8
# ## *
# ##  @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param protocols WM_COLORMAP_WINDOWS property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_colormap_windows_unchecked() is used.  Otherwise, it
# ##  stores the error if any. protocols structure members should be
# ##  freed by xcb_icccm_get_wm_colormap_windows_reply_wipe().
# ##

# proc xcb_icccm_get_wm_colormap_windows_reply*(c: ptr xcb_connection_t;
#     cookie: xcb_get_property_cookie_t;
#     windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe protocols structure members previously allocated by
# ##         xcb_icccm_get_wm_colormap_windows_reply().
# ##  @param windows windows structure whose members is going to be freed.
# ##

# proc xcb_icccm_get_wm_colormap_windows_reply_wipe*(
#     windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t)
# ##  WM_CLIENT_MACHINE
# ## *
# ##  @brief Deliver a SetProperty request to set WM_CLIENT_MACHINE property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ##  @param format Encoding format.
# ##  @param name_len Length of name value to set.
# ##  @param name Name value to set.
# ##

# proc xcb_icccm_set_wm_client_machine_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; encoding: xcb_atom_t; format: uint8; name_len: uint32;
#     name: cstring): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_client_machine_checked()
# ##

# proc xcb_icccm_set_wm_client_machine*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      encoding: xcb_atom_t; format: uint8;
#                                      name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get WM_CLIENT_MACHINE property of a window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_client_machine*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_client_machine()
# ##

# proc xcb_icccm_get_wm_client_machine_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the WM_CLIENT_MACHINE property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param prop WM_CLIENT_MACHINE property value.
# ##  @param e Error if any.
# ##  @see xcb_icccm_get_text_property_reply()
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_client_machine_reply*(c: ptr xcb_connection_t;
#     cookie: xcb_get_property_cookie_t;
#     prop: ptr xcb_icccm_get_text_property_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_CLASS
# ## *
# ##  @brief WM_CLASS hint structure
# ##
# ## *
# ##  @brief Deliver a SetProperty request to set WM_CLASS property value.
# ##
# ##  WM_CLASS string is a concatenation of the instance and class name
# ##  strings respectively (including null character).
# ##
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param class_len Length of WM_CLASS string.
# ##  @param class_name WM_CLASS string.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_set_wm_class_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     class_len: uint32; class_name: cstring): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_class_checked()
# ##

# proc xcb_icccm_set_wm_class*(c: ptr xcb_connection_t; window: xcb_window_t;
#                             class_len: uint32; class_name: cstring): xcb_void_cookie_t
# type
#   xcb_icccm_get_wm_class_reply_t* {.bycopy.} = object
#     instance_name*: cstring    ## * Instance name
#     ## * Class of application
#     class_name*: cstring ## * Store reply to avoid memory allocation, should normally not be
#                        ##     used directly
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Deliver a GetProperty request to the X server for WM_CLASS.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_class*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_class()
# ##

# proc xcb_icccm_get_wm_class_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill give structure with the WM_CLASS property of a window.
# ##  @param prop The property structure to fill.
# ##  @param reply The property request reply.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_class_from_reply*(prop: ptr xcb_icccm_get_wm_class_reply_t;
#                                        reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Fill given structure with the WM_CLASS property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param prop WM_CLASS property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_class_unchecked() is used.  Otherwise, it stores the
# ##  error if any. prop structure members should be freed by
# ##  xcb_icccm_get_wm_class_reply_wipe().
# ##

# proc xcb_icccm_get_wm_class_reply*(c: ptr xcb_connection_t;
#                                   cookie: xcb_get_property_cookie_t;
#                                   prop: ptr xcb_icccm_get_wm_class_reply_t;
#                                   e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe prop structure members previously allocated by
# ##         xcb_icccm_get_wm_class_reply().
# ##  @param prop prop structure whose members is going to be freed.
# ##

# proc xcb_icccm_get_wm_class_reply_wipe*(prop: ptr xcb_icccm_get_wm_class_reply_t)
# ##  WM_TRANSIENT_FOR
# ## *
# ##  @brief Deliver a SetProperty request to set WM_TRANSIENT_FOR property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param transient_for_window The WM_TRANSIENT_FOR window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_set_wm_transient_for_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; transient_for_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_transient_for
# ##

# proc xcb_icccm_set_wm_transient_for*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     transient_for_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get WM_TRANSIENT_FOR property of a window.
# ##  @param c The connection to the X server
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_transient_for*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_transient_for_unchecked()
# ##

# proc xcb_icccm_get_wm_transient_for_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a window.
# ##  @param prop WM_TRANSIENT_FOR property value.
# ##  @param reply The get property request reply.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_transient_for_from_reply*(prop: ptr xcb_window_t;
#     reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Fill given structure with the WM_TRANSIENT_FOR property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param prop WM_TRANSIENT_FOR property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_transient_for_unchecked() is used.  Otherwise, it stores
# ##  the error if any.
# ##

# proc xcb_icccm_get_wm_transient_for_reply*(c: ptr xcb_connection_t;
#     cookie: xcb_get_property_cookie_t; prop: ptr xcb_window_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_SIZE_HINTS

# type
#   xcb_icccm_size_hints_flags_t* = enum
#     XCB_ICCCM_SIZE_HINT_US_POSITION = 1 shl 0, XCB_ICCCM_SIZE_HINT_US_SIZE = 1 shl 1,
#     XCB_ICCCM_SIZE_HINT_P_POSITION = 1 shl 2, XCB_ICCCM_SIZE_HINT_P_SIZE = 1 shl 3,
#     XCB_ICCCM_SIZE_HINT_P_MIN_SIZE = 1 shl 4,
#     XCB_ICCCM_SIZE_HINT_P_MAX_SIZE = 1 shl 5,
#     XCB_ICCCM_SIZE_HINT_P_RESIZE_INC = 1 shl 6,
#     XCB_ICCCM_SIZE_HINT_P_ASPECT = 1 shl 7, XCB_ICCCM_SIZE_HINT_BASE_SIZE = 1 shl 8,
#     XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY = 1 shl 9


# ## *
# ##  @brief Size hints structure.
# ##

# type
#   xcb_size_hints_t* {.bycopy.} = object
#     flags*: uint32           ## * User specified flags
#     ## * User-specified position
#     x*: int32
#     y*: int32                ## * User-specified size
#     width*: int32
#     height*: int32           ## * Program-specified minimum size
#     min_width*: int32
#     min_height*: int32       ## * Program-specified maximum size
#     max_width*: int32
#     max_height*: int32       ## * Program-specified resize increments
#     width_inc*: int32
#     height_inc*: int32       ## * Program-specified minimum aspect ratios
#     min_aspect_num*: int32
#     min_aspect_den*: int32   ## * Program-specified maximum aspect ratios
#     max_aspect_num*: int32
#     max_aspect_den*: int32   ## * Program-specified base size
#     base_width*: int32
#     base_height*: int32      ## * Program-specified window gravity
#     win_gravity*: uint32


# ## * Number of elements in this structure

# const
#   XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS* = 18

# ## *
# ##  @brief Set size hints to a given position.
# ##  @param hints SIZE_HINTS structure.
# ##  @param user_specified Is the size user-specified?
# ##  @param x The X position.
# ##  @param y The Y position.
# ##

# proc xcb_icccm_size_hints_set_position*(hints: ptr xcb_size_hints_t;
#                                        user_specified: cint; x: int32; y: int32)
# ## *
# ##  @brief Set size hints to a given size.
# ##  @param hints SIZE_HINTS structure.
# ##  @param user_specified is the size user-specified?
# ##  @param width The width.
# ##  @param height The height.
# ##

# proc xcb_icccm_size_hints_set_size*(hints: ptr xcb_size_hints_t;
#                                    user_specified: cint; width: int32;
#                                    height: int32)
# ## *
# ##  @brief Set size hints to a given minimum size.
# ##  @param hints SIZE_HINTS structure.
# ##  @param width The minimum width.
# ##  @param height The minimum height.
# ##

# proc xcb_icccm_size_hints_set_min_size*(hints: ptr xcb_size_hints_t;
#                                        min_width: int32; min_height: int32)
# ## *
# ##  @brief Set size hints to a given maximum size.
# ##  @param hints SIZE_HINTS structure.
# ##  @param width The maximum width.
# ##  @param height The maximum height.
# ##

# proc xcb_icccm_size_hints_set_max_size*(hints: ptr xcb_size_hints_t;
#                                        max_width: int32; max_height: int32)
# ## *
# ##  @brief Set size hints to a given resize increments.
# ##  @param hints SIZE_HINTS structure.
# ##  @param width The resize increments width.
# ##  @param height The resize increments height.
# ##

# proc xcb_icccm_size_hints_set_resize_inc*(hints: ptr xcb_size_hints_t;
#     width_inc: int32; height_inc: int32)
# ## *
# ##  @brief Set size hints to a given aspect ratios.
# ##  @param hints SIZE_HINTS structure.
# ##  @param min_aspect_num The minimum aspect ratios for the width.
# ##  @param min_aspect_den The minimum aspect ratios for the height.
# ##  @param max_aspect_num The maximum aspect ratios for the width.
# ##  @param max_aspect_den The maximum aspect ratios for the height.
# ##

# proc xcb_icccm_size_hints_set_aspect*(hints: ptr xcb_size_hints_t;
#                                      min_aspect_num: int32;
#                                      min_aspect_den: int32;
#                                      max_aspect_num: int32;
#                                      max_aspect_den: int32)
# ## *
# ##  @brief Set size hints to a given base size.
# ##  @param hints SIZE_HINTS structure.
# ##  @param base_width Base width.
# ##  @param base_height Base height.
# ##

# proc xcb_icccm_size_hints_set_base_size*(hints: ptr xcb_size_hints_t;
#                                         base_width: int32; base_height: int32)
# ## *
# ##  @brief Set size hints to a given window gravity.
# ##  @param hints SIZE_HINTS structure.
# ##  @param win_gravity Window gravity value.
# ##

# proc xcb_icccm_size_hints_set_win_gravity*(hints: ptr xcb_size_hints_t;
#     win_gravity: xcb_gravity_t)
# ## *
# ##  @brief Deliver a ChangeProperty request to set a value to a given property.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param property Property to set value for.
# ##  @param hints Hints value to set.
# ##

# proc xcb_icccm_set_wm_size_hints_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_size_hints_checked()
# ##

# proc xcb_icccm_set_wm_size_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                  property: xcb_atom_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get size hints structure for the named property.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param property Specify the property name.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_size_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                  property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_size_hints()
# ##

# proc xcb_icccm_get_wm_size_hints_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the size hints of the named property.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param hints Size hints structure.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_size_hints_unchecked() is used.  Otherwise, it stores
# ##  the error if any. The returned pointer should be freed.
# ##

# proc xcb_icccm_get_wm_size_hints_reply*(c: ptr xcb_connection_t;
#                                        cookie: xcb_get_property_cookie_t;
#                                        hints: ptr xcb_size_hints_t;
#                                        e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_NORMAL_HINTS
# ## *
# ##  @brief Deliver a ChangeProperty request to set WM_NORMAL_HINTS property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param hints Hints value to set.
# ##

# proc xcb_icccm_set_wm_normal_hints_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_normal_hints_checked()
# ##

# proc xcb_icccm_set_wm_normal_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                    hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get WM_NORMAL_HINTS property of a window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_normal_hints*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_normal_hints()
# ##

# proc xcb_icccm_get_wm_normal_hints_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
# ##  @param hints WM_NORMAL_HINTS property value.
# ##  @param reply The get property request reply.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_size_hints_from_reply*(hints: ptr xcb_size_hints_t;
#     reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param hints WM_NORMAL_HINTS property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_normal_hints_unchecked() is used.  Otherwise, it stores
# ##  the error if any. The returned pointer should be freed.
# ##

# proc xcb_icccm_get_wm_normal_hints_reply*(c: ptr xcb_connection_t;
#     cookie: xcb_get_property_cookie_t; hints: ptr xcb_size_hints_t;
#     e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_HINTS
# ## *
# ##  @brief WM hints structure (may be extended in the future).
# ##

# type
#   xcb_icccm_wm_hints_t* {.bycopy.} = object
#     flags*: int32            ## * Marks which fields in this structure are defined
#     ## * Does this application rely on the window manager to get keyboard
#     ##     input?
#     input*: uint32           ## * See below
#     initial_state*: int32    ## * Pixmap to be used as icon
#     icon_pixmap*: xcb_pixmap_t ## * Window to be used as icon
#     icon_window*: xcb_window_t ## * Initial position of icon
#     icon_x*: int32
#     icon_y*: int32           ## * Icon mask bitmap
#     icon_mask*: xcb_pixmap_t   ##  Identifier of related window group
#     window_group*: xcb_window_t


# ## * Number of elements in this structure

# const
#   XCB_ICCCM_NUM_WM_HINTS_ELEMENTS* = 9

# ## *
# ##  @brief WM_HINTS window states.
# ##

# type
#   xcb_icccm_wm_state_t* = enum
#     XCB_ICCCM_WM_STATE_WITHDRAWN = 0, XCB_ICCCM_WM_STATE_NORMAL = 1,
#     XCB_ICCCM_WM_STATE_ICONIC = 3
#   xcb_icccm_wm_t* = enum
#     XCB_ICCCM_WM_HINT_INPUT = (1 shl 0), XCB_ICCCM_WM_HINT_STATE = (1 shl 1),
#     XCB_ICCCM_WM_HINT_ICON_PIXMAP = (1 shl 2),
#     XCB_ICCCM_WM_HINT_ICON_WINDOW = (1 shl 3),
#     XCB_ICCCM_WM_HINT_ICON_POSITION = (1 shl 4),
#     XCB_ICCCM_WM_HINT_ICON_MASK = (1 shl 5),
#     XCB_ICCCM_WM_HINT_WINDOW_GROUP = (1 shl 6),
#     XCB_ICCCM_WM_HINT_X_URGENCY = (1 shl 8)



# const
#   XCB_ICCCM_WM_ALL_HINTS* = (XCB_ICCCM_WM_HINT_INPUT or XCB_ICCCM_WM_HINT_STATE or
#       XCB_ICCCM_WM_HINT_ICON_PIXMAP or XCB_ICCCM_WM_HINT_ICON_WINDOW or
#       XCB_ICCCM_WM_HINT_ICON_POSITION or XCB_ICCCM_WM_HINT_ICON_MASK or
#       XCB_ICCCM_WM_HINT_WINDOW_GROUP)

# ## *
# ##  @brief Get urgency hint.
# ##  @param hints WM_HINTS structure.
# ##  @return Urgency hint value.
# ##

# proc xcb_icccm_wm_hints_get_urgency*(hints: ptr xcb_icccm_wm_hints_t): uint32
# ## *
# ##  @brief Set input focus.
# ##  @param hints WM_HINTS structure.
# ##  @param input Input focus.
# ##

# proc xcb_icccm_wm_hints_set_input*(hints: ptr xcb_icccm_wm_hints_t; input: uint8)
# ## *
# ##  @brief Set hints state to 'iconic'.
# ##  @param hints WM_HINTS structure.
# ##

# proc xcb_icccm_wm_hints_set_iconic*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ##  @brief Set hints state to 'normal'.
# ##  @param hints WM_HINTS structure.
# ##

# proc xcb_icccm_wm_hints_set_normal*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ##  @brief Set hints state to 'withdrawn'.
# ##  @param hints WM_HINTS structure.
# ##

# proc xcb_icccm_wm_hints_set_withdrawn*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ##  @brief Set hints state to none.
# ##  @param hints WM_HINTS structure.
# ##

# proc xcb_icccm_wm_hints_set_none*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ##  @brief Set pixmap to be used as icon.
# ##  @param hints WM_HINTS structure.
# ##  @param icon_pixmap Pixmap.
# ##

# proc xcb_icccm_wm_hints_set_icon_pixmap*(hints: ptr xcb_icccm_wm_hints_t;
#                                         icon_pixmap: xcb_pixmap_t)
# ## *
# ##  @brief Set icon mask bitmap.
# ##  @param hints WM_HINTS structure.
# ##  @param icon_mask Pixmap.
# ##

# proc xcb_icccm_wm_hints_set_icon_mask*(hints: ptr xcb_icccm_wm_hints_t;
#                                       icon_mask: xcb_pixmap_t)
# ## *
# ##  @brief Set window identifier to be used as icon.
# ##  @param hints WM_HINTS structure.
# ##  @param icon_window Window X identifier.
# ##

# proc xcb_icccm_wm_hints_set_icon_window*(hints: ptr xcb_icccm_wm_hints_t;
#                                         icon_window: xcb_window_t)
# ## *
# ##  @brief Set identifier of related window group.
# ##  @param hints WM_HINTS structure.
# ##  @param window_group Window X identifier.
# ##

# proc xcb_icccm_wm_hints_set_window_group*(hints: ptr xcb_icccm_wm_hints_t;
#     window_group: xcb_window_t)
# ## *
# ##  @brief Set urgency hints flag.
# ##  @param hints WM_HINTS structure.
# ##

# proc xcb_icccm_wm_hints_set_urgency*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ##  @brief Deliver a SetProperty request to set WM_HINTS property value.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @param hints Hints value to set.
# ##

# proc xcb_icccm_set_wm_hints_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     hints: ptr xcb_icccm_wm_hints_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_hints_checked()
# ##

# proc xcb_icccm_set_wm_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
#                             hints: ptr xcb_icccm_wm_hints_t): xcb_void_cookie_t
# ## *
# ##  @brief Send request to get WM_HINTS property of a window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_hints*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_hints()
# ##

# proc xcb_icccm_get_wm_hints_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill given structure with the WM_HINTS property of a window.
# ##  @param hints WM_HINTS property value.
# ##  @param reply The get property request reply.
# ##  @return Return 1 on success, 0 otherwise.
# ##

# proc xcb_icccm_get_wm_hints_from_reply*(hints: ptr xcb_icccm_wm_hints_t;
#                                        reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ##  @brief Fill given structure with the WM_HINTS property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param hints WM_HINTS property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_hints_unchecked() is used.  Otherwise, it stores the
# ##  error if any. The returned pointer should be freed.
# ##

# proc xcb_icccm_get_wm_hints_reply*(c: ptr xcb_connection_t;
#                                   cookie: xcb_get_property_cookie_t;
#                                   hints: ptr xcb_icccm_wm_hints_t;
#                                   e: ptr ptr xcb_generic_error_t): uint8
# ##  WM_PROTOCOLS
# ## *
# ##  @brief Deliver a SetProperty request to set WM_PROTOCOLS property value.
# ##  @param c The connection to the X server.
# ##  @param wm_protocols The WM_PROTOCOLS atom.
# ##  @param window Window X identifier.
# ##  @param list_len Atom list len.
# ##  @param list Atom list.
# ##

# proc xcb_icccm_set_wm_protocols_checked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t;
#                                         wm_protocols: xcb_atom_t;
#                                         list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##  @see xcb_icccm_set_wm_protocols_checked()
# ##

# proc xcb_icccm_set_wm_protocols*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 wm_protocols: xcb_atom_t; list_len: uint32;
#                                 list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##  @brief WM_PROTOCOLS structure.
# ##

# type
#   xcb_icccm_get_wm_protocols_reply_t* {.bycopy.} = object
#     atoms_len*: uint32       ## * Length of the atoms list
#     ## * Atoms list
#     atoms*: ptr xcb_atom_t ## * Store reply to avoid memory allocation, should normally not be
#                         ##       used directly
#     _reply*: ptr xcb_get_property_reply_t


# ## *
# ##  @brief Send request to get WM_PROTOCOLS property of a given window.
# ##  @param c The connection to the X server.
# ##  @param window Window X identifier.
# ##  @return The request cookie.
# ##

# proc xcb_icccm_get_wm_protocols*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 wm_protocol_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @see xcb_icccm_get_wm_protocols()
# ##

# proc xcb_icccm_get_wm_protocols_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; wm_protocol_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ##  @brief Fill the given structure with the WM_PROTOCOLS property of a window.
# ##  @param reply The reply of the GetProperty request.
# ##  @param protocols WM_PROTOCOLS property value.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  protocols structure members should be freed by
# ##  xcb_icccm_get_wm_protocols_reply_wipe().
# ##

# proc xcb_icccm_get_wm_protocols_from_reply*(reply: ptr xcb_get_property_reply_t;
#     protocols: ptr xcb_icccm_get_wm_protocols_reply_t): uint8
# ## *
# ##  @brief Fill the given structure with the WM_PROTOCOLS property of a window.
# ##  @param c The connection to the X server.
# ##  @param cookie Request cookie.
# ##  @param protocols WM_PROTOCOLS property value.
# ##  @param e Error if any.
# ##  @return Return 1 on success, 0 otherwise.
# ##
# ##  The parameter e supplied to this function must be NULL if
# ##  xcb_icccm_get_wm_protocols_unchecked() is used.  Otherwise, it stores the
# ##  error if any. protocols structure members should be freed by
# ##  xcb_icccm_get_wm_protocols_reply_wipe().
# ##

# proc xcb_icccm_get_wm_protocols_reply*(c: ptr xcb_connection_t;
#                                       cookie: xcb_get_property_cookie_t; protocols: ptr xcb_icccm_get_wm_protocols_reply_t;
#                                       e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ##  @brief Wipe protocols structure members previously allocated by
# ##         xcb_icccm_get_wm_protocols_reply().
# ##  @param protocols protocols structure whose members is going to be freed.
# ##

# proc xcb_icccm_get_wm_protocols_reply_wipe*(
#     protocols: ptr xcb_icccm_get_wm_protocols_reply_t)
# ## *
# ##  @}
# ##

# ##  Copyright (C) 2007 Bart Massey
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# ## *
# ##  @defgroup xcb__image_t XCB Image Functions
# ##
# ##  These are functions used to create and manipulate X images.
# ##
# ##  The X image format we use is specific to this software,
# ##  which is probably a bug; it represents an intermediate
# ##  position between the wire format used by the X GetImage
# ##  and PutImage requests and standard formats like PBM.  An
# ##  image consists of a header of type @ref xcb_image_t
# ##  describing the properties of the image, together with a
# ##  pointer to the image data itself.
# ##
# ##  X wire images come in three formats.  An xy-bitmap is a
# ##  bit-packed format that will be expanded to a two-color
# ##  pixmap using a GC when sent over the wire by PutImage.
# ##  An xy-pixmap is one or more bit-planes, each in the same
# ##  format as xy-bitmap.  A z-pixmap is a more conventional
# ##  pixmap representation, with each pixel packed into a
# ##  word.  Pixmaps are sent and received over the wire only
# ##  to/from drawables of their depth.
# ##
# ##  Each X server defines, for each depth and format,
# ##  properties of images in that format that are sent and
# ##  received on the wire.  We refer to this as a "native"
# ##  image for a given X server.  It is not uncommon to want
# ##  to work with non-native images on the client side, or to
# ##  convert between the native images of different servers.
# ##
# ##  This library provides several things.  Facilities for
# ##  creating and destroying images are, of course, provided.
# ##  Wrappers for xcb_get_image() and xcb_put_image() are
# ##  provided; these utilize the image header to simplify the
# ##  interface.  Routines for getting and putting image pixels
# ##  are provided: both a generic form that works with
# ##  arbitrary images, and fastpath forms for some common
# ##  cases.  Conversion routines are provided for X images;
# ##  these routines have been fairly well optimized for the
# ##  common cases, and should run fast even on older hardware.
# ##  A routine analogous to Xlib's XCreate*FromBitmapData() is
# ##  provided for creating X images from xbm-format data; this
# ##  routine is in this library only because it is a trivial
# ##  use case for the library.
# ##
# ##  @{
# ##


# ## *
# ##  @struct xcb_image_t
# ##  A structure that describes an xcb_image_t.
# ##

# type
#   xcb_image_t* {.bycopy.} = object
#     width*: uint16           ## *< Width in pixels, excluding pads etc.
#     height*: uint16          ## *< Height in pixels.
#     format*: xcb_image_format_t ## *< Format.
#     scanline_pad*: uint8     ## *< Right pad in bits.  Valid pads
#                          ##    are 8, 16, 32.
#                          ##
#     depth*: uint8            ## *< Depth in bits. Valid depths
#                   ##    are 1, 4, 8, 16, 24 for z format,
#                   ##    1 for xy-bitmap-format, anything
#                   ##    for xy-pixmap-format.
#                   ##
#     bpp*: uint8              ## *< Storage per pixel in bits.
#                 ##    Must be >= depth. Valid bpp
#                 ##    are 1, 4, 8, 16, 24, 32 for z
#                 ##    format, 1 for xy-bitmap format,
#                 ##    anything for xy-pixmap-format.
#                 ##
#     unit*: uint8             ## *< Scanline unit in bits for
#                  ##    xy formats and for bpp == 1,
#                  ##    in which case valid scanline
#                  ##    units are 8, 16, 32.  Otherwise,
#                  ##    will be max(8, bpp).  Must be >= bpp.
#                  ##
#     plane_mask*: uint32      ## *< When format is
#                         ##    xy-pixmap and depth >
#                         ##    1, this says which
#                         ##    planes are "valid" in
#                         ##    some vague sense.
#                         ##    Currently used only
#                         ##    by xcb_image_get/put_pixel(),
#                         ##    and set only by
#                         ##    xcb_image_get().
#                         ##
#     byte_order*: xcb_image_order_t ## *< Component byte order
#                                  ##    for z-pixmap, byte
#                                  ##    order of scanline unit
#                                  ##    for xy-bitmap and
#                                  ##    xy-pixmap.  Nybble
#                                  ##    order for z-pixmap
#                                  ##    when bpp == 4.
#                                  ##
#     bit_order*: xcb_image_order_t ## *< Bit order of
#                                 ##    scanline unit for
#                                 ##    xy-bitmap and
#                                 ##    xy-pixmap.
#                                 ##
#     stride*: uint32          ## *< Bytes per image row.
#                     ##    Computable from other
#                     ##    data, but cached for
#                     ##    convenience/performance.
#                     ##
#     size*: uint32            ## *< Size of image data in bytes.
#                   ##    Computable from other
#                   ##    data, but cached for
#                   ##    convenience/performance.
#                   ##
#     base*: pointer             ## *< Malloced block of storage that
#                  ##    will be freed by
#                  ##    @ref xcb_image_destroy() if non-null.
#                  ##
#     data*: ptr uint8          ## *< The actual image.


# ## *
# ##  @struct xcb_shm_segment_info_t
# ##  A structure that stores the informations needed by the MIT Shm
# ##  Extension.
# ##

# type
#   xcb_shm_segment_info_t* {.bycopy.} = object
#     shmseg*: xcb_shm_seg_t
#     shmid*: uint32
#     shmaddr*: ptr uint8


# ## *
# ##  Update the cached data of an image.
# ##  @param image The image.
# ##
# ##  An image's size and stride, among other things, are
# ##  cached in its structure.  This function recomputes those
# ##  cached values for the given image.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_annotate*(image: ptr xcb_image_t)
# ## *
# ##  Create a new image.
# ##  @param width The width of the image, in pixels.
# ##  @param height The height of the image, in pixels.
# ##  @param format The format of the image.
# ##  @param xpad The scanline pad of the image.
# ##  @param depth The depth of the image.
# ##  @param bpp The depth of the image storage.
# ##  @param unit The unit of image representation, in bits.
# ##  @param byte_order The byte order of the image.
# ##  @param bit_order The bit order of the image.
# ##  @param base The base address of malloced image data.
# ##  @param bytes The size in bytes of the storage pointed to by base.
# ##               If base == 0 and bytes == ~0 and data == 0 on
# ##               entry, no storage will be auto-allocated.
# ##  @param data The image data.  If data is null and bytes != ~0, then
# ##              an attempt will be made to fill in data; from
# ##              base if it is non-null (and bytes is large enough), else
# ##              by mallocing sufficient storage and filling in base.
# ##  @return The new image.
# ##
# ##  This function allocates the memory needed for an @ref xcb_image_t structure
# ##  with the given properties.  See the description of xcb_image_t for details.
# ##  This function initializes and returns a pointer to the
# ##  xcb_image_t structure.  It may try to allocate or reserve data for the
# ##  structure, depending on how @p base, @p bytes and @p data are set.
# ##
# ##  The image must be destroyed with xcb_image_destroy().
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_create*(width: uint16; height: uint16; format: xcb_image_format_t;
#                       xpad: uint8; depth: uint8; bpp: uint8; unit: uint8;
#                       byte_order: xcb_image_order_t; bit_order: xcb_image_order_t;
#                       base: pointer; bytes: uint32; data: ptr uint8): ptr xcb_image_t
# ## *
# ##  Create a new image in connection-native format.
# ##  @param c The connection.
# ##  @param width The width of the image, in pixels.
# ##  @param height The height of the image, in pixels.
# ##  @param format The format of the image.
# ##  @param depth The depth of the image.
# ##  @param base The base address of malloced image data.
# ##  @param bytes The size in bytes of the storage pointed to by base.
# ##               If base == 0 and bytes == ~0 and data == 0 on
# ##               entry, no storage will be auto-allocated.
# ##  @param data The image data.  If data is null and bytes != ~0, then
# ##              an attempt will be made to fill in data; from
# ##              base if it is non-null (and bytes is large enough), else
# ##              by mallocing sufficient storage and filling in base.
# ##  @return The new image.
# ##
# ##  This function calls @ref xcb_image_create() with the given
# ##  properties, and with the remaining properties chosen
# ##  according to the "native format" with the given
# ##  properties on the current connection.
# ##
# ##  It is usual to use this rather
# ##  than calling xcb_image_create() directly.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_create_native*(c: ptr xcb_connection_t; width: uint16;
#                              height: uint16; format: xcb_image_format_t;
#                              depth: uint8; base: pointer; bytes: uint32;
#                              data: ptr uint8): ptr xcb_image_t
# ## *
# ##  Destroy an image.
# ##  @param image The image to be destroyed.
# ##
# ##  This function frees the memory associated with the @p image
# ##  parameter.  If its base pointer is non-null, it frees
# ##  that also.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_destroy*(image: ptr xcb_image_t)
# ## *
# ##  Get an image from the X server.
# ##  @param conn The connection to the X server.
# ##  @param draw The drawable to get the image from.
# ##  @param x The x coordinate in pixels, relative to the origin of the
# ##  drawable and defining the upper-left corner of the rectangle.
# ##  @param y The y coordinate in pixels, relative to the origin of the
# ##  drawable and defining the upper-left corner of the rectangle.
# ##  @param width The width of the subimage in pixels.
# ##  @param height The height of the subimage in pixels.
# ##  @param plane_mask The plane mask.  See the protocol document for details.
# ##  @param format The format of the image.
# ##  @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
# ##
# ##
# ##  This function returns a new image taken from the
# ##  given drawable @p draw.
# ##  The image will be in connection native format. If the @p format
# ##  is xy-bitmap and the @p plane_mask masks bit planes out, those
# ##  bit planes will be made part of the returned image anyway,
# ##  by zero-filling them; this will require a fresh memory allocation
# ##  and some copying.  Otherwise, the resulting image will use the
# ##  xcb_get_image_reply() record as its backing store.
# ##
# ##  If a problem occurs, the function returns null.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_get*(conn: ptr xcb_connection_t; draw: xcb_drawable_t; x: int16;
#                    y: int16; width: uint16; height: uint16;
#                    plane_mask: uint32; format: xcb_image_format_t): ptr xcb_image_t
# ## *
# ##  Put an image onto the X server.
# ##  @param conn The connection to the X server.
# ##  @param draw The draw you get the image from.
# ##  @param gc The graphic context.
# ##  @param image The image you want to combine with the rectangle.
# ##  @param x The x coordinate, which is relative to the origin of the
# ##  drawable and defines the x coordinate of the upper-left corner of the
# ##  rectangle.
# ##  @param y The y coordinate, which is relative to the origin of the
# ##  drawable and defines the x coordinate of the upper-left corner of
# ##  the rectangle.
# ##  @param left_pad Notionally shift an xy-bitmap or xy-pixmap image
# ##  to the right some small amount, for some reason.  XXX Not clear
# ##  this is currently supported correctly.
# ##  @return The cookie returned by xcb_put_image().
# ##
# ##  This function combines an image with a rectangle of the
# ##  specified drawable @p draw. The image must be in native
# ##  format for the connection.  The image is drawn at the
# ##  specified location in the drawable. For the xy-bitmap
# ##  format, the foreground pixel in @p gc defines the source
# ##  for the one bits in the image, and the background pixel
# ##  defines the source for the zero bits. For xy-pixmap and
# ##  z-pixmap formats, the depth of the image must match the
# ##  depth of the drawable; the gc is ignored.
# ##
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_put*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
#                    gc: xcb_gcontext_t; image: ptr xcb_image_t; x: int16; y: int16;
#                    left_pad: uint8): xcb_void_cookie_t
# ## *
# ##  Check image for or convert image to native format.
# ##  @param c The connection to the X server.
# ##  @param image The image.
# ##  @param convert  If 0, just check the image for native format.
# ##  Otherwise, actually convert it.
# ##  @return Null if the image is not in native format and can or will not
# ##  be converted.  Otherwise, the native format image.
# ##
# ##  Each X display has its own "native format" for images of a given
# ##  format and depth.  This function either checks whether the given
# ##  @p image is in native format for the given connection @p c, or
# ##  actually tries to convert the image to native format, depending
# ##  on whether @p convert is true or false.
# ##
# ##  When @p convert is true, and the image is not in native format
# ##  but can be converted, it will be, and a pointer to the new image
# ##  will be returned.  The image passed in will be unharmed in this
# ##  case; it is the caller's responsibility to check that the returned
# ##  pointer is different and to dispose of the old image if desired.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_native*(c: ptr xcb_connection_t; image: ptr xcb_image_t; convert: cint): ptr xcb_image_t
# ## *
# ##  Put a pixel to an image.
# ##  @param image The image.
# ##  @param x The x coordinate of the pixel.
# ##  @param y The y coordinate of the pixel.
# ##  @param pixel The new pixel value.
# ##
# ##  This function overwrites the pixel in the given @p image with the
# ##  specified @p pixel value (in client format). The image must contain the @p x
# ##  and @p y coordinates, as no clipping is done.  This function honors
# ##  the plane-mask for xy-pixmap images.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_put_pixel*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                          pixel: uint32)
# ## *
# ##  Get a pixel from an image.
# ##  @param image The image.
# ##  @param x The x coordinate of the pixel.
# ##  @param y The y coordinate of the pixel.
# ##  @return The pixel value.
# ##
# ##  This function retrieves a pixel from the given @p image.
# ##  The image must contain the @p x
# ##  and @p y coordinates, as no clipping is done.  This function honors
# ##  the plane-mask for xy-pixmap images.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_get_pixel*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32
# ## *
# ##  Convert an image to a new format.
# ##  @param src Source image.
# ##  @param dst Destination image.
# ##  @return The @p dst image, or null on error.
# ##
# ##  This function tries to convert the image data of the @p
# ##  src image to the format implied by the @p dst image,
# ##  overwriting the current destination image data.
# ##  The source and destination must have the same
# ##  width, height, and depth.  When the source and destination
# ##  are already the same format, a simple copy is done.  Otherwise,
# ##  when the destination has the same bits-per-pixel/scanline-unit
# ##  as the source, an optimized copy routine (thanks to Keith Packard)
# ##  is used for the conversion.  Otherwise, the copy is done the
# ##  slow, slow way with @ref xcb_image_get_pixel() and
# ##  @ref xcb_image_put_pixel() calls.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_convert*(src: ptr xcb_image_t; dst: ptr xcb_image_t): ptr xcb_image_t
# ## *
# ##  Extract a subimage of an image.
# ##  @param image Source image.
# ##  @param x X coordinate of subimage.
# ##  @param y Y coordinate of subimage.
# ##  @param width Width of subimage.
# ##  @param height Height of subimage.
# ##  @param base Base of memory allocation.
# ##  @param bytes Size of base allocation.
# ##  @param data Memory allocation.
# ##  @return The subimage, or null on error.
# ##
# ##  Given an image, this function extracts the subimage at the
# ##  given coordinates.  The requested subimage must be entirely
# ##  contained in the source @p image.  The resulting image will have the same
# ##  general image parameters as the source image.  The @p base, @p bytes,
# ##  and @p data arguments are passed to @ref xcb_create_image() unaltered
# ##  to create the destination image---see its documentation for details.
# ##
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_subimage*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                         width: uint32; height: uint32; base: pointer;
#                         bytes: uint32; data: ptr uint8): ptr xcb_image_t
# ##
# ##  Shm stuff
# ##
# ## *
# ##  Put the data of an xcb_image_t onto a drawable using the MIT Shm
# ##  Extension.
# ##  @param conn The connection to the X server.
# ##  @param draw The draw you get the image from.
# ##  @param gc The graphic context.
# ##  @param image The image you want to combine with the rectangle.
# ##  @param shminfo A @ref xcb_shm_segment_info_t structure.
# ##  @param src_x The offset in x from the left edge of the image
# ##  defined by the xcb_image_t structure.
# ##  @param src_y The offset in y from the left edge of the image
# ##  defined by the xcb_image_t structure.
# ##  @param dest_x The x coordinate, which is relative to the origin of the
# ##  drawable and defines the x coordinate of the upper-left corner of the
# ##  rectangle.
# ##  @param dest_y The y coordinate, which is relative to the origin of the
# ##  drawable and defines the x coordinate of the upper-left corner of
# ##  the rectangle.
# ##  @param src_width The width of the subimage, in pixels.
# ##  @param src_height The height of the subimage, in pixels.
# ##  @param send_event Indicates whether or not a completion event
# ##  should occur when the image write is complete.
# ##  @return a pointer to the source image if no problem occurs, otherwise 0.
# ##
# ##  This function combines an image in memory with a shape of the
# ##  specified drawable. The section of the image defined by the @p x, @p y,
# ##  @p width, and @p height arguments is drawn on the specified part of
# ##  the drawable. If XYBitmap format is used, the depth must be
# ##  one, or a``BadMatch'' error results. The foreground pixel in the
# ##  Graphic Context @p gc defines the source for the one bits in the
# ##  image, and the background pixel defines the source for the zero
# ##  bits. For XYPixmap and ZPixmap, the depth must match the depth of
# ##  the drawable, or a ``BadMatch'' error results.
# ##
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_shm_put*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
#                        gc: xcb_gcontext_t; image: ptr xcb_image_t;
#                        shminfo: xcb_shm_segment_info_t; src_x: int16;
#                        src_y: int16; dest_x: int16; dest_y: int16;
#                        src_width: uint16; src_height: uint16;
#                        send_event: uint8): ptr xcb_image_t
# ## *
# ##  Read image data into a shared memory xcb_image_t.
# ##  @param conn The connection to the X server.
# ##  @param draw The draw you get the image from.
# ##  @param image The image you want to combine with the rectangle.
# ##  @param shminfo A @ref xcb_shm_segment_info_t structure.
# ##  @param x The x coordinate, which are relative to the origin of the
# ##  drawable and define the upper-left corner of the rectangle.
# ##  @param y The y coordinate, which are relative to the origin of the
# ##  drawable and define the upper-left corner of the rectangle.
# ##  @param plane_mask The plane mask.
# ##  @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
# ##
# ##  This function reads image data into a shared memory xcb_image_t where
# ##  @p conn is the connection to the X server, @p draw is the source
# ##  drawable, @p image is the destination xcb_image_t, @p x and @p y are offsets
# ##  within the drawable, and @p plane_mask defines which planes are to be
# ##  read.
# ##
# ##  If a problem occurs, the function returns @c 0. It returns 1
# ##  otherwise.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_shm_get*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
#                        image: ptr xcb_image_t; shminfo: xcb_shm_segment_info_t;
#                        x: int16; y: int16; plane_mask: uint32): cint
# ## *
# ##  Create an image from user-supplied bitmap data.
# ##  @param data Image data in packed bitmap format.
# ##  @param width Width in bits of image data.
# ##  @param height Height in bits of image data.
# ##  @return The image constructed from the image data, or 0 on error.
# ##
# ##  This function creates an image from the user-supplied
# ##  bitmap @p data.  The bitmap data is assumed to be in
# ##  xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_create_from_bitmap_data*(data: ptr uint8; width: uint32;
#                                        height: uint32): ptr xcb_image_t
# ## *
# ##  Create a pixmap from user-supplied bitmap data.
# ##  @param display The connection to the X server.
# ##  @param d The parent drawable for the pixmap.
# ##  @param data Image data in packed bitmap format.
# ##  @param width Width in bits of image data.
# ##  @param height Height in bits of image data.
# ##  @param depth Depth of the desired pixmap.
# ##  @param fg Pixel for one-bits of pixmaps with depth larger than one.
# ##  @param bg Pixel for zero-bits of pixmaps with depth larger than one.
# ##  @param gcp If this pointer is non-null, the GC created to
# ##  fill in the pixmap is stored here; it will have its foreground
# ##  and background set to the supplied value.  Otherwise, the GC
# ##  will be freed.
# ##  @return The pixmap constructed from the image data, or 0 on error.
# ##
# ##  This function creates a pixmap from the user-supplied
# ##  bitmap @p data.  The bitmap data is assumed to be in
# ##  xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
# ##  If @p depth is greater than 1, the
# ##  bitmap will be expanded to a pixmap using the given
# ##  foreground and background pixels @p fg and @p bg.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_create_pixmap_from_bitmap_data*(display: ptr xcb_connection_t;
#                                         d: xcb_drawable_t; data: ptr uint8;
#                                         width: uint32; height: uint32;
#                                         depth: uint32; fg: uint32; bg: uint32;
#                                         gcp: ptr xcb_gcontext_t): xcb_pixmap_t
# ## *
# ##  @}
# ##

# type
#   xcb_key_symbols_t* = _XCBKeySymbols

# proc xcb_key_symbols_alloc*(c: ptr xcb_connection_t): ptr xcb_key_symbols_t
# proc xcb_key_symbols_free*(syms: ptr xcb_key_symbols_t)
# proc xcb_key_symbols_get_keysym*(syms: ptr xcb_key_symbols_t;
#                                 keycode: xcb_keycode_t; col: cint): xcb_keysym_t
# ## *
# ##  @brief Get the keycodes attached to a keysyms.
# ##  There can be several value, so what is returned is an array of keycode
# ##  terminated by XCB_NO_SYMBOL. You are responsible to free it.
# ##  Be aware that this function can be slow. It will convert all
# ##  combinations of all available keycodes to keysyms to find the ones that
# ##  match.
# ##  @param syms Key symbols.
# ##  @param keysym The keysym to look for.
# ##  @return A XCB_NO_SYMBOL terminated array of keycode, or NULL if nothing is found.
# ##

# proc xcb_key_symbols_get_keycode*(syms: ptr xcb_key_symbols_t; keysym: xcb_keysym_t): ptr xcb_keycode_t
# proc xcb_key_press_lookup_keysym*(syms: ptr xcb_key_symbols_t;
#                                  event: ptr xcb_key_press_event_t; col: cint): xcb_keysym_t
# proc xcb_key_release_lookup_keysym*(syms: ptr xcb_key_symbols_t;
#                                    event: ptr xcb_key_release_event_t; col: cint): xcb_keysym_t
# proc xcb_refresh_keyboard_mapping*(syms: ptr xcb_key_symbols_t;
#                                   event: ptr xcb_mapping_notify_event_t): cint
# ##  TODO:  need XLookupString equivalent
# ##  Tests for classes of symbols

# proc xcb_is_keypad_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_private_keypad_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_cursor_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_pf_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_function_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_misc_function_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_modifier_key*(keysym: xcb_keysym_t): cint
# ##  Copyright (C) 2007 Bart Massey
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# when not defined(BUILD):
# ## *
# ##  XCB Image fast pixel ops.
# ##
# ##  Fast inline versions of xcb_image_get_pixel() and
# ##  xcb_image_put_pixel() for various common cases.
# ##  The naming convention is xcb_image_put_pixel_FUB()
# ##  where F is the format and is either XY for bitmaps
# ##  or Z for pixmaps, U is the bitmap unit size or pixmap
# ##  bits-per-pixel, and B is the endianness (if needed)
# ##  and is either M for most-significant-first or L for
# ##  least-significant-first.  Note that no checking
# ##  is done on the arguments to these routines---caller beware.
# ##  Also note that the pixel type is chosen to be appropriate
# ##  to the unit; bitmaps use int and pixmaps use the appropriate
# ##  size of unsigned.
# ##  @ingroup xcb__image_t
# ##

# proc xcb_image_put_pixel_XY32M*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                                pixel: cint) =
#   var unit: uint32 = (x shr 3) and not xcb_mask(2)
#   var byte: uint32 = xcb_mask(2) - ((x shr 3) and xcb_mask(2))
#   var bit: uint32 = xcb_mask(3) - (x and xcb_mask(3))
#   var m: uint8 = 1 shl bit
#   var p: uint8 = pixel shl bit
#   var bp: ptr uint8 = image.data + (y * image.stride) + (unit or byte)
#   bp[] = (bp[] and not m) or p

# proc xcb_image_put_pixel_XY32L*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                                pixel: cint) =
#   var bit: uint32 = x and xcb_mask(3)
#   var m: uint8 = 1 shl bit
#   var p: uint8 = pixel shl bit
#   var bp: ptr uint8 = image.data + (y * image.stride) + (x shr 3)
#   bp[] = (bp[] and not m) or p

# proc xcb_image_get_pixel_XY32M*(image: ptr xcb_image_t; x: uint32; y: uint32): cint =
#   var unit: uint32 = (x shr 3) and not xcb_mask(2)
#   var byte: uint32 = xcb_mask(2) - ((x shr 3) and xcb_mask(2))
#   var bit: uint32 = xcb_mask(3) - (x and xcb_mask(3))
#   var bp: ptr uint8 = image.data + (y * image.stride) + (unit or byte)
#   return (bp[] shr bit) and 1

# proc xcb_image_get_pixel_XY32L*(image: ptr xcb_image_t; x: uint32; y: uint32): cint =
#   var bit: uint32 = x and xcb_mask(3)
#   var bp: ptr uint8 = image.data + (y * image.stride) + (x shr 3)
#   return (bp[] shr bit) and 1

# proc xcb_image_put_pixel_Z8*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                             pixel: uint8) =
#   image.data[x + y * image.stride] = pixel

# proc xcb_image_get_pixel_Z8*(image: ptr xcb_image_t; x: uint32; y: uint32): uint8 =
#   return image.data[x + y * image.stride]

# proc xcb_image_put_pixel_Z32M*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                               pixel: uint32) =
#   var row: ptr uint8 = image.data + (y * image.stride)
#   row[x shl 2] = pixel shr 24
#   row[(x shl 2) + 1] = pixel shr 16
#   row[(x shl 2) + 2] = pixel shr 8
#   row[(x shl 2) + 3] = pixel

# proc xcb_image_put_pixel_Z32L*(image: ptr xcb_image_t; x: uint32; y: uint32;
#                               pixel: uint32) =
#   var row: ptr uint8 = image.data + (y * image.stride)
#   row[x shl 2] = pixel
#   row[(x shl 2) + 1] = pixel shr 8
#   row[(x shl 2) + 2] = pixel shr 16
#   row[(x shl 2) + 3] = pixel shr 24

# proc xcb_image_get_pixel_Z32M*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32 =
#   var row: ptr uint8 = image.data + (y * image.stride)
#   var pixel: uint32 = row[x shl 2] shl 24
#   pixel = pixel or row[(x shl 2) + 1] shl 16
#   pixel = pixel or row[(x shl 2) + 2] shl 8
#   return pixel or row[(x shl 2) + 3]

# proc xcb_image_get_pixel_Z32L*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32 =
#   var row: ptr uint8 = image.data + (y * image.stride)
#   var pixel: uint32 = row[x shl 2]
#   pixel = pixel or row[(x shl 2) + 1] shl 8
#   pixel = pixel or row[(x shl 2) + 2] shl 16
#   return pixel or row[(x shl 2) + 3] shl 24

# ##  Copyright © 2006 Jamey Sharp.
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##

# type
#   xcb_pict_format_t* = enum
#     XCB_PICT_FORMAT_ID = (1 shl 0), XCB_PICT_FORMAT_TYPE = (1 shl 1),
#     XCB_PICT_FORMAT_DEPTH = (1 shl 2), XCB_PICT_FORMAT_RED = (1 shl 3),
#     XCB_PICT_FORMAT_RED_MASK = (1 shl 4), XCB_PICT_FORMAT_GREEN = (1 shl 5),
#     XCB_PICT_FORMAT_GREEN_MASK = (1 shl 6), XCB_PICT_FORMAT_BLUE = (1 shl 7),
#     XCB_PICT_FORMAT_BLUE_MASK = (1 shl 8), XCB_PICT_FORMAT_ALPHA = (1 shl 9),
#     XCB_PICT_FORMAT_ALPHA_MASK = (1 shl 10), XCB_PICT_FORMAT_COLORMAP = (1 shl 11)
#   xcb_pict_standard_t* = enum
#     XCB_PICT_STANDARD_ARGB_32, XCB_PICT_STANDARD_RGB_24, XCB_PICT_STANDARD_A_8,
#     XCB_PICT_STANDARD_A_4, XCB_PICT_STANDARD_A_1



# proc xcb_render_util_find_visual_format*(formats: ptr xcb_render_query_pict_formats_reply_t;
#                                         visual: xcb_visualid_t): ptr xcb_render_pictvisual_t
# proc xcb_render_util_find_format*(formats: ptr xcb_render_query_pict_formats_reply_t;
#                                  mask: culong;
#                                  ptemplate: ptr xcb_render_pictforminfo_t;
#                                  count: cint): ptr xcb_render_pictforminfo_t
# proc xcb_render_util_find_standard_format*(
#     formats: ptr xcb_render_query_pict_formats_reply_t; format: xcb_pict_standard_t): ptr xcb_render_pictforminfo_t
# proc xcb_render_util_query_version*(c: ptr xcb_connection_t): ptr xcb_render_query_version_reply_t
# proc xcb_render_util_query_formats*(c: ptr xcb_connection_t): ptr xcb_render_query_pict_formats_reply_t
# proc xcb_render_util_disconnect*(c: ptr xcb_connection_t): cint
# ##  wrappers for xcb_render_composite_glyphs_8/16/32


# proc xcb_render_util_composite_text_stream*(
#     initial_glyphset: xcb_render_glyphset_t; total_glyphs: uint32;
#     total_glyphset_changes: uint32): ptr xcb_render_util_composite_text_stream_t
# proc xcb_render_util_glyphs_8*(stream: ptr xcb_render_util_composite_text_stream_t;
#                               dx: int16; dy: int16; count: uint32;
#                               glyphs: ptr uint8)
# proc xcb_render_util_glyphs_16*(stream: ptr xcb_render_util_composite_text_stream_t;
#                                dx: int16; dy: int16; count: uint32;
#                                glyphs: ptr uint16)
# proc xcb_render_util_glyphs_32*(stream: ptr xcb_render_util_composite_text_stream_t;
#                                dx: int16; dy: int16; count: uint32;
#                                glyphs: ptr uint32)
# proc xcb_render_util_change_glyphset*(stream: ptr xcb_render_util_composite_text_stream_t;
#                                      glyphset: xcb_render_glyphset_t)
# proc xcb_render_util_composite_text*(xc: ptr xcb_connection_t; op: uint8;
#                                     src: xcb_render_picture_t;
#                                     dst: xcb_render_picture_t;
#                                     mask_format: xcb_render_pictformat_t;
#                                     src_x: int16; src_y: int16; stream: ptr xcb_render_util_composite_text_stream_t): xcb_void_cookie_t
# proc xcb_render_util_composite_text_checked*(xc: ptr xcb_connection_t; op: uint8;
#     src: xcb_render_picture_t; dst: xcb_render_picture_t;
#     mask_format: xcb_render_pictformat_t; src_x: int16; src_y: int16;
#     stream: ptr xcb_render_util_composite_text_stream_t): xcb_void_cookie_t
# proc xcb_render_util_composite_text_free*(
#     stream: ptr xcb_render_util_composite_text_stream_t)
# ##
# ##  vim:ts=4:sw=4:expandtab
# ##
# ##  Copyright © 2016 Ingo Bürk
# ##
# ##  Permission is hereby granted, free of charge, to any person obtaining a
# ##  copy of this software and associated documentation files (the "Software"),
# ##  to deal in the Software without restriction, including without limitation
# ##  the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ##  and/or sell copies of the Software, and to permit persons to whom the
# ##  Software is furnished to do so, subject to the following conditions:
# ##
# ##  The above copyright notice and this permission notice shall be included in
# ##  all copies or substantial portions of the Software.
# ##
# ##  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ##  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ##  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ##  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ##  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ##  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ##  Except as contained in this notice, the names of the authors or their
# ##  institutions shall not be used in advertising or otherwise to promote the
# ##  sale, use or other dealings in this Software without prior written
# ##  authorization from the authors.
# ##
# ##

# ## *
# ##  @defgroup xcb_xrm_database_t XCB XRM Functions
# ##
# ##  These functions are the xcb equivalent of the Xrm* function family in Xlib.
# ##  They allow the parsing and matching of X resources as well as some utility
# ##  functions.
# ##
# ##  Here is an example of how this library can be used to retrieve a
# ##  user-configured resource:
# ##  @code
# ##  xcb_connection_t *conn = xcb_connect(NULL, &screennr);
# ##  if (conn == NULL || xcb_connection_has_error(conn))
# ##      err(EXIT_FAILURE, "Could not connect to the X server.");
# ##
# ##  xcb_xrm_database_t *database = xcb_xrm_database_from_default(conn);
# ##  if (database == NULL)
# ##      err(EXIT_FAILURE, "Could not open database");
# ##
# ##  char *value;
# ##  if (xcb_xrm_resource_get_string(database, "Xft.dpi", NULL, &value) >= 0) {
# ##      fprintf(stdout, "Xft.dpi: %s\n", value);
# ##      free(value);
# ##  }
# ##
# ##  xcb_xrm_database_free(database);
# ##  xcb_disconnect(conn);
# ##  @endcode
# ##
# ##  @{
# ##
# ## *
# ##  @struct xcb_xrm_database_t
# ##  Reference to a database.
# ##
# ##  The database can be loaded in different ways, e.g., from the
# ##  RESOURCE_MANAGER property by using @ref
# ##  xcb_xrm_database_from_resource_manager (). All queries for a resource go
# ##  against a specific database. A database must always be free'd by using @ref
# ##  xcb_xrm_database_free ().
# ##
# ##  Note that a database is not thread-safe, i.e., multiple threads should not
# ##  operate on the same database instance. This is especially true for write
# ##  operations on the database. However, you can use this library in a
# ##  multi-threaded application as long as the database is thread-local.
# ##


# ## *
# ##  Creates a database similarly to XGetDefault(). For typical applications,
# ##  this is the recommended way to construct the resource database.
# ##
# ##  The database is created as follows:
# ##    - If the RESOURCE_MANAGER property exists on the root window of
# ##      screen 0, the database is constructed from it using @ref
# ##      xcb_xrm_database_from_resource_manager().
# ##    - Otherwise, if $HOME/.Xresources exists, the database is constructed from
# ##      it using @ref xcb_xrm_database_from_file().
# ##    - Otherwise, if $HOME/.Xdefaults exists, the database is constructed from
# ##      it using @ref xcb_xrm_database_from_file().
# ##    - If the environment variable XENVIRONMENT is set, the file specified by
# ##      it is loaded using @ref xcb_xrm_database_from_file and then combined with
# ##      the database using @ref xcb_xrm_database_combine() with override set to
# ##      true.
# ##      If XENVIRONMENT is not specified, the same is done with
# ##      $HOME/.Xdefaults-$HOSTNAME, wherein $HOSTNAME is determined by
# ##      gethostname(2).
# ##
# ##  This represents the way XGetDefault() creates the database for the most
# ##  part, but is not exactly the same. In particular, XGetDefault() does not
# ##  consider $HOME/.Xresources.
# ##
# ##  @param conn XCB connection.
# ##  @returns The constructed database. Can return NULL, e.g., if the screen
# ##  cannot be determined.
# ##

# proc xcb_xrm_database_from_default*(conn: ptr xcb_connection_t): ptr xcb_xrm_database_t
# ## *
# ##  Loads the RESOURCE_MANAGER property and creates a database with its
# ##  contents. If the database could not be created, this function will return
# ##  NULL.
# ##
# ##  @param conn A working XCB connection.
# ##  @param screen The xcb_screen_t* screen to use.
# ##  @returns The database described by the RESOURCE_MANAGER property.
# ##
# ##  @ingroup xcb_xrm_database_t
# ##

# proc xcb_xrm_database_from_resource_manager*(conn: ptr xcb_connection_t;
#     screen: ptr xcb_screen_t): ptr xcb_xrm_database_t
# ## *
# ##  Creates a database from the given string.
# ##  If the database could not be created, this function will return NULL.
# ##
# ##  @param str The resource string.
# ##  @returns The database described by the resource string.
# ##
# ##  @ingroup xcb_xrm_database_t
# ##

# proc xcb_xrm_database_from_string*(str: cstring): ptr xcb_xrm_database_t
# ## *
# ##  Creates a database from a given file.
# ##  If the file cannot be found or opened, NULL is returned.
# ##
# ##  @param filename Valid filename.
# ##  @returns The database described by the file's contents.
# ##

# proc xcb_xrm_database_from_file*(filename: cstring): ptr xcb_xrm_database_t
# ## *
# ##  Returns a string representation of a database.
# ##  The string is owned by the caller and must be free'd.
# ##
# ##  @param database The database to return in string format.
# ##  @returns A string representation of the specified database.
# ##

# proc xcb_xrm_database_to_string*(database: ptr xcb_xrm_database_t): cstring
# ## *
# ##  Combines two databases.
# ##  The entries from the source database are stored in the target database. If
# ##  the same specifier already exists in the target database, the value will be
# ##  overridden if override is set; otherwise, the value is discarded.
# ##  If NULL is passed for target_db, a new and empty database will be created
# ##  and returned in the pointer.
# ##
# ##  @param source_db Source database.
# ##  @param target_db Target database.
# ##  @param override If true, entries from the source database override entries
# ##  in the target database using the same resource specifier.
# ##

# proc xcb_xrm_database_combine*(source_db: ptr xcb_xrm_database_t;
#                               target_db: ptr ptr xcb_xrm_database_t; override: bool)
# ## *
# ##  Inserts a new resource into the database.
# ##  If the resource already exists, the current value will be replaced.
# ##  If NULL is passed for database, a new and empty database will be created and
# ##  returned in the pointer.
# ##
# ##  Note that this is not the equivalent of @ref
# ##  xcb_xrm_database_put_resource_line when concatenating the resource name and
# ##  value with a colon. For example, if the value starts with a leading space,
# ##  this must (and will) be replaced with the special '\ ' sequence.
# ##
# ##  @param database The database to modify.
# ##  @param resource The fully qualified or partial resource specifier.
# ##  @param value The value of the resource.
# ##

# proc xcb_xrm_database_put_resource*(database: ptr ptr xcb_xrm_database_t;
#                                    resource: cstring; value: cstring)
# ## *
# ##  Inserts a new resource into the database.
# ##  If the resource already exists, the current value will be replaced.
# ##  If NULL is passed for database, a new and empty database will be created and
# ##  returned in the pointer.
# ##
# ##  @param database The database to modify.
# ##  @param line The complete resource specification to insert.
# ##

# proc xcb_xrm_database_put_resource_line*(database: ptr ptr xcb_xrm_database_t;
#                                         line: cstring)
# ## *
# ##  Destroys the given database.
# ##
# ##  @param database The database to destroy.
# ##
# ##  @ingroup xcb_xrm_database_t
# ##

# proc xcb_xrm_database_free*(database: ptr xcb_xrm_database_t)
# ## *
# ##  Find the string value of a resource.
# ##
# ##  Note that the string is owned by the caller and must be free'd.
# ##
# ##  @param database The database to query.
# ##  @param res_name The fully qualified resource name string.
# ##  @param res_class The fully qualified resource class string. This argument
# ##  may be left empty / NULL, but if given, it must contain the same number of
# ##  components as res_name.
# ##  @param out Out parameter to which the value will be written.
# ##  @returns 0 if the resource was found, a negative error code otherwise.
# ##

# proc xcb_xrm_resource_get_string*(database: ptr xcb_xrm_database_t;
#                                  res_name: cstring; res_class: cstring;
#                                  `out`: cstringArray): cint
# ## *
# ##  Find the long value of a resource.
# ##
# ##  @param database The database to query.
# ##  @param res_name The fully qualified resource name string.
# ##  @param res_class The fully qualified resource class string. This argument
# ##  may be left empty / NULL, but if given, it must contain the same number of
# ##  components as res_name.
# ##  @param out Out parameter to which the converted value will be written.
# ##  @returns 0 if the resource was found and converted, -1 if the resource was
# ##  found but could not be converted and -2 if the resource was not found.
# ##

# proc xcb_xrm_resource_get_long*(database: ptr xcb_xrm_database_t; res_name: cstring;
#                                res_class: cstring; `out`: ptr clong): cint
# ## *
# ##  Find the bool value of a resource.
# ##
# ##  The conversion to a bool is done by applying the following steps in order:
# ##    - If the value can be converted to a long, return the truthiness of the
# ##      converted number.
# ##    - If the value is one of "true", "on" or "yes" (case-insensitive), return
# ##      true.
# ##    - If the value is one of "false", "off" or "no" (case-insensitive), return
# ##      false.
# ##
# ##  @param database The database to query.
# ##  @param res_name The fully qualified resource name string.
# ##  @param res_class The fully qualified resource class string. This argument
# ##  may be left empty / NULL, but if given, it must contain the same number of
# ##  components as res_name.
# ##  @param out Out parameter to which the converted value will be written.
# ##  @returns 0 if the resource was found and converted, -1 if the resource was
# ##  found but could not be converted and -2 if the resource was not found.
# ##

# proc xcb_xrm_resource_get_bool*(database: ptr xcb_xrm_database_t; res_name: cstring;
#                                res_class: cstring; `out`: ptr bool): cint
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xc_misc.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_XCMisc_API XCB XCMisc API
# ##  @brief XCMisc XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb

# const
#   XCB_XCMISC_MAJOR_VERSION* = 1
#   XCB_XCMISC_MINOR_VERSION* = 1

# var xcb_xc_misc_id*: xcb_extension_t

# ## *
# ##  @brief xcb_xc_misc_get_version_cookie_t
# ##

# type
#   xcb_xc_misc_get_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xc_misc_get_version.

# const
#   XCB_XC_MISC_GET_VERSION* = 0

# ## *
# ##  @brief xcb_xc_misc_get_version_request_t
# ##

# type
#   xcb_xc_misc_get_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint16
#     client_minor_version*: uint16


# ## *
# ##  @brief xcb_xc_misc_get_version_reply_t
# ##

# type
#   xcb_xc_misc_get_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major_version*: uint16
#     server_minor_version*: uint16


# ## *
# ##  @brief xcb_xc_misc_get_xid_range_cookie_t
# ##

# type
#   xcb_xc_misc_get_xid_range_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xc_misc_get_xid_range.

# const
#   XCB_XC_MISC_GET_XID_RANGE* = 1

# ## *
# ##  @brief xcb_xc_misc_get_xid_range_request_t
# ##

# type
#   xcb_xc_misc_get_xid_range_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xc_misc_get_xid_range_reply_t
# ##

# type
#   xcb_xc_misc_get_xid_range_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     start_id*: uint32
#     count*: uint32


# ## *
# ##  @brief xcb_xc_misc_get_xid_list_cookie_t
# ##

# type
#   xcb_xc_misc_get_xid_list_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xc_misc_get_xid_list.

# const
#   XCB_XC_MISC_GET_XID_LIST* = 2

# ## *
# ##  @brief xcb_xc_misc_get_xid_list_request_t
# ##

# type
#   xcb_xc_misc_get_xid_list_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     count*: uint32


# ## *
# ##  @brief xcb_xc_misc_get_xid_list_reply_t
# ##

# type
#   xcb_xc_misc_get_xid_list_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     ids_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xc_misc_get_version*(c: ptr xcb_connection_t;
#                              client_major_version: uint16;
#                              client_minor_version: uint16): xcb_xc_misc_get_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xc_misc_get_version_unchecked*(c: ptr xcb_connection_t;
#                                        client_major_version: uint16;
#                                        client_minor_version: uint16): xcb_xc_misc_get_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xc_misc_get_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xc_misc_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_version_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xc_misc_get_xid_range*(c: ptr xcb_connection_t): xcb_xc_misc_get_xid_range_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xc_misc_get_xid_range_unchecked*(c: ptr xcb_connection_t): xcb_xc_misc_get_xid_range_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xc_misc_get_xid_range_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xc_misc_get_xid_range_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_xid_range_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_xid_range_reply_t
# proc xcb_xc_misc_get_xid_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xc_misc_get_xid_list*(c: ptr xcb_connection_t; count: uint32): xcb_xc_misc_get_xid_list_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xc_misc_get_xid_list_unchecked*(c: ptr xcb_connection_t; count: uint32): xcb_xc_misc_get_xid_list_cookie_t
# proc xcb_xc_misc_get_xid_list_ids*(R: ptr xcb_xc_misc_get_xid_list_reply_t): ptr uint32
# proc xcb_xc_misc_get_xid_list_ids_length*(R: ptr xcb_xc_misc_get_xid_list_reply_t): cint
# proc xcb_xc_misc_get_xid_list_ids_end*(R: ptr xcb_xc_misc_get_xid_list_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xc_misc_get_xid_list_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xc_misc_get_xid_list_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_xid_list_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_xid_list_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xevie.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Xevie_API XCB Xevie API
# ##  @brief Xevie XCB Protocol Implementation.
# ##  @{
# ##

# const
#   XCB_XEVIE_MAJOR_VERSION* = 1
#   XCB_XEVIE_MINOR_VERSION* = 0

# var xcb_xevie_id*: xcb_extension_t

# ## *
# ##  @brief xcb_xevie_query_version_cookie_t
# ##

# type
#   xcb_xevie_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xevie_query_version.

# const
#   XCB_XEVIE_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_xevie_query_version_request_t
# ##

# type
#   xcb_xevie_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint16
#     client_minor_version*: uint16


# ## *
# ##  @brief xcb_xevie_query_version_reply_t
# ##

# type
#   xcb_xevie_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major_version*: uint16
#     server_minor_version*: uint16
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_xevie_start_cookie_t
# ##

# type
#   xcb_xevie_start_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xevie_start.

# const
#   XCB_XEVIE_START* = 1

# ## *
# ##  @brief xcb_xevie_start_request_t
# ##

# type
#   xcb_xevie_start_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xevie_start_reply_t
# ##

# type
#   xcb_xevie_start_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad1*: array[24, uint8]


# ## *
# ##  @brief xcb_xevie_end_cookie_t
# ##

# type
#   xcb_xevie_end_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xevie_end.

# const
#   XCB_XEVIE_END* = 2

# ## *
# ##  @brief xcb_xevie_end_request_t
# ##

# type
#   xcb_xevie_end_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cmap*: uint32


# ## *
# ##  @brief xcb_xevie_end_reply_t
# ##

# type
#   xcb_xevie_end_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad1*: array[24, uint8]

#   xcb_xevie_datatype_t* = enum
#     XCB_XEVIE_DATATYPE_UNMODIFIED = 0, XCB_XEVIE_DATATYPE_MODIFIED = 1


# ## *
# ##  @brief xcb_xevie_event_t
# ##

# type
#   xcb_xevie_event_t* {.bycopy.} = object
#     pad0*: array[32, uint8]


# ## *
# ##  @brief xcb_xevie_event_iterator_t
# ##

# type
#   xcb_xevie_event_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xevie_event_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xevie_send_cookie_t
# ##

# type
#   xcb_xevie_send_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xevie_send.

# const
#   XCB_XEVIE_SEND* = 3

# ## *
# ##  @brief xcb_xevie_send_request_t
# ##

# type
#   xcb_xevie_send_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     event*: xcb_xevie_event_t
#     data_type*: uint32
#     pad0*: array[64, uint8]


# ## *
# ##  @brief xcb_xevie_send_reply_t
# ##

# type
#   xcb_xevie_send_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad1*: array[24, uint8]


# ## *
# ##  @brief xcb_xevie_select_input_cookie_t
# ##

# type
#   xcb_xevie_select_input_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xevie_select_input.

# const
#   XCB_XEVIE_SELECT_INPUT* = 4

# ## *
# ##  @brief xcb_xevie_select_input_request_t
# ##

# type
#   xcb_xevie_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     event_mask*: uint32


# ## *
# ##  @brief xcb_xevie_select_input_reply_t
# ##

# type
#   xcb_xevie_select_input_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad1*: array[24, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xevie_query_version*(c: ptr xcb_connection_t;
#                              client_major_version: uint16;
#                              client_minor_version: uint16): xcb_xevie_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xevie_query_version_unchecked*(c: ptr xcb_connection_t;
#                                        client_major_version: uint16;
#                                        client_minor_version: uint16): xcb_xevie_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xevie_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xevie_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_query_version_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xevie_start*(c: ptr xcb_connection_t; screen: uint32): xcb_xevie_start_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xevie_start_unchecked*(c: ptr xcb_connection_t; screen: uint32): xcb_xevie_start_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xevie_start_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xevie_start_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_start_cookie_t; ## *<
#                            e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_start_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xevie_end*(c: ptr xcb_connection_t; cmap: uint32): xcb_xevie_end_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xevie_end_unchecked*(c: ptr xcb_connection_t; cmap: uint32): xcb_xevie_end_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xevie_end_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xevie_end_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_end_cookie_t; ## *<
#                          e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_end_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xevie_event_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xevie_event_t)
# ##

# proc xcb_xevie_event_next*(i: ptr xcb_xevie_event_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xevie_event_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xevie_event_end*(i: xcb_xevie_event_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xevie_send*(c: ptr xcb_connection_t; event: xcb_xevie_event_t;
#                     data_type: uint32): xcb_xevie_send_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xevie_send_unchecked*(c: ptr xcb_connection_t; event: xcb_xevie_event_t;
#                               data_type: uint32): xcb_xevie_send_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xevie_send_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xevie_send_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_send_cookie_t; ## *<
#                           e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_send_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xevie_select_input*(c: ptr xcb_connection_t; event_mask: uint32): xcb_xevie_select_input_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xevie_select_input_unchecked*(c: ptr xcb_connection_t; event_mask: uint32): xcb_xevie_select_input_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xevie_select_input_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xevie_select_input_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_select_input_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_select_input_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xf86dri.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_XF86Dri_API XCB XF86Dri API
# ##  @brief XF86Dri XCB Protocol Implementation.
# ##  @{
# ##


# const
#   XCB_XF86DRI_MAJOR_VERSION* = 4
#   XCB_XF86DRI_MINOR_VERSION* = 1

# var xcb_xf86dri_id*: xcb_extension_t

# ## *
# ##  @brief xcb_xf86dri_drm_clip_rect_t
# ##

# type
#   xcb_xf86dri_drm_clip_rect_t* {.bycopy.} = object
#     x1*: int16
#     y1*: int16
#     x2*: int16
#     x3*: int16


# ## *
# ##  @brief xcb_xf86dri_drm_clip_rect_iterator_t
# ##

# type
#   xcb_xf86dri_drm_clip_rect_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xf86dri_drm_clip_rect_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xf86dri_query_version_cookie_t
# ##

# type
#   xcb_xf86dri_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_query_version.

# const
#   XCB_XF86DRI_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_xf86dri_query_version_request_t
# ##

# type
#   xcb_xf86dri_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xf86dri_query_version_reply_t
# ##

# type
#   xcb_xf86dri_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     dri_major_version*: uint16
#     dri_minor_version*: uint16
#     dri_minor_patch*: uint32


# ## *
# ##  @brief xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ##

# type
#   xcb_xf86dri_query_direct_rendering_capable_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_query_direct_rendering_capable.

# const
#   XCB_XF86DRI_QUERY_DIRECT_RENDERING_CAPABLE* = 1

# ## *
# ##  @brief xcb_xf86dri_query_direct_rendering_capable_request_t
# ##

# type
#   xcb_xf86dri_query_direct_rendering_capable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xf86dri_query_direct_rendering_capable_reply_t
# ##

# type
#   xcb_xf86dri_query_direct_rendering_capable_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     is_capable*: uint8


# ## *
# ##  @brief xcb_xf86dri_open_connection_cookie_t
# ##

# type
#   xcb_xf86dri_open_connection_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_open_connection.

# const
#   XCB_XF86DRI_OPEN_CONNECTION* = 2

# ## *
# ##  @brief xcb_xf86dri_open_connection_request_t
# ##

# type
#   xcb_xf86dri_open_connection_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xf86dri_open_connection_reply_t
# ##

# type
#   xcb_xf86dri_open_connection_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     sarea_handle_low*: uint32
#     sarea_handle_high*: uint32
#     bus_id_len*: uint32
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_xf86dri_close_connection.

# const
#   XCB_XF86DRI_CLOSE_CONNECTION* = 3

# ## *
# ##  @brief xcb_xf86dri_close_connection_request_t
# ##

# type
#   xcb_xf86dri_close_connection_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_client_driver_name_cookie_t
# ##

# type
#   xcb_xf86dri_get_client_driver_name_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_get_client_driver_name.

# const
#   XCB_XF86DRI_GET_CLIENT_DRIVER_NAME* = 4

# ## *
# ##  @brief xcb_xf86dri_get_client_driver_name_request_t
# ##

# type
#   xcb_xf86dri_get_client_driver_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_client_driver_name_reply_t
# ##

# type
#   xcb_xf86dri_get_client_driver_name_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     client_driver_major_version*: uint32
#     client_driver_minor_version*: uint32
#     client_driver_patch_version*: uint32
#     client_driver_name_len*: uint32
#     pad1*: array[8, uint8]


# ## *
# ##  @brief xcb_xf86dri_create_context_cookie_t
# ##

# type
#   xcb_xf86dri_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_create_context.

# const
#   XCB_XF86DRI_CREATE_CONTEXT* = 5

# ## *
# ##  @brief xcb_xf86dri_create_context_request_t
# ##

# type
#   xcb_xf86dri_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     visual*: uint32
#     context*: uint32


# ## *
# ##  @brief xcb_xf86dri_create_context_reply_t
# ##

# type
#   xcb_xf86dri_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     hw_context*: uint32


# ## * Opcode for xcb_xf86dri_destroy_context.

# const
#   XCB_XF86DRI_DESTROY_CONTEXT* = 6

# ## *
# ##  @brief xcb_xf86dri_destroy_context_request_t
# ##

# type
#   xcb_xf86dri_destroy_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     context*: uint32


# ## *
# ##  @brief xcb_xf86dri_create_drawable_cookie_t
# ##

# type
#   xcb_xf86dri_create_drawable_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_create_drawable.

# const
#   XCB_XF86DRI_CREATE_DRAWABLE* = 7

# ## *
# ##  @brief xcb_xf86dri_create_drawable_request_t
# ##

# type
#   xcb_xf86dri_create_drawable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     drawable*: uint32


# ## *
# ##  @brief xcb_xf86dri_create_drawable_reply_t
# ##

# type
#   xcb_xf86dri_create_drawable_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     hw_drawable_handle*: uint32


# ## * Opcode for xcb_xf86dri_destroy_drawable.

# const
#   XCB_XF86DRI_DESTROY_DRAWABLE* = 8

# ## *
# ##  @brief xcb_xf86dri_destroy_drawable_request_t
# ##

# type
#   xcb_xf86dri_destroy_drawable_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     drawable*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_drawable_info_cookie_t
# ##

# type
#   xcb_xf86dri_get_drawable_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_get_drawable_info.

# const
#   XCB_XF86DRI_GET_DRAWABLE_INFO* = 9

# ## *
# ##  @brief xcb_xf86dri_get_drawable_info_request_t
# ##

# type
#   xcb_xf86dri_get_drawable_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     drawable*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_drawable_info_reply_t
# ##

# type
#   xcb_xf86dri_get_drawable_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     drawable_table_index*: uint32
#     drawable_table_stamp*: uint32
#     drawable_origin_X*: int16
#     drawable_origin_Y*: int16
#     drawable_size_W*: int16
#     drawable_size_H*: int16
#     num_clip_rects*: uint32
#     back_x*: int16
#     back_y*: int16
#     num_back_clip_rects*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_device_info_cookie_t
# ##

# type
#   xcb_xf86dri_get_device_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_get_device_info.

# const
#   XCB_XF86DRI_GET_DEVICE_INFO* = 10

# ## *
# ##  @brief xcb_xf86dri_get_device_info_request_t
# ##

# type
#   xcb_xf86dri_get_device_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32


# ## *
# ##  @brief xcb_xf86dri_get_device_info_reply_t
# ##

# type
#   xcb_xf86dri_get_device_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     framebuffer_handle_low*: uint32
#     framebuffer_handle_high*: uint32
#     framebuffer_origin_offset*: uint32
#     framebuffer_size*: uint32
#     framebuffer_stride*: uint32
#     device_private_size*: uint32


# ## *
# ##  @brief xcb_xf86dri_auth_connection_cookie_t
# ##

# type
#   xcb_xf86dri_auth_connection_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xf86dri_auth_connection.

# const
#   XCB_XF86DRI_AUTH_CONNECTION* = 11

# ## *
# ##  @brief xcb_xf86dri_auth_connection_request_t
# ##

# type
#   xcb_xf86dri_auth_connection_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     screen*: uint32
#     magic*: uint32


# ## *
# ##  @brief xcb_xf86dri_auth_connection_reply_t
# ##

# type
#   xcb_xf86dri_auth_connection_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     authenticated*: uint32


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xf86dri_drm_clip_rect_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xf86dri_drm_clip_rect_t)
# ##

# proc xcb_xf86dri_drm_clip_rect_next*(i: ptr xcb_xf86dri_drm_clip_rect_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xf86dri_drm_clip_rect_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xf86dri_drm_clip_rect_end*(i: xcb_xf86dri_drm_clip_rect_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_query_version*(c: ptr xcb_connection_t): xcb_xf86dri_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_query_version_unchecked*(c: ptr xcb_connection_t): xcb_xf86dri_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_query_version_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_query_direct_rendering_capable*(c: ptr xcb_connection_t;
#     screen: uint32): xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_query_direct_rendering_capable_unchecked*(
#     c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_query_direct_rendering_capable_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_query_direct_rendering_capable_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_query_direct_rendering_capable_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_query_direct_rendering_capable_reply_t
# proc xcb_xf86dri_open_connection_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_open_connection*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_open_connection_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_open_connection_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32): xcb_xf86dri_open_connection_cookie_t
# proc xcb_xf86dri_open_connection_bus_id*(R: ptr xcb_xf86dri_open_connection_reply_t): cstring
# proc xcb_xf86dri_open_connection_bus_id_length*(
#     R: ptr xcb_xf86dri_open_connection_reply_t): cint
# proc xcb_xf86dri_open_connection_bus_id_end*(
#     R: ptr xcb_xf86dri_open_connection_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_open_connection_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_open_connection_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_open_connection_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_open_connection_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xf86dri_close_connection_checked*(c: ptr xcb_connection_t; screen: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_close_connection*(c: ptr xcb_connection_t; screen: uint32): xcb_void_cookie_t
# proc xcb_xf86dri_get_client_driver_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_get_client_driver_name*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_get_client_driver_name_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_get_client_driver_name_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32): xcb_xf86dri_get_client_driver_name_cookie_t
# proc xcb_xf86dri_get_client_driver_name_client_driver_name*(
#     R: ptr xcb_xf86dri_get_client_driver_name_reply_t): cstring
# proc xcb_xf86dri_get_client_driver_name_client_driver_name_length*(
#     R: ptr xcb_xf86dri_get_client_driver_name_reply_t): cint
# proc xcb_xf86dri_get_client_driver_name_client_driver_name_end*(
#     R: ptr xcb_xf86dri_get_client_driver_name_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_get_client_driver_name_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_get_client_driver_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_client_driver_name_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_client_driver_name_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_create_context*(c: ptr xcb_connection_t; screen: uint32;
#                                 visual: uint32; context: uint32): xcb_xf86dri_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_create_context_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32; visual: uint32; context: uint32): xcb_xf86dri_create_context_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_create_context_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_create_context_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xf86dri_destroy_context_checked*(c: ptr xcb_connection_t; screen: uint32;
#     context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_destroy_context*(c: ptr xcb_connection_t; screen: uint32;
#                                  context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_create_drawable*(c: ptr xcb_connection_t; screen: uint32;
#                                  drawable: uint32): xcb_xf86dri_create_drawable_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_create_drawable_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32; drawable: uint32): xcb_xf86dri_create_drawable_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_create_drawable_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_create_drawable_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_create_drawable_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_create_drawable_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xf86dri_destroy_drawable_checked*(c: ptr xcb_connection_t;
#     screen: uint32; drawable: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_destroy_drawable*(c: ptr xcb_connection_t; screen: uint32;
#                                   drawable: uint32): xcb_void_cookie_t
# proc xcb_xf86dri_get_drawable_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_get_drawable_info*(c: ptr xcb_connection_t; screen: uint32;
#                                    drawable: uint32): xcb_xf86dri_get_drawable_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_get_drawable_info_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32; drawable: uint32): xcb_xf86dri_get_drawable_info_cookie_t
# proc xcb_xf86dri_get_drawable_info_clip_rects*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): ptr xcb_xf86dri_drm_clip_rect_t
# proc xcb_xf86dri_get_drawable_info_clip_rects_length*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): cint
# proc xcb_xf86dri_get_drawable_info_clip_rects_iterator*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): xcb_xf86dri_drm_clip_rect_iterator_t
# proc xcb_xf86dri_get_drawable_info_back_clip_rects*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): ptr xcb_xf86dri_drm_clip_rect_t
# proc xcb_xf86dri_get_drawable_info_back_clip_rects_length*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): cint
# proc xcb_xf86dri_get_drawable_info_back_clip_rects_iterator*(
#     R: ptr xcb_xf86dri_get_drawable_info_reply_t): xcb_xf86dri_drm_clip_rect_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_get_drawable_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_get_drawable_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_drawable_info_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_drawable_info_reply_t
# proc xcb_xf86dri_get_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_get_device_info*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_get_device_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_get_device_info_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32): xcb_xf86dri_get_device_info_cookie_t
# proc xcb_xf86dri_get_device_info_device_private*(
#     R: ptr xcb_xf86dri_get_device_info_reply_t): ptr uint32
# proc xcb_xf86dri_get_device_info_device_private_length*(
#     R: ptr xcb_xf86dri_get_device_info_reply_t): cint
# proc xcb_xf86dri_get_device_info_device_private_end*(
#     R: ptr xcb_xf86dri_get_device_info_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_get_device_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_get_device_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_device_info_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_device_info_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xf86dri_auth_connection*(c: ptr xcb_connection_t; screen: uint32;
#                                  magic: uint32): xcb_xf86dri_auth_connection_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xf86dri_auth_connection_unchecked*(c: ptr xcb_connection_t;
#     screen: uint32; magic: uint32): xcb_xf86dri_auth_connection_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xf86dri_auth_connection_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xf86dri_auth_connection_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_auth_connection_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_auth_connection_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xfixes.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_XFixes_API XCB XFixes API
# ##  @brief XFixes XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto, render, shape

# const
#   XCB_XFIXES_MAJOR_VERSION* = 5
#   XCB_XFIXES_MINOR_VERSION* = 0

# var xcb_xfixes_id*: xcb_extension_t

# ## *
# ##  @brief xcb_xfixes_query_version_cookie_t
# ##

# type
#   xcb_xfixes_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xfixes_query_version.

# const
#   XCB_XFIXES_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_xfixes_query_version_request_t
# ##

# type
#   xcb_xfixes_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major_version*: uint32
#     client_minor_version*: uint32


# ## *
# ##  @brief xcb_xfixes_query_version_reply_t
# ##

# type
#   xcb_xfixes_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint32
#     minor_version*: uint32
#     pad1*: array[16, uint8]

#   xcb_xfixes_save_set_mode_t* = enum
#     XCB_XFIXES_SAVE_SET_MODE_INSERT = 0, XCB_XFIXES_SAVE_SET_MODE_DELETE = 1
#   xcb_xfixes_save_set_target_t* = enum
#     XCB_XFIXES_SAVE_SET_TARGET_NEAREST = 0, XCB_XFIXES_SAVE_SET_TARGET_ROOT = 1
#   xcb_xfixes_save_set_mapping_t* = enum
#     XCB_XFIXES_SAVE_SET_MAPPING_MAP = 0, XCB_XFIXES_SAVE_SET_MAPPING_UNMAP = 1




# ## * Opcode for xcb_xfixes_change_save_set.

# const
#   XCB_XFIXES_CHANGE_SAVE_SET* = 1

# ## *
# ##  @brief xcb_xfixes_change_save_set_request_t
# ##

# type
#   xcb_xfixes_change_save_set_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     mode*: uint8
#     target*: uint8
#     map*: uint8
#     pad0*: uint8
#     window*: xcb_window_t

#   xcb_xfixes_selection_event_t* = enum
#     XCB_XFIXES_SELECTION_EVENT_SET_SELECTION_OWNER = 0,
#     XCB_XFIXES_SELECTION_EVENT_SELECTION_WINDOW_DESTROY = 1,
#     XCB_XFIXES_SELECTION_EVENT_SELECTION_CLIENT_CLOSE = 2
#   xcb_xfixes_selection_event_mask_t* = enum
#     XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER = 1,
#     XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_WINDOW_DESTROY = 2,
#     XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_CLIENT_CLOSE = 4



# ## * Opcode for xcb_xfixes_selection_notify.

# const
#   XCB_XFIXES_SELECTION_NOTIFY* = 0

# ## *
# ##  @brief xcb_xfixes_selection_notify_event_t
# ##

# type
#   xcb_xfixes_selection_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     subtype*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     owner*: xcb_window_t
#     selection*: xcb_atom_t
#     timestamp*: xcb_timestamp_t
#     selection_timestamp*: xcb_timestamp_t
#     pad0*: array[8, uint8]


# ## * Opcode for xcb_xfixes_select_selection_input.

# const
#   XCB_XFIXES_SELECT_SELECTION_INPUT* = 2

# ## *
# ##  @brief xcb_xfixes_select_selection_input_request_t
# ##

# type
#   xcb_xfixes_select_selection_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     selection*: xcb_atom_t
#     event_mask*: uint32

#   xcb_xfixes_cursor_notify_t* = enum
#     XCB_XFIXES_CURSOR_NOTIFY_DISPLAY_CURSOR = 0
#   xcb_xfixes_cursor_notify_mask_t* = enum
#     XCB_XFIXES_CURSOR_NOTIFY_MASK_DISPLAY_CURSOR = 1



# ## * Opcode for xcb_xfixes_cursor_notify.

# const
#   XCB_XFIXES_CURSOR_NOTIFY* = 1

# ## *
# ##  @brief xcb_xfixes_cursor_notify_event_t
# ##

# type
#   xcb_xfixes_cursor_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     subtype*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     cursor_serial*: uint32
#     timestamp*: xcb_timestamp_t
#     name*: xcb_atom_t
#     pad0*: array[12, uint8]


# ## * Opcode for xcb_xfixes_select_cursor_input.

# const
#   XCB_XFIXES_SELECT_CURSOR_INPUT* = 3

# ## *
# ##  @brief xcb_xfixes_select_cursor_input_request_t
# ##

# type
#   xcb_xfixes_select_cursor_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     event_mask*: uint32


# ## *
# ##  @brief xcb_xfixes_get_cursor_image_cookie_t
# ##

# type
#   xcb_xfixes_get_cursor_image_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xfixes_get_cursor_image.

# const
#   XCB_XFIXES_GET_CURSOR_IMAGE* = 4

# ## *
# ##  @brief xcb_xfixes_get_cursor_image_request_t
# ##

# type
#   xcb_xfixes_get_cursor_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xfixes_get_cursor_image_reply_t
# ##

# type
#   xcb_xfixes_get_cursor_image_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     xhot*: uint16
#     yhot*: uint16
#     cursor_serial*: uint32
#     pad1*: array[8, uint8]

#   xcb_xfixes_region_t* = uint32

# ## *
# ##  @brief xcb_xfixes_region_iterator_t
# ##

# type
#   xcb_xfixes_region_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xfixes_region_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_xfixes_bad_region.

# const
#   XCB_XFIXES_BAD_REGION* = 0

# ## *
# ##  @brief xcb_xfixes_bad_region_error_t
# ##

# type
#   xcb_xfixes_bad_region_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16

#   xcb_xfixes_region_enum_t* = enum
#     XCB_XFIXES_REGION_NONE = 0


# ## * Opcode for xcb_xfixes_create_region.

# const
#   XCB_XFIXES_CREATE_REGION* = 5

# ## *
# ##  @brief xcb_xfixes_create_region_request_t
# ##

# type
#   xcb_xfixes_create_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_create_region_from_bitmap.

# const
#   XCB_XFIXES_CREATE_REGION_FROM_BITMAP* = 6

# ## *
# ##  @brief xcb_xfixes_create_region_from_bitmap_request_t
# ##

# type
#   xcb_xfixes_create_region_from_bitmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     bitmap*: xcb_pixmap_t


# ## * Opcode for xcb_xfixes_create_region_from_window.

# const
#   XCB_XFIXES_CREATE_REGION_FROM_WINDOW* = 7

# ## *
# ##  @brief xcb_xfixes_create_region_from_window_request_t
# ##

# type
#   xcb_xfixes_create_region_from_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     window*: xcb_window_t
#     kind*: xcb_shape_kind_t
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_xfixes_create_region_from_gc.

# const
#   XCB_XFIXES_CREATE_REGION_FROM_GC* = 8

# ## *
# ##  @brief xcb_xfixes_create_region_from_gc_request_t
# ##

# type
#   xcb_xfixes_create_region_from_gc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_xfixes_create_region_from_picture.

# const
#   XCB_XFIXES_CREATE_REGION_FROM_PICTURE* = 9

# ## *
# ##  @brief xcb_xfixes_create_region_from_picture_request_t
# ##

# type
#   xcb_xfixes_create_region_from_picture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     picture*: xcb_render_picture_t


# ## * Opcode for xcb_xfixes_destroy_region.

# const
#   XCB_XFIXES_DESTROY_REGION* = 10

# ## *
# ##  @brief xcb_xfixes_destroy_region_request_t
# ##

# type
#   xcb_xfixes_destroy_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_set_region.

# const
#   XCB_XFIXES_SET_REGION* = 11

# ## *
# ##  @brief xcb_xfixes_set_region_request_t
# ##

# type
#   xcb_xfixes_set_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_copy_region.

# const
#   XCB_XFIXES_COPY_REGION* = 12

# ## *
# ##  @brief xcb_xfixes_copy_region_request_t
# ##

# type
#   xcb_xfixes_copy_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_union_region.

# const
#   XCB_XFIXES_UNION_REGION* = 13

# ## *
# ##  @brief xcb_xfixes_union_region_request_t
# ##

# type
#   xcb_xfixes_union_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source1*: xcb_xfixes_region_t
#     source2*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_intersect_region.

# const
#   XCB_XFIXES_INTERSECT_REGION* = 14

# ## *
# ##  @brief xcb_xfixes_intersect_region_request_t
# ##

# type
#   xcb_xfixes_intersect_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source1*: xcb_xfixes_region_t
#     source2*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_subtract_region.

# const
#   XCB_XFIXES_SUBTRACT_REGION* = 15

# ## *
# ##  @brief xcb_xfixes_subtract_region_request_t
# ##

# type
#   xcb_xfixes_subtract_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source1*: xcb_xfixes_region_t
#     source2*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_invert_region.

# const
#   XCB_XFIXES_INVERT_REGION* = 16

# ## *
# ##  @brief xcb_xfixes_invert_region_request_t
# ##

# type
#   xcb_xfixes_invert_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source*: xcb_xfixes_region_t
#     bounds*: xcb_rectangle_t
#     destination*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_translate_region.

# const
#   XCB_XFIXES_TRANSLATE_REGION* = 17

# ## *
# ##  @brief xcb_xfixes_translate_region_request_t
# ##

# type
#   xcb_xfixes_translate_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t
#     dx*: int16
#     dy*: int16


# ## * Opcode for xcb_xfixes_region_extents.

# const
#   XCB_XFIXES_REGION_EXTENTS* = 18

# ## *
# ##  @brief xcb_xfixes_region_extents_request_t
# ##

# type
#   xcb_xfixes_region_extents_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t


# ## *
# ##  @brief xcb_xfixes_fetch_region_cookie_t
# ##

# type
#   xcb_xfixes_fetch_region_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xfixes_fetch_region.

# const
#   XCB_XFIXES_FETCH_REGION* = 19

# ## *
# ##  @brief xcb_xfixes_fetch_region_request_t
# ##

# type
#   xcb_xfixes_fetch_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     region*: xcb_xfixes_region_t


# ## *
# ##  @brief xcb_xfixes_fetch_region_reply_t
# ##

# type
#   xcb_xfixes_fetch_region_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     extents*: xcb_rectangle_t
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_xfixes_set_gc_clip_region.

# const
#   XCB_XFIXES_SET_GC_CLIP_REGION* = 20

# ## *
# ##  @brief xcb_xfixes_set_gc_clip_region_request_t
# ##

# type
#   xcb_xfixes_set_gc_clip_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     gc*: xcb_gcontext_t
#     region*: xcb_xfixes_region_t
#     x_origin*: int16
#     y_origin*: int16


# ## * Opcode for xcb_xfixes_set_window_shape_region.

# const
#   XCB_XFIXES_SET_WINDOW_SHAPE_REGION* = 21

# ## *
# ##  @brief xcb_xfixes_set_window_shape_region_request_t
# ##

# type
#   xcb_xfixes_set_window_shape_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     dest*: xcb_window_t
#     dest_kind*: xcb_shape_kind_t
#     pad0*: array[3, uint8]
#     x_offset*: int16
#     y_offset*: int16
#     region*: xcb_xfixes_region_t


# ## * Opcode for xcb_xfixes_set_picture_clip_region.

# const
#   XCB_XFIXES_SET_PICTURE_CLIP_REGION* = 22

# ## *
# ##  @brief xcb_xfixes_set_picture_clip_region_request_t
# ##

# type
#   xcb_xfixes_set_picture_clip_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     picture*: xcb_render_picture_t
#     region*: xcb_xfixes_region_t
#     x_origin*: int16
#     y_origin*: int16


# ## * Opcode for xcb_xfixes_set_cursor_name.

# const
#   XCB_XFIXES_SET_CURSOR_NAME* = 23

# ## *
# ##  @brief xcb_xfixes_set_cursor_name_request_t
# ##

# type
#   xcb_xfixes_set_cursor_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cursor*: xcb_cursor_t
#     nbytes*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xfixes_get_cursor_name_cookie_t
# ##

# type
#   xcb_xfixes_get_cursor_name_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xfixes_get_cursor_name.

# const
#   XCB_XFIXES_GET_CURSOR_NAME* = 24

# ## *
# ##  @brief xcb_xfixes_get_cursor_name_request_t
# ##

# type
#   xcb_xfixes_get_cursor_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cursor*: xcb_cursor_t


# ## *
# ##  @brief xcb_xfixes_get_cursor_name_reply_t
# ##

# type
#   xcb_xfixes_get_cursor_name_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     atom*: xcb_atom_t
#     nbytes*: uint16
#     pad1*: array[18, uint8]


# ## *
# ##  @brief xcb_xfixes_get_cursor_image_and_name_cookie_t
# ##

# type
#   xcb_xfixes_get_cursor_image_and_name_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xfixes_get_cursor_image_and_name.

# const
#   XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME* = 25

# ## *
# ##  @brief xcb_xfixes_get_cursor_image_and_name_request_t
# ##

# type
#   xcb_xfixes_get_cursor_image_and_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xfixes_get_cursor_image_and_name_reply_t
# ##

# type
#   xcb_xfixes_get_cursor_image_and_name_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     xhot*: uint16
#     yhot*: uint16
#     cursor_serial*: uint32
#     cursor_atom*: xcb_atom_t
#     nbytes*: uint16
#     pad1*: array[2, uint8]


# ## * Opcode for xcb_xfixes_change_cursor.

# const
#   XCB_XFIXES_CHANGE_CURSOR* = 26

# ## *
# ##  @brief xcb_xfixes_change_cursor_request_t
# ##

# type
#   xcb_xfixes_change_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source*: xcb_cursor_t
#     destination*: xcb_cursor_t


# ## * Opcode for xcb_xfixes_change_cursor_by_name.

# const
#   XCB_XFIXES_CHANGE_CURSOR_BY_NAME* = 27

# ## *
# ##  @brief xcb_xfixes_change_cursor_by_name_request_t
# ##

# type
#   xcb_xfixes_change_cursor_by_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     src*: xcb_cursor_t
#     nbytes*: uint16
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_xfixes_expand_region.

# const
#   XCB_XFIXES_EXPAND_REGION* = 28

# ## *
# ##  @brief xcb_xfixes_expand_region_request_t
# ##

# type
#   xcb_xfixes_expand_region_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     source*: xcb_xfixes_region_t
#     destination*: xcb_xfixes_region_t
#     left*: uint16
#     right*: uint16
#     top*: uint16
#     bottom*: uint16


# ## * Opcode for xcb_xfixes_hide_cursor.

# const
#   XCB_XFIXES_HIDE_CURSOR* = 29

# ## *
# ##  @brief xcb_xfixes_hide_cursor_request_t
# ##

# type
#   xcb_xfixes_hide_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_xfixes_show_cursor.

# const
#   XCB_XFIXES_SHOW_CURSOR* = 30

# ## *
# ##  @brief xcb_xfixes_show_cursor_request_t
# ##

# type
#   xcb_xfixes_show_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t

#   xcb_xfixes_barrier_t* = uint32

# ## *
# ##  @brief xcb_xfixes_barrier_iterator_t
# ##

# type
#   xcb_xfixes_barrier_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xfixes_barrier_t
#     rem*: cint
#     index*: cint

#   xcb_xfixes_barrier_directions_t* = enum
#     XCB_XFIXES_BARRIER_DIRECTIONS_POSITIVE_X = 1,
#     XCB_XFIXES_BARRIER_DIRECTIONS_POSITIVE_Y = 2,
#     XCB_XFIXES_BARRIER_DIRECTIONS_NEGATIVE_X = 4,
#     XCB_XFIXES_BARRIER_DIRECTIONS_NEGATIVE_Y = 8


# ## * Opcode for xcb_xfixes_create_pointer_barrier.

# const
#   XCB_XFIXES_CREATE_POINTER_BARRIER* = 31

# ## *
# ##  @brief xcb_xfixes_create_pointer_barrier_request_t
# ##

# type
#   xcb_xfixes_create_pointer_barrier_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     barrier*: xcb_xfixes_barrier_t
#     window*: xcb_window_t
#     x1*: uint16
#     y1*: uint16
#     x2*: uint16
#     y2*: uint16
#     directions*: uint32
#     pad0*: array[2, uint8]
#     num_devices*: uint16


# ## * Opcode for xcb_xfixes_delete_pointer_barrier.

# const
#   XCB_XFIXES_DELETE_POINTER_BARRIER* = 32

# ## *
# ##  @brief xcb_xfixes_delete_pointer_barrier_request_t
# ##

# type
#   xcb_xfixes_delete_pointer_barrier_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     barrier*: xcb_xfixes_barrier_t


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_query_version*(c: ptr xcb_connection_t;
#                               client_major_version: uint32;
#                               client_minor_version: uint32): xcb_xfixes_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xfixes_query_version_unchecked*(c: ptr xcb_connection_t;
#                                         client_major_version: uint32;
#                                         client_minor_version: uint32): xcb_xfixes_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xfixes_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xfixes_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_query_version_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_change_save_set_checked*(c: ptr xcb_connection_t; mode: uint8;
#                                         target: uint8; map: uint8;
#                                         window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_change_save_set*(c: ptr xcb_connection_t; mode: uint8;
#                                 target: uint8; map: uint8; window: xcb_window_t): xcb_void_cookie_t


# proc xcb_xfixes_select_selection_input*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t;
#                                        selection: xcb_atom_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_select_cursor_input_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_select_cursor_input*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     event_mask: uint32): xcb_void_cookie_t
# proc xcb_xfixes_get_cursor_image_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_get_cursor_image*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xfixes_get_cursor_image_unchecked*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_cookie_t
# proc xcb_xfixes_get_cursor_image_cursor_image*(
#     R: ptr xcb_xfixes_get_cursor_image_reply_t): ptr uint32
# proc xcb_xfixes_get_cursor_image_cursor_image_length*(
#     R: ptr xcb_xfixes_get_cursor_image_reply_t): cint
# proc xcb_xfixes_get_cursor_image_cursor_image_end*(
#     R: ptr xcb_xfixes_get_cursor_image_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xfixes_get_cursor_image_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xfixes_get_cursor_image_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_image_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_image_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xfixes_region_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xfixes_region_t)
# ##

# proc xcb_xfixes_region_next*(i: ptr xcb_xfixes_region_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xfixes_region_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xfixes_region_end*(i: xcb_xfixes_region_iterator_t): xcb_generic_iterator_t
# proc xcb_xfixes_create_region_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_region_checked*(c: ptr xcb_connection_t;
#                                       region: xcb_xfixes_region_t;
#                                       rectangles_len: uint32;
#                                       rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t;
#                               rectangles_len: uint32;
#                               rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_xfixes_create_region_rectangles*(
#     R: ptr xcb_xfixes_create_region_request_t): ptr xcb_rectangle_t
# proc xcb_xfixes_create_region_rectangles_length*(
#     R: ptr xcb_xfixes_create_region_request_t): cint
# proc xcb_xfixes_create_region_rectangles_iterator*(
#     R: ptr xcb_xfixes_create_region_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_region_from_bitmap_checked*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_region_from_bitmap*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_region_from_window_checked*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; window: xcb_window_t; kind: xcb_shape_kind_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_region_from_window*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; window: xcb_window_t; kind: xcb_shape_kind_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_region_from_gc_checked*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_region_from_gc*(c: ptr xcb_connection_t;
#                                       region: xcb_xfixes_region_t;
#                                       gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_region_from_picture_checked*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_region_from_picture*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_destroy_region_checked*(c: ptr xcb_connection_t;
#                                        region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_destroy_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t): xcb_void_cookie_t
# proc xcb_xfixes_set_region_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_set_region_checked*(c: ptr xcb_connection_t;
#                                    region: xcb_xfixes_region_t;
#                                    rectangles_len: uint32;
#                                    rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_set_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t;
#                            rectangles_len: uint32;
#                            rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_xfixes_set_region_rectangles*(R: ptr xcb_xfixes_set_region_request_t): ptr xcb_rectangle_t
# proc xcb_xfixes_set_region_rectangles_length*(
#     R: ptr xcb_xfixes_set_region_request_t): cint
# proc xcb_xfixes_set_region_rectangles_iterator*(
#     R: ptr xcb_xfixes_set_region_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_copy_region_checked*(c: ptr xcb_connection_t;
#                                     source: xcb_xfixes_region_t;
#                                     destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_copy_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
#                             destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_union_region_checked*(c: ptr xcb_connection_t;
#                                      source1: xcb_xfixes_region_t;
#                                      source2: xcb_xfixes_region_t;
#                                      destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_union_region*(c: ptr xcb_connection_t; source1: xcb_xfixes_region_t;
#                              source2: xcb_xfixes_region_t;
#                              destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_intersect_region_checked*(c: ptr xcb_connection_t;
#     source1: xcb_xfixes_region_t; source2: xcb_xfixes_region_t;
#     destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_intersect_region*(c: ptr xcb_connection_t;
#                                  source1: xcb_xfixes_region_t;
#                                  source2: xcb_xfixes_region_t;
#                                  destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_subtract_region_checked*(c: ptr xcb_connection_t;
#                                         source1: xcb_xfixes_region_t;
#                                         source2: xcb_xfixes_region_t;
#                                         destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_subtract_region*(c: ptr xcb_connection_t;
#                                 source1: xcb_xfixes_region_t;
#                                 source2: xcb_xfixes_region_t;
#                                 destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_invert_region_checked*(c: ptr xcb_connection_t;
#                                       source: xcb_xfixes_region_t;
#                                       bounds: xcb_rectangle_t;
#                                       destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_invert_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
#                               bounds: xcb_rectangle_t;
#                               destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_translate_region_checked*(c: ptr xcb_connection_t;
#     region: xcb_xfixes_region_t; dx: int16; dy: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_translate_region*(c: ptr xcb_connection_t;
#                                  region: xcb_xfixes_region_t; dx: int16;
#                                  dy: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_region_extents_checked*(c: ptr xcb_connection_t;
#                                        source: xcb_xfixes_region_t;
#                                        destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_region_extents*(c: ptr xcb_connection_t;
#                                source: xcb_xfixes_region_t;
#                                destination: xcb_xfixes_region_t): xcb_void_cookie_t
# proc xcb_xfixes_fetch_region_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_fetch_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t): xcb_xfixes_fetch_region_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xfixes_fetch_region_unchecked*(c: ptr xcb_connection_t;
#                                        region: xcb_xfixes_region_t): xcb_xfixes_fetch_region_cookie_t
# proc xcb_xfixes_fetch_region_rectangles*(R: ptr xcb_xfixes_fetch_region_reply_t): ptr xcb_rectangle_t
# proc xcb_xfixes_fetch_region_rectangles_length*(
#     R: ptr xcb_xfixes_fetch_region_reply_t): cint
# proc xcb_xfixes_fetch_region_rectangles_iterator*(
#     R: ptr xcb_xfixes_fetch_region_reply_t): xcb_rectangle_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xfixes_fetch_region_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xfixes_fetch_region_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_fetch_region_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_fetch_region_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_set_gc_clip_region_checked*(c: ptr xcb_connection_t;
#     gc: xcb_gcontext_t; region: xcb_xfixes_region_t; x_origin: int16;
#     y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_set_gc_clip_region*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                                    region: xcb_xfixes_region_t; x_origin: int16;
#                                    y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_set_window_shape_region_checked*(c: ptr xcb_connection_t;
#     dest: xcb_window_t; dest_kind: xcb_shape_kind_t; x_offset: int16;
#     y_offset: int16; region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_set_window_shape_region*(c: ptr xcb_connection_t;
#                                         dest: xcb_window_t;
#                                         dest_kind: xcb_shape_kind_t;
#                                         x_offset: int16; y_offset: int16;
#                                         region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_set_picture_clip_region_checked*(c: ptr xcb_connection_t;
#     picture: xcb_render_picture_t; region: xcb_xfixes_region_t; x_origin: int16;
#     y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_set_picture_clip_region*(c: ptr xcb_connection_t;
#                                         picture: xcb_render_picture_t;
#                                         region: xcb_xfixes_region_t;
#                                         x_origin: int16; y_origin: int16): xcb_void_cookie_t
# proc xcb_xfixes_set_cursor_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_set_cursor_name_checked*(c: ptr xcb_connection_t;
#                                         cursor: xcb_cursor_t; nbytes: uint16;
#                                         name: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_set_cursor_name*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
#                                 nbytes: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_xfixes_set_cursor_name_name*(R: ptr xcb_xfixes_set_cursor_name_request_t): cstring
# proc xcb_xfixes_set_cursor_name_name_length*(
#     R: ptr xcb_xfixes_set_cursor_name_request_t): cint
# proc xcb_xfixes_set_cursor_name_name_end*(
#     R: ptr xcb_xfixes_set_cursor_name_request_t): xcb_generic_iterator_t
# proc xcb_xfixes_get_cursor_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_get_cursor_name*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_xfixes_get_cursor_name_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xfixes_get_cursor_name_unchecked*(c: ptr xcb_connection_t;
#     cursor: xcb_cursor_t): xcb_xfixes_get_cursor_name_cookie_t
# proc xcb_xfixes_get_cursor_name_name*(R: ptr xcb_xfixes_get_cursor_name_reply_t): cstring
# proc xcb_xfixes_get_cursor_name_name_length*(
#     R: ptr xcb_xfixes_get_cursor_name_reply_t): cint
# proc xcb_xfixes_get_cursor_name_name_end*(
#     R: ptr xcb_xfixes_get_cursor_name_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xfixes_get_cursor_name_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xfixes_get_cursor_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_name_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_name_reply_t
# proc xcb_xfixes_get_cursor_image_and_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_get_cursor_image_and_name*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_and_name_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xfixes_get_cursor_image_and_name_unchecked*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_and_name_cookie_t
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): ptr uint32
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image_length*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cint
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image_end*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): xcb_generic_iterator_t
# proc xcb_xfixes_get_cursor_image_and_name_name*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cstring
# proc xcb_xfixes_get_cursor_image_and_name_name_length*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cint
# proc xcb_xfixes_get_cursor_image_and_name_name_end*(
#     R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xfixes_get_cursor_image_and_name_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xfixes_get_cursor_image_and_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_image_and_name_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_image_and_name_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_change_cursor_checked*(c: ptr xcb_connection_t;
#                                       source: xcb_cursor_t;
#                                       destination: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_change_cursor*(c: ptr xcb_connection_t; source: xcb_cursor_t;
#                               destination: xcb_cursor_t): xcb_void_cookie_t
# proc xcb_xfixes_change_cursor_by_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_change_cursor_by_name_checked*(c: ptr xcb_connection_t;
#     src: xcb_cursor_t; nbytes: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_change_cursor_by_name*(c: ptr xcb_connection_t; src: xcb_cursor_t;
#                                       nbytes: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_xfixes_change_cursor_by_name_name*(
#     R: ptr xcb_xfixes_change_cursor_by_name_request_t): cstring
# proc xcb_xfixes_change_cursor_by_name_name_length*(
#     R: ptr xcb_xfixes_change_cursor_by_name_request_t): cint
# proc xcb_xfixes_change_cursor_by_name_name_end*(
#     R: ptr xcb_xfixes_change_cursor_by_name_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_expand_region_checked*(c: ptr xcb_connection_t;
#                                       source: xcb_xfixes_region_t;
#                                       destination: xcb_xfixes_region_t;
#                                       left: uint16; right: uint16;
#                                       top: uint16; bottom: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_expand_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
#                               destination: xcb_xfixes_region_t; left: uint16;
#                               right: uint16; top: uint16; bottom: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_hide_cursor_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_hide_cursor*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_show_cursor_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_show_cursor*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xfixes_barrier_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xfixes_barrier_t)
# ##

# proc xcb_xfixes_barrier_next*(i: ptr xcb_xfixes_barrier_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xfixes_barrier_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xfixes_barrier_end*(i: xcb_xfixes_barrier_iterator_t): xcb_generic_iterator_t
# proc xcb_xfixes_create_pointer_barrier_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_create_pointer_barrier_checked*(c: ptr xcb_connection_t;
#     barrier: xcb_xfixes_barrier_t; window: xcb_window_t; x1: uint16; y1: uint16;
#     x2: uint16; y2: uint16; directions: uint32; num_devices: uint16;
#     devices: ptr uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_create_pointer_barrier*(c: ptr xcb_connection_t;
#                                        barrier: xcb_xfixes_barrier_t;
#                                        window: xcb_window_t; x1: uint16;
#                                        y1: uint16; x2: uint16; y2: uint16;
#                                        directions: uint32;
#                                        num_devices: uint16;
#                                        devices: ptr uint16): xcb_void_cookie_t
# proc xcb_xfixes_create_pointer_barrier_devices*(
#     R: ptr xcb_xfixes_create_pointer_barrier_request_t): ptr uint16
# proc xcb_xfixes_create_pointer_barrier_devices_length*(
#     R: ptr xcb_xfixes_create_pointer_barrier_request_t): cint
# proc xcb_xfixes_create_pointer_barrier_devices_end*(
#     R: ptr xcb_xfixes_create_pointer_barrier_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xfixes_delete_pointer_barrier_checked*(c: ptr xcb_connection_t;
#     barrier: xcb_xfixes_barrier_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xfixes_delete_pointer_barrier*(c: ptr xcb_connection_t;
#                                        barrier: xcb_xfixes_barrier_t): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xinerama.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Xinerama_API XCB Xinerama API
# ##  @brief Xinerama XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_XINERAMA_MAJOR_VERSION* = 1
#   XCB_XINERAMA_MINOR_VERSION* = 1

# var xcb_xinerama_id*: xcb_extension_t

# ## *
# ##  @brief xcb_xinerama_screen_info_t
# ##

# type
#   xcb_xinerama_screen_info_t* {.bycopy.} = object
#     x_org*: int16
#     y_org*: int16
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_xinerama_screen_info_iterator_t
# ##

# type
#   xcb_xinerama_screen_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xinerama_screen_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xinerama_query_version_cookie_t
# ##

# type
#   xcb_xinerama_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_query_version.

# const
#   XCB_XINERAMA_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_xinerama_query_version_request_t
# ##

# type
#   xcb_xinerama_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major*: uint8
#     minor*: uint8


# ## *
# ##  @brief xcb_xinerama_query_version_reply_t
# ##

# type
#   xcb_xinerama_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major*: uint16
#     minor*: uint16


# ## *
# ##  @brief xcb_xinerama_get_state_cookie_t
# ##

# type
#   xcb_xinerama_get_state_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_get_state.

# const
#   XCB_XINERAMA_GET_STATE* = 1

# ## *
# ##  @brief xcb_xinerama_get_state_request_t
# ##

# type
#   xcb_xinerama_get_state_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xinerama_get_state_reply_t
# ##

# type
#   xcb_xinerama_get_state_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     state*: uint8
#     sequence*: uint16
#     length*: uint32
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xinerama_get_screen_count_cookie_t
# ##

# type
#   xcb_xinerama_get_screen_count_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_get_screen_count.

# const
#   XCB_XINERAMA_GET_SCREEN_COUNT* = 2

# ## *
# ##  @brief xcb_xinerama_get_screen_count_request_t
# ##

# type
#   xcb_xinerama_get_screen_count_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xinerama_get_screen_count_reply_t
# ##

# type
#   xcb_xinerama_get_screen_count_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     screen_count*: uint8
#     sequence*: uint16
#     length*: uint32
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xinerama_get_screen_size_cookie_t
# ##

# type
#   xcb_xinerama_get_screen_size_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_get_screen_size.

# const
#   XCB_XINERAMA_GET_SCREEN_SIZE* = 3

# ## *
# ##  @brief xcb_xinerama_get_screen_size_request_t
# ##

# type
#   xcb_xinerama_get_screen_size_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     screen*: uint32


# ## *
# ##  @brief xcb_xinerama_get_screen_size_reply_t
# ##

# type
#   xcb_xinerama_get_screen_size_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint32
#     height*: uint32
#     window*: xcb_window_t
#     screen*: uint32


# ## *
# ##  @brief xcb_xinerama_is_active_cookie_t
# ##

# type
#   xcb_xinerama_is_active_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_is_active.

# const
#   XCB_XINERAMA_IS_ACTIVE* = 4

# ## *
# ##  @brief xcb_xinerama_is_active_request_t
# ##

# type
#   xcb_xinerama_is_active_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xinerama_is_active_reply_t
# ##

# type
#   xcb_xinerama_is_active_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     state*: uint32


# ## *
# ##  @brief xcb_xinerama_query_screens_cookie_t
# ##

# type
#   xcb_xinerama_query_screens_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xinerama_query_screens.

# const
#   XCB_XINERAMA_QUERY_SCREENS* = 5

# ## *
# ##  @brief xcb_xinerama_query_screens_request_t
# ##

# type
#   xcb_xinerama_query_screens_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xinerama_query_screens_reply_t
# ##

# type
#   xcb_xinerama_query_screens_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     number*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xinerama_screen_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xinerama_screen_info_t)
# ##

# proc xcb_xinerama_screen_info_next*(i: ptr xcb_xinerama_screen_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xinerama_screen_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xinerama_screen_info_end*(i: xcb_xinerama_screen_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_query_version*(c: ptr xcb_connection_t; major: uint8;
#                                 minor: uint8): xcb_xinerama_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_query_version_unchecked*(c: ptr xcb_connection_t; major: uint8;
#     minor: uint8): xcb_xinerama_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_query_version_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_query_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_get_state*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_state_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_get_state_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_state_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_get_state_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_get_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_state_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_state_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_get_screen_count*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_screen_count_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_get_screen_count_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_xinerama_get_screen_count_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_get_screen_count_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_get_screen_count_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_screen_count_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_screen_count_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_get_screen_size*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                   screen: uint32): xcb_xinerama_get_screen_size_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_get_screen_size_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; screen: uint32): xcb_xinerama_get_screen_size_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_get_screen_size_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_get_screen_size_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_screen_size_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_screen_size_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_is_active*(c: ptr xcb_connection_t): xcb_xinerama_is_active_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_is_active_unchecked*(c: ptr xcb_connection_t): xcb_xinerama_is_active_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_is_active_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_is_active_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_is_active_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_is_active_reply_t
# proc xcb_xinerama_query_screens_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xinerama_query_screens*(c: ptr xcb_connection_t): xcb_xinerama_query_screens_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xinerama_query_screens_unchecked*(c: ptr xcb_connection_t): xcb_xinerama_query_screens_cookie_t
# proc xcb_xinerama_query_screens_screen_info*(
#     R: ptr xcb_xinerama_query_screens_reply_t): ptr xcb_xinerama_screen_info_t
# proc xcb_xinerama_query_screens_screen_info_length*(
#     R: ptr xcb_xinerama_query_screens_reply_t): cint
# proc xcb_xinerama_query_screens_screen_info_iterator*(
#     R: ptr xcb_xinerama_query_screens_reply_t): xcb_xinerama_screen_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xinerama_query_screens_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xinerama_query_screens_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_query_screens_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_query_screens_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xinput.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Input_API XCB Input API
# ##  @brief Input XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xfixes

# const
#   XCB_INPUT_MAJOR_VERSION* = 2
#   XCB_INPUT_MINOR_VERSION* = 3

# var xcb_input_id*: xcb_extension_t

# type
#   xcb_input_event_class_t* = uint32

# ## *
# ##  @brief xcb_input_event_class_iterator_t
# ##

# type
#   xcb_input_event_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_event_class_t
#     rem*: cint
#     index*: cint

#   xcb_input_key_code_t* = uint8

# ## *
# ##  @brief xcb_input_key_code_iterator_t
# ##

# type
#   xcb_input_key_code_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_key_code_t
#     rem*: cint
#     index*: cint

#   xcb_input_device_id_t* = uint16

# ## *
# ##  @brief xcb_input_device_id_iterator_t
# ##

# type
#   xcb_input_device_id_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_id_t
#     rem*: cint
#     index*: cint

#   xcb_input_fp1616_t* = int32

# ## *
# ##  @brief xcb_input_fp1616_iterator_t
# ##

# type
#   xcb_input_fp1616_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_fp1616_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_fp3232_t
# ##

# type
#   xcb_input_fp3232_t* {.bycopy.} = object
#     integral*: int32
#     frac*: uint32


# ## *
# ##  @brief xcb_input_fp3232_iterator_t
# ##

# type
#   xcb_input_fp3232_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_fp3232_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_get_extension_version_cookie_t
# ##

# type
#   xcb_input_get_extension_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_extension_version.

# const
#   XCB_INPUT_GET_EXTENSION_VERSION* = 1

# ## *
# ##  @brief xcb_input_get_extension_version_request_t
# ##

# type
#   xcb_input_get_extension_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     name_len*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_get_extension_version_reply_t
# ##

# type
#   xcb_input_get_extension_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major*: uint16
#     server_minor*: uint16
#     present*: uint8
#     pad0*: array[19, uint8]

#   xcb_input_device_use_t* = enum
#     XCB_INPUT_DEVICE_USE_IS_X_POINTER = 0, XCB_INPUT_DEVICE_USE_IS_X_KEYBOARD = 1,
#     XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_DEVICE = 2,
#     XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_KEYBOARD = 3,
#     XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_POINTER = 4
#   xcb_input_input_class_t* = enum
#     XCB_INPUT_INPUT_CLASS_KEY = 0, XCB_INPUT_INPUT_CLASS_BUTTON = 1,
#     XCB_INPUT_INPUT_CLASS_VALUATOR = 2, XCB_INPUT_INPUT_CLASS_FEEDBACK = 3,
#     XCB_INPUT_INPUT_CLASS_PROXIMITY = 4, XCB_INPUT_INPUT_CLASS_FOCUS = 5,
#     XCB_INPUT_INPUT_CLASS_OTHER = 6
#   xcb_input_valuator_mode_t* = enum
#     XCB_INPUT_VALUATOR_MODE_RELATIVE = 0, XCB_INPUT_VALUATOR_MODE_ABSOLUTE = 1




# ## *
# ##  @brief xcb_input_device_info_t
# ##

# type
#   xcb_input_device_info_t* {.bycopy.} = object
#     device_type*: xcb_atom_t
#     device_id*: uint8
#     num_class_info*: uint8
#     device_use*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_device_info_iterator_t
# ##

# type
#   xcb_input_device_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_key_info_t
# ##

# type
#   xcb_input_key_info_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     min_keycode*: xcb_input_key_code_t
#     max_keycode*: xcb_input_key_code_t
#     num_keys*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_key_info_iterator_t
# ##

# type
#   xcb_input_key_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_key_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_button_info_t
# ##

# type
#   xcb_input_button_info_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     num_buttons*: uint16


# ## *
# ##  @brief xcb_input_button_info_iterator_t
# ##

# type
#   xcb_input_button_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_button_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_axis_info_t
# ##

# type
#   xcb_input_axis_info_t* {.bycopy.} = object
#     resolution*: uint32
#     minimum*: int32
#     maximum*: int32


# ## *
# ##  @brief xcb_input_axis_info_iterator_t
# ##

# type
#   xcb_input_axis_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_axis_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_valuator_info_t
# ##

# type
#   xcb_input_valuator_info_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     axes_len*: uint8
#     mode*: uint8
#     motion_size*: uint32


# ## *
# ##  @brief xcb_input_valuator_info_iterator_t
# ##

# type
#   xcb_input_valuator_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_valuator_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_input_info_info_t
# ##

# type
#   INNER_C_STRUCT_xinput_248* {.bycopy.} = object
#     min_keycode*: xcb_input_key_code_t
#     max_keycode*: xcb_input_key_code_t
#     num_keys*: uint16
#     pad0*: array[2, uint8]

#   INNER_C_STRUCT_xinput_254* {.bycopy.} = object
#     num_buttons*: uint16

#   INNER_C_STRUCT_xinput_257* {.bycopy.} = object
#     axes_len*: uint8
#     mode*: uint8
#     motion_size*: uint32
#     axes*: ptr xcb_input_axis_info_t

#   xcb_input_input_info_info_t* {.bycopy.} = object
#     key*: INNER_C_STRUCT_xinput_248
#     button*: INNER_C_STRUCT_xinput_254
#     valuator*: INNER_C_STRUCT_xinput_257


# ## *
# ##  @brief xcb_input_input_info_t
# ##

# type
#   xcb_input_input_info_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8


# proc xcb_input_input_info_info*(R: ptr xcb_input_input_info_t): pointer
# ## *
# ##  @brief xcb_input_input_info_iterator_t
# ##

# type
#   xcb_input_input_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_input_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_name_t
# ##

# type
#   xcb_input_device_name_t* {.bycopy.} = object
#     len*: uint8


# ## *
# ##  @brief xcb_input_device_name_iterator_t
# ##

# type
#   xcb_input_device_name_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_name_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_list_input_devices_cookie_t
# ##

# type
#   xcb_input_list_input_devices_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_list_input_devices.

# const
#   XCB_INPUT_LIST_INPUT_DEVICES* = 2

# ## *
# ##  @brief xcb_input_list_input_devices_request_t
# ##

# type
#   xcb_input_list_input_devices_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_input_list_input_devices_reply_t
# ##

# type
#   xcb_input_list_input_devices_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     devices_len*: uint8
#     pad0*: array[23, uint8]

#   xcb_input_event_type_base_t* = uint8

# ## *
# ##  @brief xcb_input_event_type_base_iterator_t
# ##

# type
#   xcb_input_event_type_base_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_event_type_base_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_input_class_info_t
# ##

# type
#   xcb_input_input_class_info_t* {.bycopy.} = object
#     class_id*: uint8
#     event_type_base*: xcb_input_event_type_base_t


# ## *
# ##  @brief xcb_input_input_class_info_iterator_t
# ##

# type
#   xcb_input_input_class_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_input_class_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_open_device_cookie_t
# ##

# type
#   xcb_input_open_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_open_device.

# const
#   XCB_INPUT_OPEN_DEVICE* = 3

# ## *
# ##  @brief xcb_input_open_device_request_t
# ##

# type
#   xcb_input_open_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_open_device_reply_t
# ##

# type
#   xcb_input_open_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_classes*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_close_device.

# const
#   XCB_INPUT_CLOSE_DEVICE* = 4

# ## *
# ##  @brief xcb_input_close_device_request_t
# ##

# type
#   xcb_input_close_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_set_device_mode_cookie_t
# ##

# type
#   xcb_input_set_device_mode_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_set_device_mode.

# const
#   XCB_INPUT_SET_DEVICE_MODE* = 5

# ## *
# ##  @brief xcb_input_set_device_mode_request_t
# ##

# type
#   xcb_input_set_device_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     mode*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_set_device_mode_reply_t
# ##

# type
#   xcb_input_set_device_mode_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_select_extension_event.

# const
#   XCB_INPUT_SELECT_EXTENSION_EVENT* = 6

# ## *
# ##  @brief xcb_input_select_extension_event_request_t
# ##

# type
#   xcb_input_select_extension_event_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     num_classes*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_get_selected_extension_events_cookie_t
# ##

# type
#   xcb_input_get_selected_extension_events_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_selected_extension_events.

# const
#   XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS* = 7

# ## *
# ##  @brief xcb_input_get_selected_extension_events_request_t
# ##

# type
#   xcb_input_get_selected_extension_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_input_get_selected_extension_events_reply_t
# ##

# type
#   xcb_input_get_selected_extension_events_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_this_classes*: uint16
#     num_all_classes*: uint16
#     pad0*: array[20, uint8]

#   xcb_input_propagate_mode_t* = enum
#     XCB_INPUT_PROPAGATE_MODE_ADD_TO_LIST = 0,
#     XCB_INPUT_PROPAGATE_MODE_DELETE_FROM_LIST = 1


# ## * Opcode for xcb_input_change_device_dont_propagate_list.

# const
#   XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST* = 8

# ## *
# ##  @brief xcb_input_change_device_dont_propagate_list_request_t
# ##

# type
#   xcb_input_change_device_dont_propagate_list_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     num_classes*: uint16
#     mode*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_get_device_dont_propagate_list_cookie_t
# ##

# type
#   xcb_input_get_device_dont_propagate_list_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_dont_propagate_list.

# const
#   XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST* = 9

# ## *
# ##  @brief xcb_input_get_device_dont_propagate_list_request_t
# ##

# type
#   xcb_input_get_device_dont_propagate_list_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_input_get_device_dont_propagate_list_reply_t
# ##

# type
#   xcb_input_get_device_dont_propagate_list_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_classes*: uint16
#     pad0*: array[22, uint8]


# ## *
# ##  @brief xcb_input_device_time_coord_t
# ##

# type
#   xcb_input_device_time_coord_t* {.bycopy.} = object
#     time*: xcb_timestamp_t


# ## *
# ##  @brief xcb_input_device_time_coord_iterator_t
# ##

# type
#   xcb_input_device_time_coord_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_time_coord_t
#     rem*: cint
#     index*: cint
#     num_axes*: uint8         ## *<


# ## *
# ##  @brief xcb_input_get_device_motion_events_cookie_t
# ##

# type
#   xcb_input_get_device_motion_events_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_motion_events.

# const
#   XCB_INPUT_GET_DEVICE_MOTION_EVENTS* = 10

# ## *
# ##  @brief xcb_input_get_device_motion_events_request_t
# ##

# type
#   xcb_input_get_device_motion_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     start*: xcb_timestamp_t
#     stop*: xcb_timestamp_t
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_device_motion_events_reply_t
# ##

# type
#   xcb_input_get_device_motion_events_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_events*: uint32
#     num_axes*: uint8
#     device_mode*: uint8
#     pad0*: array[18, uint8]


# ## *
# ##  @brief xcb_input_change_keyboard_device_cookie_t
# ##

# type
#   xcb_input_change_keyboard_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_change_keyboard_device.

# const
#   XCB_INPUT_CHANGE_KEYBOARD_DEVICE* = 11

# ## *
# ##  @brief xcb_input_change_keyboard_device_request_t
# ##

# type
#   xcb_input_change_keyboard_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_change_keyboard_device_reply_t
# ##

# type
#   xcb_input_change_keyboard_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_change_pointer_device_cookie_t
# ##

# type
#   xcb_input_change_pointer_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_change_pointer_device.

# const
#   XCB_INPUT_CHANGE_POINTER_DEVICE* = 12

# ## *
# ##  @brief xcb_input_change_pointer_device_request_t
# ##

# type
#   xcb_input_change_pointer_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     x_axis*: uint8
#     y_axis*: uint8
#     device_id*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_change_pointer_device_reply_t
# ##

# type
#   xcb_input_change_pointer_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_grab_device_cookie_t
# ##

# type
#   xcb_input_grab_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_grab_device.

# const
#   XCB_INPUT_GRAB_DEVICE* = 13

# ## *
# ##  @brief xcb_input_grab_device_request_t
# ##

# type
#   xcb_input_grab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     time*: xcb_timestamp_t
#     num_classes*: uint16
#     this_device_mode*: uint8
#     other_device_mode*: uint8
#     owner_events*: uint8
#     device_id*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_grab_device_reply_t
# ##

# type
#   xcb_input_grab_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_ungrab_device.

# const
#   XCB_INPUT_UNGRAB_DEVICE* = 14

# ## *
# ##  @brief xcb_input_ungrab_device_request_t
# ##

# type
#   xcb_input_ungrab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t
#     device_id*: uint8
#     pad0*: array[3, uint8]

#   xcb_input_modifier_device_t* = enum
#     XCB_INPUT_MODIFIER_DEVICE_USE_X_KEYBOARD = 255


# ## * Opcode for xcb_input_grab_device_key.

# const
#   XCB_INPUT_GRAB_DEVICE_KEY* = 15

# ## *
# ##  @brief xcb_input_grab_device_key_request_t
# ##

# type
#   xcb_input_grab_device_key_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     num_classes*: uint16
#     modifiers*: uint16
#     modifier_device*: uint8
#     grabbed_device*: uint8
#     key*: uint8
#     this_device_mode*: uint8
#     other_device_mode*: uint8
#     owner_events*: uint8
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_input_ungrab_device_key.

# const
#   XCB_INPUT_UNGRAB_DEVICE_KEY* = 16

# ## *
# ##  @brief xcb_input_ungrab_device_key_request_t
# ##

# type
#   xcb_input_ungrab_device_key_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grabWindow*: xcb_window_t
#     modifiers*: uint16
#     modifier_device*: uint8
#     key*: uint8
#     grabbed_device*: uint8


# ## * Opcode for xcb_input_grab_device_button.

# const
#   XCB_INPUT_GRAB_DEVICE_BUTTON* = 17

# ## *
# ##  @brief xcb_input_grab_device_button_request_t
# ##

# type
#   xcb_input_grab_device_button_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     grabbed_device*: uint8
#     modifier_device*: uint8
#     num_classes*: uint16
#     modifiers*: uint16
#     this_device_mode*: uint8
#     other_device_mode*: uint8
#     button*: uint8
#     owner_events*: uint8
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_input_ungrab_device_button.

# const
#   XCB_INPUT_UNGRAB_DEVICE_BUTTON* = 18

# ## *
# ##  @brief xcb_input_ungrab_device_button_request_t
# ##

# type
#   xcb_input_ungrab_device_button_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     modifiers*: uint16
#     modifier_device*: uint8
#     button*: uint8
#     grabbed_device*: uint8
#     pad0*: array[3, uint8]

#   xcb_input_device_input_mode_t* = enum
#     XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_THIS_DEVICE = 0,
#     XCB_INPUT_DEVICE_INPUT_MODE_SYNC_THIS_DEVICE = 1,
#     XCB_INPUT_DEVICE_INPUT_MODE_REPLAY_THIS_DEVICE = 2,
#     XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_OTHER_DEVICES = 3,
#     XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_ALL = 4,
#     XCB_INPUT_DEVICE_INPUT_MODE_SYNC_ALL = 5


# ## * Opcode for xcb_input_allow_device_events.

# const
#   XCB_INPUT_ALLOW_DEVICE_EVENTS* = 19

# ## *
# ##  @brief xcb_input_allow_device_events_request_t
# ##

# type
#   xcb_input_allow_device_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t
#     mode*: uint8
#     device_id*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_get_device_focus_cookie_t
# ##

# type
#   xcb_input_get_device_focus_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_focus.

# const
#   XCB_INPUT_GET_DEVICE_FOCUS* = 20

# ## *
# ##  @brief xcb_input_get_device_focus_request_t
# ##

# type
#   xcb_input_get_device_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_device_focus_reply_t
# ##

# type
#   xcb_input_get_device_focus_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     focus*: xcb_window_t
#     time*: xcb_timestamp_t
#     revert_to*: uint8
#     pad0*: array[15, uint8]


# ## * Opcode for xcb_input_set_device_focus.

# const
#   XCB_INPUT_SET_DEVICE_FOCUS* = 21

# ## *
# ##  @brief xcb_input_set_device_focus_request_t
# ##

# type
#   xcb_input_set_device_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     focus*: xcb_window_t
#     time*: xcb_timestamp_t
#     revert_to*: uint8
#     device_id*: uint8
#     pad0*: array[2, uint8]

#   xcb_input_feedback_class_t* = enum
#     XCB_INPUT_FEEDBACK_CLASS_KEYBOARD = 0, XCB_INPUT_FEEDBACK_CLASS_POINTER = 1,
#     XCB_INPUT_FEEDBACK_CLASS_STRING = 2, XCB_INPUT_FEEDBACK_CLASS_INTEGER = 3,
#     XCB_INPUT_FEEDBACK_CLASS_LED = 4, XCB_INPUT_FEEDBACK_CLASS_BELL = 5


# ## *
# ##  @brief xcb_input_kbd_feedback_state_t
# ##

# type
#   xcb_input_kbd_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     pitch*: uint16
#     duration*: uint16
#     led_mask*: uint32
#     led_values*: uint32
#     global_auto_repeat*: uint8
#     click*: uint8
#     percent*: uint8
#     pad0*: uint8
#     auto_repeats*: array[32, uint8]


# ## *
# ##  @brief xcb_input_kbd_feedback_state_iterator_t
# ##

# type
#   xcb_input_kbd_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_kbd_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_ptr_feedback_state_t
# ##

# type
#   xcb_input_ptr_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     pad0*: array[2, uint8]
#     accel_num*: uint16
#     accel_denom*: uint16
#     threshold*: uint16


# ## *
# ##  @brief xcb_input_ptr_feedback_state_iterator_t
# ##

# type
#   xcb_input_ptr_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_ptr_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_integer_feedback_state_t
# ##

# type
#   xcb_input_integer_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     resolution*: uint32
#     min_value*: int32
#     max_value*: int32


# ## *
# ##  @brief xcb_input_integer_feedback_state_iterator_t
# ##

# type
#   xcb_input_integer_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_integer_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_string_feedback_state_t
# ##

# type
#   xcb_input_string_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     max_symbols*: uint16
#     num_keysyms*: uint16


# ## *
# ##  @brief xcb_input_string_feedback_state_iterator_t
# ##

# type
#   xcb_input_string_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_string_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_bell_feedback_state_t
# ##

# type
#   xcb_input_bell_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     percent*: uint8
#     pad0*: array[3, uint8]
#     pitch*: uint16
#     duration*: uint16


# ## *
# ##  @brief xcb_input_bell_feedback_state_iterator_t
# ##

# type
#   xcb_input_bell_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_bell_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_led_feedback_state_t
# ##

# type
#   xcb_input_led_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     led_mask*: uint32
#     led_values*: uint32


# ## *
# ##  @brief xcb_input_led_feedback_state_iterator_t
# ##

# type
#   xcb_input_led_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_led_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_feedback_state_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_1023* {.bycopy.} = object
#     pitch*: uint16
#     duration*: uint16
#     led_mask*: uint32
#     led_values*: uint32
#     global_auto_repeat*: uint8
#     click*: uint8
#     percent*: uint8
#     pad0*: uint8
#     auto_repeats*: array[32, uint8]

#   INNER_C_STRUCT_xinput_1034* {.bycopy.} = object
#     pad1*: array[2, uint8]
#     accel_num*: uint16
#     accel_denom*: uint16
#     threshold*: uint16

#   INNER_C_STRUCT_xinput_1040* {.bycopy.} = object
#     max_symbols*: uint16
#     num_keysyms*: uint16
#     keysyms*: ptr xcb_keysym_t

#   INNER_C_STRUCT_xinput_1045* {.bycopy.} = object
#     resolution*: uint32
#     min_value*: int32
#     max_value*: int32

#   INNER_C_STRUCT_xinput_1050* {.bycopy.} = object
#     led_mask*: uint32
#     led_values*: uint32

#   INNER_C_STRUCT_xinput_1054* {.bycopy.} = object
#     percent*: uint8
#     pad2*: array[3, uint8]
#     pitch*: uint16
#     duration*: uint16

#   xcb_input_feedback_state_data_t* {.bycopy.} = object
#     keyboard*: INNER_C_STRUCT_xinput_1023
#     pointer*: INNER_C_STRUCT_xinput_1034
#     string*: INNER_C_STRUCT_xinput_1040
#     integer*: INNER_C_STRUCT_xinput_1045
#     led*: INNER_C_STRUCT_xinput_1050
#     bell*: INNER_C_STRUCT_xinput_1054


# ## *
# ##  @brief xcb_input_feedback_state_t
# ##

# type
#   xcb_input_feedback_state_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16


# proc xcb_input_feedback_state_data*(R: ptr xcb_input_feedback_state_t): pointer
# ## *
# ##  @brief xcb_input_feedback_state_iterator_t
# ##

# type
#   xcb_input_feedback_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_feedback_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_get_feedback_control_cookie_t
# ##

# type
#   xcb_input_get_feedback_control_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_feedback_control.

# const
#   XCB_INPUT_GET_FEEDBACK_CONTROL* = 22

# ## *
# ##  @brief xcb_input_get_feedback_control_request_t
# ##

# type
#   xcb_input_get_feedback_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_feedback_control_reply_t
# ##

# type
#   xcb_input_get_feedback_control_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_feedbacks*: uint16
#     pad0*: array[22, uint8]


# ## *
# ##  @brief xcb_input_kbd_feedback_ctl_t
# ##

# type
#   xcb_input_kbd_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     key*: xcb_input_key_code_t
#     auto_repeat_mode*: uint8
#     key_click_percent*: int8
#     bell_percent*: int8
#     bell_pitch*: int16
#     bell_duration*: int16
#     led_mask*: uint32
#     led_values*: uint32


# ## *
# ##  @brief xcb_input_kbd_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_kbd_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_kbd_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_ptr_feedback_ctl_t
# ##

# type
#   xcb_input_ptr_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     pad0*: array[2, uint8]
#     num*: int16
#     denom*: int16
#     threshold*: int16


# ## *
# ##  @brief xcb_input_ptr_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_ptr_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_ptr_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_integer_feedback_ctl_t
# ##

# type
#   xcb_input_integer_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     int_to_display*: int32


# ## *
# ##  @brief xcb_input_integer_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_integer_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_integer_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_string_feedback_ctl_t
# ##

# type
#   xcb_input_string_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     pad0*: array[2, uint8]
#     num_keysyms*: uint16


# ## *
# ##  @brief xcb_input_string_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_string_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_string_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_bell_feedback_ctl_t
# ##

# type
#   xcb_input_bell_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     percent*: int8
#     pad0*: array[3, uint8]
#     pitch*: int16
#     duration*: int16


# ## *
# ##  @brief xcb_input_bell_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_bell_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_bell_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_led_feedback_ctl_t
# ##

# type
#   xcb_input_led_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16
#     led_mask*: uint32
#     led_values*: uint32


# ## *
# ##  @brief xcb_input_led_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_led_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_led_feedback_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_feedback_ctl_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_1249* {.bycopy.} = object
#     key*: xcb_input_key_code_t
#     auto_repeat_mode*: uint8
#     key_click_percent*: int8
#     bell_percent*: int8
#     bell_pitch*: int16
#     bell_duration*: int16
#     led_mask*: uint32
#     led_values*: uint32

#   INNER_C_STRUCT_xinput_1259* {.bycopy.} = object
#     pad0*: array[2, uint8]
#     num*: int16
#     denom*: int16
#     threshold*: int16

#   INNER_C_STRUCT_xinput_1265* {.bycopy.} = object
#     pad1*: array[2, uint8]
#     num_keysyms*: uint16
#     keysyms*: ptr xcb_keysym_t

#   INNER_C_STRUCT_xinput_1270* {.bycopy.} = object
#     int_to_display*: int32

#   INNER_C_STRUCT_xinput_1273* {.bycopy.} = object
#     led_mask*: uint32
#     led_values*: uint32

#   INNER_C_STRUCT_xinput_1277* {.bycopy.} = object
#     percent*: int8
#     pad2*: array[3, uint8]
#     pitch*: int16
#     duration*: int16

#   xcb_input_feedback_ctl_data_t* {.bycopy.} = object
#     keyboard*: INNER_C_STRUCT_xinput_1249
#     pointer*: INNER_C_STRUCT_xinput_1259
#     string*: INNER_C_STRUCT_xinput_1265
#     integer*: INNER_C_STRUCT_xinput_1270
#     led*: INNER_C_STRUCT_xinput_1273
#     bell*: INNER_C_STRUCT_xinput_1277


# ## *
# ##  @brief xcb_input_feedback_ctl_t
# ##

# type
#   xcb_input_feedback_ctl_t* {.bycopy.} = object
#     class_id*: uint8
#     feedback_id*: uint8
#     len*: uint16


# proc xcb_input_feedback_ctl_data*(R: ptr xcb_input_feedback_ctl_t): pointer
# ## *
# ##  @brief xcb_input_feedback_ctl_iterator_t
# ##

# type
#   xcb_input_feedback_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_feedback_ctl_t
#     rem*: cint
#     index*: cint

#   xcb_input_change_feedback_control_mask_t* = enum
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT = 1,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PERCENT = 2,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PITCH = 4,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_DURATION = 8,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED = 16,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED_MODE = 32,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY = 64,
#     XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_AUTO_REPEAT_MODE = 128

# const
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_STRING = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_INTEGER = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_NUM = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_DENOM = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PERCENT
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_THRESHOLD = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PITCH

# ## * Opcode for xcb_input_change_feedback_control.

# const
#   XCB_INPUT_CHANGE_FEEDBACK_CONTROL* = 23

# ## *
# ##  @brief xcb_input_change_feedback_control_request_t
# ##

# type
#   xcb_input_change_feedback_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     mask*: uint32
#     device_id*: uint8
#     feedback_id*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_get_device_key_mapping_cookie_t
# ##

# type
#   xcb_input_get_device_key_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_key_mapping.

# const
#   XCB_INPUT_GET_DEVICE_KEY_MAPPING* = 24

# ## *
# ##  @brief xcb_input_get_device_key_mapping_request_t
# ##

# type
#   xcb_input_get_device_key_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     first_keycode*: xcb_input_key_code_t
#     count*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_get_device_key_mapping_reply_t
# ##

# type
#   xcb_input_get_device_key_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     keysyms_per_keycode*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_change_device_key_mapping.

# const
#   XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING* = 25

# ## *
# ##  @brief xcb_input_change_device_key_mapping_request_t
# ##

# type
#   xcb_input_change_device_key_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     first_keycode*: xcb_input_key_code_t
#     keysyms_per_keycode*: uint8
#     keycode_count*: uint8


# ## *
# ##  @brief xcb_input_get_device_modifier_mapping_cookie_t
# ##

# type
#   xcb_input_get_device_modifier_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_modifier_mapping.

# const
#   XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING* = 26

# ## *
# ##  @brief xcb_input_get_device_modifier_mapping_request_t
# ##

# type
#   xcb_input_get_device_modifier_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_device_modifier_mapping_reply_t
# ##

# type
#   xcb_input_get_device_modifier_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     keycodes_per_modifier*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_set_device_modifier_mapping_cookie_t
# ##

# type
#   xcb_input_set_device_modifier_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_set_device_modifier_mapping.

# const
#   XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING* = 27

# ## *
# ##  @brief xcb_input_set_device_modifier_mapping_request_t
# ##

# type
#   xcb_input_set_device_modifier_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     keycodes_per_modifier*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_set_device_modifier_mapping_reply_t
# ##

# type
#   xcb_input_set_device_modifier_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_get_device_button_mapping_cookie_t
# ##

# type
#   xcb_input_get_device_button_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_button_mapping.

# const
#   XCB_INPUT_GET_DEVICE_BUTTON_MAPPING* = 28

# ## *
# ##  @brief xcb_input_get_device_button_mapping_request_t
# ##

# type
#   xcb_input_get_device_button_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_device_button_mapping_reply_t
# ##

# type
#   xcb_input_get_device_button_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     map_size*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_set_device_button_mapping_cookie_t
# ##

# type
#   xcb_input_set_device_button_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_set_device_button_mapping.

# const
#   XCB_INPUT_SET_DEVICE_BUTTON_MAPPING* = 29

# ## *
# ##  @brief xcb_input_set_device_button_mapping_request_t
# ##

# type
#   xcb_input_set_device_button_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     map_size*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_set_device_button_mapping_reply_t
# ##

# type
#   xcb_input_set_device_button_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_key_state_t
# ##

# type
#   xcb_input_key_state_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     num_keys*: uint8
#     pad0*: uint8
#     keys*: array[32, uint8]


# ## *
# ##  @brief xcb_input_key_state_iterator_t
# ##

# type
#   xcb_input_key_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_key_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_button_state_t
# ##

# type
#   xcb_input_button_state_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     num_buttons*: uint8
#     pad0*: uint8
#     buttons*: array[32, uint8]


# ## *
# ##  @brief xcb_input_button_state_iterator_t
# ##

# type
#   xcb_input_button_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_button_state_t
#     rem*: cint
#     index*: cint

#   xcb_input_valuator_state_mode_mask_t* = enum
#     XCB_INPUT_VALUATOR_STATE_MODE_MASK_DEVICE_MODE_ABSOLUTE = 1,
#     XCB_INPUT_VALUATOR_STATE_MODE_MASK_OUT_OF_PROXIMITY = 2


# ## *
# ##  @brief xcb_input_valuator_state_t
# ##

# type
#   xcb_input_valuator_state_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8
#     num_valuators*: uint8
#     mode*: uint8


# ## *
# ##  @brief xcb_input_valuator_state_iterator_t
# ##

# type
#   xcb_input_valuator_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_valuator_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_input_state_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_1591* {.bycopy.} = object
#     num_keys*: uint8
#     pad0*: uint8
#     keys*: array[32, uint8]

#   INNER_C_STRUCT_xinput_1596* {.bycopy.} = object
#     num_buttons*: uint8
#     pad1*: uint8
#     buttons*: array[32, uint8]

#   INNER_C_STRUCT_xinput_1601* {.bycopy.} = object
#     num_valuators*: uint8
#     mode*: uint8
#     valuators*: ptr int32

#   xcb_input_input_state_data_t* {.bycopy.} = object
#     key*: INNER_C_STRUCT_xinput_1591
#     button*: INNER_C_STRUCT_xinput_1596
#     valuator*: INNER_C_STRUCT_xinput_1601


# ## *
# ##  @brief xcb_input_input_state_t
# ##

# type
#   xcb_input_input_state_t* {.bycopy.} = object
#     class_id*: uint8
#     len*: uint8


# proc xcb_input_input_state_data*(R: ptr xcb_input_input_state_t): pointer
# ## *
# ##  @brief xcb_input_input_state_iterator_t
# ##

# type
#   xcb_input_input_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_input_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_query_device_state_cookie_t
# ##

# type
#   xcb_input_query_device_state_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_query_device_state.

# const
#   XCB_INPUT_QUERY_DEVICE_STATE* = 30

# ## *
# ##  @brief xcb_input_query_device_state_request_t
# ##

# type
#   xcb_input_query_device_state_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_query_device_state_reply_t
# ##

# type
#   xcb_input_query_device_state_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_classes*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_device_bell.

# const
#   XCB_INPUT_DEVICE_BELL* = 32

# ## *
# ##  @brief xcb_input_device_bell_request_t
# ##

# type
#   xcb_input_device_bell_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     feedback_id*: uint8
#     feedback_class*: uint8
#     percent*: int8


# ## *
# ##  @brief xcb_input_set_device_valuators_cookie_t
# ##

# type
#   xcb_input_set_device_valuators_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_set_device_valuators.

# const
#   XCB_INPUT_SET_DEVICE_VALUATORS* = 33

# ## *
# ##  @brief xcb_input_set_device_valuators_request_t
# ##

# type
#   xcb_input_set_device_valuators_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     first_valuator*: uint8
#     num_valuators*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_set_device_valuators_reply_t
# ##

# type
#   xcb_input_set_device_valuators_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]

#   xcb_input_device_control_t* = enum
#     XCB_INPUT_DEVICE_CONTROL_RESOLUTION = 1,
#     XCB_INPUT_DEVICE_CONTROL_ABS_CALIB = 2, XCB_INPUT_DEVICE_CONTROL_CORE = 3,
#     XCB_INPUT_DEVICE_CONTROL_ENABLE = 4, XCB_INPUT_DEVICE_CONTROL_ABS_AREA = 5


# ## *
# ##  @brief xcb_input_device_resolution_state_t
# ##

# type
#   xcb_input_device_resolution_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     num_valuators*: uint32


# ## *
# ##  @brief xcb_input_device_resolution_state_iterator_t
# ##

# type
#   xcb_input_device_resolution_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_resolution_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_abs_calib_state_t
# ##

# type
#   xcb_input_device_abs_calib_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     min_x*: int32
#     max_x*: int32
#     min_y*: int32
#     max_y*: int32
#     flip_x*: uint32
#     flip_y*: uint32
#     rotation*: uint32
#     button_threshold*: uint32


# ## *
# ##  @brief xcb_input_device_abs_calib_state_iterator_t
# ##

# type
#   xcb_input_device_abs_calib_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_abs_calib_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_abs_area_state_t
# ##

# type
#   xcb_input_device_abs_area_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     offset_x*: uint32
#     offset_y*: uint32
#     width*: uint32
#     height*: uint32
#     screen*: uint32
#     following*: uint32


# ## *
# ##  @brief xcb_input_device_abs_area_state_iterator_t
# ##

# type
#   xcb_input_device_abs_area_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_abs_area_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_core_state_t
# ##

# type
#   xcb_input_device_core_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     status*: uint8
#     iscore*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_device_core_state_iterator_t
# ##

# type
#   xcb_input_device_core_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_core_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_enable_state_t
# ##

# type
#   xcb_input_device_enable_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     enable*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_device_enable_state_iterator_t
# ##

# type
#   xcb_input_device_enable_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_enable_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_state_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_1829* {.bycopy.} = object
#     num_valuators*: uint32
#     resolution_values*: ptr uint32
#     resolution_min*: ptr uint32
#     resolution_max*: ptr uint32

#   INNER_C_STRUCT_xinput_1835* {.bycopy.} = object
#     min_x*: int32
#     max_x*: int32
#     min_y*: int32
#     max_y*: int32
#     flip_x*: uint32
#     flip_y*: uint32
#     rotation*: uint32
#     button_threshold*: uint32

#   INNER_C_STRUCT_xinput_1845* {.bycopy.} = object
#     status*: uint8
#     iscore*: uint8
#     pad0*: array[2, uint8]

#   INNER_C_STRUCT_xinput_1850* {.bycopy.} = object
#     enable*: uint8
#     pad1*: array[3, uint8]

#   INNER_C_STRUCT_xinput_1854* {.bycopy.} = object
#     offset_x*: uint32
#     offset_y*: uint32
#     width*: uint32
#     height*: uint32
#     screen*: uint32
#     following*: uint32

#   xcb_input_device_state_data_t* {.bycopy.} = object
#     resolution*: INNER_C_STRUCT_xinput_1829
#     abs_calib*: INNER_C_STRUCT_xinput_1835
#     core*: INNER_C_STRUCT_xinput_1845
#     enable*: INNER_C_STRUCT_xinput_1850
#     abs_area*: INNER_C_STRUCT_xinput_1854


# ## *
# ##  @brief xcb_input_device_state_t
# ##

# type
#   xcb_input_device_state_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16


# proc xcb_input_device_state_data*(R: ptr xcb_input_device_state_t): pointer
# ## *
# ##  @brief xcb_input_device_state_iterator_t
# ##

# type
#   xcb_input_device_state_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_state_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_get_device_control_cookie_t
# ##

# type
#   xcb_input_get_device_control_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_control.

# const
#   XCB_INPUT_GET_DEVICE_CONTROL* = 34

# ## *
# ##  @brief xcb_input_get_device_control_request_t
# ##

# type
#   xcb_input_get_device_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     control_id*: uint16
#     device_id*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_get_device_control_reply_t
# ##

# type
#   xcb_input_get_device_control_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_device_resolution_ctl_t
# ##

# type
#   xcb_input_device_resolution_ctl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     first_valuator*: uint8
#     num_valuators*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_device_resolution_ctl_iterator_t
# ##

# type
#   xcb_input_device_resolution_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_resolution_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_abs_calib_ctl_t
# ##

# type
#   xcb_input_device_abs_calib_ctl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     min_x*: int32
#     max_x*: int32
#     min_y*: int32
#     max_y*: int32
#     flip_x*: uint32
#     flip_y*: uint32
#     rotation*: uint32
#     button_threshold*: uint32


# ## *
# ##  @brief xcb_input_device_abs_calib_ctl_iterator_t
# ##

# type
#   xcb_input_device_abs_calib_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_abs_calib_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_abs_area_ctrl_t
# ##

# type
#   xcb_input_device_abs_area_ctrl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     offset_x*: uint32
#     offset_y*: uint32
#     width*: int32
#     height*: int32
#     screen*: int32
#     following*: uint32


# ## *
# ##  @brief xcb_input_device_abs_area_ctrl_iterator_t
# ##

# type
#   xcb_input_device_abs_area_ctrl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_abs_area_ctrl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_core_ctrl_t
# ##

# type
#   xcb_input_device_core_ctrl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     status*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_device_core_ctrl_iterator_t
# ##

# type
#   xcb_input_device_core_ctrl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_core_ctrl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_enable_ctrl_t
# ##

# type
#   xcb_input_device_enable_ctrl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16
#     enable*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_device_enable_ctrl_iterator_t
# ##

# type
#   xcb_input_device_enable_ctrl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_enable_ctrl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_ctl_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_2028* {.bycopy.} = object
#     first_valuator*: uint8
#     num_valuators*: uint8
#     pad0*: array[2, uint8]
#     resolution_values*: ptr uint32

#   INNER_C_STRUCT_xinput_2034* {.bycopy.} = object
#     min_x*: int32
#     max_x*: int32
#     min_y*: int32
#     max_y*: int32
#     flip_x*: uint32
#     flip_y*: uint32
#     rotation*: uint32
#     button_threshold*: uint32

#   INNER_C_STRUCT_xinput_2044* {.bycopy.} = object
#     status*: uint8
#     pad1*: array[3, uint8]

#   INNER_C_STRUCT_xinput_2048* {.bycopy.} = object
#     enable*: uint8
#     pad2*: array[3, uint8]

#   INNER_C_STRUCT_xinput_2052* {.bycopy.} = object
#     offset_x*: uint32
#     offset_y*: uint32
#     width*: int32
#     height*: int32
#     screen*: int32
#     following*: uint32

#   xcb_input_device_ctl_data_t* {.bycopy.} = object
#     resolution*: INNER_C_STRUCT_xinput_2028
#     abs_calib*: INNER_C_STRUCT_xinput_2034
#     core*: INNER_C_STRUCT_xinput_2044
#     enable*: INNER_C_STRUCT_xinput_2048
#     abs_area*: INNER_C_STRUCT_xinput_2052


# ## *
# ##  @brief xcb_input_device_ctl_t
# ##

# type
#   xcb_input_device_ctl_t* {.bycopy.} = object
#     control_id*: uint16
#     len*: uint16


# proc xcb_input_device_ctl_data*(R: ptr xcb_input_device_ctl_t): pointer
# ## *
# ##  @brief xcb_input_device_ctl_iterator_t
# ##

# type
#   xcb_input_device_ctl_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_ctl_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_change_device_control_cookie_t
# ##

# type
#   xcb_input_change_device_control_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_change_device_control.

# const
#   XCB_INPUT_CHANGE_DEVICE_CONTROL* = 35

# ## *
# ##  @brief xcb_input_change_device_control_request_t
# ##

# type
#   xcb_input_change_device_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     control_id*: uint16
#     device_id*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_change_device_control_reply_t
# ##

# type
#   xcb_input_change_device_control_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad0*: array[23, uint8]


# ## *
# ##  @brief xcb_input_list_device_properties_cookie_t
# ##

# type
#   xcb_input_list_device_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_list_device_properties.

# const
#   XCB_INPUT_LIST_DEVICE_PROPERTIES* = 36

# ## *
# ##  @brief xcb_input_list_device_properties_request_t
# ##

# type
#   xcb_input_list_device_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_list_device_properties_reply_t
# ##

# type
#   xcb_input_list_device_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_atoms*: uint16
#     pad0*: array[22, uint8]

#   xcb_input_property_format_t* = enum
#     XCB_INPUT_PROPERTY_FORMAT_8_BITS = 8, XCB_INPUT_PROPERTY_FORMAT_16_BITS = 16,
#     XCB_INPUT_PROPERTY_FORMAT_32_BITS = 32


# ## *
# ##  @brief xcb_input_change_device_property_items_t
# ##

# type
#   xcb_input_change_device_property_items_t* {.bycopy.} = object
#     data8*: ptr uint8
#     data16*: ptr uint16
#     data32*: ptr uint32


# ## * Opcode for xcb_input_change_device_property.

# const
#   XCB_INPUT_CHANGE_DEVICE_PROPERTY* = 37

# ## *
# ##  @brief xcb_input_change_device_property_request_t
# ##

# type
#   xcb_input_change_device_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     device_id*: uint8
#     format*: uint8
#     mode*: uint8
#     pad0*: uint8
#     num_items*: uint32


# ## * Opcode for xcb_input_delete_device_property.

# const
#   XCB_INPUT_DELETE_DEVICE_PROPERTY* = 38

# ## *
# ##  @brief xcb_input_delete_device_property_request_t
# ##

# type
#   xcb_input_delete_device_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     property*: xcb_atom_t
#     device_id*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_get_device_property_cookie_t
# ##

# type
#   xcb_input_get_device_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_get_device_property.

# const
#   XCB_INPUT_GET_DEVICE_PROPERTY* = 39

# ## *
# ##  @brief xcb_input_get_device_property_request_t
# ##

# type
#   xcb_input_get_device_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     offset*: uint32
#     len*: uint32
#     device_id*: uint8
#     _delete*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_get_device_property_items_t
# ##

# type
#   xcb_input_get_device_property_items_t* {.bycopy.} = object
#     data8*: ptr uint8
#     data16*: ptr uint16
#     data32*: ptr uint32


# ## *
# ##  @brief xcb_input_get_device_property_reply_t
# ##

# type
#   xcb_input_get_device_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     xi_reply_type*: uint8
#     sequence*: uint16
#     length*: uint32
#     `type`*: xcb_atom_t
#     bytes_after*: uint32
#     num_items*: uint32
#     format*: uint8
#     device_id*: uint8
#     pad0*: array[10, uint8]

#   xcb_input_device_t* = enum
#     XCB_INPUT_DEVICE_ALL = 0, XCB_INPUT_DEVICE_ALL_MASTER = 1


# ## *
# ##  @brief xcb_input_group_info_t
# ##

# type
#   xcb_input_group_info_t* {.bycopy.} = object
#     base*: uint8
#     latched*: uint8
#     locked*: uint8
#     effective*: uint8


# ## *
# ##  @brief xcb_input_group_info_iterator_t
# ##

# type
#   xcb_input_group_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_group_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_modifier_info_t
# ##

# type
#   xcb_input_modifier_info_t* {.bycopy.} = object
#     base*: uint32
#     latched*: uint32
#     locked*: uint32
#     effective*: uint32


# ## *
# ##  @brief xcb_input_modifier_info_iterator_t
# ##

# type
#   xcb_input_modifier_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_modifier_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_xi_query_pointer_cookie_t
# ##

# type
#   xcb_input_xi_query_pointer_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_query_pointer.

# const
#   XCB_INPUT_XI_QUERY_POINTER* = 40

# ## *
# ##  @brief xcb_input_xi_query_pointer_request_t
# ##

# type
#   xcb_input_xi_query_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_query_pointer_reply_t
# ##

# type
#   xcb_input_xi_query_pointer_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     root*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     win_x*: xcb_input_fp1616_t
#     win_y*: xcb_input_fp1616_t
#     same_screen*: uint8
#     pad1*: uint8
#     buttons_len*: uint16
#     mods*: xcb_input_modifier_info_t
#     group*: xcb_input_group_info_t


# ## * Opcode for xcb_input_xi_warp_pointer.

# const
#   XCB_INPUT_XI_WARP_POINTER* = 41

# ## *
# ##  @brief xcb_input_xi_warp_pointer_request_t
# ##

# type
#   xcb_input_xi_warp_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     src_win*: xcb_window_t
#     dst_win*: xcb_window_t
#     src_x*: xcb_input_fp1616_t
#     src_y*: xcb_input_fp1616_t
#     src_width*: uint16
#     src_height*: uint16
#     dst_x*: xcb_input_fp1616_t
#     dst_y*: xcb_input_fp1616_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_input_xi_change_cursor.

# const
#   XCB_INPUT_XI_CHANGE_CURSOR* = 42

# ## *
# ##  @brief xcb_input_xi_change_cursor_request_t
# ##

# type
#   xcb_input_xi_change_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     cursor*: xcb_cursor_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]

#   xcb_input_hierarchy_change_type_t* = enum
#     XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER = 1,
#     XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER = 2,
#     XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE = 3,
#     XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE = 4
#   xcb_input_change_mode_t* = enum
#     XCB_INPUT_CHANGE_MODE_ATTACH = 1, XCB_INPUT_CHANGE_MODE_FLOAT = 2



# ## *
# ##  @brief xcb_input_add_master_t
# ##

# type
#   xcb_input_add_master_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     name_len*: uint16
#     send_core*: uint8
#     enable*: uint8


# ## *
# ##  @brief xcb_input_add_master_iterator_t
# ##

# type
#   xcb_input_add_master_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_add_master_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_remove_master_t
# ##

# type
#   xcb_input_remove_master_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     deviceid*: xcb_input_device_id_t
#     return_mode*: uint8
#     pad0*: uint8
#     return_pointer*: xcb_input_device_id_t
#     return_keyboard*: xcb_input_device_id_t


# ## *
# ##  @brief xcb_input_remove_master_iterator_t
# ##

# type
#   xcb_input_remove_master_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_remove_master_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_attach_slave_t
# ##

# type
#   xcb_input_attach_slave_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     deviceid*: xcb_input_device_id_t
#     master*: xcb_input_device_id_t


# ## *
# ##  @brief xcb_input_attach_slave_iterator_t
# ##

# type
#   xcb_input_attach_slave_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_attach_slave_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_detach_slave_t
# ##

# type
#   xcb_input_detach_slave_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_detach_slave_iterator_t
# ##

# type
#   xcb_input_detach_slave_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_detach_slave_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_hierarchy_change_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_2469* {.bycopy.} = object
#     name_len*: uint16
#     send_core*: uint8
#     enable*: uint8
#     name*: cstring

#   INNER_C_STRUCT_xinput_2475* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     return_mode*: uint8
#     pad1*: uint8
#     return_pointer*: xcb_input_device_id_t
#     return_keyboard*: xcb_input_device_id_t

#   INNER_C_STRUCT_xinput_2482* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     master*: xcb_input_device_id_t

#   INNER_C_STRUCT_xinput_2486* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     pad2*: array[2, uint8]

#   xcb_input_hierarchy_change_data_t* {.bycopy.} = object
#     add_master*: INNER_C_STRUCT_xinput_2469
#     remove_master*: INNER_C_STRUCT_xinput_2475
#     attach_slave*: INNER_C_STRUCT_xinput_2482
#     detach_slave*: INNER_C_STRUCT_xinput_2486


# ## *
# ##  @brief xcb_input_hierarchy_change_t
# ##

# type
#   xcb_input_hierarchy_change_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16


# proc xcb_input_hierarchy_change_data*(R: ptr xcb_input_hierarchy_change_t): pointer
# ## *
# ##  @brief xcb_input_hierarchy_change_iterator_t
# ##

# type
#   xcb_input_hierarchy_change_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_hierarchy_change_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_input_xi_change_hierarchy.

# const
#   XCB_INPUT_XI_CHANGE_HIERARCHY* = 43

# ## *
# ##  @brief xcb_input_xi_change_hierarchy_request_t
# ##

# type
#   xcb_input_xi_change_hierarchy_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     num_changes*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_input_xi_set_client_pointer.

# const
#   XCB_INPUT_XI_SET_CLIENT_POINTER* = 44

# ## *
# ##  @brief xcb_input_xi_set_client_pointer_request_t
# ##

# type
#   xcb_input_xi_set_client_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_get_client_pointer_cookie_t
# ##

# type
#   xcb_input_xi_get_client_pointer_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_get_client_pointer.

# const
#   XCB_INPUT_XI_GET_CLIENT_POINTER* = 45

# ## *
# ##  @brief xcb_input_xi_get_client_pointer_request_t
# ##

# type
#   xcb_input_xi_get_client_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_input_xi_get_client_pointer_reply_t
# ##

# type
#   xcb_input_xi_get_client_pointer_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     set*: uint8
#     pad1*: uint8
#     deviceid*: xcb_input_device_id_t
#     pad2*: array[20, uint8]

#   xcb_input_xi_event_mask_t* = enum
#     XCB_INPUT_XI_EVENT_MASK_DEVICE_CHANGED = 2,
#     XCB_INPUT_XI_EVENT_MASK_KEY_PRESS = 4, XCB_INPUT_XI_EVENT_MASK_KEY_RELEASE = 8,
#     XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS = 16,
#     XCB_INPUT_XI_EVENT_MASK_BUTTON_RELEASE = 32,
#     XCB_INPUT_XI_EVENT_MASK_MOTION = 64, XCB_INPUT_XI_EVENT_MASK_ENTER = 128,
#     XCB_INPUT_XI_EVENT_MASK_LEAVE = 256, XCB_INPUT_XI_EVENT_MASK_FOCUS_IN = 512,
#     XCB_INPUT_XI_EVENT_MASK_FOCUS_OUT = 1024,
#     XCB_INPUT_XI_EVENT_MASK_HIERARCHY = 2048,
#     XCB_INPUT_XI_EVENT_MASK_PROPERTY = 4096,
#     XCB_INPUT_XI_EVENT_MASK_RAW_KEY_PRESS = 8192,
#     XCB_INPUT_XI_EVENT_MASK_RAW_KEY_RELEASE = 16384,
#     XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_PRESS = 32768,
#     XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_RELEASE = 65536,
#     XCB_INPUT_XI_EVENT_MASK_RAW_MOTION = 131072,
#     XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN = 262144,
#     XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE = 524288,
#     XCB_INPUT_XI_EVENT_MASK_TOUCH_END = 1048576,
#     XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP = 2097152,
#     XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_BEGIN = 4194304,
#     XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_UPDATE = 8388608,
#     XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_END = 16777216,
#     XCB_INPUT_XI_EVENT_MASK_BARRIER_HIT = 33554432,
#     XCB_INPUT_XI_EVENT_MASK_BARRIER_LEAVE = 67108864


# ## *
# ##  @brief xcb_input_event_mask_t
# ##

# type
#   xcb_input_event_mask_t* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     mask_len*: uint16


# ## *
# ##  @brief xcb_input_event_mask_iterator_t
# ##

# type
#   xcb_input_event_mask_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_event_mask_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_input_xi_select_events.

# const
#   XCB_INPUT_XI_SELECT_EVENTS* = 46

# ## *
# ##  @brief xcb_input_xi_select_events_request_t
# ##

# type
#   xcb_input_xi_select_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     num_mask*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_query_version_cookie_t
# ##

# type
#   xcb_input_xi_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_query_version.

# const
#   XCB_INPUT_XI_QUERY_VERSION* = 47

# ## *
# ##  @brief xcb_input_xi_query_version_request_t
# ##

# type
#   xcb_input_xi_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint16
#     minor_version*: uint16


# ## *
# ##  @brief xcb_input_xi_query_version_reply_t
# ##

# type
#   xcb_input_xi_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16
#     pad1*: array[20, uint8]

#   xcb_input_device_class_type_t* = enum
#     XCB_INPUT_DEVICE_CLASS_TYPE_KEY = 0, XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON = 1,
#     XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR = 2,
#     XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL = 3, XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH = 8
#   xcb_input_device_type_t* = enum
#     XCB_INPUT_DEVICE_TYPE_MASTER_POINTER = 1,
#     XCB_INPUT_DEVICE_TYPE_MASTER_KEYBOARD = 2,
#     XCB_INPUT_DEVICE_TYPE_SLAVE_POINTER = 3,
#     XCB_INPUT_DEVICE_TYPE_SLAVE_KEYBOARD = 4,
#     XCB_INPUT_DEVICE_TYPE_FLOATING_SLAVE = 5
#   xcb_input_scroll_flags_t* = enum
#     XCB_INPUT_SCROLL_FLAGS_NO_EMULATION = 1, XCB_INPUT_SCROLL_FLAGS_PREFERRED = 2
#   xcb_input_scroll_type_t* = enum
#     XCB_INPUT_SCROLL_TYPE_VERTICAL = 1, XCB_INPUT_SCROLL_TYPE_HORIZONTAL = 2
#   xcb_input_touch_mode_t* = enum
#     XCB_INPUT_TOUCH_MODE_DIRECT = 1, XCB_INPUT_TOUCH_MODE_DEPENDENT = 2






# ## *
# ##  @brief xcb_input_button_class_t
# ##

# type
#   xcb_input_button_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t
#     num_buttons*: uint16


# ## *
# ##  @brief xcb_input_button_class_iterator_t
# ##

# type
#   xcb_input_button_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_button_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_key_class_t
# ##

# type
#   xcb_input_key_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t
#     num_keys*: uint16


# ## *
# ##  @brief xcb_input_key_class_iterator_t
# ##

# type
#   xcb_input_key_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_key_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_scroll_class_t
# ##

# type
#   xcb_input_scroll_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t
#     number*: uint16
#     scroll_type*: uint16
#     pad0*: array[2, uint8]
#     flags*: uint32
#     increment*: xcb_input_fp3232_t


# ## *
# ##  @brief xcb_input_scroll_class_iterator_t
# ##

# type
#   xcb_input_scroll_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_scroll_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_touch_class_t
# ##

# type
#   xcb_input_touch_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t
#     mode*: uint8
#     num_touches*: uint8


# ## *
# ##  @brief xcb_input_touch_class_iterator_t
# ##

# type
#   xcb_input_touch_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_touch_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_valuator_class_t
# ##

# type
#   xcb_input_valuator_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t
#     number*: uint16
#     label*: xcb_atom_t
#     min*: xcb_input_fp3232_t
#     max*: xcb_input_fp3232_t
#     value*: xcb_input_fp3232_t
#     resolution*: uint32
#     mode*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_valuator_class_iterator_t
# ##

# type
#   xcb_input_valuator_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_valuator_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_device_class_data_t
# ##

# type
#   INNER_C_STRUCT_xinput_2812* {.bycopy.} = object
#     num_keys*: uint16
#     keys*: ptr uint32

#   INNER_C_STRUCT_xinput_2816* {.bycopy.} = object
#     num_buttons*: uint16
#     state*: ptr uint32
#     labels*: ptr xcb_atom_t

#   INNER_C_STRUCT_xinput_2821* {.bycopy.} = object
#     number*: uint16
#     label*: xcb_atom_t
#     min*: xcb_input_fp3232_t
#     max*: xcb_input_fp3232_t
#     value*: xcb_input_fp3232_t
#     resolution*: uint32
#     mode*: uint8
#     pad0*: array[3, uint8]

#   INNER_C_STRUCT_xinput_2831* {.bycopy.} = object
#     number*: uint16
#     scroll_type*: uint16
#     pad1*: array[2, uint8]
#     flags*: uint32
#     increment*: xcb_input_fp3232_t

#   INNER_C_STRUCT_xinput_2838* {.bycopy.} = object
#     mode*: uint8
#     num_touches*: uint8

#   xcb_input_device_class_data_t* {.bycopy.} = object
#     key*: INNER_C_STRUCT_xinput_2812
#     button*: INNER_C_STRUCT_xinput_2816
#     valuator*: INNER_C_STRUCT_xinput_2821
#     scroll*: INNER_C_STRUCT_xinput_2831
#     touch*: INNER_C_STRUCT_xinput_2838


# ## *
# ##  @brief xcb_input_device_class_t
# ##

# type
#   xcb_input_device_class_t* {.bycopy.} = object
#     `type`*: uint16
#     len*: uint16
#     sourceid*: xcb_input_device_id_t


# proc xcb_input_device_class_data*(R: ptr xcb_input_device_class_t): pointer
# ## *
# ##  @brief xcb_input_device_class_iterator_t
# ##

# type
#   xcb_input_device_class_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_device_class_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_xi_device_info_t
# ##

# type
#   xcb_input_xi_device_info_t* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     `type`*: uint16
#     attachment*: xcb_input_device_id_t
#     num_classes*: uint16
#     name_len*: uint16
#     enabled*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_input_xi_device_info_iterator_t
# ##

# type
#   xcb_input_xi_device_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_xi_device_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_xi_query_device_cookie_t
# ##

# type
#   xcb_input_xi_query_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_query_device.

# const
#   XCB_INPUT_XI_QUERY_DEVICE* = 48

# ## *
# ##  @brief xcb_input_xi_query_device_request_t
# ##

# type
#   xcb_input_xi_query_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_query_device_reply_t
# ##

# type
#   xcb_input_xi_query_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_infos*: uint16
#     pad1*: array[22, uint8]


# ## * Opcode for xcb_input_xi_set_focus.

# const
#   XCB_INPUT_XI_SET_FOCUS* = 49

# ## *
# ##  @brief xcb_input_xi_set_focus_request_t
# ##

# type
#   xcb_input_xi_set_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     time*: xcb_timestamp_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_get_focus_cookie_t
# ##

# type
#   xcb_input_xi_get_focus_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_get_focus.

# const
#   XCB_INPUT_XI_GET_FOCUS* = 50

# ## *
# ##  @brief xcb_input_xi_get_focus_request_t
# ##

# type
#   xcb_input_xi_get_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_get_focus_reply_t
# ##

# type
#   xcb_input_xi_get_focus_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     focus*: xcb_window_t
#     pad1*: array[20, uint8]

#   xcb_input_grab_owner_t* = enum
#     XCB_INPUT_GRAB_OWNER_NO_OWNER = 0, XCB_INPUT_GRAB_OWNER_OWNER = 1


# ## *
# ##  @brief xcb_input_xi_grab_device_cookie_t
# ##

# type
#   xcb_input_xi_grab_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_grab_device.

# const
#   XCB_INPUT_XI_GRAB_DEVICE* = 51

# ## *
# ##  @brief xcb_input_xi_grab_device_request_t
# ##

# type
#   xcb_input_xi_grab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     time*: xcb_timestamp_t
#     cursor*: xcb_cursor_t
#     deviceid*: xcb_input_device_id_t
#     mode*: uint8
#     paired_device_mode*: uint8
#     owner_events*: uint8
#     pad0*: uint8
#     mask_len*: uint16


# ## *
# ##  @brief xcb_input_xi_grab_device_reply_t
# ##

# type
#   xcb_input_xi_grab_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     status*: uint8
#     pad1*: array[23, uint8]


# ## * Opcode for xcb_input_xi_ungrab_device.

# const
#   XCB_INPUT_XI_UNGRAB_DEVICE* = 52

# ## *
# ##  @brief xcb_input_xi_ungrab_device_request_t
# ##

# type
#   xcb_input_xi_ungrab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]

#   xcb_input_event_mode_t* = enum
#     XCB_INPUT_EVENT_MODE_ASYNC_DEVICE = 0, XCB_INPUT_EVENT_MODE_SYNC_DEVICE = 1,
#     XCB_INPUT_EVENT_MODE_REPLAY_DEVICE = 2,
#     XCB_INPUT_EVENT_MODE_ASYNC_PAIRED_DEVICE = 3,
#     XCB_INPUT_EVENT_MODE_ASYNC_PAIR = 4, XCB_INPUT_EVENT_MODE_SYNC_PAIR = 5,
#     XCB_INPUT_EVENT_MODE_ACCEPT_TOUCH = 6, XCB_INPUT_EVENT_MODE_REJECT_TOUCH = 7


# ## * Opcode for xcb_input_xi_allow_events.

# const
#   XCB_INPUT_XI_ALLOW_EVENTS* = 53

# ## *
# ##  @brief xcb_input_xi_allow_events_request_t
# ##

# type
#   xcb_input_xi_allow_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t
#     deviceid*: xcb_input_device_id_t
#     event_mode*: uint8
#     pad0*: uint8
#     touchid*: uint32
#     grab_window*: xcb_window_t

#   xcb_input_grab_mode_22_t* = enum
#     XCB_INPUT_GRAB_MODE_22_SYNC = 0, XCB_INPUT_GRAB_MODE_22_ASYNC = 1,
#     XCB_INPUT_GRAB_MODE_22_TOUCH = 2
#   xcb_input_grab_type_t* = enum
#     XCB_INPUT_GRAB_TYPE_BUTTON = 0, XCB_INPUT_GRAB_TYPE_KEYCODE = 1,
#     XCB_INPUT_GRAB_TYPE_ENTER = 2, XCB_INPUT_GRAB_TYPE_FOCUS_IN = 3,
#     XCB_INPUT_GRAB_TYPE_TOUCH_BEGIN = 4
#   xcb_input_modifier_mask_t* = enum
#     XCB_INPUT_MODIFIER_MASK_ANY = 2147483648'i64




# ## *
# ##  @brief xcb_input_grab_modifier_info_t
# ##

# type
#   xcb_input_grab_modifier_info_t* {.bycopy.} = object
#     modifiers*: uint32
#     status*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_grab_modifier_info_iterator_t
# ##

# type
#   xcb_input_grab_modifier_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_grab_modifier_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_input_xi_passive_grab_device_cookie_t
# ##

# type
#   xcb_input_xi_passive_grab_device_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_passive_grab_device.

# const
#   XCB_INPUT_XI_PASSIVE_GRAB_DEVICE* = 54

# ## *
# ##  @brief xcb_input_xi_passive_grab_device_request_t
# ##

# type
#   xcb_input_xi_passive_grab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t
#     grab_window*: xcb_window_t
#     cursor*: xcb_cursor_t
#     detail*: uint32
#     deviceid*: xcb_input_device_id_t
#     num_modifiers*: uint16
#     mask_len*: uint16
#     grab_type*: uint8
#     grab_mode*: uint8
#     paired_device_mode*: uint8
#     owner_events*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_passive_grab_device_reply_t
# ##

# type
#   xcb_input_xi_passive_grab_device_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_modifiers*: uint16
#     pad1*: array[22, uint8]


# ## * Opcode for xcb_input_xi_passive_ungrab_device.

# const
#   XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE* = 55

# ## *
# ##  @brief xcb_input_xi_passive_ungrab_device_request_t
# ##

# type
#   xcb_input_xi_passive_ungrab_device_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     detail*: uint32
#     deviceid*: xcb_input_device_id_t
#     num_modifiers*: uint16
#     grab_type*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_input_xi_list_properties_cookie_t
# ##

# type
#   xcb_input_xi_list_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_list_properties.

# const
#   XCB_INPUT_XI_LIST_PROPERTIES* = 56

# ## *
# ##  @brief xcb_input_xi_list_properties_request_t
# ##

# type
#   xcb_input_xi_list_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_input_xi_list_properties_reply_t
# ##

# type
#   xcb_input_xi_list_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_properties*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_input_xi_change_property_items_t
# ##

# type
#   xcb_input_xi_change_property_items_t* {.bycopy.} = object
#     data8*: ptr uint8
#     data16*: ptr uint16
#     data32*: ptr uint32


# ## * Opcode for xcb_input_xi_change_property.

# const
#   XCB_INPUT_XI_CHANGE_PROPERTY* = 57

# ## *
# ##  @brief xcb_input_xi_change_property_request_t
# ##

# type
#   xcb_input_xi_change_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     mode*: uint8
#     format*: uint8
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     num_items*: uint32


# ## * Opcode for xcb_input_xi_delete_property.

# const
#   XCB_INPUT_XI_DELETE_PROPERTY* = 58

# ## *
# ##  @brief xcb_input_xi_delete_property_request_t
# ##

# type
#   xcb_input_xi_delete_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_input_xi_get_property_cookie_t
# ##

# type
#   xcb_input_xi_get_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_get_property.

# const
#   XCB_INPUT_XI_GET_PROPERTY* = 59

# ## *
# ##  @brief xcb_input_xi_get_property_request_t
# ##

# type
#   xcb_input_xi_get_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceid*: xcb_input_device_id_t
#     _delete*: uint8
#     pad0*: uint8
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     offset*: uint32
#     len*: uint32


# ## *
# ##  @brief xcb_input_xi_get_property_items_t
# ##

# type
#   xcb_input_xi_get_property_items_t* {.bycopy.} = object
#     data8*: ptr uint8
#     data16*: ptr uint16
#     data32*: ptr uint32


# ## *
# ##  @brief xcb_input_xi_get_property_reply_t
# ##

# type
#   xcb_input_xi_get_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     `type`*: xcb_atom_t
#     bytes_after*: uint32
#     num_items*: uint32
#     format*: uint8
#     pad1*: array[11, uint8]


# ## *
# ##  @brief xcb_input_xi_get_selected_events_cookie_t
# ##

# type
#   xcb_input_xi_get_selected_events_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_input_xi_get_selected_events.

# const
#   XCB_INPUT_XI_GET_SELECTED_EVENTS* = 60

# ## *
# ##  @brief xcb_input_xi_get_selected_events_request_t
# ##

# type
#   xcb_input_xi_get_selected_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_input_xi_get_selected_events_reply_t
# ##

# type
#   xcb_input_xi_get_selected_events_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_masks*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_input_barrier_release_pointer_info_t
# ##

# type
#   xcb_input_barrier_release_pointer_info_t* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     barrier*: xcb_xfixes_barrier_t
#     eventid*: uint32


# ## *
# ##  @brief xcb_input_barrier_release_pointer_info_iterator_t
# ##

# type
#   xcb_input_barrier_release_pointer_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_barrier_release_pointer_info_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_input_xi_barrier_release_pointer.

# const
#   XCB_INPUT_XI_BARRIER_RELEASE_POINTER* = 61

# ## *
# ##  @brief xcb_input_xi_barrier_release_pointer_request_t
# ##

# type
#   xcb_input_xi_barrier_release_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     num_barriers*: uint32


# ## * Opcode for xcb_input_device_valuator.

# const
#   XCB_INPUT_DEVICE_VALUATOR* = 0

# ## *
# ##  @brief xcb_input_device_valuator_event_t
# ##

# type
#   xcb_input_device_valuator_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     device_state*: uint16
#     num_valuators*: uint8
#     first_valuator*: uint8
#     valuators*: array[6, int32]

#   xcb_input_more_events_mask_t* = enum
#     XCB_INPUT_MORE_EVENTS_MASK_MORE_EVENTS = 128


# ## * Opcode for xcb_input_device_key_press.

# const
#   XCB_INPUT_DEVICE_KEY_PRESS* = 1

# ## *
# ##  @brief xcb_input_device_key_press_event_t
# ##

# type
#   xcb_input_device_key_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     event_x*: int16
#     event_y*: int16
#     state*: uint16
#     same_screen*: uint8
#     device_id*: uint8


# ## * Opcode for xcb_input_device_key_release.

# const
#   XCB_INPUT_DEVICE_KEY_RELEASE* = 2

# type
#   xcb_input_device_key_release_event_t* = xcb_input_device_key_press_event_t

# ## * Opcode for xcb_input_device_button_press.

# const
#   XCB_INPUT_DEVICE_BUTTON_PRESS* = 3

# type
#   xcb_input_device_button_press_event_t* = xcb_input_device_key_press_event_t

# ## * Opcode for xcb_input_device_button_release.

# const
#   XCB_INPUT_DEVICE_BUTTON_RELEASE* = 4

# type
#   xcb_input_device_button_release_event_t* = xcb_input_device_key_press_event_t

# ## * Opcode for xcb_input_device_motion_notify.

# const
#   XCB_INPUT_DEVICE_MOTION_NOTIFY* = 5

# type
#   xcb_input_device_motion_notify_event_t* = xcb_input_device_key_press_event_t

# ## * Opcode for xcb_input_device_focus_in.

# const
#   XCB_INPUT_DEVICE_FOCUS_IN* = 6

# ## *
# ##  @brief xcb_input_device_focus_in_event_t
# ##

# type
#   xcb_input_device_focus_in_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     window*: xcb_window_t
#     mode*: uint8
#     device_id*: uint8
#     pad0*: array[18, uint8]


# ## * Opcode for xcb_input_device_focus_out.

# const
#   XCB_INPUT_DEVICE_FOCUS_OUT* = 7

# type
#   xcb_input_device_focus_out_event_t* = xcb_input_device_focus_in_event_t

# ## * Opcode for xcb_input_proximity_in.

# const
#   XCB_INPUT_PROXIMITY_IN* = 8

# type
#   xcb_input_proximity_in_event_t* = xcb_input_device_key_press_event_t

# ## * Opcode for xcb_input_proximity_out.

# const
#   XCB_INPUT_PROXIMITY_OUT* = 9

# type
#   xcb_input_proximity_out_event_t* = xcb_input_device_key_press_event_t
#   xcb_input_classes_reported_mask_t* = enum
#     XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_KEYS = 1,
#     XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_BUTTONS = 2,
#     XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_VALUATORS = 4,
#     XCB_INPUT_CLASSES_REPORTED_MASK_DEVICE_MODE_ABSOLUTE = 64,
#     XCB_INPUT_CLASSES_REPORTED_MASK_OUT_OF_PROXIMITY = 128


# ## * Opcode for xcb_input_device_state_notify.

# const
#   XCB_INPUT_DEVICE_STATE_NOTIFY* = 10

# ## *
# ##  @brief xcb_input_device_state_notify_event_t
# ##

# type
#   xcb_input_device_state_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     num_keys*: uint8
#     num_buttons*: uint8
#     num_valuators*: uint8
#     classes_reported*: uint8
#     buttons*: array[4, uint8]
#     keys*: array[4, uint8]
#     valuators*: array[3, uint32]


# ## * Opcode for xcb_input_device_mapping_notify.

# const
#   XCB_INPUT_DEVICE_MAPPING_NOTIFY* = 11

# ## *
# ##  @brief xcb_input_device_mapping_notify_event_t
# ##

# type
#   xcb_input_device_mapping_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     request*: uint8
#     first_keycode*: xcb_input_key_code_t
#     count*: uint8
#     pad0*: uint8
#     time*: xcb_timestamp_t
#     pad1*: array[20, uint8]

#   xcb_input_change_device_t* = enum
#     XCB_INPUT_CHANGE_DEVICE_NEW_POINTER = 0,
#     XCB_INPUT_CHANGE_DEVICE_NEW_KEYBOARD = 1


# ## * Opcode for xcb_input_change_device_notify.

# const
#   XCB_INPUT_CHANGE_DEVICE_NOTIFY* = 12

# ## *
# ##  @brief xcb_input_change_device_notify_event_t
# ##

# type
#   xcb_input_change_device_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     request*: uint8
#     pad0*: array[23, uint8]


# ## * Opcode for xcb_input_device_key_state_notify.

# const
#   XCB_INPUT_DEVICE_KEY_STATE_NOTIFY* = 13

# ## *
# ##  @brief xcb_input_device_key_state_notify_event_t
# ##

# type
#   xcb_input_device_key_state_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     keys*: array[28, uint8]


# ## * Opcode for xcb_input_device_button_state_notify.

# const
#   XCB_INPUT_DEVICE_BUTTON_STATE_NOTIFY* = 14

# ## *
# ##  @brief xcb_input_device_button_state_notify_event_t
# ##

# type
#   xcb_input_device_button_state_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     device_id*: uint8
#     sequence*: uint16
#     buttons*: array[28, uint8]

#   xcb_input_device_change_t* = enum
#     XCB_INPUT_DEVICE_CHANGE_ADDED = 0, XCB_INPUT_DEVICE_CHANGE_REMOVED = 1,
#     XCB_INPUT_DEVICE_CHANGE_ENABLED = 2, XCB_INPUT_DEVICE_CHANGE_DISABLED = 3,
#     XCB_INPUT_DEVICE_CHANGE_UNRECOVERABLE = 4,
#     XCB_INPUT_DEVICE_CHANGE_CONTROL_CHANGED = 5


# ## * Opcode for xcb_input_device_presence_notify.

# const
#   XCB_INPUT_DEVICE_PRESENCE_NOTIFY* = 15

# ## *
# ##  @brief xcb_input_device_presence_notify_event_t
# ##

# type
#   xcb_input_device_presence_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     devchange*: uint8
#     device_id*: uint8
#     control*: uint16
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_input_device_property_notify.

# const
#   XCB_INPUT_DEVICE_PROPERTY_NOTIFY* = 16

# ## *
# ##  @brief xcb_input_device_property_notify_event_t
# ##

# type
#   xcb_input_device_property_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     state*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     property*: xcb_atom_t
#     pad0*: array[19, uint8]
#     device_id*: uint8

#   xcb_input_change_reason_t* = enum
#     XCB_INPUT_CHANGE_REASON_SLAVE_SWITCH = 1,
#     XCB_INPUT_CHANGE_REASON_DEVICE_CHANGE = 2


# ## * Opcode for xcb_input_device_changed.

# const
#   XCB_INPUT_DEVICE_CHANGED* = 1

# ## *
# ##  @brief xcb_input_device_changed_event_t
# ##

# type
#   xcb_input_device_changed_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     num_classes*: uint16
#     sourceid*: xcb_input_device_id_t
#     reason*: uint8
#     pad0*: array[11, uint8]
#     full_sequence*: uint32

#   xcb_input_key_event_flags_t* = enum
#     XCB_INPUT_KEY_EVENT_FLAGS_KEY_REPEAT = 65536


# ## * Opcode for xcb_input_key_press.

# const
#   XCB_INPUT_KEY_PRESS* = 2

# ## *
# ##  @brief xcb_input_key_press_event_t
# ##

# type
#   xcb_input_key_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     full_sequence*: uint32
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     event_x*: xcb_input_fp1616_t
#     event_y*: xcb_input_fp1616_t
#     buttons_len*: uint16
#     valuators_len*: uint16
#     sourceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     flags*: uint32
#     mods*: xcb_input_modifier_info_t
#     group*: xcb_input_group_info_t


# ## * Opcode for xcb_input_key_release.

# const
#   XCB_INPUT_KEY_RELEASE* = 3

# type
#   xcb_input_key_release_event_t* = xcb_input_key_press_event_t
#   xcb_input_pointer_event_flags_t* = enum
#     XCB_INPUT_POINTER_EVENT_FLAGS_POINTER_EMULATED = 65536


# ## * Opcode for xcb_input_button_press.

# const
#   XCB_INPUT_BUTTON_PRESS* = 4

# ## *
# ##  @brief xcb_input_button_press_event_t
# ##

# type
#   xcb_input_button_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     full_sequence*: uint32
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     event_x*: xcb_input_fp1616_t
#     event_y*: xcb_input_fp1616_t
#     buttons_len*: uint16
#     valuators_len*: uint16
#     sourceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     flags*: uint32
#     mods*: xcb_input_modifier_info_t
#     group*: xcb_input_group_info_t


# ## * Opcode for xcb_input_button_release.

# const
#   XCB_INPUT_BUTTON_RELEASE* = 5

# type
#   xcb_input_button_release_event_t* = xcb_input_button_press_event_t

# ## * Opcode for xcb_input_motion.

# const
#   XCB_INPUT_MOTION* = 6

# type
#   xcb_input_motion_event_t* = xcb_input_button_press_event_t
#   xcb_input_notify_mode_t* = enum
#     XCB_INPUT_NOTIFY_MODE_NORMAL = 0, XCB_INPUT_NOTIFY_MODE_GRAB = 1,
#     XCB_INPUT_NOTIFY_MODE_UNGRAB = 2, XCB_INPUT_NOTIFY_MODE_WHILE_GRABBED = 3,
#     XCB_INPUT_NOTIFY_MODE_PASSIVE_GRAB = 4,
#     XCB_INPUT_NOTIFY_MODE_PASSIVE_UNGRAB = 5
#   xcb_input_notify_detail_t* = enum
#     XCB_INPUT_NOTIFY_DETAIL_ANCESTOR = 0, XCB_INPUT_NOTIFY_DETAIL_VIRTUAL = 1,
#     XCB_INPUT_NOTIFY_DETAIL_INFERIOR = 2, XCB_INPUT_NOTIFY_DETAIL_NONLINEAR = 3,
#     XCB_INPUT_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4,
#     XCB_INPUT_NOTIFY_DETAIL_POINTER = 5, XCB_INPUT_NOTIFY_DETAIL_POINTER_ROOT = 6,
#     XCB_INPUT_NOTIFY_DETAIL_NONE = 7



# ## * Opcode for xcb_input_enter.

# const
#   XCB_INPUT_ENTER* = 7

# ## *
# ##  @brief xcb_input_enter_event_t
# ##

# type
#   xcb_input_enter_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     sourceid*: xcb_input_device_id_t
#     mode*: uint8
#     detail*: uint8
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     full_sequence*: uint32
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     event_x*: xcb_input_fp1616_t
#     event_y*: xcb_input_fp1616_t
#     same_screen*: uint8
#     focus*: uint8
#     buttons_len*: uint16
#     mods*: xcb_input_modifier_info_t
#     group*: xcb_input_group_info_t


# ## * Opcode for xcb_input_leave.

# const
#   XCB_INPUT_LEAVE* = 8

# type
#   xcb_input_leave_event_t* = xcb_input_enter_event_t

# ## * Opcode for xcb_input_focus_in.

# const
#   XCB_INPUT_FOCUS_IN* = 9

# type
#   xcb_input_focus_in_event_t* = xcb_input_enter_event_t

# ## * Opcode for xcb_input_focus_out.

# const
#   XCB_INPUT_FOCUS_OUT* = 10

# type
#   xcb_input_focus_out_event_t* = xcb_input_enter_event_t
#   xcb_input_hierarchy_mask_t* = enum
#     XCB_INPUT_HIERARCHY_MASK_MASTER_ADDED = 1,
#     XCB_INPUT_HIERARCHY_MASK_MASTER_REMOVED = 2,
#     XCB_INPUT_HIERARCHY_MASK_SLAVE_ADDED = 4,
#     XCB_INPUT_HIERARCHY_MASK_SLAVE_REMOVED = 8,
#     XCB_INPUT_HIERARCHY_MASK_SLAVE_ATTACHED = 16,
#     XCB_INPUT_HIERARCHY_MASK_SLAVE_DETACHED = 32,
#     XCB_INPUT_HIERARCHY_MASK_DEVICE_ENABLED = 64,
#     XCB_INPUT_HIERARCHY_MASK_DEVICE_DISABLED = 128


# ## *
# ##  @brief xcb_input_hierarchy_info_t
# ##

# type
#   xcb_input_hierarchy_info_t* {.bycopy.} = object
#     deviceid*: xcb_input_device_id_t
#     attachment*: xcb_input_device_id_t
#     `type`*: uint8
#     enabled*: uint8
#     pad0*: array[2, uint8]
#     flags*: uint32


# ## *
# ##  @brief xcb_input_hierarchy_info_iterator_t
# ##

# type
#   xcb_input_hierarchy_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_hierarchy_info_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_input_hierarchy.

# const
#   XCB_INPUT_HIERARCHY* = 11

# ## *
# ##  @brief xcb_input_hierarchy_event_t
# ##

# type
#   xcb_input_hierarchy_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     flags*: uint32
#     num_infos*: uint16
#     pad0*: array[10, uint8]
#     full_sequence*: uint32

#   xcb_input_property_flag_t* = enum
#     XCB_INPUT_PROPERTY_FLAG_DELETED = 0, XCB_INPUT_PROPERTY_FLAG_CREATED = 1,
#     XCB_INPUT_PROPERTY_FLAG_MODIFIED = 2


# ## * Opcode for xcb_input_property.

# const
#   XCB_INPUT_PROPERTY* = 12

# ## *
# ##  @brief xcb_input_property_event_t
# ##

# type
#   xcb_input_property_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     property*: xcb_atom_t
#     what*: uint8
#     pad0*: array[11, uint8]
#     full_sequence*: uint32


# ## * Opcode for xcb_input_raw_key_press.

# const
#   XCB_INPUT_RAW_KEY_PRESS* = 13

# ## *
# ##  @brief xcb_input_raw_key_press_event_t
# ##

# type
#   xcb_input_raw_key_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     sourceid*: xcb_input_device_id_t
#     valuators_len*: uint16
#     flags*: uint32
#     pad0*: array[4, uint8]
#     full_sequence*: uint32


# ## * Opcode for xcb_input_raw_key_release.

# const
#   XCB_INPUT_RAW_KEY_RELEASE* = 14

# type
#   xcb_input_raw_key_release_event_t* = xcb_input_raw_key_press_event_t

# ## * Opcode for xcb_input_raw_button_press.

# const
#   XCB_INPUT_RAW_BUTTON_PRESS* = 15

# ## *
# ##  @brief xcb_input_raw_button_press_event_t
# ##

# type
#   xcb_input_raw_button_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     sourceid*: xcb_input_device_id_t
#     valuators_len*: uint16
#     flags*: uint32
#     pad0*: array[4, uint8]
#     full_sequence*: uint32


# ## * Opcode for xcb_input_raw_button_release.

# const
#   XCB_INPUT_RAW_BUTTON_RELEASE* = 16

# type
#   xcb_input_raw_button_release_event_t* = xcb_input_raw_button_press_event_t

# ## * Opcode for xcb_input_raw_motion.

# const
#   XCB_INPUT_RAW_MOTION* = 17

# type
#   xcb_input_raw_motion_event_t* = xcb_input_raw_button_press_event_t
#   xcb_input_touch_event_flags_t* = enum
#     XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_PENDING_END = 65536,
#     XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_EMULATING_POINTER = 131072


# ## * Opcode for xcb_input_touch_begin.

# const
#   XCB_INPUT_TOUCH_BEGIN* = 18

# ## *
# ##  @brief xcb_input_touch_begin_event_t
# ##

# type
#   xcb_input_touch_begin_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     full_sequence*: uint32
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     event_x*: xcb_input_fp1616_t
#     event_y*: xcb_input_fp1616_t
#     buttons_len*: uint16
#     valuators_len*: uint16
#     sourceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     flags*: uint32
#     mods*: xcb_input_modifier_info_t
#     group*: xcb_input_group_info_t


# ## * Opcode for xcb_input_touch_update.

# const
#   XCB_INPUT_TOUCH_UPDATE* = 19

# type
#   xcb_input_touch_update_event_t* = xcb_input_touch_begin_event_t

# ## * Opcode for xcb_input_touch_end.

# const
#   XCB_INPUT_TOUCH_END* = 20

# type
#   xcb_input_touch_end_event_t* = xcb_input_touch_begin_event_t
#   xcb_input_touch_ownership_flags_t* = enum
#     XCB_INPUT_TOUCH_OWNERSHIP_FLAGS_NONE = 0


# ## * Opcode for xcb_input_touch_ownership.

# const
#   XCB_INPUT_TOUCH_OWNERSHIP* = 21

# ## *
# ##  @brief xcb_input_touch_ownership_event_t
# ##

# type
#   xcb_input_touch_ownership_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     touchid*: uint32
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     full_sequence*: uint32
#     sourceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     flags*: uint32
#     pad1*: array[8, uint8]


# ## * Opcode for xcb_input_raw_touch_begin.

# const
#   XCB_INPUT_RAW_TOUCH_BEGIN* = 22

# ## *
# ##  @brief xcb_input_raw_touch_begin_event_t
# ##

# type
#   xcb_input_raw_touch_begin_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     detail*: uint32
#     sourceid*: xcb_input_device_id_t
#     valuators_len*: uint16
#     flags*: uint32
#     pad0*: array[4, uint8]
#     full_sequence*: uint32


# ## * Opcode for xcb_input_raw_touch_update.

# const
#   XCB_INPUT_RAW_TOUCH_UPDATE* = 23

# type
#   xcb_input_raw_touch_update_event_t* = xcb_input_raw_touch_begin_event_t

# ## * Opcode for xcb_input_raw_touch_end.

# const
#   XCB_INPUT_RAW_TOUCH_END* = 24

# type
#   xcb_input_raw_touch_end_event_t* = xcb_input_raw_touch_begin_event_t
#   xcb_input_barrier_flags_t* = enum
#     XCB_INPUT_BARRIER_FLAGS_POINTER_RELEASED = 1,
#     XCB_INPUT_BARRIER_FLAGS_DEVICE_IS_GRABBED = 2


# ## * Opcode for xcb_input_barrier_hit.

# const
#   XCB_INPUT_BARRIER_HIT* = 25

# ## *
# ##  @brief xcb_input_barrier_hit_event_t
# ##

# type
#   xcb_input_barrier_hit_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     deviceid*: xcb_input_device_id_t
#     time*: xcb_timestamp_t
#     eventid*: uint32
#     root*: xcb_window_t
#     event*: xcb_window_t
#     barrier*: xcb_xfixes_barrier_t
#     full_sequence*: uint32
#     dtime*: uint32
#     flags*: uint32
#     sourceid*: xcb_input_device_id_t
#     pad0*: array[2, uint8]
#     root_x*: xcb_input_fp1616_t
#     root_y*: xcb_input_fp1616_t
#     dx*: xcb_input_fp3232_t
#     dy*: xcb_input_fp3232_t


# ## * Opcode for xcb_input_barrier_leave.

# const
#   XCB_INPUT_BARRIER_LEAVE* = 26

# type
#   xcb_input_barrier_leave_event_t* = xcb_input_barrier_hit_event_t

# ## *
# ##  @brief xcb_input_event_for_send_t
# ##

# type
#   xcb_input_event_for_send_t* {.bycopy.} = object {.union.}
#     device_valuator*: xcb_input_device_valuator_event_t
#     device_key_press*: xcb_input_device_key_press_event_t
#     device_key_release*: xcb_input_device_key_release_event_t
#     device_button_press*: xcb_input_device_button_press_event_t
#     device_button_release*: xcb_input_device_button_release_event_t
#     device_motion_notify*: xcb_input_device_motion_notify_event_t
#     device_focus_in*: xcb_input_device_focus_in_event_t
#     device_focus_out*: xcb_input_device_focus_out_event_t
#     proximity_in*: xcb_input_proximity_in_event_t
#     proximity_out*: xcb_input_proximity_out_event_t
#     device_state_notify*: xcb_input_device_state_notify_event_t
#     device_mapping_notify*: xcb_input_device_mapping_notify_event_t
#     change_device_notify*: xcb_input_change_device_notify_event_t
#     device_key_state_notify*: xcb_input_device_key_state_notify_event_t
#     device_button_state_notify*: xcb_input_device_button_state_notify_event_t
#     device_presence_notify*: xcb_input_device_presence_notify_event_t
#     event_header*: xcb_raw_generic_event_t


# ## *
# ##  @brief xcb_input_event_for_send_iterator_t
# ##

# type
#   xcb_input_event_for_send_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_input_event_for_send_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_input_send_extension_event.

# const
#   XCB_INPUT_SEND_EXTENSION_EVENT* = 31

# ## *
# ##  @brief xcb_input_send_extension_event_request_t
# ##

# type
#   xcb_input_send_extension_event_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     destination*: xcb_window_t
#     device_id*: uint8
#     propagate*: uint8
#     num_classes*: uint16
#     num_events*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_input_device.

# const
#   XCB_INPUT_DEVICE* = 0

# ## *
# ##  @brief xcb_input_device_error_t
# ##

# type
#   xcb_input_device_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_input_event.

# const
#   XCB_INPUT_EVENT* = 1

# ## *
# ##  @brief xcb_input_event_error_t
# ##

# type
#   xcb_input_event_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_input_mode.

# const
#   XCB_INPUT_MODE* = 2

# ## *
# ##  @brief xcb_input_mode_error_t
# ##

# type
#   xcb_input_mode_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_input_device_busy.

# const
#   XCB_INPUT_DEVICE_BUSY* = 3

# ## *
# ##  @brief xcb_input_device_busy_error_t
# ##

# type
#   xcb_input_device_busy_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_input_class.

# const
#   XCB_INPUT_CLASS* = 4

# ## *
# ##  @brief xcb_input_class_error_t
# ##

# type
#   xcb_input_class_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_event_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_event_class_t)
# ##

# proc xcb_input_event_class_next*(i: ptr xcb_input_event_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_event_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_event_class_end*(i: xcb_input_event_class_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_key_code_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_key_code_t)
# ##

# proc xcb_input_key_code_next*(i: ptr xcb_input_key_code_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_key_code_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_key_code_end*(i: xcb_input_key_code_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_id_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_id_t)
# ##

# proc xcb_input_device_id_next*(i: ptr xcb_input_device_id_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_id_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_id_end*(i: xcb_input_device_id_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_fp1616_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_fp1616_t)
# ##

# proc xcb_input_fp1616_next*(i: ptr xcb_input_fp1616_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_fp1616_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_fp1616_end*(i: xcb_input_fp1616_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_fp3232_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_fp3232_t)
# ##

# proc xcb_input_fp3232_next*(i: ptr xcb_input_fp3232_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_fp3232_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_fp3232_end*(i: xcb_input_fp3232_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_extension_version_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_extension_version*(c: ptr xcb_connection_t; name_len: uint16;
#                                      name: cstring): xcb_input_get_extension_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_extension_version_unchecked*(c: ptr xcb_connection_t;
#     name_len: uint16; name: cstring): xcb_input_get_extension_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_extension_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_extension_version_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_extension_version_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_extension_version_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_info_t)
# ##

# proc xcb_input_device_info_next*(i: ptr xcb_input_device_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_info_end*(i: xcb_input_device_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_key_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_key_info_t)
# ##

# proc xcb_input_key_info_next*(i: ptr xcb_input_key_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_key_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_key_info_end*(i: xcb_input_key_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_button_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_button_info_t)
# ##

# proc xcb_input_button_info_next*(i: ptr xcb_input_button_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_button_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_button_info_end*(i: xcb_input_button_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_axis_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_axis_info_t)
# ##

# proc xcb_input_axis_info_next*(i: ptr xcb_input_axis_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_axis_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_axis_info_end*(i: xcb_input_axis_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_valuator_info_sizeof*(_buffer: pointer): cint
# proc xcb_input_valuator_info_axes*(R: ptr xcb_input_valuator_info_t): ptr xcb_input_axis_info_t
# proc xcb_input_valuator_info_axes_length*(R: ptr xcb_input_valuator_info_t): cint
# proc xcb_input_valuator_info_axes_iterator*(R: ptr xcb_input_valuator_info_t): xcb_input_axis_info_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_valuator_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_valuator_info_t)
# ##

# proc xcb_input_valuator_info_next*(i: ptr xcb_input_valuator_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_valuator_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_valuator_info_end*(i: xcb_input_valuator_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_input_info_info_valuator_axes*(S: ptr xcb_input_input_info_info_t): ptr xcb_input_axis_info_t
# proc xcb_input_input_info_info_valuator_axes_length*(
#     R: ptr xcb_input_input_info_t; S: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_valuator_axes_iterator*(
#     R: ptr xcb_input_input_info_t; S: ptr xcb_input_input_info_info_t): xcb_input_axis_info_iterator_t
# proc xcb_input_input_info_info_serialize*(_buffer: ptr pointer; class_id: uint8;
#     _aux: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_unpack*(_buffer: pointer; class_id: uint8;
#                                       _aux: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_input_info_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_input_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_input_info_t)
# ##

# proc xcb_input_input_info_next*(i: ptr xcb_input_input_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_input_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_input_info_end*(i: xcb_input_input_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_name_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_name_string*(R: ptr xcb_input_device_name_t): cstring
# proc xcb_input_device_name_string_length*(R: ptr xcb_input_device_name_t): cint
# proc xcb_input_device_name_string_end*(R: ptr xcb_input_device_name_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_name_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_name_t)
# ##

# proc xcb_input_device_name_next*(i: ptr xcb_input_device_name_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_name_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_name_end*(i: xcb_input_device_name_iterator_t): xcb_generic_iterator_t
# proc xcb_input_list_input_devices_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_list_input_devices*(c: ptr xcb_connection_t): xcb_input_list_input_devices_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_list_input_devices_unchecked*(c: ptr xcb_connection_t): xcb_input_list_input_devices_cookie_t
# proc xcb_input_list_input_devices_devices*(
#     R: ptr xcb_input_list_input_devices_reply_t): ptr xcb_input_device_info_t
# proc xcb_input_list_input_devices_devices_length*(
#     R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_devices_iterator*(
#     R: ptr xcb_input_list_input_devices_reply_t): xcb_input_device_info_iterator_t
# proc xcb_input_list_input_devices_infos_length*(
#     R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_infos_iterator*(
#     R: ptr xcb_input_list_input_devices_reply_t): xcb_input_input_info_iterator_t
# proc xcb_input_list_input_devices_names_length*(
#     R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_names_iterator*(
#     R: ptr xcb_input_list_input_devices_reply_t): xcb_str_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_list_input_devices_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_list_input_devices_reply*(c: ptr xcb_connection_t; cookie: xcb_input_list_input_devices_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_input_list_input_devices_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_event_type_base_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_event_type_base_t)
# ##

# proc xcb_input_event_type_base_next*(i: ptr xcb_input_event_type_base_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_event_type_base_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_event_type_base_end*(i: xcb_input_event_type_base_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_input_class_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_input_class_info_t)
# ##

# proc xcb_input_input_class_info_next*(i: ptr xcb_input_input_class_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_input_class_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_input_class_info_end*(i: xcb_input_input_class_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_open_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_open_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_open_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_open_device_unchecked*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_open_device_cookie_t
# proc xcb_input_open_device_class_info*(R: ptr xcb_input_open_device_reply_t): ptr xcb_input_input_class_info_t
# proc xcb_input_open_device_class_info_length*(
#     R: ptr xcb_input_open_device_reply_t): cint
# proc xcb_input_open_device_class_info_iterator*(
#     R: ptr xcb_input_open_device_reply_t): xcb_input_input_class_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_open_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_open_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_open_device_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_input_open_device_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_close_device_checked*(c: ptr xcb_connection_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_close_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_set_device_mode*(c: ptr xcb_connection_t; device_id: uint8;
#                                mode: uint8): xcb_input_set_device_mode_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_set_device_mode_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8; mode: uint8): xcb_input_set_device_mode_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_set_device_mode_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_set_device_mode_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_mode_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_mode_reply_t
# proc xcb_input_select_extension_event_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_select_extension_event_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; num_classes: uint16;
#     classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_select_extension_event*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; num_classes: uint16;
#                                       classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_select_extension_event_classes*(
#     R: ptr xcb_input_select_extension_event_request_t): ptr xcb_input_event_class_t
# proc xcb_input_select_extension_event_classes_length*(
#     R: ptr xcb_input_select_extension_event_request_t): cint
# proc xcb_input_select_extension_event_classes_end*(
#     R: ptr xcb_input_select_extension_event_request_t): xcb_generic_iterator_t
# proc xcb_input_get_selected_extension_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_selected_extension_events*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_get_selected_extension_events_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_selected_extension_events_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_get_selected_extension_events_cookie_t
# proc xcb_input_get_selected_extension_events_this_classes*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_selected_extension_events_this_classes_length*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): cint
# proc xcb_input_get_selected_extension_events_this_classes_end*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): xcb_generic_iterator_t
# proc xcb_input_get_selected_extension_events_all_classes*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_selected_extension_events_all_classes_length*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): cint
# proc xcb_input_get_selected_extension_events_all_classes_end*(
#     R: ptr xcb_input_get_selected_extension_events_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_selected_extension_events_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_selected_extension_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_selected_extension_events_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_selected_extension_events_reply_t
# proc xcb_input_change_device_dont_propagate_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_change_device_dont_propagate_list_checked*(
#     c: ptr xcb_connection_t; window: xcb_window_t; num_classes: uint16;
#     mode: uint8; classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_device_dont_propagate_list*(c: ptr xcb_connection_t;
#     window: xcb_window_t; num_classes: uint16; mode: uint8;
#     classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_change_device_dont_propagate_list_classes*(
#     R: ptr xcb_input_change_device_dont_propagate_list_request_t): ptr xcb_input_event_class_t
# proc xcb_input_change_device_dont_propagate_list_classes_length*(
#     R: ptr xcb_input_change_device_dont_propagate_list_request_t): cint
# proc xcb_input_change_device_dont_propagate_list_classes_end*(
#     R: ptr xcb_input_change_device_dont_propagate_list_request_t): xcb_generic_iterator_t
# proc xcb_input_get_device_dont_propagate_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_dont_propagate_list*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_get_device_dont_propagate_list_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_dont_propagate_list_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_get_device_dont_propagate_list_cookie_t
# proc xcb_input_get_device_dont_propagate_list_classes*(
#     R: ptr xcb_input_get_device_dont_propagate_list_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_device_dont_propagate_list_classes_length*(
#     R: ptr xcb_input_get_device_dont_propagate_list_reply_t): cint
# proc xcb_input_get_device_dont_propagate_list_classes_end*(
#     R: ptr xcb_input_get_device_dont_propagate_list_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_dont_propagate_list_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_dont_propagate_list_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_dont_propagate_list_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_dont_propagate_list_reply_t
# proc xcb_input_device_time_coord_sizeof*(_buffer: pointer; num_axes: uint8): cint
# proc xcb_input_device_time_coord_axisvalues*(R: ptr xcb_input_device_time_coord_t): ptr int32
# proc xcb_input_device_time_coord_axisvalues_length*(
#     R: ptr xcb_input_device_time_coord_t; num_axes: uint8): cint
# proc xcb_input_device_time_coord_axisvalues_end*(
#     R: ptr xcb_input_device_time_coord_t; num_axes: uint8): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_time_coord_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_time_coord_t)
# ##

# proc xcb_input_device_time_coord_next*(i: ptr xcb_input_device_time_coord_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_time_coord_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_time_coord_end*(i: xcb_input_device_time_coord_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_device_motion_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_motion_events*(c: ptr xcb_connection_t;
#                                         start: xcb_timestamp_t;
#                                         stop: xcb_timestamp_t; device_id: uint8): xcb_input_get_device_motion_events_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_motion_events_unchecked*(c: ptr xcb_connection_t;
#     start: xcb_timestamp_t; stop: xcb_timestamp_t; device_id: uint8): xcb_input_get_device_motion_events_cookie_t
# proc xcb_input_get_device_motion_events_events_length*(
#     R: ptr xcb_input_get_device_motion_events_reply_t): cint
# proc xcb_input_get_device_motion_events_events_iterator*(
#     R: ptr xcb_input_get_device_motion_events_reply_t): xcb_input_device_time_coord_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_motion_events_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_motion_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_motion_events_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_motion_events_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_keyboard_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_change_keyboard_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_change_keyboard_device_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_change_keyboard_device_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_change_keyboard_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_change_keyboard_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_keyboard_device_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_keyboard_device_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_pointer_device*(c: ptr xcb_connection_t; x_axis: uint8;
#                                      y_axis: uint8; device_id: uint8): xcb_input_change_pointer_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_change_pointer_device_unchecked*(c: ptr xcb_connection_t;
#     x_axis: uint8; y_axis: uint8; device_id: uint8): xcb_input_change_pointer_device_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_change_pointer_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_change_pointer_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_pointer_device_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_pointer_device_reply_t
# proc xcb_input_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_grab_device*(c: ptr xcb_connection_t; grab_window: xcb_window_t;
#                            time: xcb_timestamp_t; num_classes: uint16;
#                            this_device_mode: uint8; other_device_mode: uint8;
#                            owner_events: uint8; device_id: uint8;
#                            classes: ptr xcb_input_event_class_t): xcb_input_grab_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_grab_device_unchecked*(c: ptr xcb_connection_t;
#                                      grab_window: xcb_window_t;
#                                      time: xcb_timestamp_t; num_classes: uint16;
#                                      this_device_mode: uint8;
#                                      other_device_mode: uint8;
#                                      owner_events: uint8; device_id: uint8;
#                                      classes: ptr xcb_input_event_class_t): xcb_input_grab_device_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_grab_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_grab_device_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_input_grab_device_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_ungrab_device_checked*(c: ptr xcb_connection_t;
#                                      time: xcb_timestamp_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_ungrab_device*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
#                              device_id: uint8): xcb_void_cookie_t
# proc xcb_input_grab_device_key_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_grab_device_key_checked*(c: ptr xcb_connection_t;
#                                        grab_window: xcb_window_t;
#                                        num_classes: uint16; modifiers: uint16;
#                                        modifier_device: uint8;
#                                        grabbed_device: uint8; key: uint8;
#                                        this_device_mode: uint8;
#                                        other_device_mode: uint8;
#                                        owner_events: uint8;
#                                        classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_grab_device_key*(c: ptr xcb_connection_t; grab_window: xcb_window_t;
#                                num_classes: uint16; modifiers: uint16;
#                                modifier_device: uint8; grabbed_device: uint8;
#                                key: uint8; this_device_mode: uint8;
#                                other_device_mode: uint8; owner_events: uint8;
#                                classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_grab_device_key_classes*(R: ptr xcb_input_grab_device_key_request_t): ptr xcb_input_event_class_t
# proc xcb_input_grab_device_key_classes_length*(
#     R: ptr xcb_input_grab_device_key_request_t): cint
# proc xcb_input_grab_device_key_classes_end*(
#     R: ptr xcb_input_grab_device_key_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_ungrab_device_key_checked*(c: ptr xcb_connection_t;
#     grabWindow: xcb_window_t; modifiers: uint16; modifier_device: uint8;
#     key: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_ungrab_device_key*(c: ptr xcb_connection_t; grabWindow: xcb_window_t;
#                                  modifiers: uint16; modifier_device: uint8;
#                                  key: uint8; grabbed_device: uint8): xcb_void_cookie_t
# proc xcb_input_grab_device_button_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_grab_device_button_checked*(c: ptr xcb_connection_t;
#     grab_window: xcb_window_t; grabbed_device: uint8; modifier_device: uint8;
#     num_classes: uint16; modifiers: uint16; this_device_mode: uint8;
#     other_device_mode: uint8; button: uint8; owner_events: uint8;
#     classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_grab_device_button*(c: ptr xcb_connection_t;
#                                   grab_window: xcb_window_t;
#                                   grabbed_device: uint8;
#                                   modifier_device: uint8; num_classes: uint16;
#                                   modifiers: uint16; this_device_mode: uint8;
#                                   other_device_mode: uint8; button: uint8;
#                                   owner_events: uint8;
#                                   classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_grab_device_button_classes*(
#     R: ptr xcb_input_grab_device_button_request_t): ptr xcb_input_event_class_t
# proc xcb_input_grab_device_button_classes_length*(
#     R: ptr xcb_input_grab_device_button_request_t): cint
# proc xcb_input_grab_device_button_classes_end*(
#     R: ptr xcb_input_grab_device_button_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_ungrab_device_button_checked*(c: ptr xcb_connection_t;
#     grab_window: xcb_window_t; modifiers: uint16; modifier_device: uint8;
#     button: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_ungrab_device_button*(c: ptr xcb_connection_t;
#                                     grab_window: xcb_window_t;
#                                     modifiers: uint16; modifier_device: uint8;
#                                     button: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_allow_device_events_checked*(c: ptr xcb_connection_t;
#     time: xcb_timestamp_t; mode: uint8; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_allow_device_events*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
#                                    mode: uint8; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_focus*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_get_device_focus_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_focus_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_device_focus_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_focus_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_focus_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_focus_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_set_device_focus_checked*(c: ptr xcb_connection_t;
#                                         focus: xcb_window_t;
#                                         time: xcb_timestamp_t; revert_to: uint8;
#                                         device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_set_device_focus*(c: ptr xcb_connection_t; focus: xcb_window_t;
#                                 time: xcb_timestamp_t; revert_to: uint8;
#                                 device_id: uint8): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_kbd_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_kbd_feedback_state_t)
# ##

# proc xcb_input_kbd_feedback_state_next*(i: ptr xcb_input_kbd_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_kbd_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_kbd_feedback_state_end*(i: xcb_input_kbd_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_ptr_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_ptr_feedback_state_t)
# ##

# proc xcb_input_ptr_feedback_state_next*(i: ptr xcb_input_ptr_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_ptr_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_ptr_feedback_state_end*(i: xcb_input_ptr_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_integer_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_integer_feedback_state_t)
# ##

# proc xcb_input_integer_feedback_state_next*(
#     i: ptr xcb_input_integer_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_integer_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_integer_feedback_state_end*(
#     i: xcb_input_integer_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_string_feedback_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_string_feedback_state_keysyms*(
#     R: ptr xcb_input_string_feedback_state_t): ptr xcb_keysym_t
# proc xcb_input_string_feedback_state_keysyms_length*(
#     R: ptr xcb_input_string_feedback_state_t): cint
# proc xcb_input_string_feedback_state_keysyms_end*(
#     R: ptr xcb_input_string_feedback_state_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_string_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_string_feedback_state_t)
# ##

# proc xcb_input_string_feedback_state_next*(
#     i: ptr xcb_input_string_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_string_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_string_feedback_state_end*(
#     i: xcb_input_string_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_bell_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_bell_feedback_state_t)
# ##

# proc xcb_input_bell_feedback_state_next*(i: ptr xcb_input_bell_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_bell_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_bell_feedback_state_end*(i: xcb_input_bell_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_led_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_led_feedback_state_t)
# ##

# proc xcb_input_led_feedback_state_next*(i: ptr xcb_input_led_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_led_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_led_feedback_state_end*(i: xcb_input_led_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_feedback_state_data_string_keysyms*(
#     S: ptr xcb_input_feedback_state_data_t): ptr xcb_keysym_t
# proc xcb_input_feedback_state_data_string_keysyms_length*(
#     R: ptr xcb_input_feedback_state_t; S: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_string_keysyms_end*(
#     R: ptr xcb_input_feedback_state_t; S: ptr xcb_input_feedback_state_data_t): xcb_generic_iterator_t
# proc xcb_input_feedback_state_data_serialize*(_buffer: ptr pointer;
#     class_id: uint8; _aux: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_unpack*(_buffer: pointer; class_id: uint8;
#     _aux: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_feedback_state_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_feedback_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_feedback_state_t)
# ##

# proc xcb_input_feedback_state_next*(i: ptr xcb_input_feedback_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_feedback_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_feedback_state_end*(i: xcb_input_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_feedback_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_feedback_control*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_get_feedback_control_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_feedback_control_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_feedback_control_cookie_t
# proc xcb_input_get_feedback_control_feedbacks_length*(
#     R: ptr xcb_input_get_feedback_control_reply_t): cint
# proc xcb_input_get_feedback_control_feedbacks_iterator*(
#     R: ptr xcb_input_get_feedback_control_reply_t): xcb_input_feedback_state_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_feedback_control_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_feedback_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_feedback_control_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_feedback_control_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_kbd_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_kbd_feedback_ctl_t)
# ##

# proc xcb_input_kbd_feedback_ctl_next*(i: ptr xcb_input_kbd_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_kbd_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_kbd_feedback_ctl_end*(i: xcb_input_kbd_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_ptr_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_ptr_feedback_ctl_t)
# ##

# proc xcb_input_ptr_feedback_ctl_next*(i: ptr xcb_input_ptr_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_ptr_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_ptr_feedback_ctl_end*(i: xcb_input_ptr_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_integer_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_integer_feedback_ctl_t)
# ##

# proc xcb_input_integer_feedback_ctl_next*(
#     i: ptr xcb_input_integer_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_integer_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_integer_feedback_ctl_end*(i: xcb_input_integer_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_string_feedback_ctl_sizeof*(_buffer: pointer): cint
# proc xcb_input_string_feedback_ctl_keysyms*(
#     R: ptr xcb_input_string_feedback_ctl_t): ptr xcb_keysym_t
# proc xcb_input_string_feedback_ctl_keysyms_length*(
#     R: ptr xcb_input_string_feedback_ctl_t): cint
# proc xcb_input_string_feedback_ctl_keysyms_end*(
#     R: ptr xcb_input_string_feedback_ctl_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_string_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_string_feedback_ctl_t)
# ##

# proc xcb_input_string_feedback_ctl_next*(i: ptr xcb_input_string_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_string_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_string_feedback_ctl_end*(i: xcb_input_string_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_bell_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_bell_feedback_ctl_t)
# ##

# proc xcb_input_bell_feedback_ctl_next*(i: ptr xcb_input_bell_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_bell_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_bell_feedback_ctl_end*(i: xcb_input_bell_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_led_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_led_feedback_ctl_t)
# ##

# proc xcb_input_led_feedback_ctl_next*(i: ptr xcb_input_led_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_led_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_led_feedback_ctl_end*(i: xcb_input_led_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_feedback_ctl_data_string_keysyms*(
#     S: ptr xcb_input_feedback_ctl_data_t): ptr xcb_keysym_t
# proc xcb_input_feedback_ctl_data_string_keysyms_length*(
#     R: ptr xcb_input_feedback_ctl_t; S: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_string_keysyms_end*(
#     R: ptr xcb_input_feedback_ctl_t; S: ptr xcb_input_feedback_ctl_data_t): xcb_generic_iterator_t
# proc xcb_input_feedback_ctl_data_serialize*(_buffer: ptr pointer; class_id: uint8;
#     _aux: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_unpack*(_buffer: pointer; class_id: uint8;
#                                         _aux: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_feedback_ctl_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_feedback_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_feedback_ctl_t)
# ##

# proc xcb_input_feedback_ctl_next*(i: ptr xcb_input_feedback_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_feedback_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_feedback_ctl_end*(i: xcb_input_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_change_feedback_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_change_feedback_control_checked*(c: ptr xcb_connection_t;
#     mask: uint32; device_id: uint8; feedback_id: uint8;
#     feedback: ptr xcb_input_feedback_ctl_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_feedback_control*(c: ptr xcb_connection_t; mask: uint32;
#                                        device_id: uint8; feedback_id: uint8;
#                                        feedback: ptr xcb_input_feedback_ctl_t): xcb_void_cookie_t
# proc xcb_input_change_feedback_control_feedback*(
#     R: ptr xcb_input_change_feedback_control_request_t): ptr xcb_input_feedback_ctl_t
# proc xcb_input_get_device_key_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_key_mapping*(c: ptr xcb_connection_t; device_id: uint8;
#                                       first_keycode: xcb_input_key_code_t;
#                                       count: uint8): xcb_input_get_device_key_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_key_mapping_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8; first_keycode: xcb_input_key_code_t; count: uint8): xcb_input_get_device_key_mapping_cookie_t
# proc xcb_input_get_device_key_mapping_keysyms*(
#     R: ptr xcb_input_get_device_key_mapping_reply_t): ptr xcb_keysym_t
# proc xcb_input_get_device_key_mapping_keysyms_length*(
#     R: ptr xcb_input_get_device_key_mapping_reply_t): cint
# proc xcb_input_get_device_key_mapping_keysyms_end*(
#     R: ptr xcb_input_get_device_key_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_key_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_key_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_key_mapping_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_key_mapping_reply_t
# proc xcb_input_change_device_key_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_change_device_key_mapping_checked*(c: ptr xcb_connection_t;
#     device_id: uint8; first_keycode: xcb_input_key_code_t;
#     keysyms_per_keycode: uint8; keycode_count: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_device_key_mapping*(c: ptr xcb_connection_t;
#     device_id: uint8; first_keycode: xcb_input_key_code_t;
#     keysyms_per_keycode: uint8; keycode_count: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# proc xcb_input_change_device_key_mapping_keysyms*(
#     R: ptr xcb_input_change_device_key_mapping_request_t): ptr xcb_keysym_t
# proc xcb_input_change_device_key_mapping_keysyms_length*(
#     R: ptr xcb_input_change_device_key_mapping_request_t): cint
# proc xcb_input_change_device_key_mapping_keysyms_end*(
#     R: ptr xcb_input_change_device_key_mapping_request_t): xcb_generic_iterator_t
# proc xcb_input_get_device_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_modifier_mapping*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_device_modifier_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_device_modifier_mapping_cookie_t
# proc xcb_input_get_device_modifier_mapping_keymaps*(
#     R: ptr xcb_input_get_device_modifier_mapping_reply_t): ptr uint8
# proc xcb_input_get_device_modifier_mapping_keymaps_length*(
#     R: ptr xcb_input_get_device_modifier_mapping_reply_t): cint
# proc xcb_input_get_device_modifier_mapping_keymaps_end*(
#     R: ptr xcb_input_get_device_modifier_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_modifier_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_modifier_mapping_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_modifier_mapping_reply_t
# proc xcb_input_set_device_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_set_device_modifier_mapping*(c: ptr xcb_connection_t;
#     device_id: uint8; keycodes_per_modifier: uint8; keymaps: ptr uint8): xcb_input_set_device_modifier_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_set_device_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8; keycodes_per_modifier: uint8; keymaps: ptr uint8): xcb_input_set_device_modifier_mapping_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_set_device_modifier_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_set_device_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_modifier_mapping_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_modifier_mapping_reply_t
# proc xcb_input_get_device_button_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_button_mapping*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_device_button_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_button_mapping_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_get_device_button_mapping_cookie_t
# proc xcb_input_get_device_button_mapping_map*(
#     R: ptr xcb_input_get_device_button_mapping_reply_t): ptr uint8
# proc xcb_input_get_device_button_mapping_map_length*(
#     R: ptr xcb_input_get_device_button_mapping_reply_t): cint
# proc xcb_input_get_device_button_mapping_map_end*(
#     R: ptr xcb_input_get_device_button_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_button_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_button_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_button_mapping_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_button_mapping_reply_t
# proc xcb_input_set_device_button_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_set_device_button_mapping*(c: ptr xcb_connection_t;
#     device_id: uint8; map_size: uint8; map: ptr uint8): xcb_input_set_device_button_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_set_device_button_mapping_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8; map_size: uint8; map: ptr uint8): xcb_input_set_device_button_mapping_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_set_device_button_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_set_device_button_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_button_mapping_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_button_mapping_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_key_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_key_state_t)
# ##

# proc xcb_input_key_state_next*(i: ptr xcb_input_key_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_key_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_key_state_end*(i: xcb_input_key_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_button_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_button_state_t)
# ##

# proc xcb_input_button_state_next*(i: ptr xcb_input_button_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_button_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_button_state_end*(i: xcb_input_button_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_valuator_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_valuator_state_valuators*(R: ptr xcb_input_valuator_state_t): ptr int32
# proc xcb_input_valuator_state_valuators_length*(R: ptr xcb_input_valuator_state_t): cint
# proc xcb_input_valuator_state_valuators_end*(R: ptr xcb_input_valuator_state_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_valuator_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_valuator_state_t)
# ##

# proc xcb_input_valuator_state_next*(i: ptr xcb_input_valuator_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_valuator_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_valuator_state_end*(i: xcb_input_valuator_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_input_state_data_valuator_valuators*(
#     S: ptr xcb_input_input_state_data_t): ptr int32
# proc xcb_input_input_state_data_valuator_valuators_length*(
#     R: ptr xcb_input_input_state_t; S: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_valuator_valuators_end*(
#     R: ptr xcb_input_input_state_t; S: ptr xcb_input_input_state_data_t): xcb_generic_iterator_t
# proc xcb_input_input_state_data_serialize*(_buffer: ptr pointer; class_id: uint8;
#     _aux: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_unpack*(_buffer: pointer; class_id: uint8;
#                                        _aux: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_input_state_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_input_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_input_state_t)
# ##

# proc xcb_input_input_state_next*(i: ptr xcb_input_input_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_input_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_input_state_end*(i: xcb_input_input_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_query_device_state_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_query_device_state*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_query_device_state_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_query_device_state_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_query_device_state_cookie_t
# proc xcb_input_query_device_state_classes_length*(
#     R: ptr xcb_input_query_device_state_reply_t): cint
# proc xcb_input_query_device_state_classes_iterator*(
#     R: ptr xcb_input_query_device_state_reply_t): xcb_input_input_state_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_query_device_state_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_query_device_state_reply*(c: ptr xcb_connection_t; cookie: xcb_input_query_device_state_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_input_query_device_state_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_device_bell_checked*(c: ptr xcb_connection_t; device_id: uint8;
#                                    feedback_id: uint8; feedback_class: uint8;
#                                    percent: int8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_device_bell*(c: ptr xcb_connection_t; device_id: uint8;
#                            feedback_id: uint8; feedback_class: uint8;
#                            percent: int8): xcb_void_cookie_t
# proc xcb_input_set_device_valuators_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_set_device_valuators*(c: ptr xcb_connection_t; device_id: uint8;
#                                     first_valuator: uint8;
#                                     num_valuators: uint8; valuators: ptr int32): xcb_input_set_device_valuators_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_set_device_valuators_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8; first_valuator: uint8; num_valuators: uint8;
#     valuators: ptr int32): xcb_input_set_device_valuators_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_set_device_valuators_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_set_device_valuators_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_valuators_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_valuators_reply_t
# proc xcb_input_device_resolution_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_resolution_state_resolution_values*(
#     R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_values_length*(
#     R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_values_end*(
#     R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# proc xcb_input_device_resolution_state_resolution_min*(
#     R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_min_length*(
#     R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_min_end*(
#     R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# proc xcb_input_device_resolution_state_resolution_max*(
#     R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_max_length*(
#     R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_max_end*(
#     R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_resolution_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_resolution_state_t)
# ##

# proc xcb_input_device_resolution_state_next*(
#     i: ptr xcb_input_device_resolution_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_resolution_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_resolution_state_end*(
#     i: xcb_input_device_resolution_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_abs_calib_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_abs_calib_state_t)
# ##

# proc xcb_input_device_abs_calib_state_next*(
#     i: ptr xcb_input_device_abs_calib_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_abs_calib_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_abs_calib_state_end*(
#     i: xcb_input_device_abs_calib_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_abs_area_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_abs_area_state_t)
# ##

# proc xcb_input_device_abs_area_state_next*(
#     i: ptr xcb_input_device_abs_area_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_abs_area_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_abs_area_state_end*(
#     i: xcb_input_device_abs_area_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_core_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_core_state_t)
# ##

# proc xcb_input_device_core_state_next*(i: ptr xcb_input_device_core_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_core_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_core_state_end*(i: xcb_input_device_core_state_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_enable_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_enable_state_t)
# ##

# proc xcb_input_device_enable_state_next*(i: ptr xcb_input_device_enable_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_enable_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_enable_state_end*(i: xcb_input_device_enable_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_values*(
#     S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_values_length*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_values_end*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_min*(
#     S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_min_length*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_min_end*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_max*(
#     S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_max_length*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_max_end*(
#     R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_serialize*(_buffer: ptr pointer;
#     control_id: uint16; _aux: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_unpack*(_buffer: pointer; control_id: uint16;
#                                         _aux: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_sizeof*(_buffer: pointer; control_id: uint16): cint
# proc xcb_input_device_state_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_state_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_state_t)
# ##

# proc xcb_input_device_state_next*(i: ptr xcb_input_device_state_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_state_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_state_end*(i: xcb_input_device_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_device_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_control*(c: ptr xcb_connection_t; control_id: uint16;
#                                   device_id: uint8): xcb_input_get_device_control_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_control_unchecked*(c: ptr xcb_connection_t;
#     control_id: uint16; device_id: uint8): xcb_input_get_device_control_cookie_t
# proc xcb_input_get_device_control_control*(
#     R: ptr xcb_input_get_device_control_reply_t): ptr xcb_input_device_state_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_control_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_control_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_control_reply_t
# proc xcb_input_device_resolution_ctl_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_resolution_ctl_resolution_values*(
#     R: ptr xcb_input_device_resolution_ctl_t): ptr uint32
# proc xcb_input_device_resolution_ctl_resolution_values_length*(
#     R: ptr xcb_input_device_resolution_ctl_t): cint
# proc xcb_input_device_resolution_ctl_resolution_values_end*(
#     R: ptr xcb_input_device_resolution_ctl_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_resolution_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_resolution_ctl_t)
# ##

# proc xcb_input_device_resolution_ctl_next*(
#     i: ptr xcb_input_device_resolution_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_resolution_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_resolution_ctl_end*(
#     i: xcb_input_device_resolution_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_abs_calib_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_abs_calib_ctl_t)
# ##

# proc xcb_input_device_abs_calib_ctl_next*(
#     i: ptr xcb_input_device_abs_calib_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_abs_calib_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_abs_calib_ctl_end*(i: xcb_input_device_abs_calib_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_abs_area_ctrl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_abs_area_ctrl_t)
# ##

# proc xcb_input_device_abs_area_ctrl_next*(
#     i: ptr xcb_input_device_abs_area_ctrl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_abs_area_ctrl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_abs_area_ctrl_end*(i: xcb_input_device_abs_area_ctrl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_core_ctrl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_core_ctrl_t)
# ##

# proc xcb_input_device_core_ctrl_next*(i: ptr xcb_input_device_core_ctrl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_core_ctrl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_core_ctrl_end*(i: xcb_input_device_core_ctrl_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_enable_ctrl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_enable_ctrl_t)
# ##

# proc xcb_input_device_enable_ctrl_next*(i: ptr xcb_input_device_enable_ctrl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_enable_ctrl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_enable_ctrl_end*(i: xcb_input_device_enable_ctrl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_ctl_data_resolution_resolution_values*(
#     S: ptr xcb_input_device_ctl_data_t): ptr uint32
# proc xcb_input_device_ctl_data_resolution_resolution_values_length*(
#     R: ptr xcb_input_device_ctl_t; S: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_resolution_resolution_values_end*(
#     R: ptr xcb_input_device_ctl_t; S: ptr xcb_input_device_ctl_data_t): xcb_generic_iterator_t
# proc xcb_input_device_ctl_data_serialize*(_buffer: ptr pointer;
#     control_id: uint16; _aux: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_unpack*(_buffer: pointer; control_id: uint16;
#                                       _aux: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_sizeof*(_buffer: pointer; control_id: uint16): cint
# proc xcb_input_device_ctl_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_ctl_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_ctl_t)
# ##

# proc xcb_input_device_ctl_next*(i: ptr xcb_input_device_ctl_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_ctl_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_ctl_end*(i: xcb_input_device_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_change_device_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_device_control*(c: ptr xcb_connection_t; control_id: uint16;
#                                      device_id: uint8;
#                                      control: ptr xcb_input_device_ctl_t): xcb_input_change_device_control_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_change_device_control_unchecked*(c: ptr xcb_connection_t;
#     control_id: uint16; device_id: uint8; control: ptr xcb_input_device_ctl_t): xcb_input_change_device_control_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_change_device_control_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_change_device_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_device_control_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_device_control_reply_t
# proc xcb_input_list_device_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_list_device_properties*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_list_device_properties_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_list_device_properties_unchecked*(c: ptr xcb_connection_t;
#     device_id: uint8): xcb_input_list_device_properties_cookie_t
# proc xcb_input_list_device_properties_atoms*(
#     R: ptr xcb_input_list_device_properties_reply_t): ptr xcb_atom_t
# proc xcb_input_list_device_properties_atoms_length*(
#     R: ptr xcb_input_list_device_properties_reply_t): cint
# proc xcb_input_list_device_properties_atoms_end*(
#     R: ptr xcb_input_list_device_properties_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_list_device_properties_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_list_device_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_input_list_device_properties_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_list_device_properties_reply_t
# proc xcb_input_change_device_property_items_data_8*(
#     S: ptr xcb_input_change_device_property_items_t): ptr uint8
# proc xcb_input_change_device_property_items_data_8_length*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_8_end*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_data_16*(
#     S: ptr xcb_input_change_device_property_items_t): ptr uint16
# proc xcb_input_change_device_property_items_data_16_length*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_16_end*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_data_32*(
#     S: ptr xcb_input_change_device_property_items_t): ptr uint32
# proc xcb_input_change_device_property_items_data_32_length*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_32_end*(
#     R: ptr xcb_input_change_device_property_request_t;
#     S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_serialize*(_buffer: ptr pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_unpack*(_buffer: pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_sizeof*(_buffer: pointer;
#     num_items: uint32; format: uint8): cint
# proc xcb_input_change_device_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_change_device_property_checked*(c: ptr xcb_connection_t;
#     property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
#     mode: uint8; num_items: uint32; items: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_device_property*(c: ptr xcb_connection_t;
#                                       property: xcb_atom_t; `type`: xcb_atom_t;
#                                       device_id: uint8; format: uint8;
#                                       mode: uint8; num_items: uint32;
#                                       items: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_change_device_property_aux_checked*(c: ptr xcb_connection_t;
#     property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
#     mode: uint8; num_items: uint32;
#     items: ptr xcb_input_change_device_property_items_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_change_device_property_aux*(c: ptr xcb_connection_t;
#     property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
#     mode: uint8; num_items: uint32;
#     items: ptr xcb_input_change_device_property_items_t): xcb_void_cookie_t
# proc xcb_input_change_device_property_items*(
#     R: ptr xcb_input_change_device_property_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_delete_device_property_checked*(c: ptr xcb_connection_t;
#     property: xcb_atom_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_delete_device_property*(c: ptr xcb_connection_t;
#                                       property: xcb_atom_t; device_id: uint8): xcb_void_cookie_t
# proc xcb_input_get_device_property_items_data_8*(
#     S: ptr xcb_input_get_device_property_items_t): ptr uint8
# proc xcb_input_get_device_property_items_data_8_length*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_8_end*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_data_16*(
#     S: ptr xcb_input_get_device_property_items_t): ptr uint16
# proc xcb_input_get_device_property_items_data_16_length*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_16_end*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_data_32*(
#     S: ptr xcb_input_get_device_property_items_t): ptr uint32
# proc xcb_input_get_device_property_items_data_32_length*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_32_end*(
#     R: ptr xcb_input_get_device_property_reply_t;
#     S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_serialize*(_buffer: ptr pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_unpack*(_buffer: pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_sizeof*(_buffer: pointer;
#     num_items: uint32; format: uint8): cint
# proc xcb_input_get_device_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_get_device_property*(c: ptr xcb_connection_t; property: xcb_atom_t;
#                                    `type`: xcb_atom_t; offset: uint32;
#                                    len: uint32; device_id: uint8;
#                                    _delete: uint8): xcb_input_get_device_property_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_get_device_property_unchecked*(c: ptr xcb_connection_t;
#     property: xcb_atom_t; `type`: xcb_atom_t; offset: uint32; len: uint32;
#     device_id: uint8; _delete: uint8): xcb_input_get_device_property_cookie_t
# proc xcb_input_get_device_property_items*(
#     R: ptr xcb_input_get_device_property_reply_t): pointer
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_get_device_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_get_device_property_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_property_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_property_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_group_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_group_info_t)
# ##

# proc xcb_input_group_info_next*(i: ptr xcb_input_group_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_group_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_group_info_end*(i: xcb_input_group_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_modifier_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_modifier_info_t)
# ##

# proc xcb_input_modifier_info_next*(i: ptr xcb_input_modifier_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_modifier_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_modifier_info_end*(i: xcb_input_modifier_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_query_pointer_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_query_pointer*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 deviceid: xcb_input_device_id_t): xcb_input_xi_query_pointer_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_query_pointer_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; deviceid: xcb_input_device_id_t): xcb_input_xi_query_pointer_cookie_t
# proc xcb_input_xi_query_pointer_buttons*(R: ptr xcb_input_xi_query_pointer_reply_t): ptr uint32
# proc xcb_input_xi_query_pointer_buttons_length*(
#     R: ptr xcb_input_xi_query_pointer_reply_t): cint
# proc xcb_input_xi_query_pointer_buttons_end*(
#     R: ptr xcb_input_xi_query_pointer_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_query_pointer_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_query_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_pointer_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_pointer_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_warp_pointer_checked*(c: ptr xcb_connection_t;
#                                        src_win: xcb_window_t;
#                                        dst_win: xcb_window_t;
#                                        src_x: xcb_input_fp1616_t;
#                                        src_y: xcb_input_fp1616_t;
#                                        src_width: uint16; src_height: uint16;
#                                        dst_x: xcb_input_fp1616_t;
#                                        dst_y: xcb_input_fp1616_t;
#                                        deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_warp_pointer*(c: ptr xcb_connection_t; src_win: xcb_window_t;
#                                dst_win: xcb_window_t; src_x: xcb_input_fp1616_t;
#                                src_y: xcb_input_fp1616_t; src_width: uint16;
#                                src_height: uint16; dst_x: xcb_input_fp1616_t;
#                                dst_y: xcb_input_fp1616_t;
#                                deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_change_cursor_checked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t;
#                                         cursor: xcb_cursor_t;
#                                         deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_change_cursor*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 cursor: xcb_cursor_t;
#                                 deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# proc xcb_input_add_master_sizeof*(_buffer: pointer): cint
# proc xcb_input_add_master_name*(R: ptr xcb_input_add_master_t): cstring
# proc xcb_input_add_master_name_length*(R: ptr xcb_input_add_master_t): cint
# proc xcb_input_add_master_name_end*(R: ptr xcb_input_add_master_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_add_master_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_add_master_t)
# ##

# proc xcb_input_add_master_next*(i: ptr xcb_input_add_master_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_add_master_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_add_master_end*(i: xcb_input_add_master_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_remove_master_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_remove_master_t)
# ##

# proc xcb_input_remove_master_next*(i: ptr xcb_input_remove_master_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_remove_master_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_remove_master_end*(i: xcb_input_remove_master_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_attach_slave_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_attach_slave_t)
# ##

# proc xcb_input_attach_slave_next*(i: ptr xcb_input_attach_slave_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_attach_slave_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_attach_slave_end*(i: xcb_input_attach_slave_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_detach_slave_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_detach_slave_t)
# ##

# proc xcb_input_detach_slave_next*(i: ptr xcb_input_detach_slave_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_detach_slave_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_detach_slave_end*(i: xcb_input_detach_slave_iterator_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_change_data_add_master_name*(
#     S: ptr xcb_input_hierarchy_change_data_t): cstring
# proc xcb_input_hierarchy_change_data_add_master_name_length*(
#     R: ptr xcb_input_hierarchy_change_t; S: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_add_master_name_end*(
#     R: ptr xcb_input_hierarchy_change_t; S: ptr xcb_input_hierarchy_change_data_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_change_data_serialize*(_buffer: ptr pointer;
#     `type`: uint16; _aux: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_unpack*(_buffer: pointer; `type`: uint16;
#     _aux: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_sizeof*(_buffer: pointer; `type`: uint16): cint
# proc xcb_input_hierarchy_change_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_hierarchy_change_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_hierarchy_change_t)
# ##

# proc xcb_input_hierarchy_change_next*(i: ptr xcb_input_hierarchy_change_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_hierarchy_change_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_hierarchy_change_end*(i: xcb_input_hierarchy_change_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_hierarchy_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_change_hierarchy_checked*(c: ptr xcb_connection_t;
#     num_changes: uint8; changes: ptr xcb_input_hierarchy_change_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_change_hierarchy*(c: ptr xcb_connection_t; num_changes: uint8;
#                                    changes: ptr xcb_input_hierarchy_change_t): xcb_void_cookie_t
# proc xcb_input_xi_change_hierarchy_changes_length*(
#     R: ptr xcb_input_xi_change_hierarchy_request_t): cint
# proc xcb_input_xi_change_hierarchy_changes_iterator*(
#     R: ptr xcb_input_xi_change_hierarchy_request_t): xcb_input_hierarchy_change_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_set_client_pointer_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_set_client_pointer*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_get_client_pointer*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_input_xi_get_client_pointer_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_get_client_pointer_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_xi_get_client_pointer_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_get_client_pointer_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_get_client_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_client_pointer_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_client_pointer_reply_t
# proc xcb_input_event_mask_sizeof*(_buffer: pointer): cint
# proc xcb_input_event_mask_mask*(R: ptr xcb_input_event_mask_t): ptr uint32
# proc xcb_input_event_mask_mask_length*(R: ptr xcb_input_event_mask_t): cint
# proc xcb_input_event_mask_mask_end*(R: ptr xcb_input_event_mask_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_event_mask_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_event_mask_t)
# ##

# proc xcb_input_event_mask_next*(i: ptr xcb_input_event_mask_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_event_mask_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_event_mask_end*(i: xcb_input_event_mask_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_select_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_select_events_checked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t; num_mask: uint16;
#                                         masks: ptr xcb_input_event_mask_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_select_events*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                 num_mask: uint16;
#                                 masks: ptr xcb_input_event_mask_t): xcb_void_cookie_t
# proc xcb_input_xi_select_events_masks_length*(
#     R: ptr xcb_input_xi_select_events_request_t): cint
# proc xcb_input_xi_select_events_masks_iterator*(
#     R: ptr xcb_input_xi_select_events_request_t): xcb_input_event_mask_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_query_version*(c: ptr xcb_connection_t; major_version: uint16;
#                                 minor_version: uint16): xcb_input_xi_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_query_version_unchecked*(c: ptr xcb_connection_t;
#     major_version: uint16; minor_version: uint16): xcb_input_xi_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_version_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_version_reply_t
# proc xcb_input_button_class_sizeof*(_buffer: pointer): cint
# proc xcb_input_button_class_state*(R: ptr xcb_input_button_class_t): ptr uint32
# proc xcb_input_button_class_state_length*(R: ptr xcb_input_button_class_t): cint
# proc xcb_input_button_class_state_end*(R: ptr xcb_input_button_class_t): xcb_generic_iterator_t
# proc xcb_input_button_class_labels*(R: ptr xcb_input_button_class_t): ptr xcb_atom_t
# proc xcb_input_button_class_labels_length*(R: ptr xcb_input_button_class_t): cint
# proc xcb_input_button_class_labels_end*(R: ptr xcb_input_button_class_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_button_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_button_class_t)
# ##

# proc xcb_input_button_class_next*(i: ptr xcb_input_button_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_button_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_button_class_end*(i: xcb_input_button_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_key_class_sizeof*(_buffer: pointer): cint
# proc xcb_input_key_class_keys*(R: ptr xcb_input_key_class_t): ptr uint32
# proc xcb_input_key_class_keys_length*(R: ptr xcb_input_key_class_t): cint
# proc xcb_input_key_class_keys_end*(R: ptr xcb_input_key_class_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_key_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_key_class_t)
# ##

# proc xcb_input_key_class_next*(i: ptr xcb_input_key_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_key_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_key_class_end*(i: xcb_input_key_class_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_scroll_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_scroll_class_t)
# ##

# proc xcb_input_scroll_class_next*(i: ptr xcb_input_scroll_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_scroll_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_scroll_class_end*(i: xcb_input_scroll_class_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_touch_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_touch_class_t)
# ##

# proc xcb_input_touch_class_next*(i: ptr xcb_input_touch_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_touch_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_touch_class_end*(i: xcb_input_touch_class_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_valuator_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_valuator_class_t)
# ##

# proc xcb_input_valuator_class_next*(i: ptr xcb_input_valuator_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_valuator_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_valuator_class_end*(i: xcb_input_valuator_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_key_keys*(S: ptr xcb_input_device_class_data_t): ptr uint32
# proc xcb_input_device_class_data_key_keys_length*(
#     R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_key_keys_end*(R: ptr xcb_input_device_class_t;
#     S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_button_state*(
#     S: ptr xcb_input_device_class_data_t): ptr uint32
# proc xcb_input_device_class_data_button_state_length*(
#     R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_button_state_end*(
#     R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_button_labels*(
#     S: ptr xcb_input_device_class_data_t): ptr xcb_atom_t
# proc xcb_input_device_class_data_button_labels_length*(
#     R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_button_labels_end*(
#     R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_serialize*(_buffer: ptr pointer; `type`: uint16;
#     _aux: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_unpack*(_buffer: pointer; `type`: uint16;
#                                         _aux: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_sizeof*(_buffer: pointer; `type`: uint16): cint
# proc xcb_input_device_class_sizeof*(_buffer: pointer): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_device_class_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_device_class_t)
# ##

# proc xcb_input_device_class_next*(i: ptr xcb_input_device_class_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_device_class_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_device_class_end*(i: xcb_input_device_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_device_info_sizeof*(_buffer: pointer): cint
# proc xcb_input_xi_device_info_name*(R: ptr xcb_input_xi_device_info_t): cstring
# proc xcb_input_xi_device_info_name_length*(R: ptr xcb_input_xi_device_info_t): cint
# proc xcb_input_xi_device_info_name_end*(R: ptr xcb_input_xi_device_info_t): xcb_generic_iterator_t
# proc xcb_input_xi_device_info_classes_length*(R: ptr xcb_input_xi_device_info_t): cint
# proc xcb_input_xi_device_info_classes_iterator*(R: ptr xcb_input_xi_device_info_t): xcb_input_device_class_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_xi_device_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_xi_device_info_t)
# ##

# proc xcb_input_xi_device_info_next*(i: ptr xcb_input_xi_device_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_xi_device_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_xi_device_info_end*(i: xcb_input_xi_device_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_query_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_query_device*(c: ptr xcb_connection_t;
#                                deviceid: xcb_input_device_id_t): xcb_input_xi_query_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_query_device_unchecked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t): xcb_input_xi_query_device_cookie_t
# proc xcb_input_xi_query_device_infos_length*(
#     R: ptr xcb_input_xi_query_device_reply_t): cint
# proc xcb_input_xi_query_device_infos_iterator*(
#     R: ptr xcb_input_xi_query_device_reply_t): xcb_input_xi_device_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_query_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_query_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_device_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_device_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_set_focus_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                     time: xcb_timestamp_t;
#                                     deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_set_focus*(c: ptr xcb_connection_t; window: xcb_window_t;
#                             time: xcb_timestamp_t; deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_get_focus*(c: ptr xcb_connection_t;
#                             deviceid: xcb_input_device_id_t): xcb_input_xi_get_focus_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_get_focus_unchecked*(c: ptr xcb_connection_t;
#                                       deviceid: xcb_input_device_id_t): xcb_input_xi_get_focus_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_get_focus_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_get_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_focus_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_focus_reply_t
# proc xcb_input_xi_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_grab_device*(c: ptr xcb_connection_t; window: xcb_window_t;
#                               time: xcb_timestamp_t; cursor: xcb_cursor_t;
#                               deviceid: xcb_input_device_id_t; mode: uint8;
#                               paired_device_mode: uint8; owner_events: uint8;
#                               mask_len: uint16; mask: ptr uint32): xcb_input_xi_grab_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_grab_device_unchecked*(c: ptr xcb_connection_t;
#                                         window: xcb_window_t;
#                                         time: xcb_timestamp_t;
#                                         cursor: xcb_cursor_t;
#                                         deviceid: xcb_input_device_id_t;
#                                         mode: uint8;
#                                         paired_device_mode: uint8;
#                                         owner_events: uint8; mask_len: uint16;
#                                         mask: ptr uint32): xcb_input_xi_grab_device_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_grab_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_grab_device_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_grab_device_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_ungrab_device_checked*(c: ptr xcb_connection_t;
#                                         time: xcb_timestamp_t;
#                                         deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_ungrab_device*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
#                                 deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_allow_events_checked*(c: ptr xcb_connection_t;
#                                        time: xcb_timestamp_t;
#                                        deviceid: xcb_input_device_id_t;
#                                        event_mode: uint8; touchid: uint32;
#                                        grab_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_allow_events*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
#                                deviceid: xcb_input_device_id_t;
#                                event_mode: uint8; touchid: uint32;
#                                grab_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_grab_modifier_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_grab_modifier_info_t)
# ##

# proc xcb_input_grab_modifier_info_next*(i: ptr xcb_input_grab_modifier_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_grab_modifier_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_grab_modifier_info_end*(i: xcb_input_grab_modifier_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_passive_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_passive_grab_device*(c: ptr xcb_connection_t;
#                                       time: xcb_timestamp_t;
#                                       grab_window: xcb_window_t;
#                                       cursor: xcb_cursor_t; detail: uint32;
#                                       deviceid: xcb_input_device_id_t;
#                                       num_modifiers: uint16; mask_len: uint16;
#                                       grab_type: uint8; grab_mode: uint8;
#                                       paired_device_mode: uint8;
#                                       owner_events: uint8; mask: ptr uint32;
#                                       modifiers: ptr uint32): xcb_input_xi_passive_grab_device_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_passive_grab_device_unchecked*(c: ptr xcb_connection_t;
#     time: xcb_timestamp_t; grab_window: xcb_window_t; cursor: xcb_cursor_t;
#     detail: uint32; deviceid: xcb_input_device_id_t; num_modifiers: uint16;
#     mask_len: uint16; grab_type: uint8; grab_mode: uint8;
#     paired_device_mode: uint8; owner_events: uint8; mask: ptr uint32;
#     modifiers: ptr uint32): xcb_input_xi_passive_grab_device_cookie_t
# proc xcb_input_xi_passive_grab_device_modifiers*(
#     R: ptr xcb_input_xi_passive_grab_device_reply_t): ptr xcb_input_grab_modifier_info_t
# proc xcb_input_xi_passive_grab_device_modifiers_length*(
#     R: ptr xcb_input_xi_passive_grab_device_reply_t): cint
# proc xcb_input_xi_passive_grab_device_modifiers_iterator*(
#     R: ptr xcb_input_xi_passive_grab_device_reply_t): xcb_input_grab_modifier_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_passive_grab_device_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_passive_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_passive_grab_device_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_passive_grab_device_reply_t
# proc xcb_input_xi_passive_ungrab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_passive_ungrab_device_checked*(c: ptr xcb_connection_t;
#     grab_window: xcb_window_t; detail: uint32; deviceid: xcb_input_device_id_t;
#     num_modifiers: uint16; grab_type: uint8; modifiers: ptr uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_passive_ungrab_device*(c: ptr xcb_connection_t;
#                                         grab_window: xcb_window_t;
#                                         detail: uint32;
#                                         deviceid: xcb_input_device_id_t;
#                                         num_modifiers: uint16;
#                                         grab_type: uint8;
#                                         modifiers: ptr uint32): xcb_void_cookie_t
# proc xcb_input_xi_passive_ungrab_device_modifiers*(
#     R: ptr xcb_input_xi_passive_ungrab_device_request_t): ptr uint32
# proc xcb_input_xi_passive_ungrab_device_modifiers_length*(
#     R: ptr xcb_input_xi_passive_ungrab_device_request_t): cint
# proc xcb_input_xi_passive_ungrab_device_modifiers_end*(
#     R: ptr xcb_input_xi_passive_ungrab_device_request_t): xcb_generic_iterator_t
# proc xcb_input_xi_list_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_list_properties*(c: ptr xcb_connection_t;
#                                   deviceid: xcb_input_device_id_t): xcb_input_xi_list_properties_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_list_properties_unchecked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t): xcb_input_xi_list_properties_cookie_t
# proc xcb_input_xi_list_properties_properties*(
#     R: ptr xcb_input_xi_list_properties_reply_t): ptr xcb_atom_t
# proc xcb_input_xi_list_properties_properties_length*(
#     R: ptr xcb_input_xi_list_properties_reply_t): cint
# proc xcb_input_xi_list_properties_properties_end*(
#     R: ptr xcb_input_xi_list_properties_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_list_properties_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_list_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_list_properties_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_list_properties_reply_t
# proc xcb_input_xi_change_property_items_data_8*(
#     S: ptr xcb_input_xi_change_property_items_t): ptr uint8
# proc xcb_input_xi_change_property_items_data_8_length*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_8_end*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_data_16*(
#     S: ptr xcb_input_xi_change_property_items_t): ptr uint16
# proc xcb_input_xi_change_property_items_data_16_length*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_16_end*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_data_32*(
#     S: ptr xcb_input_xi_change_property_items_t): ptr uint32
# proc xcb_input_xi_change_property_items_data_32_length*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_32_end*(
#     R: ptr xcb_input_xi_change_property_request_t;
#     S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_serialize*(_buffer: ptr pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_unpack*(_buffer: pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_sizeof*(_buffer: pointer;
#     num_items: uint32; format: uint8): cint
# proc xcb_input_xi_change_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_change_property_checked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t; mode: uint8; format: uint8;
#     property: xcb_atom_t; `type`: xcb_atom_t; num_items: uint32; items: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_change_property*(c: ptr xcb_connection_t;
#                                   deviceid: xcb_input_device_id_t; mode: uint8;
#                                   format: uint8; property: xcb_atom_t;
#                                   `type`: xcb_atom_t; num_items: uint32;
#                                   items: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_change_property_aux_checked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t; mode: uint8; format: uint8;
#     property: xcb_atom_t; `type`: xcb_atom_t; num_items: uint32;
#     items: ptr xcb_input_xi_change_property_items_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_change_property_aux*(c: ptr xcb_connection_t;
#                                       deviceid: xcb_input_device_id_t;
#                                       mode: uint8; format: uint8;
#                                       property: xcb_atom_t; `type`: xcb_atom_t;
#                                       num_items: uint32; items: ptr xcb_input_xi_change_property_items_t): xcb_void_cookie_t
# proc xcb_input_xi_change_property_items*(R: ptr xcb_input_xi_change_property_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_delete_property_checked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_delete_property*(c: ptr xcb_connection_t;
#                                   deviceid: xcb_input_device_id_t;
#                                   property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_input_xi_get_property_items_data_8*(
#     S: ptr xcb_input_xi_get_property_items_t): ptr uint8
# proc xcb_input_xi_get_property_items_data_8_length*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_8_end*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_data_16*(
#     S: ptr xcb_input_xi_get_property_items_t): ptr uint16
# proc xcb_input_xi_get_property_items_data_16_length*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_16_end*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_data_32*(
#     S: ptr xcb_input_xi_get_property_items_t): ptr uint32
# proc xcb_input_xi_get_property_items_data_32_length*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_32_end*(
#     R: ptr xcb_input_xi_get_property_reply_t;
#     S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_serialize*(_buffer: ptr pointer;
#     num_items: uint32; format: uint8;
#     _aux: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_unpack*(_buffer: pointer; num_items: uint32;
#     format: uint8; _aux: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_sizeof*(_buffer: pointer; num_items: uint32;
#     format: uint8): cint
# proc xcb_input_xi_get_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_get_property*(c: ptr xcb_connection_t;
#                                deviceid: xcb_input_device_id_t; _delete: uint8;
#                                property: xcb_atom_t; `type`: xcb_atom_t;
#                                offset: uint32; len: uint32): xcb_input_xi_get_property_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_get_property_unchecked*(c: ptr xcb_connection_t;
#     deviceid: xcb_input_device_id_t; _delete: uint8; property: xcb_atom_t;
#     `type`: xcb_atom_t; offset: uint32; len: uint32): xcb_input_xi_get_property_cookie_t
# proc xcb_input_xi_get_property_items*(R: ptr xcb_input_xi_get_property_reply_t): pointer
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_get_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_get_property_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_property_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_property_reply_t
# proc xcb_input_xi_get_selected_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_get_selected_events*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_input_xi_get_selected_events_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_input_xi_get_selected_events_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_input_xi_get_selected_events_cookie_t
# proc xcb_input_xi_get_selected_events_masks_length*(
#     R: ptr xcb_input_xi_get_selected_events_reply_t): cint
# proc xcb_input_xi_get_selected_events_masks_iterator*(
#     R: ptr xcb_input_xi_get_selected_events_reply_t): xcb_input_event_mask_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_input_xi_get_selected_events_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_input_xi_get_selected_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_selected_events_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_selected_events_reply_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_barrier_release_pointer_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_barrier_release_pointer_info_t)
# ##

# proc xcb_input_barrier_release_pointer_info_next*(
#     i: ptr xcb_input_barrier_release_pointer_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_barrier_release_pointer_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_barrier_release_pointer_info_end*(
#     i: xcb_input_barrier_release_pointer_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_barrier_release_pointer_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_xi_barrier_release_pointer_checked*(c: ptr xcb_connection_t;
#     num_barriers: uint32; barriers: ptr xcb_input_barrier_release_pointer_info_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_xi_barrier_release_pointer*(c: ptr xcb_connection_t;
#     num_barriers: uint32; barriers: ptr xcb_input_barrier_release_pointer_info_t): xcb_void_cookie_t
# proc xcb_input_xi_barrier_release_pointer_barriers*(
#     R: ptr xcb_input_xi_barrier_release_pointer_request_t): ptr xcb_input_barrier_release_pointer_info_t
# proc xcb_input_xi_barrier_release_pointer_barriers_length*(
#     R: ptr xcb_input_xi_barrier_release_pointer_request_t): cint
# proc xcb_input_xi_barrier_release_pointer_barriers_iterator*(
#     R: ptr xcb_input_xi_barrier_release_pointer_request_t): xcb_input_barrier_release_pointer_info_iterator_t
# proc xcb_input_device_changed_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_changed_classes_length*(
#     R: ptr xcb_input_device_changed_event_t): cint
# proc xcb_input_device_changed_classes_iterator*(
#     R: ptr xcb_input_device_changed_event_t): xcb_input_device_class_iterator_t
# proc xcb_input_key_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_key_press_button_mask*(R: ptr xcb_input_key_press_event_t): ptr uint32
# proc xcb_input_key_press_button_mask_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_button_mask_end*(R: ptr xcb_input_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_key_press_valuator_mask*(R: ptr xcb_input_key_press_event_t): ptr uint32
# proc xcb_input_key_press_valuator_mask_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_valuator_mask_end*(R: ptr xcb_input_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_key_press_axisvalues*(R: ptr xcb_input_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_key_press_axisvalues_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_axisvalues_iterator*(R: ptr xcb_input_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_key_release_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_button_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_button_press_button_mask*(R: ptr xcb_input_button_press_event_t): ptr uint32
# proc xcb_input_button_press_button_mask_length*(
#     R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_button_mask_end*(
#     R: ptr xcb_input_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_button_press_valuator_mask*(R: ptr xcb_input_button_press_event_t): ptr uint32
# proc xcb_input_button_press_valuator_mask_length*(
#     R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_valuator_mask_end*(
#     R: ptr xcb_input_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_button_press_axisvalues*(R: ptr xcb_input_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_button_press_axisvalues_length*(
#     R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_axisvalues_iterator*(
#     R: ptr xcb_input_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_button_release_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_motion_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_enter_sizeof*(_buffer: pointer): cint
# proc xcb_input_enter_buttons*(R: ptr xcb_input_enter_event_t): ptr uint32
# proc xcb_input_enter_buttons_length*(R: ptr xcb_input_enter_event_t): cint
# proc xcb_input_enter_buttons_end*(R: ptr xcb_input_enter_event_t): xcb_generic_iterator_t
# proc xcb_input_leave_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_focus_in_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_focus_out_sizeof*(_buffer: pointer): cint
#   ## *<
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_hierarchy_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_hierarchy_info_t)
# ##

# proc xcb_input_hierarchy_info_next*(i: ptr xcb_input_hierarchy_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_hierarchy_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_hierarchy_info_end*(i: xcb_input_hierarchy_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_sizeof*(_buffer: pointer): cint
# proc xcb_input_hierarchy_infos*(R: ptr xcb_input_hierarchy_event_t): ptr xcb_input_hierarchy_info_t
# proc xcb_input_hierarchy_infos_length*(R: ptr xcb_input_hierarchy_event_t): cint
# proc xcb_input_hierarchy_infos_iterator*(R: ptr xcb_input_hierarchy_event_t): xcb_input_hierarchy_info_iterator_t
# proc xcb_input_raw_key_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_key_press_valuator_mask*(
#     R: ptr xcb_input_raw_key_press_event_t): ptr uint32
# proc xcb_input_raw_key_press_valuator_mask_length*(
#     R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_valuator_mask_end*(
#     R: ptr xcb_input_raw_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_key_press_axisvalues*(R: ptr xcb_input_raw_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_key_press_axisvalues_length*(
#     R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_axisvalues_iterator*(
#     R: ptr xcb_input_raw_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_key_press_axisvalues_raw*(
#     R: ptr xcb_input_raw_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_key_press_axisvalues_raw_length*(
#     R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_axisvalues_raw_iterator*(
#     R: ptr xcb_input_raw_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_key_release_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_raw_button_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_button_press_valuator_mask*(
#     R: ptr xcb_input_raw_button_press_event_t): ptr uint32
# proc xcb_input_raw_button_press_valuator_mask_length*(
#     R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_valuator_mask_end*(
#     R: ptr xcb_input_raw_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_button_press_axisvalues*(
#     R: ptr xcb_input_raw_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_button_press_axisvalues_length*(
#     R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_axisvalues_iterator*(
#     R: ptr xcb_input_raw_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_button_press_axisvalues_raw*(
#     R: ptr xcb_input_raw_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_button_press_axisvalues_raw_length*(
#     R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_axisvalues_raw_iterator*(
#     R: ptr xcb_input_raw_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_button_release_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_raw_motion_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_touch_begin_sizeof*(_buffer: pointer): cint
# proc xcb_input_touch_begin_button_mask*(R: ptr xcb_input_touch_begin_event_t): ptr uint32
# proc xcb_input_touch_begin_button_mask_length*(
#     R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_button_mask_end*(R: ptr xcb_input_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_touch_begin_valuator_mask*(R: ptr xcb_input_touch_begin_event_t): ptr uint32
# proc xcb_input_touch_begin_valuator_mask_length*(
#     R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_valuator_mask_end*(
#     R: ptr xcb_input_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_touch_begin_axisvalues*(R: ptr xcb_input_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_touch_begin_axisvalues_length*(
#     R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_axisvalues_iterator*(
#     R: ptr xcb_input_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_touch_update_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_touch_end_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_raw_touch_begin_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_touch_begin_valuator_mask*(
#     R: ptr xcb_input_raw_touch_begin_event_t): ptr uint32
# proc xcb_input_raw_touch_begin_valuator_mask_length*(
#     R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_valuator_mask_end*(
#     R: ptr xcb_input_raw_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_touch_begin_axisvalues*(
#     R: ptr xcb_input_raw_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_touch_begin_axisvalues_length*(
#     R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_axisvalues_iterator*(
#     R: ptr xcb_input_raw_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_touch_begin_axisvalues_raw*(
#     R: ptr xcb_input_raw_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_touch_begin_axisvalues_raw_length*(
#     R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_axisvalues_raw_iterator*(
#     R: ptr xcb_input_raw_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_touch_update_sizeof*(_buffer: pointer): cint
#   ## *<
# proc xcb_input_raw_touch_end_sizeof*(_buffer: pointer): cint
#   ## *<
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_input_event_for_send_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_input_event_for_send_t)
# ##

# proc xcb_input_event_for_send_next*(i: ptr xcb_input_event_for_send_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_input_event_for_send_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_input_event_for_send_end*(i: xcb_input_event_for_send_iterator_t): xcb_generic_iterator_t
# proc xcb_input_send_extension_event_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_input_send_extension_event_checked*(c: ptr xcb_connection_t;
#     destination: xcb_window_t; device_id: uint8; propagate: uint8;
#     num_classes: uint16; num_events: uint8;
#     events: ptr xcb_input_event_for_send_t; classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_input_send_extension_event*(c: ptr xcb_connection_t;
#                                     destination: xcb_window_t; device_id: uint8;
#                                     propagate: uint8; num_classes: uint16;
#                                     num_events: uint8;
#                                     events: ptr xcb_input_event_for_send_t;
#                                     classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_send_extension_event_events*(
#     R: ptr xcb_input_send_extension_event_request_t): ptr xcb_input_event_for_send_t
# proc xcb_input_send_extension_event_events_length*(
#     R: ptr xcb_input_send_extension_event_request_t): cint
# proc xcb_input_send_extension_event_events_iterator*(
#     R: ptr xcb_input_send_extension_event_request_t): xcb_input_event_for_send_iterator_t
# proc xcb_input_send_extension_event_classes*(
#     R: ptr xcb_input_send_extension_event_request_t): ptr xcb_input_event_class_t
# proc xcb_input_send_extension_event_classes_length*(
#     R: ptr xcb_input_send_extension_event_request_t): cint
# proc xcb_input_send_extension_event_classes_end*(
#     R: ptr xcb_input_send_extension_event_request_t): xcb_generic_iterator_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xkb.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_xkb_API XCB xkb API
# ##  @brief xkb XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# type
#   xcb_xkb_const_t* = enum
#     XCB_XKB_CONST_KEY_NAME_LENGTH = 4, XCB_XKB_CONST_PER_KEY_BIT_ARRAY_SIZE = 32,
#     XCB_XKB_CONST_MAX_LEGAL_KEY_CODE = 255
#   xcb_xkb_event_type_t* = enum
#     XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY = 1, XCB_XKB_EVENT_TYPE_MAP_NOTIFY = 2,
#     XCB_XKB_EVENT_TYPE_STATE_NOTIFY = 4, XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY = 8,
#     XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY = 16,
#     XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY = 32,
#     XCB_XKB_EVENT_TYPE_NAMES_NOTIFY = 64,
#     XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY = 128,
#     XCB_XKB_EVENT_TYPE_BELL_NOTIFY = 256, XCB_XKB_EVENT_TYPE_ACTION_MESSAGE = 512,
#     XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY = 1024,
#     XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY = 2048
#   xcb_xkb_nkn_detail_t* = enum
#     XCB_XKB_NKN_DETAIL_KEYCODES = 1, XCB_XKB_NKN_DETAIL_GEOMETRY = 2,
#     XCB_XKB_NKN_DETAIL_DEVICE_ID = 4
#   xcb_xkb_axn_detail_t* = enum
#     XCB_XKB_AXN_DETAIL_SK_PRESS = 1, XCB_XKB_AXN_DETAIL_SK_ACCEPT = 2,
#     XCB_XKB_AXN_DETAIL_SK_REJECT = 4, XCB_XKB_AXN_DETAIL_SK_RELEASE = 8,
#     XCB_XKB_AXN_DETAIL_BK_ACCEPT = 16, XCB_XKB_AXN_DETAIL_BK_REJECT = 32,
#     XCB_XKB_AXN_DETAIL_AXK_WARNING = 64
#   xcb_xkb_map_part_t* = enum
#     XCB_XKB_MAP_PART_KEY_TYPES = 1, XCB_XKB_MAP_PART_KEY_SYMS = 2,
#     XCB_XKB_MAP_PART_MODIFIER_MAP = 4, XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS = 8,
#     XCB_XKB_MAP_PART_KEY_ACTIONS = 16, XCB_XKB_MAP_PART_KEY_BEHAVIORS = 32,
#     XCB_XKB_MAP_PART_VIRTUAL_MODS = 64, XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP = 128
#   xcb_xkb_set_map_flags_t* = enum
#     XCB_XKB_SET_MAP_FLAGS_RESIZE_TYPES = 1,
#     XCB_XKB_SET_MAP_FLAGS_RECOMPUTE_ACTIONS = 2
#   xcb_xkb_state_part_t* = enum
#     XCB_XKB_STATE_PART_MODIFIER_STATE = 1, XCB_XKB_STATE_PART_MODIFIER_BASE = 2,
#     XCB_XKB_STATE_PART_MODIFIER_LATCH = 4, XCB_XKB_STATE_PART_MODIFIER_LOCK = 8,
#     XCB_XKB_STATE_PART_GROUP_STATE = 16, XCB_XKB_STATE_PART_GROUP_BASE = 32,
#     XCB_XKB_STATE_PART_GROUP_LATCH = 64, XCB_XKB_STATE_PART_GROUP_LOCK = 128,
#     XCB_XKB_STATE_PART_COMPAT_STATE = 256, XCB_XKB_STATE_PART_GRAB_MODS = 512,
#     XCB_XKB_STATE_PART_COMPAT_GRAB_MODS = 1024,
#     XCB_XKB_STATE_PART_LOOKUP_MODS = 2048,
#     XCB_XKB_STATE_PART_COMPAT_LOOKUP_MODS = 4096,
#     XCB_XKB_STATE_PART_POINTER_BUTTONS = 8192
#   xcb_xkb_bool_ctrl_t* = enum
#     XCB_XKB_BOOL_CTRL_REPEAT_KEYS = 1, XCB_XKB_BOOL_CTRL_SLOW_KEYS = 2,
#     XCB_XKB_BOOL_CTRL_BOUNCE_KEYS = 4, XCB_XKB_BOOL_CTRL_STICKY_KEYS = 8,
#     XCB_XKB_BOOL_CTRL_MOUSE_KEYS = 16, XCB_XKB_BOOL_CTRL_MOUSE_KEYS_ACCEL = 32,
#     XCB_XKB_BOOL_CTRL_ACCESS_X_KEYS = 64,
#     XCB_XKB_BOOL_CTRL_ACCESS_X_TIMEOUT_MASK = 128,
#     XCB_XKB_BOOL_CTRL_ACCESS_X_FEEDBACK_MASK = 256,
#     XCB_XKB_BOOL_CTRL_AUDIBLE_BELL_MASK = 512,
#     XCB_XKB_BOOL_CTRL_OVERLAY_1_MASK = 1024,
#     XCB_XKB_BOOL_CTRL_OVERLAY_2_MASK = 2048,
#     XCB_XKB_BOOL_CTRL_IGNORE_GROUP_LOCK_MASK = 4096
#   xcb_xkb_control_t* = enum
#     XCB_XKB_CONTROL_GROUPS_WRAP = 134217728,
#     XCB_XKB_CONTROL_INTERNAL_MODS = 268435456,
#     XCB_XKB_CONTROL_IGNORE_LOCK_MODS = 536870912,
#     XCB_XKB_CONTROL_PER_KEY_REPEAT = 1073741824,
#     XCB_XKB_CONTROL_CONTROLS_ENABLED = 2147483648'i64
#   xcb_xkb_ax_option_t* = enum
#     XCB_XKB_AX_OPTION_SK_PRESS_FB = 1, XCB_XKB_AX_OPTION_SK_ACCEPT_FB = 2,
#     XCB_XKB_AX_OPTION_FEATURE_FB = 4, XCB_XKB_AX_OPTION_SLOW_WARN_FB = 8,
#     XCB_XKB_AX_OPTION_INDICATOR_FB = 16, XCB_XKB_AX_OPTION_STICKY_KEYS_FB = 32,
#     XCB_XKB_AX_OPTION_TWO_KEYS = 64, XCB_XKB_AX_OPTION_LATCH_TO_LOCK = 128,
#     XCB_XKB_AX_OPTION_SK_RELEASE_FB = 256, XCB_XKB_AX_OPTION_SK_REJECT_FB = 512,
#     XCB_XKB_AX_OPTION_BK_REJECT_FB = 1024, XCB_XKB_AX_OPTION_DUMB_BELL = 2048
#   xcb_xkb_device_spec_t* = uint16

# ## *
# ##  @brief xcb_xkb_device_spec_iterator_t
# ##

# type
#   xcb_xkb_device_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_device_spec_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_led_class_result_t* = enum
#     XCB_XKB_LED_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
#     XCB_XKB_LED_CLASS_RESULT_LED_FEEDBACK_CLASS = 4
#   xcb_xkb_led_class_t* = enum
#     XCB_XKB_LED_CLASS_KBD_FEEDBACK_CLASS = 0,
#     XCB_XKB_LED_CLASS_LED_FEEDBACK_CLASS = 4,
#     XCB_XKB_LED_CLASS_DFLT_XI_CLASS = 768, XCB_XKB_LED_CLASS_ALL_XI_CLASSES = 1280
#   xcb_xkb_led_class_spec_t* = uint16



# ## *
# ##  @brief xcb_xkb_led_class_spec_iterator_t
# ##

# type
#   xcb_xkb_led_class_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_led_class_spec_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_bell_class_result_t* = enum
#     XCB_XKB_BELL_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
#     XCB_XKB_BELL_CLASS_RESULT_BELL_FEEDBACK_CLASS = 5
#   xcb_xkb_bell_class_t* = enum
#     XCB_XKB_BELL_CLASS_KBD_FEEDBACK_CLASS = 0,
#     XCB_XKB_BELL_CLASS_BELL_FEEDBACK_CLASS = 5,
#     XCB_XKB_BELL_CLASS_DFLT_XI_CLASS = 768
#   xcb_xkb_bell_class_spec_t* = uint16



# ## *
# ##  @brief xcb_xkb_bell_class_spec_iterator_t
# ##

# type
#   xcb_xkb_bell_class_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_bell_class_spec_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_id_t* = enum
#     XCB_XKB_ID_USE_CORE_KBD = 256, XCB_XKB_ID_USE_CORE_PTR = 512,
#     XCB_XKB_ID_DFLT_XI_CLASS = 768, XCB_XKB_ID_DFLT_XI_ID = 1024,
#     XCB_XKB_ID_ALL_XI_CLASS = 1280, XCB_XKB_ID_ALL_XI_ID = 1536,
#     XCB_XKB_ID_XI_NONE = 65280
#   xcb_xkb_id_spec_t* = uint16


# ## *
# ##  @brief xcb_xkb_id_spec_iterator_t
# ##

# type
#   xcb_xkb_id_spec_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_id_spec_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_group_t* = enum
#     XCB_XKB_GROUP_1 = 0, XCB_XKB_GROUP_2 = 1, XCB_XKB_GROUP_3 = 2, XCB_XKB_GROUP_4 = 3
#   xcb_xkb_groups_t* = enum
#     XCB_XKB_GROUPS_ANY = 254, XCB_XKB_GROUPS_ALL = 255
#   xcb_xkb_set_of_group_t* = enum
#     XCB_XKB_SET_OF_GROUP_GROUP_1 = 1, XCB_XKB_SET_OF_GROUP_GROUP_2 = 2,
#     XCB_XKB_SET_OF_GROUP_GROUP_3 = 4, XCB_XKB_SET_OF_GROUP_GROUP_4 = 8
#   xcb_xkb_set_of_groups_t* = enum
#     XCB_XKB_SET_OF_GROUPS_ANY = 128
#   xcb_xkb_groups_wrap_t* = enum
#     XCB_XKB_GROUPS_WRAP_WRAP_INTO_RANGE = 0,
#     XCB_XKB_GROUPS_WRAP_CLAMP_INTO_RANGE = 64,
#     XCB_XKB_GROUPS_WRAP_REDIRECT_INTO_RANGE = 128
#   xcb_xkb_v_mods_high_t* = enum
#     XCB_XKB_V_MODS_HIGH_8 = 1, XCB_XKB_V_MODS_HIGH_9 = 2, XCB_XKB_V_MODS_HIGH_10 = 4,
#     XCB_XKB_V_MODS_HIGH_11 = 8, XCB_XKB_V_MODS_HIGH_12 = 16,
#     XCB_XKB_V_MODS_HIGH_13 = 32, XCB_XKB_V_MODS_HIGH_14 = 64,
#     XCB_XKB_V_MODS_HIGH_15 = 128
#   xcb_xkb_v_mods_low_t* = enum
#     XCB_XKB_V_MODS_LOW_0 = 1, XCB_XKB_V_MODS_LOW_1 = 2, XCB_XKB_V_MODS_LOW_2 = 4,
#     XCB_XKB_V_MODS_LOW_3 = 8, XCB_XKB_V_MODS_LOW_4 = 16, XCB_XKB_V_MODS_LOW_5 = 32,
#     XCB_XKB_V_MODS_LOW_6 = 64, XCB_XKB_V_MODS_LOW_7 = 128
#   xcb_xkb_v_mod_t* = enum
#     XCB_XKB_V_MOD_0 = 1, XCB_XKB_V_MOD_1 = 2, XCB_XKB_V_MOD_2 = 4, XCB_XKB_V_MOD_3 = 8,
#     XCB_XKB_V_MOD_4 = 16, XCB_XKB_V_MOD_5 = 32, XCB_XKB_V_MOD_6 = 64,
#     XCB_XKB_V_MOD_7 = 128, XCB_XKB_V_MOD_8 = 256, XCB_XKB_V_MOD_9 = 512,
#     XCB_XKB_V_MOD_10 = 1024, XCB_XKB_V_MOD_11 = 2048, XCB_XKB_V_MOD_12 = 4096,
#     XCB_XKB_V_MOD_13 = 8192, XCB_XKB_V_MOD_14 = 16384, XCB_XKB_V_MOD_15 = 32768
#   xcb_xkb_explicit_t* = enum
#     XCB_XKB_EXPLICIT_KEY_TYPE_1 = 1, XCB_XKB_EXPLICIT_KEY_TYPE_2 = 2,
#     XCB_XKB_EXPLICIT_KEY_TYPE_3 = 4, XCB_XKB_EXPLICIT_KEY_TYPE_4 = 8,
#     XCB_XKB_EXPLICIT_INTERPRET = 16, XCB_XKB_EXPLICIT_AUTO_REPEAT = 32,
#     XCB_XKB_EXPLICIT_BEHAVIOR = 64, XCB_XKB_EXPLICIT_V_MOD_MAP = 128
#   xcb_xkb_sym_interpret_match_t* = enum
#     XCB_XKB_SYM_INTERPRET_MATCH_NONE_OF = 0,
#     XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF_OR_NONE = 1,
#     XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF = 2, XCB_XKB_SYM_INTERPRET_MATCH_ALL_OF = 3,
#     XCB_XKB_SYM_INTERPRET_MATCH_EXACTLY = 4
#   xcb_xkb_sym_interp_match_t* = enum
#     XCB_XKB_SYM_INTERP_MATCH_OP_MASK = 127,
#     XCB_XKB_SYM_INTERP_MATCH_LEVEL_ONE_ONLY = 128
#   xcb_xkb_im_flag_t* = enum
#     XCB_XKB_IM_FLAG_LED_DRIVES_KB = 32, XCB_XKB_IM_FLAG_NO_AUTOMATIC = 64,
#     XCB_XKB_IM_FLAG_NO_EXPLICIT = 128
#   xcb_xkb_im_mods_which_t* = enum
#     XCB_XKB_IM_MODS_WHICH_USE_BASE = 1, XCB_XKB_IM_MODS_WHICH_USE_LATCHED = 2,
#     XCB_XKB_IM_MODS_WHICH_USE_LOCKED = 4, XCB_XKB_IM_MODS_WHICH_USE_EFFECTIVE = 8,
#     XCB_XKB_IM_MODS_WHICH_USE_COMPAT = 16
#   xcb_xkb_im_groups_which_t* = enum
#     XCB_XKB_IM_GROUPS_WHICH_USE_BASE = 1, XCB_XKB_IM_GROUPS_WHICH_USE_LATCHED = 2,
#     XCB_XKB_IM_GROUPS_WHICH_USE_LOCKED = 4,
#     XCB_XKB_IM_GROUPS_WHICH_USE_EFFECTIVE = 8,
#     XCB_XKB_IM_GROUPS_WHICH_USE_COMPAT = 16

# ## *
# ##  @brief xcb_xkb_indicator_map_t
# ##

# type
#   xcb_xkb_indicator_map_t* {.bycopy.} = object
#     flags*: uint8
#     whichGroups*: uint8
#     groups*: uint8
#     whichMods*: uint8
#     mods*: uint8
#     realMods*: uint8
#     vmods*: uint16
#     ctrls*: uint32


# ## *
# ##  @brief xcb_xkb_indicator_map_iterator_t
# ##

# type
#   xcb_xkb_indicator_map_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_indicator_map_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_cm_detail_t* = enum
#     XCB_XKB_CM_DETAIL_SYM_INTERP = 1, XCB_XKB_CM_DETAIL_GROUP_COMPAT = 2
#   xcb_xkb_name_detail_t* = enum
#     XCB_XKB_NAME_DETAIL_KEYCODES = 1, XCB_XKB_NAME_DETAIL_GEOMETRY = 2,
#     XCB_XKB_NAME_DETAIL_SYMBOLS = 4, XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS = 8,
#     XCB_XKB_NAME_DETAIL_TYPES = 16, XCB_XKB_NAME_DETAIL_COMPAT = 32,
#     XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES = 64,
#     XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES = 128,
#     XCB_XKB_NAME_DETAIL_INDICATOR_NAMES = 256, XCB_XKB_NAME_DETAIL_KEY_NAMES = 512,
#     XCB_XKB_NAME_DETAIL_KEY_ALIASES = 1024,
#     XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES = 2048,
#     XCB_XKB_NAME_DETAIL_GROUP_NAMES = 4096, XCB_XKB_NAME_DETAIL_RG_NAMES = 8192
#   xcb_xkb_gbn_detail_t* = enum
#     XCB_XKB_GBN_DETAIL_TYPES = 1, XCB_XKB_GBN_DETAIL_COMPAT_MAP = 2,
#     XCB_XKB_GBN_DETAIL_CLIENT_SYMBOLS = 4, XCB_XKB_GBN_DETAIL_SERVER_SYMBOLS = 8,
#     XCB_XKB_GBN_DETAIL_INDICATOR_MAPS = 16, XCB_XKB_GBN_DETAIL_KEY_NAMES = 32,
#     XCB_XKB_GBN_DETAIL_GEOMETRY = 64, XCB_XKB_GBN_DETAIL_OTHER_NAMES = 128
#   xcb_xkb_xi_feature_t* = enum
#     XCB_XKB_XI_FEATURE_KEYBOARDS = 1, XCB_XKB_XI_FEATURE_BUTTON_ACTIONS = 2,
#     XCB_XKB_XI_FEATURE_INDICATOR_NAMES = 4, XCB_XKB_XI_FEATURE_INDICATOR_MAPS = 8,
#     XCB_XKB_XI_FEATURE_INDICATOR_STATE = 16
#   xcb_xkb_per_client_flag_t* = enum
#     XCB_XKB_PER_CLIENT_FLAG_DETECTABLE_AUTO_REPEAT = 1,
#     XCB_XKB_PER_CLIENT_FLAG_GRABS_USE_XKB_STATE = 2,
#     XCB_XKB_PER_CLIENT_FLAG_AUTO_RESET_CONTROLS = 4,
#     XCB_XKB_PER_CLIENT_FLAG_LOOKUP_STATE_WHEN_GRABBED = 8,
#     XCB_XKB_PER_CLIENT_FLAG_SEND_EVENT_USES_XKB_STATE = 16

# ## *
# ##  @brief xcb_xkb_mod_def_t
# ##

# type
#   xcb_xkb_mod_def_t* {.bycopy.} = object
#     mask*: uint8
#     realMods*: uint8
#     vmods*: uint16


# ## *
# ##  @brief xcb_xkb_mod_def_iterator_t
# ##

# type
#   xcb_xkb_mod_def_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_mod_def_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_name_t
# ##

# type
#   xcb_xkb_key_name_t* {.bycopy.} = object
#     name*: array[4, char]


# ## *
# ##  @brief xcb_xkb_key_name_iterator_t
# ##

# type
#   xcb_xkb_key_name_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_name_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_alias_t
# ##

# type
#   xcb_xkb_key_alias_t* {.bycopy.} = object
#     real*: array[4, char]
#     alias*: array[4, char]


# ## *
# ##  @brief xcb_xkb_key_alias_iterator_t
# ##

# type
#   xcb_xkb_key_alias_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_alias_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_counted_string_16_t
# ##

# type
#   xcb_xkb_counted_string_16_t* {.bycopy.} = object
#     length*: uint16


# ## *
# ##  @brief xcb_xkb_counted_string_16_iterator_t
# ##

# type
#   xcb_xkb_counted_string_16_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_counted_string_16_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_kt_map_entry_t
# ##

# type
#   xcb_xkb_kt_map_entry_t* {.bycopy.} = object
#     active*: uint8
#     mods_mask*: uint8
#     level*: uint8
#     mods_mods*: uint8
#     mods_vmods*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_kt_map_entry_iterator_t
# ##

# type
#   xcb_xkb_kt_map_entry_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_kt_map_entry_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_type_t
# ##

# type
#   xcb_xkb_key_type_t* {.bycopy.} = object
#     mods_mask*: uint8
#     mods_mods*: uint8
#     mods_vmods*: uint16
#     numLevels*: uint8
#     nMapEntries*: uint8
#     hasPreserve*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_key_type_iterator_t
# ##

# type
#   xcb_xkb_key_type_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_type_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_sym_map_t
# ##

# type
#   xcb_xkb_key_sym_map_t* {.bycopy.} = object
#     kt_index*: array[4, uint8]
#     groupInfo*: uint8
#     width*: uint8
#     nSyms*: uint16


# ## *
# ##  @brief xcb_xkb_key_sym_map_iterator_t
# ##

# type
#   xcb_xkb_key_sym_map_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_sym_map_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_common_behavior_t
# ##

# type
#   xcb_xkb_common_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     data*: uint8


# ## *
# ##  @brief xcb_xkb_common_behavior_iterator_t
# ##

# type
#   xcb_xkb_common_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_common_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_default_behavior_t
# ##

# type
#   xcb_xkb_default_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_default_behavior_iterator_t
# ##

# type
#   xcb_xkb_default_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_default_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_lock_behavior_t
# ##

# type
#   xcb_xkb_lock_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_lock_behavior_iterator_t
# ##

# type
#   xcb_xkb_lock_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_lock_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_radio_group_behavior_t
# ##

# type
#   xcb_xkb_radio_group_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     group*: uint8


# ## *
# ##  @brief xcb_xkb_radio_group_behavior_iterator_t
# ##

# type
#   xcb_xkb_radio_group_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_radio_group_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_overlay_behavior_t
# ##

# type
#   xcb_xkb_overlay_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     key*: xcb_keycode_t


# ## *
# ##  @brief xcb_xkb_overlay_behavior_iterator_t
# ##

# type
#   xcb_xkb_overlay_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_overlay_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_permament_lock_behavior_t
# ##

# type
#   xcb_xkb_permament_lock_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_permament_lock_behavior_iterator_t
# ##

# type
#   xcb_xkb_permament_lock_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_permament_lock_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_permament_radio_group_behavior_t
# ##

# type
#   xcb_xkb_permament_radio_group_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     group*: uint8


# ## *
# ##  @brief xcb_xkb_permament_radio_group_behavior_iterator_t
# ##

# type
#   xcb_xkb_permament_radio_group_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_permament_radio_group_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_permament_overlay_behavior_t
# ##

# type
#   xcb_xkb_permament_overlay_behavior_t* {.bycopy.} = object
#     `type`*: uint8
#     key*: xcb_keycode_t


# ## *
# ##  @brief xcb_xkb_permament_overlay_behavior_iterator_t
# ##

# type
#   xcb_xkb_permament_overlay_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_permament_overlay_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_behavior_t
# ##

# type
#   xcb_xkb_behavior_t* {.bycopy.} = object {.union.}
#     common*: xcb_xkb_common_behavior_t
#     _default*: xcb_xkb_default_behavior_t
#     lock*: xcb_xkb_lock_behavior_t
#     radioGroup*: xcb_xkb_radio_group_behavior_t
#     overlay1*: xcb_xkb_overlay_behavior_t
#     overlay2*: xcb_xkb_overlay_behavior_t
#     permamentLock*: xcb_xkb_permament_lock_behavior_t
#     permamentRadioGroup*: xcb_xkb_permament_radio_group_behavior_t
#     permamentOverlay1*: xcb_xkb_permament_overlay_behavior_t
#     permamentOverlay2*: xcb_xkb_permament_overlay_behavior_t
#     `type`*: uint8


# ## *
# ##  @brief xcb_xkb_behavior_iterator_t
# ##

# type
#   xcb_xkb_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_behavior_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_behavior_type_t* = enum
#     XCB_XKB_BEHAVIOR_TYPE_DEFAULT = 0, XCB_XKB_BEHAVIOR_TYPE_LOCK = 1,
#     XCB_XKB_BEHAVIOR_TYPE_RADIO_GROUP = 2, XCB_XKB_BEHAVIOR_TYPE_OVERLAY_1 = 3,
#     XCB_XKB_BEHAVIOR_TYPE_OVERLAY_2 = 4,
#     XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_LOCK = 129,
#     XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_RADIO_GROUP = 130,
#     XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_1 = 131,
#     XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_2 = 132


# ## *
# ##  @brief xcb_xkb_set_behavior_t
# ##

# type
#   xcb_xkb_set_behavior_t* {.bycopy.} = object
#     keycode*: xcb_keycode_t
#     behavior*: xcb_xkb_behavior_t
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_set_behavior_iterator_t
# ##

# type
#   xcb_xkb_set_behavior_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_set_behavior_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_set_explicit_t
# ##

# type
#   xcb_xkb_set_explicit_t* {.bycopy.} = object
#     keycode*: xcb_keycode_t
#     explicit*: uint8


# ## *
# ##  @brief xcb_xkb_set_explicit_iterator_t
# ##

# type
#   xcb_xkb_set_explicit_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_set_explicit_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_mod_map_t
# ##

# type
#   xcb_xkb_key_mod_map_t* {.bycopy.} = object
#     keycode*: xcb_keycode_t
#     mods*: uint8


# ## *
# ##  @brief xcb_xkb_key_mod_map_iterator_t
# ##

# type
#   xcb_xkb_key_mod_map_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_mod_map_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_v_mod_map_t
# ##

# type
#   xcb_xkb_key_v_mod_map_t* {.bycopy.} = object
#     keycode*: xcb_keycode_t
#     pad0*: uint8
#     vmods*: uint16


# ## *
# ##  @brief xcb_xkb_key_v_mod_map_iterator_t
# ##

# type
#   xcb_xkb_key_v_mod_map_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_v_mod_map_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_kt_set_map_entry_t
# ##

# type
#   xcb_xkb_kt_set_map_entry_t* {.bycopy.} = object
#     level*: uint8
#     realMods*: uint8
#     virtualMods*: uint16


# ## *
# ##  @brief xcb_xkb_kt_set_map_entry_iterator_t
# ##

# type
#   xcb_xkb_kt_set_map_entry_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_kt_set_map_entry_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_set_key_type_t
# ##

# type
#   xcb_xkb_set_key_type_t* {.bycopy.} = object
#     mask*: uint8
#     realMods*: uint8
#     virtualMods*: uint16
#     numLevels*: uint8
#     nMapEntries*: uint8
#     preserve*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_set_key_type_iterator_t
# ##

# type
#   xcb_xkb_set_key_type_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_set_key_type_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_string8_t* = char

# ## *
# ##  @brief xcb_xkb_string8_iterator_t
# ##

# type
#   xcb_xkb_string8_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_string8_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_outline_t
# ##

# type
#   xcb_xkb_outline_t* {.bycopy.} = object
#     nPoints*: uint8
#     cornerRadius*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_outline_iterator_t
# ##

# type
#   xcb_xkb_outline_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_outline_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_shape_t
# ##

# type
#   xcb_xkb_shape_t* {.bycopy.} = object
#     name*: xcb_atom_t
#     nOutlines*: uint8
#     primaryNdx*: uint8
#     approxNdx*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_shape_iterator_t
# ##

# type
#   xcb_xkb_shape_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_shape_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_key_t
# ##

# type
#   xcb_xkb_key_t* {.bycopy.} = object
#     name*: array[4, xcb_xkb_string8_t]
#     gap*: int16
#     shapeNdx*: uint8
#     colorNdx*: uint8


# ## *
# ##  @brief xcb_xkb_key_iterator_t
# ##

# type
#   xcb_xkb_key_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_key_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_overlay_key_t
# ##

# type
#   xcb_xkb_overlay_key_t* {.bycopy.} = object
#     over*: array[4, xcb_xkb_string8_t]
#     under*: array[4, xcb_xkb_string8_t]


# ## *
# ##  @brief xcb_xkb_overlay_key_iterator_t
# ##

# type
#   xcb_xkb_overlay_key_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_overlay_key_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_overlay_row_t
# ##

# type
#   xcb_xkb_overlay_row_t* {.bycopy.} = object
#     rowUnder*: uint8
#     nKeys*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_overlay_row_iterator_t
# ##

# type
#   xcb_xkb_overlay_row_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_overlay_row_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_overlay_t
# ##

# type
#   xcb_xkb_overlay_t* {.bycopy.} = object
#     name*: xcb_atom_t
#     nRows*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_xkb_overlay_iterator_t
# ##

# type
#   xcb_xkb_overlay_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_overlay_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_row_t
# ##

# type
#   xcb_xkb_row_t* {.bycopy.} = object
#     top*: int16
#     left*: int16
#     nKeys*: uint8
#     vertical*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_row_iterator_t
# ##

# type
#   xcb_xkb_row_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_row_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_doodad_type_t* = enum
#     XCB_XKB_DOODAD_TYPE_OUTLINE = 1, XCB_XKB_DOODAD_TYPE_SOLID = 2,
#     XCB_XKB_DOODAD_TYPE_TEXT = 3, XCB_XKB_DOODAD_TYPE_INDICATOR = 4,
#     XCB_XKB_DOODAD_TYPE_LOGO = 5


# ## *
# ##  @brief xcb_xkb_listing_t
# ##

# type
#   xcb_xkb_listing_t* {.bycopy.} = object
#     flags*: uint16
#     length*: uint16


# ## *
# ##  @brief xcb_xkb_listing_iterator_t
# ##

# type
#   xcb_xkb_listing_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_listing_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_device_led_info_t
# ##

# type
#   xcb_xkb_device_led_info_t* {.bycopy.} = object
#     ledClass*: xcb_xkb_led_class_spec_t
#     ledID*: xcb_xkb_id_spec_t
#     namesPresent*: uint32
#     mapsPresent*: uint32
#     physIndicators*: uint32
#     state*: uint32


# ## *
# ##  @brief xcb_xkb_device_led_info_iterator_t
# ##

# type
#   xcb_xkb_device_led_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_device_led_info_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_error_t* = enum
#     XCB_XKB_ERROR_BAD_ID = 253, XCB_XKB_ERROR_BAD_CLASS = 254,
#     XCB_XKB_ERROR_BAD_DEVICE = 255


# ## * Opcode for xcb_xkb_keyboard.

# const
#   XCB_XKB_KEYBOARD* = 0

# ## *
# ##  @brief xcb_xkb_keyboard_error_t
# ##

# type
#   xcb_xkb_keyboard_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     value*: uint32
#     minorOpcode*: uint16
#     majorOpcode*: uint8
#     pad0*: array[21, uint8]

#   xcb_xkb_sa_t* = enum
#     XCB_XKB_SA_CLEAR_LOCKS = 1, XCB_XKB_SA_LATCH_TO_LOCK = 2,
#     XCB_XKB_SA_USE_MOD_MAP_MODS = 4
#   xcb_xkb_sa_type_t* = enum
#     XCB_XKB_SA_TYPE_NO_ACTION = 0, XCB_XKB_SA_TYPE_SET_MODS = 1,
#     XCB_XKB_SA_TYPE_LATCH_MODS = 2, XCB_XKB_SA_TYPE_LOCK_MODS = 3,
#     XCB_XKB_SA_TYPE_SET_GROUP = 4, XCB_XKB_SA_TYPE_LATCH_GROUP = 5,
#     XCB_XKB_SA_TYPE_LOCK_GROUP = 6, XCB_XKB_SA_TYPE_MOVE_PTR = 7,
#     XCB_XKB_SA_TYPE_PTR_BTN = 8, XCB_XKB_SA_TYPE_LOCK_PTR_BTN = 9,
#     XCB_XKB_SA_TYPE_SET_PTR_DFLT = 10, XCB_XKB_SA_TYPE_ISO_LOCK = 11,
#     XCB_XKB_SA_TYPE_TERMINATE = 12, XCB_XKB_SA_TYPE_SWITCH_SCREEN = 13,
#     XCB_XKB_SA_TYPE_SET_CONTROLS = 14, XCB_XKB_SA_TYPE_LOCK_CONTROLS = 15,
#     XCB_XKB_SA_TYPE_ACTION_MESSAGE = 16, XCB_XKB_SA_TYPE_REDIRECT_KEY = 17,
#     XCB_XKB_SA_TYPE_DEVICE_BTN = 18, XCB_XKB_SA_TYPE_LOCK_DEVICE_BTN = 19,
#     XCB_XKB_SA_TYPE_DEVICE_VALUATOR = 20

# const
#   XCB_XKB_SA_GROUP_ABSOLUTE = XCB_XKB_SA_USE_MOD_MAP_MODS


# ## *
# ##  @brief xcb_xkb_sa_no_action_t
# ##

# type
#   xcb_xkb_sa_no_action_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: array[7, uint8]


# ## *
# ##  @brief xcb_xkb_sa_no_action_iterator_t
# ##

# type
#   xcb_xkb_sa_no_action_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_no_action_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_set_mods_t
# ##

# type
#   xcb_xkb_sa_set_mods_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     mask*: uint8
#     realMods*: uint8
#     vmodsHigh*: uint8
#     vmodsLow*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_set_mods_iterator_t
# ##

# type
#   xcb_xkb_sa_set_mods_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_set_mods_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_latch_mods_t
# ##

# type
#   xcb_xkb_sa_latch_mods_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     mask*: uint8
#     realMods*: uint8
#     vmodsHigh*: uint8
#     vmodsLow*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_latch_mods_iterator_t
# ##

# type
#   xcb_xkb_sa_latch_mods_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_latch_mods_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_lock_mods_t
# ##

# type
#   xcb_xkb_sa_lock_mods_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     mask*: uint8
#     realMods*: uint8
#     vmodsHigh*: uint8
#     vmodsLow*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_lock_mods_iterator_t
# ##

# type
#   xcb_xkb_sa_lock_mods_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_lock_mods_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_set_group_t
# ##

# type
#   xcb_xkb_sa_set_group_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     group*: int8
#     pad0*: array[5, uint8]


# ## *
# ##  @brief xcb_xkb_sa_set_group_iterator_t
# ##

# type
#   xcb_xkb_sa_set_group_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_set_group_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_latch_group_t
# ##

# type
#   xcb_xkb_sa_latch_group_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     group*: int8
#     pad0*: array[5, uint8]


# ## *
# ##  @brief xcb_xkb_sa_latch_group_iterator_t
# ##

# type
#   xcb_xkb_sa_latch_group_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_latch_group_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_lock_group_t
# ##

# type
#   xcb_xkb_sa_lock_group_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     group*: int8
#     pad0*: array[5, uint8]


# ## *
# ##  @brief xcb_xkb_sa_lock_group_iterator_t
# ##

# type
#   xcb_xkb_sa_lock_group_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_lock_group_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_sa_move_ptr_flag_t* = enum
#     XCB_XKB_SA_MOVE_PTR_FLAG_NO_ACCELERATION = 1,
#     XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_X = 2,
#     XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_Y = 4


# ## *
# ##  @brief xcb_xkb_sa_move_ptr_t
# ##

# type
#   xcb_xkb_sa_move_ptr_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     xHigh*: int8
#     xLow*: uint8
#     yHigh*: int8
#     yLow*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_move_ptr_iterator_t
# ##

# type
#   xcb_xkb_sa_move_ptr_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_move_ptr_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_ptr_btn_t
# ##

# type
#   xcb_xkb_sa_ptr_btn_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     count*: uint8
#     button*: uint8
#     pad0*: array[4, uint8]


# ## *
# ##  @brief xcb_xkb_sa_ptr_btn_iterator_t
# ##

# type
#   xcb_xkb_sa_ptr_btn_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_ptr_btn_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_lock_ptr_btn_t
# ##

# type
#   xcb_xkb_sa_lock_ptr_btn_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     pad0*: uint8
#     button*: uint8
#     pad1*: array[4, uint8]


# ## *
# ##  @brief xcb_xkb_sa_lock_ptr_btn_iterator_t
# ##

# type
#   xcb_xkb_sa_lock_ptr_btn_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_lock_ptr_btn_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_sa_set_ptr_dflt_flag_t* = enum
#     XCB_XKB_SA_SET_PTR_DFLT_FLAG_AFFECT_DFLT_BUTTON = 1,
#     XCB_XKB_SA_SET_PTR_DFLT_FLAG_DFLT_BTN_ABSOLUTE = 4


# ## *
# ##  @brief xcb_xkb_sa_set_ptr_dflt_t
# ##

# type
#   xcb_xkb_sa_set_ptr_dflt_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     affect*: uint8
#     value*: int8
#     pad0*: array[4, uint8]


# ## *
# ##  @brief xcb_xkb_sa_set_ptr_dflt_iterator_t
# ##

# type
#   xcb_xkb_sa_set_ptr_dflt_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_set_ptr_dflt_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_sa_iso_lock_flag_t* = enum
#     XCB_XKB_SA_ISO_LOCK_FLAG_NO_LOCK = 1, XCB_XKB_SA_ISO_LOCK_FLAG_NO_UNLOCK = 2,
#     XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS = 4,
#     XCB_XKB_SA_ISO_LOCK_FLAG_ISO_DFLT_IS_GROUP = 8
#   xcb_xkb_sa_iso_lock_no_affect_t* = enum
#     XCB_XKB_SA_ISO_LOCK_NO_AFFECT_CTRLS = 8,
#     XCB_XKB_SA_ISO_LOCK_NO_AFFECT_PTR = 16,
#     XCB_XKB_SA_ISO_LOCK_NO_AFFECT_GROUP = 32,
#     XCB_XKB_SA_ISO_LOCK_NO_AFFECT_MODS = 64

# const
#   XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE = XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS


# ## *
# ##  @brief xcb_xkb_sa_iso_lock_t
# ##

# type
#   xcb_xkb_sa_iso_lock_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     mask*: uint8
#     realMods*: uint8
#     group*: int8
#     affect*: uint8
#     vmodsHigh*: uint8
#     vmodsLow*: uint8


# ## *
# ##  @brief xcb_xkb_sa_iso_lock_iterator_t
# ##

# type
#   xcb_xkb_sa_iso_lock_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_iso_lock_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_terminate_t
# ##

# type
#   xcb_xkb_sa_terminate_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: array[7, uint8]


# ## *
# ##  @brief xcb_xkb_sa_terminate_iterator_t
# ##

# type
#   xcb_xkb_sa_terminate_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_terminate_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_switch_screen_flag_t* = enum
#     XCB_XKB_SWITCH_SCREEN_FLAG_APPLICATION = 1,
#     XCB_XKB_SWITCH_SCREEN_FLAG_ABSOLUTE = 4


# ## *
# ##  @brief xcb_xkb_sa_switch_screen_t
# ##

# type
#   xcb_xkb_sa_switch_screen_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     newScreen*: int8
#     pad0*: array[5, uint8]


# ## *
# ##  @brief xcb_xkb_sa_switch_screen_iterator_t
# ##

# type
#   xcb_xkb_sa_switch_screen_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_switch_screen_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_bool_ctrls_high_t* = enum
#     XCB_XKB_BOOL_CTRLS_HIGH_ACCESS_X_FEEDBACK = 1,
#     XCB_XKB_BOOL_CTRLS_HIGH_AUDIBLE_BELL = 2,
#     XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_1 = 4, XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_2 = 8,
#     XCB_XKB_BOOL_CTRLS_HIGH_IGNORE_GROUP_LOCK = 16
#   xcb_xkb_bool_ctrls_low_t* = enum
#     XCB_XKB_BOOL_CTRLS_LOW_REPEAT_KEYS = 1, XCB_XKB_BOOL_CTRLS_LOW_SLOW_KEYS = 2,
#     XCB_XKB_BOOL_CTRLS_LOW_BOUNCE_KEYS = 4, XCB_XKB_BOOL_CTRLS_LOW_STICKY_KEYS = 8,
#     XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS = 16,
#     XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS_ACCEL = 32,
#     XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_KEYS = 64,
#     XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_TIMEOUT = 128



# ## *
# ##  @brief xcb_xkb_sa_set_controls_t
# ##

# type
#   xcb_xkb_sa_set_controls_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: array[3, uint8]
#     boolCtrlsHigh*: uint8
#     boolCtrlsLow*: uint8
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_set_controls_iterator_t
# ##

# type
#   xcb_xkb_sa_set_controls_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_set_controls_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_lock_controls_t
# ##

# type
#   xcb_xkb_sa_lock_controls_t* {.bycopy.} = object
#     `type`*: uint8
#     pad0*: array[3, uint8]
#     boolCtrlsHigh*: uint8
#     boolCtrlsLow*: uint8
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_sa_lock_controls_iterator_t
# ##

# type
#   xcb_xkb_sa_lock_controls_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_lock_controls_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_action_message_flag_t* = enum
#     XCB_XKB_ACTION_MESSAGE_FLAG_ON_PRESS = 1,
#     XCB_XKB_ACTION_MESSAGE_FLAG_ON_RELEASE = 2,
#     XCB_XKB_ACTION_MESSAGE_FLAG_GEN_KEY_EVENT = 4


# ## *
# ##  @brief xcb_xkb_sa_action_message_t
# ##

# type
#   xcb_xkb_sa_action_message_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     message*: array[6, uint8]


# ## *
# ##  @brief xcb_xkb_sa_action_message_iterator_t
# ##

# type
#   xcb_xkb_sa_action_message_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_action_message_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_redirect_key_t
# ##

# type
#   xcb_xkb_sa_redirect_key_t* {.bycopy.} = object
#     `type`*: uint8
#     newkey*: xcb_keycode_t
#     mask*: uint8
#     realModifiers*: uint8
#     vmodsMaskHigh*: uint8
#     vmodsMaskLow*: uint8
#     vmodsHigh*: uint8
#     vmodsLow*: uint8


# ## *
# ##  @brief xcb_xkb_sa_redirect_key_iterator_t
# ##

# type
#   xcb_xkb_sa_redirect_key_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_redirect_key_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sa_device_btn_t
# ##

# type
#   xcb_xkb_sa_device_btn_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     count*: uint8
#     button*: uint8
#     device*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_xkb_sa_device_btn_iterator_t
# ##

# type
#   xcb_xkb_sa_device_btn_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_device_btn_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_lock_device_flags_t* = enum
#     XCB_XKB_LOCK_DEVICE_FLAGS_NO_LOCK = 1, XCB_XKB_LOCK_DEVICE_FLAGS_NO_UNLOCK = 2


# ## *
# ##  @brief xcb_xkb_sa_lock_device_btn_t
# ##

# type
#   xcb_xkb_sa_lock_device_btn_t* {.bycopy.} = object
#     `type`*: uint8
#     flags*: uint8
#     pad0*: uint8
#     button*: uint8
#     device*: uint8
#     pad1*: array[3, uint8]


# ## *
# ##  @brief xcb_xkb_sa_lock_device_btn_iterator_t
# ##

# type
#   xcb_xkb_sa_lock_device_btn_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_lock_device_btn_t
#     rem*: cint
#     index*: cint

#   xcb_xkb_sa_val_what_t* = enum
#     XCB_XKB_SA_VAL_WHAT_IGNORE_VAL = 0, XCB_XKB_SA_VAL_WHAT_SET_VAL_MIN = 1,
#     XCB_XKB_SA_VAL_WHAT_SET_VAL_CENTER = 2, XCB_XKB_SA_VAL_WHAT_SET_VAL_MAX = 3,
#     XCB_XKB_SA_VAL_WHAT_SET_VAL_RELATIVE = 4,
#     XCB_XKB_SA_VAL_WHAT_SET_VAL_ABSOLUTE = 5


# ## *
# ##  @brief xcb_xkb_sa_device_valuator_t
# ##

# type
#   xcb_xkb_sa_device_valuator_t* {.bycopy.} = object
#     `type`*: uint8
#     device*: uint8
#     val1what*: uint8
#     val1index*: uint8
#     val1value*: uint8
#     val2what*: uint8
#     val2index*: uint8
#     val2value*: uint8


# ## *
# ##  @brief xcb_xkb_sa_device_valuator_iterator_t
# ##

# type
#   xcb_xkb_sa_device_valuator_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sa_device_valuator_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_si_action_t
# ##

# type
#   xcb_xkb_si_action_t* {.bycopy.} = object
#     `type`*: uint8
#     data*: array[7, uint8]


# ## *
# ##  @brief xcb_xkb_si_action_iterator_t
# ##

# type
#   xcb_xkb_si_action_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_si_action_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_sym_interpret_t
# ##

# type
#   xcb_xkb_sym_interpret_t* {.bycopy.} = object
#     sym*: xcb_keysym_t
#     mods*: uint8
#     match*: uint8
#     virtualMod*: uint8
#     flags*: uint8
#     action*: xcb_xkb_si_action_t


# ## *
# ##  @brief xcb_xkb_sym_interpret_iterator_t
# ##

# type
#   xcb_xkb_sym_interpret_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_sym_interpret_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_action_t
# ##

# type
#   xcb_xkb_action_t* {.bycopy.} = object {.union.}
#     noaction*: xcb_xkb_sa_no_action_t
#     setmods*: xcb_xkb_sa_set_mods_t
#     latchmods*: xcb_xkb_sa_latch_mods_t
#     lockmods*: xcb_xkb_sa_lock_mods_t
#     setgroup*: xcb_xkb_sa_set_group_t
#     latchgroup*: xcb_xkb_sa_latch_group_t
#     lockgroup*: xcb_xkb_sa_lock_group_t
#     moveptr*: xcb_xkb_sa_move_ptr_t
#     ptrbtn*: xcb_xkb_sa_ptr_btn_t
#     lockptrbtn*: xcb_xkb_sa_lock_ptr_btn_t
#     setptrdflt*: xcb_xkb_sa_set_ptr_dflt_t
#     isolock*: xcb_xkb_sa_iso_lock_t
#     terminate*: xcb_xkb_sa_terminate_t
#     switchscreen*: xcb_xkb_sa_switch_screen_t
#     setcontrols*: xcb_xkb_sa_set_controls_t
#     lockcontrols*: xcb_xkb_sa_lock_controls_t
#     message*: xcb_xkb_sa_action_message_t
#     redirect*: xcb_xkb_sa_redirect_key_t
#     devbtn*: xcb_xkb_sa_device_btn_t
#     lockdevbtn*: xcb_xkb_sa_lock_device_btn_t
#     devval*: xcb_xkb_sa_device_valuator_t
#     `type`*: uint8


# ## *
# ##  @brief xcb_xkb_action_iterator_t
# ##

# type
#   xcb_xkb_action_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xkb_action_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xkb_use_extension_cookie_t
# ##

# type
#   xcb_xkb_use_extension_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_use_extension.

# const
#   XCB_XKB_USE_EXTENSION* = 0

# ## *
# ##  @brief xcb_xkb_use_extension_request_t
# ##

# type
#   xcb_xkb_use_extension_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     wantedMajor*: uint16
#     wantedMinor*: uint16


# ## *
# ##  @brief xcb_xkb_use_extension_reply_t
# ##

# type
#   xcb_xkb_use_extension_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     supported*: uint8
#     sequence*: uint16
#     length*: uint32
#     serverMajor*: uint16
#     serverMinor*: uint16
#     pad0*: array[20, uint8]


# ## *
# ##  @brief xcb_xkb_select_events_details_t
# ##

# type
#   xcb_xkb_select_events_details_t* {.bycopy.} = object
#     affectNewKeyboard*: uint16
#     newKeyboardDetails*: uint16
#     affectState*: uint16
#     stateDetails*: uint16
#     affectCtrls*: uint32
#     ctrlDetails*: uint32
#     affectIndicatorState*: uint32
#     indicatorStateDetails*: uint32
#     affectIndicatorMap*: uint32
#     indicatorMapDetails*: uint32
#     affectNames*: uint16
#     namesDetails*: uint16
#     affectCompat*: uint8
#     compatDetails*: uint8
#     affectBell*: uint8
#     bellDetails*: uint8
#     affectMsgDetails*: uint8
#     msgDetails*: uint8
#     affectAccessX*: uint16
#     accessXDetails*: uint16
#     affectExtDev*: uint16
#     extdevDetails*: uint16


# ## * Opcode for xcb_xkb_select_events.

# const
#   XCB_XKB_SELECT_EVENTS* = 1

# ## *
# ##  @brief xcb_xkb_select_events_request_t
# ##

# type
#   xcb_xkb_select_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     affectWhich*: uint16
#     clear*: uint16
#     selectAll*: uint16
#     affectMap*: uint16
#     map*: uint16


# ## * Opcode for xcb_xkb_bell.

# const
#   XCB_XKB_BELL* = 3

# ## *
# ##  @brief xcb_xkb_bell_request_t
# ##

# type
#   xcb_xkb_bell_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     bellClass*: xcb_xkb_bell_class_spec_t
#     bellID*: xcb_xkb_id_spec_t
#     percent*: int8
#     forceSound*: uint8
#     eventOnly*: uint8
#     pad0*: uint8
#     pitch*: int16
#     duration*: int16
#     pad1*: array[2, uint8]
#     name*: xcb_atom_t
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xkb_get_state_cookie_t
# ##

# type
#   xcb_xkb_get_state_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_state.

# const
#   XCB_XKB_GET_STATE* = 4

# ## *
# ##  @brief xcb_xkb_get_state_request_t
# ##

# type
#   xcb_xkb_get_state_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_get_state_reply_t
# ##

# type
#   xcb_xkb_get_state_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     mods*: uint8
#     baseMods*: uint8
#     latchedMods*: uint8
#     lockedMods*: uint8
#     group*: uint8
#     lockedGroup*: uint8
#     baseGroup*: int16
#     latchedGroup*: int16
#     compatState*: uint8
#     grabMods*: uint8
#     compatGrabMods*: uint8
#     lookupMods*: uint8
#     compatLookupMods*: uint8
#     pad0*: uint8
#     ptrBtnState*: uint16
#     pad1*: array[6, uint8]


# ## * Opcode for xcb_xkb_latch_lock_state.

# const
#   XCB_XKB_LATCH_LOCK_STATE* = 5

# ## *
# ##  @brief xcb_xkb_latch_lock_state_request_t
# ##

# type
#   xcb_xkb_latch_lock_state_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     affectModLocks*: uint8
#     modLocks*: uint8
#     lockGroup*: uint8
#     groupLock*: uint8
#     affectModLatches*: uint8
#     pad0*: uint8
#     pad1*: uint8
#     latchGroup*: uint8
#     groupLatch*: uint16


# ## *
# ##  @brief xcb_xkb_get_controls_cookie_t
# ##

# type
#   xcb_xkb_get_controls_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_controls.

# const
#   XCB_XKB_GET_CONTROLS* = 6

# ## *
# ##  @brief xcb_xkb_get_controls_request_t
# ##

# type
#   xcb_xkb_get_controls_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_get_controls_reply_t
# ##

# type
#   xcb_xkb_get_controls_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     mouseKeysDfltBtn*: uint8
#     numGroups*: uint8
#     groupsWrap*: uint8
#     internalModsMask*: uint8
#     ignoreLockModsMask*: uint8
#     internalModsRealMods*: uint8
#     ignoreLockModsRealMods*: uint8
#     pad0*: uint8
#     internalModsVmods*: uint16
#     ignoreLockModsVmods*: uint16
#     repeatDelay*: uint16
#     repeatInterval*: uint16
#     slowKeysDelay*: uint16
#     debounceDelay*: uint16
#     mouseKeysDelay*: uint16
#     mouseKeysInterval*: uint16
#     mouseKeysTimeToMax*: uint16
#     mouseKeysMaxSpeed*: uint16
#     mouseKeysCurve*: int16
#     accessXOption*: uint16
#     accessXTimeout*: uint16
#     accessXTimeoutOptionsMask*: uint16
#     accessXTimeoutOptionsValues*: uint16
#     pad1*: array[2, uint8]
#     accessXTimeoutMask*: uint32
#     accessXTimeoutValues*: uint32
#     enabledControls*: uint32
#     perKeyRepeat*: array[32, uint8]


# ## * Opcode for xcb_xkb_set_controls.

# const
#   XCB_XKB_SET_CONTROLS* = 7

# ## *
# ##  @brief xcb_xkb_set_controls_request_t
# ##

# type
#   xcb_xkb_set_controls_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     affectInternalRealMods*: uint8
#     internalRealMods*: uint8
#     affectIgnoreLockRealMods*: uint8
#     ignoreLockRealMods*: uint8
#     affectInternalVirtualMods*: uint16
#     internalVirtualMods*: uint16
#     affectIgnoreLockVirtualMods*: uint16
#     ignoreLockVirtualMods*: uint16
#     mouseKeysDfltBtn*: uint8
#     groupsWrap*: uint8
#     accessXOptions*: uint16
#     pad0*: array[2, uint8]
#     affectEnabledControls*: uint32
#     enabledControls*: uint32
#     changeControls*: uint32
#     repeatDelay*: uint16
#     repeatInterval*: uint16
#     slowKeysDelay*: uint16
#     debounceDelay*: uint16
#     mouseKeysDelay*: uint16
#     mouseKeysInterval*: uint16
#     mouseKeysTimeToMax*: uint16
#     mouseKeysMaxSpeed*: uint16
#     mouseKeysCurve*: int16
#     accessXTimeout*: uint16
#     accessXTimeoutMask*: uint32
#     accessXTimeoutValues*: uint32
#     accessXTimeoutOptionsMask*: uint16
#     accessXTimeoutOptionsValues*: uint16
#     perKeyRepeat*: array[32, uint8]


# ## *
# ##  @brief xcb_xkb_get_map_cookie_t
# ##

# type
#   xcb_xkb_get_map_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_map.

# const
#   XCB_XKB_GET_MAP* = 8

# ## *
# ##  @brief xcb_xkb_get_map_request_t
# ##

# type
#   xcb_xkb_get_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     full*: uint16
#     partial*: uint16
#     firstType*: uint8
#     nTypes*: uint8
#     firstKeySym*: xcb_keycode_t
#     nKeySyms*: uint8
#     firstKeyAction*: xcb_keycode_t
#     nKeyActions*: uint8
#     firstKeyBehavior*: xcb_keycode_t
#     nKeyBehaviors*: uint8
#     virtualMods*: uint16
#     firstKeyExplicit*: xcb_keycode_t
#     nKeyExplicit*: uint8
#     firstModMapKey*: xcb_keycode_t
#     nModMapKeys*: uint8
#     firstVModMapKey*: xcb_keycode_t
#     nVModMapKeys*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_get_map_map_t
# ##

# type
#   xcb_xkb_get_map_map_t* {.bycopy.} = object
#     types_rtrn*: ptr xcb_xkb_key_type_t
#     syms_rtrn*: ptr xcb_xkb_key_sym_map_t
#     acts_rtrn_count*: ptr uint8
#     pad2*: ptr uint8
#     acts_rtrn_acts*: ptr xcb_xkb_action_t
#     behaviors_rtrn*: ptr xcb_xkb_set_behavior_t
#     vmods_rtrn*: ptr uint8
#     pad3*: ptr uint8
#     explicit_rtrn*: ptr xcb_xkb_set_explicit_t
#     pad4*: ptr uint8
#     modmap_rtrn*: ptr xcb_xkb_key_mod_map_t
#     pad5*: ptr uint8
#     vmodmap_rtrn*: ptr xcb_xkb_key_v_mod_map_t


# ## *
# ##  @brief xcb_xkb_get_map_reply_t
# ##

# type
#   xcb_xkb_get_map_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[2, uint8]
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     present*: uint16
#     firstType*: uint8
#     nTypes*: uint8
#     totalTypes*: uint8
#     firstKeySym*: xcb_keycode_t
#     totalSyms*: uint16
#     nKeySyms*: uint8
#     firstKeyAction*: xcb_keycode_t
#     totalActions*: uint16
#     nKeyActions*: uint8
#     firstKeyBehavior*: xcb_keycode_t
#     nKeyBehaviors*: uint8
#     totalKeyBehaviors*: uint8
#     firstKeyExplicit*: xcb_keycode_t
#     nKeyExplicit*: uint8
#     totalKeyExplicit*: uint8
#     firstModMapKey*: xcb_keycode_t
#     nModMapKeys*: uint8
#     totalModMapKeys*: uint8
#     firstVModMapKey*: xcb_keycode_t
#     nVModMapKeys*: uint8
#     totalVModMapKeys*: uint8
#     pad1*: uint8
#     virtualMods*: uint16


# ## *
# ##  @brief xcb_xkb_set_map_values_t
# ##

# type
#   xcb_xkb_set_map_values_t* {.bycopy.} = object
#     types*: ptr xcb_xkb_set_key_type_t
#     syms*: ptr xcb_xkb_key_sym_map_t
#     actionsCount*: ptr uint8
#     actions*: ptr xcb_xkb_action_t
#     behaviors*: ptr xcb_xkb_set_behavior_t
#     vmods*: ptr uint8
#     explicit*: ptr xcb_xkb_set_explicit_t
#     modmap*: ptr xcb_xkb_key_mod_map_t
#     vmodmap*: ptr xcb_xkb_key_v_mod_map_t


# ## * Opcode for xcb_xkb_set_map.

# const
#   XCB_XKB_SET_MAP* = 9

# ## *
# ##  @brief xcb_xkb_set_map_request_t
# ##

# type
#   xcb_xkb_set_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     present*: uint16
#     flags*: uint16
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     firstType*: uint8
#     nTypes*: uint8
#     firstKeySym*: xcb_keycode_t
#     nKeySyms*: uint8
#     totalSyms*: uint16
#     firstKeyAction*: xcb_keycode_t
#     nKeyActions*: uint8
#     totalActions*: uint16
#     firstKeyBehavior*: xcb_keycode_t
#     nKeyBehaviors*: uint8
#     totalKeyBehaviors*: uint8
#     firstKeyExplicit*: xcb_keycode_t
#     nKeyExplicit*: uint8
#     totalKeyExplicit*: uint8
#     firstModMapKey*: xcb_keycode_t
#     nModMapKeys*: uint8
#     totalModMapKeys*: uint8
#     firstVModMapKey*: xcb_keycode_t
#     nVModMapKeys*: uint8
#     totalVModMapKeys*: uint8
#     virtualMods*: uint16


# ## *
# ##  @brief xcb_xkb_get_compat_map_cookie_t
# ##

# type
#   xcb_xkb_get_compat_map_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_compat_map.

# const
#   XCB_XKB_GET_COMPAT_MAP* = 10

# ## *
# ##  @brief xcb_xkb_get_compat_map_request_t
# ##

# type
#   xcb_xkb_get_compat_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     groups*: uint8
#     getAllSI*: uint8
#     firstSI*: uint16
#     nSI*: uint16


# ## *
# ##  @brief xcb_xkb_get_compat_map_reply_t
# ##

# type
#   xcb_xkb_get_compat_map_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     groupsRtrn*: uint8
#     pad0*: uint8
#     firstSIRtrn*: uint16
#     nSIRtrn*: uint16
#     nTotalSI*: uint16
#     pad1*: array[16, uint8]


# ## * Opcode for xcb_xkb_set_compat_map.

# const
#   XCB_XKB_SET_COMPAT_MAP* = 11

# ## *
# ##  @brief xcb_xkb_set_compat_map_request_t
# ##

# type
#   xcb_xkb_set_compat_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: uint8
#     recomputeActions*: uint8
#     truncateSI*: uint8
#     groups*: uint8
#     firstSI*: uint16
#     nSI*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_get_indicator_state_cookie_t
# ##

# type
#   xcb_xkb_get_indicator_state_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_indicator_state.

# const
#   XCB_XKB_GET_INDICATOR_STATE* = 12

# ## *
# ##  @brief xcb_xkb_get_indicator_state_request_t
# ##

# type
#   xcb_xkb_get_indicator_state_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_xkb_get_indicator_state_reply_t
# ##

# type
#   xcb_xkb_get_indicator_state_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     state*: uint32
#     pad0*: array[20, uint8]


# ## *
# ##  @brief xcb_xkb_get_indicator_map_cookie_t
# ##

# type
#   xcb_xkb_get_indicator_map_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_indicator_map.

# const
#   XCB_XKB_GET_INDICATOR_MAP* = 13

# ## *
# ##  @brief xcb_xkb_get_indicator_map_request_t
# ##

# type
#   xcb_xkb_get_indicator_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]
#     which*: uint32


# ## *
# ##  @brief xcb_xkb_get_indicator_map_reply_t
# ##

# type
#   xcb_xkb_get_indicator_map_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     which*: uint32
#     realIndicators*: uint32
#     nIndicators*: uint8
#     pad0*: array[15, uint8]


# ## * Opcode for xcb_xkb_set_indicator_map.

# const
#   XCB_XKB_SET_INDICATOR_MAP* = 14

# ## *
# ##  @brief xcb_xkb_set_indicator_map_request_t
# ##

# type
#   xcb_xkb_set_indicator_map_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]
#     which*: uint32


# ## *
# ##  @brief xcb_xkb_get_named_indicator_cookie_t
# ##

# type
#   xcb_xkb_get_named_indicator_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_named_indicator.

# const
#   XCB_XKB_GET_NAMED_INDICATOR* = 15

# ## *
# ##  @brief xcb_xkb_get_named_indicator_request_t
# ##

# type
#   xcb_xkb_get_named_indicator_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     ledClass*: xcb_xkb_led_class_spec_t
#     ledID*: xcb_xkb_id_spec_t
#     pad0*: array[2, uint8]
#     indicator*: xcb_atom_t


# ## *
# ##  @brief xcb_xkb_get_named_indicator_reply_t
# ##

# type
#   xcb_xkb_get_named_indicator_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     indicator*: xcb_atom_t
#     found*: uint8
#     on*: uint8
#     realIndicator*: uint8
#     ndx*: uint8
#     map_flags*: uint8
#     map_whichGroups*: uint8
#     map_groups*: uint8
#     map_whichMods*: uint8
#     map_mods*: uint8
#     map_realMods*: uint8
#     map_vmod*: uint16
#     map_ctrls*: uint32
#     supported*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_xkb_set_named_indicator.

# const
#   XCB_XKB_SET_NAMED_INDICATOR* = 16

# ## *
# ##  @brief xcb_xkb_set_named_indicator_request_t
# ##

# type
#   xcb_xkb_set_named_indicator_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     ledClass*: xcb_xkb_led_class_spec_t
#     ledID*: xcb_xkb_id_spec_t
#     pad0*: array[2, uint8]
#     indicator*: xcb_atom_t
#     setState*: uint8
#     on*: uint8
#     setMap*: uint8
#     createMap*: uint8
#     pad1*: uint8
#     map_flags*: uint8
#     map_whichGroups*: uint8
#     map_groups*: uint8
#     map_whichMods*: uint8
#     map_realMods*: uint8
#     map_vmods*: uint16
#     map_ctrls*: uint32


# ## *
# ##  @brief xcb_xkb_get_names_cookie_t
# ##

# type
#   xcb_xkb_get_names_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_names.

# const
#   XCB_XKB_GET_NAMES* = 17

# ## *
# ##  @brief xcb_xkb_get_names_request_t
# ##

# type
#   xcb_xkb_get_names_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]
#     which*: uint32


# ## *
# ##  @brief xcb_xkb_get_names_value_list_t
# ##

# type
#   xcb_xkb_get_names_value_list_t* {.bycopy.} = object
#     keycodesName*: xcb_atom_t
#     geometryName*: xcb_atom_t
#     symbolsName*: xcb_atom_t
#     physSymbolsName*: xcb_atom_t
#     typesName*: xcb_atom_t
#     compatName*: xcb_atom_t
#     typeNames*: ptr xcb_atom_t
#     nLevelsPerType*: ptr uint8
#     pad1*: ptr uint8
#     ktLevelNames*: ptr xcb_atom_t
#     indicatorNames*: ptr xcb_atom_t
#     virtualModNames*: ptr xcb_atom_t
#     groups*: ptr xcb_atom_t
#     keyNames*: ptr xcb_xkb_key_name_t
#     keyAliases*: ptr xcb_xkb_key_alias_t
#     radioGroupNames*: ptr xcb_atom_t


# ## *
# ##  @brief xcb_xkb_get_names_reply_t
# ##

# type
#   xcb_xkb_get_names_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     which*: uint32
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     nTypes*: uint8
#     groupNames*: uint8
#     virtualMods*: uint16
#     firstKey*: xcb_keycode_t
#     nKeys*: uint8
#     indicators*: uint32
#     nRadioGroups*: uint8
#     nKeyAliases*: uint8
#     nKTLevels*: uint16
#     pad0*: array[4, uint8]


# ## *
# ##  @brief xcb_xkb_set_names_values_t
# ##

# type
#   xcb_xkb_set_names_values_t* {.bycopy.} = object
#     keycodesName*: xcb_atom_t
#     geometryName*: xcb_atom_t
#     symbolsName*: xcb_atom_t
#     physSymbolsName*: xcb_atom_t
#     typesName*: xcb_atom_t
#     compatName*: xcb_atom_t
#     typeNames*: ptr xcb_atom_t
#     nLevelsPerType*: ptr uint8
#     ktLevelNames*: ptr xcb_atom_t
#     indicatorNames*: ptr xcb_atom_t
#     virtualModNames*: ptr xcb_atom_t
#     groups*: ptr xcb_atom_t
#     keyNames*: ptr xcb_xkb_key_name_t
#     keyAliases*: ptr xcb_xkb_key_alias_t
#     radioGroupNames*: ptr xcb_atom_t


# ## * Opcode for xcb_xkb_set_names.

# const
#   XCB_XKB_SET_NAMES* = 18

# ## *
# ##  @brief xcb_xkb_set_names_request_t
# ##

# type
#   xcb_xkb_set_names_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     virtualMods*: uint16
#     which*: uint32
#     firstType*: uint8
#     nTypes*: uint8
#     firstKTLevelt*: uint8
#     nKTLevels*: uint8
#     indicators*: uint32
#     groupNames*: uint8
#     nRadioGroups*: uint8
#     firstKey*: xcb_keycode_t
#     nKeys*: uint8
#     nKeyAliases*: uint8
#     pad0*: uint8
#     totalKTLevelNames*: uint16


# ## *
# ##  @brief xcb_xkb_per_client_flags_cookie_t
# ##

# type
#   xcb_xkb_per_client_flags_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_per_client_flags.

# const
#   XCB_XKB_PER_CLIENT_FLAGS* = 21

# ## *
# ##  @brief xcb_xkb_per_client_flags_request_t
# ##

# type
#   xcb_xkb_per_client_flags_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     pad0*: array[2, uint8]
#     change*: uint32
#     value*: uint32
#     ctrlsToChange*: uint32
#     autoCtrls*: uint32
#     autoCtrlsValues*: uint32


# ## *
# ##  @brief xcb_xkb_per_client_flags_reply_t
# ##

# type
#   xcb_xkb_per_client_flags_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     supported*: uint32
#     value*: uint32
#     autoCtrls*: uint32
#     autoCtrlsValues*: uint32
#     pad0*: array[8, uint8]


# ## *
# ##  @brief xcb_xkb_list_components_cookie_t
# ##

# type
#   xcb_xkb_list_components_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_list_components.

# const
#   XCB_XKB_LIST_COMPONENTS* = 22

# ## *
# ##  @brief xcb_xkb_list_components_request_t
# ##

# type
#   xcb_xkb_list_components_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     maxNames*: uint16


# ## *
# ##  @brief xcb_xkb_list_components_reply_t
# ##

# type
#   xcb_xkb_list_components_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     nKeymaps*: uint16
#     nKeycodes*: uint16
#     nTypes*: uint16
#     nCompatMaps*: uint16
#     nSymbols*: uint16
#     nGeometries*: uint16
#     extra*: uint16
#     pad0*: array[10, uint8]


# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_cookie_t
# ##

# type
#   xcb_xkb_get_kbd_by_name_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_kbd_by_name.

# const
#   XCB_XKB_GET_KBD_BY_NAME* = 23

# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_request_t
# ##

# type
#   xcb_xkb_get_kbd_by_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     need*: uint16
#     want*: uint16
#     load*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_replies_types_map_t
# ##

# type
#   xcb_xkb_get_kbd_by_name_replies_types_map_t* {.bycopy.} = object
#     types_rtrn*: ptr xcb_xkb_key_type_t
#     syms_rtrn*: ptr xcb_xkb_key_sym_map_t
#     acts_rtrn_count*: ptr uint8
#     acts_rtrn_acts*: ptr xcb_xkb_action_t
#     behaviors_rtrn*: ptr xcb_xkb_set_behavior_t
#     vmods_rtrn*: ptr uint8
#     explicit_rtrn*: ptr xcb_xkb_set_explicit_t
#     modmap_rtrn*: ptr xcb_xkb_key_mod_map_t
#     vmodmap_rtrn*: ptr xcb_xkb_key_v_mod_map_t


# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
# ##

# type
#   xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t* {.bycopy.} = object
#     keycodesName*: xcb_atom_t
#     geometryName*: xcb_atom_t
#     symbolsName*: xcb_atom_t
#     physSymbolsName*: xcb_atom_t
#     typesName*: xcb_atom_t
#     compatName*: xcb_atom_t
#     typeNames*: ptr xcb_atom_t
#     nLevelsPerType*: ptr uint8
#     ktLevelNames*: ptr xcb_atom_t
#     indicatorNames*: ptr xcb_atom_t
#     virtualModNames*: ptr xcb_atom_t
#     groups*: ptr xcb_atom_t
#     keyNames*: ptr xcb_xkb_key_name_t
#     keyAliases*: ptr xcb_xkb_key_alias_t
#     radioGroupNames*: ptr xcb_atom_t


# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_replies_t
# ##

# type
#   INNER_C_STRUCT_xkb_2530* {.bycopy.} = object
#     getmap_type*: uint8
#     typeDeviceID*: uint8
#     getmap_sequence*: uint16
#     getmap_length*: uint32
#     pad1*: array[2, uint8]
#     typeMinKeyCode*: xcb_keycode_t
#     typeMaxKeyCode*: xcb_keycode_t
#     present*: uint16
#     firstType*: uint8
#     nTypes*: uint8
#     totalTypes*: uint8
#     firstKeySym*: xcb_keycode_t
#     totalSyms*: uint16
#     nKeySyms*: uint8
#     firstKeyAction*: xcb_keycode_t
#     totalActions*: uint16
#     nKeyActions*: uint8
#     firstKeyBehavior*: xcb_keycode_t
#     nKeyBehaviors*: uint8
#     totalKeyBehaviors*: uint8
#     firstKeyExplicit*: xcb_keycode_t
#     nKeyExplicit*: uint8
#     totalKeyExplicit*: uint8
#     firstModMapKey*: xcb_keycode_t
#     nModMapKeys*: uint8
#     totalModMapKeys*: uint8
#     firstVModMapKey*: xcb_keycode_t
#     nVModMapKeys*: uint8
#     totalVModMapKeys*: uint8
#     pad2*: uint8
#     virtualMods*: uint16
#     map*: xcb_xkb_get_kbd_by_name_replies_types_map_t

#   INNER_C_STRUCT_xkb_2564* {.bycopy.} = object
#     compatmap_type*: uint8
#     compatDeviceID*: uint8
#     compatmap_sequence*: uint16
#     compatmap_length*: uint32
#     groupsRtrn*: uint8
#     pad7*: uint8
#     firstSIRtrn*: uint16
#     nSIRtrn*: uint16
#     nTotalSI*: uint16
#     pad8*: array[16, uint8]
#     si_rtrn*: ptr xcb_xkb_sym_interpret_t
#     group_rtrn*: ptr xcb_xkb_mod_def_t

#   INNER_C_STRUCT_xkb_2578* {.bycopy.} = object
#     indicatormap_type*: uint8
#     indicatorDeviceID*: uint8
#     indicatormap_sequence*: uint16
#     indicatormap_length*: uint32
#     which*: uint32
#     realIndicators*: uint32
#     nIndicators*: uint8
#     pad9*: array[15, uint8]
#     maps*: ptr xcb_xkb_indicator_map_t

#   INNER_C_STRUCT_xkb_2589* {.bycopy.} = object
#     keyname_type*: uint8
#     keyDeviceID*: uint8
#     keyname_sequence*: uint16
#     keyname_length*: uint32
#     which*: uint32
#     keyMinKeyCode*: xcb_keycode_t
#     keyMaxKeyCode*: xcb_keycode_t
#     nTypes*: uint8
#     groupNames*: uint8
#     virtualMods*: uint16
#     firstKey*: xcb_keycode_t
#     nKeys*: uint8
#     indicators*: uint32
#     nRadioGroups*: uint8
#     nKeyAliases*: uint8
#     nKTLevels*: uint16
#     pad10*: array[4, uint8]
#     valueList*: xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t

#   INNER_C_STRUCT_xkb_2609* {.bycopy.} = object
#     geometry_type*: uint8
#     geometryDeviceID*: uint8
#     geometry_sequence*: uint16
#     geometry_length*: uint32
#     name*: xcb_atom_t
#     geometryFound*: uint8
#     pad12*: uint8
#     widthMM*: uint16
#     heightMM*: uint16
#     nProperties*: uint16
#     nColors*: uint16
#     nShapes*: uint16
#     nSections*: uint16
#     nDoodads*: uint16
#     nKeyAliases*: uint16
#     baseColorNdx*: uint8
#     labelColorNdx*: uint8
#     labelFont*: ptr xcb_xkb_counted_string_16_t

#   xcb_xkb_get_kbd_by_name_replies_t* {.bycopy.} = object
#     types*: INNER_C_STRUCT_xkb_2530
#     compat_map*: INNER_C_STRUCT_xkb_2564
#     indicator_maps*: INNER_C_STRUCT_xkb_2578
#     key_names*: INNER_C_STRUCT_xkb_2589
#     geometry*: INNER_C_STRUCT_xkb_2609


# proc xcb_xkb_get_kbd_by_name_replies_types_map*(
#     R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_get_kbd_by_name_replies_types_map_t
# ## *
# ##  @brief xcb_xkb_get_kbd_by_name_reply_t
# ##

# type
#   xcb_xkb_get_kbd_by_name_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     loaded*: uint8
#     newKeyboard*: uint8
#     found*: uint16
#     reported*: uint16
#     pad0*: array[16, uint8]


# ## *
# ##  @brief xcb_xkb_get_device_info_cookie_t
# ##

# type
#   xcb_xkb_get_device_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_get_device_info.

# const
#   XCB_XKB_GET_DEVICE_INFO* = 24

# ## *
# ##  @brief xcb_xkb_get_device_info_request_t
# ##

# type
#   xcb_xkb_get_device_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     wanted*: uint16
#     allButtons*: uint8
#     firstButton*: uint8
#     nButtons*: uint8
#     pad0*: uint8
#     ledClass*: xcb_xkb_led_class_spec_t
#     ledID*: xcb_xkb_id_spec_t


# ## *
# ##  @brief xcb_xkb_get_device_info_reply_t
# ##

# type
#   xcb_xkb_get_device_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     deviceID*: uint8
#     sequence*: uint16
#     length*: uint32
#     present*: uint16
#     supported*: uint16
#     unsupported*: uint16
#     nDeviceLedFBs*: uint16
#     firstBtnWanted*: uint8
#     nBtnsWanted*: uint8
#     firstBtnRtrn*: uint8
#     nBtnsRtrn*: uint8
#     totalBtns*: uint8
#     hasOwnState*: uint8
#     dfltKbdFB*: uint16
#     dfltLedFB*: uint16
#     pad0*: array[2, uint8]
#     devType*: xcb_atom_t
#     nameLen*: uint16


# ## * Opcode for xcb_xkb_set_device_info.

# const
#   XCB_XKB_SET_DEVICE_INFO* = 25

# ## *
# ##  @brief xcb_xkb_set_device_info_request_t
# ##

# type
#   xcb_xkb_set_device_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     deviceSpec*: xcb_xkb_device_spec_t
#     firstBtn*: uint8
#     nBtns*: uint8
#     change*: uint16
#     nDeviceLedFBs*: uint16


# ## *
# ##  @brief xcb_xkb_set_debugging_flags_cookie_t
# ##

# type
#   xcb_xkb_set_debugging_flags_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xkb_set_debugging_flags.

# const
#   XCB_XKB_SET_DEBUGGING_FLAGS* = 101

# ## *
# ##  @brief xcb_xkb_set_debugging_flags_request_t
# ##

# type
#   xcb_xkb_set_debugging_flags_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     msgLength*: uint16
#     pad0*: array[2, uint8]
#     affectFlags*: uint32
#     flags*: uint32
#     affectCtrls*: uint32
#     ctrls*: uint32


# ## *
# ##  @brief xcb_xkb_set_debugging_flags_reply_t
# ##

# type
#   xcb_xkb_set_debugging_flags_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     currentFlags*: uint32
#     currentCtrls*: uint32
#     supportedFlags*: uint32
#     supportedCtrls*: uint32
#     pad1*: array[8, uint8]


# ## * Opcode for xcb_xkb_new_keyboard_notify.

# const
#   XCB_XKB_NEW_KEYBOARD_NOTIFY* = 0

# ## *
# ##  @brief xcb_xkb_new_keyboard_notify_event_t
# ##

# type
#   xcb_xkb_new_keyboard_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     oldDeviceID*: uint8
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     oldMinKeyCode*: xcb_keycode_t
#     oldMaxKeyCode*: xcb_keycode_t
#     requestMajor*: uint8
#     requestMinor*: uint8
#     changed*: uint16
#     pad0*: array[14, uint8]


# ## * Opcode for xcb_xkb_map_notify.

# const
#   XCB_XKB_MAP_NOTIFY* = 1

# ## *
# ##  @brief xcb_xkb_map_notify_event_t
# ##

# type
#   xcb_xkb_map_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     ptrBtnActions*: uint8
#     changed*: uint16
#     minKeyCode*: xcb_keycode_t
#     maxKeyCode*: xcb_keycode_t
#     firstType*: uint8
#     nTypes*: uint8
#     firstKeySym*: xcb_keycode_t
#     nKeySyms*: uint8
#     firstKeyAct*: xcb_keycode_t
#     nKeyActs*: uint8
#     firstKeyBehavior*: xcb_keycode_t
#     nKeyBehavior*: uint8
#     firstKeyExplicit*: xcb_keycode_t
#     nKeyExplicit*: uint8
#     firstModMapKey*: xcb_keycode_t
#     nModMapKeys*: uint8
#     firstVModMapKey*: xcb_keycode_t
#     nVModMapKeys*: uint8
#     virtualMods*: uint16
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_xkb_state_notify.

# const
#   XCB_XKB_STATE_NOTIFY* = 2

# ## *
# ##  @brief xcb_xkb_state_notify_event_t
# ##

# type
#   xcb_xkb_state_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     mods*: uint8
#     baseMods*: uint8
#     latchedMods*: uint8
#     lockedMods*: uint8
#     group*: uint8
#     baseGroup*: int16
#     latchedGroup*: int16
#     lockedGroup*: uint8
#     compatState*: uint8
#     grabMods*: uint8
#     compatGrabMods*: uint8
#     lookupMods*: uint8
#     compatLoockupMods*: uint8
#     ptrBtnState*: uint16
#     changed*: uint16
#     keycode*: xcb_keycode_t
#     eventType*: uint8
#     requestMajor*: uint8
#     requestMinor*: uint8


# ## * Opcode for xcb_xkb_controls_notify.

# const
#   XCB_XKB_CONTROLS_NOTIFY* = 3

# ## *
# ##  @brief xcb_xkb_controls_notify_event_t
# ##

# type
#   xcb_xkb_controls_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     numGroups*: uint8
#     pad0*: array[2, uint8]
#     changedControls*: uint32
#     enabledControls*: uint32
#     enabledControlChanges*: uint32
#     keycode*: xcb_keycode_t
#     eventType*: uint8
#     requestMajor*: uint8
#     requestMinor*: uint8
#     pad1*: array[4, uint8]


# ## * Opcode for xcb_xkb_indicator_state_notify.

# const
#   XCB_XKB_INDICATOR_STATE_NOTIFY* = 4

# ## *
# ##  @brief xcb_xkb_indicator_state_notify_event_t
# ##

# type
#   xcb_xkb_indicator_state_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     pad0*: array[3, uint8]
#     state*: uint32
#     stateChanged*: uint32
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_xkb_indicator_map_notify.

# const
#   XCB_XKB_INDICATOR_MAP_NOTIFY* = 5

# ## *
# ##  @brief xcb_xkb_indicator_map_notify_event_t
# ##

# type
#   xcb_xkb_indicator_map_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     pad0*: array[3, uint8]
#     state*: uint32
#     mapChanged*: uint32
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_xkb_names_notify.

# const
#   XCB_XKB_NAMES_NOTIFY* = 6

# ## *
# ##  @brief xcb_xkb_names_notify_event_t
# ##

# type
#   xcb_xkb_names_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     pad0*: uint8
#     changed*: uint16
#     firstType*: uint8
#     nTypes*: uint8
#     firstLevelName*: uint8
#     nLevelNames*: uint8
#     pad1*: uint8
#     nRadioGroups*: uint8
#     nKeyAliases*: uint8
#     changedGroupNames*: uint8
#     changedVirtualMods*: uint16
#     firstKey*: xcb_keycode_t
#     nKeys*: uint8
#     changedIndicators*: uint32
#     pad2*: array[4, uint8]


# ## * Opcode for xcb_xkb_compat_map_notify.

# const
#   XCB_XKB_COMPAT_MAP_NOTIFY* = 7

# ## *
# ##  @brief xcb_xkb_compat_map_notify_event_t
# ##

# type
#   xcb_xkb_compat_map_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     changedGroups*: uint8
#     firstSI*: uint16
#     nSI*: uint16
#     nTotalSI*: uint16
#     pad0*: array[16, uint8]


# ## * Opcode for xcb_xkb_bell_notify.

# const
#   XCB_XKB_BELL_NOTIFY* = 8

# ## *
# ##  @brief xcb_xkb_bell_notify_event_t
# ##

# type
#   xcb_xkb_bell_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     bellClass*: uint8
#     bellID*: uint8
#     percent*: uint8
#     pitch*: uint16
#     duration*: uint16
#     name*: xcb_atom_t
#     window*: xcb_window_t
#     eventOnly*: uint8
#     pad0*: array[7, uint8]


# ## * Opcode for xcb_xkb_action_message.

# const
#   XCB_XKB_ACTION_MESSAGE* = 9

# ## *
# ##  @brief xcb_xkb_action_message_event_t
# ##

# type
#   xcb_xkb_action_message_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     keycode*: xcb_keycode_t
#     press*: uint8
#     keyEventFollows*: uint8
#     mods*: uint8
#     group*: uint8
#     message*: array[8, xcb_xkb_string8_t]
#     pad0*: array[10, uint8]


# ## * Opcode for xcb_xkb_access_x_notify.

# const
#   XCB_XKB_ACCESS_X_NOTIFY* = 10

# ## *
# ##  @brief xcb_xkb_access_x_notify_event_t
# ##

# type
#   xcb_xkb_access_x_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     keycode*: xcb_keycode_t
#     detailt*: uint16
#     slowKeysDelay*: uint16
#     debounceDelay*: uint16
#     pad0*: array[16, uint8]


# ## * Opcode for xcb_xkb_extension_device_notify.

# const
#   XCB_XKB_EXTENSION_DEVICE_NOTIFY* = 11

# ## *
# ##  @brief xcb_xkb_extension_device_notify_event_t
# ##

# type
#   xcb_xkb_extension_device_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     xkbType*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     deviceID*: uint8
#     pad0*: uint8
#     reason*: uint16
#     ledClass*: uint16
#     ledID*: uint16
#     ledsDefined*: uint32
#     ledState*: uint32
#     firstButton*: uint8
#     nButtons*: uint8
#     supported*: uint16
#     unsupported*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_device_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_device_spec_t)
# ##

# proc xcb_xkb_device_spec_next*(i: ptr xcb_xkb_device_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_device_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_device_spec_end*(i: xcb_xkb_device_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_led_class_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_led_class_spec_t)
# ##

# proc xcb_xkb_led_class_spec_next*(i: ptr xcb_xkb_led_class_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_led_class_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_led_class_spec_end*(i: xcb_xkb_led_class_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_bell_class_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_bell_class_spec_t)
# ##

# proc xcb_xkb_bell_class_spec_next*(i: ptr xcb_xkb_bell_class_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_bell_class_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_bell_class_spec_end*(i: xcb_xkb_bell_class_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_id_spec_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_id_spec_t)
# ##

# proc xcb_xkb_id_spec_next*(i: ptr xcb_xkb_id_spec_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_id_spec_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_id_spec_end*(i: xcb_xkb_id_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_indicator_map_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_indicator_map_t)
# ##

# proc xcb_xkb_indicator_map_next*(i: ptr xcb_xkb_indicator_map_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_indicator_map_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_indicator_map_end*(i: xcb_xkb_indicator_map_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_mod_def_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_mod_def_t)
# ##

# proc xcb_xkb_mod_def_next*(i: ptr xcb_xkb_mod_def_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_mod_def_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_mod_def_end*(i: xcb_xkb_mod_def_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_name_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_name_t)
# ##

# proc xcb_xkb_key_name_next*(i: ptr xcb_xkb_key_name_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_name_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_name_end*(i: xcb_xkb_key_name_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_alias_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_alias_t)
# ##

# proc xcb_xkb_key_alias_next*(i: ptr xcb_xkb_key_alias_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_alias_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_alias_end*(i: xcb_xkb_key_alias_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_counted_string_16_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_counted_string_16_string*(R: ptr xcb_xkb_counted_string_16_t): cstring
# proc xcb_xkb_counted_string_16_string_length*(R: ptr xcb_xkb_counted_string_16_t): cint
# proc xcb_xkb_counted_string_16_string_end*(R: ptr xcb_xkb_counted_string_16_t): xcb_generic_iterator_t
# proc xcb_xkb_counted_string_16_alignment_pad*(R: ptr xcb_xkb_counted_string_16_t): pointer
# proc xcb_xkb_counted_string_16_alignment_pad_length*(
#     R: ptr xcb_xkb_counted_string_16_t): cint
# proc xcb_xkb_counted_string_16_alignment_pad_end*(
#     R: ptr xcb_xkb_counted_string_16_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_counted_string_16_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_counted_string_16_t)
# ##

# proc xcb_xkb_counted_string_16_next*(i: ptr xcb_xkb_counted_string_16_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_counted_string_16_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_counted_string_16_end*(i: xcb_xkb_counted_string_16_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_kt_map_entry_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_kt_map_entry_t)
# ##

# proc xcb_xkb_key_type_end*(i: xcb_xkb_key_type_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_key_sym_map_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_key_sym_map_syms*(R: ptr xcb_xkb_key_sym_map_t): ptr xcb_keysym_t
# proc xcb_xkb_key_sym_map_syms_length*(R: ptr xcb_xkb_key_sym_map_t): cint
# proc xcb_xkb_key_sym_map_syms_end*(R: ptr xcb_xkb_key_sym_map_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_sym_map_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_sym_map_t)
# ##

# proc xcb_xkb_key_sym_map_next*(i: ptr xcb_xkb_key_sym_map_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_sym_map_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_sym_map_end*(i: xcb_xkb_key_sym_map_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_common_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_common_behavior_t)
# ##

# proc xcb_xkb_common_behavior_next*(i: ptr xcb_xkb_common_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_common_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_common_behavior_end*(i: xcb_xkb_common_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_default_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_default_behavior_t)
# ##

# proc xcb_xkb_default_behavior_next*(i: ptr xcb_xkb_default_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_default_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_default_behavior_end*(i: xcb_xkb_default_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_lock_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_lock_behavior_t)
# ##

# proc xcb_xkb_lock_behavior_next*(i: ptr xcb_xkb_lock_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_lock_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_lock_behavior_end*(i: xcb_xkb_lock_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_radio_group_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_radio_group_behavior_t)
# ##

# proc xcb_xkb_radio_group_behavior_next*(i: ptr xcb_xkb_radio_group_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_radio_group_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_radio_group_behavior_end*(i: xcb_xkb_radio_group_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_overlay_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_overlay_behavior_t)
# ##

# proc xcb_xkb_overlay_behavior_next*(i: ptr xcb_xkb_overlay_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_overlay_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_overlay_behavior_end*(i: xcb_xkb_overlay_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_permament_lock_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_permament_lock_behavior_t)
# ##

# proc xcb_xkb_permament_lock_behavior_next*(
#     i: ptr xcb_xkb_permament_lock_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_permament_lock_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_permament_lock_behavior_end*(
#     i: xcb_xkb_permament_lock_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_permament_radio_group_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_permament_radio_group_behavior_t)
# ##

# proc xcb_xkb_permament_radio_group_behavior_next*(
#     i: ptr xcb_xkb_permament_radio_group_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_permament_radio_group_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_permament_radio_group_behavior_end*(
#     i: xcb_xkb_permament_radio_group_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_permament_overlay_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_permament_overlay_behavior_t)
# ##

# proc xcb_xkb_permament_overlay_behavior_next*(
#     i: ptr xcb_xkb_permament_overlay_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_permament_overlay_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_permament_overlay_behavior_end*(
#     i: xcb_xkb_permament_overlay_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_behavior_t)
# ##

# proc xcb_xkb_behavior_next*(i: ptr xcb_xkb_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_behavior_end*(i: xcb_xkb_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_set_behavior_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_set_behavior_t)
# ##

# proc xcb_xkb_set_behavior_next*(i: ptr xcb_xkb_set_behavior_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_set_behavior_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_set_behavior_end*(i: xcb_xkb_set_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_set_explicit_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_set_explicit_t)
# ##

# proc xcb_xkb_set_explicit_next*(i: ptr xcb_xkb_set_explicit_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_set_explicit_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_set_explicit_end*(i: xcb_xkb_set_explicit_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_mod_map_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_mod_map_t)
# ##

# proc xcb_xkb_key_mod_map_next*(i: ptr xcb_xkb_key_mod_map_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_mod_map_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_mod_map_end*(i: xcb_xkb_key_mod_map_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_v_mod_map_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_v_mod_map_t)
# ##

# proc xcb_xkb_key_v_mod_map_next*(i: ptr xcb_xkb_key_v_mod_map_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_v_mod_map_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_v_mod_map_end*(i: xcb_xkb_key_v_mod_map_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_kt_set_map_entry_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_kt_set_map_entry_t)
# ##

# proc xcb_xkb_kt_set_map_entry_next*(i: ptr xcb_xkb_kt_set_map_entry_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_kt_set_map_entry_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_kt_set_map_entry_end*(i: xcb_xkb_kt_set_map_entry_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_set_key_type_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_set_key_type_entries*(R: ptr xcb_xkb_set_key_type_t): ptr xcb_xkb_kt_set_map_entry_t
# proc xcb_xkb_set_key_type_entries_length*(R: ptr xcb_xkb_set_key_type_t): cint
# proc xcb_xkb_set_key_type_entries_iterator*(R: ptr xcb_xkb_set_key_type_t): xcb_xkb_kt_set_map_entry_iterator_t
# proc xcb_xkb_set_key_type_preserve_entries*(R: ptr xcb_xkb_set_key_type_t): ptr xcb_xkb_kt_set_map_entry_t
# proc xcb_xkb_set_key_type_preserve_entries_length*(R: ptr xcb_xkb_set_key_type_t): cint
# proc xcb_xkb_set_key_type_preserve_entries_iterator*(
#     R: ptr xcb_xkb_set_key_type_t): xcb_xkb_kt_set_map_entry_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_set_key_type_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_set_key_type_t)
# ##

# proc xcb_xkb_set_key_type_next*(i: ptr xcb_xkb_set_key_type_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_set_key_type_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_set_key_type_end*(i: xcb_xkb_set_key_type_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_string8_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_string8_t)
# ##

# proc xcb_xkb_string8_next*(i: ptr xcb_xkb_string8_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_string8_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_string8_end*(i: xcb_xkb_string8_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_outline_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_outline_points*(R: ptr xcb_xkb_outline_t): ptr xcb_point_t
# proc xcb_xkb_outline_points_length*(R: ptr xcb_xkb_outline_t): cint
# proc xcb_xkb_outline_points_iterator*(R: ptr xcb_xkb_outline_t): xcb_point_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_outline_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_outline_t)
# ##

# proc xcb_xkb_outline_next*(i: ptr xcb_xkb_outline_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_outline_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_outline_end*(i: xcb_xkb_outline_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_shape_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_shape_outlines_length*(R: ptr xcb_xkb_shape_t): cint
# proc xcb_xkb_shape_outlines_iterator*(R: ptr xcb_xkb_shape_t): xcb_xkb_outline_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_shape_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_shape_t)
# ##

# proc xcb_xkb_shape_next*(i: ptr xcb_xkb_shape_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_shape_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_shape_end*(i: xcb_xkb_shape_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_key_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_key_t)
# ##

# proc xcb_xkb_key_next*(i: ptr xcb_xkb_key_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_key_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_key_end*(i: xcb_xkb_key_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_overlay_key_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_overlay_key_t)
# ##

# proc xcb_xkb_overlay_key_next*(i: ptr xcb_xkb_overlay_key_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_overlay_key_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_overlay_key_end*(i: xcb_xkb_overlay_key_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_overlay_row_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_overlay_row_keys*(R: ptr xcb_xkb_overlay_row_t): ptr xcb_xkb_overlay_key_t
# proc xcb_xkb_overlay_row_keys_length*(R: ptr xcb_xkb_overlay_row_t): cint
# proc xcb_xkb_overlay_row_keys_iterator*(R: ptr xcb_xkb_overlay_row_t): xcb_xkb_overlay_key_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_overlay_row_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_overlay_row_t)
# ##

# proc xcb_xkb_overlay_row_next*(i: ptr xcb_xkb_overlay_row_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_overlay_row_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_overlay_row_end*(i: xcb_xkb_overlay_row_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_overlay_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_overlay_rows_length*(R: ptr xcb_xkb_overlay_t): cint
# proc xcb_xkb_overlay_rows_iterator*(R: ptr xcb_xkb_overlay_t): xcb_xkb_overlay_row_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_overlay_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_overlay_t)
# ##

# proc xcb_xkb_overlay_next*(i: ptr xcb_xkb_overlay_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_overlay_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_overlay_end*(i: xcb_xkb_overlay_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_row_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_row_keys*(R: ptr xcb_xkb_row_t): ptr xcb_xkb_key_t
# proc xcb_xkb_row_keys_length*(R: ptr xcb_xkb_row_t): cint
# proc xcb_xkb_row_keys_iterator*(R: ptr xcb_xkb_row_t): xcb_xkb_key_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_row_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_row_t)
# ##

# proc xcb_xkb_row_next*(i: ptr xcb_xkb_row_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_row_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_row_end*(i: xcb_xkb_row_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_listing_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_listing_string*(R: ptr xcb_xkb_listing_t): ptr xcb_xkb_string8_t
# proc xcb_xkb_listing_string_length*(R: ptr xcb_xkb_listing_t): cint
# proc xcb_xkb_listing_string_end*(R: ptr xcb_xkb_listing_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_listing_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_listing_t)
# ##

# proc xcb_xkb_listing_next*(i: ptr xcb_xkb_listing_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_listing_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_listing_end*(i: xcb_xkb_listing_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_device_led_info_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_device_led_info_names*(R: ptr xcb_xkb_device_led_info_t): ptr xcb_atom_t
# proc xcb_xkb_device_led_info_names_length*(R: ptr xcb_xkb_device_led_info_t): cint
# proc xcb_xkb_device_led_info_names_end*(R: ptr xcb_xkb_device_led_info_t): xcb_generic_iterator_t
# proc xcb_xkb_device_led_info_maps*(R: ptr xcb_xkb_device_led_info_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_device_led_info_maps_length*(R: ptr xcb_xkb_device_led_info_t): cint
# proc xcb_xkb_device_led_info_maps_iterator*(R: ptr xcb_xkb_device_led_info_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_device_led_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_device_led_info_t)
# ##

# proc xcb_xkb_device_led_info_next*(i: ptr xcb_xkb_device_led_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_device_led_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_device_led_info_end*(i: xcb_xkb_device_led_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_no_action_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_no_action_t)
# ##

# proc xcb_xkb_sa_no_action_next*(i: ptr xcb_xkb_sa_no_action_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_no_action_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_no_action_end*(i: xcb_xkb_sa_no_action_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_set_mods_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_set_mods_t)
# ##

# proc xcb_xkb_sa_set_mods_next*(i: ptr xcb_xkb_sa_set_mods_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_set_mods_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_set_mods_end*(i: xcb_xkb_sa_set_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_latch_mods_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_latch_mods_t)
# ##

# proc xcb_xkb_sa_latch_mods_next*(i: ptr xcb_xkb_sa_latch_mods_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_latch_mods_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_latch_mods_end*(i: xcb_xkb_sa_latch_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_lock_mods_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_lock_mods_t)
# ##

# proc xcb_xkb_sa_lock_mods_next*(i: ptr xcb_xkb_sa_lock_mods_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_lock_mods_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_lock_mods_end*(i: xcb_xkb_sa_lock_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_set_group_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_set_group_t)
# ##

# proc xcb_xkb_sa_set_group_next*(i: ptr xcb_xkb_sa_set_group_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_set_group_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_set_group_end*(i: xcb_xkb_sa_set_group_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_latch_group_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_latch_group_t)
# ##

# proc xcb_xkb_sa_latch_group_next*(i: ptr xcb_xkb_sa_latch_group_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_latch_group_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_latch_group_end*(i: xcb_xkb_sa_latch_group_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_lock_group_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_lock_group_t)
# ##

# proc xcb_xkb_sa_lock_group_next*(i: ptr xcb_xkb_sa_lock_group_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_lock_group_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_lock_group_end*(i: xcb_xkb_sa_lock_group_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_move_ptr_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_move_ptr_t)
# ##

# proc xcb_xkb_sa_move_ptr_next*(i: ptr xcb_xkb_sa_move_ptr_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_move_ptr_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_move_ptr_end*(i: xcb_xkb_sa_move_ptr_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_ptr_btn_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_ptr_btn_t)
# ##

# proc xcb_xkb_sa_ptr_btn_next*(i: ptr xcb_xkb_sa_ptr_btn_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_ptr_btn_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_ptr_btn_end*(i: xcb_xkb_sa_ptr_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_lock_ptr_btn_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_lock_ptr_btn_t)
# ##

# proc xcb_xkb_sa_lock_ptr_btn_next*(i: ptr xcb_xkb_sa_lock_ptr_btn_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_lock_ptr_btn_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_lock_ptr_btn_end*(i: xcb_xkb_sa_lock_ptr_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_set_ptr_dflt_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_set_ptr_dflt_t)
# ##

# proc xcb_xkb_sa_set_ptr_dflt_next*(i: ptr xcb_xkb_sa_set_ptr_dflt_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_set_ptr_dflt_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_set_ptr_dflt_end*(i: xcb_xkb_sa_set_ptr_dflt_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_iso_lock_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_iso_lock_t)
# ##

# proc xcb_xkb_sa_iso_lock_next*(i: ptr xcb_xkb_sa_iso_lock_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_iso_lock_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_iso_lock_end*(i: xcb_xkb_sa_iso_lock_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_terminate_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_terminate_t)
# ##

# proc xcb_xkb_sa_terminate_next*(i: ptr xcb_xkb_sa_terminate_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_terminate_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_terminate_end*(i: xcb_xkb_sa_terminate_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_switch_screen_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_switch_screen_t)
# ##

# proc xcb_xkb_sa_switch_screen_next*(i: ptr xcb_xkb_sa_switch_screen_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_switch_screen_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_switch_screen_end*(i: xcb_xkb_sa_switch_screen_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_set_controls_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_set_controls_t)
# ##

# proc xcb_xkb_sa_set_controls_next*(i: ptr xcb_xkb_sa_set_controls_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_set_controls_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_set_controls_end*(i: xcb_xkb_sa_set_controls_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_lock_controls_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_lock_controls_t)
# ##

# proc xcb_xkb_sa_lock_controls_next*(i: ptr xcb_xkb_sa_lock_controls_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_lock_controls_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_lock_controls_end*(i: xcb_xkb_sa_lock_controls_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_action_message_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_action_message_t)
# ##

# proc xcb_xkb_sa_action_message_next*(i: ptr xcb_xkb_sa_action_message_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_action_message_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_action_message_end*(i: xcb_xkb_sa_action_message_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_redirect_key_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_redirect_key_t)
# ##

# proc xcb_xkb_sa_redirect_key_next*(i: ptr xcb_xkb_sa_redirect_key_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_redirect_key_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_redirect_key_end*(i: xcb_xkb_sa_redirect_key_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_device_btn_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_device_btn_t)
# ##

# proc xcb_xkb_sa_device_btn_next*(i: ptr xcb_xkb_sa_device_btn_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_device_btn_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_device_btn_end*(i: xcb_xkb_sa_device_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_lock_device_btn_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_lock_device_btn_t)
# ##

# proc xcb_xkb_sa_lock_device_btn_next*(i: ptr xcb_xkb_sa_lock_device_btn_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_lock_device_btn_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_lock_device_btn_end*(i: xcb_xkb_sa_lock_device_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sa_device_valuator_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sa_device_valuator_t)
# ##

# proc xcb_xkb_sa_device_valuator_next*(i: ptr xcb_xkb_sa_device_valuator_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sa_device_valuator_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sa_device_valuator_end*(i: xcb_xkb_sa_device_valuator_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_si_action_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_si_action_t)
# ##

# proc xcb_xkb_si_action_next*(i: ptr xcb_xkb_si_action_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_si_action_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_si_action_end*(i: xcb_xkb_si_action_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_sym_interpret_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_sym_interpret_t)
# ##

# proc xcb_xkb_sym_interpret_next*(i: ptr xcb_xkb_sym_interpret_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_sym_interpret_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_sym_interpret_end*(i: xcb_xkb_sym_interpret_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xkb_action_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xkb_action_t)
# ##

# proc xcb_xkb_action_next*(i: ptr xcb_xkb_action_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xkb_action_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xkb_action_end*(i: xcb_xkb_action_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_use_extension_unchecked*(c: ptr xcb_connection_t;
#                                      wantedMajor: uint16; wantedMinor: uint16): xcb_xkb_use_extension_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_use_extension_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##


# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_select_events_checked*(c: ptr xcb_connection_t;
#                                    deviceSpec: xcb_xkb_device_spec_t;
#                                    affectWhich: uint16; clear: uint16;
#                                    selectAll: uint16; affectMap: uint16;
#                                    map: uint16; details: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_select_events_aux_checked*(c: ptr xcb_connection_t;
#                                        deviceSpec: xcb_xkb_device_spec_t;
#                                        affectWhich: uint16; clear: uint16;
#                                        selectAll: uint16; affectMap: uint16;
#                                        map: uint16; details: ptr xcb_xkb_select_events_details_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_select_events_aux*(c: ptr xcb_connection_t;
#                                deviceSpec: xcb_xkb_device_spec_t;
#                                affectWhich: uint16; clear: uint16;
#                                selectAll: uint16; affectMap: uint16;
#                                map: uint16;
#                                details: ptr xcb_xkb_select_events_details_t): xcb_void_cookie_t
# proc xcb_xkb_select_events_details*(R: ptr xcb_xkb_select_events_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_bell_checked*(c: ptr xcb_connection_t;
#                           deviceSpec: xcb_xkb_device_spec_t;
#                           bellClass: xcb_xkb_bell_class_spec_t;
#                           bellID: xcb_xkb_id_spec_t; percent: int8;
#                           forceSound: uint8; eventOnly: uint8; pitch: int16;
#                           duration: int16; name: xcb_atom_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_bell*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
#                   bellClass: xcb_xkb_bell_class_spec_t; bellID: xcb_xkb_id_spec_t;
#                   percent: int8; forceSound: uint8; eventOnly: uint8;
#                   pitch: int16; duration: int16; name: xcb_atom_t;
#                   window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_state*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_state_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_state_unchecked*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_state_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_state_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_state_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_state_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_latch_lock_state_checked*(c: ptr xcb_connection_t;
#                                       deviceSpec: xcb_xkb_device_spec_t;
#                                       affectModLocks: uint8; modLocks: uint8;
#                                       lockGroup: uint8; groupLock: uint8;
#                                       affectModLatches: uint8;
#                                       latchGroup: uint8; groupLatch: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_latch_lock_state*(c: ptr xcb_connection_t;
#                               deviceSpec: xcb_xkb_device_spec_t;
#                               affectModLocks: uint8; modLocks: uint8;
#                               lockGroup: uint8; groupLock: uint8;
#                               affectModLatches: uint8; latchGroup: uint8;
#                               groupLatch: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_controls*(c: ptr xcb_connection_t;
#                           deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_controls_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_controls_unchecked*(c: ptr xcb_connection_t;
#                                     deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_controls_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_controls_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_controls_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_controls_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_controls_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_controls_checked*(c: ptr xcb_connection_t;
#                                   deviceSpec: xcb_xkb_device_spec_t;
#                                   affectInternalRealMods: uint8;
#                                   internalRealMods: uint8;
#                                   affectIgnoreLockRealMods: uint8;
#                                   ignoreLockRealMods: uint8;
#                                   affectInternalVirtualMods: uint16;
#                                   internalVirtualMods: uint16;
#                                   affectIgnoreLockVirtualMods: uint16;
#                                   ignoreLockVirtualMods: uint16;
#                                   mouseKeysDfltBtn: uint8; groupsWrap: uint8;
#                                   accessXOptions: uint16;
#                                   affectEnabledControls: uint32;
#                                   enabledControls: uint32;
#                                   changeControls: uint32; repeatDelay: uint16;
#                                   repeatInterval: uint16;
#                                   slowKeysDelay: uint16;
#                                   debounceDelay: uint16;
#                                   mouseKeysDelay: uint16;
#                                   mouseKeysInterval: uint16;
#                                   mouseKeysTimeToMax: uint16;
#                                   mouseKeysMaxSpeed: uint16;
#                                   mouseKeysCurve: int16;
#                                   accessXTimeout: uint16;
#                                   accessXTimeoutMask: uint32;
#                                   accessXTimeoutValues: uint32;
#                                   accessXTimeoutOptionsMask: uint16;
#                                   accessXTimeoutOptionsValues: uint16;
#                                   perKeyRepeat: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_controls*(c: ptr xcb_connection_t;
#                           deviceSpec: xcb_xkb_device_spec_t;
#                           affectInternalRealMods: uint8;
#                           internalRealMods: uint8;
#                           affectIgnoreLockRealMods: uint8;
#                           ignoreLockRealMods: uint8;
#                           affectInternalVirtualMods: uint16;
#                           internalVirtualMods: uint16;
#                           affectIgnoreLockVirtualMods: uint16;
#                           ignoreLockVirtualMods: uint16;
#                           mouseKeysDfltBtn: uint8; groupsWrap: uint8;
#                           accessXOptions: uint16;
#                           affectEnabledControls: uint32;
#                           enabledControls: uint32; changeControls: uint32;
#                           repeatDelay: uint16; repeatInterval: uint16;
#                           slowKeysDelay: uint16; debounceDelay: uint16;
#                           mouseKeysDelay: uint16; mouseKeysInterval: uint16;
#                           mouseKeysTimeToMax: uint16;
#                           mouseKeysMaxSpeed: uint16; mouseKeysCurve: int16;
#                           accessXTimeout: uint16; accessXTimeoutMask: uint32;
#                           accessXTimeoutValues: uint32;
#                           accessXTimeoutOptionsMask: uint16;
#                           accessXTimeoutOptionsValues: uint16;
#                           perKeyRepeat: ptr uint8): xcb_void_cookie_t
# proc xcb_xkb_get_map_map_vmods_rtrn_end*(R: ptr xcb_xkb_get_map_reply_t;
#                                         S: ptr xcb_xkb_get_map_map_t): xcb_generic_iterator_t
# proc xcb_xkb_get_map_map_explicit_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_get_map_map_explicit_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_explicit_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_get_map_map_modmap_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_get_map_map_modmap_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_modmap_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_get_map_map_vmodmap_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_get_map_map_vmodmap_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_vmodmap_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
#     S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_get_map_map_serialize*(_buffer: ptr pointer; nTypes: uint8;
#                                    nKeySyms: uint8; nKeyActions: uint8;
#                                    totalActions: uint16;
#                                    totalKeyBehaviors: uint8;
#                                    virtualMods: uint16;
#                                    totalKeyExplicit: uint8;
#                                    totalModMapKeys: uint8;
#                                    totalVModMapKeys: uint8; present: uint16;
#                                    _aux: ptr xcb_xkb_get_map_map_t): cint

# proc xcb_xkb_get_map_map_sizeof*(_buffer: pointer; nTypes: uint8;
#                                 nKeySyms: uint8; nKeyActions: uint8;
#                                 totalActions: uint16;
#                                 totalKeyBehaviors: uint8; virtualMods: uint16;
#                                 totalKeyExplicit: uint8;
#                                 totalModMapKeys: uint8;
#                                 totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_get_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##

# proc xcb_xkb_get_map_unchecked*(c: ptr xcb_connection_t;
#                                deviceSpec: xcb_xkb_device_spec_t; full: uint16;
#                                partial: uint16; firstType: uint8;
#                                nTypes: uint8; firstKeySym: xcb_keycode_t;
#                                nKeySyms: uint8; firstKeyAction: xcb_keycode_t;
#                                nKeyActions: uint8;
#                                firstKeyBehavior: xcb_keycode_t;
#                                nKeyBehaviors: uint8; virtualMods: uint16;
#                                firstKeyExplicit: xcb_keycode_t;
#                                nKeyExplicit: uint8;
#                                firstModMapKey: xcb_keycode_t;
#                                nModMapKeys: uint8;
#                                firstVModMapKey: xcb_keycode_t;
#                                nVModMapKeys: uint8): xcb_xkb_get_map_cookie_t

# proc xcb_xkb_set_map_values_types_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_types_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_key_type_iterator_t
# proc xcb_xkb_set_map_values_syms_length*(R: ptr xcb_xkb_set_map_request_t;
#                                         S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_syms_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_sym_map_iterator_t
# proc xcb_xkb_set_map_values_actions_count*(S: ptr xcb_xkb_set_map_values_t): ptr uint8
# proc xcb_xkb_set_map_values_actions_count_length*(
#     R: ptr xcb_xkb_set_map_request_t; S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_actions_count_end*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_map_values_actions*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_action_t
# proc xcb_xkb_set_map_values_actions_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_actions_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_set_map_values_behaviors*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_set_behavior_t
# proc xcb_xkb_set_map_values_behaviors_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_behaviors_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_behavior_iterator_t
# proc xcb_xkb_set_map_values_vmods*(S: ptr xcb_xkb_set_map_values_t): ptr uint8
# proc xcb_xkb_set_map_values_vmods_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_vmods_end*(R: ptr xcb_xkb_set_map_request_t;
#                                       S: ptr xcb_xkb_set_map_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_map_values_explicit*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_set_map_values_explicit_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_explicit_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_set_map_values_modmap*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_set_map_values_modmap_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_modmap_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_set_map_values_vmodmap*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_set_map_values_vmodmap_length*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_vmodmap_iterator*(R: ptr xcb_xkb_set_map_request_t;
#     S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_set_map_values_serialize*(_buffer: ptr pointer; nTypes: uint8;
#                                       nKeySyms: uint8; nKeyActions: uint8;
#                                       totalActions: uint16;
#                                       totalKeyBehaviors: uint8;
#                                       virtualMods: uint16;
#                                       totalKeyExplicit: uint8;
#                                       totalModMapKeys: uint8;
#                                       totalVModMapKeys: uint8;
#                                       present: uint16;
#                                       _aux: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_unpack*(_buffer: pointer; nTypes: uint8;
#                                    nKeySyms: uint8; nKeyActions: uint8;
#                                    totalActions: uint16;
#                                    totalKeyBehaviors: uint8;
#                                    virtualMods: uint16;
#                                    totalKeyExplicit: uint8;
#                                    totalModMapKeys: uint8;
#                                    totalVModMapKeys: uint8; present: uint16;
#                                    _aux: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_sizeof*(_buffer: pointer; nTypes: uint8;
#                                    nKeySyms: uint8; nKeyActions: uint8;
#                                    totalActions: uint16;
#                                    totalKeyBehaviors: uint8;
#                                    virtualMods: uint16;
#                                    totalKeyExplicit: uint8;
#                                    totalModMapKeys: uint8;
#                                    totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_set_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_map_checked*(c: ptr xcb_connection_t;
#                              deviceSpec: xcb_xkb_device_spec_t; present: uint16;
#                              flags: uint16; minKeyCode: xcb_keycode_t;
#                              maxKeyCode: xcb_keycode_t; firstType: uint8;
#                              nTypes: uint8; firstKeySym: xcb_keycode_t;
#                              nKeySyms: uint8; totalSyms: uint16;
#                              firstKeyAction: xcb_keycode_t; nKeyActions: uint8;
#                              totalActions: uint16;
#                              firstKeyBehavior: xcb_keycode_t;
#                              nKeyBehaviors: uint8; totalKeyBehaviors: uint8;
#                              firstKeyExplicit: xcb_keycode_t;
#                              nKeyExplicit: uint8; totalKeyExplicit: uint8;
#                              firstModMapKey: xcb_keycode_t; nModMapKeys: uint8;
#                              totalModMapKeys: uint8;
#                              firstVModMapKey: xcb_keycode_t;
#                              nVModMapKeys: uint8; totalVModMapKeys: uint8;
#                              virtualMods: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_map*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
#                      present: uint16; flags: uint16; minKeyCode: xcb_keycode_t;
#                      maxKeyCode: xcb_keycode_t; firstType: uint8; nTypes: uint8;
#                      firstKeySym: xcb_keycode_t; nKeySyms: uint8;
#                      totalSyms: uint16; firstKeyAction: xcb_keycode_t;
#                      nKeyActions: uint8; totalActions: uint16;
#                      firstKeyBehavior: xcb_keycode_t; nKeyBehaviors: uint8;
#                      totalKeyBehaviors: uint8; firstKeyExplicit: xcb_keycode_t;
#                      nKeyExplicit: uint8; totalKeyExplicit: uint8;
#                      firstModMapKey: xcb_keycode_t; nModMapKeys: uint8;
#                      totalModMapKeys: uint8; firstVModMapKey: xcb_keycode_t;
#                      nVModMapKeys: uint8; totalVModMapKeys: uint8;
#                      virtualMods: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_map_aux_checked*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t;
#                                  present: uint16; flags: uint16;
#                                  minKeyCode: xcb_keycode_t;
#                                  maxKeyCode: xcb_keycode_t; firstType: uint8;
#                                  nTypes: uint8; firstKeySym: xcb_keycode_t;
#                                  nKeySyms: uint8; totalSyms: uint16;
#                                  firstKeyAction: xcb_keycode_t;
#                                  nKeyActions: uint8; totalActions: uint16;
#                                  firstKeyBehavior: xcb_keycode_t;
#                                  nKeyBehaviors: uint8;
#                                  totalKeyBehaviors: uint8;
#                                  firstKeyExplicit: xcb_keycode_t;
#                                  nKeyExplicit: uint8; totalKeyExplicit: uint8;
#                                  firstModMapKey: xcb_keycode_t;
#                                  nModMapKeys: uint8; totalModMapKeys: uint8;
#                                  firstVModMapKey: xcb_keycode_t;
#                                  nVModMapKeys: uint8; totalVModMapKeys: uint8;
#                                  virtualMods: uint16;
#                                  values: ptr xcb_xkb_set_map_values_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_map_aux*(c: ptr xcb_connection_t;
#                          deviceSpec: xcb_xkb_device_spec_t; present: uint16;
#                          flags: uint16; minKeyCode: xcb_keycode_t;
#                          maxKeyCode: xcb_keycode_t; firstType: uint8;
#                          nTypes: uint8; firstKeySym: xcb_keycode_t;
#                          nKeySyms: uint8; totalSyms: uint16;
#                          firstKeyAction: xcb_keycode_t; nKeyActions: uint8;
#                          totalActions: uint16; firstKeyBehavior: xcb_keycode_t;
#                          nKeyBehaviors: uint8; totalKeyBehaviors: uint8;
#                          firstKeyExplicit: xcb_keycode_t; nKeyExplicit: uint8;
#                          totalKeyExplicit: uint8; firstModMapKey: xcb_keycode_t;
#                          nModMapKeys: uint8; totalModMapKeys: uint8;
#                          firstVModMapKey: xcb_keycode_t; nVModMapKeys: uint8;
#                          totalVModMapKeys: uint8; virtualMods: uint16;
#                          values: ptr xcb_xkb_set_map_values_t): xcb_void_cookie_t
# proc xcb_xkb_set_map_values*(R: ptr xcb_xkb_set_map_request_t): pointer
# proc xcb_xkb_get_compat_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_compat_map*(c: ptr xcb_connection_t;
#                             deviceSpec: xcb_xkb_device_spec_t; groups: uint8;
#                             getAllSI: uint8; firstSI: uint16; nSI: uint16): xcb_xkb_get_compat_map_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_compat_map_unchecked*(c: ptr xcb_connection_t;
#                                       deviceSpec: xcb_xkb_device_spec_t;
#                                       groups: uint8; getAllSI: uint8;
#                                       firstSI: uint16; nSI: uint16): xcb_xkb_get_compat_map_cookie_t
# proc xcb_xkb_get_compat_map_si_rtrn*(R: ptr xcb_xkb_get_compat_map_reply_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_get_compat_map_si_rtrn_length*(R: ptr xcb_xkb_get_compat_map_reply_t): cint
# proc xcb_xkb_get_compat_map_si_rtrn_iterator*(
#     R: ptr xcb_xkb_get_compat_map_reply_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_get_compat_map_group_rtrn*(R: ptr xcb_xkb_get_compat_map_reply_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_get_compat_map_group_rtrn_length*(
#     R: ptr xcb_xkb_get_compat_map_reply_t): cint
# proc xcb_xkb_get_compat_map_group_rtrn_iterator*(
#     R: ptr xcb_xkb_get_compat_map_reply_t): xcb_xkb_mod_def_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_compat_map_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_compat_map_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_compat_map_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_compat_map_reply_t
# proc xcb_xkb_set_compat_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_compat_map_checked*(c: ptr xcb_connection_t;
#                                     deviceSpec: xcb_xkb_device_spec_t;
#                                     recomputeActions: uint8;
#                                     truncateSI: uint8; groups: uint8;
#                                     firstSI: uint16; nSI: uint16;
#                                     si: ptr xcb_xkb_sym_interpret_t;
#                                     groupMaps: ptr xcb_xkb_mod_def_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_compat_map*(c: ptr xcb_connection_t;
#                             deviceSpec: xcb_xkb_device_spec_t;
#                             recomputeActions: uint8; truncateSI: uint8;
#                             groups: uint8; firstSI: uint16; nSI: uint16;
#                             si: ptr xcb_xkb_sym_interpret_t;
#                             groupMaps: ptr xcb_xkb_mod_def_t): xcb_void_cookie_t
# proc xcb_xkb_set_compat_map_si*(R: ptr xcb_xkb_set_compat_map_request_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_set_compat_map_si_length*(R: ptr xcb_xkb_set_compat_map_request_t): cint
# proc xcb_xkb_set_compat_map_si_iterator*(R: ptr xcb_xkb_set_compat_map_request_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_set_compat_map_group_maps*(R: ptr xcb_xkb_set_compat_map_request_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_set_compat_map_group_maps_length*(
#     R: ptr xcb_xkb_set_compat_map_request_t): cint
# proc xcb_xkb_set_compat_map_group_maps_iterator*(
#     R: ptr xcb_xkb_set_compat_map_request_t): xcb_xkb_mod_def_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_indicator_state*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_indicator_state_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_indicator_state_unchecked*(c: ptr xcb_connection_t;
#     deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_indicator_state_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_indicator_state_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_indicator_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_indicator_state_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_indicator_state_reply_t
# proc xcb_xkb_get_indicator_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_indicator_map*(c: ptr xcb_connection_t;
#                                deviceSpec: xcb_xkb_device_spec_t; which: uint32): xcb_xkb_get_indicator_map_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_indicator_map_unchecked*(c: ptr xcb_connection_t;
#     deviceSpec: xcb_xkb_device_spec_t; which: uint32): xcb_xkb_get_indicator_map_cookie_t
# proc xcb_xkb_get_indicator_map_maps*(R: ptr xcb_xkb_get_indicator_map_reply_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_get_indicator_map_maps_length*(
#     R: ptr xcb_xkb_get_indicator_map_reply_t): cint
# proc xcb_xkb_get_indicator_map_maps_iterator*(
#     R: ptr xcb_xkb_get_indicator_map_reply_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_indicator_map_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_indicator_map_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_indicator_map_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_indicator_map_reply_t
# proc xcb_xkb_set_indicator_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_indicator_map_checked*(c: ptr xcb_connection_t;
#                                        deviceSpec: xcb_xkb_device_spec_t;
#                                        which: uint32;
#                                        maps: ptr xcb_xkb_indicator_map_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_indicator_map*(c: ptr xcb_connection_t;
#                                deviceSpec: xcb_xkb_device_spec_t; which: uint32;
#                                maps: ptr xcb_xkb_indicator_map_t): xcb_void_cookie_t
# proc xcb_xkb_set_indicator_map_maps*(R: ptr xcb_xkb_set_indicator_map_request_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_set_indicator_map_maps_length*(
#     R: ptr xcb_xkb_set_indicator_map_request_t): cint
# proc xcb_xkb_set_indicator_map_maps_iterator*(
#     R: ptr xcb_xkb_set_indicator_map_request_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_named_indicator*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t;
#                                  ledClass: xcb_xkb_led_class_spec_t;
#                                  ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t): xcb_xkb_get_named_indicator_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_named_indicator_unchecked*(c: ptr xcb_connection_t;
#     deviceSpec: xcb_xkb_device_spec_t; ledClass: xcb_xkb_led_class_spec_t;
#     ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t): xcb_xkb_get_named_indicator_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_named_indicator_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_named_indicator_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_named_indicator_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_named_indicator_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_named_indicator_checked*(c: ptr xcb_connection_t;
#     deviceSpec: xcb_xkb_device_spec_t; ledClass: xcb_xkb_led_class_spec_t;
#     ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t; setState: uint8; on: uint8;
#     setMap: uint8; createMap: uint8; map_flags: uint8; map_whichGroups: uint8;
#     map_groups: uint8; map_whichMods: uint8; map_realMods: uint8;
#     map_vmods: uint16; map_ctrls: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_named_indicator*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t;
#                                  ledClass: xcb_xkb_led_class_spec_t;
#                                  ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t;
#                                  setState: uint8; on: uint8; setMap: uint8;
#                                  createMap: uint8; map_flags: uint8;
#                                  map_whichGroups: uint8; map_groups: uint8;
#                                  map_whichMods: uint8; map_realMods: uint8;
#                                  map_vmods: uint16; map_ctrls: uint32): xcb_void_cookie_t
# proc xcb_xkb_get_names_value_list_type_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_type_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_type_names_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_n_levels_per_type*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr uint8
# proc xcb_xkb_get_names_value_list_n_levels_per_type_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_n_levels_per_type_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_kt_level_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_kt_level_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_kt_level_names_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_indicator_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_indicator_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_indicator_names_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_virtual_mod_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_virtual_mod_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_virtual_mod_names_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_groups*(S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_groups_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_groups_end*(R: ptr xcb_xkb_get_names_reply_t;
#     S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_key_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_get_names_value_list_key_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_key_names_iterator*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_get_names_value_list_key_aliases*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_get_names_value_list_key_aliases_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_key_aliases_iterator*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_get_names_value_list_radio_group_names*(
#     S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_radio_group_names_length*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_radio_group_names_end*(
#     R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_serialize*(_buffer: ptr pointer; nTypes: uint8;
#     indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
#     nKeyAliases: uint8; nRadioGroups: uint8; which: uint32;
#     _aux: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_unpack*(_buffer: pointer; nTypes: uint8;
#     indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
#     nKeyAliases: uint8; nRadioGroups: uint8; which: uint32;
#     _aux: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_sizeof*(_buffer: pointer; nTypes: uint8;
#     indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
#     nKeyAliases: uint8; nRadioGroups: uint8; which: uint32): cint
# proc xcb_xkb_get_names_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_names*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
#                        which: uint32): xcb_xkb_get_names_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_names_unchecked*(c: ptr xcb_connection_t;
#                                  deviceSpec: xcb_xkb_device_spec_t;
#                                  which: uint32): xcb_xkb_get_names_cookie_t
# proc xcb_xkb_get_names_value_list*(R: ptr xcb_xkb_get_names_reply_t): pointer
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_names_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_names_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_names_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_names_reply_t
# proc xcb_xkb_set_names_values_type_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_type_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_type_names_end*(R: ptr xcb_xkb_set_names_request_t;
#     S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_n_levels_per_type*(
#     S: ptr xcb_xkb_set_names_values_t): ptr uint8
# proc xcb_xkb_set_names_values_n_levels_per_type_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_n_levels_per_type_end*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_kt_level_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_kt_level_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_kt_level_names_end*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_indicator_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_indicator_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_indicator_names_end*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_virtual_mod_names*(
#     S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_virtual_mod_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_virtual_mod_names_end*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_groups*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_groups_length*(R: ptr xcb_xkb_set_names_request_t;
#     S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_groups_end*(R: ptr xcb_xkb_set_names_request_t;
#     S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_key_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_set_names_values_key_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_key_names_iterator*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_set_names_values_key_aliases*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_set_names_values_key_aliases_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_key_aliases_iterator*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_set_names_values_radio_group_names*(
#     S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_radio_group_names_length*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_radio_group_names_end*(
#     R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_serialize*(_buffer: ptr pointer; nTypes: uint8;
#                                         indicators: uint32;
#                                         virtualMods: uint16;
#                                         groupNames: uint8; nKeys: uint8;
#                                         nKeyAliases: uint8;
#                                         nRadioGroups: uint8; which: uint32;
#                                         _aux: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_unpack*(_buffer: pointer; nTypes: uint8;
#                                      indicators: uint32; virtualMods: uint16;
#                                      groupNames: uint8; nKeys: uint8;
#                                      nKeyAliases: uint8; nRadioGroups: uint8;
#                                      which: uint32;
#                                      _aux: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_sizeof*(_buffer: pointer; nTypes: uint8;
#                                      indicators: uint32; virtualMods: uint16;
#                                      groupNames: uint8; nKeys: uint8;
#                                      nKeyAliases: uint8; nRadioGroups: uint8;
#                                      which: uint32): cint
# proc xcb_xkb_set_names_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_names_checked*(c: ptr xcb_connection_t;
#                                deviceSpec: xcb_xkb_device_spec_t;
#                                virtualMods: uint16; which: uint32;
#                                firstType: uint8; nTypes: uint8;
#                                firstKTLevelt: uint8; nKTLevels: uint8;
#                                indicators: uint32; groupNames: uint8;
#                                nRadioGroups: uint8; firstKey: xcb_keycode_t;
#                                nKeys: uint8; nKeyAliases: uint8;
#                                totalKTLevelNames: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_names*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
#                        virtualMods: uint16; which: uint32; firstType: uint8;
#                        nTypes: uint8; firstKTLevelt: uint8; nKTLevels: uint8;
#                        indicators: uint32; groupNames: uint8;
#                        nRadioGroups: uint8; firstKey: xcb_keycode_t;
#                        nKeys: uint8; nKeyAliases: uint8;
#                        totalKTLevelNames: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_names_aux_checked*(c: ptr xcb_connection_t;
#                                    deviceSpec: xcb_xkb_device_spec_t;
#                                    virtualMods: uint16; which: uint32;
#                                    firstType: uint8; nTypes: uint8;
#                                    firstKTLevelt: uint8; nKTLevels: uint8;
#                                    indicators: uint32; groupNames: uint8;
#                                    nRadioGroups: uint8; firstKey: xcb_keycode_t;
#                                    nKeys: uint8; nKeyAliases: uint8;
#                                    totalKTLevelNames: uint16;
#                                    values: ptr xcb_xkb_set_names_values_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_names_aux*(c: ptr xcb_connection_t;
#                            deviceSpec: xcb_xkb_device_spec_t;
#                            virtualMods: uint16; which: uint32;
#                            firstType: uint8; nTypes: uint8;
#                            firstKTLevelt: uint8; nKTLevels: uint8;
#                            indicators: uint32; groupNames: uint8;
#                            nRadioGroups: uint8; firstKey: xcb_keycode_t;
#                            nKeys: uint8; nKeyAliases: uint8;
#                            totalKTLevelNames: uint16;
#                            values: ptr xcb_xkb_set_names_values_t): xcb_void_cookie_t
# proc xcb_xkb_set_names_values*(R: ptr xcb_xkb_set_names_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_per_client_flags*(c: ptr xcb_connection_t;
#                               deviceSpec: xcb_xkb_device_spec_t; change: uint32;
#                               value: uint32; ctrlsToChange: uint32;
#                               autoCtrls: uint32; autoCtrlsValues: uint32): xcb_xkb_per_client_flags_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_per_client_flags_unchecked*(c: ptr xcb_connection_t;
#                                         deviceSpec: xcb_xkb_device_spec_t;
#                                         change: uint32; value: uint32;
#                                         ctrlsToChange: uint32;
#                                         autoCtrls: uint32;
#                                         autoCtrlsValues: uint32): xcb_xkb_per_client_flags_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_per_client_flags_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_per_client_flags_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_per_client_flags_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_per_client_flags_reply_t
# proc xcb_xkb_list_components_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_list_components*(c: ptr xcb_connection_t;
#                              deviceSpec: xcb_xkb_device_spec_t; maxNames: uint16): xcb_xkb_list_components_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_list_components_unchecked*(c: ptr xcb_connection_t;
#                                        deviceSpec: xcb_xkb_device_spec_t;
#                                        maxNames: uint16): xcb_xkb_list_components_cookie_t
# proc xcb_xkb_list_components_keymaps_length*(
#     R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_keymaps_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_keycodes_length*(
#     R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_keycodes_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_types_length*(R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_types_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_compat_maps_length*(
#     R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_compat_maps_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_symbols_length*(
#     R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_symbols_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_geometries_length*(
#     R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_geometries_iterator*(
#     R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_list_components_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_list_components_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_list_components_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_list_components_reply_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_type_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_sym_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_action_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_set_behavior_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_set_behavior_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_serialize*(_buffer: ptr pointer;
#     nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
#     totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
#     totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16;
#     _aux: ptr xcb_xkb_get_kbd_by_name_replies_types_map_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_unpack*(_buffer: pointer;
#     nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
#     totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
#     totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16;
#     _aux: ptr xcb_xkb_get_kbd_by_name_replies_types_map_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_sizeof*(_buffer: pointer;
#     nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
#     totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
#     totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize*(
#     _buffer: ptr pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
#     groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
#     which: uint32;
#     _aux: ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack*(
#     _buffer: pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
#     groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
#     which: uint32;
#     _aux: ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof*(
#     _buffer: pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
#     groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
#     which: uint32): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_mod_def_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps*(
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator*(
#     R: ptr xcb_xkb_get_kbd_by_name_reply_t;
#     S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_indicator_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list*(
#     R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
# proc xcb_xkb_get_kbd_by_name_replies_geometry_label_font*(
#     R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_counted_string_16_t
# proc xcb_xkb_get_kbd_by_name_replies_serialize*(_buffer: ptr pointer;
#     reported: uint16; _aux: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_unpack*(_buffer: pointer; reported: uint16;
#     _aux: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_sizeof*(_buffer: pointer; reported: uint16): cint
# proc xcb_xkb_get_kbd_by_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_kbd_by_name*(c: ptr xcb_connection_t;
#                              deviceSpec: xcb_xkb_device_spec_t; need: uint16;
#                              want: uint16; load: uint8): xcb_xkb_get_kbd_by_name_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_kbd_by_name_unchecked*(c: ptr xcb_connection_t;
#                                        deviceSpec: xcb_xkb_device_spec_t;
#                                        need: uint16; want: uint16; load: uint8): xcb_xkb_get_kbd_by_name_cookie_t
# proc xcb_xkb_get_kbd_by_name_replies*(R: ptr xcb_xkb_get_kbd_by_name_reply_t): pointer
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_kbd_by_name_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_kbd_by_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_kbd_by_name_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_kbd_by_name_reply_t
# proc xcb_xkb_get_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_get_device_info*(c: ptr xcb_connection_t;
#                              deviceSpec: xcb_xkb_device_spec_t; wanted: uint16;
#                              allButtons: uint8; firstButton: uint8;
#                              nButtons: uint8;
#                              ledClass: xcb_xkb_led_class_spec_t;
#                              ledID: xcb_xkb_id_spec_t): xcb_xkb_get_device_info_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_get_device_info_unchecked*(c: ptr xcb_connection_t;
#                                        deviceSpec: xcb_xkb_device_spec_t;
#                                        wanted: uint16; allButtons: uint8;
#                                        firstButton: uint8; nButtons: uint8;
#                                        ledClass: xcb_xkb_led_class_spec_t;
#                                        ledID: xcb_xkb_id_spec_t): xcb_xkb_get_device_info_cookie_t
# proc xcb_xkb_get_device_info_name*(R: ptr xcb_xkb_get_device_info_reply_t): ptr xcb_xkb_string8_t
# proc xcb_xkb_get_device_info_name_length*(R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_name_end*(R: ptr xcb_xkb_get_device_info_reply_t): xcb_generic_iterator_t
# proc xcb_xkb_get_device_info_btn_actions*(R: ptr xcb_xkb_get_device_info_reply_t): ptr xcb_xkb_action_t
# proc xcb_xkb_get_device_info_btn_actions_length*(
#     R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_btn_actions_iterator*(
#     R: ptr xcb_xkb_get_device_info_reply_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_get_device_info_leds_length*(R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_leds_iterator*(
#     R: ptr xcb_xkb_get_device_info_reply_t): xcb_xkb_device_led_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_get_device_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_get_device_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_device_info_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_device_info_reply_t
# proc xcb_xkb_set_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xkb_set_device_info_checked*(c: ptr xcb_connection_t;
#                                      deviceSpec: xcb_xkb_device_spec_t;
#                                      firstBtn: uint8; nBtns: uint8;
#                                      change: uint16; nDeviceLedFBs: uint16;
#                                      btnActions: ptr xcb_xkb_action_t;
#                                      leds: ptr xcb_xkb_device_led_info_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_device_info*(c: ptr xcb_connection_t;
#                              deviceSpec: xcb_xkb_device_spec_t; firstBtn: uint8;
#                              nBtns: uint8; change: uint16;
#                              nDeviceLedFBs: uint16;
#                              btnActions: ptr xcb_xkb_action_t;
#                              leds: ptr xcb_xkb_device_led_info_t): xcb_void_cookie_t
# proc xcb_xkb_set_device_info_btn_actions*(
#     R: ptr xcb_xkb_set_device_info_request_t): ptr xcb_xkb_action_t
# proc xcb_xkb_set_device_info_btn_actions_length*(
#     R: ptr xcb_xkb_set_device_info_request_t): cint
# proc xcb_xkb_set_device_info_btn_actions_iterator*(
#     R: ptr xcb_xkb_set_device_info_request_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_set_device_info_leds_length*(
#     R: ptr xcb_xkb_set_device_info_request_t): cint
# proc xcb_xkb_set_device_info_leds_iterator*(
#     R: ptr xcb_xkb_set_device_info_request_t): xcb_xkb_device_led_info_iterator_t
# proc xcb_xkb_set_debugging_flags_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xkb_set_debugging_flags*(c: ptr xcb_connection_t; msgLength: uint16;
#                                  affectFlags: uint32; flags: uint32;
#                                  affectCtrls: uint32; ctrls: uint32;
#                                  message: ptr xcb_xkb_string8_t): xcb_xkb_set_debugging_flags_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xkb_set_debugging_flags_unchecked*(c: ptr xcb_connection_t;
#     msgLength: uint16; affectFlags: uint32; flags: uint32;
#     affectCtrls: uint32; ctrls: uint32; message: ptr xcb_xkb_string8_t): xcb_xkb_set_debugging_flags_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xkb_set_debugging_flags_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xkb_set_debugging_flags_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_set_debugging_flags_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_set_debugging_flags_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xprint.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_XPrint_API XCB XPrint API
# ##  @brief XPrint XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_XPRINT_MAJOR_VERSION* = 1
#   XCB_XPRINT_MINOR_VERSION* = 0

# var xcb_x_print_id*: xcb_extension_t

# type
#   xcb_x_print_string8_t* = char

# ## *
# ##  @brief xcb_x_print_string8_iterator_t
# ##

# type
#   xcb_x_print_string8_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_x_print_string8_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_x_print_printer_t
# ##

# type
#   xcb_x_print_printer_t* {.bycopy.} = object
#     nameLen*: uint32
#     descLen*: uint32


# ## *
# ##  @brief xcb_x_print_printer_iterator_t
# ##

# type
#   xcb_x_print_printer_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_x_print_printer_t
#     rem*: cint
#     index*: cint

#   xcb_x_print_pcontext_t* = uint32

# ## *
# ##  @brief xcb_x_print_pcontext_iterator_t
# ##

# type
#   xcb_x_print_pcontext_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_x_print_pcontext_t
#     rem*: cint
#     index*: cint

#   xcb_x_print_get_doc_t* = enum
#     XCB_X_PRINT_GET_DOC_FINISHED = 0, XCB_X_PRINT_GET_DOC_SECOND_CONSUMER = 1
#   xcb_x_print_ev_mask_t* = enum
#     XCB_X_PRINT_EV_MASK_NO_EVENT_MASK = 0, XCB_X_PRINT_EV_MASK_PRINT_MASK = 1,
#     XCB_X_PRINT_EV_MASK_ATTRIBUTE_MASK = 2
#   xcb_x_print_detail_t* = enum
#     XCB_X_PRINT_DETAIL_START_JOB_NOTIFY = 1, XCB_X_PRINT_DETAIL_END_JOB_NOTIFY = 2,
#     XCB_X_PRINT_DETAIL_START_DOC_NOTIFY = 3, XCB_X_PRINT_DETAIL_END_DOC_NOTIFY = 4,
#     XCB_X_PRINT_DETAIL_START_PAGE_NOTIFY = 5,
#     XCB_X_PRINT_DETAIL_END_PAGE_NOTIFY = 6
#   xcb_x_print_attr_t* = enum
#     XCB_X_PRINT_ATTR_JOB_ATTR = 1, XCB_X_PRINT_ATTR_DOC_ATTR = 2,
#     XCB_X_PRINT_ATTR_PAGE_ATTR = 3, XCB_X_PRINT_ATTR_PRINTER_ATTR = 4,
#     XCB_X_PRINT_ATTR_SERVER_ATTR = 5, XCB_X_PRINT_ATTR_MEDIUM_ATTR = 6,
#     XCB_X_PRINT_ATTR_SPOOLER_ATTR = 7





# ## *
# ##  @brief xcb_x_print_print_query_version_cookie_t
# ##

# type
#   xcb_x_print_print_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_query_version.

# const
#   XCB_X_PRINT_PRINT_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_x_print_print_query_version_request_t
# ##

# type
#   xcb_x_print_print_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_x_print_print_query_version_reply_t
# ##

# type
#   xcb_x_print_print_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major_version*: uint16
#     minor_version*: uint16


# ## *
# ##  @brief xcb_x_print_print_get_printer_list_cookie_t
# ##

# type
#   xcb_x_print_print_get_printer_list_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_printer_list.

# const
#   XCB_X_PRINT_PRINT_GET_PRINTER_LIST* = 1

# ## *
# ##  @brief xcb_x_print_print_get_printer_list_request_t
# ##

# type
#   xcb_x_print_print_get_printer_list_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     printerNameLen*: uint32
#     localeLen*: uint32


# ## *
# ##  @brief xcb_x_print_print_get_printer_list_reply_t
# ##

# type
#   xcb_x_print_print_get_printer_list_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     listCount*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_x_print_print_rehash_printer_list.

# const
#   XCB_X_PRINT_PRINT_REHASH_PRINTER_LIST* = 20

# ## *
# ##  @brief xcb_x_print_print_rehash_printer_list_request_t
# ##

# type
#   xcb_x_print_print_rehash_printer_list_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## * Opcode for xcb_x_print_create_context.

# const
#   XCB_X_PRINT_CREATE_CONTEXT* = 2

# ## *
# ##  @brief xcb_x_print_create_context_request_t
# ##

# type
#   xcb_x_print_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_id*: uint32
#     printerNameLen*: uint32
#     localeLen*: uint32


# ## * Opcode for xcb_x_print_print_set_context.

# const
#   XCB_X_PRINT_PRINT_SET_CONTEXT* = 3

# ## *
# ##  @brief xcb_x_print_print_set_context_request_t
# ##

# type
#   xcb_x_print_print_set_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: uint32


# ## *
# ##  @brief xcb_x_print_print_get_context_cookie_t
# ##

# type
#   xcb_x_print_print_get_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_context.

# const
#   XCB_X_PRINT_PRINT_GET_CONTEXT* = 4

# ## *
# ##  @brief xcb_x_print_print_get_context_request_t
# ##

# type
#   xcb_x_print_print_get_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_x_print_print_get_context_reply_t
# ##

# type
#   xcb_x_print_print_get_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context*: uint32


# ## * Opcode for xcb_x_print_print_destroy_context.

# const
#   XCB_X_PRINT_PRINT_DESTROY_CONTEXT* = 5

# ## *
# ##  @brief xcb_x_print_print_destroy_context_request_t
# ##

# type
#   xcb_x_print_print_destroy_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: uint32


# ## *
# ##  @brief xcb_x_print_print_get_screen_of_context_cookie_t
# ##

# type
#   xcb_x_print_print_get_screen_of_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_screen_of_context.

# const
#   XCB_X_PRINT_PRINT_GET_SCREEN_OF_CONTEXT* = 6

# ## *
# ##  @brief xcb_x_print_print_get_screen_of_context_request_t
# ##

# type
#   xcb_x_print_print_get_screen_of_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_x_print_print_get_screen_of_context_reply_t
# ##

# type
#   xcb_x_print_print_get_screen_of_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     root*: xcb_window_t


# ## * Opcode for xcb_x_print_print_start_job.

# const
#   XCB_X_PRINT_PRINT_START_JOB* = 7

# ## *
# ##  @brief xcb_x_print_print_start_job_request_t
# ##

# type
#   xcb_x_print_print_start_job_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     output_mode*: uint8


# ## * Opcode for xcb_x_print_print_end_job.

# const
#   XCB_X_PRINT_PRINT_END_JOB* = 8

# ## *
# ##  @brief xcb_x_print_print_end_job_request_t
# ##

# type
#   xcb_x_print_print_end_job_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cancel*: uint8


# ## * Opcode for xcb_x_print_print_start_doc.

# const
#   XCB_X_PRINT_PRINT_START_DOC* = 9

# ## *
# ##  @brief xcb_x_print_print_start_doc_request_t
# ##

# type
#   xcb_x_print_print_start_doc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     driver_mode*: uint8


# ## * Opcode for xcb_x_print_print_end_doc.

# const
#   XCB_X_PRINT_PRINT_END_DOC* = 10

# ## *
# ##  @brief xcb_x_print_print_end_doc_request_t
# ##

# type
#   xcb_x_print_print_end_doc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cancel*: uint8


# ## * Opcode for xcb_x_print_print_put_document_data.

# const
#   XCB_X_PRINT_PRINT_PUT_DOCUMENT_DATA* = 11

# ## *
# ##  @brief xcb_x_print_print_put_document_data_request_t
# ##

# type
#   xcb_x_print_print_put_document_data_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     len_data*: uint32
#     len_fmt*: uint16
#     len_options*: uint16


# ## *
# ##  @brief xcb_x_print_print_get_document_data_cookie_t
# ##

# type
#   xcb_x_print_print_get_document_data_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_document_data.

# const
#   XCB_X_PRINT_PRINT_GET_DOCUMENT_DATA* = 12

# ## *
# ##  @brief xcb_x_print_print_get_document_data_request_t
# ##

# type
#   xcb_x_print_print_get_document_data_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     max_bytes*: uint32


# ## *
# ##  @brief xcb_x_print_print_get_document_data_reply_t
# ##

# type
#   xcb_x_print_print_get_document_data_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     status_code*: uint32
#     finished_flag*: uint32
#     dataLen*: uint32
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_x_print_print_start_page.

# const
#   XCB_X_PRINT_PRINT_START_PAGE* = 13

# ## *
# ##  @brief xcb_x_print_print_start_page_request_t
# ##

# type
#   xcb_x_print_print_start_page_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_x_print_print_end_page.

# const
#   XCB_X_PRINT_PRINT_END_PAGE* = 14

# ## *
# ##  @brief xcb_x_print_print_end_page_request_t
# ##

# type
#   xcb_x_print_print_end_page_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     cancel*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_x_print_print_select_input.

# const
#   XCB_X_PRINT_PRINT_SELECT_INPUT* = 15

# ## *
# ##  @brief xcb_x_print_print_select_input_request_t
# ##

# type
#   xcb_x_print_print_select_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     event_mask*: uint32


# ## *
# ##  @brief xcb_x_print_print_input_selected_cookie_t
# ##

# type
#   xcb_x_print_print_input_selected_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_input_selected.

# const
#   XCB_X_PRINT_PRINT_INPUT_SELECTED* = 16

# ## *
# ##  @brief xcb_x_print_print_input_selected_request_t
# ##

# type
#   xcb_x_print_print_input_selected_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t


# ## *
# ##  @brief xcb_x_print_print_input_selected_reply_t
# ##

# type
#   xcb_x_print_print_input_selected_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_mask*: uint32
#     all_events_mask*: uint32


# ## *
# ##  @brief xcb_x_print_print_get_attributes_cookie_t
# ##

# type
#   xcb_x_print_print_get_attributes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_attributes.

# const
#   XCB_X_PRINT_PRINT_GET_ATTRIBUTES* = 17

# ## *
# ##  @brief xcb_x_print_print_get_attributes_request_t
# ##

# type
#   xcb_x_print_print_get_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     pool*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_x_print_print_get_attributes_reply_t
# ##

# type
#   xcb_x_print_print_get_attributes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     stringLen*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_x_print_print_get_one_attributes_cookie_t
# ##

# type
#   xcb_x_print_print_get_one_attributes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_one_attributes.

# const
#   XCB_X_PRINT_PRINT_GET_ONE_ATTRIBUTES* = 19

# ## *
# ##  @brief xcb_x_print_print_get_one_attributes_request_t
# ##

# type
#   xcb_x_print_print_get_one_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     nameLen*: uint32
#     pool*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_x_print_print_get_one_attributes_reply_t
# ##

# type
#   xcb_x_print_print_get_one_attributes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     valueLen*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_x_print_print_set_attributes.

# const
#   XCB_X_PRINT_PRINT_SET_ATTRIBUTES* = 18

# ## *
# ##  @brief xcb_x_print_print_set_attributes_request_t
# ##

# type
#   xcb_x_print_print_set_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     stringLen*: uint32
#     pool*: uint8
#     rule*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_x_print_print_get_page_dimensions_cookie_t
# ##

# type
#   xcb_x_print_print_get_page_dimensions_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_page_dimensions.

# const
#   XCB_X_PRINT_PRINT_GET_PAGE_DIMENSIONS* = 21

# ## *
# ##  @brief xcb_x_print_print_get_page_dimensions_request_t
# ##

# type
#   xcb_x_print_print_get_page_dimensions_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t


# ## *
# ##  @brief xcb_x_print_print_get_page_dimensions_reply_t
# ##

# type
#   xcb_x_print_print_get_page_dimensions_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint16
#     height*: uint16
#     offset_x*: uint16
#     offset_y*: uint16
#     reproducible_width*: uint16
#     reproducible_height*: uint16


# ## *
# ##  @brief xcb_x_print_print_query_screens_cookie_t
# ##

# type
#   xcb_x_print_print_query_screens_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_query_screens.

# const
#   XCB_X_PRINT_PRINT_QUERY_SCREENS* = 22

# ## *
# ##  @brief xcb_x_print_print_query_screens_request_t
# ##

# type
#   xcb_x_print_print_query_screens_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_x_print_print_query_screens_reply_t
# ##

# type
#   xcb_x_print_print_query_screens_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     listCount*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_x_print_print_set_image_resolution_cookie_t
# ##

# type
#   xcb_x_print_print_set_image_resolution_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_set_image_resolution.

# const
#   XCB_X_PRINT_PRINT_SET_IMAGE_RESOLUTION* = 23

# ## *
# ##  @brief xcb_x_print_print_set_image_resolution_request_t
# ##

# type
#   xcb_x_print_print_set_image_resolution_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t
#     image_resolution*: uint16


# ## *
# ##  @brief xcb_x_print_print_set_image_resolution_reply_t
# ##

# type
#   xcb_x_print_print_set_image_resolution_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32
#     previous_resolutions*: uint16


# ## *
# ##  @brief xcb_x_print_print_get_image_resolution_cookie_t
# ##

# type
#   xcb_x_print_print_get_image_resolution_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_x_print_print_get_image_resolution.

# const
#   XCB_X_PRINT_PRINT_GET_IMAGE_RESOLUTION* = 24

# ## *
# ##  @brief xcb_x_print_print_get_image_resolution_request_t
# ##

# type
#   xcb_x_print_print_get_image_resolution_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context*: xcb_x_print_pcontext_t


# ## *
# ##  @brief xcb_x_print_print_get_image_resolution_reply_t
# ##

# type
#   xcb_x_print_print_get_image_resolution_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     image_resolution*: uint16


# ## * Opcode for xcb_x_print_notify.

# const
#   XCB_X_PRINT_NOTIFY* = 0

# ## *
# ##  @brief xcb_x_print_notify_event_t
# ##

# type
#   xcb_x_print_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     context*: xcb_x_print_pcontext_t
#     cancel*: uint8


# ## * Opcode for xcb_x_print_attribut_notify.

# const
#   XCB_X_PRINT_ATTRIBUT_NOTIFY* = 1

# ## *
# ##  @brief xcb_x_print_attribut_notify_event_t
# ##

# type
#   xcb_x_print_attribut_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     context*: xcb_x_print_pcontext_t


# ## * Opcode for xcb_x_print_bad_context.

# const
#   XCB_X_PRINT_BAD_CONTEXT* = 0

# ## *
# ##  @brief xcb_x_print_bad_context_error_t
# ##

# type
#   xcb_x_print_bad_context_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_x_print_bad_sequence.

# const
#   XCB_X_PRINT_BAD_SEQUENCE* = 1

# ## *
# ##  @brief xcb_x_print_bad_sequence_error_t
# ##

# type
#   xcb_x_print_bad_sequence_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_x_print_string8_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_x_print_string8_t)
# ##

# proc xcb_x_print_string8_next*(i: ptr xcb_x_print_string8_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_x_print_string8_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_x_print_string8_end*(i: xcb_x_print_string8_iterator_t): xcb_generic_iterator_t
# proc xcb_x_print_printer_serialize*(_buffer: ptr pointer;
#                                    _aux: ptr xcb_x_print_printer_t;
#                                    name: ptr xcb_x_print_string8_t;
#                                    description: ptr xcb_x_print_string8_t): cint
# proc xcb_x_print_printer_unserialize*(_buffer: pointer;
#                                      _aux: ptr ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_sizeof*(_buffer: pointer): cint
# proc xcb_x_print_printer_name*(R: ptr xcb_x_print_printer_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_printer_name_length*(R: ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_name_end*(R: ptr xcb_x_print_printer_t): xcb_generic_iterator_t
# proc xcb_x_print_printer_description*(R: ptr xcb_x_print_printer_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_printer_description_length*(R: ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_description_end*(R: ptr xcb_x_print_printer_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_x_print_printer_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_x_print_printer_t)
# ##

# proc xcb_x_print_printer_next*(i: ptr xcb_x_print_printer_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_x_print_printer_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_x_print_printer_end*(i: xcb_x_print_printer_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_x_print_pcontext_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_x_print_pcontext_t)
# ##

# proc xcb_x_print_pcontext_next*(i: ptr xcb_x_print_pcontext_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_x_print_pcontext_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_x_print_pcontext_end*(i: xcb_x_print_pcontext_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_query_version*(c: ptr xcb_connection_t): xcb_x_print_print_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_query_version_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_query_version_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_query_version_reply_t
# proc xcb_x_print_print_get_printer_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_printer_list*(c: ptr xcb_connection_t;
#                                         printerNameLen: uint32;
#                                         localeLen: uint32; printer_name: ptr xcb_x_print_string8_t;
#                                         locale: ptr xcb_x_print_string8_t): xcb_x_print_print_get_printer_list_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_printer_list_unchecked*(c: ptr xcb_connection_t;
#     printerNameLen: uint32; localeLen: uint32;
#     printer_name: ptr xcb_x_print_string8_t; locale: ptr xcb_x_print_string8_t): xcb_x_print_print_get_printer_list_cookie_t
# proc xcb_x_print_print_get_printer_list_printers_length*(
#     R: ptr xcb_x_print_print_get_printer_list_reply_t): cint
# proc xcb_x_print_print_get_printer_list_printers_iterator*(
#     R: ptr xcb_x_print_print_get_printer_list_reply_t): xcb_x_print_printer_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_printer_list_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_printer_list_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_printer_list_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_printer_list_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_rehash_printer_list_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_rehash_printer_list*(c: ptr xcb_connection_t): xcb_void_cookie_t
# proc xcb_x_print_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_create_context_checked*(c: ptr xcb_connection_t;
#                                         context_id: uint32;
#                                         printerNameLen: uint32;
#                                         localeLen: uint32;
#                                         printerName: ptr xcb_x_print_string8_t;
#                                         locale: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_create_context*(c: ptr xcb_connection_t; context_id: uint32;
#                                 printerNameLen: uint32; localeLen: uint32;
#                                 printerName: ptr xcb_x_print_string8_t;
#                                 locale: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_create_context_printer_name*(
#     R: ptr xcb_x_print_create_context_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_create_context_printer_name_length*(
#     R: ptr xcb_x_print_create_context_request_t): cint
# proc xcb_x_print_create_context_printer_name_end*(
#     R: ptr xcb_x_print_create_context_request_t): xcb_generic_iterator_t
# proc xcb_x_print_create_context_locale*(R: ptr xcb_x_print_create_context_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_create_context_locale_length*(
#     R: ptr xcb_x_print_create_context_request_t): cint
# proc xcb_x_print_create_context_locale_end*(
#     R: ptr xcb_x_print_create_context_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_set_context_checked*(c: ptr xcb_connection_t;
#     context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_set_context*(c: ptr xcb_connection_t; context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_context*(c: ptr xcb_connection_t): xcb_x_print_print_get_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_context_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_get_context_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_context_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_context_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_destroy_context_checked*(c: ptr xcb_connection_t;
#     context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_destroy_context*(c: ptr xcb_connection_t; context: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_screen_of_context*(c: ptr xcb_connection_t): xcb_x_print_print_get_screen_of_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_screen_of_context_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_get_screen_of_context_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_screen_of_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_screen_of_context_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_screen_of_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_screen_of_context_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_start_job_checked*(c: ptr xcb_connection_t;
#     output_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_start_job*(c: ptr xcb_connection_t; output_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_end_job_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_end_job*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_start_doc_checked*(c: ptr xcb_connection_t;
#     driver_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_start_doc*(c: ptr xcb_connection_t; driver_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_end_doc_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_end_doc*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# proc xcb_x_print_print_put_document_data_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_put_document_data_checked*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; len_data: uint32; len_fmt: uint16;
#     len_options: uint16; data: ptr uint8; doc_format: ptr xcb_x_print_string8_t;
#     options: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_put_document_data*(c: ptr xcb_connection_t;
#     drawable: xcb_drawable_t; len_data: uint32; len_fmt: uint16;
#     len_options: uint16; data: ptr uint8; doc_format: ptr xcb_x_print_string8_t;
#     options: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_print_put_document_data_data*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): ptr uint8
# proc xcb_x_print_print_put_document_data_data_length*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_data_end*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_put_document_data_doc_format*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_put_document_data_doc_format_length*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_doc_format_end*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_put_document_data_options*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_put_document_data_options_length*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_options_end*(
#     R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_get_document_data_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_document_data*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; max_bytes: uint32): xcb_x_print_print_get_document_data_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_document_data_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; max_bytes: uint32): xcb_x_print_print_get_document_data_cookie_t
# proc xcb_x_print_print_get_document_data_data*(
#     R: ptr xcb_x_print_print_get_document_data_reply_t): ptr uint8
# proc xcb_x_print_print_get_document_data_data_length*(
#     R: ptr xcb_x_print_print_get_document_data_reply_t): cint
# proc xcb_x_print_print_get_document_data_data_end*(
#     R: ptr xcb_x_print_print_get_document_data_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_document_data_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_document_data_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_document_data_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_document_data_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_start_page_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_start_page*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_end_page_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_end_page*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_select_input_checked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_select_input*(c: ptr xcb_connection_t;
#                                     context: xcb_x_print_pcontext_t;
#                                     event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_input_selected*(c: ptr xcb_connection_t;
#                                       context: xcb_x_print_pcontext_t): xcb_x_print_print_input_selected_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_input_selected_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t): xcb_x_print_print_input_selected_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_input_selected_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_input_selected_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_input_selected_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_input_selected_reply_t
# proc xcb_x_print_print_get_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_attributes*(c: ptr xcb_connection_t;
#                                       context: xcb_x_print_pcontext_t;
#                                       pool: uint8): xcb_x_print_print_get_attributes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_attributes_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; pool: uint8): xcb_x_print_print_get_attributes_cookie_t
# proc xcb_x_print_print_get_attributes_attributes*(
#     R: ptr xcb_x_print_print_get_attributes_reply_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_get_attributes_attributes_length*(
#     R: ptr xcb_x_print_print_get_attributes_reply_t): cint
# proc xcb_x_print_print_get_attributes_attributes_end*(
#     R: ptr xcb_x_print_print_get_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_attributes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_attributes_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_attributes_reply_t
# proc xcb_x_print_print_get_one_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_one_attributes*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; nameLen: uint32; pool: uint8;
#     name: ptr xcb_x_print_string8_t): xcb_x_print_print_get_one_attributes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_one_attributes_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; nameLen: uint32; pool: uint8;
#     name: ptr xcb_x_print_string8_t): xcb_x_print_print_get_one_attributes_cookie_t
# proc xcb_x_print_print_get_one_attributes_value*(
#     R: ptr xcb_x_print_print_get_one_attributes_reply_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_get_one_attributes_value_length*(
#     R: ptr xcb_x_print_print_get_one_attributes_reply_t): cint
# proc xcb_x_print_print_get_one_attributes_value_end*(
#     R: ptr xcb_x_print_print_get_one_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_one_attributes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_one_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_one_attributes_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_one_attributes_reply_t
# proc xcb_x_print_print_set_attributes_sizeof*(_buffer: pointer;
#     attributes_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_x_print_print_set_attributes_checked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; stringLen: uint32; pool: uint8;
#     rule: uint8; attributes_len: uint32; attributes: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_set_attributes*(c: ptr xcb_connection_t;
#                                       context: xcb_x_print_pcontext_t;
#                                       stringLen: uint32; pool: uint8;
#                                       rule: uint8; attributes_len: uint32;
#                                       attributes: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_print_set_attributes_attributes*(
#     R: ptr xcb_x_print_print_set_attributes_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_set_attributes_attributes_length*(
#     R: ptr xcb_x_print_print_set_attributes_request_t): cint
# proc xcb_x_print_print_set_attributes_attributes_end*(
#     R: ptr xcb_x_print_print_set_attributes_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_page_dimensions*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t): xcb_x_print_print_get_page_dimensions_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_page_dimensions_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t): xcb_x_print_print_get_page_dimensions_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_page_dimensions_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_page_dimensions_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_page_dimensions_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_page_dimensions_reply_t
# proc xcb_x_print_print_query_screens_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_query_screens*(c: ptr xcb_connection_t): xcb_x_print_print_query_screens_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_query_screens_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_query_screens_cookie_t
# proc xcb_x_print_print_query_screens_roots*(
#     R: ptr xcb_x_print_print_query_screens_reply_t): ptr xcb_window_t
# proc xcb_x_print_print_query_screens_roots_length*(
#     R: ptr xcb_x_print_print_query_screens_reply_t): cint
# proc xcb_x_print_print_query_screens_roots_end*(
#     R: ptr xcb_x_print_print_query_screens_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_query_screens_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_query_screens_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_query_screens_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_query_screens_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_set_image_resolution*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; image_resolution: uint16): xcb_x_print_print_set_image_resolution_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_set_image_resolution_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t; image_resolution: uint16): xcb_x_print_print_set_image_resolution_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_set_image_resolution_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_set_image_resolution_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_set_image_resolution_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_set_image_resolution_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_x_print_print_get_image_resolution*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t): xcb_x_print_print_get_image_resolution_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_x_print_print_get_image_resolution_unchecked*(c: ptr xcb_connection_t;
#     context: xcb_x_print_pcontext_t): xcb_x_print_print_get_image_resolution_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_x_print_print_get_image_resolution_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_x_print_print_get_image_resolution_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_image_resolution_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_image_resolution_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xproto.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB__API XCB  API
# ##  @brief  XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb

# ## *
# ##  @brief xcb_char2b_t
# ##

# type
#   xcb_char2b_t* {.bycopy.} = object
#     byte1*: uint8
#     byte2*: uint8


# ## *
# ##  @brief xcb_char2b_iterator_t
# ##

# type
#   xcb_char2b_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_char2b_t
#     rem*: cint
#     index*: cint

#   xcb_window_t* = uint32

# ## *
# ##  @brief xcb_window_iterator_t
# ##

# type
#   xcb_window_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_window_t
#     rem*: cint
#     index*: cint

#   xcb_pixmap_t* = uint32

# ## *
# ##  @brief xcb_pixmap_iterator_t
# ##

# type
#   xcb_pixmap_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_pixmap_t
#     rem*: cint
#     index*: cint

#   xcb_cursor_t* = uint32

# ## *
# ##  @brief xcb_cursor_iterator_t
# ##

# type
#   xcb_cursor_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_cursor_t
#     rem*: cint
#     index*: cint

#   xcb_font_t* = uint32

# ## *
# ##  @brief xcb_font_iterator_t
# ##

# type
#   xcb_font_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_font_t
#     rem*: cint
#     index*: cint

#   xcb_gcontext_t* = uint32

# ## *
# ##  @brief xcb_gcontext_iterator_t
# ##

# type
#   xcb_gcontext_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_gcontext_t
#     rem*: cint
#     index*: cint

#   xcb_colormap_t* = uint32

# ## *
# ##  @brief xcb_colormap_iterator_t
# ##

# type
#   xcb_colormap_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_colormap_t
#     rem*: cint
#     index*: cint

#   xcb_atom_t* = uint32

# ## *
# ##  @brief xcb_atom_iterator_t
# ##

# type
#   xcb_atom_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_atom_t
#     rem*: cint
#     index*: cint

#   xcb_drawable_t* = uint32

# ## *
# ##  @brief xcb_drawable_iterator_t
# ##

# type
#   xcb_drawable_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_drawable_t
#     rem*: cint
#     index*: cint

#   xcb_fontable_t* = uint32

# ## *
# ##  @brief xcb_fontable_iterator_t
# ##

# type
#   xcb_fontable_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_fontable_t
#     rem*: cint
#     index*: cint

#   xcb_bool32_t* = uint32

# ## *
# ##  @brief xcb_bool32_iterator_t
# ##

# type
#   xcb_bool32_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_bool32_t
#     rem*: cint
#     index*: cint

#   xcb_visualid_t* = uint32

# ## *
# ##  @brief xcb_visualid_iterator_t
# ##

# type
#   xcb_visualid_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_visualid_t
#     rem*: cint
#     index*: cint

#   xcb_timestamp_t* = uint32

# ## *
# ##  @brief xcb_timestamp_iterator_t
# ##

# type
#   xcb_timestamp_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_timestamp_t
#     rem*: cint
#     index*: cint

#   xcb_keysym_t* = uint32

# ## *
# ##  @brief xcb_keysym_iterator_t
# ##

# type
#   xcb_keysym_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_keysym_t
#     rem*: cint
#     index*: cint

#   xcb_keycode_t* = uint8

# ## *
# ##  @brief xcb_keycode_iterator_t
# ##

# type
#   xcb_keycode_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_keycode_t
#     rem*: cint
#     index*: cint

#   xcb_keycode32_t* = uint32

# ## *
# ##  @brief xcb_keycode32_iterator_t
# ##

# type
#   xcb_keycode32_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_keycode32_t
#     rem*: cint
#     index*: cint

#   xcb_button_t* = uint8

# ## *
# ##  @brief xcb_button_iterator_t
# ##

# type
#   xcb_button_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_button_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_point_t
# ##

# type
#   xcb_point_t* {.bycopy.} = object
#     x*: int16
#     y*: int16


# ## *
# ##  @brief xcb_point_iterator_t
# ##

# type
#   xcb_point_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_point_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_rectangle_t
# ##

# type
#   xcb_rectangle_t* {.bycopy.} = object
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_rectangle_iterator_t
# ##

# type
#   xcb_rectangle_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_rectangle_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_arc_t
# ##

# type
#   xcb_arc_t* {.bycopy.} = object
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     angle1*: int16
#     angle2*: int16


# ## *
# ##  @brief xcb_arc_iterator_t
# ##

# type
#   xcb_arc_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_arc_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_format_t
# ##

# type
#   xcb_format_t* {.bycopy.} = object
#     depth*: uint8
#     bits_per_pixel*: uint8
#     scanline_pad*: uint8
#     pad0*: array[5, uint8]


# ## *
# ##  @brief xcb_format_iterator_t
# ##

# type
#   xcb_format_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_format_t
#     rem*: cint
#     index*: cint

#   xcb_visual_class_t* = enum
#     XCB_VISUAL_CLASS_STATIC_GRAY = 0, XCB_VISUAL_CLASS_GRAY_SCALE = 1,
#     XCB_VISUAL_CLASS_STATIC_COLOR = 2, XCB_VISUAL_CLASS_PSEUDO_COLOR = 3,
#     XCB_VISUAL_CLASS_TRUE_COLOR = 4, XCB_VISUAL_CLASS_DIRECT_COLOR = 5


# ## *
# ##  @brief xcb_visualtype_t
# ##

# type
#   xcb_visualtype_t* {.bycopy.} = object
#     visual_id*: xcb_visualid_t
#     _class*: uint8
#     bits_per_rgb_value*: uint8
#     colormap_entries*: uint16
#     red_mask*: uint32
#     green_mask*: uint32
#     blue_mask*: uint32
#     pad0*: array[4, uint8]


# ## *
# ##  @brief xcb_visualtype_iterator_t
# ##

# type
#   xcb_visualtype_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_visualtype_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_depth_t
# ##

# type
#   xcb_depth_t* {.bycopy.} = object
#     depth*: uint8
#     pad0*: uint8
#     visuals_len*: uint16
#     pad1*: array[4, uint8]


# ## *
# ##  @brief xcb_depth_iterator_t
# ##

# type
#   xcb_depth_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_depth_t
#     rem*: cint
#     index*: cint

#   xcb_event_mask_t* = enum
#     XCB_EVENT_MASK_NO_EVENT = 0, XCB_EVENT_MASK_KEY_PRESS = 1,
#     XCB_EVENT_MASK_KEY_RELEASE = 2, XCB_EVENT_MASK_BUTTON_PRESS = 4,
#     XCB_EVENT_MASK_BUTTON_RELEASE = 8, XCB_EVENT_MASK_ENTER_WINDOW = 16,
#     XCB_EVENT_MASK_LEAVE_WINDOW = 32, XCB_EVENT_MASK_POINTER_MOTION = 64,
#     XCB_EVENT_MASK_POINTER_MOTION_HINT = 128, XCB_EVENT_MASK_BUTTON_1_MOTION = 256,
#     XCB_EVENT_MASK_BUTTON_2_MOTION = 512, XCB_EVENT_MASK_BUTTON_3_MOTION = 1024,
#     XCB_EVENT_MASK_BUTTON_4_MOTION = 2048, XCB_EVENT_MASK_BUTTON_5_MOTION = 4096,
#     XCB_EVENT_MASK_BUTTON_MOTION = 8192, XCB_EVENT_MASK_KEYMAP_STATE = 16384,
#     XCB_EVENT_MASK_EXPOSURE = 32768, XCB_EVENT_MASK_VISIBILITY_CHANGE = 65536,
#     XCB_EVENT_MASK_STRUCTURE_NOTIFY = 131072,
#     XCB_EVENT_MASK_RESIZE_REDIRECT = 262144,
#     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY = 524288,
#     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT = 1048576,
#     XCB_EVENT_MASK_FOCUS_CHANGE = 2097152,
#     XCB_EVENT_MASK_PROPERTY_CHANGE = 4194304,
#     XCB_EVENT_MASK_COLOR_MAP_CHANGE = 8388608,
#     XCB_EVENT_MASK_OWNER_GRAB_BUTTON = 16777216
#   xcb_backing_store_t* = enum
#     XCB_BACKING_STORE_NOT_USEFUL = 0, XCB_BACKING_STORE_WHEN_MAPPED = 1,
#     XCB_BACKING_STORE_ALWAYS = 2



# ## *
# ##  @brief xcb_screen_t
# ##

# type
#   xcb_screen_t* {.bycopy.} = object
#     root*: xcb_window_t
#     default_colormap*: xcb_colormap_t
#     white_pixel*: uint32
#     black_pixel*: uint32
#     current_input_masks*: uint32
#     width_in_pixels*: uint16
#     height_in_pixels*: uint16
#     width_in_millimeters*: uint16
#     height_in_millimeters*: uint16
#     min_installed_maps*: uint16
#     max_installed_maps*: uint16
#     root_visual*: xcb_visualid_t
#     backing_stores*: uint8
#     save_unders*: uint8
#     root_depth*: uint8
#     allowed_depths_len*: uint8


# ## *
# ##  @brief xcb_screen_iterator_t
# ##

# type
#   xcb_screen_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_screen_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_setup_request_t
# ##

# type
#   xcb_setup_request_t* {.bycopy.} = object
#     byte_order*: uint8
#     pad0*: uint8
#     protocol_major_version*: uint16
#     protocol_minor_version*: uint16
#     authorization_protocol_name_len*: uint16
#     authorization_protocol_data_len*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_setup_request_iterator_t
# ##

# type
#   xcb_setup_request_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_setup_request_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_setup_failed_t
# ##

# type
#   xcb_setup_failed_t* {.bycopy.} = object
#     status*: uint8
#     reason_len*: uint8
#     protocol_major_version*: uint16
#     protocol_minor_version*: uint16
#     length*: uint16


# ## *
# ##  @brief xcb_setup_failed_iterator_t
# ##

# type
#   xcb_setup_failed_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_setup_failed_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_setup_authenticate_t
# ##

# type
#   xcb_setup_authenticate_t* {.bycopy.} = object
#     status*: uint8
#     pad0*: array[5, uint8]
#     length*: uint16


# ## *
# ##  @brief xcb_setup_authenticate_iterator_t
# ##

# type
#   xcb_setup_authenticate_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_setup_authenticate_t
#     rem*: cint
#     index*: cint

#   xcb_image_order_t* = enum
#     XCB_IMAGE_ORDER_LSB_FIRST = 0, XCB_IMAGE_ORDER_MSB_FIRST = 1


# ## *
# ##  @brief xcb_setup_t
# ##

# type
#   xcb_setup_t* {.bycopy.} = object
#     status*: uint8
#     pad0*: uint8
#     protocol_major_version*: uint16
#     protocol_minor_version*: uint16
#     length*: uint16
#     release_number*: uint32
#     resource_id_base*: uint32
#     resource_id_mask*: uint32
#     motion_buffer_size*: uint32
#     vendor_len*: uint16
#     maximum_request_length*: uint16
#     roots_len*: uint8
#     pixmap_formats_len*: uint8
#     image_byte_order*: uint8
#     bitmap_format_bit_order*: uint8
#     bitmap_format_scanline_unit*: uint8
#     bitmap_format_scanline_pad*: uint8
#     min_keycode*: xcb_keycode_t
#     max_keycode*: xcb_keycode_t
#     pad1*: array[4, uint8]


# ## *
# ##  @brief xcb_setup_iterator_t
# ##

# type
#   xcb_setup_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_setup_t
#     rem*: cint
#     index*: cint

#   xcb_mod_mask_t* = enum
#     XCB_MOD_MASK_SHIFT = 1, XCB_MOD_MASK_LOCK = 2, XCB_MOD_MASK_CONTROL = 4,
#     XCB_MOD_MASK_1 = 8, XCB_MOD_MASK_2 = 16, XCB_MOD_MASK_3 = 32, XCB_MOD_MASK_4 = 64,
#     XCB_MOD_MASK_5 = 128, XCB_MOD_MASK_ANY = 32768
#   xcb_key_but_mask_t* = enum
#     XCB_KEY_BUT_MASK_SHIFT = 1, XCB_KEY_BUT_MASK_LOCK = 2,
#     XCB_KEY_BUT_MASK_CONTROL = 4, XCB_KEY_BUT_MASK_MOD_1 = 8,
#     XCB_KEY_BUT_MASK_MOD_2 = 16, XCB_KEY_BUT_MASK_MOD_3 = 32,
#     XCB_KEY_BUT_MASK_MOD_4 = 64, XCB_KEY_BUT_MASK_MOD_5 = 128,
#     XCB_KEY_BUT_MASK_BUTTON_1 = 256, XCB_KEY_BUT_MASK_BUTTON_2 = 512,
#     XCB_KEY_BUT_MASK_BUTTON_3 = 1024, XCB_KEY_BUT_MASK_BUTTON_4 = 2048,
#     XCB_KEY_BUT_MASK_BUTTON_5 = 4096
#   xcb_window_enum_t* = enum
#     XCB_WINDOW_NONE = 0




# ## * Opcode for xcb_key_press.

# const
#   XCB_KEY_PRESS* = 2

# ## *
# ##  @brief xcb_key_press_event_t
# ##

# type
#   xcb_key_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: xcb_keycode_t
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     event_x*: int16
#     event_y*: int16
#     state*: uint16
#     same_screen*: uint8
#     pad0*: uint8


# ## * Opcode for xcb_key_release.

# const
#   XCB_KEY_RELEASE* = 3

# type
#   xcb_key_release_event_t* = xcb_key_press_event_t
#   xcb_button_mask_t* = enum
#     XCB_BUTTON_MASK_1 = 256, XCB_BUTTON_MASK_2 = 512, XCB_BUTTON_MASK_3 = 1024,
#     XCB_BUTTON_MASK_4 = 2048, XCB_BUTTON_MASK_5 = 4096, XCB_BUTTON_MASK_ANY = 32768


# ## * Opcode for xcb_button_press.

# const
#   XCB_BUTTON_PRESS* = 4

# ## *
# ##  @brief xcb_button_press_event_t
# ##

# type
#   xcb_button_press_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: xcb_button_t
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     event_x*: int16
#     event_y*: int16
#     state*: uint16
#     same_screen*: uint8
#     pad0*: uint8


# ## * Opcode for xcb_button_release.

# const
#   XCB_BUTTON_RELEASE* = 5

# type
#   xcb_button_release_event_t* = xcb_button_press_event_t
#   xcb_motion_t* = enum
#     XCB_MOTION_NORMAL = 0, XCB_MOTION_HINT = 1


# ## * Opcode for xcb_motion_notify.

# const
#   XCB_MOTION_NOTIFY* = 6

# ## *
# ##  @brief xcb_motion_notify_event_t
# ##

# type
#   xcb_motion_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     event_x*: int16
#     event_y*: int16
#     state*: uint16
#     same_screen*: uint8
#     pad0*: uint8

#   xcb_notify_detail_t* = enum
#     XCB_NOTIFY_DETAIL_ANCESTOR = 0, XCB_NOTIFY_DETAIL_VIRTUAL = 1,
#     XCB_NOTIFY_DETAIL_INFERIOR = 2, XCB_NOTIFY_DETAIL_NONLINEAR = 3,
#     XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4, XCB_NOTIFY_DETAIL_POINTER = 5,
#     XCB_NOTIFY_DETAIL_POINTER_ROOT = 6, XCB_NOTIFY_DETAIL_NONE = 7
#   xcb_notify_mode_t* = enum
#     XCB_NOTIFY_MODE_NORMAL = 0, XCB_NOTIFY_MODE_GRAB = 1, XCB_NOTIFY_MODE_UNGRAB = 2,
#     XCB_NOTIFY_MODE_WHILE_GRABBED = 3



# ## * Opcode for xcb_enter_notify.

# const
#   XCB_ENTER_NOTIFY* = 7

# ## *
# ##  @brief xcb_enter_notify_event_t
# ##

# type
#   xcb_enter_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     root*: xcb_window_t
#     event*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     event_x*: int16
#     event_y*: int16
#     state*: uint16
#     mode*: uint8
#     same_screen_focus*: uint8


# ## * Opcode for xcb_leave_notify.

# const
#   XCB_LEAVE_NOTIFY* = 8

# type
#   xcb_leave_notify_event_t* = xcb_enter_notify_event_t

# ## * Opcode for xcb_focus_in.

# const
#   XCB_FOCUS_IN* = 9

# ## *
# ##  @brief xcb_focus_in_event_t
# ##

# type
#   xcb_focus_in_event_t* {.bycopy.} = object
#     response_type*: uint8
#     detail*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     mode*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_focus_out.

# const
#   XCB_FOCUS_OUT* = 10

# type
#   xcb_focus_out_event_t* = xcb_focus_in_event_t

# ## * Opcode for xcb_keymap_notify.

# const
#   XCB_KEYMAP_NOTIFY* = 11

# ## *
# ##  @brief xcb_keymap_notify_event_t
# ##

# type
#   xcb_keymap_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     keys*: array[31, uint8]


# ## * Opcode for xcb_expose.

# const
#   XCB_EXPOSE* = 12

# ## *
# ##  @brief xcb_expose_event_t
# ##

# type
#   xcb_expose_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     x*: uint16
#     y*: uint16
#     width*: uint16
#     height*: uint16
#     count*: uint16
#     pad1*: array[2, uint8]


# ## * Opcode for xcb_graphics_exposure.

# const
#   XCB_GRAPHICS_EXPOSURE* = 13

# ## *
# ##  @brief xcb_graphics_exposure_event_t
# ##

# type
#   xcb_graphics_exposure_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     drawable*: xcb_drawable_t
#     x*: uint16
#     y*: uint16
#     width*: uint16
#     height*: uint16
#     minor_opcode*: uint16
#     count*: uint16
#     major_opcode*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_no_exposure.

# const
#   XCB_NO_EXPOSURE* = 14

# ## *
# ##  @brief xcb_no_exposure_event_t
# ##

# type
#   xcb_no_exposure_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     drawable*: xcb_drawable_t
#     minor_opcode*: uint16
#     major_opcode*: uint8
#     pad1*: uint8

#   xcb_visibility_t* = enum
#     XCB_VISIBILITY_UNOBSCURED = 0, XCB_VISIBILITY_PARTIALLY_OBSCURED = 1,
#     XCB_VISIBILITY_FULLY_OBSCURED = 2


# ## * Opcode for xcb_visibility_notify.

# const
#   XCB_VISIBILITY_NOTIFY* = 15

# ## *
# ##  @brief xcb_visibility_notify_event_t
# ##

# type
#   xcb_visibility_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     state*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_create_notify.

# const
#   XCB_CREATE_NOTIFY* = 16

# ## *
# ##  @brief xcb_create_notify_event_t
# ##

# type
#   xcb_create_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     parent*: xcb_window_t
#     window*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     override_redirect*: uint8
#     pad1*: uint8


# ## * Opcode for xcb_destroy_notify.

# const
#   XCB_DESTROY_NOTIFY* = 17

# ## *
# ##  @brief xcb_destroy_notify_event_t
# ##

# type
#   xcb_destroy_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t


# ## * Opcode for xcb_unmap_notify.

# const
#   XCB_UNMAP_NOTIFY* = 18

# ## *
# ##  @brief xcb_unmap_notify_event_t
# ##

# type
#   xcb_unmap_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     from_configure*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_map_notify.

# const
#   XCB_MAP_NOTIFY* = 19

# ## *
# ##  @brief xcb_map_notify_event_t
# ##

# type
#   xcb_map_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     override_redirect*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_map_request.

# const
#   XCB_MAP_REQUEST* = 20

# ## *
# ##  @brief xcb_map_request_event_t
# ##

# type
#   xcb_map_request_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     parent*: xcb_window_t
#     window*: xcb_window_t


# ## * Opcode for xcb_reparent_notify.

# const
#   XCB_REPARENT_NOTIFY* = 21

# ## *
# ##  @brief xcb_reparent_notify_event_t
# ##

# type
#   xcb_reparent_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     parent*: xcb_window_t
#     x*: int16
#     y*: int16
#     override_redirect*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_configure_notify.

# const
#   XCB_CONFIGURE_NOTIFY* = 22

# ## *
# ##  @brief xcb_configure_notify_event_t
# ##

# type
#   xcb_configure_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     above_sibling*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     override_redirect*: uint8
#     pad1*: uint8


# ## * Opcode for xcb_configure_request.

# const
#   XCB_CONFIGURE_REQUEST* = 23

# ## *
# ##  @brief xcb_configure_request_event_t
# ##

# type
#   xcb_configure_request_event_t* {.bycopy.} = object
#     response_type*: uint8
#     stack_mode*: uint8
#     sequence*: uint16
#     parent*: xcb_window_t
#     window*: xcb_window_t
#     sibling*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     value_mask*: uint16


# ## * Opcode for xcb_gravity_notify.

# const
#   XCB_GRAVITY_NOTIFY* = 24

# ## *
# ##  @brief xcb_gravity_notify_event_t
# ##

# type
#   xcb_gravity_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     x*: int16
#     y*: int16


# ## * Opcode for xcb_resize_request.

# const
#   XCB_RESIZE_REQUEST* = 25

# ## *
# ##  @brief xcb_resize_request_event_t
# ##

# type
#   xcb_resize_request_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     width*: uint16
#     height*: uint16

#   xcb_place_t* = enum
#     XCB_PLACE_ON_TOP = 0,       ## *< The window is now on top of all siblings.
#     XCB_PLACE_ON_BOTTOM = 1


# ## * Opcode for xcb_circulate_notify.

# const
#   XCB_CIRCULATE_NOTIFY* = 26

# ## *
# ##  @brief xcb_circulate_notify_event_t
# ##

# type
#   xcb_circulate_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     event*: xcb_window_t
#     window*: xcb_window_t
#     pad1*: array[4, uint8]
#     place*: uint8
#     pad2*: array[3, uint8]


# ## * Opcode for xcb_circulate_request.

# const
#   XCB_CIRCULATE_REQUEST* = 27

# type
#   xcb_circulate_request_event_t* = xcb_circulate_notify_event_t
#   xcb_property_t* = enum
#     XCB_PROPERTY_NEW_VALUE = 0, XCB_PROPERTY_DELETE = 1


# ## * Opcode for xcb_property_notify.

# const
#   XCB_PROPERTY_NOTIFY* = 28

# ## *
# ##  @brief xcb_property_notify_event_t
# ##

# type
#   xcb_property_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     atom*: xcb_atom_t
#     time*: xcb_timestamp_t
#     state*: uint8
#     pad1*: array[3, uint8]


# ## * Opcode for xcb_selection_clear.

# const
#   XCB_SELECTION_CLEAR* = 29

# ## *
# ##  @brief xcb_selection_clear_event_t
# ##

# type
#   xcb_selection_clear_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     owner*: xcb_window_t
#     selection*: xcb_atom_t

#   xcb_time_t* = enum
#     XCB_TIME_CURRENT_TIME = 0
 


# const
#   XCB_ATOM_ANY = XCB_ATOM_NONE

# ## * Opcode for xcb_selection_request.

# const
#   XCB_SELECTION_REQUEST* = 30

# ## *
# ##  @brief xcb_selection_request_event_t
# ##

# type
#   xcb_selection_request_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     owner*: xcb_window_t
#     requestor*: xcb_window_t
#     selection*: xcb_atom_t
#     target*: xcb_atom_t
#     property*: xcb_atom_t


# ## * Opcode for xcb_selection_notify.

# const
#   XCB_SELECTION_NOTIFY* = 31

# ## *
# ##  @brief xcb_selection_notify_event_t
# ##

# type
#   xcb_selection_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     requestor*: xcb_window_t
#     selection*: xcb_atom_t
#     target*: xcb_atom_t
#     property*: xcb_atom_t

#   xcb_colormap_state_t* = enum
#     XCB_COLORMAP_STATE_UNINSTALLED = 0, ## *< The colormap was uninstalled.
#     XCB_COLORMAP_STATE_INSTALLED = 1
#   xcb_colormap_enum_t* = enum
#     XCB_COLORMAP_NONE = 0



# ## * Opcode for xcb_colormap_notify.

# const
#   XCB_COLORMAP_NOTIFY* = 32

# ## *
# ##  @brief xcb_colormap_notify_event_t
# ##

# type
#   xcb_colormap_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     colormap*: xcb_colormap_t
#     _new*: uint8
#     state*: uint8
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_client_message_data_t
# ##

# type
#   xcb_client_message_data_t* {.bycopy.} = object {.union.}
#     data8*: array[20, uint8]
#     data16*: array[10, uint16]
#     data32*: array[5, uint32]


# ## *
# ##  @brief xcb_client_message_data_iterator_t
# ##

# type
#   xcb_client_message_data_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_client_message_data_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_client_message.

# const
#   XCB_CLIENT_MESSAGE* = 33

# ## *
# ##  @brief xcb_client_message_event_t
# ##

# type
#   xcb_client_message_event_t* {.bycopy.} = object
#     response_type*: uint8
#     format*: uint8
#     sequence*: uint16
#     window*: xcb_window_t
#     `type`*: xcb_atom_t
#     data*: xcb_client_message_data_t

#   xcb_mapping_t* = enum
#     XCB_MAPPING_MODIFIER = 0, XCB_MAPPING_KEYBOARD = 1, XCB_MAPPING_POINTER = 2


# ## * Opcode for xcb_mapping_notify.

# const
#   XCB_MAPPING_NOTIFY* = 34

# ## *
# ##  @brief xcb_mapping_notify_event_t
# ##

# type
#   xcb_mapping_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     request*: uint8
#     first_keycode*: xcb_keycode_t
#     count*: uint8
#     pad1*: uint8


# ## * Opcode for xcb_ge_generic.

# const
#   XCB_GE_GENERIC* = 35

# ## *
# ##  @brief xcb_ge_generic_event_t
# ##

# type
#   xcb_ge_generic_event_t* {.bycopy.} = object
#     response_type*: uint8
#     extension*: uint8
#     sequence*: uint16
#     length*: uint32
#     event_type*: uint16
#     pad0*: array[22, uint8]
#     full_sequence*: uint32


# ## * Opcode for xcb_request.

# const
#   XCB_REQUEST* = 1

# ## *
# ##  @brief xcb_request_error_t
# ##

# type
#   xcb_request_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     bad_value*: uint32
#     minor_opcode*: uint16
#     major_opcode*: uint8
#     pad0*: uint8


# ## * Opcode for xcb_value.

# const
#   XCB_VALUE* = 2

# ## *
# ##  @brief xcb_value_error_t
# ##

# type
#   xcb_value_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16
#     bad_value*: uint32
#     minor_opcode*: uint16
#     major_opcode*: uint8
#     pad0*: uint8


# ## * Opcode for xcb_window.

# const
#   XCB_WINDOW* = 3

# type
#   xcb_window_error_t* = xcb_value_error_t

# ## * Opcode for xcb_pixmap.

# const
#   XCB_PIXMAP* = 4

# type
#   xcb_pixmap_error_t* = xcb_value_error_t

# ## * Opcode for xcb_atom.

# const
#   XCB_ATOM* = 5

# type
#   xcb_atom_error_t* = xcb_value_error_t

# ## * Opcode for xcb_cursor.

# const
#   XCB_CURSOR* = 6

# type
#   xcb_cursor_error_t* = xcb_value_error_t

# ## * Opcode for xcb_font.

# const
#   XCB_FONT* = 7

# type
#   xcb_font_error_t* = xcb_value_error_t

# ## * Opcode for xcb_match.

# const
#   XCB_MATCH* = 8

# type
#   xcb_match_error_t* = xcb_request_error_t

# ## * Opcode for xcb_drawable.

# const
#   XCB_DRAWABLE* = 9

# type
#   xcb_drawable_error_t* = xcb_value_error_t

# ## * Opcode for xcb_access.

# const
#   XCB_ACCESS* = 10

# type
#   xcb_access_error_t* = xcb_request_error_t

# ## * Opcode for xcb_alloc.

# const
#   XCB_ALLOC* = 11

# type
#   xcb_alloc_error_t* = xcb_request_error_t

# ## * Opcode for xcb_colormap.

# const
#   XCB_COLORMAP* = 12

# type
#   xcb_colormap_error_t* = xcb_value_error_t

# ## * Opcode for xcb_g_context.

# const
#   XCB_G_CONTEXT* = 13

# type
#   xcb_g_context_error_t* = xcb_value_error_t

# ## * Opcode for xcb_id_choice.

# const
#   XCB_ID_CHOICE* = 14

# type
#   xcb_id_choice_error_t* = xcb_value_error_t

# ## * Opcode for xcb_name.

# const
#   XCB_NAME* = 15

# type
#   xcb_name_error_t* = xcb_request_error_t

# ## * Opcode for xcb_length.

# const
#   XCB_LENGTH* = 16

# type
#   xcb_length_error_t* = xcb_request_error_t

# ## * Opcode for xcb_implementation.

# const
#   XCB_IMPLEMENTATION* = 17

# type
#   xcb_implementation_error_t* = xcb_request_error_t
#   xcb_window_class_t* = enum
#     XCB_WINDOW_CLASS_COPY_FROM_PARENT = 0, XCB_WINDOW_CLASS_INPUT_OUTPUT = 1,
#     XCB_WINDOW_CLASS_INPUT_ONLY = 2
#   xcb_cw_t* = enum
#     XCB_CW_BACK_PIXMAP = 1, ## *< Overrides the default background-pixmap. The background pixmap and window must
#                          ## have the same root and same depth. Any size pixmap can be used, although some
#                          ## sizes may be faster than others.
#                          ##
#                          ## If `XCB_BACK_PIXMAP_NONE` is specified, the window has no defined background.
#                          ## The server may fill the contents with the previous screen contents or with
#                          ## contents of its own choosing.
#                          ##
#                          ## If `XCB_BACK_PIXMAP_PARENT_RELATIVE` is specified, the parent's background is
#                          ## used, but the window must have the same depth as the parent (or a Match error
#                          ## results).   The parent's background is tracked, and the current version is
#                          ## used each time the window background is required.
#     XCB_CW_BACK_PIXEL = 2, ## *< Overrides `BackPixmap`. A pixmap of undefined size filled with the specified
#                         ## background pixel is used for the background. Range-checking is not performed,
#                         ## the background pixel is truncated to the appropriate number of bits.
#     XCB_CW_BORDER_PIXMAP = 4, ## *< Overrides the default border-pixmap. The border pixmap and window must have the
#                            ## same root and the same depth. Any size pixmap can be used, although some sizes
#                            ## may be faster than others.
#                            ##
#                            ## The special value `XCB_COPY_FROM_PARENT` means the parent's border pixmap is
#                            ## copied (subsequent changes to the parent's border attribute do not affect the
#                            ## child), but the window must have the same depth as the parent.
#     XCB_CW_BORDER_PIXEL = 8, ## *< Overrides `BorderPixmap`. A pixmap of undefined size filled with the specified
#                           ## border pixel is used for the border. Range checking is not performed on the
#                           ## border-pixel value, it is truncated to the appropriate number of bits.
#     XCB_CW_BIT_GRAVITY = 16,    ## *< Defines which region of the window should be retained if the window is resized.
#     XCB_CW_WIN_GRAVITY = 32, ## *< Defines how the window should be repositioned if the parent is resized (see
#                           ## `ConfigureWindow`).
#     XCB_CW_BACKING_STORE = 64, ## *< A backing-store of `WhenMapped` advises the server that maintaining contents of
#                             ## obscured regions when the window is mapped would be beneficial. A backing-store
#                             ## of `Always` advises the server that maintaining contents even when the window
#                             ## is unmapped would be beneficial. In this case, the server may generate an
#                             ## exposure event when the window is created. A value of `NotUseful` advises the
#                             ## server that maintaining contents is unnecessary, although a server may still
#                             ## choose to maintain contents while the window is mapped. Note that if the server
#                             ## maintains contents, then the server should maintain complete contents not just
#                             ## the region within the parent boundaries, even if the window is larger than its
#                             ## parent. While the server maintains contents, exposure events will not normally
#                             ## be generated, but the server may stop maintaining contents at any time.
#     XCB_CW_BACKING_PLANES = 128, ## *< The backing-planes indicates (with bits set to 1) which bit planes of the
#                               ## window hold dynamic data that must be preserved in backing-stores and during
#                               ## save-unders.
#     XCB_CW_BACKING_PIXEL = 256, ## *< The backing-pixel specifies what value to use in planes not covered by
#                              ## backing-planes. The server is free to save only the specified bit planes in the
#                              ## backing-store or save-under and regenerate the remaining planes with the
#                              ## specified pixel value. Any bits beyond the specified depth of the window in
#                              ## these values are simply ignored.
#     XCB_CW_OVERRIDE_REDIRECT = 512, ## *< The override-redirect specifies whether map and configure requests on this
#                                  ## window should override a SubstructureRedirect on the parent, typically to
#                                  ## inform a window manager not to tamper with the window.
#     XCB_CW_SAVE_UNDER = 1024, ## *< If 1, the server is advised that when this window is mapped, saving the
#                            ## contents of windows it obscures would be beneficial.
#     XCB_CW_EVENT_MASK = 2048, ## *< The event-mask defines which events the client is interested in for this window
#                            ## (or for some event types, inferiors of the window).
#     XCB_CW_DONT_PROPAGATE = 4096, ## *< The do-not-propagate-mask defines which events should not be propagated to
#                                ## ancestor windows when no client has the event type selected in this window.
#     XCB_CW_COLORMAP = 8192, ## *< The colormap specifies the colormap that best reflects the true colors of the window. Servers
#                          ## capable of supporting multiple hardware colormaps may use this information, and window man-
#                          ## agers may use it for InstallColormap requests. The colormap must have the same visual type
#                          ## and root as the window (or a Match error results). If CopyFromParent is specified, the parent's
#                          ## colormap is copied (subsequent changes to the parent's colormap attribute do not affect the child).
#                          ## However, the window must have the same visual type as the parent (or a Match error results),
#                          ## and the parent must not have a colormap of None (or a Match error results). For an explanation
#                          ## of None, see FreeColormap request. The colormap is copied by sharing the colormap object
#                          ## between the child and the parent, not by making a complete copy of the colormap contents.
#     XCB_CW_CURSOR = 16384
#   xcb_back_pixmap_t* = enum
#     XCB_BACK_PIXMAP_NONE = 0, XCB_BACK_PIXMAP_PARENT_RELATIVE = 1
#   xcb_gravity_t* = enum
#     XCB_GRAVITY_BIT_FORGET = 0, XCB_GRAVITY_NORTH_WEST = 1, XCB_GRAVITY_NORTH = 2,
#     XCB_GRAVITY_NORTH_EAST = 3, XCB_GRAVITY_WEST = 4, XCB_GRAVITY_CENTER = 5,
#     XCB_GRAVITY_EAST = 6, XCB_GRAVITY_SOUTH_WEST = 7, XCB_GRAVITY_SOUTH = 8,
#     XCB_GRAVITY_SOUTH_EAST = 9, XCB_GRAVITY_STATIC = 10




# const
#   XCB_GRAVITY_WIN_UNMAP = XCB_GRAVITY_BIT_FORGET

# ## *
# ##  @brief xcb_create_window_value_list_t
# ##

# type
#   xcb_create_window_value_list_t* {.bycopy.} = object
#     background_pixmap*: xcb_pixmap_t
#     background_pixel*: uint32
#     border_pixmap*: xcb_pixmap_t
#     border_pixel*: uint32
#     bit_gravity*: uint32
#     win_gravity*: uint32
#     backing_store*: uint32
#     backing_planes*: uint32
#     backing_pixel*: uint32
#     override_redirect*: xcb_bool32_t
#     save_under*: xcb_bool32_t
#     event_mask*: uint32
#     do_not_propogate_mask*: uint32
#     colormap*: xcb_colormap_t
#     cursor*: xcb_cursor_t


# ## * Opcode for xcb_create_window.

# const
#   XCB_CREATE_WINDOW* = 1

# ## *
# ##  @brief xcb_create_window_request_t
# ##

# type
#   xcb_create_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     depth*: uint8
#     length*: uint16
#     wid*: xcb_window_t
#     parent*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     _class*: uint16
#     visual*: xcb_visualid_t
#     value_mask*: uint32


# ## *
# ##  @brief xcb_change_window_attributes_value_list_t
# ##

# type
#   xcb_change_window_attributes_value_list_t* {.bycopy.} = object
#     background_pixmap*: xcb_pixmap_t
#     background_pixel*: uint32
#     border_pixmap*: xcb_pixmap_t
#     border_pixel*: uint32
#     bit_gravity*: uint32
#     win_gravity*: uint32
#     backing_store*: uint32
#     backing_planes*: uint32
#     backing_pixel*: uint32
#     override_redirect*: xcb_bool32_t
#     save_under*: xcb_bool32_t
#     event_mask*: uint32
#     do_not_propogate_mask*: uint32
#     colormap*: xcb_colormap_t
#     cursor*: xcb_cursor_t


# ## * Opcode for xcb_change_window_attributes.

# const
#   XCB_CHANGE_WINDOW_ATTRIBUTES* = 2

# ## *
# ##  @brief xcb_change_window_attributes_request_t
# ##

# type
#   xcb_change_window_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     value_mask*: uint32

#   xcb_map_state_t* = enum
#     XCB_MAP_STATE_UNMAPPED = 0, XCB_MAP_STATE_UNVIEWABLE = 1,
#     XCB_MAP_STATE_VIEWABLE = 2


# ## *
# ##  @brief xcb_get_window_attributes_cookie_t
# ##

# type
#   xcb_get_window_attributes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_window_attributes.

# const
#   XCB_GET_WINDOW_ATTRIBUTES* = 3

# ## *
# ##  @brief xcb_get_window_attributes_request_t
# ##

# type
#   xcb_get_window_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_get_window_attributes_reply_t
# ##

# type
#   xcb_get_window_attributes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     backing_store*: uint8
#     sequence*: uint16
#     length*: uint32
#     visual*: xcb_visualid_t
#     _class*: uint16
#     bit_gravity*: uint8
#     win_gravity*: uint8
#     backing_planes*: uint32
#     backing_pixel*: uint32
#     save_under*: uint8
#     map_is_installed*: uint8
#     map_state*: uint8
#     override_redirect*: uint8
#     colormap*: xcb_colormap_t
#     all_event_masks*: uint32
#     your_event_mask*: uint32
#     do_not_propagate_mask*: uint16
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_destroy_window.

# const
#   XCB_DESTROY_WINDOW* = 4

# ## *
# ##  @brief xcb_destroy_window_request_t
# ##

# type
#   xcb_destroy_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_destroy_subwindows.

# const
#   XCB_DESTROY_SUBWINDOWS* = 5

# ## *
# ##  @brief xcb_destroy_subwindows_request_t
# ##

# type
#   xcb_destroy_subwindows_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t

#   xcb_set_mode_t* = enum
#     XCB_SET_MODE_INSERT = 0, XCB_SET_MODE_DELETE = 1


# ## * Opcode for xcb_change_save_set.

# const
#   XCB_CHANGE_SAVE_SET* = 6

# ## *
# ##  @brief xcb_change_save_set_request_t
# ##

# type
#   xcb_change_save_set_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_reparent_window.

# const
#   XCB_REPARENT_WINDOW* = 7

# ## *
# ##  @brief xcb_reparent_window_request_t
# ##

# type
#   xcb_reparent_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     parent*: xcb_window_t
#     x*: int16
#     y*: int16


# ## * Opcode for xcb_map_window.

# const
#   XCB_MAP_WINDOW* = 8

# ## *
# ##  @brief xcb_map_window_request_t
# ##

# type
#   xcb_map_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_map_subwindows.

# const
#   XCB_MAP_SUBWINDOWS* = 9

# ## *
# ##  @brief xcb_map_subwindows_request_t
# ##

# type
#   xcb_map_subwindows_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_unmap_window.

# const
#   XCB_UNMAP_WINDOW* = 10

# ## *
# ##  @brief xcb_unmap_window_request_t
# ##

# type
#   xcb_unmap_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## * Opcode for xcb_unmap_subwindows.

# const
#   XCB_UNMAP_SUBWINDOWS* = 11

# ## *
# ##  @brief xcb_unmap_subwindows_request_t
# ##

# type
#   xcb_unmap_subwindows_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t

#   xcb_config_window_t* = enum
#     XCB_CONFIG_WINDOW_X = 1, XCB_CONFIG_WINDOW_Y = 2, XCB_CONFIG_WINDOW_WIDTH = 4,
#     XCB_CONFIG_WINDOW_HEIGHT = 8, XCB_CONFIG_WINDOW_BORDER_WIDTH = 16,
#     XCB_CONFIG_WINDOW_SIBLING = 32, XCB_CONFIG_WINDOW_STACK_MODE = 64
#   xcb_stack_mode_t* = enum
#     XCB_STACK_MODE_ABOVE = 0, XCB_STACK_MODE_BELOW = 1, XCB_STACK_MODE_TOP_IF = 2,
#     XCB_STACK_MODE_BOTTOM_IF = 3, XCB_STACK_MODE_OPPOSITE = 4



# ## *
# ##  @brief xcb_configure_window_value_list_t
# ##

# type
#   xcb_configure_window_value_list_t* {.bycopy.} = object
#     x*: int32
#     y*: int32
#     width*: uint32
#     height*: uint32
#     border_width*: uint32
#     sibling*: xcb_window_t
#     stack_mode*: uint32


# ## * Opcode for xcb_configure_window.

# const
#   XCB_CONFIGURE_WINDOW* = 12

# ## *
# ##  @brief xcb_configure_window_request_t
# ##

# type
#   xcb_configure_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     value_mask*: uint16
#     pad1*: array[2, uint8]

#   xcb_circulate_t* = enum
#     XCB_CIRCULATE_RAISE_LOWEST = 0, XCB_CIRCULATE_LOWER_HIGHEST = 1


# ## * Opcode for xcb_circulate_window.

# const
#   XCB_CIRCULATE_WINDOW* = 13

# ## *
# ##  @brief xcb_circulate_window_request_t
# ##

# type
#   xcb_circulate_window_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     direction*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_get_geometry_cookie_t
# ##

# type
#   xcb_get_geometry_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_geometry.

# const
#   XCB_GET_GEOMETRY* = 14

# ## *
# ##  @brief xcb_get_geometry_request_t
# ##

# type
#   xcb_get_geometry_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t


# ## *
# ##  @brief xcb_get_geometry_reply_t
# ##

# type
#   xcb_get_geometry_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     depth*: uint8
#     sequence*: uint16
#     length*: uint32
#     root*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     border_width*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_query_tree_cookie_t
# ##

# type
#   xcb_query_tree_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_tree.

# const
#   XCB_QUERY_TREE* = 15

# ## *
# ##  @brief xcb_query_tree_request_t
# ##

# type
#   xcb_query_tree_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_query_tree_reply_t
# ##

# type
#   xcb_query_tree_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     root*: xcb_window_t
#     parent*: xcb_window_t
#     children_len*: uint16
#     pad1*: array[14, uint8]


# ## *
# ##  @brief xcb_intern_atom_cookie_t
# ##

# type
#   xcb_intern_atom_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_intern_atom.

# const
#   XCB_INTERN_ATOM* = 16

# ## *
# ##  @brief xcb_intern_atom_request_t
# ##

# type
#   xcb_intern_atom_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     only_if_exists*: uint8
#     length*: uint16
#     name_len*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_intern_atom_reply_t
# ##

# type
#   xcb_intern_atom_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     atom*: xcb_atom_t


# ## *
# ##  @brief xcb_get_atom_name_cookie_t
# ##

# type
#   xcb_get_atom_name_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_atom_name.

# const
#   XCB_GET_ATOM_NAME* = 17

# ## *
# ##  @brief xcb_get_atom_name_request_t
# ##

# type
#   xcb_get_atom_name_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     atom*: xcb_atom_t


# ## *
# ##  @brief xcb_get_atom_name_reply_t
# ##

# type
#   xcb_get_atom_name_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     name_len*: uint16
#     pad1*: array[22, uint8]

#   xcb_prop_mode_t* = enum
#     XCB_PROP_MODE_REPLACE = 0,  ## *< Discard the previous property value and store the new data.
#     XCB_PROP_MODE_PREPEND = 1, ## *< Insert the new data before the beginning of existing data. The `format` must
#                             ## match existing property value. If the property is undefined, it is treated as
#                             ## defined with the correct type and format with zero-length data.
#     XCB_PROP_MODE_APPEND = 2


# ## * Opcode for xcb_change_property.

# const
#   XCB_CHANGE_PROPERTY* = 18

# ## *
# ##  @brief xcb_change_property_request_t
# ##

# type
#   xcb_change_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     format*: uint8
#     pad0*: array[3, uint8]
#     data_len*: uint32


# ## * Opcode for xcb_delete_property.

# const
#   XCB_DELETE_PROPERTY* = 19

# ## *
# ##  @brief xcb_delete_property_request_t
# ##

# type
#   xcb_delete_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     property*: xcb_atom_t

#   xcb_get_property_type_t* = enum
#     XCB_GET_PROPERTY_TYPE_ANY = 0


# ## *
# ##  @brief xcb_get_property_cookie_t
# ##

# type
#   xcb_get_property_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_property.

# const
#   XCB_GET_PROPERTY* = 20

# ## *
# ##  @brief xcb_get_property_request_t
# ##

# type
#   xcb_get_property_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     _delete*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     property*: xcb_atom_t
#     `type`*: xcb_atom_t
#     long_offset*: uint32
#     long_length*: uint32


# ## *
# ##  @brief xcb_get_property_reply_t
# ##

# type
#   xcb_get_property_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     format*: uint8
#     sequence*: uint16
#     length*: uint32
#     `type`*: xcb_atom_t
#     bytes_after*: uint32
#     value_len*: uint32
#     pad0*: array[12, uint8]


# ## *
# ##  @brief xcb_list_properties_cookie_t
# ##

# type
#   xcb_list_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_properties.

# const
#   XCB_LIST_PROPERTIES* = 21

# ## *
# ##  @brief xcb_list_properties_request_t
# ##

# type
#   xcb_list_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_list_properties_reply_t
# ##

# type
#   xcb_list_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     atoms_len*: uint16
#     pad1*: array[22, uint8]


# ## * Opcode for xcb_set_selection_owner.

# const
#   XCB_SET_SELECTION_OWNER* = 22

# ## *
# ##  @brief xcb_set_selection_owner_request_t
# ##

# type
#   xcb_set_selection_owner_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     owner*: xcb_window_t
#     selection*: xcb_atom_t
#     time*: xcb_timestamp_t


# ## *
# ##  @brief xcb_get_selection_owner_cookie_t
# ##

# type
#   xcb_get_selection_owner_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_selection_owner.

# const
#   XCB_GET_SELECTION_OWNER* = 23

# ## *
# ##  @brief xcb_get_selection_owner_request_t
# ##

# type
#   xcb_get_selection_owner_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     selection*: xcb_atom_t


# ## *
# ##  @brief xcb_get_selection_owner_reply_t
# ##

# type
#   xcb_get_selection_owner_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     owner*: xcb_window_t


# ## * Opcode for xcb_convert_selection.

# const
#   XCB_CONVERT_SELECTION* = 24

# ## *
# ##  @brief xcb_convert_selection_request_t
# ##

# type
#   xcb_convert_selection_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     requestor*: xcb_window_t
#     selection*: xcb_atom_t
#     target*: xcb_atom_t
#     property*: xcb_atom_t
#     time*: xcb_timestamp_t

#   xcb_send_event_dest_t* = enum
#     XCB_SEND_EVENT_DEST_POINTER_WINDOW = 0, XCB_SEND_EVENT_DEST_ITEM_FOCUS = 1


# ## * Opcode for xcb_send_event.

# const
#   XCB_SEND_EVENT* = 25

# ## *
# ##  @brief xcb_send_event_request_t
# ##

# type
#   xcb_send_event_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     propagate*: uint8
#     length*: uint16
#     destination*: xcb_window_t
#     event_mask*: uint32
#     event*: array[32, char]

#   xcb_grab_mode_t* = enum
#     XCB_GRAB_MODE_SYNC = 0, ## *< The state of the keyboard appears to freeze: No further keyboard events are
#                          ## generated by the server until the grabbing client issues a releasing
#                          ## `AllowEvents` request or until the keyboard grab is released.
#     XCB_GRAB_MODE_ASYNC = 1
#   xcb_grab_status_t* = enum
#     XCB_GRAB_STATUS_SUCCESS = 0, XCB_GRAB_STATUS_ALREADY_GRABBED = 1,
#     XCB_GRAB_STATUS_INVALID_TIME = 2, XCB_GRAB_STATUS_NOT_VIEWABLE = 3,
#     XCB_GRAB_STATUS_FROZEN = 4
#   xcb_cursor_enum_t* = enum
#     XCB_CURSOR_NONE = 0




# ## *
# ##  @brief xcb_grab_pointer_cookie_t
# ##

# type
#   xcb_grab_pointer_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_grab_pointer.

# const
#   XCB_GRAB_POINTER* = 26

# ## *
# ##  @brief xcb_grab_pointer_request_t
# ##

# type
#   xcb_grab_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     owner_events*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     event_mask*: uint16
#     pointer_mode*: uint8
#     keyboard_mode*: uint8
#     confine_to*: xcb_window_t
#     cursor*: xcb_cursor_t
#     time*: xcb_timestamp_t


# ## *
# ##  @brief xcb_grab_pointer_reply_t
# ##

# type
#   xcb_grab_pointer_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32


# ## * Opcode for xcb_ungrab_pointer.

# const
#   XCB_UNGRAB_POINTER* = 27

# ## *
# ##  @brief xcb_ungrab_pointer_request_t
# ##

# type
#   xcb_ungrab_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t

#   xcb_button_index_t* = enum
#     XCB_BUTTON_INDEX_ANY = 0,   ## *< Any of the following (or none):
#     XCB_BUTTON_INDEX_1 = 1,     ## *< The left mouse button.
#     XCB_BUTTON_INDEX_2 = 2,     ## *< The right mouse button.
#     XCB_BUTTON_INDEX_3 = 3,     ## *< The middle mouse button.
#     XCB_BUTTON_INDEX_4 = 4,     ## *< Scroll wheel. TODO: direction?
#     XCB_BUTTON_INDEX_5 = 5


# ## * Opcode for xcb_grab_button.

# const
#   XCB_GRAB_BUTTON* = 28

# ## *
# ##  @brief xcb_grab_button_request_t
# ##

# type
#   xcb_grab_button_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     owner_events*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     event_mask*: uint16
#     pointer_mode*: uint8
#     keyboard_mode*: uint8
#     confine_to*: xcb_window_t
#     cursor*: xcb_cursor_t
#     button*: uint8
#     pad0*: uint8
#     modifiers*: uint16


# ## * Opcode for xcb_ungrab_button.

# const
#   XCB_UNGRAB_BUTTON* = 29

# ## *
# ##  @brief xcb_ungrab_button_request_t
# ##

# type
#   xcb_ungrab_button_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     button*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     modifiers*: uint16
#     pad0*: array[2, uint8]


# ## * Opcode for xcb_change_active_pointer_grab.

# const
#   XCB_CHANGE_ACTIVE_POINTER_GRAB* = 30

# ## *
# ##  @brief xcb_change_active_pointer_grab_request_t
# ##

# type
#   xcb_change_active_pointer_grab_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cursor*: xcb_cursor_t
#     time*: xcb_timestamp_t
#     event_mask*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_grab_keyboard_cookie_t
# ##

# type
#   xcb_grab_keyboard_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_grab_keyboard.

# const
#   XCB_GRAB_KEYBOARD* = 31

# ## *
# ##  @brief xcb_grab_keyboard_request_t
# ##

# type
#   xcb_grab_keyboard_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     owner_events*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     time*: xcb_timestamp_t
#     pointer_mode*: uint8
#     keyboard_mode*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_grab_keyboard_reply_t
# ##

# type
#   xcb_grab_keyboard_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32


# ## * Opcode for xcb_ungrab_keyboard.

# const
#   XCB_UNGRAB_KEYBOARD* = 32

# ## *
# ##  @brief xcb_ungrab_keyboard_request_t
# ##

# type
#   xcb_ungrab_keyboard_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t

#   xcb_grab_t* = enum
#     XCB_GRAB_ANY = 0


# ## * Opcode for xcb_grab_key.

# const
#   XCB_GRAB_KEY* = 33

# ## *
# ##  @brief xcb_grab_key_request_t
# ##

# type
#   xcb_grab_key_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     owner_events*: uint8
#     length*: uint16
#     grab_window*: xcb_window_t
#     modifiers*: uint16
#     key*: xcb_keycode_t
#     pointer_mode*: uint8
#     keyboard_mode*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_ungrab_key.

# const
#   XCB_UNGRAB_KEY* = 34

# ## *
# ##  @brief xcb_ungrab_key_request_t
# ##

# type
#   xcb_ungrab_key_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     key*: xcb_keycode_t
#     length*: uint16
#     grab_window*: xcb_window_t
#     modifiers*: uint16
#     pad0*: array[2, uint8]

#   xcb_allow_t* = enum
#     XCB_ALLOW_ASYNC_POINTER = 0, ## *< For AsyncPointer, if the pointer is frozen by the client, pointer event
#                               ## processing continues normally. If the pointer is frozen twice by the client on
#                               ## behalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no
#                               ## effect if the pointer is not frozen by the client, but the pointer need not be
#                               ## grabbed by the client.
#                               ##
#                               ## TODO: rewrite this in more understandable terms.
#     XCB_ALLOW_SYNC_POINTER = 1, ## *< For SyncPointer, if the pointer is frozen and actively grabbed by the client,
#                              ## pointer event processing continues normally until the next ButtonPress or
#                              ## ButtonRelease event is reported to the client, at which time the pointer again
#                              ## appears to freeze. However, if the reported event causes the pointer grab to be
#                              ## released, then the pointer does not freeze. SyncPointer has no effect if the
#                              ## pointer is not frozen by the client or if the pointer is not grabbed by the
#                              ## client.
#     XCB_ALLOW_REPLAY_POINTER = 2, ## *< For ReplayPointer, if the pointer is actively grabbed by the client and is
#                                ## frozen as the result of an event having been sent to the client (either from
#                                ## the activation of a GrabButton or from a previous AllowEvents with mode
#                                ## SyncPointer but not from a GrabPointer), then the pointer grab is released and
#                                ## that event is completely reprocessed, this time ignoring any passive grabs at
#                                ## or above (towards the root) the grab-window of the grab just released. The
#                                ## request has no effect if the pointer is not grabbed by the client or if the
#                                ## pointer is not frozen as the result of an event.
#     XCB_ALLOW_ASYNC_KEYBOARD = 3, ## *< For AsyncKeyboard, if the keyboard is frozen by the client, keyboard event
#                                ## processing continues normally. If the keyboard is frozen twice by the client on
#                                ## behalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has
#                                ## no effect if the keyboard is not frozen by the client, but the keyboard need
#                                ## not be grabbed by the client.
#     XCB_ALLOW_SYNC_KEYBOARD = 4, ## *< For SyncKeyboard, if the keyboard is frozen and actively grabbed by the client,
#                               ## keyboard event processing continues normally until the next KeyPress or
#                               ## KeyRelease event is reported to the client, at which time the keyboard again
#                               ## appears to freeze. However, if the reported event causes the keyboard grab to
#                               ## be released, then the keyboard does not freeze. SyncKeyboard has no effect if
#                               ## the keyboard is not frozen by the client or if the keyboard is not grabbed by
#                               ## the client.
#     XCB_ALLOW_REPLAY_KEYBOARD = 5, ## *< For ReplayKeyboard, if the keyboard is actively grabbed by the client and is
#                                 ## frozen as the result of an event having been sent to the client (either from
#                                 ## the activation of a GrabKey or from a previous AllowEvents with mode
#                                 ## SyncKeyboard but not from a GrabKeyboard), then the keyboard grab is released
#                                 ## and that event is completely reprocessed, this time ignoring any passive grabs
#                                 ## at or above (towards the root) the grab-window of the grab just released. The
#                                 ## request has no effect if the keyboard is not grabbed by the client or if the
#                                 ## keyboard is not frozen as the result of an event.
#     XCB_ALLOW_ASYNC_BOTH = 6, ## *< For AsyncBoth, if the pointer and the keyboard are frozen by the client, event
#                            ## processing for both devices continues normally. If a device is frozen twice by
#                            ## the client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth
#                            ## has no effect unless both pointer and keyboard are frozen by the client.
#     XCB_ALLOW_SYNC_BOTH = 7


# ## * Opcode for xcb_allow_events.

# const
#   XCB_ALLOW_EVENTS* = 35

# ## *
# ##  @brief xcb_allow_events_request_t
# ##

# type
#   xcb_allow_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16
#     time*: xcb_timestamp_t


# ## * Opcode for xcb_grab_server.

# const
#   XCB_GRAB_SERVER* = 36

# ## *
# ##  @brief xcb_grab_server_request_t
# ##

# type
#   xcb_grab_server_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## * Opcode for xcb_ungrab_server.

# const
#   XCB_UNGRAB_SERVER* = 37

# ## *
# ##  @brief xcb_ungrab_server_request_t
# ##

# type
#   xcb_ungrab_server_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_query_pointer_cookie_t
# ##

# type
#   xcb_query_pointer_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_pointer.

# const
#   XCB_QUERY_POINTER* = 38

# ## *
# ##  @brief xcb_query_pointer_request_t
# ##

# type
#   xcb_query_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_query_pointer_reply_t
# ##

# type
#   xcb_query_pointer_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     same_screen*: uint8
#     sequence*: uint16
#     length*: uint32
#     root*: xcb_window_t
#     child*: xcb_window_t
#     root_x*: int16
#     root_y*: int16
#     win_x*: int16
#     win_y*: int16
#     mask*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_timecoord_t
# ##

# type
#   xcb_timecoord_t* {.bycopy.} = object
#     time*: xcb_timestamp_t
#     x*: int16
#     y*: int16


# ## *
# ##  @brief xcb_timecoord_iterator_t
# ##

# type
#   xcb_timecoord_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_timecoord_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_get_motion_events_cookie_t
# ##

# type
#   xcb_get_motion_events_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_motion_events.

# const
#   XCB_GET_MOTION_EVENTS* = 39

# ## *
# ##  @brief xcb_get_motion_events_request_t
# ##

# type
#   xcb_get_motion_events_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     start*: xcb_timestamp_t
#     stop*: xcb_timestamp_t


# ## *
# ##  @brief xcb_get_motion_events_reply_t
# ##

# type
#   xcb_get_motion_events_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     events_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_translate_coordinates_cookie_t
# ##

# type
#   xcb_translate_coordinates_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_translate_coordinates.

# const
#   XCB_TRANSLATE_COORDINATES* = 40

# ## *
# ##  @brief xcb_translate_coordinates_request_t
# ##

# type
#   xcb_translate_coordinates_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     src_window*: xcb_window_t
#     dst_window*: xcb_window_t
#     src_x*: int16
#     src_y*: int16


# ## *
# ##  @brief xcb_translate_coordinates_reply_t
# ##

# type
#   xcb_translate_coordinates_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     same_screen*: uint8
#     sequence*: uint16
#     length*: uint32
#     child*: xcb_window_t
#     dst_x*: int16
#     dst_y*: int16


# ## * Opcode for xcb_warp_pointer.

# const
#   XCB_WARP_POINTER* = 41

# ## *
# ##  @brief xcb_warp_pointer_request_t
# ##

# type
#   xcb_warp_pointer_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     src_window*: xcb_window_t
#     dst_window*: xcb_window_t
#     src_x*: int16
#     src_y*: int16
#     src_width*: uint16
#     src_height*: uint16
#     dst_x*: int16
#     dst_y*: int16

#   xcb_input_focus_t* = enum
#     XCB_INPUT_FOCUS_NONE = 0,   ## *< The focus reverts to `XCB_NONE`, so no window will have the input focus.
#     XCB_INPUT_FOCUS_POINTER_ROOT = 1, ## *< The focus reverts to `XCB_POINTER_ROOT` respectively. When the focus reverts,
#                                    ## FocusIn and FocusOut events are generated, but the last-focus-change time is
#                                    ## not changed.
#     XCB_INPUT_FOCUS_PARENT = 2, ## *< The focus reverts to the parent (or closest viewable ancestor) and the new
#                              ## revert_to value is `XCB_INPUT_FOCUS_NONE`.
#     XCB_INPUT_FOCUS_FOLLOW_KEYBOARD = 3


# ## * Opcode for xcb_set_input_focus.

# const
#   XCB_SET_INPUT_FOCUS* = 42

# ## *
# ##  @brief xcb_set_input_focus_request_t
# ##

# type
#   xcb_set_input_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     revert_to*: uint8
#     length*: uint16
#     focus*: xcb_window_t
#     time*: xcb_timestamp_t


# ## *
# ##  @brief xcb_get_input_focus_cookie_t
# ##

# type
#   xcb_get_input_focus_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_input_focus.

# const
#   XCB_GET_INPUT_FOCUS* = 43

# ## *
# ##  @brief xcb_get_input_focus_request_t
# ##

# type
#   xcb_get_input_focus_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_input_focus_reply_t
# ##

# type
#   xcb_get_input_focus_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     revert_to*: uint8
#     sequence*: uint16
#     length*: uint32
#     focus*: xcb_window_t


# ## *
# ##  @brief xcb_query_keymap_cookie_t
# ##

# type
#   xcb_query_keymap_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_keymap.

# const
#   XCB_QUERY_KEYMAP* = 44

# ## *
# ##  @brief xcb_query_keymap_request_t
# ##

# type
#   xcb_query_keymap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_query_keymap_reply_t
# ##

# type
#   xcb_query_keymap_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     keys*: array[32, uint8]


# ## * Opcode for xcb_open_font.

# const
#   XCB_OPEN_FONT* = 45

# ## *
# ##  @brief xcb_open_font_request_t
# ##

# type
#   xcb_open_font_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     fid*: xcb_font_t
#     name_len*: uint16
#     pad1*: array[2, uint8]


# ## * Opcode for xcb_close_font.

# const
#   XCB_CLOSE_FONT* = 46

# ## *
# ##  @brief xcb_close_font_request_t
# ##

# type
#   xcb_close_font_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     font*: xcb_font_t

#   xcb_font_draw_t* = enum
#     XCB_FONT_DRAW_LEFT_TO_RIGHT = 0, XCB_FONT_DRAW_RIGHT_TO_LEFT = 1


# ## *
# ##  @brief xcb_fontprop_t
# ##

# type
#   xcb_fontprop_t* {.bycopy.} = object
#     name*: xcb_atom_t
#     value*: uint32


# ## *
# ##  @brief xcb_fontprop_iterator_t
# ##

# type
#   xcb_fontprop_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_fontprop_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_charinfo_t
# ##

# type
#   xcb_charinfo_t* {.bycopy.} = object
#     left_side_bearing*: int16
#     right_side_bearing*: int16
#     character_width*: int16
#     ascent*: int16
#     descent*: int16
#     attributes*: uint16


# ## *
# ##  @brief xcb_charinfo_iterator_t
# ##

# type
#   xcb_charinfo_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_charinfo_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_query_font_cookie_t
# ##

# type
#   xcb_query_font_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_font.

# const
#   XCB_QUERY_FONT* = 47

# ## *
# ##  @brief xcb_query_font_request_t
# ##

# type
#   xcb_query_font_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     font*: xcb_fontable_t


# ## *
# ##  @brief xcb_query_font_reply_t
# ##

# type
#   xcb_query_font_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     min_bounds*: xcb_charinfo_t
#     pad1*: array[4, uint8]
#     max_bounds*: xcb_charinfo_t
#     pad2*: array[4, uint8]
#     min_char_or_byte2*: uint16
#     max_char_or_byte2*: uint16
#     default_char*: uint16
#     properties_len*: uint16
#     draw_direction*: uint8
#     min_byte1*: uint8
#     max_byte1*: uint8
#     all_chars_exist*: uint8
#     font_ascent*: int16
#     font_descent*: int16
#     char_infos_len*: uint32


# ## *
# ##  @brief xcb_query_text_extents_cookie_t
# ##

# type
#   xcb_query_text_extents_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_text_extents.

# const
#   XCB_QUERY_TEXT_EXTENTS* = 48

# ## *
# ##  @brief xcb_query_text_extents_request_t
# ##

# type
#   xcb_query_text_extents_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     odd_length*: uint8
#     length*: uint16
#     font*: xcb_fontable_t


# ## *
# ##  @brief xcb_query_text_extents_reply_t
# ##

# type
#   xcb_query_text_extents_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     draw_direction*: uint8
#     sequence*: uint16
#     length*: uint32
#     font_ascent*: int16
#     font_descent*: int16
#     overall_ascent*: int16
#     overall_descent*: int16
#     overall_width*: int32
#     overall_left*: int32
#     overall_right*: int32


# ## *
# ##  @brief xcb_str_t
# ##

# type
#   xcb_str_t* {.bycopy.} = object
#     name_len*: uint8


# ## *
# ##  @brief xcb_str_iterator_t
# ##

# type
#   xcb_str_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_str_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_list_fonts_cookie_t
# ##

# type
#   xcb_list_fonts_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_fonts.

# const
#   XCB_LIST_FONTS* = 49

# ## *
# ##  @brief xcb_list_fonts_request_t
# ##

# type
#   xcb_list_fonts_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     max_names*: uint16
#     pattern_len*: uint16


# ## *
# ##  @brief xcb_list_fonts_reply_t
# ##

# type
#   xcb_list_fonts_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     names_len*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_list_fonts_with_info_cookie_t
# ##

# type
#   xcb_list_fonts_with_info_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_fonts_with_info.

# const
#   XCB_LIST_FONTS_WITH_INFO* = 50

# ## *
# ##  @brief xcb_list_fonts_with_info_request_t
# ##

# type
#   xcb_list_fonts_with_info_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     max_names*: uint16
#     pattern_len*: uint16


# ## *
# ##  @brief xcb_list_fonts_with_info_reply_t
# ##

# type
#   xcb_list_fonts_with_info_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     name_len*: uint8
#     sequence*: uint16
#     length*: uint32
#     min_bounds*: xcb_charinfo_t
#     pad0*: array[4, uint8]
#     max_bounds*: xcb_charinfo_t
#     pad1*: array[4, uint8]
#     min_char_or_byte2*: uint16
#     max_char_or_byte2*: uint16
#     default_char*: uint16
#     properties_len*: uint16
#     draw_direction*: uint8
#     min_byte1*: uint8
#     max_byte1*: uint8
#     all_chars_exist*: uint8
#     font_ascent*: int16
#     font_descent*: int16
#     replies_hint*: uint32


# ## * Opcode for xcb_set_font_path.

# const
#   XCB_SET_FONT_PATH* = 51

# ## *
# ##  @brief xcb_set_font_path_request_t
# ##

# type
#   xcb_set_font_path_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     font_qty*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_get_font_path_cookie_t
# ##

# type
#   xcb_get_font_path_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_font_path.

# const
#   XCB_GET_FONT_PATH* = 52

# ## *
# ##  @brief xcb_get_font_path_request_t
# ##

# type
#   xcb_get_font_path_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_font_path_reply_t
# ##

# type
#   xcb_get_font_path_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     path_len*: uint16
#     pad1*: array[22, uint8]


# ## * Opcode for xcb_create_pixmap.

# const
#   XCB_CREATE_PIXMAP* = 53

# ## *
# ##  @brief xcb_create_pixmap_request_t
# ##

# type
#   xcb_create_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     depth*: uint8
#     length*: uint16
#     pid*: xcb_pixmap_t
#     drawable*: xcb_drawable_t
#     width*: uint16
#     height*: uint16


# ## * Opcode for xcb_free_pixmap.

# const
#   XCB_FREE_PIXMAP* = 54

# ## *
# ##  @brief xcb_free_pixmap_request_t
# ##

# type
#   xcb_free_pixmap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     pixmap*: xcb_pixmap_t

#   xcb_gc_t* = enum
#     XCB_GC_FUNCTION = 1,        ## *< TODO: Refer to GX
#     XCB_GC_PLANE_MASK = 2, ## *< In graphics operations, given a source and destination pixel, the result is
#                         ## computed bitwise on corresponding bits of the pixels; that is, a Boolean
#                         ## operation is performed in each bit plane. The plane-mask restricts the
#                         ## operation to a subset of planes, so the result is:
#                         ##
#                         ##         ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
#     XCB_GC_FOREGROUND = 4,      ## *< Foreground colorpixel.
#     XCB_GC_BACKGROUND = 8,      ## *< Background colorpixel.
#     XCB_GC_LINE_WIDTH = 16, ## *< The line-width is measured in pixels and can be greater than or equal to one, a wide line, or the
#                          ## special value zero, a thin line.
#     XCB_GC_LINE_STYLE = 32, ## *< The line-style defines which sections of a line are drawn:
#                          ## Solid                The full path of the line is drawn.
#                          ## DoubleDash           The full path of the line is drawn, but the even dashes are filled differently
#                          ##                      than the odd dashes (see fill-style), with Butt cap-style used where even and
#                          ##                      odd dashes meet.
#                          ## OnOffDash            Only the even dashes are drawn, and cap-style applies to all internal ends of
#                          ##                      the individual dashes (except NotLast is treated as Butt).
#     XCB_GC_CAP_STYLE = 64, ## *< The cap-style defines how the endpoints of a path are drawn:
#                         ## NotLast    The result is equivalent to Butt, except that for a line-width of zero the final
#                         ##            endpoint is not drawn.
#                         ## Butt       The result is square at the endpoint (perpendicular to the slope of the line)
#                         ##            with no projection beyond.
#                         ## Round      The result is a circular arc with its diameter equal to the line-width, centered
#                         ##            on the endpoint; it is equivalent to Butt for line-width zero.
#                         ## Projecting The result is square at the end, but the path continues beyond the endpoint for
#                         ##            a distance equal to half the line-width; it is equivalent to Butt for line-width
#                         ##            zero.
#     XCB_GC_JOIN_STYLE = 128, ## *< The join-style defines how corners are drawn for wide lines:
#                           ## Miter               The outer edges of the two lines extend to meet at an angle. However, if the
#                           ##                     angle is less than 11 degrees, a Bevel join-style is used instead.
#                           ## Round               The result is a circular arc with a diameter equal to the line-width, centered
#                           ##                     on the joinpoint.
#                           ## Bevel               The result is Butt endpoint styles, and then the triangular notch is filled.
#     XCB_GC_FILL_STYLE = 256, ## *< The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill
#                           ## requests (for example, PolyText8, PolyText16, PolyFillRectangle, FillPoly, and PolyFillArc)
#                           ## as well as for line requests with line-style Solid, (for example, PolyLine, PolySegment,
#                           ## PolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash
#                           ## or DoubleDash:
#                           ## Solid                     Foreground
#                           ## Tiled                     Tile
#                           ## OpaqueStippled            A tile with the same width and height as stipple but with background
#                           ##                           everywhere stipple has a zero and with foreground everywhere stipple
#                           ##                           has a one
#                           ## Stippled                  Foreground masked by stipple
#                           ## For the odd dashes for line requests with line-style DoubleDash:
#                           ## Solid                     Background
#                           ## Tiled                     Same as for even dashes
#                           ## OpaqueStippled            Same as for even dashes
#                           ## Stippled                  Background masked by stipple
#     XCB_GC_FILL_RULE = 512,     ## *<
#     XCB_GC_TILE = 1024, ## *< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
#                      ## dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
#                      ## the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
#                      ## specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
#                      ## origin of whatever destination drawable is specified in a graphics request.
#                      ## The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
#                      ## The stipple pixmap must have depth one and must have the same root as the gcontext (or a
#                      ## Match error results). For fill-style Stippled (but not fill-style
#                      ## OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
#                      ## additional clip mask to be ANDed with the clip-mask.
#                      ## Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
#                      ## others.
#     XCB_GC_STIPPLE = 2048, ## *< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
#                         ## dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
#                         ## the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
#                         ## specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
#                         ## origin of whatever destination drawable is specified in a graphics request.
#                         ## The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
#                         ## The stipple pixmap must have depth one and must have the same root as the gcontext (or a
#                         ## Match error results). For fill-style Stippled (but not fill-style
#                         ## OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
#                         ## additional clip mask to be ANDed with the clip-mask.
#                         ## Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
#                         ## others.
#     XCB_GC_TILE_STIPPLE_ORIGIN_X = 4096, ## *< TODO
#     XCB_GC_TILE_STIPPLE_ORIGIN_Y = 8192, ## *< TODO
#     XCB_GC_FONT = 16384,        ## *< Which font to use for the `ImageText8` and `ImageText16` requests.
#     XCB_GC_SUBWINDOW_MODE = 32768, ## *< For ClipByChildren, both source and destination windows are additionally
#                                 ## clipped by all viewable InputOutput children. For IncludeInferiors, neither
#                                 ## source nor destination window is
#                                 ## clipped by inferiors. This will result in including subwindow contents in the source and drawing
#                                 ## through subwindow boundaries of the destination. The use of IncludeInferiors with a source or
#                                 ## destination window of one depth with mapped inferiors of differing depth is not illegal, but the
#                                 ## semantics is undefined by the core protocol.
#     XCB_GC_GRAPHICS_EXPOSURES = 65536, ## *< Whether ExposureEvents should be generated (1) or not (0).
#                                     ##
#                                     ## The default is 1.
#     XCB_GC_CLIP_ORIGIN_X = 131072, ## *< TODO
#     XCB_GC_CLIP_ORIGIN_Y = 262144, ## *< TODO
#     XCB_GC_CLIP_MASK = 524288, ## *< The clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has
#                             ## bits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where
#                             ## the clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip
#                             ## 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
#                             ## depth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None,
#                             ## then pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the
#                             ## SetClipRectangles request.
#     XCB_GC_DASH_OFFSET = 1048576, ## *< TODO
#     XCB_GC_DASH_LIST = 2097152, ## *< TODO
#     XCB_GC_ARC_MODE = 4194304
#   xcb_gx_t* = enum
#     XCB_GX_CLEAR = 0, XCB_GX_AND = 1, XCB_GX_AND_REVERSE = 2, XCB_GX_COPY = 3,
#     XCB_GX_AND_INVERTED = 4, XCB_GX_NOOP = 5, XCB_GX_XOR = 6, XCB_GX_OR = 7, XCB_GX_NOR = 8,
#     XCB_GX_EQUIV = 9, XCB_GX_INVERT = 10, XCB_GX_OR_REVERSE = 11,
#     XCB_GX_COPY_INVERTED = 12, XCB_GX_OR_INVERTED = 13, XCB_GX_NAND = 14, XCB_GX_SET = 15
#   xcb_line_style_t* = enum
#     XCB_LINE_STYLE_SOLID = 0, XCB_LINE_STYLE_ON_OFF_DASH = 1,
#     XCB_LINE_STYLE_DOUBLE_DASH = 2
#   xcb_cap_style_t* = enum
#     XCB_CAP_STYLE_NOT_LAST = 0, XCB_CAP_STYLE_BUTT = 1, XCB_CAP_STYLE_ROUND = 2,
#     XCB_CAP_STYLE_PROJECTING = 3
#   xcb_join_style_t* = enum
#     XCB_JOIN_STYLE_MITER = 0, XCB_JOIN_STYLE_ROUND = 1, XCB_JOIN_STYLE_BEVEL = 2
#   xcb_fill_style_t* = enum
#     XCB_FILL_STYLE_SOLID = 0, XCB_FILL_STYLE_TILED = 1, XCB_FILL_STYLE_STIPPLED = 2,
#     XCB_FILL_STYLE_OPAQUE_STIPPLED = 3
#   xcb_fill_rule_t* = enum
#     XCB_FILL_RULE_EVEN_ODD = 0, XCB_FILL_RULE_WINDING = 1
#   xcb_subwindow_mode_t* = enum
#     XCB_SUBWINDOW_MODE_CLIP_BY_CHILDREN = 0,
#     XCB_SUBWINDOW_MODE_INCLUDE_INFERIORS = 1
#   xcb_arc_mode_t* = enum
#     XCB_ARC_MODE_CHORD = 0, XCB_ARC_MODE_PIE_SLICE = 1










# ## *
# ##  @brief xcb_create_gc_value_list_t
# ##

# type
#   xcb_create_gc_value_list_t* {.bycopy.} = object
#     function*: uint32
#     plane_mask*: uint32
#     foreground*: uint32
#     background*: uint32
#     line_width*: uint32
#     line_style*: uint32
#     cap_style*: uint32
#     join_style*: uint32
#     fill_style*: uint32
#     fill_rule*: uint32
#     tile*: xcb_pixmap_t
#     stipple*: xcb_pixmap_t
#     tile_stipple_x_origin*: int32
#     tile_stipple_y_origin*: int32
#     font*: xcb_font_t
#     subwindow_mode*: uint32
#     graphics_exposures*: xcb_bool32_t
#     clip_x_origin*: int32
#     clip_y_origin*: int32
#     clip_mask*: xcb_pixmap_t
#     dash_offset*: uint32
#     dashes*: uint32
#     arc_mode*: uint32


# ## * Opcode for xcb_create_gc.

# const
#   XCB_CREATE_GC* = 55

# ## *
# ##  @brief xcb_create_gc_request_t
# ##

# type
#   xcb_create_gc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cid*: xcb_gcontext_t
#     drawable*: xcb_drawable_t
#     value_mask*: uint32


# ## *
# ##  @brief xcb_change_gc_value_list_t
# ##

# type
#   xcb_change_gc_value_list_t* {.bycopy.} = object
#     function*: uint32
#     plane_mask*: uint32
#     foreground*: uint32
#     background*: uint32
#     line_width*: uint32
#     line_style*: uint32
#     cap_style*: uint32
#     join_style*: uint32
#     fill_style*: uint32
#     fill_rule*: uint32
#     tile*: xcb_pixmap_t
#     stipple*: xcb_pixmap_t
#     tile_stipple_x_origin*: int32
#     tile_stipple_y_origin*: int32
#     font*: xcb_font_t
#     subwindow_mode*: uint32
#     graphics_exposures*: xcb_bool32_t
#     clip_x_origin*: int32
#     clip_y_origin*: int32
#     clip_mask*: xcb_pixmap_t
#     dash_offset*: uint32
#     dashes*: uint32
#     arc_mode*: uint32


# ## * Opcode for xcb_change_gc.

# const
#   XCB_CHANGE_GC* = 56

# ## *
# ##  @brief xcb_change_gc_request_t
# ##

# type
#   xcb_change_gc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     gc*: xcb_gcontext_t
#     value_mask*: uint32


# ## * Opcode for xcb_copy_gc.

# const
#   XCB_COPY_GC* = 57

# ## *
# ##  @brief xcb_copy_gc_request_t
# ##

# type
#   xcb_copy_gc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     src_gc*: xcb_gcontext_t
#     dst_gc*: xcb_gcontext_t
#     value_mask*: uint32


# ## * Opcode for xcb_set_dashes.

# const
#   XCB_SET_DASHES* = 58

# ## *
# ##  @brief xcb_set_dashes_request_t
# ##

# type
#   xcb_set_dashes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     gc*: xcb_gcontext_t
#     dash_offset*: uint16
#     dashes_len*: uint16

#   xcb_clip_ordering_t* = enum
#     XCB_CLIP_ORDERING_UNSORTED = 0, XCB_CLIP_ORDERING_Y_SORTED = 1,
#     XCB_CLIP_ORDERING_YX_SORTED = 2, XCB_CLIP_ORDERING_YX_BANDED = 3


# ## * Opcode for xcb_set_clip_rectangles.

# const
#   XCB_SET_CLIP_RECTANGLES* = 59

# ## *
# ##  @brief xcb_set_clip_rectangles_request_t
# ##

# type
#   xcb_set_clip_rectangles_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     ordering*: uint8
#     length*: uint16
#     gc*: xcb_gcontext_t
#     clip_x_origin*: int16
#     clip_y_origin*: int16


# ## * Opcode for xcb_free_gc.

# const
#   XCB_FREE_GC* = 60

# ## *
# ##  @brief xcb_free_gc_request_t
# ##

# type
#   xcb_free_gc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_clear_area.

# const
#   XCB_CLEAR_AREA* = 61

# ## *
# ##  @brief xcb_clear_area_request_t
# ##

# type
#   xcb_clear_area_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     exposures*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16


# ## * Opcode for xcb_copy_area.

# const
#   XCB_COPY_AREA* = 62

# ## *
# ##  @brief xcb_copy_area_request_t
# ##

# type
#   xcb_copy_area_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     src_drawable*: xcb_drawable_t
#     dst_drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     src_x*: int16
#     src_y*: int16
#     dst_x*: int16
#     dst_y*: int16
#     width*: uint16
#     height*: uint16


# ## * Opcode for xcb_copy_plane.

# const
#   XCB_COPY_PLANE* = 63

# ## *
# ##  @brief xcb_copy_plane_request_t
# ##

# type
#   xcb_copy_plane_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     src_drawable*: xcb_drawable_t
#     dst_drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     src_x*: int16
#     src_y*: int16
#     dst_x*: int16
#     dst_y*: int16
#     width*: uint16
#     height*: uint16
#     bit_plane*: uint32

#   xcb_coord_mode_t* = enum
#     XCB_COORD_MODE_ORIGIN = 0,  ## *< Treats all coordinates as relative to the origin.
#     XCB_COORD_MODE_PREVIOUS = 1


# ## * Opcode for xcb_poly_point.

# const
#   XCB_POLY_POINT* = 64

# ## *
# ##  @brief xcb_poly_point_request_t
# ##

# type
#   xcb_poly_point_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     coordinate_mode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_poly_line.

# const
#   XCB_POLY_LINE* = 65

# ## *
# ##  @brief xcb_poly_line_request_t
# ##

# type
#   xcb_poly_line_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     coordinate_mode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t


# ## *
# ##  @brief xcb_segment_t
# ##

# type
#   xcb_segment_t* {.bycopy.} = object
#     x1*: int16
#     y1*: int16
#     x2*: int16
#     y2*: int16


# ## *
# ##  @brief xcb_segment_iterator_t
# ##

# type
#   xcb_segment_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_segment_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_poly_segment.

# const
#   XCB_POLY_SEGMENT* = 66

# ## *
# ##  @brief xcb_poly_segment_request_t
# ##

# type
#   xcb_poly_segment_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_poly_rectangle.

# const
#   XCB_POLY_RECTANGLE* = 67

# ## *
# ##  @brief xcb_poly_rectangle_request_t
# ##

# type
#   xcb_poly_rectangle_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_poly_arc.

# const
#   XCB_POLY_ARC* = 68

# ## *
# ##  @brief xcb_poly_arc_request_t
# ##

# type
#   xcb_poly_arc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t

#   xcb_poly_shape_t* = enum
#     XCB_POLY_SHAPE_COMPLEX = 0, XCB_POLY_SHAPE_NONCONVEX = 1,
#     XCB_POLY_SHAPE_CONVEX = 2


# ## * Opcode for xcb_fill_poly.

# const
#   XCB_FILL_POLY* = 69

# ## *
# ##  @brief xcb_fill_poly_request_t
# ##

# type
#   xcb_fill_poly_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     shape*: uint8
#     coordinate_mode*: uint8
#     pad1*: array[2, uint8]


# ## * Opcode for xcb_poly_fill_rectangle.

# const
#   XCB_POLY_FILL_RECTANGLE* = 70

# ## *
# ##  @brief xcb_poly_fill_rectangle_request_t
# ##

# type
#   xcb_poly_fill_rectangle_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t


# ## * Opcode for xcb_poly_fill_arc.

# const
#   XCB_POLY_FILL_ARC* = 71

# ## *
# ##  @brief xcb_poly_fill_arc_request_t
# ##

# type
#   xcb_poly_fill_arc_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t

#   xcb_image_format_t* = enum
#     XCB_IMAGE_FORMAT_XY_BITMAP = 0, XCB_IMAGE_FORMAT_XY_PIXMAP = 1,
#     XCB_IMAGE_FORMAT_Z_PIXMAP = 2


# ## * Opcode for xcb_put_image.

# const
#   XCB_PUT_IMAGE* = 72

# ## *
# ##  @brief xcb_put_image_request_t
# ##

# type
#   xcb_put_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     format*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     width*: uint16
#     height*: uint16
#     dst_x*: int16
#     dst_y*: int16
#     left_pad*: uint8
#     depth*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_get_image_cookie_t
# ##

# type
#   xcb_get_image_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_image.

# const
#   XCB_GET_IMAGE* = 73

# ## *
# ##  @brief xcb_get_image_request_t
# ##

# type
#   xcb_get_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     format*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     x*: int16
#     y*: int16
#     width*: uint16
#     height*: uint16
#     plane_mask*: uint32


# ## *
# ##  @brief xcb_get_image_reply_t
# ##

# type
#   xcb_get_image_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     depth*: uint8
#     sequence*: uint16
#     length*: uint32
#     visual*: xcb_visualid_t
#     pad0*: array[20, uint8]


# ## * Opcode for xcb_poly_text_8.

# const
#   XCB_POLY_TEXT_8* = 74

# ## *
# ##  @brief xcb_poly_text_8_request_t
# ##

# type
#   xcb_poly_text_8_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     x*: int16
#     y*: int16


# ## * Opcode for xcb_poly_text_16.

# const
#   XCB_POLY_TEXT_16* = 75

# ## *
# ##  @brief xcb_poly_text_16_request_t
# ##

# type
#   xcb_poly_text_16_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     x*: int16
#     y*: int16


# ## * Opcode for xcb_image_text_8.

# const
#   XCB_IMAGE_TEXT_8* = 76

# ## *
# ##  @brief xcb_image_text_8_request_t
# ##

# type
#   xcb_image_text_8_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     string_len*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     x*: int16
#     y*: int16


# ## * Opcode for xcb_image_text_16.

# const
#   XCB_IMAGE_TEXT_16* = 77

# ## *
# ##  @brief xcb_image_text_16_request_t
# ##

# type
#   xcb_image_text_16_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     string_len*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     x*: int16
#     y*: int16

#   xcb_colormap_alloc_t* = enum
#     XCB_COLORMAP_ALLOC_NONE = 0, XCB_COLORMAP_ALLOC_ALL = 1


# ## * Opcode for xcb_create_colormap.

# const
#   XCB_CREATE_COLORMAP* = 78

# ## *
# ##  @brief xcb_create_colormap_request_t
# ##

# type
#   xcb_create_colormap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     alloc*: uint8
#     length*: uint16
#     mid*: xcb_colormap_t
#     window*: xcb_window_t
#     visual*: xcb_visualid_t


# ## * Opcode for xcb_free_colormap.

# const
#   XCB_FREE_COLORMAP* = 79

# ## *
# ##  @brief xcb_free_colormap_request_t
# ##

# type
#   xcb_free_colormap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t


# ## * Opcode for xcb_copy_colormap_and_free.

# const
#   XCB_COPY_COLORMAP_AND_FREE* = 80

# ## *
# ##  @brief xcb_copy_colormap_and_free_request_t
# ##

# type
#   xcb_copy_colormap_and_free_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     mid*: xcb_colormap_t
#     src_cmap*: xcb_colormap_t


# ## * Opcode for xcb_install_colormap.

# const
#   XCB_INSTALL_COLORMAP* = 81

# ## *
# ##  @brief xcb_install_colormap_request_t
# ##

# type
#   xcb_install_colormap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t


# ## * Opcode for xcb_uninstall_colormap.

# const
#   XCB_UNINSTALL_COLORMAP* = 82

# ## *
# ##  @brief xcb_uninstall_colormap_request_t
# ##

# type
#   xcb_uninstall_colormap_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t


# ## *
# ##  @brief xcb_list_installed_colormaps_cookie_t
# ##

# type
#   xcb_list_installed_colormaps_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_installed_colormaps.

# const
#   XCB_LIST_INSTALLED_COLORMAPS* = 83

# ## *
# ##  @brief xcb_list_installed_colormaps_request_t
# ##

# type
#   xcb_list_installed_colormaps_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_list_installed_colormaps_reply_t
# ##

# type
#   xcb_list_installed_colormaps_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     cmaps_len*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_alloc_color_cookie_t
# ##

# type
#   xcb_alloc_color_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_alloc_color.

# const
#   XCB_ALLOC_COLOR* = 84

# ## *
# ##  @brief xcb_alloc_color_request_t
# ##

# type
#   xcb_alloc_color_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_alloc_color_reply_t
# ##

# type
#   xcb_alloc_color_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     pad1*: array[2, uint8]
#     pixel*: uint32


# ## *
# ##  @brief xcb_alloc_named_color_cookie_t
# ##

# type
#   xcb_alloc_named_color_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_alloc_named_color.

# const
#   XCB_ALLOC_NAMED_COLOR* = 85

# ## *
# ##  @brief xcb_alloc_named_color_request_t
# ##

# type
#   xcb_alloc_named_color_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     name_len*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_alloc_named_color_reply_t
# ##

# type
#   xcb_alloc_named_color_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pixel*: uint32
#     exact_red*: uint16
#     exact_green*: uint16
#     exact_blue*: uint16
#     visual_red*: uint16
#     visual_green*: uint16
#     visual_blue*: uint16


# ## *
# ##  @brief xcb_alloc_color_cells_cookie_t
# ##

# type
#   xcb_alloc_color_cells_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_alloc_color_cells.

# const
#   XCB_ALLOC_COLOR_CELLS* = 86

# ## *
# ##  @brief xcb_alloc_color_cells_request_t
# ##

# type
#   xcb_alloc_color_cells_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     contiguous*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     colors*: uint16
#     planes*: uint16


# ## *
# ##  @brief xcb_alloc_color_cells_reply_t
# ##

# type
#   xcb_alloc_color_cells_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pixels_len*: uint16
#     masks_len*: uint16
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_alloc_color_planes_cookie_t
# ##

# type
#   xcb_alloc_color_planes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_alloc_color_planes.

# const
#   XCB_ALLOC_COLOR_PLANES* = 87

# ## *
# ##  @brief xcb_alloc_color_planes_request_t
# ##

# type
#   xcb_alloc_color_planes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     contiguous*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     colors*: uint16
#     reds*: uint16
#     greens*: uint16
#     blues*: uint16


# ## *
# ##  @brief xcb_alloc_color_planes_reply_t
# ##

# type
#   xcb_alloc_color_planes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pixels_len*: uint16
#     pad1*: array[2, uint8]
#     red_mask*: uint32
#     green_mask*: uint32
#     blue_mask*: uint32
#     pad2*: array[8, uint8]


# ## * Opcode for xcb_free_colors.

# const
#   XCB_FREE_COLORS* = 88

# ## *
# ##  @brief xcb_free_colors_request_t
# ##

# type
#   xcb_free_colors_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     plane_mask*: uint32

#   xcb_color_flag_t* = enum
#     XCB_COLOR_FLAG_RED = 1, XCB_COLOR_FLAG_GREEN = 2, XCB_COLOR_FLAG_BLUE = 4


# ## *
# ##  @brief xcb_coloritem_t
# ##

# type
#   xcb_coloritem_t* {.bycopy.} = object
#     pixel*: uint32
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     flags*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_coloritem_iterator_t
# ##

# type
#   xcb_coloritem_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_coloritem_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_store_colors.

# const
#   XCB_STORE_COLORS* = 89

# ## *
# ##  @brief xcb_store_colors_request_t
# ##

# type
#   xcb_store_colors_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t


# ## * Opcode for xcb_store_named_color.

# const
#   XCB_STORE_NAMED_COLOR* = 90

# ## *
# ##  @brief xcb_store_named_color_request_t
# ##

# type
#   xcb_store_named_color_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     flags*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     pixel*: uint32
#     name_len*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_rgb_t
# ##

# type
#   xcb_rgb_t* {.bycopy.} = object
#     red*: uint16
#     green*: uint16
#     blue*: uint16
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_rgb_iterator_t
# ##

# type
#   xcb_rgb_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_rgb_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_query_colors_cookie_t
# ##

# type
#   xcb_query_colors_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_colors.

# const
#   XCB_QUERY_COLORS* = 91

# ## *
# ##  @brief xcb_query_colors_request_t
# ##

# type
#   xcb_query_colors_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t


# ## *
# ##  @brief xcb_query_colors_reply_t
# ##

# type
#   xcb_query_colors_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     colors_len*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_lookup_color_cookie_t
# ##

# type
#   xcb_lookup_color_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_lookup_color.

# const
#   XCB_LOOKUP_COLOR* = 92

# ## *
# ##  @brief xcb_lookup_color_request_t
# ##

# type
#   xcb_lookup_color_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cmap*: xcb_colormap_t
#     name_len*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_lookup_color_reply_t
# ##

# type
#   xcb_lookup_color_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     exact_red*: uint16
#     exact_green*: uint16
#     exact_blue*: uint16
#     visual_red*: uint16
#     visual_green*: uint16
#     visual_blue*: uint16

#   xcb_pixmap_enum_t* = enum
#     XCB_PIXMAP_NONE = 0


# ## * Opcode for xcb_create_cursor.

# const
#   XCB_CREATE_CURSOR* = 93

# ## *
# ##  @brief xcb_create_cursor_request_t
# ##

# type
#   xcb_create_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cid*: xcb_cursor_t
#     source*: xcb_pixmap_t
#     mask*: xcb_pixmap_t
#     fore_red*: uint16
#     fore_green*: uint16
#     fore_blue*: uint16
#     back_red*: uint16
#     back_green*: uint16
#     back_blue*: uint16
#     x*: uint16
#     y*: uint16

#   xcb_font_enum_t* = enum
#     XCB_FONT_NONE = 0


# ## * Opcode for xcb_create_glyph_cursor.

# const
#   XCB_CREATE_GLYPH_CURSOR* = 94

# ## *
# ##  @brief xcb_create_glyph_cursor_request_t
# ##

# type
#   xcb_create_glyph_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cid*: xcb_cursor_t
#     source_font*: xcb_font_t
#     mask_font*: xcb_font_t
#     source_char*: uint16
#     mask_char*: uint16
#     fore_red*: uint16
#     fore_green*: uint16
#     fore_blue*: uint16
#     back_red*: uint16
#     back_green*: uint16
#     back_blue*: uint16


# ## * Opcode for xcb_free_cursor.

# const
#   XCB_FREE_CURSOR* = 95

# ## *
# ##  @brief xcb_free_cursor_request_t
# ##

# type
#   xcb_free_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cursor*: xcb_cursor_t


# ## * Opcode for xcb_recolor_cursor.

# const
#   XCB_RECOLOR_CURSOR* = 96

# ## *
# ##  @brief xcb_recolor_cursor_request_t
# ##

# type
#   xcb_recolor_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     cursor*: xcb_cursor_t
#     fore_red*: uint16
#     fore_green*: uint16
#     fore_blue*: uint16
#     back_red*: uint16
#     back_green*: uint16
#     back_blue*: uint16

#   xcb_query_shape_of_t* = enum
#     XCB_QUERY_SHAPE_OF_LARGEST_CURSOR = 0, XCB_QUERY_SHAPE_OF_FASTEST_TILE = 1,
#     XCB_QUERY_SHAPE_OF_FASTEST_STIPPLE = 2


# ## *
# ##  @brief xcb_query_best_size_cookie_t
# ##

# type
#   xcb_query_best_size_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_best_size.

# const
#   XCB_QUERY_BEST_SIZE* = 97

# ## *
# ##  @brief xcb_query_best_size_request_t
# ##

# type
#   xcb_query_best_size_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     _class*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_query_best_size_reply_t
# ##

# type
#   xcb_query_best_size_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_query_extension_cookie_t
# ##

# type
#   xcb_query_extension_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_query_extension.

# const
#   XCB_QUERY_EXTENSION* = 98

# ## *
# ##  @brief xcb_query_extension_request_t
# ##

# type
#   xcb_query_extension_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     name_len*: uint16
#     pad1*: array[2, uint8]


# ## *
# ##  @brief xcb_query_extension_reply_t
# ##

# type
#   xcb_query_extension_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     present*: uint8
#     major_opcode*: uint8
#     first_event*: uint8
#     first_error*: uint8


# ## *
# ##  @brief xcb_list_extensions_cookie_t
# ##

# type
#   xcb_list_extensions_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_extensions.

# const
#   XCB_LIST_EXTENSIONS* = 99

# ## *
# ##  @brief xcb_list_extensions_request_t
# ##

# type
#   xcb_list_extensions_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_list_extensions_reply_t
# ##

# type
#   xcb_list_extensions_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     names_len*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## * Opcode for xcb_change_keyboard_mapping.

# const
#   XCB_CHANGE_KEYBOARD_MAPPING* = 100

# ## *
# ##  @brief xcb_change_keyboard_mapping_request_t
# ##

# type
#   xcb_change_keyboard_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     keycode_count*: uint8
#     length*: uint16
#     first_keycode*: xcb_keycode_t
#     keysyms_per_keycode*: uint8
#     pad0*: array[2, uint8]


# ## *
# ##  @brief xcb_get_keyboard_mapping_cookie_t
# ##

# type
#   xcb_get_keyboard_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_keyboard_mapping.

# const
#   XCB_GET_KEYBOARD_MAPPING* = 101

# ## *
# ##  @brief xcb_get_keyboard_mapping_request_t
# ##

# type
#   xcb_get_keyboard_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     first_keycode*: xcb_keycode_t
#     count*: uint8


# ## *
# ##  @brief xcb_get_keyboard_mapping_reply_t
# ##

# type
#   xcb_get_keyboard_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     keysyms_per_keycode*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]

#   xcb_kb_t* = enum
#     XCB_KB_KEY_CLICK_PERCENT = 1, XCB_KB_BELL_PERCENT = 2, XCB_KB_BELL_PITCH = 4,
#     XCB_KB_BELL_DURATION = 8, XCB_KB_LED = 16, XCB_KB_LED_MODE = 32, XCB_KB_KEY = 64,
#     XCB_KB_AUTO_REPEAT_MODE = 128
#   xcb_led_mode_t* = enum
#     XCB_LED_MODE_OFF = 0, XCB_LED_MODE_ON = 1
#   xcb_auto_repeat_mode_t* = enum
#     XCB_AUTO_REPEAT_MODE_OFF = 0, XCB_AUTO_REPEAT_MODE_ON = 1,
#     XCB_AUTO_REPEAT_MODE_DEFAULT = 2




# ## *
# ##  @brief xcb_change_keyboard_control_value_list_t
# ##

# type
#   xcb_change_keyboard_control_value_list_t* {.bycopy.} = object
#     key_click_percent*: int32
#     bell_percent*: int32
#     bell_pitch*: int32
#     bell_duration*: int32
#     led*: uint32
#     led_mode*: uint32
#     key*: xcb_keycode32_t
#     auto_repeat_mode*: uint32


# ## * Opcode for xcb_change_keyboard_control.

# const
#   XCB_CHANGE_KEYBOARD_CONTROL* = 102

# ## *
# ##  @brief xcb_change_keyboard_control_request_t
# ##

# type
#   xcb_change_keyboard_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     value_mask*: uint32


# ## *
# ##  @brief xcb_get_keyboard_control_cookie_t
# ##

# type
#   xcb_get_keyboard_control_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_keyboard_control.

# const
#   XCB_GET_KEYBOARD_CONTROL* = 103

# ## *
# ##  @brief xcb_get_keyboard_control_request_t
# ##

# type
#   xcb_get_keyboard_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_keyboard_control_reply_t
# ##

# type
#   xcb_get_keyboard_control_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     global_auto_repeat*: uint8
#     sequence*: uint16
#     length*: uint32
#     led_mask*: uint32
#     key_click_percent*: uint8
#     bell_percent*: uint8
#     bell_pitch*: uint16
#     bell_duration*: uint16
#     pad0*: array[2, uint8]
#     auto_repeats*: array[32, uint8]


# ## * Opcode for xcb_bell.

# const
#   XCB_BELL* = 104

# ## *
# ##  @brief xcb_bell_request_t
# ##

# type
#   xcb_bell_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     percent*: int8
#     length*: uint16


# ## * Opcode for xcb_change_pointer_control.

# const
#   XCB_CHANGE_POINTER_CONTROL* = 105

# ## *
# ##  @brief xcb_change_pointer_control_request_t
# ##

# type
#   xcb_change_pointer_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     acceleration_numerator*: int16
#     acceleration_denominator*: int16
#     threshold*: int16
#     do_acceleration*: uint8
#     do_threshold*: uint8


# ## *
# ##  @brief xcb_get_pointer_control_cookie_t
# ##

# type
#   xcb_get_pointer_control_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_pointer_control.

# const
#   XCB_GET_POINTER_CONTROL* = 106

# ## *
# ##  @brief xcb_get_pointer_control_request_t
# ##

# type
#   xcb_get_pointer_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_pointer_control_reply_t
# ##

# type
#   xcb_get_pointer_control_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     acceleration_numerator*: uint16
#     acceleration_denominator*: uint16
#     threshold*: uint16
#     pad1*: array[18, uint8]

#   xcb_blanking_t* = enum
#     XCB_BLANKING_NOT_PREFERRED = 0, XCB_BLANKING_PREFERRED = 1,
#     XCB_BLANKING_DEFAULT = 2
#   xcb_exposures_t* = enum
#     XCB_EXPOSURES_NOT_ALLOWED = 0, XCB_EXPOSURES_ALLOWED = 1,
#     XCB_EXPOSURES_DEFAULT = 2



# ## * Opcode for xcb_set_screen_saver.

# const
#   XCB_SET_SCREEN_SAVER* = 107

# ## *
# ##  @brief xcb_set_screen_saver_request_t
# ##

# type
#   xcb_set_screen_saver_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     timeout*: int16
#     interval*: int16
#     prefer_blanking*: uint8
#     allow_exposures*: uint8


# ## *
# ##  @brief xcb_get_screen_saver_cookie_t
# ##

# type
#   xcb_get_screen_saver_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_screen_saver.

# const
#   XCB_GET_SCREEN_SAVER* = 108

# ## *
# ##  @brief xcb_get_screen_saver_request_t
# ##

# type
#   xcb_get_screen_saver_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_screen_saver_reply_t
# ##

# type
#   xcb_get_screen_saver_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     timeout*: uint16
#     interval*: uint16
#     prefer_blanking*: uint8
#     allow_exposures*: uint8
#     pad1*: array[18, uint8]

#   xcb_host_mode_t* = enum
#     XCB_HOST_MODE_INSERT = 0, XCB_HOST_MODE_DELETE = 1
#   xcb_family_t* = enum
#     XCB_FAMILY_INTERNET = 0, XCB_FAMILY_DECNET = 1, XCB_FAMILY_CHAOS = 2,
#     XCB_FAMILY_SERVER_INTERPRETED = 5, XCB_FAMILY_INTERNET_6 = 6



# ## * Opcode for xcb_change_hosts.

# const
#   XCB_CHANGE_HOSTS* = 109

# ## *
# ##  @brief xcb_change_hosts_request_t
# ##

# type
#   xcb_change_hosts_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16
#     family*: uint8
#     pad0*: uint8
#     address_len*: uint16


# ## *
# ##  @brief xcb_host_t
# ##

# type
#   xcb_host_t* {.bycopy.} = object
#     family*: uint8
#     pad0*: uint8
#     address_len*: uint16


# ## *
# ##  @brief xcb_host_iterator_t
# ##

# type
#   xcb_host_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_host_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_list_hosts_cookie_t
# ##

# type
#   xcb_list_hosts_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_list_hosts.

# const
#   XCB_LIST_HOSTS* = 110

# ## *
# ##  @brief xcb_list_hosts_request_t
# ##

# type
#   xcb_list_hosts_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_list_hosts_reply_t
# ##

# type
#   xcb_list_hosts_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     mode*: uint8
#     sequence*: uint16
#     length*: uint32
#     hosts_len*: uint16
#     pad0*: array[22, uint8]

#   xcb_access_control_t* = enum
#     XCB_ACCESS_CONTROL_DISABLE = 0, XCB_ACCESS_CONTROL_ENABLE = 1


# ## * Opcode for xcb_set_access_control.

# const
#   XCB_SET_ACCESS_CONTROL* = 111

# ## *
# ##  @brief xcb_set_access_control_request_t
# ##

# type
#   xcb_set_access_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16

#   xcb_close_down_t* = enum
#     XCB_CLOSE_DOWN_DESTROY_ALL = 0, XCB_CLOSE_DOWN_RETAIN_PERMANENT = 1,
#     XCB_CLOSE_DOWN_RETAIN_TEMPORARY = 2


# ## * Opcode for xcb_set_close_down_mode.

# const
#   XCB_SET_CLOSE_DOWN_MODE* = 112

# ## *
# ##  @brief xcb_set_close_down_mode_request_t
# ##

# type
#   xcb_set_close_down_mode_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16

#   xcb_kill_t* = enum
#     XCB_KILL_ALL_TEMPORARY = 0


# ## * Opcode for xcb_kill_client.

# const
#   XCB_KILL_CLIENT* = 113

# ## *
# ##  @brief xcb_kill_client_request_t
# ##

# type
#   xcb_kill_client_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     resource*: uint32


# ## * Opcode for xcb_rotate_properties.

# const
#   XCB_ROTATE_PROPERTIES* = 114

# ## *
# ##  @brief xcb_rotate_properties_request_t
# ##

# type
#   xcb_rotate_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     atoms_len*: uint16
#     delta*: int16

#   xcb_screen_saver_t* = enum
#     XCB_SCREEN_SAVER_RESET = 0, XCB_SCREEN_SAVER_ACTIVE = 1


# ## * Opcode for xcb_force_screen_saver.

# const
#   XCB_FORCE_SCREEN_SAVER* = 115

# ## *
# ##  @brief xcb_force_screen_saver_request_t
# ##

# type
#   xcb_force_screen_saver_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     mode*: uint8
#     length*: uint16

#   xcb_mapping_status_t* = enum
#     XCB_MAPPING_STATUS_SUCCESS = 0, XCB_MAPPING_STATUS_BUSY = 1,
#     XCB_MAPPING_STATUS_FAILURE = 2


# ## *
# ##  @brief xcb_set_pointer_mapping_cookie_t
# ##

# type
#   xcb_set_pointer_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_set_pointer_mapping.

# const
#   XCB_SET_POINTER_MAPPING* = 116

# ## *
# ##  @brief xcb_set_pointer_mapping_request_t
# ##

# type
#   xcb_set_pointer_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     map_len*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_set_pointer_mapping_reply_t
# ##

# type
#   xcb_set_pointer_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32


# ## *
# ##  @brief xcb_get_pointer_mapping_cookie_t
# ##

# type
#   xcb_get_pointer_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_pointer_mapping.

# const
#   XCB_GET_POINTER_MAPPING* = 117

# ## *
# ##  @brief xcb_get_pointer_mapping_request_t
# ##

# type
#   xcb_get_pointer_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_pointer_mapping_reply_t
# ##

# type
#   xcb_get_pointer_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     map_len*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]

#   xcb_map_index_t* = enum
#     XCB_MAP_INDEX_SHIFT = 0, XCB_MAP_INDEX_LOCK = 1, XCB_MAP_INDEX_CONTROL = 2,
#     XCB_MAP_INDEX_1 = 3, XCB_MAP_INDEX_2 = 4, XCB_MAP_INDEX_3 = 5, XCB_MAP_INDEX_4 = 6,
#     XCB_MAP_INDEX_5 = 7


# ## *
# ##  @brief xcb_set_modifier_mapping_cookie_t
# ##

# type
#   xcb_set_modifier_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_set_modifier_mapping.

# const
#   XCB_SET_MODIFIER_MAPPING* = 118

# ## *
# ##  @brief xcb_set_modifier_mapping_request_t
# ##

# type
#   xcb_set_modifier_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     keycodes_per_modifier*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_set_modifier_mapping_reply_t
# ##

# type
#   xcb_set_modifier_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     status*: uint8
#     sequence*: uint16
#     length*: uint32


# ## *
# ##  @brief xcb_get_modifier_mapping_cookie_t
# ##

# type
#   xcb_get_modifier_mapping_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_get_modifier_mapping.

# const
#   XCB_GET_MODIFIER_MAPPING* = 119

# ## *
# ##  @brief xcb_get_modifier_mapping_request_t
# ##

# type
#   xcb_get_modifier_mapping_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_get_modifier_mapping_reply_t
# ##

# type
#   xcb_get_modifier_mapping_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     keycodes_per_modifier*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad0*: array[24, uint8]


# ## * Opcode for xcb_no_operation.

# const
#   XCB_NO_OPERATION* = 127

# ## *
# ##  @brief xcb_no_operation_request_t
# ##

# type
#   xcb_no_operation_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     pad0*: uint8
#     length*: uint16


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_char2b_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_char2b_t)
# ##

# proc xcb_char2b_next*(i: ptr xcb_char2b_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_char2b_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_char2b_end*(i: xcb_char2b_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_window_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_window_t)
# ##

# proc xcb_window_next*(i: ptr xcb_window_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_window_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_window_end*(i: xcb_window_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_pixmap_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_pixmap_t)
# ##

# proc xcb_pixmap_next*(i: ptr xcb_pixmap_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_pixmap_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_pixmap_end*(i: xcb_pixmap_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_cursor_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_cursor_t)
# ##

# proc xcb_cursor_next*(i: ptr xcb_cursor_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_cursor_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_cursor_end*(i: xcb_cursor_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_font_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_font_t)
# ##

# proc xcb_font_next*(i: ptr xcb_font_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_font_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_font_end*(i: xcb_font_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_gcontext_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_gcontext_t)
# ##

# proc xcb_gcontext_next*(i: ptr xcb_gcontext_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_gcontext_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_gcontext_end*(i: xcb_gcontext_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_colormap_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_colormap_t)
# ##

# proc xcb_colormap_next*(i: ptr xcb_colormap_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_colormap_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_colormap_end*(i: xcb_colormap_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_atom_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_atom_t)
# ##

# proc xcb_atom_next*(i: ptr xcb_atom_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_atom_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_atom_end*(i: xcb_atom_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_drawable_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_drawable_t)
# ##

# proc xcb_drawable_next*(i: ptr xcb_drawable_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_drawable_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_drawable_end*(i: xcb_drawable_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_fontable_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_fontable_t)
# ##

# proc xcb_fontable_next*(i: ptr xcb_fontable_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_fontable_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_fontable_end*(i: xcb_fontable_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_bool32_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_bool32_t)
# ##

# proc xcb_bool32_next*(i: ptr xcb_bool32_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_bool32_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_bool32_end*(i: xcb_bool32_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_visualid_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_visualid_t)
# ##

# proc xcb_visualid_next*(i: ptr xcb_visualid_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_visualid_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_visualid_end*(i: xcb_visualid_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_timestamp_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_timestamp_t)
# ##

# proc xcb_timestamp_next*(i: ptr xcb_timestamp_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_timestamp_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_timestamp_end*(i: xcb_timestamp_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_keysym_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_keysym_t)
# ##

# proc xcb_keysym_next*(i: ptr xcb_keysym_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_keysym_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_keysym_end*(i: xcb_keysym_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_keycode_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_keycode_t)
# ##

# proc xcb_keycode_next*(i: ptr xcb_keycode_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_keycode_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_keycode_end*(i: xcb_keycode_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_keycode32_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_keycode32_t)
# ##

# proc xcb_keycode32_next*(i: ptr xcb_keycode32_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_keycode32_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_keycode32_end*(i: xcb_keycode32_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_button_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_button_t)
# ##

# proc xcb_button_next*(i: ptr xcb_button_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_button_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_button_end*(i: xcb_button_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_point_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_point_t)
# ##

# proc xcb_point_next*(i: ptr xcb_point_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_point_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_point_end*(i: xcb_point_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_rectangle_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_rectangle_t)
# ##

# proc xcb_rectangle_next*(i: ptr xcb_rectangle_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_rectangle_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_rectangle_end*(i: xcb_rectangle_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_arc_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_arc_t)
# ##

# proc xcb_arc_next*(i: ptr xcb_arc_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_arc_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_arc_end*(i: xcb_arc_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_format_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_format_t)
# ##

# proc xcb_format_next*(i: ptr xcb_format_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_format_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_format_end*(i: xcb_format_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_visualtype_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_visualtype_t)
# ##

# proc xcb_visualtype_next*(i: ptr xcb_visualtype_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_visualtype_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_visualtype_end*(i: xcb_visualtype_iterator_t): xcb_generic_iterator_t
# proc xcb_depth_sizeof*(_buffer: pointer): cint
# proc xcb_depth_visuals*(R: ptr xcb_depth_t): ptr xcb_visualtype_t
# proc xcb_depth_visuals_length*(R: ptr xcb_depth_t): cint
# proc xcb_depth_visuals_iterator*(R: ptr xcb_depth_t): xcb_visualtype_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_depth_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_depth_t)
# ##

# proc xcb_depth_next*(i: ptr xcb_depth_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_depth_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_depth_end*(i: xcb_depth_iterator_t): xcb_generic_iterator_t
# proc xcb_screen_sizeof*(_buffer: pointer): cint
# proc xcb_screen_allowed_depths_length*(R: ptr xcb_screen_t): cint
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_screen_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_screen_t)
# ##

# proc xcb_screen_next*(i: ptr xcb_screen_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_screen_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_screen_end*(i: xcb_screen_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_request_sizeof*(_buffer: pointer): cint
# proc xcb_setup_request_authorization_protocol_name*(R: ptr xcb_setup_request_t): cstring
# proc xcb_setup_request_authorization_protocol_name_length*(
#     R: ptr xcb_setup_request_t): cint
# proc xcb_setup_request_authorization_protocol_name_end*(
#     R: ptr xcb_setup_request_t): xcb_generic_iterator_t
# proc xcb_setup_request_authorization_protocol_data*(R: ptr xcb_setup_request_t): cstring
# proc xcb_setup_request_authorization_protocol_data_length*(
#     R: ptr xcb_setup_request_t): cint
# proc xcb_setup_request_authorization_protocol_data_end*(
#     R: ptr xcb_setup_request_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_setup_request_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_setup_request_t)
# ##

# proc xcb_setup_request_next*(i: ptr xcb_setup_request_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_setup_request_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_setup_request_end*(i: xcb_setup_request_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_failed_sizeof*(_buffer: pointer): cint
# proc xcb_setup_failed_reason*(R: ptr xcb_setup_failed_t): cstring
# proc xcb_setup_failed_reason_length*(R: ptr xcb_setup_failed_t): cint
# proc xcb_setup_failed_reason_end*(R: ptr xcb_setup_failed_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_setup_failed_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_setup_failed_t)
# ##

# proc xcb_setup_failed_next*(i: ptr xcb_setup_failed_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_setup_failed_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_setup_failed_end*(i: xcb_setup_failed_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_authenticate_sizeof*(_buffer: pointer): cint
# proc xcb_setup_authenticate_reason*(R: ptr xcb_setup_authenticate_t): cstring
# proc xcb_setup_authenticate_reason_length*(R: ptr xcb_setup_authenticate_t): cint
# proc xcb_setup_authenticate_reason_end*(R: ptr xcb_setup_authenticate_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_setup_authenticate_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_setup_authenticate_t)
# ##

# proc xcb_setup_authenticate_next*(i: ptr xcb_setup_authenticate_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_setup_authenticate_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_setup_authenticate_end*(i: xcb_setup_authenticate_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_sizeof*(_buffer: pointer): cint
# proc xcb_setup_vendor*(R: ptr xcb_setup_t): cstring
# proc xcb_setup_vendor_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_vendor_end*(R: ptr xcb_setup_t): xcb_generic_iterator_t
# proc xcb_setup_pixmap_formats*(R: ptr xcb_setup_t): ptr xcb_format_t
# proc xcb_setup_pixmap_formats_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_pixmap_formats_iterator*(R: ptr xcb_setup_t): xcb_format_iterator_t
# proc xcb_setup_roots_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_roots_iterator*(R: ptr xcb_setup_t): xcb_screen_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_setup_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_setup_t)
# ##

# proc xcb_setup_next*(i: ptr xcb_setup_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_setup_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_setup_end*(i: xcb_setup_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_client_message_data_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_client_message_data_t)
# ##

# proc xcb_client_message_data_next*(i: ptr xcb_client_message_data_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_client_message_data_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_client_message_data_end*(i: xcb_client_message_data_iterator_t): xcb_generic_iterator_t
# proc xcb_create_window_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_create_window_value_list_t): cint
# proc xcb_create_window_value_list_unpack*(_buffer: pointer; value_mask: uint32;
#     _aux: ptr xcb_create_window_value_list_t): cint
# proc xcb_create_window_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_create_window_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Creates a window
# ##
# ##  @param c The connection
# ##  @param depth Specifies the new window's depth (TODO: what unit?).
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ##  \a parent window.
# ##  @param wid The ID with which you will refer to the new window, created by
# ##  `xcb_generate_id`.
# ##  @param parent The parent window of the new window.
# ##  @param x The X coordinate of the new window.
# ##  @param y The Y coordinate of the new window.
# ##  @param width The width of the new window.
# ##  @param height The height of the new window.
# ##  @param border_width TODO:
# ##  \n
# ##  Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ##  @param _class A bitmask of #xcb_window_class_t values.
# ##  @param _class \n
# ##  @param visual Specifies the id for the new window's visual.
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ##  \a parent window.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @return A cookie
# ##
# ##  Creates an unmapped window as child of the specified \a parent window. A
# ##  CreateNotify event will be generated. The new window is placed on top in the
# ##  stacking order with respect to siblings.
# ##
# ##  The coordinate system has the X axis horizontal and the Y axis vertical with
# ##  the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ##  of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ##  coordinate system. For a window, the origin is inside the border at the inside,
# ##  upper-left corner.
# ##
# ##  The created window is not yet displayed (mapped), call `xcb_map_window` to
# ##  display it.
# ##
# ##  The created window will initially use the same cursor as its parent.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_window_checked*(c: ptr xcb_connection_t; depth: uint8;
#                                wid: xcb_window_t; parent: xcb_window_t; x: int16;
#                                y: int16; width: uint16; height: uint16;
#                                border_width: uint16; _class: uint16;
#                                visual: xcb_visualid_t; value_mask: uint32;
#                                value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief Creates a window
# ##
# ##  @param c The connection
# ##  @param depth Specifies the new window's depth (TODO: what unit?).
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ##  \a parent window.
# ##  @param wid The ID with which you will refer to the new window, created by
# ##  `xcb_generate_id`.
# ##  @param parent The parent window of the new window.
# ##  @param x The X coordinate of the new window.
# ##  @param y The Y coordinate of the new window.
# ##  @param width The width of the new window.
# ##  @param height The height of the new window.
# ##  @param border_width TODO:
# ##  \n
# ##  Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ##  @param _class A bitmask of #xcb_window_class_t values.
# ##  @param _class \n
# ##  @param visual Specifies the id for the new window's visual.
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ##  \a parent window.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @return A cookie
# ##
# ##  Creates an unmapped window as child of the specified \a parent window. A
# ##  CreateNotify event will be generated. The new window is placed on top in the
# ##  stacking order with respect to siblings.
# ##
# ##  The coordinate system has the X axis horizontal and the Y axis vertical with
# ##  the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ##  of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ##  coordinate system. For a window, the origin is inside the border at the inside,
# ##  upper-left corner.
# ##
# ##  The created window is not yet displayed (mapped), call `xcb_map_window` to
# ##  display it.
# ##
# ##  The created window will initially use the same cursor as its parent.
# ##
# ##

# proc xcb_create_window*(c: ptr xcb_connection_t; depth: uint8; wid: xcb_window_t;
#                        parent: xcb_window_t; x: int16; y: int16; width: uint16;
#                        height: uint16; border_width: uint16; _class: uint16;
#                        visual: xcb_visualid_t; value_mask: uint32;
#                        value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief Creates a window
# ##
# ##  @param c The connection
# ##  @param depth Specifies the new window's depth (TODO: what unit?).
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ##  \a parent window.
# ##  @param wid The ID with which you will refer to the new window, created by
# ##  `xcb_generate_id`.
# ##  @param parent The parent window of the new window.
# ##  @param x The X coordinate of the new window.
# ##  @param y The Y coordinate of the new window.
# ##  @param width The width of the new window.
# ##  @param height The height of the new window.
# ##  @param border_width TODO:
# ##  \n
# ##  Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ##  @param _class A bitmask of #xcb_window_class_t values.
# ##  @param _class \n
# ##  @param visual Specifies the id for the new window's visual.
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ##  \a parent window.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @return A cookie
# ##
# ##  Creates an unmapped window as child of the specified \a parent window. A
# ##  CreateNotify event will be generated. The new window is placed on top in the
# ##  stacking order with respect to siblings.
# ##
# ##  The coordinate system has the X axis horizontal and the Y axis vertical with
# ##  the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ##  of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ##  coordinate system. For a window, the origin is inside the border at the inside,
# ##  upper-left corner.
# ##
# ##  The created window is not yet displayed (mapped), call `xcb_map_window` to
# ##  display it.
# ##
# ##  The created window will initially use the same cursor as its parent.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_window_aux_checked*(c: ptr xcb_connection_t; depth: uint8;
#                                    wid: xcb_window_t; parent: xcb_window_t;
#                                    x: int16; y: int16; width: uint16;
#                                    height: uint16; border_width: uint16;
#                                    _class: uint16; visual: xcb_visualid_t;
#                                    value_mask: uint32; value_list: ptr xcb_create_window_value_list_t): xcb_void_cookie_t
# ## *
# ##  @brief Creates a window
# ##
# ##  @param c The connection
# ##  @param depth Specifies the new window's depth (TODO: what unit?).
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ##  \a parent window.
# ##  @param wid The ID with which you will refer to the new window, created by
# ##  `xcb_generate_id`.
# ##  @param parent The parent window of the new window.
# ##  @param x The X coordinate of the new window.
# ##  @param y The Y coordinate of the new window.
# ##  @param width The width of the new window.
# ##  @param height The height of the new window.
# ##  @param border_width TODO:
# ##  \n
# ##  Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ##  @param _class A bitmask of #xcb_window_class_t values.
# ##  @param _class \n
# ##  @param visual Specifies the id for the new window's visual.
# ##  \n
# ##  The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ##  \a parent window.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @return A cookie
# ##
# ##  Creates an unmapped window as child of the specified \a parent window. A
# ##  CreateNotify event will be generated. The new window is placed on top in the
# ##  stacking order with respect to siblings.
# ##
# ##  The coordinate system has the X axis horizontal and the Y axis vertical with
# ##  the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ##  of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ##  coordinate system. For a window, the origin is inside the border at the inside,
# ##  upper-left corner.
# ##
# ##  The created window is not yet displayed (mapped), call `xcb_map_window` to
# ##  display it.
# ##
# ##  The created window will initially use the same cursor as its parent.
# ##
# ##

# proc xcb_create_window_aux*(c: ptr xcb_connection_t; depth: uint8;
#                            wid: xcb_window_t; parent: xcb_window_t; x: int16;
#                            y: int16; width: uint16; height: uint16;
#                            border_width: uint16; _class: uint16;
#                            visual: xcb_visualid_t; value_mask: uint32;
#                            value_list: ptr xcb_create_window_value_list_t): xcb_void_cookie_t
# proc xcb_create_window_value_list*(R: ptr xcb_create_window_request_t): pointer
# proc xcb_change_window_attributes_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_change_window_attributes_value_list_t): cint
# proc xcb_change_window_attributes_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_change_window_attributes_value_list_t): cint
# proc xcb_change_window_attributes_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_change_window_attributes_sizeof*(_buffer: pointer): cint

# ## *
# ##  @brief change window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to change.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the attributes specified by \a value_mask for the specified \a window.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_window_attributes_aux_checked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; value_mask: uint32;
#     value_list: ptr xcb_change_window_attributes_value_list_t): xcb_void_cookie_t
# ## *
# ##  @brief change window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to change.
# ##  @param value_mask A bitmask of #xcb_cw_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the attributes specified by \a value_mask for the specified \a window.
# ##
# ##

# proc xcb_change_window_attributes_aux*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; value_mask: uint32;
#     value_list: ptr xcb_change_window_attributes_value_list_t): xcb_void_cookie_t
# proc xcb_change_window_attributes_value_list*(
#     R: ptr xcb_change_window_attributes_request_t): pointer
# ## *
# ##  @brief Gets window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to get the attributes from.
# ##  @return A cookie
# ##
# ##  Gets the current attributes for the specified \a window.
# ##
# ##

# proc xcb_get_window_attributes*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_window_attributes_cookie_t
# ## *
# ##  @brief Gets window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to get the attributes from.
# ##  @return A cookie
# ##
# ##  Gets the current attributes for the specified \a window.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_window_attributes_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_get_window_attributes_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_window_attributes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_window_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_get_window_attributes_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_get_window_attributes_reply_t
# ## *
# ##  @brief Destroys a window
# ##
# ##  @param c The connection
# ##  @param window The window to destroy.
# ##  @return A cookie
# ##
# ##  Destroys the specified window and all of its subwindows. A DestroyNotify event
# ##  is generated for each destroyed window (a DestroyNotify event is first generated
# ##  for any given window's inferiors). If the window was mapped, it will be
# ##  automatically unmapped before destroying.
# ##
# ##  Calling DestroyWindow on the root window will do nothing.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_destroy_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Destroys a window
# ##
# ##  @param c The connection
# ##  @param window The window to destroy.
# ##  @return A cookie
# ##
# ##  Destroys the specified window and all of its subwindows. A DestroyNotify event
# ##  is generated for each destroyed window (a DestroyNotify event is first generated
# ##  for any given window's inferiors). If the window was mapped, it will be
# ##  automatically unmapped before destroying.
# ##
# ##  Calling DestroyWindow on the root window will do nothing.
# ##
# ##

# proc xcb_destroy_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_destroy_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_destroy_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Changes a client's save set
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_set_mode_t values.
# ##  @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
# ##  @param window The window to add or delete to/from your save set.
# ##  @return A cookie
# ##
# ##  TODO: explain what the save set is for.
# ##
# ##  This function either adds or removes the specified window to the client's (your
# ##  application's) save set.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_save_set_checked*(c: ptr xcb_connection_t; mode: uint8;
#                                  window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Changes a client's save set
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_set_mode_t values.
# ##  @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
# ##  @param window The window to add or delete to/from your save set.
# ##  @return A cookie
# ##
# ##  TODO: explain what the save set is for.
# ##
# ##  This function either adds or removes the specified window to the client's (your
# ##  application's) save set.
# ##
# ##

# proc xcb_change_save_set*(c: ptr xcb_connection_t; mode: uint8; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Reparents a window
# ##
# ##  @param c The connection
# ##  @param window The window to reparent.
# ##  @param parent The new parent of the window.
# ##  @param x The X position of the window within its new parent.
# ##  @param y The Y position of the window within its new parent.
# ##  @return A cookie
# ##
# ##  Makes the specified window a child of the specified parent window. If the
# ##  window is mapped, it will automatically be unmapped before reparenting and
# ##  re-mapped after reparenting. The window is placed in the stacking order on top
# ##  with respect to sibling windows.
# ##
# ##  After reparenting, a ReparentNotify event is generated.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_reparent_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                  parent: xcb_window_t; x: int16; y: int16): xcb_void_cookie_t
# ## *
# ##  @brief Reparents a window
# ##
# ##  @param c The connection
# ##  @param window The window to reparent.
# ##  @param parent The new parent of the window.
# ##  @param x The X position of the window within its new parent.
# ##  @param y The Y position of the window within its new parent.
# ##  @return A cookie
# ##
# ##  Makes the specified window a child of the specified parent window. If the
# ##  window is mapped, it will automatically be unmapped before reparenting and
# ##  re-mapped after reparenting. The window is placed in the stacking order on top
# ##  with respect to sibling windows.
# ##
# ##  After reparenting, a ReparentNotify event is generated.
# ##
# ##

# proc xcb_reparent_window*(c: ptr xcb_connection_t; window: xcb_window_t;
#                          parent: xcb_window_t; x: int16; y: int16): xcb_void_cookie_t
# ## *
# ##  @brief Makes a window visible
# ##
# ##  @param c The connection
# ##  @param window The window to make visible.
# ##  @return A cookie
# ##
# ##  Maps the specified window. This means making the window visible (as long as its
# ##  parent is visible).
# ##
# ##  This MapWindow request will be translated to a MapRequest request if a window
# ##  manager is running. The window manager then decides to either map the window or
# ##  not. Set the override-redirect window attribute to true if you want to bypass
# ##  this mechanism.
# ##
# ##  If the window manager decides to map the window (or if no window manager is
# ##  running), a MapNotify event is generated.
# ##
# ##  If the window becomes viewable and no earlier contents for it are remembered,
# ##  the X server tiles the window with its background. If the window's background
# ##  is undefined, the existing screen contents are not altered, and the X server
# ##  generates zero or more Expose events.
# ##
# ##  If the window type is InputOutput, an Expose event will be generated when the
# ##  window becomes visible. The normal response to an Expose event should be to
# ##  repaint the window.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_map_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Makes a window visible
# ##
# ##  @param c The connection
# ##  @param window The window to make visible.
# ##  @return A cookie
# ##
# ##  Maps the specified window. This means making the window visible (as long as its
# ##  parent is visible).
# ##
# ##  This MapWindow request will be translated to a MapRequest request if a window
# ##  manager is running. The window manager then decides to either map the window or
# ##  not. Set the override-redirect window attribute to true if you want to bypass
# ##  this mechanism.
# ##
# ##  If the window manager decides to map the window (or if no window manager is
# ##  running), a MapNotify event is generated.
# ##
# ##  If the window becomes viewable and no earlier contents for it are remembered,
# ##  the X server tiles the window with its background. If the window's background
# ##  is undefined, the existing screen contents are not altered, and the X server
# ##  generates zero or more Expose events.
# ##
# ##  If the window type is InputOutput, an Expose event will be generated when the
# ##  window becomes visible. The normal response to an Expose event should be to
# ##  repaint the window.
# ##
# ##

# proc xcb_map_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_map_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_map_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Makes a window invisible
# ##
# ##  @param c The connection
# ##  @param window The window to make invisible.
# ##  @return A cookie
# ##
# ##  Unmaps the specified window. This means making the window invisible (and all
# ##  its child windows).
# ##
# ##  Unmapping a window leads to the `UnmapNotify` event being generated. Also,
# ##  `Expose` events are generated for formerly obscured windows.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_unmap_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Makes a window invisible
# ##
# ##  @param c The connection
# ##  @param window The window to make invisible.
# ##  @return A cookie
# ##
# ##  Unmaps the specified window. This means making the window invisible (and all
# ##  its child windows).
# ##
# ##  Unmapping a window leads to the `UnmapNotify` event being generated. Also,
# ##  `Expose` events are generated for formerly obscured windows.
# ##
# ##

# proc xcb_unmap_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_unmap_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_unmap_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# proc xcb_configure_window_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint16; _aux: ptr xcb_configure_window_value_list_t): cint
# proc xcb_configure_window_value_list_unpack*(_buffer: pointer;
#     value_mask: uint16; _aux: ptr xcb_configure_window_value_list_t): cint
# proc xcb_configure_window_value_list_sizeof*(_buffer: pointer; value_mask: uint16): cint
# proc xcb_configure_window_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Configures window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to configure.
# ##  @param value_mask Bitmask of attributes to change.
# ##  @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ##  correspond to the order of possible \a value_mask bits. See the example.
# ##  @return A cookie
# ##
# ##  Configures a window's size, position, border width and stacking order.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_configure_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                   value_mask: uint16; value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief Configures window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to configure.
# ##  @param value_mask Bitmask of attributes to change.
# ##  @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ##  correspond to the order of possible \a value_mask bits. See the example.
# ##  @return A cookie
# ##
# ##  Configures a window's size, position, border width and stacking order.
# ##
# ##

# proc xcb_configure_window_aux_checked*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; value_mask: uint16;
#     value_list: ptr xcb_configure_window_value_list_t): xcb_void_cookie_t
# ## *
# ##  @brief Configures window attributes
# ##
# ##  @param c The connection
# ##  @param window The window to configure.
# ##  @param value_mask Bitmask of attributes to change.
# ##  @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ##  correspond to the order of possible \a value_mask bits. See the example.
# ##  @return A cookie
# ##
# ##  Configures a window's size, position, border width and stacking order.
# ##
# ##

# proc xcb_configure_window_aux*(c: ptr xcb_connection_t; window: xcb_window_t;
#                               value_mask: uint16;
#                               value_list: ptr xcb_configure_window_value_list_t): xcb_void_cookie_t
# proc xcb_configure_window_value_list*(R: ptr xcb_configure_window_request_t): pointer
# ## *
# ##  @brief Change window stacking order
# ##
# ##  @param c The connection
# ##  @param direction A bitmask of #xcb_circulate_t values.
# ##  @param direction \n
# ##  @param window The window to raise/lower (depending on \a direction).
# ##  @return A cookie
# ##
# ##  If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
# ##  any) will be raised to the top of the stack.
# ##
# ##  If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
# ##  be lowered to the bottom of the stack.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_circulate_window_checked*(c: ptr xcb_connection_t; direction: uint8;
#                                   window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Change window stacking order
# ##
# ##  @param c The connection
# ##  @param direction A bitmask of #xcb_circulate_t values.
# ##  @param direction \n
# ##  @param window The window to raise/lower (depending on \a direction).
# ##  @return A cookie
# ##
# ##  If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
# ##  any) will be raised to the top of the stack.
# ##
# ##  If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
# ##  be lowered to the bottom of the stack.
# ##
# ##

# proc xcb_circulate_window*(c: ptr xcb_connection_t; direction: uint8;
#                           window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##  @brief Get current window geometry
# ##
# ##  @param c The connection
# ##  @param drawable The drawable (`Window` or `Pixmap`) of which the geometry will be received.
# ##  @return A cookie
# ##
# ##  Gets the current geometry of the specified drawable (either `Window` or `Pixmap`).
# ##
# ##
# proc xcb_query_tree_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief query the window tree
# ##
# ##  @param c The connection
# ##  @param window The \a window to query.
# ##  @return A cookie
# ##
# ##  Gets the root window ID, parent window ID and list of children windows for the
# ##  specified \a window. The children are listed in bottom-to-top stacking order.
# ##
# ##

# proc xcb_query_tree*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_query_tree_cookie_t
# ## *
# ##  @brief query the window tree
# ##
# ##  @param c The connection
# ##  @param window The \a window to query.
# ##  @return A cookie
# ##
# ##  Gets the root window ID, parent window ID and list of children windows for the
# ##  specified \a window. The children are listed in bottom-to-top stacking order.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_tree_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_query_tree_cookie_t
# proc xcb_query_tree_children*(R: ptr xcb_query_tree_reply_t): ptr xcb_window_t
# proc xcb_query_tree_children_length*(R: ptr xcb_query_tree_reply_t): cint
# proc xcb_query_tree_children_end*(R: ptr xcb_query_tree_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_tree_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_tree_reply*(c: ptr xcb_connection_t; cookie: xcb_query_tree_cookie_t; ## *<
#                           e: ptr ptr xcb_generic_error_t): ptr xcb_query_tree_reply_t
# proc xcb_intern_atom_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Get atom identifier by name
# ##
# ##  @param c The connection
# ##  @param only_if_exists Return a valid atom id only if the atom already exists.
# ##  @param name_len The length of the following \a name.
# ##  @param name The name of the atom.
# ##  @return A cookie
# ##
# ##  Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
# ##  name. Atoms are used in protocols like EWMH, for example to store window titles
# ##  (`_NET_WM_NAME` atom) as property of a window.
# ##
# ##  If \a only_if_exists is 0, the atom will be created if it does not already exist.
# ##  If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
# ##  not yet exist.
# ##
# ##

# proc xcb_intern_atom*(c: ptr xcb_connection_t; only_if_exists: uint8;
#                      name_len: uint16; name: cstring): xcb_intern_atom_cookie_t
# ## *
# ##  @brief Get atom identifier by name
# ##
# ##  @param c The connection
# ##  @param only_if_exists Return a valid atom id only if the atom already exists.
# ##  @param name_len The length of the following \a name.
# ##  @param name The name of the atom.
# ##  @return A cookie
# ##
# ##  Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
# ##  name. Atoms are used in protocols like EWMH, for example to store window titles
# ##  (`_NET_WM_NAME` atom) as property of a window.
# ##
# ##  If \a only_if_exists is 0, the atom will be created if it does not already exist.
# ##  If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
# ##  not yet exist.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_intern_atom_unchecked*(c: ptr xcb_connection_t; only_if_exists: uint8;
#                                name_len: uint16; name: cstring): xcb_intern_atom_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_intern_atom_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_intern_atom_reply*(c: ptr xcb_connection_t; cookie: xcb_intern_atom_cookie_t; ## *<
#                            e: ptr ptr xcb_generic_error_t): ptr xcb_intern_atom_reply_t
# proc xcb_get_atom_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_atom_name_unchecked*(c: ptr xcb_connection_t; atom: xcb_atom_t): xcb_get_atom_name_cookie_t

# proc xcb_get_atom_name_name_length*(R: ptr xcb_get_atom_name_reply_t): cint
# proc xcb_get_atom_name_name_end*(R: ptr xcb_get_atom_name_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_atom_name_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_change_property_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Changes a window property
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_prop_mode_t values.
# ##  @param mode \n
# ##  @param window The window whose property you want to change.
# ##  @param property The property you want to change (an atom).
# ##  @param type The type of the property you want to change (an atom).
# ##  @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
# ##  32-bit quantities. Possible values are 8, 16 and 32. This information allows
# ##  the X server to correctly perform byte-swap operations as necessary.
# ##  @param data_len Specifies the number of elements (see \a format).
# ##  @param data The property data.
# ##  @return A cookie
# ##
# ##  Sets or updates a property on the specified \a window. Properties are for
# ##  example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ##  Protocols such as EWMH also use properties - for example EWMH defines the
# ##  window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_property_checked*(c: ptr xcb_connection_t; mode: uint8;
#                                  window: xcb_window_t; property: xcb_atom_t;
#                                  `type`: xcb_atom_t; format: uint8;
#                                  data_len: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ##  @brief Changes a window property
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_prop_mode_t values.
# ##  @param mode \n
# ##  @param window The window whose property you want to change.
# ##  @param property The property you want to change (an atom).
# ##  @param type The type of the property you want to change (an atom).
# ##  @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
# ##  32-bit quantities. Possible values are 8, 16 and 32. This information allows
# ##  the X server to correctly perform byte-swap operations as necessary.
# ##  @param data_len Specifies the number of elements (see \a format).
# ##  @param data The property data.
# ##  @return A cookie
# ##
# ##  Sets or updates a property on the specified \a window. Properties are for
# ##  example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ##  Protocols such as EWMH also use properties - for example EWMH defines the
# ##  window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ##

# proc xcb_change_property*(c: ptr xcb_connection_t; mode: uint8;
#                          window: xcb_window_t; property: xcb_atom_t;
#                          `type`: xcb_atom_t; format: uint8; data_len: uint32;
#                          data: pointer): xcb_void_cookie_t
# proc xcb_change_property_data*(R: ptr xcb_change_property_request_t): pointer
# proc xcb_change_property_data_length*(R: ptr xcb_change_property_request_t): cint
# proc xcb_change_property_data_end*(R: ptr xcb_change_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_delete_property_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                  property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_delete_property*(c: ptr xcb_connection_t; window: xcb_window_t;
#                          property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_get_property_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Gets a window property
# ##
# ##  @param c The connection
# ##  @param _delete Whether the property should actually be deleted. For deleting a property, the
# ##  specified \a type has to match the actual property type.
# ##  @param window The window whose property you want to get.
# ##  @param property The property you want to get (an atom).
# ##  @param type The type of the property you want to get (an atom).
# ##  @param long_offset Specifies the offset (in 32-bit multiples) in the specified property where the
# ##  data is to be retrieved.
# ##  @param long_length Specifies how many 32-bit multiples of data should be retrieved (e.g. if you
# ##  set \a long_length to 4, you will receive 16 bytes of data).
# ##  @return A cookie
# ##
# ##  Gets the specified \a property from the specified \a window. Properties are for
# ##  example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ##  Protocols such as EWMH also use properties - for example EWMH defines the
# ##  window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ##  TODO: talk about \a type
# ##
# ##  TODO: talk about `delete`
# ##
# ##  TODO: talk about the offset/length thing. what's a valid use case?
# ##
# ##





# proc xcb_get_property_value_end*(R: ptr xcb_get_property_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_property_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##



# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_properties_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_list_properties_cookie_t
# proc xcb_list_properties_atoms_end*(R: ptr xcb_list_properties_reply_t): xcb_generic_iterator_t

# proc xcb_set_selection_owner_checked*(c: ptr xcb_connection_t; owner: xcb_window_t;
#                                      selection: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief Sets the owner of a selection
# ##
# ##  @param c The connection
# ##  @param owner The new owner of the selection.
# ##  \n
# ##  The special value `XCB_NONE` means that the selection will have no owner.
# ##  @param selection The selection.
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The selection will not be changed if \a time is earlier than the current
# ##  last-change time of the \a selection or is later than the current X server time.
# ##  Otherwise, the last-change time is set to the specified time.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Makes `window` the owner of the selection \a selection and updates the
# ##  last-change time of the specified selection.
# ##
# ##  TODO: briefly explain what a selection is.
# ##
# ##

# proc xcb_set_selection_owner*(c: ptr xcb_connection_t; owner: xcb_window_t;
#                              selection: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief Gets the owner of a selection
# ##
# ##  @param c The connection
# ##  @param selection The selection.
# ##  @return A cookie
# ##
# ##  Gets the owner of the specified selection.
# ##
# ##  TODO: briefly explain what a selection is.
# ##
# ##

# proc xcb_get_selection_owner*(c: ptr xcb_connection_t; selection: xcb_atom_t): xcb_get_selection_owner_cookie_t
# ## *
# ##  @brief Gets the owner of a selection
# ##
# ##  @param c The connection
# ##  @param selection The selection.
# ##  @return A cookie
# ##
# ##  Gets the owner of the specified selection.
# ##
# ##  TODO: briefly explain what a selection is.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_selection_owner_unchecked*(c: ptr xcb_connection_t;
#                                        selection: xcb_atom_t): xcb_get_selection_owner_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_selection_owner_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_selection_owner_reply*(c: ptr xcb_connection_t; cookie: xcb_get_selection_owner_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_get_selection_owner_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_convert_selection_checked*(c: ptr xcb_connection_t;
#                                    requestor: xcb_window_t; selection: xcb_atom_t;
#                                    target: xcb_atom_t; property: xcb_atom_t;
#                                    time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_convert_selection*(c: ptr xcb_connection_t; requestor: xcb_window_t;
#                            selection: xcb_atom_t; target: xcb_atom_t;
#                            property: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief send an event
# ##
# ##  @param c The connection
# ##  @param propagate If \a propagate is true and no clients have selected any event on \a destination,
# ##  the destination is replaced with the closest ancestor of \a destination for
# ##  which some client has selected a type in \a event_mask and for which no
# ##  intervening window has that type in its do-not-propagate-mask. If no such
# ##  window exists or if the window is an ancestor of the focus window and
# ##  `InputFocus` was originally specified as the destination, the event is not sent
# ##  to any clients. Otherwise, the event is reported to every client selecting on
# ##  the final destination any of the types specified in \a event_mask.
# ##  @param destination The window to send this event to. Every client which selects any event within
# ##  \a event_mask on \a destination will get the event.
# ##  \n
# ##  The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
# ##  that contains the mouse pointer.
# ##  \n
# ##  The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
# ##  has the keyboard focus.
# ##  @param event_mask Event_mask for determining which clients should receive the specified event.
# ##  See \a destination and \a propagate.
# ##  @param event The event to send to the specified \a destination.
# ##  @return A cookie
# ##
# ##  Identifies the \a destination window, determines which clients should receive
# ##  the specified event and ignores any active grabs.
# ##
# ##  The \a event must be one of the core events or an event defined by an extension,
# ##  so that the X server can correctly byte-swap the contents as necessary. The
# ##  contents of \a event are otherwise unaltered and unchecked except for the
# ##  `send_event` field which is forced to 'true'.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_send_event_checked*(c: ptr xcb_connection_t; propagate: uint8;
#                             destination: xcb_window_t; event_mask: uint32;
#                             event: cstring): xcb_void_cookie_t
# ## *
# ##  @brief send an event
# ##
# ##  @param c The connection
# ##  @param propagate If \a propagate is true and no clients have selected any event on \a destination,
# ##  the destination is replaced with the closest ancestor of \a destination for
# ##  which some client has selected a type in \a event_mask and for which no
# ##  intervening window has that type in its do-not-propagate-mask. If no such
# ##  window exists or if the window is an ancestor of the focus window and
# ##  `InputFocus` was originally specified as the destination, the event is not sent
# ##  to any clients. Otherwise, the event is reported to every client selecting on
# ##  the final destination any of the types specified in \a event_mask.
# ##  @param destination The window to send this event to. Every client which selects any event within
# ##  \a event_mask on \a destination will get the event.
# ##  \n
# ##  The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
# ##  that contains the mouse pointer.
# ##  \n
# ##  The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
# ##  has the keyboard focus.
# ##  @param event_mask Event_mask for determining which clients should receive the specified event.
# ##  See \a destination and \a propagate.
# ##  @param event The event to send to the specified \a destination.
# ##  @return A cookie
# ##
# ##  Identifies the \a destination window, determines which clients should receive
# ##  the specified event and ignores any active grabs.
# ##
# ##  The \a event must be one of the core events or an event defined by an extension,
# ##  so that the X server can correctly byte-swap the contents as necessary. The
# ##  contents of \a event are otherwise unaltered and unchecked except for the
# ##  `send_event` field which is forced to 'true'.
# ##
# ##

# proc xcb_send_event*(c: ptr xcb_connection_t; propagate: uint8;
#                     destination: xcb_window_t; event_mask: uint32; event: cstring): xcb_void_cookie_t
# ## *
# ##  @brief Grab the pointer
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param event_mask Specifies which pointer events are reported to the client.
# ##  \n
# ##  TODO: which values?
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ##  move the pointer out of that window).
# ##  \n
# ##  The special value `XCB_NONE` means don't confine the pointer.
# ##  @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ##  cursor.
# ##  @param time The time argument allows you to avoid certain circumstances that come up if
# ##  applications take a long time to respond or if there are long network delays.
# ##  Consider a situation where you have two applications, both of which normally
# ##  grab the pointer when clicked on. If both applications specify the timestamp
# ##  from the event, the second application may wake up faster and successfully grab
# ##  the pointer before the first application. The first application then will get
# ##  an indication that the other application grabbed the pointer before its request
# ##  was processed.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
# ##
# ##


# ## *
# ##  @brief Grab the pointer
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param event_mask Specifies which pointer events are reported to the client.
# ##  \n
# ##  TODO: which values?
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ##  move the pointer out of that window).
# ##  \n
# ##  The special value `XCB_NONE` means don't confine the pointer.
# ##  @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ##  cursor.
# ##  @param time The time argument allows you to avoid certain circumstances that come up if
# ##  applications take a long time to respond or if there are long network delays.
# ##  Consider a situation where you have two applications, both of which normally
# ##  grab the pointer when clicked on. If both applications specify the timestamp
# ##  from the event, the second application may wake up faster and successfully grab
# ##  the pointer before the first application. The first application then will get
# ##  an indication that the other application grabbed the pointer before its request
# ##  was processed.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_grab_pointer_unchecked*(c: ptr xcb_connection_t; owner_events: uint8;
#                                 grab_window: xcb_window_t; event_mask: uint16;
#                                 pointer_mode: uint8; keyboard_mode: uint8;
#                                 confine_to: xcb_window_t; cursor: xcb_cursor_t;
#                                 time: xcb_timestamp_t): xcb_grab_pointer_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_grab_pointer_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_grab_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_grab_pointer_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_grab_pointer_reply_t
# ## *
# ##  @brief release the pointer
# ##
# ##  @param c The connection
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The pointer will not be released if \a time is earlier than the
# ##  last-pointer-grab time or later than the current X server time.
# ##  @return A cookie
# ##
# ##  Releases the pointer and any queued events if you actively grabbed the pointer
# ##  before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
# ##  press.
# ##
# ##  EnterNotify and LeaveNotify events are generated.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_ungrab_pointer_checked*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief release the pointer
# ##
# ##  @param c The connection
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The pointer will not be released if \a time is earlier than the
# ##  last-pointer-grab time or later than the current X server time.
# ##  @return A cookie
# ##
# ##  Releases the pointer and any queued events if you actively grabbed the pointer
# ##  before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
# ##  press.
# ##
# ##  EnterNotify and LeaveNotify events are generated.
# ##
# ##

# proc xcb_ungrab_pointer*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief Grab pointer button(s)
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param event_mask Specifies which pointer events are reported to the client.
# ##  \n
# ##  TODO: which values?
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ##  move the pointer out of that window).
# ##  \n
# ##  The special value `XCB_NONE` means don't confine the pointer.
# ##  @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ##  cursor.
# ##  @param button A bitmask of #xcb_button_index_t values.
# ##  @param button \n
# ##  @param modifiers The modifiers to grab.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ##  possible modifier combinations.
# ##  @return A cookie
# ##
# ##  This request establishes a passive grab. The pointer is actively grabbed as
# ##  described in GrabPointer, the last-pointer-grab time is set to the time at
# ##  which the button was pressed (as transmitted in the ButtonPress event), and the
# ##  ButtonPress event is reported if all of the following conditions are true:
# ##
# ##  The pointer is not grabbed and the specified button is logically pressed when
# ##  the specified modifier keys are logically down, and no other buttons or
# ##  modifier keys are logically down.
# ##
# ##  The grab-window contains the pointer.
# ##
# ##  The confine-to window (if any) is viewable.
# ##
# ##  A passive grab on the same button/key combination does not exist on any
# ##  ancestor of grab-window.
# ##
# ##  The interpretation of the remaining arguments is the same as for GrabPointer.
# ##  The active grab is terminated automatically when the logical state of the
# ##  pointer has all buttons released, independent of the logical state of modifier
# ##  keys. Note that the logical state of a device (as seen by means of the
# ##  protocol) may lag the physical state if device event processing is frozen. This
# ##  request overrides all previous passive grabs by the same client on the same
# ##  button/key combinations on the same window. A modifier 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
# ##  specified modifiers have currently assigned keycodes. A button of AnyButton is
# ##  equivalent to issuing the request for all possible buttons. Otherwise, it is
# ##  not required that the button specified currently be assigned to a physical
# ##  button.
# ##
# ##  An Access error is generated if some other client has already issued a
# ##  GrabButton request with the same button/key combination on the same window.
# ##  When using AnyModifier or AnyButton, the request fails completely (no grabs are
# ##  established), and an Access error is generated if there is a conflicting grab
# ##  for any combination. The request has no effect on an active grab.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_grab_button_checked*(c: ptr xcb_connection_t; owner_events: uint8;
#                              grab_window: xcb_window_t; event_mask: uint16;
#                              pointer_mode: uint8; keyboard_mode: uint8;
#                              confine_to: xcb_window_t; cursor: xcb_cursor_t;
#                              button: uint8; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##  @brief Grab pointer button(s)
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param event_mask Specifies which pointer events are reported to the client.
# ##  \n
# ##  TODO: which values?
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ##  move the pointer out of that window).
# ##  \n
# ##  The special value `XCB_NONE` means don't confine the pointer.
# ##  @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ##  cursor.
# ##  @param button A bitmask of #xcb_button_index_t values.
# ##  @param button \n
# ##  @param modifiers The modifiers to grab.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ##  possible modifier combinations.
# ##  @return A cookie
# ##
# ##  This request establishes a passive grab. The pointer is actively grabbed as
# ##  described in GrabPointer, the last-pointer-grab time is set to the time at
# ##  which the button was pressed (as transmitted in the ButtonPress event), and the
# ##  ButtonPress event is reported if all of the following conditions are true:
# ##
# ##  The pointer is not grabbed and the specified button is logically pressed when
# ##  the specified modifier keys are logically down, and no other buttons or
# ##  modifier keys are logically down.
# ##
# ##  The grab-window contains the pointer.
# ##
# ##  The confine-to window (if any) is viewable.
# ##
# ##  A passive grab on the same button/key combination does not exist on any
# ##  ancestor of grab-window.
# ##
# ##  The interpretation of the remaining arguments is the same as for GrabPointer.
# ##  The active grab is terminated automatically when the logical state of the
# ##  pointer has all buttons released, independent of the logical state of modifier
# ##  keys. Note that the logical state of a device (as seen by means of the
# ##  protocol) may lag the physical state if device event processing is frozen. This
# ##  request overrides all previous passive grabs by the same client on the same
# ##  button/key combinations on the same window. A modifier 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
# ##  specified modifiers have currently assigned keycodes. A button of AnyButton is
# ##  equivalent to issuing the request for all possible buttons. Otherwise, it is
# ##  not required that the button specified currently be assigned to a physical
# ##  button.
# ##
# ##  An Access error is generated if some other client has already issued a
# ##  GrabButton request with the same button/key combination on the same window.
# ##  When using AnyModifier or AnyButton, the request fails completely (no grabs are
# ##  established), and an Access error is generated if there is a conflicting grab
# ##  for any combination. The request has no effect on an active grab.
# ##
# ##

# proc xcb_grab_button*(c: ptr xcb_connection_t; owner_events: uint8;
#                      grab_window: xcb_window_t; event_mask: uint16;
#                      pointer_mode: uint8; keyboard_mode: uint8;
#                      confine_to: xcb_window_t; cursor: xcb_cursor_t;
#                      button: uint8; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_ungrab_button_checked*(c: ptr xcb_connection_t; button: uint8;
#                                grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_ungrab_button*(c: ptr xcb_connection_t; button: uint8;
#                        grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_active_pointer_grab_checked*(c: ptr xcb_connection_t;
#     cursor: xcb_cursor_t; time: xcb_timestamp_t; event_mask: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_active_pointer_grab*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
#                                     time: xcb_timestamp_t; event_mask: uint16): xcb_void_cookie_t
# ## *
# ##  @brief Grab the keyboard
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @return A cookie
# ##
# ##  Actively grabs control of the keyboard and generates FocusIn and FocusOut
# ##  events. Further key events are reported only to the grabbing client.
# ##
# ##  Any active keyboard grab by this client is overridden. If the keyboard is
# ##  actively grabbed by some other client, `AlreadyGrabbed` is returned. If
# ##  \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
# ##  is frozen by an active grab of another client, `GrabFrozen` is returned. If the
# ##  specified \a time is earlier than the last-keyboard-grab time or later than the
# ##  current X server time, `GrabInvalidTime` is returned. Otherwise, the
# ##  last-keyboard-grab time is set to the specified time.
# ##
# ##

# proc xcb_grab_keyboard*(c: ptr xcb_connection_t; owner_events: uint8;
#                        grab_window: xcb_window_t; time: xcb_timestamp_t;
#                        pointer_mode: uint8; keyboard_mode: uint8): xcb_grab_keyboard_cookie_t
# ## *
# ##  @brief Grab the keyboard
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @return A cookie
# ##
# ##  Actively grabs control of the keyboard and generates FocusIn and FocusOut
# ##  events. Further key events are reported only to the grabbing client.
# ##
# ##  Any active keyboard grab by this client is overridden. If the keyboard is
# ##  actively grabbed by some other client, `AlreadyGrabbed` is returned. If
# ##  \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
# ##  is frozen by an active grab of another client, `GrabFrozen` is returned. If the
# ##  specified \a time is earlier than the last-keyboard-grab time or later than the
# ##  current X server time, `GrabInvalidTime` is returned. Otherwise, the
# ##  last-keyboard-grab time is set to the specified time.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_grab_keyboard_unchecked*(c: ptr xcb_connection_t; owner_events: uint8;
#                                  grab_window: xcb_window_t; time: xcb_timestamp_t;
#                                  pointer_mode: uint8; keyboard_mode: uint8): xcb_grab_keyboard_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_grab_keyboard_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_grab_keyboard_reply*(c: ptr xcb_connection_t; cookie: xcb_grab_keyboard_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_grab_keyboard_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_ungrab_keyboard_checked*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_ungrab_keyboard*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief Grab keyboard key(s)
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param modifiers The modifiers to grab.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ##  possible modifier combinations.
# ##  @param key The keycode of the key to grab.
# ##  \n
# ##  The special value `XCB_GRAB_ANY` means grab any key.
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @return A cookie
# ##
# ##  Establishes a passive grab on the keyboard. In the future, the keyboard is
# ##  actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
# ##  the time at which the key was pressed (as transmitted in the KeyPress event),
# ##  and the KeyPress event is reported if all of the following conditions are true:
# ##
# ##  The keyboard is not grabbed and the specified key (which can itself be a
# ##  modifier key) is logically pressed when the specified modifier keys are
# ##  logically down, and no other modifier keys are logically down.
# ##
# ##  Either the grab_window is an ancestor of (or is) the focus window, or the
# ##  grab_window is a descendant of the focus window and contains the pointer.
# ##
# ##  A passive grab on the same key combination does not exist on any ancestor of
# ##  grab_window.
# ##
# ##  The interpretation of the remaining arguments is as for XGrabKeyboard.  The active grab is terminated
# ##  automatically when the logical state of the keyboard has the specified key released (independent of the
# ##  logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
# ##
# ##  Note that the logical state of a device (as seen by client applications) may lag the physical state if
# ##  device event processing is frozen.
# ##
# ##  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
# ##  have currently assigned KeyCodes.  A keycode argument of AnyKey is equivalent to issuing the request for
# ##  all possible KeyCodes.  Otherwise, the specified keycode must be in the range specified by min_keycode
# ##  and max_keycode in the connection setup, or a BadValue error results.
# ##
# ##  If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
# ##  error results.  When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
# ##  results (no grabs are established) if there is a conflicting grab for any combination.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_grab_key_checked*(c: ptr xcb_connection_t; owner_events: uint8;
#                           grab_window: xcb_window_t; modifiers: uint16;
#                           key: xcb_keycode_t; pointer_mode: uint8;
#                           keyboard_mode: uint8): xcb_void_cookie_t
# ## *
# ##  @brief Grab keyboard key(s)
# ##
# ##  @param c The connection
# ##  @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ##  reported to the \a grab_window.
# ##  @param grab_window Specifies the window on which the pointer should be grabbed.
# ##  @param modifiers The modifiers to grab.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ##  possible modifier combinations.
# ##  @param key The keycode of the key to grab.
# ##  \n
# ##  The special value `XCB_GRAB_ANY` means grab any key.
# ##  @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param pointer_mode \n
# ##  @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ##  @param keyboard_mode \n
# ##  @return A cookie
# ##
# ##  Establishes a passive grab on the keyboard. In the future, the keyboard is
# ##  actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
# ##  the time at which the key was pressed (as transmitted in the KeyPress event),
# ##  and the KeyPress event is reported if all of the following conditions are true:
# ##
# ##  The keyboard is not grabbed and the specified key (which can itself be a
# ##  modifier key) is logically pressed when the specified modifier keys are
# ##  logically down, and no other modifier keys are logically down.
# ##
# ##  Either the grab_window is an ancestor of (or is) the focus window, or the
# ##  grab_window is a descendant of the focus window and contains the pointer.
# ##
# ##  A passive grab on the same key combination does not exist on any ancestor of
# ##  grab_window.
# ##
# ##  The interpretation of the remaining arguments is as for XGrabKeyboard.  The active grab is terminated
# ##  automatically when the logical state of the keyboard has the specified key released (independent of the
# ##  logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
# ##
# ##  Note that the logical state of a device (as seen by client applications) may lag the physical state if
# ##  device event processing is frozen.
# ##
# ##  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
# ##  have currently assigned KeyCodes.  A keycode argument of AnyKey is equivalent to issuing the request for
# ##  all possible KeyCodes.  Otherwise, the specified keycode must be in the range specified by min_keycode
# ##  and max_keycode in the connection setup, or a BadValue error results.
# ##
# ##  If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
# ##  error results.  When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
# ##  results (no grabs are established) if there is a conflicting grab for any combination.
# ##
# ##

# proc xcb_grab_key*(c: ptr xcb_connection_t; owner_events: uint8;
#                   grab_window: xcb_window_t; modifiers: uint16;
#                   key: xcb_keycode_t; pointer_mode: uint8; keyboard_mode: uint8): xcb_void_cookie_t
# ## *
# ##  @brief release a key combination
# ##
# ##  @param c The connection
# ##  @param key The keycode of the specified key combination.
# ##  \n
# ##  Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
# ##  @param grab_window The window on which the grabbed key combination will be released.
# ##  @param modifiers The modifiers of the specified key combination.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
# ##  with every possible modifier combination.
# ##  @return A cookie
# ##
# ##  Releases the key combination on \a grab_window if you grabbed it using
# ##  `xcb_grab_key` before.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_ungrab_key_checked*(c: ptr xcb_connection_t; key: xcb_keycode_t;
#                             grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##  @brief release a key combination
# ##
# ##  @param c The connection
# ##  @param key The keycode of the specified key combination.
# ##  \n
# ##  Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
# ##  @param grab_window The window on which the grabbed key combination will be released.
# ##  @param modifiers The modifiers of the specified key combination.
# ##  \n
# ##  Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
# ##  with every possible modifier combination.
# ##  @return A cookie
# ##
# ##  Releases the key combination on \a grab_window if you grabbed it using
# ##  `xcb_grab_key` before.
# ##
# ##

# proc xcb_ungrab_key*(c: ptr xcb_connection_t; key: xcb_keycode_t;
#                     grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##  @brief release queued events
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_allow_t values.
# ##  @param mode \n
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Releases queued events if the client has caused a device (pointer/keyboard) to
# ##  freeze due to grabbing it actively. This request has no effect if \a time is
# ##  earlier than the last-grab time of the most recent active grab for this client
# ##  or if \a time is later than the current X server time.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_allow_events_checked*(c: ptr xcb_connection_t; mode: uint8;
#                               time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief release queued events
# ##
# ##  @param c The connection
# ##  @param mode A bitmask of #xcb_allow_t values.
# ##  @param mode \n
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Releases queued events if the client has caused a device (pointer/keyboard) to
# ##  freeze due to grabbing it actively. This request has no effect if \a time is
# ##  earlier than the last-grab time of the most recent active grab for this client
# ##  or if \a time is later than the current X server time.
# ##
# ##

# proc xcb_allow_events*(c: ptr xcb_connection_t; mode: uint8; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_grab_server_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_grab_server*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_ungrab_server_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_ungrab_server*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##  @brief get pointer coordinates
# ##
# ##  @param c The connection
# ##  @param window A window to check if the pointer is on the same screen as \a window (see the
# ##  `same_screen` field in the reply).
# ##  @return A cookie
# ##
# ##  Gets the root window the pointer is logically on and the pointer coordinates
# ##  relative to the root window's origin.
# ##

# proc xcb_timecoord_next*(i: ptr xcb_timecoord_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_timecoord_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_timecoord_end*(i: xcb_timecoord_iterator_t): xcb_generic_iterator_t
# proc xcb_get_motion_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_motion_events*(c: ptr xcb_connection_t; window: xcb_window_t;
#                            start: xcb_timestamp_t; stop: xcb_timestamp_t): xcb_get_motion_events_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_motion_events_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                      start: xcb_timestamp_t; stop: xcb_timestamp_t): xcb_get_motion_events_cookie_t
# proc xcb_get_motion_events_events*(R: ptr xcb_get_motion_events_reply_t): ptr xcb_timecoord_t
# proc xcb_get_motion_events_events_length*(R: ptr xcb_get_motion_events_reply_t): cint
# proc xcb_get_motion_events_events_iterator*(R: ptr xcb_get_motion_events_reply_t): xcb_timecoord_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_motion_events_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_motion_events_reply*(c: ptr xcb_connection_t; cookie: xcb_get_motion_events_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_get_motion_events_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_translate_coordinates*(c: ptr xcb_connection_t; src_window: xcb_window_t;
#                                dst_window: xcb_window_t; src_x: int16;
#                                src_y: int16): xcb_translate_coordinates_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_translate_coordinates_unchecked*(c: ptr xcb_connection_t;
#     src_window: xcb_window_t; dst_window: xcb_window_t; src_x: int16; src_y: int16): xcb_translate_coordinates_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_translate_coordinates_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_translate_coordinates_reply*(c: ptr xcb_connection_t; cookie: xcb_translate_coordinates_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_translate_coordinates_reply_t
# ## *
# ##  @brief move mouse pointer
# ##
# ##  @param c The connection
# ##  @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ##  pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ##  \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ##  \a src_window.
# ##  @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ##  offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ##  `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ##  relative to the current position of the pointer.
# ##  @return A cookie
# ##
# ##  Moves the mouse pointer to the specified position.
# ##
# ##  If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ##  pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ##  \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ##  \a src_window.
# ##
# ##  If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ##  offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ##  `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ##  relative to the current position of the pointer.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_warp_pointer_checked*(c: ptr xcb_connection_t; src_window: xcb_window_t;
#                               dst_window: xcb_window_t; src_x: int16;
#                               src_y: int16; src_width: uint16;
#                               src_height: uint16; dst_x: int16; dst_y: int16): xcb_void_cookie_t
# ## *
# ##  @brief move mouse pointer
# ##
# ##  @param c The connection
# ##  @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ##  pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ##  \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ##  \a src_window.
# ##  @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ##  offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ##  `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ##  relative to the current position of the pointer.
# ##  @return A cookie
# ##
# ##  Moves the mouse pointer to the specified position.
# ##
# ##  If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ##  pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ##  \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ##  \a src_window.
# ##
# ##  If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ##  offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ##  `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ##  relative to the current position of the pointer.
# ##
# ##

# proc xcb_warp_pointer*(c: ptr xcb_connection_t; src_window: xcb_window_t;
#                       dst_window: xcb_window_t; src_x: int16; src_y: int16;
#                       src_width: uint16; src_height: uint16; dst_x: int16;
#                       dst_y: int16): xcb_void_cookie_t
# ## *
# ##  @brief Sets input focus
# ##
# ##  @param c The connection
# ##  @param revert_to A bitmask of #xcb_input_focus_t values.
# ##  @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
# ##  is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
# ##  @param focus The window to focus. All keyboard events will be reported to this window. The
# ##  window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
# ##  \n
# ##  If \a focus is `XCB_NONE` (TODO), all keyboard events are
# ##  discarded until a new focus window is set.
# ##  \n
# ##  If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
# ##  screen on which the pointer is on currently.
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Changes the input focus and the last-focus-change time. If the specified \a time
# ##  is earlier than the current last-focus-change time, the request is ignored (to
# ##  avoid race conditions when running X over the network).
# ##
# ##  A FocusIn and FocusOut event is generated when focus is changed.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_input_focus_checked*(c: ptr xcb_connection_t; revert_to: uint8;
#                                  focus: xcb_window_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##  @brief Sets input focus
# ##
# ##  @param c The connection
# ##  @param revert_to A bitmask of #xcb_input_focus_t values.
# ##  @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
# ##  is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
# ##  @param focus The window to focus. All keyboard events will be reported to this window. The
# ##  window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
# ##  \n
# ##  If \a focus is `XCB_NONE` (TODO), all keyboard events are
# ##  discarded until a new focus window is set.
# ##  \n
# ##  If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
# ##  screen on which the pointer is on currently.
# ##  @param time Timestamp to avoid race conditions when running X over the network.
# ##  \n
# ##  The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ##  time.
# ##  @return A cookie
# ##
# ##  Changes the input focus and the last-focus-change time. If the specified \a time
# ##  is earlier than the current last-focus-change time, the request is ignored (to
# ##  avoid race conditions when running X over the network).
# ##
# ##  A FocusIn and FocusOut event is generated when focus is changed.
# ##
# ##

# proc xcb_set_input_focus*(c: ptr xcb_connection_t; revert_to: uint8;
#                          focus: xcb_window_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_input_focus*(c: ptr xcb_connection_t): xcb_get_input_focus_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_input_focus_unchecked*(c: ptr xcb_connection_t): xcb_get_input_focus_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_input_focus_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_input_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_get_input_focus_cookie_t; ## *<
#                                e: ptr ptr xcb_generic_error_t): ptr xcb_get_input_focus_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_query_keymap*(c: ptr xcb_connection_t): xcb_query_keymap_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_keymap_unchecked*(c: ptr xcb_connection_t): xcb_query_keymap_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_keymap_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_keymap_reply*(c: ptr xcb_connection_t; cookie: xcb_query_keymap_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_query_keymap_reply_t
# proc xcb_open_font_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief opens a font
# ##
# ##  @param c The connection
# ##  @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
# ##  @param name_len Length (in bytes) of \a name.
# ##  @param name A pattern describing an X core font.
# ##  @return A cookie
# ##
# ##  Opens any X core font matching the given \a name (for example "-misc-fixed-*").
# ##
# ##  Note that X core fonts are deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_open_font_checked*(c: ptr xcb_connection_t; fid: xcb_font_t;
#                            name_len: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ##  @brief opens a font
# ##
# ##  @param c The connection
# ##  @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
# ##  @param name_len Length (in bytes) of \a name.
# ##  @param name A pattern describing an X core font.
# ##  @return A cookie
# ##
# ##  Opens any X core font matching the given \a name (for example "-misc-fixed-*").
# ##
# ##  Note that X core fonts are deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##

# proc xcb_open_font*(c: ptr xcb_connection_t; fid: xcb_font_t; name_len: uint16;
#                    name: cstring): xcb_void_cookie_t
# proc xcb_open_font_name*(R: ptr xcb_open_font_request_t): cstring
# proc xcb_open_font_name_length*(R: ptr xcb_open_font_request_t): cint
# proc xcb_open_font_name_end*(R: ptr xcb_open_font_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_close_font_checked*(c: ptr xcb_connection_t; font: xcb_font_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_close_font*(c: ptr xcb_connection_t; font: xcb_font_t): xcb_void_cookie_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_fontprop_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_fontprop_t)
# ##

# proc xcb_fontprop_next*(i: ptr xcb_fontprop_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_fontprop_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_fontprop_end*(i: xcb_fontprop_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_charinfo_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_charinfo_t)
# ##

# proc xcb_charinfo_next*(i: ptr xcb_charinfo_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_charinfo_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_charinfo_end*(i: xcb_charinfo_iterator_t): xcb_generic_iterator_t
# proc xcb_query_font_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief query font metrics
# ##
# ##  @param c The connection
# ##  @param font The fontable (Font or Graphics Context) to query.
# ##  @return A cookie
# ##
# ##  Queries information associated with the font.
# ##
# ##

# proc xcb_query_font*(c: ptr xcb_connection_t; font: xcb_fontable_t): xcb_query_font_cookie_t
# ## *
# ##  @brief query font metrics
# ##
# ##  @param c The connection
# ##  @param font The fontable (Font or Graphics Context) to query.
# ##  @return A cookie
# ##
# ##  Queries information associated with the font.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_font_unchecked*(c: ptr xcb_connection_t; font: xcb_fontable_t): xcb_query_font_cookie_t
# proc xcb_query_font_properties*(R: ptr xcb_query_font_reply_t): ptr xcb_fontprop_t
# proc xcb_query_font_properties_length*(R: ptr xcb_query_font_reply_t): cint
# proc xcb_query_font_properties_iterator*(R: ptr xcb_query_font_reply_t): xcb_fontprop_iterator_t
# proc xcb_query_font_char_infos*(R: ptr xcb_query_font_reply_t): ptr xcb_charinfo_t
# proc xcb_query_font_char_infos_length*(R: ptr xcb_query_font_reply_t): cint
# proc xcb_query_font_char_infos_iterator*(R: ptr xcb_query_font_reply_t): xcb_charinfo_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_font_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_font_reply*(c: ptr xcb_connection_t; cookie: xcb_query_font_cookie_t; ## *<
#                           e: ptr ptr xcb_generic_error_t): ptr xcb_query_font_reply_t
# proc xcb_query_text_extents_sizeof*(_buffer: pointer; string_len: uint32): cint
# ## *
# ##  @brief get text extents
# ##
# ##  @param c The connection
# ##  @param font The \a font to calculate text extents in. You can also pass a graphics context.
# ##  @param string_len The number of characters in \a string.
# ##  @param string The text to get text extents for.
# ##  @return A cookie
# ##
# ##  Query text extents from the X11 server. This request returns the bounding box
# ##  of the specified 16-bit character string in the specified \a font or the font
# ##  contained in the specified graphics context.
# ##
# ##  `font_ascent` is set to the maximum of the ascent metrics of all characters in
# ##  the string. `font_descent` is set to the maximum of the descent metrics.
# ##  `overall_width` is set to the sum of the character-width metrics of all
# ##  characters in the string. For each character in the string, let W be the sum of
# ##  the character-width metrics of all characters preceding it in the string. Let L
# ##  be the left-side-bearing metric of the character plus W. Let R be the
# ##  right-side-bearing metric of the character plus W. The lbearing member is set
# ##  to the minimum L of all characters in the string. The rbearing member is set to
# ##  the maximum R.
# ##
# ##  For fonts defined with linear indexing rather than 2-byte matrix indexing, each
# ##  `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
# ##  most significant byte. If the font has no defined default character, undefined
# ##  characters in the string are taken to have all zero metrics.
# ##
# ##  Characters with all zero metrics are ignored. If the font has no defined
# ##  default_char, the undefined characters in the string are also ignored.
# ##
# ##

# proc xcb_query_text_extents*(c: ptr xcb_connection_t; font: xcb_fontable_t;
#                             string_len: uint32; string: ptr xcb_char2b_t): xcb_query_text_extents_cookie_t
# ## *
# ##  @brief get text extents
# ##
# ##  @param c The connection
# ##  @param font The \a font to calculate text extents in. You can also pass a graphics context.
# ##  @param string_len The number of characters in \a string.
# ##  @param string The text to get text extents for.
# ##  @return A cookie
# ##
# ##  Query text extents from the X11 server. This request returns the bounding box
# ##  of the specified 16-bit character string in the specified \a font or the font
# ##  contained in the specified graphics context.
# ##
# ##  `font_ascent` is set to the maximum of the ascent metrics of all characters in
# ##  the string. `font_descent` is set to the maximum of the descent metrics.
# ##  `overall_width` is set to the sum of the character-width metrics of all
# ##  characters in the string. For each character in the string, let W be the sum of
# ##  the character-width metrics of all characters preceding it in the string. Let L
# ##  be the left-side-bearing metric of the character plus W. Let R be the
# ##  right-side-bearing metric of the character plus W. The lbearing member is set
# ##  to the minimum L of all characters in the string. The rbearing member is set to
# ##  the maximum R.
# ##
# ##  For fonts defined with linear indexing rather than 2-byte matrix indexing, each
# ##  `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
# ##  most significant byte. If the font has no defined default character, undefined
# ##  characters in the string are taken to have all zero metrics.
# ##
# ##  Characters with all zero metrics are ignored. If the font has no defined
# ##  default_char, the undefined characters in the string are also ignored.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_text_extents_unchecked*(c: ptr xcb_connection_t;
#                                       font: xcb_fontable_t; string_len: uint32;
#                                       string: ptr xcb_char2b_t): xcb_query_text_extents_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_text_extents_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_text_extents_reply*(c: ptr xcb_connection_t; cookie: xcb_query_text_extents_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_query_text_extents_reply_t
# proc xcb_str_sizeof*(_buffer: pointer): cint
# proc xcb_str_name*(R: ptr xcb_str_t): cstring
# proc xcb_str_name_length*(R: ptr xcb_str_t): cint
# proc xcb_str_name_end*(R: ptr xcb_str_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_str_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_str_t)
# ##

# proc xcb_str_next*(i: ptr xcb_str_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_str_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_str_end*(i: xcb_str_iterator_t): xcb_generic_iterator_t
# proc xcb_list_fonts_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief get matching font names
# ##
# ##  @param c The connection
# ##  @param max_names The maximum number of fonts to be returned.
# ##  @param pattern_len The length (in bytes) of \a pattern.
# ##  @param pattern A font pattern, for example "-misc-fixed-*".
# ##  \n
# ##  The asterisk (*) is a wildcard for any number of characters. The question mark
# ##  (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ##  not matter.
# ##  @return A cookie
# ##
# ##  Gets a list of available font names which match the given \a pattern.
# ##
# ##

# proc xcb_list_fonts*(c: ptr xcb_connection_t; max_names: uint16;
#                     pattern_len: uint16; pattern: cstring): xcb_list_fonts_cookie_t
# ## *
# ##  @brief get matching font names
# ##
# ##  @param c The connection
# ##  @param max_names The maximum number of fonts to be returned.
# ##  @param pattern_len The length (in bytes) of \a pattern.
# ##  @param pattern A font pattern, for example "-misc-fixed-*".
# ##  \n
# ##  The asterisk (*) is a wildcard for any number of characters. The question mark
# ##  (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ##  not matter.
# ##  @return A cookie
# ##
# ##  Gets a list of available font names which match the given \a pattern.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_fonts_unchecked*(c: ptr xcb_connection_t; max_names: uint16;
#                               pattern_len: uint16; pattern: cstring): xcb_list_fonts_cookie_t
# proc xcb_list_fonts_names_length*(R: ptr xcb_list_fonts_reply_t): cint
# proc xcb_list_fonts_names_iterator*(R: ptr xcb_list_fonts_reply_t): xcb_str_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_list_fonts_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_list_fonts_reply*(c: ptr xcb_connection_t; cookie: xcb_list_fonts_cookie_t; ## *<
#                           e: ptr ptr xcb_generic_error_t): ptr xcb_list_fonts_reply_t
# proc xcb_list_fonts_with_info_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief get matching font names and information
# ##
# ##  @param c The connection
# ##  @param max_names The maximum number of fonts to be returned.
# ##  @param pattern_len The length (in bytes) of \a pattern.
# ##  @param pattern A font pattern, for example "-misc-fixed-*".
# ##  \n
# ##  The asterisk (*) is a wildcard for any number of characters. The question mark
# ##  (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ##  not matter.
# ##  @return A cookie
# ##
# ##  Gets a list of available font names which match the given \a pattern.
# ##
# ##

# proc xcb_list_fonts_with_info*(c: ptr xcb_connection_t; max_names: uint16;
#                               pattern_len: uint16; pattern: cstring): xcb_list_fonts_with_info_cookie_t
# ## *
# ##  @brief get matching font names and information
# ##
# ##  @param c The connection
# ##  @param max_names The maximum number of fonts to be returned.
# ##  @param pattern_len The length (in bytes) of \a pattern.
# ##  @param pattern A font pattern, for example "-misc-fixed-*".
# ##  \n
# ##  The asterisk (*) is a wildcard for any number of characters. The question mark
# ##  (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ##  not matter.
# ##  @return A cookie
# ##
# ##  Gets a list of available font names which match the given \a pattern.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_fonts_with_info_unchecked*(c: ptr xcb_connection_t;
#                                         max_names: uint16;
#                                         pattern_len: uint16; pattern: cstring): xcb_list_fonts_with_info_cookie_t
# proc xcb_list_fonts_with_info_properties*(R: ptr xcb_list_fonts_with_info_reply_t): ptr xcb_fontprop_t
# proc xcb_list_fonts_with_info_properties_length*(
#     R: ptr xcb_list_fonts_with_info_reply_t): cint
# proc xcb_list_fonts_with_info_properties_iterator*(
#     R: ptr xcb_list_fonts_with_info_reply_t): xcb_fontprop_iterator_t
# proc xcb_list_fonts_with_info_name*(R: ptr xcb_list_fonts_with_info_reply_t): cstring
# proc xcb_list_fonts_with_info_name_length*(
#     R: ptr xcb_list_fonts_with_info_reply_t): cint
# proc xcb_list_fonts_with_info_name_end*(R: ptr xcb_list_fonts_with_info_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_list_fonts_with_info_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_list_fonts_with_info_reply*(c: ptr xcb_connection_t; cookie: xcb_list_fonts_with_info_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_list_fonts_with_info_reply_t
# proc xcb_set_font_path_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_font_path_checked*(c: ptr xcb_connection_t; font_qty: uint16;
#                                font: ptr xcb_str_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_font_path*(c: ptr xcb_connection_t; font_qty: uint16;
#                        font: ptr xcb_str_t): xcb_void_cookie_t
# proc xcb_set_font_path_font_length*(R: ptr xcb_set_font_path_request_t): cint
# proc xcb_set_font_path_font_iterator*(R: ptr xcb_set_font_path_request_t): xcb_str_iterator_t
# proc xcb_get_font_path_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_font_path*(c: ptr xcb_connection_t): xcb_get_font_path_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_font_path_unchecked*(c: ptr xcb_connection_t): xcb_get_font_path_cookie_t
# proc xcb_get_font_path_path_length*(R: ptr xcb_get_font_path_reply_t): cint
# proc xcb_get_font_path_path_iterator*(R: ptr xcb_get_font_path_reply_t): xcb_str_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_font_path_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_font_path_reply*(c: ptr xcb_connection_t; cookie: xcb_get_font_path_cookie_t; ## *<
#                              e: ptr ptr xcb_generic_error_t): ptr xcb_get_font_path_reply_t
# ## *
# ##  @brief Creates a pixmap
# ##
# ##  @param c The connection
# ##  @param depth TODO
# ##  @param pid The ID with which you will refer to the new pixmap, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the screen from.
# ##  @param width The width of the new pixmap.
# ##  @param height The height of the new pixmap.
# ##  @return A cookie
# ##
# ##  Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
# ##  is on and only with drawables of the same \a depth.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_pixmap_checked*(c: ptr xcb_connection_t; depth: uint8;
#                                pid: xcb_pixmap_t; drawable: xcb_drawable_t;
#                                width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ##  @brief Creates a pixmap
# ##
# ##  @param c The connection
# ##  @param depth TODO
# ##  @param pid The ID with which you will refer to the new pixmap, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the screen from.
# ##  @param width The width of the new pixmap.
# ##  @param height The height of the new pixmap.
# ##  @return A cookie
# ##
# ##  Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
# ##  is on and only with drawables of the same \a depth.
# ##
# ##

# proc xcb_create_pixmap*(c: ptr xcb_connection_t; depth: uint8; pid: xcb_pixmap_t;
#                        drawable: xcb_drawable_t; width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ##  @brief Destroys a pixmap
# ##
# ##  @param c The connection
# ##  @param pixmap The pixmap to destroy.
# ##  @return A cookie
# ##
# ##  Deletes the association between the pixmap ID and the pixmap. The pixmap
# ##  storage will be freed when there are no more references to it.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_free_pixmap_checked*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##  @brief Destroys a pixmap
# ##
# ##  @param c The connection
# ##  @param pixmap The pixmap to destroy.
# ##  @return A cookie
# ##
# ##  Deletes the association between the pixmap ID and the pixmap. The pixmap
# ##  storage will be freed when there are no more references to it.
# ##
# ##

# proc xcb_free_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# proc xcb_create_gc_value_list_serialize*(_buffer: ptr pointer; value_mask: uint32;
#                                         _aux: ptr xcb_create_gc_value_list_t): cint
# proc xcb_create_gc_value_list_unpack*(_buffer: pointer; value_mask: uint32;
#                                      _aux: ptr xcb_create_gc_value_list_t): cint
# proc xcb_create_gc_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_create_gc_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Creates a graphics context
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the graphics context, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the root/depth from.
# ##  @return A cookie
# ##
# ##  Creates a graphics context. The graphics context can be used with any drawable
# ##  that has the same root and depth as the specified drawable.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_gc_checked*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
#                            drawable: xcb_drawable_t; value_mask: uint32;
#                            value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief Creates a graphics context
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the graphics context, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the root/depth from.
# ##  @return A cookie
# ##
# ##  Creates a graphics context. The graphics context can be used with any drawable
# ##  that has the same root and depth as the specified drawable.
# ##
# ##

# proc xcb_create_gc*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
#                    drawable: xcb_drawable_t; value_mask: uint32;
#                    value_list: pointer): xcb_void_cookie_t {.importc, cdecl.}
# ## *
# ##  @brief Creates a graphics context
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the graphics context, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the root/depth from.
# ##  @return A cookie
# ##
# ##  Creates a graphics context. The graphics context can be used with any drawable
# ##  that has the same root and depth as the specified drawable.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_gc_aux_checked*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
#                                drawable: xcb_drawable_t; value_mask: uint32;
#                                value_list: ptr xcb_create_gc_value_list_t): xcb_void_cookie_t
# ## *
# ##  @brief Creates a graphics context
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the graphics context, created by
# ##  `xcb_generate_id`.
# ##  @param drawable Drawable to get the root/depth from.
# ##  @return A cookie
# ##
# ##  Creates a graphics context. The graphics context can be used with any drawable
# ##  that has the same root and depth as the specified drawable.
# ##
# ##

# proc xcb_create_gc_aux*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
#                        drawable: xcb_drawable_t; value_mask: uint32;
#                        value_list: ptr xcb_create_gc_value_list_t): xcb_void_cookie_t
# proc xcb_create_gc_value_list*(R: ptr xcb_create_gc_request_t): pointer
# proc xcb_change_gc_value_list_serialize*(_buffer: ptr pointer; value_mask: uint32;
#                                         _aux: ptr xcb_change_gc_value_list_t): cint
# proc xcb_change_gc_value_list_unpack*(_buffer: pointer; value_mask: uint32;
#                                      _aux: ptr xcb_change_gc_value_list_t): cint
# proc xcb_change_gc_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_change_gc_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief change graphics context components
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to change.
# ##  @param value_mask A bitmask of #xcb_gc_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                            value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief change graphics context components
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to change.
# ##  @param value_mask A bitmask of #xcb_gc_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##

# proc xcb_change_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t; value_mask: uint32;
#                    value_list: pointer): xcb_void_cookie_t
# ## *
# ##  @brief change graphics context components
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to change.
# ##  @param value_mask A bitmask of #xcb_gc_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_gc_aux_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                                value_mask: uint32;
#                                value_list: ptr xcb_change_gc_value_list_t): xcb_void_cookie_t
# ## *
# ##  @brief change graphics context components
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to change.
# ##  @param value_mask A bitmask of #xcb_gc_t values.
# ##  @param value_mask \n
# ##  @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ##  order has to correspond to the order of possible \a value_mask bits. See the
# ##  example.
# ##  @return A cookie
# ##
# ##  Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##

# proc xcb_change_gc_aux*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                        value_mask: uint32;
#                        value_list: ptr xcb_change_gc_value_list_t): xcb_void_cookie_t
# proc xcb_change_gc_value_list*(R: ptr xcb_change_gc_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_copy_gc_checked*(c: ptr xcb_connection_t; src_gc: xcb_gcontext_t;
#                          dst_gc: xcb_gcontext_t; value_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_copy_gc*(c: ptr xcb_connection_t; src_gc: xcb_gcontext_t;
#                  dst_gc: xcb_gcontext_t; value_mask: uint32): xcb_void_cookie_t
# proc xcb_set_dashes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_dashes_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                             dash_offset: uint16; dashes_len: uint16;
#                             dashes: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_dashes*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
#                     dash_offset: uint16; dashes_len: uint16; dashes: ptr uint8): xcb_void_cookie_t
# proc xcb_set_dashes_dashes*(R: ptr xcb_set_dashes_request_t): ptr uint8
# proc xcb_set_dashes_dashes_length*(R: ptr xcb_set_dashes_request_t): cint
# proc xcb_set_dashes_dashes_end*(R: ptr xcb_set_dashes_request_t): xcb_generic_iterator_t
# proc xcb_set_clip_rectangles_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_clip_rectangles_checked*(c: ptr xcb_connection_t; ordering: uint8;
#                                      gc: xcb_gcontext_t; clip_x_origin: int16;
#                                      clip_y_origin: int16;
#                                      rectangles_len: uint32;
#                                      rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_clip_rectangles*(c: ptr xcb_connection_t; ordering: uint8;
#                              gc: xcb_gcontext_t; clip_x_origin: int16;
#                              clip_y_origin: int16; rectangles_len: uint32;
#                              rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_set_clip_rectangles_rectangles*(R: ptr xcb_set_clip_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_set_clip_rectangles_rectangles_length*(
#     R: ptr xcb_set_clip_rectangles_request_t): cint
# proc xcb_set_clip_rectangles_rectangles_iterator*(
#     R: ptr xcb_set_clip_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##  @brief Destroys a graphics context
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to destroy.
# ##  @return A cookie
# ##
# ##  Destroys the specified \a gc and all associated storage.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_free_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##  @brief Destroys a graphics context
# ##
# ##  @param c The connection
# ##  @param gc The graphics context to destroy.
# ##  @return A cookie
# ##
# ##  Destroys the specified \a gc and all associated storage.
# ##
# ##

# proc xcb_free_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_clear_area_checked*(c: ptr xcb_connection_t; exposures: uint8;
#                             window: xcb_window_t; x: int16; y: int16;
#                             width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_clear_area*(c: ptr xcb_connection_t; exposures: uint8;
#                     window: xcb_window_t; x: int16; y: int16; width: uint16;
#                     height: uint16): xcb_void_cookie_t
# ## *
# ##  @brief copy areas
# ##
# ##  @param c The connection
# ##  @param src_drawable The source drawable (Window or Pixmap).
# ##  @param dst_drawable The destination drawable (Window or Pixmap).
# ##  @param gc The graphics context to use.
# ##  @param src_x The source X coordinate.
# ##  @param src_y The source Y coordinate.
# ##  @param dst_x The destination X coordinate.
# ##  @param dst_y The destination Y coordinate.
# ##  @param width The width of the area to copy (in pixels).
# ##  @param height The height of the area to copy (in pixels).
# ##  @return A cookie
# ##
# ##  Copies the specified rectangle from \a src_drawable to \a dst_drawable.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_copy_area_checked*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
#                            dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                            src_x: int16; src_y: int16; dst_x: int16;
#                            dst_y: int16; width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ##  @brief copy areas
# ##
# ##  @param c The connection
# ##  @param src_drawable The source drawable (Window or Pixmap).
# ##  @param dst_drawable The destination drawable (Window or Pixmap).
# ##  @param gc The graphics context to use.
# ##  @param src_x The source X coordinate.
# ##  @param src_y The source Y coordinate.
# ##  @param dst_x The destination X coordinate.
# ##  @param dst_y The destination Y coordinate.
# ##  @param width The width of the area to copy (in pixels).
# ##  @param height The height of the area to copy (in pixels).
# ##  @return A cookie
# ##
# ##  Copies the specified rectangle from \a src_drawable to \a dst_drawable.
# ##
# ##

# proc xcb_copy_area*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
#                    dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t; src_x: int16;
#                    src_y: int16; dst_x: int16; dst_y: int16; width: uint16;
#                    height: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_copy_plane_checked*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
#                             dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                             src_x: int16; src_y: int16; dst_x: int16;
#                             dst_y: int16; width: uint16; height: uint16;
#                             bit_plane: uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_copy_plane*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
#                     dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                     src_x: int16; src_y: int16; dst_x: int16; dst_y: int16;
#                     width: uint16; height: uint16; bit_plane: uint32): xcb_void_cookie_t
# proc xcb_poly_point_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_point_checked*(c: ptr xcb_connection_t; coordinate_mode: uint8;
#                             drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                             points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_point*(c: ptr xcb_connection_t; coordinate_mode: uint8;
#                     drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                     points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_poly_point_points*(R: ptr xcb_poly_point_request_t): ptr xcb_point_t
# proc xcb_poly_point_points_length*(R: ptr xcb_poly_point_request_t): cint
# proc xcb_poly_point_points_iterator*(R: ptr xcb_poly_point_request_t): xcb_point_iterator_t
# proc xcb_poly_line_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##  @brief draw lines
# ##
# ##  @param c The connection
# ##  @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
# ##  @param coordinate_mode \n
# ##  @param drawable The drawable to draw the line(s) on.
# ##  @param gc The graphics context to use.
# ##  @param points_len The number of `xcb_point_t` structures in \a points.
# ##  @param points An array of points.
# ##  @return A cookie
# ##
# ##  Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
# ##  in the \a points array. The lines are drawn in the order listed in the array.
# ##  They join correctly at all intermediate points, and if the first and last
# ##  points coincide, the first and last lines also join correctly. For any given
# ##  line, a pixel is not drawn more than once. If thin (zero line-width) lines
# ##  intersect, the intersecting pixels are drawn multiple times. If wide lines
# ##  intersect, the intersecting pixels are drawn only once, as though the entire
# ##  request were a single, filled shape.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_line_checked*(c: ptr xcb_connection_t; coordinate_mode: uint8;
#                            drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                            points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ##  @brief draw lines
# ##
# ##  @param c The connection
# ##  @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
# ##  @param coordinate_mode \n
# ##  @param drawable The drawable to draw the line(s) on.
# ##  @param gc The graphics context to use.
# ##  @param points_len The number of `xcb_point_t` structures in \a points.
# ##  @param points An array of points.
# ##  @return A cookie
# ##
# ##  Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
# ##  in the \a points array. The lines are drawn in the order listed in the array.
# ##  They join correctly at all intermediate points, and if the first and last
# ##  points coincide, the first and last lines also join correctly. For any given
# ##  line, a pixel is not drawn more than once. If thin (zero line-width) lines
# ##  intersect, the intersecting pixels are drawn multiple times. If wide lines
# ##  intersect, the intersecting pixels are drawn only once, as though the entire
# ##  request were a single, filled shape.
# ##
# ##

# proc xcb_poly_line*(c: ptr xcb_connection_t; coordinate_mode: uint8;
#                    drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                    points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_poly_line_points*(R: ptr xcb_poly_line_request_t): ptr xcb_point_t
# proc xcb_poly_line_points_length*(R: ptr xcb_poly_line_request_t): cint
# proc xcb_poly_line_points_iterator*(R: ptr xcb_poly_line_request_t): xcb_point_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_segment_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_segment_t)
# ##

# proc xcb_segment_next*(i: ptr xcb_segment_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_segment_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_segment_end*(i: xcb_segment_iterator_t): xcb_generic_iterator_t
# proc xcb_poly_segment_sizeof*(_buffer: pointer; segments_len: uint32): cint
# ## *
# ##  @brief draw lines
# ##
# ##  @param c The connection
# ##  @param drawable A drawable (Window or Pixmap) to draw on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  TODO: document which attributes of a gc are used
# ##  @param segments_len The number of `xcb_segment_t` structures in \a segments.
# ##  @param segments An array of `xcb_segment_t` structures.
# ##  @return A cookie
# ##
# ##  Draws multiple, unconnected lines. For each segment, a line is drawn between
# ##  (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
# ##  `xcb_segment_t` structures and does not perform joining at coincident
# ##  endpoints. For any given line, a pixel is not drawn more than once. If lines
# ##  intersect, the intersecting pixels are drawn multiple times.
# ##
# ##  TODO: include the xcb_segment_t data structure
# ##
# ##  TODO: an example
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_segment_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                               gc: xcb_gcontext_t; segments_len: uint32;
#                               segments: ptr xcb_segment_t): xcb_void_cookie_t
# ## *
# ##  @brief draw lines
# ##
# ##  @param c The connection
# ##  @param drawable A drawable (Window or Pixmap) to draw on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  TODO: document which attributes of a gc are used
# ##  @param segments_len The number of `xcb_segment_t` structures in \a segments.
# ##  @param segments An array of `xcb_segment_t` structures.
# ##  @return A cookie
# ##
# ##  Draws multiple, unconnected lines. For each segment, a line is drawn between
# ##  (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
# ##  `xcb_segment_t` structures and does not perform joining at coincident
# ##  endpoints. For any given line, a pixel is not drawn more than once. If lines
# ##  intersect, the intersecting pixels are drawn multiple times.
# ##
# ##  TODO: include the xcb_segment_t data structure
# ##
# ##  TODO: an example
# ##
# ##

# proc xcb_poly_segment*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                       gc: xcb_gcontext_t; segments_len: uint32;
#                       segments: ptr xcb_segment_t): xcb_void_cookie_t
# proc xcb_poly_segment_segments*(R: ptr xcb_poly_segment_request_t): ptr xcb_segment_t
# proc xcb_poly_segment_segments_length*(R: ptr xcb_poly_segment_request_t): cint
# proc xcb_poly_segment_segments_iterator*(R: ptr xcb_poly_segment_request_t): xcb_segment_iterator_t
# proc xcb_poly_rectangle_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_rectangle_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                 gc: xcb_gcontext_t; rectangles_len: uint32;
#                                 rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_rectangle*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                         gc: xcb_gcontext_t; rectangles_len: uint32;
#                         rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_poly_rectangle_rectangles*(R: ptr xcb_poly_rectangle_request_t): ptr xcb_rectangle_t
# proc xcb_poly_rectangle_rectangles_length*(R: ptr xcb_poly_rectangle_request_t): cint
# proc xcb_poly_rectangle_rectangles_iterator*(R: ptr xcb_poly_rectangle_request_t): xcb_rectangle_iterator_t
# proc xcb_poly_arc_sizeof*(_buffer: pointer; arcs_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_arc_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                           gc: xcb_gcontext_t; arcs_len: uint32;
#                           arcs: ptr xcb_arc_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_arc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                   gc: xcb_gcontext_t; arcs_len: uint32; arcs: ptr xcb_arc_t): xcb_void_cookie_t
# proc xcb_poly_arc_arcs*(R: ptr xcb_poly_arc_request_t): ptr xcb_arc_t
# proc xcb_poly_arc_arcs_length*(R: ptr xcb_poly_arc_request_t): cint
# proc xcb_poly_arc_arcs_iterator*(R: ptr xcb_poly_arc_request_t): xcb_arc_iterator_t
# proc xcb_fill_poly_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_fill_poly_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                            gc: xcb_gcontext_t; shape: uint8;
#                            coordinate_mode: uint8; points_len: uint32;
#                            points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_fill_poly*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                    gc: xcb_gcontext_t; shape: uint8; coordinate_mode: uint8;
#                    points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_fill_poly_points*(R: ptr xcb_fill_poly_request_t): ptr xcb_point_t
# proc xcb_fill_poly_points_length*(R: ptr xcb_fill_poly_request_t): cint
# proc xcb_fill_poly_points_iterator*(R: ptr xcb_fill_poly_request_t): xcb_point_iterator_t
# proc xcb_poly_fill_rectangle_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##  @brief Fills rectangles
# ##
# ##  @param c The connection
# ##  @param drawable The drawable (Window or Pixmap) to draw on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: function, plane-mask,
# ##  fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  \n
# ##  The following graphics context mode-dependent components are used:
# ##  foreground, background, tile, stipple, tile-stipple-x-origin, and
# ##  tile-stipple-y-origin.
# ##  @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
# ##  @param rectangles The rectangles to fill.
# ##  @return A cookie
# ##
# ##  Fills the specified rectangle(s) in the order listed in the array. For any
# ##  given rectangle, each pixel is not drawn more than once. If rectangles
# ##  intersect, the intersecting pixels are drawn multiple times.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_fill_rectangle_checked*(c: ptr xcb_connection_t;
#                                      drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                                      rectangles_len: uint32;
#                                      rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##  @brief Fills rectangles
# ##
# ##  @param c The connection
# ##  @param drawable The drawable (Window or Pixmap) to draw on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: function, plane-mask,
# ##  fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  \n
# ##  The following graphics context mode-dependent components are used:
# ##  foreground, background, tile, stipple, tile-stipple-x-origin, and
# ##  tile-stipple-y-origin.
# ##  @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
# ##  @param rectangles The rectangles to fill.
# ##  @return A cookie
# ##
# ##  Fills the specified rectangle(s) in the order listed in the array. For any
# ##  given rectangle, each pixel is not drawn more than once. If rectangles
# ##  intersect, the intersecting pixels are drawn multiple times.
# ##
# ##

# proc xcb_poly_fill_rectangle*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                              gc: xcb_gcontext_t; rectangles_len: uint32;
#                              rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_poly_fill_rectangle_rectangles*(R: ptr xcb_poly_fill_rectangle_request_t): ptr xcb_rectangle_t
# proc xcb_poly_fill_rectangle_rectangles_length*(
#     R: ptr xcb_poly_fill_rectangle_request_t): cint
# proc xcb_poly_fill_rectangle_rectangles_iterator*(
#     R: ptr xcb_poly_fill_rectangle_request_t): xcb_rectangle_iterator_t
# proc xcb_poly_fill_arc_sizeof*(_buffer: pointer; arcs_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_fill_arc_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                gc: xcb_gcontext_t; arcs_len: uint32;
#                                arcs: ptr xcb_arc_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_fill_arc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                        gc: xcb_gcontext_t; arcs_len: uint32; arcs: ptr xcb_arc_t): xcb_void_cookie_t
# proc xcb_poly_fill_arc_arcs*(R: ptr xcb_poly_fill_arc_request_t): ptr xcb_arc_t
# proc xcb_poly_fill_arc_arcs_length*(R: ptr xcb_poly_fill_arc_request_t): cint
# proc xcb_poly_fill_arc_arcs_iterator*(R: ptr xcb_poly_fill_arc_request_t): xcb_arc_iterator_t
# proc xcb_put_image_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_put_image_checked*(c: ptr xcb_connection_t; format: uint8;
#                            drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                            width: uint16; height: uint16; dst_x: int16;
#                            dst_y: int16; left_pad: uint8; depth: uint8;
#                            data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_put_image*(c: ptr xcb_connection_t; format: uint8;
#                    drawable: xcb_drawable_t; gc: xcb_gcontext_t; width: uint16;
#                    height: uint16; dst_x: int16; dst_y: int16;
#                    left_pad: uint8; depth: uint8; data_len: uint32;
#                    data: ptr uint8): xcb_void_cookie_t
# proc xcb_put_image_data*(R: ptr xcb_put_image_request_t): ptr uint8
# proc xcb_put_image_data_length*(R: ptr xcb_put_image_request_t): cint
# proc xcb_put_image_data_end*(R: ptr xcb_put_image_request_t): xcb_generic_iterator_t
# proc xcb_get_image_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_image*(c: ptr xcb_connection_t; format: uint8;
#                    drawable: xcb_drawable_t; x: int16; y: int16; width: uint16;
#                    height: uint16; plane_mask: uint32): xcb_get_image_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_image_unchecked*(c: ptr xcb_connection_t; format: uint8;
#                              drawable: xcb_drawable_t; x: int16; y: int16;
#                              width: uint16; height: uint16; plane_mask: uint32): xcb_get_image_cookie_t
# proc xcb_get_image_data*(R: ptr xcb_get_image_reply_t): ptr uint8
# proc xcb_get_image_data_length*(R: ptr xcb_get_image_reply_t): cint
# proc xcb_get_image_data_end*(R: ptr xcb_get_image_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_image_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_image_reply*(c: ptr xcb_connection_t; cookie: xcb_get_image_cookie_t; ## *<
#                          e: ptr ptr xcb_generic_error_t): ptr xcb_get_image_reply_t
# proc xcb_poly_text_8_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_text_8_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                              gc: xcb_gcontext_t; x: int16; y: int16;
#                              items_len: uint32; items: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_text_8*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                      gc: xcb_gcontext_t; x: int16; y: int16; items_len: uint32;
#                      items: ptr uint8): xcb_void_cookie_t
# proc xcb_poly_text_8_items*(R: ptr xcb_poly_text_8_request_t): ptr uint8
# proc xcb_poly_text_8_items_length*(R: ptr xcb_poly_text_8_request_t): cint
# proc xcb_poly_text_8_items_end*(R: ptr xcb_poly_text_8_request_t): xcb_generic_iterator_t
# proc xcb_poly_text_16_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_poly_text_16_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                               gc: xcb_gcontext_t; x: int16; y: int16;
#                               items_len: uint32; items: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_poly_text_16*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                       gc: xcb_gcontext_t; x: int16; y: int16; items_len: uint32;
#                       items: ptr uint8): xcb_void_cookie_t
# proc xcb_poly_text_16_items*(R: ptr xcb_poly_text_16_request_t): ptr uint8
# proc xcb_poly_text_16_items_length*(R: ptr xcb_poly_text_16_request_t): cint
# proc xcb_poly_text_16_items_end*(R: ptr xcb_poly_text_16_request_t): xcb_generic_iterator_t
# proc xcb_image_text_8_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Draws text
# ##
# ##  @param c The connection
# ##  @param string_len The length of the \a string. Note that this parameter limited by 255 due to
# ##  using 8 bits!
# ##  @param drawable The drawable (Window or Pixmap) to draw text on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: plane-mask, foreground,
# ##  background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ##  @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ##  @param string The string to draw. Only the first 255 characters are relevant due to the data
# ##  type of \a string_len.
# ##  @return A cookie
# ##
# ##  Fills the destination rectangle with the background pixel from \a gc, then
# ##  paints the text with the foreground pixel from \a gc. The upper-left corner of
# ##  the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ##  the height is font-ascent + font-descent. The overall-width, font-ascent and
# ##  font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ##  Note that using X core fonts is deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_image_text_8_checked*(c: ptr xcb_connection_t; string_len: uint8;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               x: int16; y: int16; string: cstring): xcb_void_cookie_t
# ## *
# ##  @brief Draws text
# ##
# ##  @param c The connection
# ##  @param string_len The length of the \a string. Note that this parameter limited by 255 due to
# ##  using 8 bits!
# ##  @param drawable The drawable (Window or Pixmap) to draw text on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: plane-mask, foreground,
# ##  background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ##  @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ##  @param string The string to draw. Only the first 255 characters are relevant due to the data
# ##  type of \a string_len.
# ##  @return A cookie
# ##
# ##  Fills the destination rectangle with the background pixel from \a gc, then
# ##  paints the text with the foreground pixel from \a gc. The upper-left corner of
# ##  the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ##  the height is font-ascent + font-descent. The overall-width, font-ascent and
# ##  font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ##  Note that using X core fonts is deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##

# proc xcb_image_text_8*(c: ptr xcb_connection_t; string_len: uint8;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; x: int16;
#                       y: int16; string: cstring): xcb_void_cookie_t
# proc xcb_image_text_8_string*(R: ptr xcb_image_text_8_request_t): cstring
# proc xcb_image_text_8_string_length*(R: ptr xcb_image_text_8_request_t): cint
# proc xcb_image_text_8_string_end*(R: ptr xcb_image_text_8_request_t): xcb_generic_iterator_t
# proc xcb_image_text_16_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief Draws text
# ##
# ##  @param c The connection
# ##  @param string_len The length of the \a string in characters. Note that this parameter limited by
# ##  255 due to using 8 bits!
# ##  @param drawable The drawable (Window or Pixmap) to draw text on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: plane-mask, foreground,
# ##  background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ##  @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ##  @param string The string to draw. Only the first 255 characters are relevant due to the data
# ##  type of \a string_len. Every character uses 2 bytes (hence the 16 in this
# ##  request's name).
# ##  @return A cookie
# ##
# ##  Fills the destination rectangle with the background pixel from \a gc, then
# ##  paints the text with the foreground pixel from \a gc. The upper-left corner of
# ##  the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ##  the height is font-ascent + font-descent. The overall-width, font-ascent and
# ##  font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ##  Note that using X core fonts is deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_image_text_16_checked*(c: ptr xcb_connection_t; string_len: uint8;
#                                drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                                x: int16; y: int16; string: ptr xcb_char2b_t): xcb_void_cookie_t
# ## *
# ##  @brief Draws text
# ##
# ##  @param c The connection
# ##  @param string_len The length of the \a string in characters. Note that this parameter limited by
# ##  255 due to using 8 bits!
# ##  @param drawable The drawable (Window or Pixmap) to draw text on.
# ##  @param gc The graphics context to use.
# ##  \n
# ##  The following graphics context components are used: plane-mask, foreground,
# ##  background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ##  @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ##  @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ##  @param string The string to draw. Only the first 255 characters are relevant due to the data
# ##  type of \a string_len. Every character uses 2 bytes (hence the 16 in this
# ##  request's name).
# ##  @return A cookie
# ##
# ##  Fills the destination rectangle with the background pixel from \a gc, then
# ##  paints the text with the foreground pixel from \a gc. The upper-left corner of
# ##  the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ##  the height is font-ascent + font-descent. The overall-width, font-ascent and
# ##  font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ##  Note that using X core fonts is deprecated (but still supported) in favor of
# ##  client-side rendering using Xft.
# ##
# ##

# proc xcb_image_text_16*(c: ptr xcb_connection_t; string_len: uint8;
#                        drawable: xcb_drawable_t; gc: xcb_gcontext_t; x: int16;
#                        y: int16; string: ptr xcb_char2b_t): xcb_void_cookie_t
# proc xcb_image_text_16_string*(R: ptr xcb_image_text_16_request_t): ptr xcb_char2b_t
# proc xcb_image_text_16_string_length*(R: ptr xcb_image_text_16_request_t): cint
# proc xcb_image_text_16_string_iterator*(R: ptr xcb_image_text_16_request_t): xcb_char2b_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_colormap_checked*(c: ptr xcb_connection_t; alloc: uint8;
#                                  mid: xcb_colormap_t; window: xcb_window_t;
#                                  visual: xcb_visualid_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_create_colormap*(c: ptr xcb_connection_t; alloc: uint8;
#                          mid: xcb_colormap_t; window: xcb_window_t;
#                          visual: xcb_visualid_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_free_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_free_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_copy_colormap_and_free_checked*(c: ptr xcb_connection_t;
#                                         mid: xcb_colormap_t;
#                                         src_cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_copy_colormap_and_free*(c: ptr xcb_connection_t; mid: xcb_colormap_t;
#                                 src_cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_install_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_install_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_uninstall_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_uninstall_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# proc xcb_list_installed_colormaps_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_list_installed_colormaps*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_list_installed_colormaps_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_installed_colormaps_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_list_installed_colormaps_cookie_t
# proc xcb_list_installed_colormaps_cmaps*(R: ptr xcb_list_installed_colormaps_reply_t): ptr xcb_colormap_t
# proc xcb_list_installed_colormaps_cmaps_length*(
#     R: ptr xcb_list_installed_colormaps_reply_t): cint
# proc xcb_list_installed_colormaps_cmaps_end*(
#     R: ptr xcb_list_installed_colormaps_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_list_installed_colormaps_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_list_installed_colormaps_reply*(c: ptr xcb_connection_t; cookie: xcb_list_installed_colormaps_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_list_installed_colormaps_reply_t
# ## *
# ##  @brief Allocate a color
# ##
# ##  @param c The connection
# ##  @param cmap TODO
# ##  @param red The red value of your color.
# ##  @param green The green value of your color.
# ##  @param blue The blue value of your color.
# ##  @return A cookie
# ##
# ##  Allocates a read-only colormap entry corresponding to the closest RGB value
# ##  supported by the hardware. If you are using TrueColor, you can take a shortcut
# ##  and directly calculate the color pixel value to avoid the round trip. But, for
# ##  example, on 16-bit color setups (VNC), you can easily get the closest supported
# ##  RGB value to the RGB value you are specifying.
# ##
# ##

# proc xcb_alloc_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t; red: uint16;
#                      green: uint16; blue: uint16): xcb_alloc_color_cookie_t
# ## *
# ##  @brief Allocate a color
# ##
# ##  @param c The connection
# ##  @param cmap TODO
# ##  @param red The red value of your color.
# ##  @param green The green value of your color.
# ##  @param blue The blue value of your color.
# ##  @return A cookie
# ##
# ##  Allocates a read-only colormap entry corresponding to the closest RGB value
# ##  supported by the hardware. If you are using TrueColor, you can take a shortcut
# ##  and directly calculate the color pixel value to avoid the round trip. But, for
# ##  example, on 16-bit color setups (VNC), you can easily get the closest supported
# ##  RGB value to the RGB value you are specifying.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_alloc_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                                red: uint16; green: uint16; blue: uint16): xcb_alloc_color_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_alloc_color_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_alloc_color_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_cookie_t; ## *<
#                            e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_reply_t
# proc xcb_alloc_named_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_alloc_named_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                            name_len: uint16; name: cstring): xcb_alloc_named_color_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_alloc_named_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                                      name_len: uint16; name: cstring): xcb_alloc_named_color_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_alloc_named_color_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_alloc_named_color_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_named_color_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_named_color_reply_t
# proc xcb_alloc_color_cells_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_alloc_color_cells*(c: ptr xcb_connection_t; contiguous: uint8;
#                            cmap: xcb_colormap_t; colors: uint16; planes: uint16): xcb_alloc_color_cells_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_alloc_color_cells_unchecked*(c: ptr xcb_connection_t; contiguous: uint8;
#                                      cmap: xcb_colormap_t; colors: uint16;
#                                      planes: uint16): xcb_alloc_color_cells_cookie_t
# proc xcb_alloc_color_cells_pixels*(R: ptr xcb_alloc_color_cells_reply_t): ptr uint32
# proc xcb_alloc_color_cells_pixels_length*(R: ptr xcb_alloc_color_cells_reply_t): cint
# proc xcb_alloc_color_cells_pixels_end*(R: ptr xcb_alloc_color_cells_reply_t): xcb_generic_iterator_t
# proc xcb_alloc_color_cells_masks*(R: ptr xcb_alloc_color_cells_reply_t): ptr uint32
# proc xcb_alloc_color_cells_masks_length*(R: ptr xcb_alloc_color_cells_reply_t): cint
# proc xcb_alloc_color_cells_masks_end*(R: ptr xcb_alloc_color_cells_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_alloc_color_cells_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_alloc_color_cells_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_cells_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_cells_reply_t
# proc xcb_alloc_color_planes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_alloc_color_planes*(c: ptr xcb_connection_t; contiguous: uint8;
#                             cmap: xcb_colormap_t; colors: uint16; reds: uint16;
#                             greens: uint16; blues: uint16): xcb_alloc_color_planes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_alloc_color_planes_unchecked*(c: ptr xcb_connection_t; contiguous: uint8;
#                                       cmap: xcb_colormap_t; colors: uint16;
#                                       reds: uint16; greens: uint16;
#                                       blues: uint16): xcb_alloc_color_planes_cookie_t
# proc xcb_alloc_color_planes_pixels*(R: ptr xcb_alloc_color_planes_reply_t): ptr uint32
# proc xcb_alloc_color_planes_pixels_length*(R: ptr xcb_alloc_color_planes_reply_t): cint
# proc xcb_alloc_color_planes_pixels_end*(R: ptr xcb_alloc_color_planes_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_alloc_color_planes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_alloc_color_planes_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_planes_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_planes_reply_t
# proc xcb_free_colors_sizeof*(_buffer: pointer; pixels_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_free_colors_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                              plane_mask: uint32; pixels_len: uint32;
#                              pixels: ptr uint32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_free_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                      plane_mask: uint32; pixels_len: uint32;
#                      pixels: ptr uint32): xcb_void_cookie_t
# proc xcb_free_colors_pixels*(R: ptr xcb_free_colors_request_t): ptr uint32
# proc xcb_free_colors_pixels_length*(R: ptr xcb_free_colors_request_t): cint
# proc xcb_free_colors_pixels_end*(R: ptr xcb_free_colors_request_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_coloritem_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_coloritem_t)
# ##

# proc xcb_coloritem_next*(i: ptr xcb_coloritem_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_coloritem_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_coloritem_end*(i: xcb_coloritem_iterator_t): xcb_generic_iterator_t
# proc xcb_store_colors_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_store_colors_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                               items_len: uint32; items: ptr xcb_coloritem_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_store_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                       items_len: uint32; items: ptr xcb_coloritem_t): xcb_void_cookie_t
# proc xcb_store_colors_items*(R: ptr xcb_store_colors_request_t): ptr xcb_coloritem_t
# proc xcb_store_colors_items_length*(R: ptr xcb_store_colors_request_t): cint
# proc xcb_store_colors_items_iterator*(R: ptr xcb_store_colors_request_t): xcb_coloritem_iterator_t
# proc xcb_store_named_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_store_named_color_checked*(c: ptr xcb_connection_t; flags: uint8;
#                                    cmap: xcb_colormap_t; pixel: uint32;
#                                    name_len: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_store_named_color*(c: ptr xcb_connection_t; flags: uint8;
#                            cmap: xcb_colormap_t; pixel: uint32;
#                            name_len: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_store_named_color_name*(R: ptr xcb_store_named_color_request_t): cstring
# proc xcb_store_named_color_name_length*(R: ptr xcb_store_named_color_request_t): cint
# proc xcb_store_named_color_name_end*(R: ptr xcb_store_named_color_request_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_rgb_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_rgb_t)
# ##

# proc xcb_rgb_next*(i: ptr xcb_rgb_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_rgb_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_rgb_end*(i: xcb_rgb_iterator_t): xcb_generic_iterator_t
# proc xcb_query_colors_sizeof*(_buffer: pointer; pixels_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_query_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                       pixels_len: uint32; pixels: ptr uint32): xcb_query_colors_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_colors_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                                 pixels_len: uint32; pixels: ptr uint32): xcb_query_colors_cookie_t
# proc xcb_query_colors_colors*(R: ptr xcb_query_colors_reply_t): ptr xcb_rgb_t
# proc xcb_query_colors_colors_length*(R: ptr xcb_query_colors_reply_t): cint
# proc xcb_query_colors_colors_iterator*(R: ptr xcb_query_colors_reply_t): xcb_rgb_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_colors_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_colors_reply*(c: ptr xcb_connection_t; cookie: xcb_query_colors_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_query_colors_reply_t
# proc xcb_lookup_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_lookup_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                       name_len: uint16; name: cstring): xcb_lookup_color_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_lookup_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
#                                 name_len: uint16; name: cstring): xcb_lookup_color_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_lookup_color_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_lookup_color_reply*(c: ptr xcb_connection_t; cookie: xcb_lookup_color_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_lookup_color_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                                source: xcb_pixmap_t; mask: xcb_pixmap_t;
#                                fore_red: uint16; fore_green: uint16;
#                                fore_blue: uint16; back_red: uint16;
#                                back_green: uint16; back_blue: uint16;
#                                x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_create_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                        source: xcb_pixmap_t; mask: xcb_pixmap_t; fore_red: uint16;
#                        fore_green: uint16; fore_blue: uint16;
#                        back_red: uint16; back_green: uint16;
#                        back_blue: uint16; x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ##  @brief create cursor
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
# ##  @param source_font In which font to look for the cursor glyph.
# ##  @param mask_font In which font to look for the mask glyph.
# ##  @param source_char The glyph of \a source_font to use.
# ##  @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
# ##  which source pixels are displayed. All pixels which are set to 0 are not
# ##  displayed.
# ##  @param fore_red The red value of the foreground color.
# ##  @param fore_green The green value of the foreground color.
# ##  @param fore_blue The blue value of the foreground color.
# ##  @param back_red The red value of the background color.
# ##  @param back_green The green value of the background color.
# ##  @param back_blue The blue value of the background color.
# ##  @return A cookie
# ##
# ##  Creates a cursor from a font glyph. X provides a set of standard cursor shapes
# ##  in a special font named cursor. Applications are encouraged to use this
# ##  interface for their cursors because the font can be customized for the
# ##  individual display type.
# ##
# ##  All pixels which are set to 1 in the source will use the foreground color (as
# ##  specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
# ##  will use the background color (as specified by \a back_red, \a back_green and
# ##  \a back_blue).
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_create_glyph_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                                      source_font: xcb_font_t;
#                                      mask_font: xcb_font_t; source_char: uint16;
#                                      mask_char: uint16; fore_red: uint16;
#                                      fore_green: uint16; fore_blue: uint16;
#                                      back_red: uint16; back_green: uint16;
#                                      back_blue: uint16): xcb_void_cookie_t
# ## *
# ##  @brief create cursor
# ##
# ##  @param c The connection
# ##  @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
# ##  @param source_font In which font to look for the cursor glyph.
# ##  @param mask_font In which font to look for the mask glyph.
# ##  @param source_char The glyph of \a source_font to use.
# ##  @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
# ##  which source pixels are displayed. All pixels which are set to 0 are not
# ##  displayed.
# ##  @param fore_red The red value of the foreground color.
# ##  @param fore_green The green value of the foreground color.
# ##  @param fore_blue The blue value of the foreground color.
# ##  @param back_red The red value of the background color.
# ##  @param back_green The green value of the background color.
# ##  @param back_blue The blue value of the background color.
# ##  @return A cookie
# ##
# ##  Creates a cursor from a font glyph. X provides a set of standard cursor shapes
# ##  in a special font named cursor. Applications are encouraged to use this
# ##  interface for their cursors because the font can be customized for the
# ##  individual display type.
# ##
# ##  All pixels which are set to 1 in the source will use the foreground color (as
# ##  specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
# ##  will use the background color (as specified by \a back_red, \a back_green and
# ##  \a back_blue).
# ##
# ##

# proc xcb_create_glyph_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
#                              source_font: xcb_font_t; mask_font: xcb_font_t;
#                              source_char: uint16; mask_char: uint16;
#                              fore_red: uint16; fore_green: uint16;
#                              fore_blue: uint16; back_red: uint16;
#                              back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ##  @brief Deletes a cursor
# ##
# ##  @param c The connection
# ##  @param cursor The cursor to destroy.
# ##  @return A cookie
# ##
# ##  Deletes the association between the cursor resource ID and the specified
# ##  cursor. The cursor is freed when no other resource references it.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_free_cursor_checked*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ##  @brief Deletes a cursor
# ##
# ##  @param c The connection
# ##  @param cursor The cursor to destroy.
# ##  @return A cookie
# ##
# ##  Deletes the association between the cursor resource ID and the specified
# ##  cursor. The cursor is freed when no other resource references it.
# ##
# ##

# proc xcb_free_cursor*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_recolor_cursor_checked*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
#                                 fore_red: uint16; fore_green: uint16;
#                                 fore_blue: uint16; back_red: uint16;
#                                 back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_recolor_cursor*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
#                         fore_red: uint16; fore_green: uint16;
#                         fore_blue: uint16; back_red: uint16;
#                         back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_query_best_size*(c: ptr xcb_connection_t; _class: uint8;
#                          drawable: xcb_drawable_t; width: uint16; height: uint16): xcb_query_best_size_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_best_size_unchecked*(c: ptr xcb_connection_t; _class: uint8;
#                                    drawable: xcb_drawable_t; width: uint16;
#                                    height: uint16): xcb_query_best_size_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_best_size_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_best_size_reply*(c: ptr xcb_connection_t; cookie: xcb_query_best_size_cookie_t; ## *<
#                                e: ptr ptr xcb_generic_error_t): ptr xcb_query_best_size_reply_t
# proc xcb_query_extension_sizeof*(_buffer: pointer): cint
# ## *
# ##  @brief check if extension is present
# ##
# ##  @param c The connection
# ##  @param name_len The length of \a name in bytes.
# ##  @param name The name of the extension to query, for example "RANDR". This is case
# ##  sensitive!
# ##  @return A cookie
# ##
# ##  Determines if the specified extension is present on this X11 server.
# ##
# ##  Every extension has a unique `major_opcode` to identify requests, the minor
# ##  opcodes and request formats are extension-specific. If the extension provides
# ##  events and errors, the `first_event` and `first_error` fields in the reply are
# ##  set accordingly.
# ##
# ##  There should rarely be a need to use this request directly, XCB provides the
# ##  `xcb_get_extension_data` function instead.
# ##
# ##

# proc xcb_query_extension*(c: ptr xcb_connection_t; name_len: uint16; name: cstring): xcb_query_extension_cookie_t
# ## *
# ##  @brief check if extension is present
# ##
# ##  @param c The connection
# ##  @param name_len The length of \a name in bytes.
# ##  @param name The name of the extension to query, for example "RANDR". This is case
# ##  sensitive!
# ##  @return A cookie
# ##
# ##  Determines if the specified extension is present on this X11 server.
# ##
# ##  Every extension has a unique `major_opcode` to identify requests, the minor
# ##  opcodes and request formats are extension-specific. If the extension provides
# ##  events and errors, the `first_event` and `first_error` fields in the reply are
# ##  set accordingly.
# ##
# ##  There should rarely be a need to use this request directly, XCB provides the
# ##  `xcb_get_extension_data` function instead.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_query_extension_unchecked*(c: ptr xcb_connection_t; name_len: uint16;
#                                    name: cstring): xcb_query_extension_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_query_extension_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_query_extension_reply*(c: ptr xcb_connection_t; cookie: xcb_query_extension_cookie_t; ## *<
#                                e: ptr ptr xcb_generic_error_t): ptr xcb_query_extension_reply_t
# proc xcb_list_extensions_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_list_extensions*(c: ptr xcb_connection_t): xcb_list_extensions_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_extensions_unchecked*(c: ptr xcb_connection_t): xcb_list_extensions_cookie_t
# proc xcb_list_extensions_names_length*(R: ptr xcb_list_extensions_reply_t): cint
# proc xcb_list_extensions_names_iterator*(R: ptr xcb_list_extensions_reply_t): xcb_str_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_list_extensions_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_list_extensions_reply*(c: ptr xcb_connection_t; cookie: xcb_list_extensions_cookie_t; ## *<
#                                e: ptr ptr xcb_generic_error_t): ptr xcb_list_extensions_reply_t
# proc xcb_change_keyboard_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_keyboard_mapping_checked*(c: ptr xcb_connection_t;
#     keycode_count: uint8; first_keycode: xcb_keycode_t;
#     keysyms_per_keycode: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_keyboard_mapping*(c: ptr xcb_connection_t; keycode_count: uint8;
#                                  first_keycode: xcb_keycode_t;
#                                  keysyms_per_keycode: uint8;
#                                  keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# proc xcb_change_keyboard_mapping_keysyms*(
#     R: ptr xcb_change_keyboard_mapping_request_t): ptr xcb_keysym_t
# proc xcb_change_keyboard_mapping_keysyms_length*(
#     R: ptr xcb_change_keyboard_mapping_request_t): cint
# proc xcb_change_keyboard_mapping_keysyms_end*(
#     R: ptr xcb_change_keyboard_mapping_request_t): xcb_generic_iterator_t
# proc xcb_get_keyboard_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_keyboard_mapping_unchecked*(c: ptr xcb_connection_t;
#                                         first_keycode: xcb_keycode_t;
#                                         count: uint8): xcb_get_keyboard_mapping_cookie_t
# proc xcb_get_keyboard_mapping_keysyms*(R: ptr xcb_get_keyboard_mapping_reply_t): ptr xcb_keysym_t
# proc xcb_get_keyboard_mapping_keysyms_length*(
#     R: ptr xcb_get_keyboard_mapping_reply_t): cint
# proc xcb_get_keyboard_mapping_keysyms_end*(
#     R: ptr xcb_get_keyboard_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_keyboard_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##
# proc xcb_change_keyboard_control_value_list_serialize*(_buffer: ptr pointer;
#     value_mask: uint32; _aux: ptr xcb_change_keyboard_control_value_list_t): cint
# proc xcb_change_keyboard_control_value_list_unpack*(_buffer: pointer;
#     value_mask: uint32; _aux: ptr xcb_change_keyboard_control_value_list_t): cint
# proc xcb_change_keyboard_control_value_list_sizeof*(_buffer: pointer;
#     value_mask: uint32): cint
# proc xcb_change_keyboard_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_keyboard_control_checked*(c: ptr xcb_connection_t;
#     value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_keyboard_control*(c: ptr xcb_connection_t; value_mask: uint32;
#                                  value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_keyboard_control_aux_checked*(c: ptr xcb_connection_t;
#     value_mask: uint32; value_list: ptr xcb_change_keyboard_control_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_keyboard_control_aux*(c: ptr xcb_connection_t; value_mask: uint32;
#     value_list: ptr xcb_change_keyboard_control_value_list_t): xcb_void_cookie_t
# proc xcb_change_keyboard_control_value_list*(
#     R: ptr xcb_change_keyboard_control_request_t): pointer
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_keyboard_control*(c: ptr xcb_connection_t): xcb_get_keyboard_control_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_keyboard_control_unchecked*(c: ptr xcb_connection_t): xcb_get_keyboard_control_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_keyboard_control_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_keyboard_control_reply*(c: ptr xcb_connection_t; cookie: xcb_get_keyboard_control_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_get_keyboard_control_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_bell_checked*(c: ptr xcb_connection_t; percent: int8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_bell*(c: ptr xcb_connection_t; percent: int8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_pointer_control_checked*(c: ptr xcb_connection_t;
#                                         acceleration_numerator: int16;
#                                         acceleration_denominator: int16;
#                                         threshold: int16;
#                                         do_acceleration: uint8;
#                                         do_threshold: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_pointer_control*(c: ptr xcb_connection_t;
#                                 acceleration_numerator: int16;
#                                 acceleration_denominator: int16;
#                                 threshold: int16; do_acceleration: uint8;
#                                 do_threshold: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_pointer_control*(c: ptr xcb_connection_t): xcb_get_pointer_control_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_pointer_control_unchecked*(c: ptr xcb_connection_t): xcb_get_pointer_control_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_pointer_control_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_pointer_control_reply*(c: ptr xcb_connection_t; cookie: xcb_get_pointer_control_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_get_pointer_control_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_screen_saver_checked*(c: ptr xcb_connection_t; timeout: int16;
#                                   interval: int16; prefer_blanking: uint8;
#                                   allow_exposures: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_screen_saver*(c: ptr xcb_connection_t; timeout: int16;
#                           interval: int16; prefer_blanking: uint8;
#                           allow_exposures: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_screen_saver*(c: ptr xcb_connection_t): xcb_get_screen_saver_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_screen_saver_unchecked*(c: ptr xcb_connection_t): xcb_get_screen_saver_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_screen_saver_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_screen_saver_reply*(c: ptr xcb_connection_t; cookie: xcb_get_screen_saver_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_get_screen_saver_reply_t
# proc xcb_change_hosts_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_change_hosts_checked*(c: ptr xcb_connection_t; mode: uint8;
#                               family: uint8; address_len: uint16;
#                               address: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_change_hosts*(c: ptr xcb_connection_t; mode: uint8; family: uint8;
#                       address_len: uint16; address: ptr uint8): xcb_void_cookie_t
# proc xcb_change_hosts_address*(R: ptr xcb_change_hosts_request_t): ptr uint8
# proc xcb_change_hosts_address_length*(R: ptr xcb_change_hosts_request_t): cint
# proc xcb_change_hosts_address_end*(R: ptr xcb_change_hosts_request_t): xcb_generic_iterator_t
# proc xcb_host_sizeof*(_buffer: pointer): cint
# proc xcb_host_address*(R: ptr xcb_host_t): ptr uint8
# proc xcb_host_address_length*(R: ptr xcb_host_t): cint
# proc xcb_host_address_end*(R: ptr xcb_host_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_host_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_host_t)
# ##

# proc xcb_host_next*(i: ptr xcb_host_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_host_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_host_end*(i: xcb_host_iterator_t): xcb_generic_iterator_t
# proc xcb_list_hosts_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_list_hosts*(c: ptr xcb_connection_t): xcb_list_hosts_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_list_hosts_unchecked*(c: ptr xcb_connection_t): xcb_list_hosts_cookie_t
# proc xcb_list_hosts_hosts_length*(R: ptr xcb_list_hosts_reply_t): cint
# proc xcb_list_hosts_hosts_iterator*(R: ptr xcb_list_hosts_reply_t): xcb_host_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_list_hosts_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_list_hosts_reply*(c: ptr xcb_connection_t; cookie: xcb_list_hosts_cookie_t; ## *<
#                           e: ptr ptr xcb_generic_error_t): ptr xcb_list_hosts_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_access_control_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_access_control*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_set_close_down_mode_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_close_down_mode*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##  @brief kills a client
# ##
# ##  @param c The connection
# ##  @param resource Any resource belonging to the client (for example a Window), used to identify
# ##  the client connection.
# ##  \n
# ##  The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
# ##  that have terminated in `RetainTemporary` (TODO) are destroyed.
# ##  @return A cookie
# ##
# ##  Forces a close down of the client that created the specified \a resource.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_kill_client_checked*(c: ptr xcb_connection_t; resource: uint32): xcb_void_cookie_t
# ## *
# ##  @brief kills a client
# ##
# ##  @param c The connection
# ##  @param resource Any resource belonging to the client (for example a Window), used to identify
# ##  the client connection.
# ##  \n
# ##  The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
# ##  that have terminated in `RetainTemporary` (TODO) are destroyed.
# ##  @return A cookie
# ##
# ##  Forces a close down of the client that created the specified \a resource.
# ##
# ##

# proc xcb_kill_client*(c: ptr xcb_connection_t; resource: uint32): xcb_void_cookie_t
# proc xcb_rotate_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_rotate_properties_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
#                                    atoms_len: uint16; delta: int16;
#                                    atoms: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_rotate_properties*(c: ptr xcb_connection_t; window: xcb_window_t;
#                            atoms_len: uint16; delta: int16;
#                            atoms: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_rotate_properties_atoms*(R: ptr xcb_rotate_properties_request_t): ptr xcb_atom_t
# proc xcb_rotate_properties_atoms_length*(R: ptr xcb_rotate_properties_request_t): cint
# proc xcb_rotate_properties_atoms_end*(R: ptr xcb_rotate_properties_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_force_screen_saver_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_force_screen_saver*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# proc xcb_set_pointer_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_pointer_mapping*(c: ptr xcb_connection_t; map_len: uint8;
#                              map: ptr uint8): xcb_set_pointer_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_set_pointer_mapping_unchecked*(c: ptr xcb_connection_t; map_len: uint8;
#                                        map: ptr uint8): xcb_set_pointer_mapping_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_set_pointer_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_set_pointer_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_set_pointer_mapping_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_set_pointer_mapping_reply_t
# proc xcb_get_pointer_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_pointer_mapping*(c: ptr xcb_connection_t): xcb_get_pointer_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_pointer_mapping_unchecked*(c: ptr xcb_connection_t): xcb_get_pointer_mapping_cookie_t
# proc xcb_get_pointer_mapping_map*(R: ptr xcb_get_pointer_mapping_reply_t): ptr uint8
# proc xcb_get_pointer_mapping_map_length*(R: ptr xcb_get_pointer_mapping_reply_t): cint
# proc xcb_get_pointer_mapping_map_end*(R: ptr xcb_get_pointer_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_pointer_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_pointer_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_get_pointer_mapping_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_get_pointer_mapping_reply_t
# proc xcb_set_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_set_modifier_mapping*(c: ptr xcb_connection_t;
#                               keycodes_per_modifier: uint8;
#                               keycodes: ptr xcb_keycode_t): xcb_set_modifier_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_set_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
#                                         keycodes_per_modifier: uint8;
#                                         keycodes: ptr xcb_keycode_t): xcb_set_modifier_mapping_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_set_modifier_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_set_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_set_modifier_mapping_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_set_modifier_mapping_reply_t
# proc xcb_get_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_get_modifier_mapping*(c: ptr xcb_connection_t): xcb_get_modifier_mapping_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_get_modifier_mapping_unchecked*(c: ptr xcb_connection_t): xcb_get_modifier_mapping_cookie_t
# proc xcb_get_modifier_mapping_keycodes*(R: ptr xcb_get_modifier_mapping_reply_t): ptr xcb_keycode_t
# proc xcb_get_modifier_mapping_keycodes_length*(
#     R: ptr xcb_get_modifier_mapping_reply_t): cint
# proc xcb_get_modifier_mapping_keycodes_end*(
#     R: ptr xcb_get_modifier_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_get_modifier_mapping_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_get_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_get_modifier_mapping_cookie_t; ## *<
#                                     e: ptr ptr xcb_generic_error_t): ptr xcb_get_modifier_mapping_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_no_operation_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_no_operation*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xselinux.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_SELinux_API XCB SELinux API
# ##  @brief SELinux XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_SELINUX_MAJOR_VERSION* = 1
#   XCB_SELINUX_MINOR_VERSION* = 0

# var xcb_selinux_id*: xcb_extension_t

# ## *
# ##  @brief xcb_selinux_query_version_cookie_t
# ##

# type
#   xcb_selinux_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_query_version.

# const
#   XCB_SELINUX_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_selinux_query_version_request_t
# ##

# type
#   xcb_selinux_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     client_major*: uint8
#     client_minor*: uint8


# ## *
# ##  @brief xcb_selinux_query_version_reply_t
# ##

# type
#   xcb_selinux_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     server_major*: uint16
#     server_minor*: uint16


# ## * Opcode for xcb_selinux_set_device_create_context.

# const
#   XCB_SELINUX_SET_DEVICE_CREATE_CONTEXT* = 1

# ## *
# ##  @brief xcb_selinux_set_device_create_context_request_t
# ##

# type
#   xcb_selinux_set_device_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_device_create_context_cookie_t
# ##

# type
#   xcb_selinux_get_device_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_device_create_context.

# const
#   XCB_SELINUX_GET_DEVICE_CREATE_CONTEXT* = 2

# ## *
# ##  @brief xcb_selinux_get_device_create_context_request_t
# ##

# type
#   xcb_selinux_get_device_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_device_create_context_reply_t
# ##

# type
#   xcb_selinux_get_device_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_selinux_set_device_context.

# const
#   XCB_SELINUX_SET_DEVICE_CONTEXT* = 3

# ## *
# ##  @brief xcb_selinux_set_device_context_request_t
# ##

# type
#   xcb_selinux_set_device_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device*: uint32
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_device_context_cookie_t
# ##

# type
#   xcb_selinux_get_device_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_device_context.

# const
#   XCB_SELINUX_GET_DEVICE_CONTEXT* = 4

# ## *
# ##  @brief xcb_selinux_get_device_context_request_t
# ##

# type
#   xcb_selinux_get_device_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     device*: uint32


# ## *
# ##  @brief xcb_selinux_get_device_context_reply_t
# ##

# type
#   xcb_selinux_get_device_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_selinux_set_window_create_context.

# const
#   XCB_SELINUX_SET_WINDOW_CREATE_CONTEXT* = 5

# ## *
# ##  @brief xcb_selinux_set_window_create_context_request_t
# ##

# type
#   xcb_selinux_set_window_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_window_create_context_cookie_t
# ##

# type
#   xcb_selinux_get_window_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_window_create_context.

# const
#   XCB_SELINUX_GET_WINDOW_CREATE_CONTEXT* = 6

# ## *
# ##  @brief xcb_selinux_get_window_create_context_request_t
# ##

# type
#   xcb_selinux_get_window_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_window_create_context_reply_t
# ##

# type
#   xcb_selinux_get_window_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_window_context_cookie_t
# ##

# type
#   xcb_selinux_get_window_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_window_context.

# const
#   XCB_SELINUX_GET_WINDOW_CONTEXT* = 7

# ## *
# ##  @brief xcb_selinux_get_window_context_request_t
# ##

# type
#   xcb_selinux_get_window_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_selinux_get_window_context_reply_t
# ##

# type
#   xcb_selinux_get_window_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_list_item_t
# ##

# type
#   xcb_selinux_list_item_t* {.bycopy.} = object
#     name*: xcb_atom_t
#     object_context_len*: uint32
#     data_context_len*: uint32


# ## *
# ##  @brief xcb_selinux_list_item_iterator_t
# ##

# type
#   xcb_selinux_list_item_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_selinux_list_item_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_selinux_set_property_create_context.

# const
#   XCB_SELINUX_SET_PROPERTY_CREATE_CONTEXT* = 8

# ## *
# ##  @brief xcb_selinux_set_property_create_context_request_t
# ##

# type
#   xcb_selinux_set_property_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_property_create_context_cookie_t
# ##

# type
#   xcb_selinux_get_property_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_property_create_context.

# const
#   XCB_SELINUX_GET_PROPERTY_CREATE_CONTEXT* = 9

# ## *
# ##  @brief xcb_selinux_get_property_create_context_request_t
# ##

# type
#   xcb_selinux_get_property_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_property_create_context_reply_t
# ##

# type
#   xcb_selinux_get_property_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_selinux_set_property_use_context.

# const
#   XCB_SELINUX_SET_PROPERTY_USE_CONTEXT* = 10

# ## *
# ##  @brief xcb_selinux_set_property_use_context_request_t
# ##

# type
#   xcb_selinux_set_property_use_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_property_use_context_cookie_t
# ##

# type
#   xcb_selinux_get_property_use_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_property_use_context.

# const
#   XCB_SELINUX_GET_PROPERTY_USE_CONTEXT* = 11

# ## *
# ##  @brief xcb_selinux_get_property_use_context_request_t
# ##

# type
#   xcb_selinux_get_property_use_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_property_use_context_reply_t
# ##

# type
#   xcb_selinux_get_property_use_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_property_context_cookie_t
# ##

# type
#   xcb_selinux_get_property_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_property_context.

# const
#   XCB_SELINUX_GET_PROPERTY_CONTEXT* = 12

# ## *
# ##  @brief xcb_selinux_get_property_context_request_t
# ##

# type
#   xcb_selinux_get_property_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_selinux_get_property_context_reply_t
# ##

# type
#   xcb_selinux_get_property_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_property_data_context_cookie_t
# ##

# type
#   xcb_selinux_get_property_data_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_property_data_context.

# const
#   XCB_SELINUX_GET_PROPERTY_DATA_CONTEXT* = 13

# ## *
# ##  @brief xcb_selinux_get_property_data_context_request_t
# ##

# type
#   xcb_selinux_get_property_data_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     property*: xcb_atom_t


# ## *
# ##  @brief xcb_selinux_get_property_data_context_reply_t
# ##

# type
#   xcb_selinux_get_property_data_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_list_properties_cookie_t
# ##

# type
#   xcb_selinux_list_properties_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_list_properties.

# const
#   XCB_SELINUX_LIST_PROPERTIES* = 14

# ## *
# ##  @brief xcb_selinux_list_properties_request_t
# ##

# type
#   xcb_selinux_list_properties_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_selinux_list_properties_reply_t
# ##

# type
#   xcb_selinux_list_properties_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     properties_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_selinux_set_selection_create_context.

# const
#   XCB_SELINUX_SET_SELECTION_CREATE_CONTEXT* = 15

# ## *
# ##  @brief xcb_selinux_set_selection_create_context_request_t
# ##

# type
#   xcb_selinux_set_selection_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_selection_create_context_cookie_t
# ##

# type
#   xcb_selinux_get_selection_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_selection_create_context.

# const
#   XCB_SELINUX_GET_SELECTION_CREATE_CONTEXT* = 16

# ## *
# ##  @brief xcb_selinux_get_selection_create_context_request_t
# ##

# type
#   xcb_selinux_get_selection_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_selection_create_context_reply_t
# ##

# type
#   xcb_selinux_get_selection_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_selinux_set_selection_use_context.

# const
#   XCB_SELINUX_SET_SELECTION_USE_CONTEXT* = 17

# ## *
# ##  @brief xcb_selinux_set_selection_use_context_request_t
# ##

# type
#   xcb_selinux_set_selection_use_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_len*: uint32


# ## *
# ##  @brief xcb_selinux_get_selection_use_context_cookie_t
# ##

# type
#   xcb_selinux_get_selection_use_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_selection_use_context.

# const
#   XCB_SELINUX_GET_SELECTION_USE_CONTEXT* = 18

# ## *
# ##  @brief xcb_selinux_get_selection_use_context_request_t
# ##

# type
#   xcb_selinux_get_selection_use_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_get_selection_use_context_reply_t
# ##

# type
#   xcb_selinux_get_selection_use_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_selection_context_cookie_t
# ##

# type
#   xcb_selinux_get_selection_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_selection_context.

# const
#   XCB_SELINUX_GET_SELECTION_CONTEXT* = 19

# ## *
# ##  @brief xcb_selinux_get_selection_context_request_t
# ##

# type
#   xcb_selinux_get_selection_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     selection*: xcb_atom_t


# ## *
# ##  @brief xcb_selinux_get_selection_context_reply_t
# ##

# type
#   xcb_selinux_get_selection_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_selection_data_context_cookie_t
# ##

# type
#   xcb_selinux_get_selection_data_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_selection_data_context.

# const
#   XCB_SELINUX_GET_SELECTION_DATA_CONTEXT* = 20

# ## *
# ##  @brief xcb_selinux_get_selection_data_context_request_t
# ##

# type
#   xcb_selinux_get_selection_data_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     selection*: xcb_atom_t


# ## *
# ##  @brief xcb_selinux_get_selection_data_context_reply_t
# ##

# type
#   xcb_selinux_get_selection_data_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_list_selections_cookie_t
# ##

# type
#   xcb_selinux_list_selections_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_list_selections.

# const
#   XCB_SELINUX_LIST_SELECTIONS* = 21

# ## *
# ##  @brief xcb_selinux_list_selections_request_t
# ##

# type
#   xcb_selinux_list_selections_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_selinux_list_selections_reply_t
# ##

# type
#   xcb_selinux_list_selections_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     selections_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_selinux_get_client_context_cookie_t
# ##

# type
#   xcb_selinux_get_client_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_selinux_get_client_context.

# const
#   XCB_SELINUX_GET_CLIENT_CONTEXT* = 22

# ## *
# ##  @brief xcb_selinux_get_client_context_request_t
# ##

# type
#   xcb_selinux_get_client_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     resource*: uint32


# ## *
# ##  @brief xcb_selinux_get_client_context_reply_t
# ##

# type
#   xcb_selinux_get_client_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     context_len*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_query_version*(c: ptr xcb_connection_t; client_major: uint8;
#                                client_minor: uint8): xcb_selinux_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_query_version_unchecked*(c: ptr xcb_connection_t;
#     client_major: uint8; client_minor: uint8): xcb_selinux_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_query_version_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_query_version_reply_t
# proc xcb_selinux_set_device_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_device_create_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_device_create_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_device_create_context_context*(
#     R: ptr xcb_selinux_set_device_create_context_request_t): cstring
# proc xcb_selinux_set_device_create_context_context_length*(
#     R: ptr xcb_selinux_set_device_create_context_request_t): cint
# proc xcb_selinux_set_device_create_context_context_end*(
#     R: ptr xcb_selinux_set_device_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_device_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_device_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_device_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_device_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_device_create_context_cookie_t
# proc xcb_selinux_get_device_create_context_context*(
#     R: ptr xcb_selinux_get_device_create_context_reply_t): cstring
# proc xcb_selinux_get_device_create_context_context_length*(
#     R: ptr xcb_selinux_get_device_create_context_reply_t): cint
# proc xcb_selinux_get_device_create_context_context_end*(
#     R: ptr xcb_selinux_get_device_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_device_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_device_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_device_create_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_device_create_context_reply_t
# proc xcb_selinux_set_device_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_device_context_checked*(c: ptr xcb_connection_t;
#     device: uint32; context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_device_context*(c: ptr xcb_connection_t; device: uint32;
#                                     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_device_context_context*(
#     R: ptr xcb_selinux_set_device_context_request_t): cstring
# proc xcb_selinux_set_device_context_context_length*(
#     R: ptr xcb_selinux_set_device_context_request_t): cint
# proc xcb_selinux_set_device_context_context_end*(
#     R: ptr xcb_selinux_set_device_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_device_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_device_context*(c: ptr xcb_connection_t; device: uint32): xcb_selinux_get_device_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_device_context_unchecked*(c: ptr xcb_connection_t;
#     device: uint32): xcb_selinux_get_device_context_cookie_t
# proc xcb_selinux_get_device_context_context*(
#     R: ptr xcb_selinux_get_device_context_reply_t): cstring
# proc xcb_selinux_get_device_context_context_length*(
#     R: ptr xcb_selinux_get_device_context_reply_t): cint
# proc xcb_selinux_get_device_context_context_end*(
#     R: ptr xcb_selinux_get_device_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_device_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_device_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_device_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_device_context_reply_t
# proc xcb_selinux_set_window_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_window_create_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_window_create_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_window_create_context_context*(
#     R: ptr xcb_selinux_set_window_create_context_request_t): cstring
# proc xcb_selinux_set_window_create_context_context_length*(
#     R: ptr xcb_selinux_set_window_create_context_request_t): cint
# proc xcb_selinux_set_window_create_context_context_end*(
#     R: ptr xcb_selinux_set_window_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_window_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_window_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_window_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_window_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_window_create_context_cookie_t
# proc xcb_selinux_get_window_create_context_context*(
#     R: ptr xcb_selinux_get_window_create_context_reply_t): cstring
# proc xcb_selinux_get_window_create_context_context_length*(
#     R: ptr xcb_selinux_get_window_create_context_reply_t): cint
# proc xcb_selinux_get_window_create_context_context_end*(
#     R: ptr xcb_selinux_get_window_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_window_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_window_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_window_create_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_window_create_context_reply_t
# proc xcb_selinux_get_window_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_window_context*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_selinux_get_window_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_window_context_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_selinux_get_window_context_cookie_t
# proc xcb_selinux_get_window_context_context*(
#     R: ptr xcb_selinux_get_window_context_reply_t): cstring
# proc xcb_selinux_get_window_context_context_length*(
#     R: ptr xcb_selinux_get_window_context_reply_t): cint
# proc xcb_selinux_get_window_context_context_end*(
#     R: ptr xcb_selinux_get_window_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_window_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_window_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_window_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_window_context_reply_t
# proc xcb_selinux_list_item_sizeof*(_buffer: pointer): cint
# proc xcb_selinux_list_item_object_context*(R: ptr xcb_selinux_list_item_t): cstring
# proc xcb_selinux_list_item_object_context_length*(R: ptr xcb_selinux_list_item_t): cint
# proc xcb_selinux_list_item_object_context_end*(R: ptr xcb_selinux_list_item_t): xcb_generic_iterator_t
# proc xcb_selinux_list_item_data_context*(R: ptr xcb_selinux_list_item_t): cstring
# proc xcb_selinux_list_item_data_context_length*(R: ptr xcb_selinux_list_item_t): cint
# proc xcb_selinux_list_item_data_context_end*(R: ptr xcb_selinux_list_item_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_selinux_list_item_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_selinux_list_item_t)
# ##

# proc xcb_selinux_list_item_next*(i: ptr xcb_selinux_list_item_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_selinux_list_item_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_selinux_list_item_end*(i: xcb_selinux_list_item_iterator_t): xcb_generic_iterator_t
# proc xcb_selinux_set_property_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_property_create_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_property_create_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_property_create_context_context*(
#     R: ptr xcb_selinux_set_property_create_context_request_t): cstring
# proc xcb_selinux_set_property_create_context_context_length*(
#     R: ptr xcb_selinux_set_property_create_context_request_t): cint
# proc xcb_selinux_set_property_create_context_context_end*(
#     R: ptr xcb_selinux_set_property_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_property_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_property_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_property_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_property_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_property_create_context_cookie_t
# proc xcb_selinux_get_property_create_context_context*(
#     R: ptr xcb_selinux_get_property_create_context_reply_t): cstring
# proc xcb_selinux_get_property_create_context_context_length*(
#     R: ptr xcb_selinux_get_property_create_context_reply_t): cint
# proc xcb_selinux_get_property_create_context_context_end*(
#     R: ptr xcb_selinux_get_property_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_property_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_property_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_create_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_create_context_reply_t
# proc xcb_selinux_set_property_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_property_use_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_property_use_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_property_use_context_context*(
#     R: ptr xcb_selinux_set_property_use_context_request_t): cstring
# proc xcb_selinux_set_property_use_context_context_length*(
#     R: ptr xcb_selinux_set_property_use_context_request_t): cint
# proc xcb_selinux_set_property_use_context_context_end*(
#     R: ptr xcb_selinux_set_property_use_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_property_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_property_use_context*(c: ptr xcb_connection_t): xcb_selinux_get_property_use_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_property_use_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_property_use_context_cookie_t
# proc xcb_selinux_get_property_use_context_context*(
#     R: ptr xcb_selinux_get_property_use_context_reply_t): cstring
# proc xcb_selinux_get_property_use_context_context_length*(
#     R: ptr xcb_selinux_get_property_use_context_reply_t): cint
# proc xcb_selinux_get_property_use_context_context_end*(
#     R: ptr xcb_selinux_get_property_use_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_property_use_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_property_use_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_use_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_use_context_reply_t
# proc xcb_selinux_get_property_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_property_context*(c: ptr xcb_connection_t;
#                                       window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_property_context_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_context_cookie_t
# proc xcb_selinux_get_property_context_context*(
#     R: ptr xcb_selinux_get_property_context_reply_t): cstring
# proc xcb_selinux_get_property_context_context_length*(
#     R: ptr xcb_selinux_get_property_context_reply_t): cint
# proc xcb_selinux_get_property_context_context_end*(
#     R: ptr xcb_selinux_get_property_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_property_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_property_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_context_reply_t
# proc xcb_selinux_get_property_data_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_property_data_context*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_data_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_property_data_context_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_data_context_cookie_t
# proc xcb_selinux_get_property_data_context_context*(
#     R: ptr xcb_selinux_get_property_data_context_reply_t): cstring
# proc xcb_selinux_get_property_data_context_context_length*(
#     R: ptr xcb_selinux_get_property_data_context_reply_t): cint
# proc xcb_selinux_get_property_data_context_context_end*(
#     R: ptr xcb_selinux_get_property_data_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_property_data_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_property_data_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_data_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_data_context_reply_t
# proc xcb_selinux_list_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_list_properties*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_selinux_list_properties_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_list_properties_unchecked*(c: ptr xcb_connection_t;
#     window: xcb_window_t): xcb_selinux_list_properties_cookie_t
# proc xcb_selinux_list_properties_properties_length*(
#     R: ptr xcb_selinux_list_properties_reply_t): cint
# proc xcb_selinux_list_properties_properties_iterator*(
#     R: ptr xcb_selinux_list_properties_reply_t): xcb_selinux_list_item_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_list_properties_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_list_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_list_properties_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_list_properties_reply_t
# proc xcb_selinux_set_selection_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_selection_create_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_selection_create_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_selection_create_context_context*(
#     R: ptr xcb_selinux_set_selection_create_context_request_t): cstring
# proc xcb_selinux_set_selection_create_context_context_length*(
#     R: ptr xcb_selinux_set_selection_create_context_request_t): cint
# proc xcb_selinux_set_selection_create_context_context_end*(
#     R: ptr xcb_selinux_set_selection_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_selection_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_selection_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_selection_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_selection_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_selection_create_context_cookie_t
# proc xcb_selinux_get_selection_create_context_context*(
#     R: ptr xcb_selinux_get_selection_create_context_reply_t): cstring
# proc xcb_selinux_get_selection_create_context_context_length*(
#     R: ptr xcb_selinux_get_selection_create_context_reply_t): cint
# proc xcb_selinux_get_selection_create_context_context_end*(
#     R: ptr xcb_selinux_get_selection_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_selection_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_selection_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_create_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_create_context_reply_t
# proc xcb_selinux_set_selection_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_selinux_set_selection_use_context_checked*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_set_selection_use_context*(c: ptr xcb_connection_t;
#     context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_selection_use_context_context*(
#     R: ptr xcb_selinux_set_selection_use_context_request_t): cstring
# proc xcb_selinux_set_selection_use_context_context_length*(
#     R: ptr xcb_selinux_set_selection_use_context_request_t): cint
# proc xcb_selinux_set_selection_use_context_context_end*(
#     R: ptr xcb_selinux_set_selection_use_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_selection_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_selection_use_context*(c: ptr xcb_connection_t): xcb_selinux_get_selection_use_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_selection_use_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_selection_use_context_cookie_t
# proc xcb_selinux_get_selection_use_context_context*(
#     R: ptr xcb_selinux_get_selection_use_context_reply_t): cstring
# proc xcb_selinux_get_selection_use_context_context_length*(
#     R: ptr xcb_selinux_get_selection_use_context_reply_t): cint
# proc xcb_selinux_get_selection_use_context_context_end*(
#     R: ptr xcb_selinux_get_selection_use_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_selection_use_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_selection_use_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_use_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_use_context_reply_t
# proc xcb_selinux_get_selection_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_selection_context*(c: ptr xcb_connection_t;
#                                        selection: xcb_atom_t): xcb_selinux_get_selection_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_selection_context_unchecked*(c: ptr xcb_connection_t;
#     selection: xcb_atom_t): xcb_selinux_get_selection_context_cookie_t
# proc xcb_selinux_get_selection_context_context*(
#     R: ptr xcb_selinux_get_selection_context_reply_t): cstring
# proc xcb_selinux_get_selection_context_context_length*(
#     R: ptr xcb_selinux_get_selection_context_reply_t): cint
# proc xcb_selinux_get_selection_context_context_end*(
#     R: ptr xcb_selinux_get_selection_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_selection_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_selection_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_context_reply_t
# proc xcb_selinux_get_selection_data_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_selection_data_context*(c: ptr xcb_connection_t;
#     selection: xcb_atom_t): xcb_selinux_get_selection_data_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_selection_data_context_unchecked*(c: ptr xcb_connection_t;
#     selection: xcb_atom_t): xcb_selinux_get_selection_data_context_cookie_t
# proc xcb_selinux_get_selection_data_context_context*(
#     R: ptr xcb_selinux_get_selection_data_context_reply_t): cstring
# proc xcb_selinux_get_selection_data_context_context_length*(
#     R: ptr xcb_selinux_get_selection_data_context_reply_t): cint
# proc xcb_selinux_get_selection_data_context_context_end*(
#     R: ptr xcb_selinux_get_selection_data_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_selection_data_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_selection_data_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_data_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_data_context_reply_t
# proc xcb_selinux_list_selections_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_list_selections*(c: ptr xcb_connection_t): xcb_selinux_list_selections_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_list_selections_unchecked*(c: ptr xcb_connection_t): xcb_selinux_list_selections_cookie_t
# proc xcb_selinux_list_selections_selections_length*(
#     R: ptr xcb_selinux_list_selections_reply_t): cint
# proc xcb_selinux_list_selections_selections_iterator*(
#     R: ptr xcb_selinux_list_selections_reply_t): xcb_selinux_list_item_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_list_selections_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_list_selections_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_list_selections_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_list_selections_reply_t
# proc xcb_selinux_get_client_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_selinux_get_client_context*(c: ptr xcb_connection_t; resource: uint32): xcb_selinux_get_client_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_selinux_get_client_context_unchecked*(c: ptr xcb_connection_t;
#     resource: uint32): xcb_selinux_get_client_context_cookie_t
# proc xcb_selinux_get_client_context_context*(
#     R: ptr xcb_selinux_get_client_context_reply_t): cstring
# proc xcb_selinux_get_client_context_context_length*(
#     R: ptr xcb_selinux_get_client_context_reply_t): cint
# proc xcb_selinux_get_client_context_context_end*(
#     R: ptr xcb_selinux_get_client_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_selinux_get_client_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_selinux_get_client_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_client_context_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_client_context_reply_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xtest.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Test_API XCB Test API
# ##  @brief Test XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto

# const
#   XCB_TEST_MAJOR_VERSION* = 2
#   XCB_TEST_MINOR_VERSION* = 2

# var xcb_test_id*: xcb_extension_t

# ## *
# ##  @brief xcb_test_get_version_cookie_t
# ##

# type
#   xcb_test_get_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_test_get_version.

# const
#   XCB_TEST_GET_VERSION* = 0

# ## *
# ##  @brief xcb_test_get_version_request_t
# ##

# type
#   xcb_test_get_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     major_version*: uint8
#     pad0*: uint8
#     minor_version*: uint16


# ## *
# ##  @brief xcb_test_get_version_reply_t
# ##

# type
#   xcb_test_get_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     major_version*: uint8
#     sequence*: uint16
#     length*: uint32
#     minor_version*: uint16

#   xcb_test_cursor_t* = enum
#     XCB_TEST_CURSOR_NONE = 0, XCB_TEST_CURSOR_CURRENT = 1


# ## *
# ##  @brief xcb_test_compare_cursor_cookie_t
# ##

# type
#   xcb_test_compare_cursor_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_test_compare_cursor.

# const
#   XCB_TEST_COMPARE_CURSOR* = 1

# ## *
# ##  @brief xcb_test_compare_cursor_request_t
# ##

# type
#   xcb_test_compare_cursor_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t
#     cursor*: xcb_cursor_t


# ## *
# ##  @brief xcb_test_compare_cursor_reply_t
# ##

# type
#   xcb_test_compare_cursor_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     same*: uint8
#     sequence*: uint16
#     length*: uint32


# ## * Opcode for xcb_test_fake_input.

# const
#   XCB_TEST_FAKE_INPUT* = 2

# ## *
# ##  @brief xcb_test_fake_input_request_t
# ##

# type
#   xcb_test_fake_input_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     `type`*: uint8
#     detail*: uint8
#     pad0*: array[2, uint8]
#     time*: uint32
#     root*: xcb_window_t
#     pad1*: array[8, uint8]
#     rootX*: int16
#     rootY*: int16
#     pad2*: array[7, uint8]
#     deviceid*: uint8


# ## * Opcode for xcb_test_grab_control.

# const
#   XCB_TEST_GRAB_CONTROL* = 3

# ## *
# ##  @brief xcb_test_grab_control_request_t
# ##

# type
#   xcb_test_grab_control_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     impervious*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_test_get_version*(c: ptr xcb_connection_t; major_version: uint8;
#                           minor_version: uint16): xcb_test_get_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_test_get_version_unchecked*(c: ptr xcb_connection_t;
#                                     major_version: uint8;
#                                     minor_version: uint16): xcb_test_get_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_test_get_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_test_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_test_get_version_cookie_t; ## *<
#                                 e: ptr ptr xcb_generic_error_t): ptr xcb_test_get_version_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_test_compare_cursor*(c: ptr xcb_connection_t; window: xcb_window_t;
#                              cursor: xcb_cursor_t): xcb_test_compare_cursor_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_test_compare_cursor_unchecked*(c: ptr xcb_connection_t;
#                                        window: xcb_window_t; cursor: xcb_cursor_t): xcb_test_compare_cursor_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_test_compare_cursor_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_test_compare_cursor_reply*(c: ptr xcb_connection_t; cookie: xcb_test_compare_cursor_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_test_compare_cursor_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_test_fake_input_checked*(c: ptr xcb_connection_t; `type`: uint8;
#                                  detail: uint8; time: uint32;
#                                  root: xcb_window_t; rootX: int16; rootY: int16;
#                                  deviceid: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_test_fake_input*(c: ptr xcb_connection_t; `type`: uint8; detail: uint8;
#                          time: uint32; root: xcb_window_t; rootX: int16;
#                          rootY: int16; deviceid: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_test_grab_control_checked*(c: ptr xcb_connection_t; impervious: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_test_grab_control*(c: ptr xcb_connection_t; impervious: uint8): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xv.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_Xv_API XCB Xv API
# ##  @brief Xv XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xproto, shm

# const
#   XCB_XV_MAJOR_VERSION* = 2
#   XCB_XV_MINOR_VERSION* = 2

# var xcb_xv_id*: xcb_extension_t

# type
#   xcb_xv_port_t* = uint32

# ## *
# ##  @brief xcb_xv_port_iterator_t
# ##

# type
#   xcb_xv_port_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_port_t
#     rem*: cint
#     index*: cint

#   xcb_xv_encoding_t* = uint32

# ## *
# ##  @brief xcb_xv_encoding_iterator_t
# ##

# type
#   xcb_xv_encoding_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_encoding_t
#     rem*: cint
#     index*: cint

#   xcb_xv_type_t* = enum
#     XCB_XV_TYPE_INPUT_MASK = 1, XCB_XV_TYPE_OUTPUT_MASK = 2,
#     XCB_XV_TYPE_VIDEO_MASK = 4, XCB_XV_TYPE_STILL_MASK = 8,
#     XCB_XV_TYPE_IMAGE_MASK = 16
#   xcb_xv_image_format_info_type_t* = enum
#     XCB_XV_IMAGE_FORMAT_INFO_TYPE_RGB = 0, XCB_XV_IMAGE_FORMAT_INFO_TYPE_YUV = 1
#   xcb_xv_image_format_info_format_t* = enum
#     XCB_XV_IMAGE_FORMAT_INFO_FORMAT_PACKED = 0,
#     XCB_XV_IMAGE_FORMAT_INFO_FORMAT_PLANAR = 1
#   xcb_xv_attribute_flag_t* = enum
#     XCB_XV_ATTRIBUTE_FLAG_GETTABLE = 1, XCB_XV_ATTRIBUTE_FLAG_SETTABLE = 2
#   xcb_xv_video_notify_reason_t* = enum
#     XCB_XV_VIDEO_NOTIFY_REASON_STARTED = 0, XCB_XV_VIDEO_NOTIFY_REASON_STOPPED = 1,
#     XCB_XV_VIDEO_NOTIFY_REASON_BUSY = 2, XCB_XV_VIDEO_NOTIFY_REASON_PREEMPTED = 3,
#     XCB_XV_VIDEO_NOTIFY_REASON_HARD_ERROR = 4
#   xcb_xv_scanline_order_t* = enum
#     XCB_XV_SCANLINE_ORDER_TOP_TO_BOTTOM = 0,
#     XCB_XV_SCANLINE_ORDER_BOTTOM_TO_TOP = 1
#   xcb_xv_grab_port_status_t* = enum
#     XCB_XV_GRAB_PORT_STATUS_SUCCESS = 0, XCB_XV_GRAB_PORT_STATUS_BAD_EXTENSION = 1,
#     XCB_XV_GRAB_PORT_STATUS_ALREADY_GRABBED = 2,
#     XCB_XV_GRAB_PORT_STATUS_INVALID_TIME = 3,
#     XCB_XV_GRAB_PORT_STATUS_BAD_REPLY = 4, XCB_XV_GRAB_PORT_STATUS_BAD_ALLOC = 5








# ## *
# ##  @brief xcb_xv_rational_t
# ##

# type
#   xcb_xv_rational_t* {.bycopy.} = object
#     numerator*: int32
#     denominator*: int32


# ## *
# ##  @brief xcb_xv_rational_iterator_t
# ##

# type
#   xcb_xv_rational_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_rational_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_format_t
# ##

# type
#   xcb_xv_format_t* {.bycopy.} = object
#     visual*: xcb_visualid_t
#     depth*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_xv_format_iterator_t
# ##

# type
#   xcb_xv_format_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_format_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_adaptor_info_t
# ##

# type
#   xcb_xv_adaptor_info_t* {.bycopy.} = object
#     base_id*: xcb_xv_port_t
#     name_size*: uint16
#     num_ports*: uint16
#     num_formats*: uint16
#     `type`*: uint8
#     pad0*: uint8


# ## *
# ##  @brief xcb_xv_adaptor_info_iterator_t
# ##

# type
#   xcb_xv_adaptor_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_adaptor_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_encoding_info_t
# ##

# type
#   xcb_xv_encoding_info_t* {.bycopy.} = object
#     encoding*: xcb_xv_encoding_t
#     name_size*: uint16
#     width*: uint16
#     height*: uint16
#     pad0*: array[2, uint8]
#     rate*: xcb_xv_rational_t


# ## *
# ##  @brief xcb_xv_encoding_info_iterator_t
# ##

# type
#   xcb_xv_encoding_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_encoding_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_image_t
# ##

# type
#   xcb_xv_image_t* {.bycopy.} = object
#     id*: uint32
#     width*: uint16
#     height*: uint16
#     data_size*: uint32
#     num_planes*: uint32


# ## *
# ##  @brief xcb_xv_image_iterator_t
# ##

# type
#   xcb_xv_image_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_image_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_attribute_info_t
# ##

# type
#   xcb_xv_attribute_info_t* {.bycopy.} = object
#     flags*: uint32
#     min*: int32
#     max*: int32
#     size*: uint32


# ## *
# ##  @brief xcb_xv_attribute_info_iterator_t
# ##

# type
#   xcb_xv_attribute_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_attribute_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xv_image_format_info_t
# ##

# type
#   xcb_xv_image_format_info_t* {.bycopy.} = object
#     id*: uint32
#     `type`*: uint8
#     byte_order*: uint8
#     pad0*: array[2, uint8]
#     guid*: array[16, uint8]
#     bpp*: uint8
#     num_planes*: uint8
#     pad1*: array[2, uint8]
#     depth*: uint8
#     pad2*: array[3, uint8]
#     red_mask*: uint32
#     green_mask*: uint32
#     blue_mask*: uint32
#     format*: uint8
#     pad3*: array[3, uint8]
#     y_sample_bits*: uint32
#     u_sample_bits*: uint32
#     v_sample_bits*: uint32
#     vhorz_y_period*: uint32
#     vhorz_u_period*: uint32
#     vhorz_v_period*: uint32
#     vvert_y_period*: uint32
#     vvert_u_period*: uint32
#     vvert_v_period*: uint32
#     vcomp_order*: array[32, uint8]
#     vscanline_order*: uint8
#     pad4*: array[11, uint8]


# ## *
# ##  @brief xcb_xv_image_format_info_iterator_t
# ##

# type
#   xcb_xv_image_format_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xv_image_format_info_t
#     rem*: cint
#     index*: cint


# ## * Opcode for xcb_xv_bad_port.

# const
#   XCB_XV_BAD_PORT* = 0

# ## *
# ##  @brief xcb_xv_bad_port_error_t
# ##

# type
#   xcb_xv_bad_port_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_xv_bad_encoding.

# const
#   XCB_XV_BAD_ENCODING* = 1

# ## *
# ##  @brief xcb_xv_bad_encoding_error_t
# ##

# type
#   xcb_xv_bad_encoding_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_xv_bad_control.

# const
#   XCB_XV_BAD_CONTROL* = 2

# ## *
# ##  @brief xcb_xv_bad_control_error_t
# ##

# type
#   xcb_xv_bad_control_error_t* {.bycopy.} = object
#     response_type*: uint8
#     error_code*: uint8
#     sequence*: uint16


# ## * Opcode for xcb_xv_video_notify.

# const
#   XCB_XV_VIDEO_NOTIFY* = 0

# ## *
# ##  @brief xcb_xv_video_notify_event_t
# ##

# type
#   xcb_xv_video_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     reason*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     drawable*: xcb_drawable_t
#     port*: xcb_xv_port_t


# ## * Opcode for xcb_xv_port_notify.

# const
#   XCB_XV_PORT_NOTIFY* = 1

# ## *
# ##  @brief xcb_xv_port_notify_event_t
# ##

# type
#   xcb_xv_port_notify_event_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     time*: xcb_timestamp_t
#     port*: xcb_xv_port_t
#     attribute*: xcb_atom_t
#     value*: int32


# ## *
# ##  @brief xcb_xv_query_extension_cookie_t
# ##

# type
#   xcb_xv_query_extension_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_extension.

# const
#   XCB_XV_QUERY_EXTENSION* = 0

# ## *
# ##  @brief xcb_xv_query_extension_request_t
# ##

# type
#   xcb_xv_query_extension_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xv_query_extension_reply_t
# ##

# type
#   xcb_xv_query_extension_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major*: uint16
#     minor*: uint16


# ## *
# ##  @brief xcb_xv_query_adaptors_cookie_t
# ##

# type
#   xcb_xv_query_adaptors_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_adaptors.

# const
#   XCB_XV_QUERY_ADAPTORS* = 1

# ## *
# ##  @brief xcb_xv_query_adaptors_request_t
# ##

# type
#   xcb_xv_query_adaptors_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     window*: xcb_window_t


# ## *
# ##  @brief xcb_xv_query_adaptors_reply_t
# ##

# type
#   xcb_xv_query_adaptors_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_adaptors*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_xv_query_encodings_cookie_t
# ##

# type
#   xcb_xv_query_encodings_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_encodings.

# const
#   XCB_XV_QUERY_ENCODINGS* = 2

# ## *
# ##  @brief xcb_xv_query_encodings_request_t
# ##

# type
#   xcb_xv_query_encodings_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t


# ## *
# ##  @brief xcb_xv_query_encodings_reply_t
# ##

# type
#   xcb_xv_query_encodings_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_encodings*: uint16
#     pad1*: array[22, uint8]


# ## *
# ##  @brief xcb_xv_grab_port_cookie_t
# ##

# type
#   xcb_xv_grab_port_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_grab_port.

# const
#   XCB_XV_GRAB_PORT* = 3

# ## *
# ##  @brief xcb_xv_grab_port_request_t
# ##

# type
#   xcb_xv_grab_port_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     time*: xcb_timestamp_t


# ## *
# ##  @brief xcb_xv_grab_port_reply_t
# ##

# type
#   xcb_xv_grab_port_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     result*: uint8
#     sequence*: uint16
#     length*: uint32


# ## * Opcode for xcb_xv_ungrab_port.

# const
#   XCB_XV_UNGRAB_PORT* = 4

# ## *
# ##  @brief xcb_xv_ungrab_port_request_t
# ##

# type
#   xcb_xv_ungrab_port_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     time*: xcb_timestamp_t


# ## * Opcode for xcb_xv_put_video.

# const
#   XCB_XV_PUT_VIDEO* = 5

# ## *
# ##  @brief xcb_xv_put_video_request_t
# ##

# type
#   xcb_xv_put_video_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     vid_x*: int16
#     vid_y*: int16
#     vid_w*: uint16
#     vid_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16


# ## * Opcode for xcb_xv_put_still.

# const
#   XCB_XV_PUT_STILL* = 6

# ## *
# ##  @brief xcb_xv_put_still_request_t
# ##

# type
#   xcb_xv_put_still_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     vid_x*: int16
#     vid_y*: int16
#     vid_w*: uint16
#     vid_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16


# ## * Opcode for xcb_xv_get_video.

# const
#   XCB_XV_GET_VIDEO* = 7

# ## *
# ##  @brief xcb_xv_get_video_request_t
# ##

# type
#   xcb_xv_get_video_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     vid_x*: int16
#     vid_y*: int16
#     vid_w*: uint16
#     vid_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16


# ## * Opcode for xcb_xv_get_still.

# const
#   XCB_XV_GET_STILL* = 8

# ## *
# ##  @brief xcb_xv_get_still_request_t
# ##

# type
#   xcb_xv_get_still_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     vid_x*: int16
#     vid_y*: int16
#     vid_w*: uint16
#     vid_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16


# ## * Opcode for xcb_xv_stop_video.

# const
#   XCB_XV_STOP_VIDEO* = 9

# ## *
# ##  @brief xcb_xv_stop_video_request_t
# ##

# type
#   xcb_xv_stop_video_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t


# ## * Opcode for xcb_xv_select_video_notify.

# const
#   XCB_XV_SELECT_VIDEO_NOTIFY* = 10

# ## *
# ##  @brief xcb_xv_select_video_notify_request_t
# ##

# type
#   xcb_xv_select_video_notify_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     drawable*: xcb_drawable_t
#     onoff*: uint8
#     pad0*: array[3, uint8]


# ## * Opcode for xcb_xv_select_port_notify.

# const
#   XCB_XV_SELECT_PORT_NOTIFY* = 11

# ## *
# ##  @brief xcb_xv_select_port_notify_request_t
# ##

# type
#   xcb_xv_select_port_notify_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     onoff*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_xv_query_best_size_cookie_t
# ##

# type
#   xcb_xv_query_best_size_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_best_size.

# const
#   XCB_XV_QUERY_BEST_SIZE* = 12

# ## *
# ##  @brief xcb_xv_query_best_size_request_t
# ##

# type
#   xcb_xv_query_best_size_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     vid_w*: uint16
#     vid_h*: uint16
#     drw_w*: uint16
#     drw_h*: uint16
#     motion*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  @brief xcb_xv_query_best_size_reply_t
# ##

# type
#   xcb_xv_query_best_size_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     actual_width*: uint16
#     actual_height*: uint16


# ## * Opcode for xcb_xv_set_port_attribute.

# const
#   XCB_XV_SET_PORT_ATTRIBUTE* = 13

# ## *
# ##  @brief xcb_xv_set_port_attribute_request_t
# ##

# type
#   xcb_xv_set_port_attribute_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     attribute*: xcb_atom_t
#     value*: int32


# ## *
# ##  @brief xcb_xv_get_port_attribute_cookie_t
# ##

# type
#   xcb_xv_get_port_attribute_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_get_port_attribute.

# const
#   XCB_XV_GET_PORT_ATTRIBUTE* = 14

# ## *
# ##  @brief xcb_xv_get_port_attribute_request_t
# ##

# type
#   xcb_xv_get_port_attribute_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     attribute*: xcb_atom_t


# ## *
# ##  @brief xcb_xv_get_port_attribute_reply_t
# ##

# type
#   xcb_xv_get_port_attribute_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     value*: int32


# ## *
# ##  @brief xcb_xv_query_port_attributes_cookie_t
# ##

# type
#   xcb_xv_query_port_attributes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_port_attributes.

# const
#   XCB_XV_QUERY_PORT_ATTRIBUTES* = 15

# ## *
# ##  @brief xcb_xv_query_port_attributes_request_t
# ##

# type
#   xcb_xv_query_port_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t


# ## *
# ##  @brief xcb_xv_query_port_attributes_reply_t
# ##

# type
#   xcb_xv_query_port_attributes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_attributes*: uint32
#     text_size*: uint32
#     pad1*: array[16, uint8]


# ## *
# ##  @brief xcb_xv_list_image_formats_cookie_t
# ##

# type
#   xcb_xv_list_image_formats_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_list_image_formats.

# const
#   XCB_XV_LIST_IMAGE_FORMATS* = 16

# ## *
# ##  @brief xcb_xv_list_image_formats_request_t
# ##

# type
#   xcb_xv_list_image_formats_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t


# ## *
# ##  @brief xcb_xv_list_image_formats_reply_t
# ##

# type
#   xcb_xv_list_image_formats_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_formats*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_xv_query_image_attributes_cookie_t
# ##

# type
#   xcb_xv_query_image_attributes_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xv_query_image_attributes.

# const
#   XCB_XV_QUERY_IMAGE_ATTRIBUTES* = 17

# ## *
# ##  @brief xcb_xv_query_image_attributes_request_t
# ##

# type
#   xcb_xv_query_image_attributes_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     id*: uint32
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_xv_query_image_attributes_reply_t
# ##

# type
#   xcb_xv_query_image_attributes_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num_planes*: uint32
#     data_size*: uint32
#     width*: uint16
#     height*: uint16
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_xv_put_image.

# const
#   XCB_XV_PUT_IMAGE* = 18

# ## *
# ##  @brief xcb_xv_put_image_request_t
# ##

# type
#   xcb_xv_put_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     id*: uint32
#     src_x*: int16
#     src_y*: int16
#     src_w*: uint16
#     src_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16
#     width*: uint16
#     height*: uint16


# ## * Opcode for xcb_xv_shm_put_image.

# const
#   XCB_XV_SHM_PUT_IMAGE* = 19

# ## *
# ##  @brief xcb_xv_shm_put_image_request_t
# ##

# type
#   xcb_xv_shm_put_image_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port*: xcb_xv_port_t
#     drawable*: xcb_drawable_t
#     gc*: xcb_gcontext_t
#     shmseg*: xcb_shm_seg_t
#     id*: uint32
#     offset*: uint32
#     src_x*: int16
#     src_y*: int16
#     src_w*: uint16
#     src_h*: uint16
#     drw_x*: int16
#     drw_y*: int16
#     drw_w*: uint16
#     drw_h*: uint16
#     width*: uint16
#     height*: uint16
#     send_event*: uint8
#     pad0*: array[3, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_port_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_port_t)
# ##

# proc xcb_xv_port_next*(i: ptr xcb_xv_port_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_port_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_port_end*(i: xcb_xv_port_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_encoding_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_encoding_t)
# ##

# proc xcb_xv_encoding_next*(i: ptr xcb_xv_encoding_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_encoding_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_encoding_end*(i: xcb_xv_encoding_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_rational_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_rational_t)
# ##

# proc xcb_xv_rational_next*(i: ptr xcb_xv_rational_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_rational_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_rational_end*(i: xcb_xv_rational_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_format_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_format_t)
# ##

# proc xcb_xv_format_next*(i: ptr xcb_xv_format_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_format_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_format_end*(i: xcb_xv_format_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_adaptor_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_adaptor_info_name*(R: ptr xcb_xv_adaptor_info_t): cstring
# proc xcb_xv_adaptor_info_name_length*(R: ptr xcb_xv_adaptor_info_t): cint
# proc xcb_xv_adaptor_info_name_end*(R: ptr xcb_xv_adaptor_info_t): xcb_generic_iterator_t
# proc xcb_xv_adaptor_info_formats*(R: ptr xcb_xv_adaptor_info_t): ptr xcb_xv_format_t
# proc xcb_xv_adaptor_info_formats_length*(R: ptr xcb_xv_adaptor_info_t): cint
# proc xcb_xv_adaptor_info_formats_iterator*(R: ptr xcb_xv_adaptor_info_t): xcb_xv_format_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_adaptor_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_adaptor_info_t)
# ##

# proc xcb_xv_adaptor_info_next*(i: ptr xcb_xv_adaptor_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_adaptor_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_adaptor_info_end*(i: xcb_xv_adaptor_info_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_encoding_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_encoding_info_name*(R: ptr xcb_xv_encoding_info_t): cstring
# proc xcb_xv_encoding_info_name_length*(R: ptr xcb_xv_encoding_info_t): cint
# proc xcb_xv_encoding_info_name_end*(R: ptr xcb_xv_encoding_info_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_encoding_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_encoding_info_t)
# ##

# proc xcb_xv_encoding_info_next*(i: ptr xcb_xv_encoding_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_encoding_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_encoding_info_end*(i: xcb_xv_encoding_info_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_image_sizeof*(_buffer: pointer): cint
# proc xcb_xv_image_pitches*(R: ptr xcb_xv_image_t): ptr uint32
# proc xcb_xv_image_pitches_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_pitches_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# proc xcb_xv_image_offsets*(R: ptr xcb_xv_image_t): ptr uint32
# proc xcb_xv_image_offsets_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_offsets_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# proc xcb_xv_image_data*(R: ptr xcb_xv_image_t): ptr uint8
# proc xcb_xv_image_data_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_data_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_image_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_image_t)
# ##

# proc xcb_xv_image_next*(i: ptr xcb_xv_image_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_image_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_image_end*(i: xcb_xv_image_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_attribute_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_attribute_info_name*(R: ptr xcb_xv_attribute_info_t): cstring
# proc xcb_xv_attribute_info_name_length*(R: ptr xcb_xv_attribute_info_t): cint
# proc xcb_xv_attribute_info_name_end*(R: ptr xcb_xv_attribute_info_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_attribute_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_attribute_info_t)
# ##

# proc xcb_xv_attribute_info_next*(i: ptr xcb_xv_attribute_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_attribute_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_attribute_info_end*(i: xcb_xv_attribute_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xv_image_format_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xv_image_format_info_t)
# ##

# proc xcb_xv_image_format_info_next*(i: ptr xcb_xv_image_format_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xv_image_format_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xv_image_format_info_end*(i: xcb_xv_image_format_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_extension*(c: ptr xcb_connection_t): xcb_xv_query_extension_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_extension_unchecked*(c: ptr xcb_connection_t): xcb_xv_query_extension_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_extension_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_extension_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_extension_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_extension_reply_t
# proc xcb_xv_query_adaptors_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_adaptors*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xv_query_adaptors_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_adaptors_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xv_query_adaptors_cookie_t
# proc xcb_xv_query_adaptors_info_length*(R: ptr xcb_xv_query_adaptors_reply_t): cint
# proc xcb_xv_query_adaptors_info_iterator*(R: ptr xcb_xv_query_adaptors_reply_t): xcb_xv_adaptor_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_adaptors_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_adaptors_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_adaptors_cookie_t; ## *<
#                                  e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_adaptors_reply_t
# proc xcb_xv_query_encodings_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_encodings*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_encodings_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_encodings_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_encodings_cookie_t
# proc xcb_xv_query_encodings_info_length*(R: ptr xcb_xv_query_encodings_reply_t): cint
# proc xcb_xv_query_encodings_info_iterator*(R: ptr xcb_xv_query_encodings_reply_t): xcb_xv_encoding_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_encodings_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_encodings_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_encodings_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_encodings_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_grab_port*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       time: xcb_timestamp_t): xcb_xv_grab_port_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_grab_port_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                 time: xcb_timestamp_t): xcb_xv_grab_port_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_grab_port_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_grab_port_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_grab_port_cookie_t; ## *<
#                             e: ptr ptr xcb_generic_error_t): ptr xcb_xv_grab_port_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_ungrab_port_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                 time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_ungrab_port*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                         time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_put_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               vid_x: int16; vid_y: int16; vid_w: uint16;
#                               vid_h: uint16; drw_x: int16; drw_y: int16;
#                               drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_put_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
#                       vid_y: int16; vid_w: uint16; vid_h: uint16;
#                       drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_put_still_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               vid_x: int16; vid_y: int16; vid_w: uint16;
#                               vid_h: uint16; drw_x: int16; drw_y: int16;
#                               drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_put_still*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
#                       vid_y: int16; vid_w: uint16; vid_h: uint16;
#                       drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_get_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               vid_x: int16; vid_y: int16; vid_w: uint16;
#                               vid_h: uint16; drw_x: int16; drw_y: int16;
#                               drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_get_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
#                       vid_y: int16; vid_w: uint16; vid_h: uint16;
#                       drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_get_still_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               vid_x: int16; vid_y: int16; vid_w: uint16;
#                               vid_h: uint16; drw_x: int16; drw_y: int16;
#                               drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_get_still*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
#                       vid_y: int16; vid_w: uint16; vid_h: uint16;
#                       drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_stop_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_stop_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                        drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_select_video_notify_checked*(c: ptr xcb_connection_t;
#                                         drawable: xcb_drawable_t; onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_select_video_notify*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
#                                 onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_select_port_notify_checked*(c: ptr xcb_connection_t;
#                                        port: xcb_xv_port_t; onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_select_port_notify*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_best_size*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                             vid_w: uint16; vid_h: uint16; drw_w: uint16;
#                             drw_h: uint16; motion: uint8): xcb_xv_query_best_size_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_best_size_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                       vid_w: uint16; vid_h: uint16;
#                                       drw_w: uint16; drw_h: uint16;
#                                       motion: uint8): xcb_xv_query_best_size_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_best_size_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_best_size_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_best_size_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_best_size_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_set_port_attribute_checked*(c: ptr xcb_connection_t;
#                                        port: xcb_xv_port_t; attribute: xcb_atom_t;
#                                        value: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_set_port_attribute*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                attribute: xcb_atom_t; value: int32): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_get_port_attribute*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                attribute: xcb_atom_t): xcb_xv_get_port_attribute_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_get_port_attribute_unchecked*(c: ptr xcb_connection_t;
#     port: xcb_xv_port_t; attribute: xcb_atom_t): xcb_xv_get_port_attribute_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_get_port_attribute_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_get_port_attribute_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_get_port_attribute_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_xv_get_port_attribute_reply_t
# proc xcb_xv_query_port_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_port_attributes*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_port_attributes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_port_attributes_unchecked*(c: ptr xcb_connection_t;
#     port: xcb_xv_port_t): xcb_xv_query_port_attributes_cookie_t
# proc xcb_xv_query_port_attributes_attributes_length*(
#     R: ptr xcb_xv_query_port_attributes_reply_t): cint
# proc xcb_xv_query_port_attributes_attributes_iterator*(
#     R: ptr xcb_xv_query_port_attributes_reply_t): xcb_xv_attribute_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_port_attributes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_port_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_port_attributes_cookie_t; ## *<
#                                         e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_port_attributes_reply_t
# proc xcb_xv_list_image_formats_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_list_image_formats*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_list_image_formats_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_list_image_formats_unchecked*(c: ptr xcb_connection_t;
#     port: xcb_xv_port_t): xcb_xv_list_image_formats_cookie_t
# proc xcb_xv_list_image_formats_format*(R: ptr xcb_xv_list_image_formats_reply_t): ptr xcb_xv_image_format_info_t
# proc xcb_xv_list_image_formats_format_length*(
#     R: ptr xcb_xv_list_image_formats_reply_t): cint
# proc xcb_xv_list_image_formats_format_iterator*(
#     R: ptr xcb_xv_list_image_formats_reply_t): xcb_xv_image_format_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_list_image_formats_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_list_image_formats_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_list_image_formats_cookie_t; ## *<
#                                      e: ptr ptr xcb_generic_error_t): ptr xcb_xv_list_image_formats_reply_t
# proc xcb_xv_query_image_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_query_image_attributes*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                    id: uint32; width: uint16; height: uint16): xcb_xv_query_image_attributes_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xv_query_image_attributes_unchecked*(c: ptr xcb_connection_t;
#     port: xcb_xv_port_t; id: uint32; width: uint16; height: uint16): xcb_xv_query_image_attributes_cookie_t
# proc xcb_xv_query_image_attributes_pitches*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): ptr uint32
# proc xcb_xv_query_image_attributes_pitches_length*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): cint
# proc xcb_xv_query_image_attributes_pitches_end*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): xcb_generic_iterator_t
# proc xcb_xv_query_image_attributes_offsets*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): ptr uint32
# proc xcb_xv_query_image_attributes_offsets_length*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): cint
# proc xcb_xv_query_image_attributes_offsets_end*(
#     R: ptr xcb_xv_query_image_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xv_query_image_attributes_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xv_query_image_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_image_attributes_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_image_attributes_reply_t
# proc xcb_xv_put_image_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_put_image_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                               drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                               id: uint32; src_x: int16; src_y: int16;
#                               src_w: uint16; src_h: uint16; drw_x: int16;
#                               drw_y: int16; drw_w: uint16; drw_h: uint16;
#                               width: uint16; height: uint16; data_len: uint32;
#                               data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_put_image*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                       drawable: xcb_drawable_t; gc: xcb_gcontext_t; id: uint32;
#                       src_x: int16; src_y: int16; src_w: uint16;
#                       src_h: uint16; drw_x: int16; drw_y: int16;
#                       drw_w: uint16; drw_h: uint16; width: uint16;
#                       height: uint16; data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# proc xcb_xv_put_image_data*(R: ptr xcb_xv_put_image_request_t): ptr uint8
# proc xcb_xv_put_image_data_length*(R: ptr xcb_xv_put_image_request_t): cint
# proc xcb_xv_put_image_data_end*(R: ptr xcb_xv_put_image_request_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xv_shm_put_image_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                                   drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                                   shmseg: xcb_shm_seg_t; id: uint32;
#                                   offset: uint32; src_x: int16; src_y: int16;
#                                   src_w: uint16; src_h: uint16; drw_x: int16;
#                                   drw_y: int16; drw_w: uint16; drw_h: uint16;
#                                   width: uint16; height: uint16;
#                                   send_event: uint8): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xv_shm_put_image*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
#                           drawable: xcb_drawable_t; gc: xcb_gcontext_t;
#                           shmseg: xcb_shm_seg_t; id: uint32; offset: uint32;
#                           src_x: int16; src_y: int16; src_w: uint16;
#                           src_h: uint16; drw_x: int16; drw_y: int16;
#                           drw_w: uint16; drw_h: uint16; width: uint16;
#                           height: uint16; send_event: uint8): xcb_void_cookie_t
# ## *
# ##  @}
# ##

# ##
# ##  This file generated automatically from xvmc.xml by c_client.py.
# ##  Edit at your peril.
# ##
# ## *
# ##  @defgroup XCB_XvMC_API XCB XvMC API
# ##  @brief XvMC XCB Protocol Implementation.
# ##  @{
# ##

# import
#   xcb, xv

# const
#   XCB_XVMC_MAJOR_VERSION* = 1
#   XCB_XVMC_MINOR_VERSION* = 1

# var xcb_xvmc_id*: xcb_extension_t

# type
#   xcb_xvmc_context_t* = uint32

# ## *
# ##  @brief xcb_xvmc_context_iterator_t
# ##

# type
#   xcb_xvmc_context_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xvmc_context_t
#     rem*: cint
#     index*: cint

#   xcb_xvmc_surface_t* = uint32

# ## *
# ##  @brief xcb_xvmc_surface_iterator_t
# ##

# type
#   xcb_xvmc_surface_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xvmc_surface_t
#     rem*: cint
#     index*: cint

#   xcb_xvmc_subpicture_t* = uint32

# ## *
# ##  @brief xcb_xvmc_subpicture_iterator_t
# ##

# type
#   xcb_xvmc_subpicture_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xvmc_subpicture_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xvmc_surface_info_t
# ##

# type
#   xcb_xvmc_surface_info_t* {.bycopy.} = object
#     id*: xcb_xvmc_surface_t
#     chroma_format*: uint16
#     pad0*: uint16
#     max_width*: uint16
#     max_height*: uint16
#     subpicture_max_width*: uint16
#     subpicture_max_height*: uint16
#     mc_type*: uint32
#     flags*: uint32


# ## *
# ##  @brief xcb_xvmc_surface_info_iterator_t
# ##

# type
#   xcb_xvmc_surface_info_iterator_t* {.bycopy.} = object
#     data*: ptr xcb_xvmc_surface_info_t
#     rem*: cint
#     index*: cint


# ## *
# ##  @brief xcb_xvmc_query_version_cookie_t
# ##

# type
#   xcb_xvmc_query_version_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_query_version.

# const
#   XCB_XVMC_QUERY_VERSION* = 0

# ## *
# ##  @brief xcb_xvmc_query_version_request_t
# ##

# type
#   xcb_xvmc_query_version_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16


# ## *
# ##  @brief xcb_xvmc_query_version_reply_t
# ##

# type
#   xcb_xvmc_query_version_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     major*: uint32
#     minor*: uint32


# ## *
# ##  @brief xcb_xvmc_list_surface_types_cookie_t
# ##

# type
#   xcb_xvmc_list_surface_types_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_list_surface_types.

# const
#   XCB_XVMC_LIST_SURFACE_TYPES* = 1

# ## *
# ##  @brief xcb_xvmc_list_surface_types_request_t
# ##

# type
#   xcb_xvmc_list_surface_types_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port_id*: xcb_xv_port_t


# ## *
# ##  @brief xcb_xvmc_list_surface_types_reply_t
# ##

# type
#   xcb_xvmc_list_surface_types_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  @brief xcb_xvmc_create_context_cookie_t
# ##

# type
#   xcb_xvmc_create_context_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_create_context.

# const
#   XCB_XVMC_CREATE_CONTEXT* = 2

# ## *
# ##  @brief xcb_xvmc_create_context_request_t
# ##

# type
#   xcb_xvmc_create_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_id*: xcb_xvmc_context_t
#     port_id*: xcb_xv_port_t
#     surface_id*: xcb_xvmc_surface_t
#     width*: uint16
#     height*: uint16
#     flags*: uint32


# ## *
# ##  @brief xcb_xvmc_create_context_reply_t
# ##

# type
#   xcb_xvmc_create_context_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width_actual*: uint16
#     height_actual*: uint16
#     flags_return*: uint32
#     pad1*: array[20, uint8]


# ## * Opcode for xcb_xvmc_destroy_context.

# const
#   XCB_XVMC_DESTROY_CONTEXT* = 3

# ## *
# ##  @brief xcb_xvmc_destroy_context_request_t
# ##

# type
#   xcb_xvmc_destroy_context_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     context_id*: xcb_xvmc_context_t


# ## *
# ##  @brief xcb_xvmc_create_surface_cookie_t
# ##

# type
#   xcb_xvmc_create_surface_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_create_surface.

# const
#   XCB_XVMC_CREATE_SURFACE* = 4

# ## *
# ##  @brief xcb_xvmc_create_surface_request_t
# ##

# type
#   xcb_xvmc_create_surface_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     surface_id*: xcb_xvmc_surface_t
#     context_id*: xcb_xvmc_context_t


# ## *
# ##  @brief xcb_xvmc_create_surface_reply_t
# ##

# type
#   xcb_xvmc_create_surface_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     pad1*: array[24, uint8]


# ## * Opcode for xcb_xvmc_destroy_surface.

# const
#   XCB_XVMC_DESTROY_SURFACE* = 5

# ## *
# ##  @brief xcb_xvmc_destroy_surface_request_t
# ##

# type
#   xcb_xvmc_destroy_surface_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     surface_id*: xcb_xvmc_surface_t


# ## *
# ##  @brief xcb_xvmc_create_subpicture_cookie_t
# ##

# type
#   xcb_xvmc_create_subpicture_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_create_subpicture.

# const
#   XCB_XVMC_CREATE_SUBPICTURE* = 6

# ## *
# ##  @brief xcb_xvmc_create_subpicture_request_t
# ##

# type
#   xcb_xvmc_create_subpicture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     subpicture_id*: xcb_xvmc_subpicture_t
#     context*: xcb_xvmc_context_t
#     xvimage_id*: uint32
#     width*: uint16
#     height*: uint16


# ## *
# ##  @brief xcb_xvmc_create_subpicture_reply_t
# ##

# type
#   xcb_xvmc_create_subpicture_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     width_actual*: uint16
#     height_actual*: uint16
#     num_palette_entries*: uint16
#     entry_bytes*: uint16
#     component_order*: array[4, uint8]
#     pad1*: array[12, uint8]


# ## * Opcode for xcb_xvmc_destroy_subpicture.

# const
#   XCB_XVMC_DESTROY_SUBPICTURE* = 7

# ## *
# ##  @brief xcb_xvmc_destroy_subpicture_request_t
# ##

# type
#   xcb_xvmc_destroy_subpicture_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     subpicture_id*: xcb_xvmc_subpicture_t


# ## *
# ##  @brief xcb_xvmc_list_subpicture_types_cookie_t
# ##

# type
#   xcb_xvmc_list_subpicture_types_cookie_t* {.bycopy.} = object
#     sequence*: uint8


# ## * Opcode for xcb_xvmc_list_subpicture_types.

# const
#   XCB_XVMC_LIST_SUBPICTURE_TYPES* = 8

# ## *
# ##  @brief xcb_xvmc_list_subpicture_types_request_t
# ##

# type
#   xcb_xvmc_list_subpicture_types_request_t* {.bycopy.} = object
#     major_opcode*: uint8
#     minor_opcode*: uint8
#     length*: uint16
#     port_id*: xcb_xv_port_t
#     surface_id*: xcb_xvmc_surface_t


# ## *
# ##  @brief xcb_xvmc_list_subpicture_types_reply_t
# ##

# type
#   xcb_xvmc_list_subpicture_types_reply_t* {.bycopy.} = object
#     response_type*: uint8
#     pad0*: uint8
#     sequence*: uint16
#     length*: uint32
#     num*: uint32
#     pad1*: array[20, uint8]


# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xvmc_context_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xvmc_context_t)
# ##

# proc xcb_xvmc_context_next*(i: ptr xcb_xvmc_context_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xvmc_context_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xvmc_context_end*(i: xcb_xvmc_context_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xvmc_surface_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xvmc_surface_t)
# ##

# proc xcb_xvmc_surface_next*(i: ptr xcb_xvmc_surface_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xvmc_surface_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xvmc_surface_end*(i: xcb_xvmc_surface_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xvmc_subpicture_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xvmc_subpicture_t)
# ##

# proc xcb_xvmc_subpicture_next*(i: ptr xcb_xvmc_subpicture_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xvmc_subpicture_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xvmc_subpicture_end*(i: xcb_xvmc_subpicture_iterator_t): xcb_generic_iterator_t
# ## *
# ##  Get the next element of the iterator
# ##  @param i Pointer to a xcb_xvmc_surface_info_iterator_t
# ##
# ##  Get the next element in the iterator. The member rem is
# ##  decreased by one. The member data points to the next
# ##  element. The member index is increased by sizeof(xcb_xvmc_surface_info_t)
# ##

# proc xcb_xvmc_surface_info_next*(i: ptr xcb_xvmc_surface_info_iterator_t)
# ## *
# ##  Return the iterator pointing to the last element
# ##  @param i An xcb_xvmc_surface_info_iterator_t
# ##  @return  The iterator pointing to the last element
# ##
# ##  Set the current element in the iterator to the last element.
# ##  The member rem is set to 0. The member data points to the
# ##  last element.
# ##

# proc xcb_xvmc_surface_info_end*(i: xcb_xvmc_surface_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_query_version*(c: ptr xcb_connection_t): xcb_xvmc_query_version_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_query_version_unchecked*(c: ptr xcb_connection_t): xcb_xvmc_query_version_cookie_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_query_version_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_query_version_cookie_t; ## *<
#                                   e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_query_version_reply_t
# proc xcb_xvmc_list_surface_types_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_list_surface_types*(c: ptr xcb_connection_t; port_id: xcb_xv_port_t): xcb_xvmc_list_surface_types_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_list_surface_types_unchecked*(c: ptr xcb_connection_t;
#     port_id: xcb_xv_port_t): xcb_xvmc_list_surface_types_cookie_t
# proc xcb_xvmc_list_surface_types_surfaces*(
#     R: ptr xcb_xvmc_list_surface_types_reply_t): ptr xcb_xvmc_surface_info_t
# proc xcb_xvmc_list_surface_types_surfaces_length*(
#     R: ptr xcb_xvmc_list_surface_types_reply_t): cint
# proc xcb_xvmc_list_surface_types_surfaces_iterator*(
#     R: ptr xcb_xvmc_list_surface_types_reply_t): xcb_xvmc_surface_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_list_surface_types_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_list_surface_types_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_list_surface_types_cookie_t; ## *<
#                                        e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_list_surface_types_reply_t
# proc xcb_xvmc_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_create_context*(c: ptr xcb_connection_t;
#                              context_id: xcb_xvmc_context_t;
#                              port_id: xcb_xv_port_t;
#                              surface_id: xcb_xvmc_surface_t; width: uint16;
#                              height: uint16; flags: uint32): xcb_xvmc_create_context_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_create_context_unchecked*(c: ptr xcb_connection_t;
#                                        context_id: xcb_xvmc_context_t;
#                                        port_id: xcb_xv_port_t;
#                                        surface_id: xcb_xvmc_surface_t;
#                                        width: uint16; height: uint16;
#                                        flags: uint32): xcb_xvmc_create_context_cookie_t
# proc xcb_xvmc_create_context_priv_data*(R: ptr xcb_xvmc_create_context_reply_t): ptr uint32
# proc xcb_xvmc_create_context_priv_data_length*(
#     R: ptr xcb_xvmc_create_context_reply_t): cint
# proc xcb_xvmc_create_context_priv_data_end*(
#     R: ptr xcb_xvmc_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_create_context_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_context_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_context_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xvmc_destroy_context_checked*(c: ptr xcb_connection_t;
#                                       context_id: xcb_xvmc_context_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_destroy_context*(c: ptr xcb_connection_t;
#                               context_id: xcb_xvmc_context_t): xcb_void_cookie_t
# proc xcb_xvmc_create_surface_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_create_surface*(c: ptr xcb_connection_t;
#                              surface_id: xcb_xvmc_surface_t;
#                              context_id: xcb_xvmc_context_t): xcb_xvmc_create_surface_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_create_surface_unchecked*(c: ptr xcb_connection_t;
#                                        surface_id: xcb_xvmc_surface_t;
#                                        context_id: xcb_xvmc_context_t): xcb_xvmc_create_surface_cookie_t
# proc xcb_xvmc_create_surface_priv_data*(R: ptr xcb_xvmc_create_surface_reply_t): ptr uint32
# proc xcb_xvmc_create_surface_priv_data_length*(
#     R: ptr xcb_xvmc_create_surface_reply_t): cint
# proc xcb_xvmc_create_surface_priv_data_end*(
#     R: ptr xcb_xvmc_create_surface_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_create_surface_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_create_surface_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_surface_cookie_t; ## *<
#                                    e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_surface_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xvmc_destroy_surface_checked*(c: ptr xcb_connection_t;
#                                       surface_id: xcb_xvmc_surface_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_destroy_surface*(c: ptr xcb_connection_t;
#                               surface_id: xcb_xvmc_surface_t): xcb_void_cookie_t
# proc xcb_xvmc_create_subpicture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_create_subpicture*(c: ptr xcb_connection_t;
#                                 subpicture_id: xcb_xvmc_subpicture_t;
#                                 context: xcb_xvmc_context_t; xvimage_id: uint32;
#                                 width: uint16; height: uint16): xcb_xvmc_create_subpicture_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_create_subpicture_unchecked*(c: ptr xcb_connection_t;
#     subpicture_id: xcb_xvmc_subpicture_t; context: xcb_xvmc_context_t;
#     xvimage_id: uint32; width: uint16; height: uint16): xcb_xvmc_create_subpicture_cookie_t
# proc xcb_xvmc_create_subpicture_priv_data*(
#     R: ptr xcb_xvmc_create_subpicture_reply_t): ptr uint32
# proc xcb_xvmc_create_subpicture_priv_data_length*(
#     R: ptr xcb_xvmc_create_subpicture_reply_t): cint
# proc xcb_xvmc_create_subpicture_priv_data_end*(
#     R: ptr xcb_xvmc_create_subpicture_reply_t): xcb_generic_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_create_subpicture_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_create_subpicture_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_subpicture_cookie_t; ## *<
#                                       e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_subpicture_reply_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will not cause
# ##  a reply to be generated. Any returned error will be
# ##  saved for handling by xcb_request_check().
# ##

# proc xcb_xvmc_destroy_subpicture_checked*(c: ptr xcb_connection_t;
#     subpicture_id: xcb_xvmc_subpicture_t): xcb_void_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_destroy_subpicture*(c: ptr xcb_connection_t;
#                                  subpicture_id: xcb_xvmc_subpicture_t): xcb_void_cookie_t
# proc xcb_xvmc_list_subpicture_types_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##

# proc xcb_xvmc_list_subpicture_types*(c: ptr xcb_connection_t;
#                                     port_id: xcb_xv_port_t;
#                                     surface_id: xcb_xvmc_surface_t): xcb_xvmc_list_subpicture_types_cookie_t
# ## *
# ##
# ##  @param c The connection
# ##  @return A cookie
# ##
# ##  Delivers a request to the X server.
# ##
# ##  This form can be used only if the request will cause
# ##  a reply to be generated. Any returned error will be
# ##  placed in the event queue.
# ##

# proc xcb_xvmc_list_subpicture_types_unchecked*(c: ptr xcb_connection_t;
#     port_id: xcb_xv_port_t; surface_id: xcb_xvmc_surface_t): xcb_xvmc_list_subpicture_types_cookie_t
# proc xcb_xvmc_list_subpicture_types_types*(
#     R: ptr xcb_xvmc_list_subpicture_types_reply_t): ptr xcb_xv_image_format_info_t
# proc xcb_xvmc_list_subpicture_types_types_length*(
#     R: ptr xcb_xvmc_list_subpicture_types_reply_t): cint
# proc xcb_xvmc_list_subpicture_types_types_iterator*(
#     R: ptr xcb_xvmc_list_subpicture_types_reply_t): xcb_xv_image_format_info_iterator_t
# ## *
# ##  Return the reply
# ##  @param c      The connection
# ##  @param cookie The cookie
# ##  @param e      The xcb_generic_error_t supplied
# ##
# ##  Returns the reply of the request asked by
# ##
# ##  The parameter @p e supplied to this function must be NULL if
# ##  xcb_xvmc_list_subpicture_types_unchecked(). is used.
# ##  Otherwise, it stores the error if any.
# ##
# ##  The returned value must be freed by the caller using free().
# ##

# proc xcb_xvmc_list_subpicture_types_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_list_subpicture_types_cookie_t; ## *<
#     e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_list_subpicture_types_reply_t
# ## *
# ##  @}
# ##