# TODO: 
# 1. document all the XCB/XKB linkings
# 2. move these to their proper files
{.deadCodeElim: on.}

when defined linux:
 {.passL: "-lxcb".}
 {.passL: "-lxcb".}
 {.passL: "-lX11-xcb".}
 {.passl: "-lxcb-util".}
 {.passl: "-lxcb-randr".}
 {.passl: "-lxcb-xkb".}
 {.passl: "-lxkbcommon".}
 {.passl: "-lxkbcommon-x11".}
 {.passl: "-lxcb-xrm".}
 {.passl: "-lxkbfile".} # links XKBRules stuff for keyboard layouts 
 {.passl: "-lXfixes".} 
 {.passl: "-lxcb-xfixes".} 
 {.passl: "-lxcb-ewmh".} 
 {.passl: "-lXcomposite".} 
 {.passl: "-lxcb-composite".} 

when defined dragonfly:
 {.passL: "`pkgconf --cflags --libs xcb`".}
 {.passL: "`pkgconf --cflags --libs xcb-util`".}
 {.passL: "`pkgconf --cflags --libs xcb-randr`".}
 {.passL: "`pkgconf --cflags --libs xcb-xkb`".}
 {.passL: "`pkgconf --cflags --libs xkbcommon`".}
 
import x
, xrandr
, xlib

const
  XCB_NONE* = 0
  ## * XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters
  XCB_COPY_FROM_PARENT* = 0
  ## * XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t
  XCB_CURRENT_TIME* = 0
  ## * XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables
  XCB_NO_SYMBOL* = 0
  XCB_KEY_RELEASE* = 3
  XCB_BUTTON_PRESS* = 4
  XCB_BUTTON_RELEASE* = 5
  XCB_MOTION_NOTIFY* = 6
  XCB_DESTROY_NOTIFY* = 17
  XCB_CONFIGURE_NOTIFY* = 22
  XCB_RESIZE_REQUEST* = 25
  XCB_BIGREQUESTS_MAJOR_VERSION* = 0
  XCB_BIG_REQUESTS_ENABLE* = 0
  XCB_COMPOSITE_MAJOR_VERSION* = 0
  XCB_COMPOSITE_QUERY_VERSION* = 0
  XCB_COMPOSITE_REDIRECT_WINDOW* = 1
  XCB_COMPOSITE_REDIRECT_SUBWINDOWS* = 2
  XCB_COMPOSITE_UNREDIRECT_WINDOW* = 3
  XCB_COMPOSITE_UNREDIRECT_SUBWINDOWS* = 4
  XCB_COMPOSITE_CREATE_REGION_FROM_BORDER_CLIP* = 5
  XCB_COMPOSITE_NAME_WINDOW_PIXMAP* = 6
  XCB_COMPOSITE_GET_OVERLAY_WINDOW* = 7
  XCB_COMPOSITE_RELEASE_OVERLAY_WINDOW* = 8
  XCB_DAMAGE_MAJOR_VERSION* = 1
  XCB_DAMAGE_BAD_DAMAGE* = 0
  XCB_DAMAGE_QUERY_VERSION* = 0
  XCB_DAMAGE_CREATE* = 1
  XCB_DAMAGE_DESTROY* = 2
  XCB_DAMAGE_SUBTRACT* = 3
  XCB_DAMAGE_ADD* = 4
  XCB_DAMAGE_NOTIFY* = 0
  XCB_DPMS_MAJOR_VERSION* = 0
  XCB_DPMS_GET_VERSION* = 0
  XCB_DPMS_CAPABLE* = 1
  XCB_DPMS_GET_TIMEOUTS* = 2
  XCB_DPMS_SET_TIMEOUTS* = 3
  XCB_DPMS_ENABLE* = 4
  XCB_DPMS_DISABLE* = 5
  XCB_DPMS_FORCE_LEVEL* = 6
  XCB_DPMS_INFO* = 7
  XCB_DRI2_MAJOR_VERSION* = 1
  XCB_DRI2_QUERY_VERSION* = 0
  XCB_DRI2_CONNECT* = 1
  XCB_DRI2_AUTHENTICATE* = 2
  XCB_DRI2_CREATE_DRAWABLE* = 3
  XCB_DRI2_DESTROY_DRAWABLE* = 4
  XCB_DRI2_GET_BUFFERS* = 5
  XCB_DRI2_COPY_REGION* = 6
  XCB_DRI2_GET_BUFFERS_WITH_FORMAT* = 7
  XCB_DRI2_SWAP_BUFFERS* = 8
  XCB_DRI2_GET_MSC* = 9
  XCB_DRI2_WAIT_MSC* = 10
  XCB_DRI2_WAIT_SBC* = 11
  XCB_DRI2_SWAP_INTERVAL* = 12
  XCB_DRI2_GET_PARAM* = 13
  XCB_DRI2_BUFFER_SWAP_COMPLETE* = 0
  XCB_DRI2_INVALIDATE_BUFFERS* = 1
  XCB_DRI3_MAJOR_VERSION* = 1
  XCB_DRI3_QUERY_VERSION* = 0
  XCB_DRI3_OPEN* = 1
  XCB_DRI3_PIXMAP_FROM_BUFFER* = 2
  XCB_DRI3_BUFFER_FROM_PIXMAP* = 3
  XCB_DRI3_FENCE_FROM_FD* = 4
  XCB_DRI3_FD_FROM_FENCE* = 5
  XCB_DRI3_GET_SUPPORTED_MODIFIERS* = 6
  XCB_DRI3_PIXMAP_FROM_BUFFERS* = 7
  XCB_DRI3_BUFFERS_FROM_PIXMAP* = 8
  XCB_GENERICEVENT_MAJOR_VERSION* = 1
  XCB_GENERICEVENT_QUERY_VERSION* = 0
  XCB_PRESENT_MAJOR_VERSION* = 1
  XCB_PRESENT_QUERY_VERSION* = 0
  XCB_PRESENT_PIXMAP* = 1
  XCB_PRESENT_NOTIFY_MSC* = 2
  XCB_PRESENT_SELECT_INPUT* = 3
  XCB_PRESENT_QUERY_CAPABILITIES* = 4
  XCB_PRESENT_GENERIC* = 0
  XCB_PRESENT_CONFIGURE_NOTIFY* = 0
  XCB_PRESENT_COMPLETE_NOTIFY* = 1
  XCB_PRESENT_IDLE_NOTIFY* = 2
  XCB_PRESENT_REDIRECT_NOTIFY* = 3
  XCB_RANDR_MAJOR_VERSION* = 1
  XCB_RANDR_MINOR_VERSION* = 6
  XCB_RANDR_BAD_OUTPUT* = 0
  XCB_RANDR_BAD_CRTC* = 1
  XCB_RANDR_BAD_MODE* = 2
  XCB_RANDR_BAD_PROVIDER* = 3
  XCB_RANDR_QUERY_VERSION* = 0
  XCB_RANDR_SET_SCREEN_CONFIG* = 2
  XCB_RANDR_SELECT_INPUT* = 4
  XCB_RANDR_GET_SCREEN_INFO* = 5
  XCB_RANDR_GET_SCREEN_SIZE_RANGE* = 6
  XCB_RANDR_SET_SCREEN_SIZE* = 7
  XCB_RANDR_GET_SCREEN_RESOURCES* = 8
  XCB_RANDR_GET_OUTPUT_INFO* = 9
  XCB_RANDR_LIST_OUTPUT_PROPERTIES* = 10
  XCB_RANDR_QUERY_OUTPUT_PROPERTY* = 11
  XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY* = 12
  XCB_RANDR_CHANGE_OUTPUT_PROPERTY* = 13
  XCB_RANDR_DELETE_OUTPUT_PROPERTY* = 14
  XCB_RANDR_GET_OUTPUT_PROPERTY* = 15
  XCB_RANDR_CREATE_MODE* = 16
  XCB_RANDR_DESTROY_MODE* = 17
  XCB_RANDR_ADD_OUTPUT_MODE* = 18
  XCB_RANDR_DELETE_OUTPUT_MODE* = 19
  XCB_RANDR_GET_CRTC_INFO* = 20
  XCB_RANDR_SET_CRTC_CONFIG* = 21
  XCB_RANDR_GET_CRTC_GAMMA_SIZE* = 22
  XCB_RANDR_GET_CRTC_GAMMA* = 23
  XCB_RANDR_SET_CRTC_GAMMA* = 24
  XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT* = 25
  XCB_RANDR_SET_CRTC_TRANSFORM* = 26
  XCB_RANDR_GET_CRTC_TRANSFORM* = 27
  XCB_RANDR_GET_PANNING* = 28
  XCB_RANDR_SET_PANNING* = 29
  XCB_RANDR_SET_OUTPUT_PRIMARY* = 30
  XCB_RANDR_GET_OUTPUT_PRIMARY* = 31
  XCB_RANDR_GET_PROVIDERS* = 32
  XCB_RANDR_GET_PROVIDER_INFO* = 33
  XCB_RANDR_SET_PROVIDER_OFFLOAD_SINK* = 34
  XCB_RANDR_SET_PROVIDER_OUTPUT_SOURCE* = 35
  XCB_RANDR_LIST_PROVIDER_PROPERTIES* = 36
  XCB_RANDR_QUERY_PROVIDER_PROPERTY* = 37
  XCB_RANDR_CONFIGURE_PROVIDER_PROPERTY* = 38
  XCB_RANDR_CHANGE_PROVIDER_PROPERTY* = 39
  XCB_RANDR_DELETE_PROVIDER_PROPERTY* = 40
  XCB_RANDR_GET_PROVIDER_PROPERTY* = 41
  XCB_RANDR_SCREEN_CHANGE_NOTIFY* = 0
  XCB_RANDR_GET_MONITORS* = 42
  XCB_RANDR_SET_MONITOR* = 43
  XCB_RANDR_DELETE_MONITOR* = 44
  XCB_RANDR_CREATE_LEASE* = 45
  XCB_RANDR_FREE_LEASE* = 46
  XCB_RANDR_NOTIFY* = 1
  XCB_RECORD_MAJOR_VERSION* = 1
  XCB_RECORD_BAD_CONTEXT* = 0
  XCB_RECORD_QUERY_VERSION* = 0
  XCB_RECORD_CREATE_CONTEXT* = 1
  XCB_RECORD_REGISTER_CLIENTS* = 2
  XCB_RECORD_UNREGISTER_CLIENTS* = 3
  XCB_RECORD_GET_CONTEXT* = 4
  XCB_RECORD_ENABLE_CONTEXT* = 5
  XCB_RECORD_DISABLE_CONTEXT* = 6
  XCB_RECORD_FREE_CONTEXT* = 7
  XCB_RENDER_MAJOR_VERSION* = 0
  XCB_RENDER_PICT_FORMAT* = 0
  XCB_RENDER_PICTURE* = 1
  XCB_RENDER_PICT_OP* = 2
  XCB_RENDER_GLYPH_SET* = 3
  XCB_RENDER_GLYPH* = 4
  XCB_RENDER_QUERY_VERSION* = 0
  XCB_RENDER_QUERY_PICT_FORMATS* = 1
  XCB_RENDER_QUERY_PICT_INDEX_VALUES* = 2
  XCB_RENDER_CREATE_PICTURE* = 4
  XCB_RENDER_CHANGE_PICTURE* = 5
  XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES* = 6
  XCB_RENDER_FREE_PICTURE* = 7
  XCB_RENDER_COMPOSITE* = 8
  XCB_RENDER_TRAPEZOIDS* = 10
  XCB_RENDER_TRIANGLES* = 11
  XCB_RENDER_TRI_STRIP* = 12
  XCB_RENDER_TRI_FAN* = 13
  XCB_RENDER_CREATE_GLYPH_SET* = 17
  XCB_RENDER_REFERENCE_GLYPH_SET* = 18
  XCB_RENDER_FREE_GLYPH_SET* = 19
  XCB_RENDER_ADD_GLYPHS* = 20
  XCB_RENDER_FREE_GLYPHS* = 22
  XCB_RENDER_COMPOSITE_GLYPHS_8* = 23
  XCB_RENDER_COMPOSITE_GLYPHS_16* = 24
  XCB_RENDER_COMPOSITE_GLYPHS_32* = 25
  XCB_RENDER_FILL_RECTANGLES* = 26
  XCB_RENDER_CREATE_CURSOR* = 27
  XCB_RENDER_SET_PICTURE_TRANSFORM* = 28
  XCB_RENDER_QUERY_FILTERS* = 29
  XCB_RENDER_SET_PICTURE_FILTER* = 30
  XCB_RENDER_CREATE_ANIM_CURSOR* = 31
  XCB_RENDER_ADD_TRAPS* = 32
  XCB_RENDER_CREATE_SOLID_FILL* = 33
  XCB_RENDER_CREATE_LINEAR_GRADIENT* = 34
  XCB_RENDER_CREATE_RADIAL_GRADIENT* = 35
  XCB_RENDER_CREATE_CONICAL_GRADIENT* = 36
  XCB_RES_MAJOR_VERSION* = 1
  XCB_RES_QUERY_VERSION* = 0
  XCB_RES_QUERY_CLIENTS* = 1
  XCB_RES_QUERY_CLIENT_RESOURCES* = 2
  XCB_RES_QUERY_CLIENT_PIXMAP_BYTES* = 3
  XCB_RES_QUERY_CLIENT_IDS* = 4
  XCB_RES_QUERY_RESOURCE_BYTES* = 5
  XCB_SCREENSAVER_MAJOR_VERSION* = 1
  XCB_SCREENSAVER_QUERY_VERSION* = 0
  XCB_SCREENSAVER_QUERY_INFO* = 1
  XCB_SCREENSAVER_SELECT_INPUT* = 2
  XCB_SCREENSAVER_SET_ATTRIBUTES* = 3
  XCB_SCREENSAVER_UNSET_ATTRIBUTES* = 4
  XCB_SCREENSAVER_SUSPEND* = 5
  XCB_SCREENSAVER_NOTIFY* = 0
  XCB_SHAPE_MAJOR_VERSION* = 1
  XCB_SHAPE_NOTIFY* = 0
  XCB_SHAPE_QUERY_VERSION* = 0
  XCB_SHAPE_RECTANGLES* = 1
  XCB_SHAPE_MASK* = 2
  XCB_SHAPE_COMBINE* = 3
  XCB_SHAPE_OFFSET* = 4
  XCB_SHAPE_QUERY_EXTENTS* = 5
  XCB_SHAPE_SELECT_INPUT* = 6
  XCB_SHAPE_INPUT_SELECTED* = 7
  XCB_SHAPE_GET_RECTANGLES* = 8
  XCB_SHM_MAJOR_VERSION* = 1
  XCB_SHM_COMPLETION* = 0
  XCB_SHM_BAD_SEG* = 0
  XCB_SHM_QUERY_VERSION* = 0
  XCB_SHM_ATTACH* = 1
  XCB_SHM_DETACH* = 2
  XCB_SHM_PUT_IMAGE* = 3
  XCB_SHM_GET_IMAGE* = 4
  XCB_SHM_CREATE_PIXMAP* = 5
  XCB_SHM_ATTACH_FD* = 6
  XCB_SHM_CREATE_SEGMENT* = 7
  XCB_SYNC_MAJOR_VERSION* = 3
  XCB_SYNC_COUNTER* = 0
  XCB_SYNC_ALARM* = 1
  XCB_SYNC_INITIALIZE* = 0
  XCB_SYNC_LIST_SYSTEM_COUNTERS* = 1
  XCB_SYNC_CREATE_COUNTER* = 2
  XCB_SYNC_DESTROY_COUNTER* = 6
  XCB_SYNC_QUERY_COUNTER* = 5
  XCB_SYNC_AWAIT* = 7
  XCB_SYNC_CHANGE_COUNTER* = 4
  XCB_SYNC_SET_COUNTER* = 3
  XCB_SYNC_CREATE_ALARM* = 8
  XCB_SYNC_CHANGE_ALARM* = 9
  XCB_SYNC_DESTROY_ALARM* = 11
  XCB_SYNC_QUERY_ALARM* = 10
  XCB_SYNC_SET_PRIORITY* = 12
  XCB_SYNC_GET_PRIORITY* = 13
  XCB_SYNC_CREATE_FENCE* = 14
  XCB_SYNC_TRIGGER_FENCE* = 15
  XCB_SYNC_RESET_FENCE* = 16
  XCB_SYNC_DESTROY_FENCE* = 17
  XCB_SYNC_QUERY_FENCE* = 18
  XCB_SYNC_AWAIT_FENCE* = 19
  XCB_SYNC_COUNTER_NOTIFY* = 0
  XCB_SYNC_ALARM_NOTIFY* = 1
  XCB_EVENT_RESPONSE_TYPE_MASK* = (0x0000007F)
  # XCB_PACKED* = __attribute__((__packed__))
  XCB_CONN_ERROR* = 1
  XCB_CONN_CLOSED_EXT_NOTSUPPORTED* = 2
  XCB_CONN_CLOSED_MEM_INSUFFICIENT* = 3
  XCB_CONN_CLOSED_REQ_LEN_EXCEED* = 4
  XCB_CONN_CLOSED_PARSE_ERR* = 5
  XCB_CONN_CLOSED_INVALID_SCREEN* = 6
  XCB_CONN_CLOSED_FDPASSING_FAILED* = 7
  XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS* = 18
  XCB_ICCCM_NUM_WM_HINTS_ELEMENTS* = 9
  # XCB_ICCCM_WM_ALL_HINTS* = (XCB_ICCCM_WM_HINT_INPUT or XCB_ICCCM_WM_HINT_STATE or
  XCB_XCMISC_MAJOR_VERSION* = 1
  XCB_XC_MISC_GET_VERSION* = 0
  XCB_XC_MISC_GET_XID_RANGE* = 1
  XCB_XC_MISC_GET_XID_LIST* = 2
  XCB_XEVIE_MAJOR_VERSION* = 1
  XCB_XEVIE_QUERY_VERSION* = 0
  XCB_XEVIE_START* = 1
  XCB_XEVIE_END* = 2
  XCB_XEVIE_SEND* = 3
  XCB_XEVIE_SELECT_INPUT* = 4
  XCB_XF86DRI_MAJOR_VERSION* = 4
  XCB_XF86DRI_QUERY_VERSION* = 0
  XCB_XF86DRI_QUERY_DIRECT_RENDERING_CAPABLE* = 1
  XCB_XF86DRI_OPEN_CONNECTION* = 2
  XCB_XF86DRI_CLOSE_CONNECTION* = 3
  XCB_XF86DRI_GET_CLIENT_DRIVER_NAME* = 4
  XCB_XF86DRI_CREATE_CONTEXT* = 5
  XCB_XF86DRI_DESTROY_CONTEXT* = 6
  XCB_XF86DRI_CREATE_DRAWABLE* = 7
  XCB_XF86DRI_DESTROY_DRAWABLE* = 8
  XCB_XF86DRI_GET_DRAWABLE_INFO* = 9
  XCB_XF86DRI_GET_DEVICE_INFO* = 10
  XCB_XF86DRI_AUTH_CONNECTION* = 11
  XCB_XFIXES_MAJOR_VERSION* = 5
  XCB_XFIXES_QUERY_VERSION* = 0
  XCB_XFIXES_CHANGE_SAVE_SET* = 1
  XCB_XFIXES_SELECTION_NOTIFY* = 0
  XCB_XFIXES_SELECT_SELECTION_INPUT* = 2
  XCB_XFIXES_CURSOR_NOTIFY* = 1
  XCB_XFIXES_SELECT_CURSOR_INPUT* = 3
  XCB_XFIXES_GET_CURSOR_IMAGE* = 4
  XCB_XFIXES_BAD_REGION* = 0
  XCB_XFIXES_CREATE_REGION* = 5
  XCB_XFIXES_CREATE_REGION_FROM_BITMAP* = 6
  XCB_XFIXES_CREATE_REGION_FROM_WINDOW* = 7
  XCB_XFIXES_CREATE_REGION_FROM_GC* = 8
  XCB_XFIXES_CREATE_REGION_FROM_PICTURE* = 9
  XCB_XFIXES_DESTROY_REGION* = 10
  XCB_XFIXES_SET_REGION* = 11
  XCB_XFIXES_COPY_REGION* = 12
  XCB_XFIXES_UNION_REGION* = 13
  XCB_XFIXES_INTERSECT_REGION* = 14
  XCB_XFIXES_SUBTRACT_REGION* = 15
  XCB_XFIXES_INVERT_REGION* = 16
  XCB_XFIXES_TRANSLATE_REGION* = 17
  XCB_XFIXES_REGION_EXTENTS* = 18
  XCB_XFIXES_FETCH_REGION* = 19
  XCB_XFIXES_SET_GC_CLIP_REGION* = 20
  XCB_XFIXES_SET_WINDOW_SHAPE_REGION* = 21
  XCB_XFIXES_SET_PICTURE_CLIP_REGION* = 22
  XCB_XFIXES_SET_CURSOR_NAME* = 23
  XCB_XFIXES_GET_CURSOR_NAME* = 24
  XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME* = 25
  XCB_XFIXES_CHANGE_CURSOR* = 26
  XCB_XFIXES_CHANGE_CURSOR_BY_NAME* = 27
  XCB_XFIXES_EXPAND_REGION* = 28
  XCB_XFIXES_HIDE_CURSOR* = 29
  XCB_XFIXES_SHOW_CURSOR* = 30
  XCB_XFIXES_CREATE_POINTER_BARRIER* = 31
  XCB_XFIXES_DELETE_POINTER_BARRIER* = 32
  XCB_XINERAMA_MAJOR_VERSION* = 1
  XCB_XINERAMA_QUERY_VERSION* = 0
  XCB_XINERAMA_GET_STATE* = 1
  XCB_XINERAMA_GET_SCREEN_COUNT* = 2
  XCB_XINERAMA_GET_SCREEN_SIZE* = 3
  XCB_XINERAMA_IS_ACTIVE* = 4
  XCB_XINERAMA_QUERY_SCREENS* = 5
  XCB_INPUT_MAJOR_VERSION* = 2
  XCB_INPUT_GET_EXTENSION_VERSION* = 1
  XCB_INPUT_LIST_INPUT_DEVICES* = 2
  XCB_INPUT_OPEN_DEVICE* = 3
  XCB_INPUT_CLOSE_DEVICE* = 4
  XCB_INPUT_SET_DEVICE_MODE* = 5
  XCB_INPUT_SELECT_EXTENSION_EVENT* = 6
  XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS* = 7
  XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST* = 8
  XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST* = 9
  XCB_INPUT_GET_DEVICE_MOTION_EVENTS* = 10
  XCB_INPUT_CHANGE_KEYBOARD_DEVICE* = 11
  XCB_INPUT_CHANGE_POINTER_DEVICE* = 12
  XCB_INPUT_GRAB_DEVICE* = 13
  XCB_INPUT_UNGRAB_DEVICE* = 14
  XCB_INPUT_GRAB_DEVICE_KEY* = 15
  XCB_INPUT_UNGRAB_DEVICE_KEY* = 16
  XCB_INPUT_GRAB_DEVICE_BUTTON* = 17
  XCB_INPUT_UNGRAB_DEVICE_BUTTON* = 18
  XCB_INPUT_ALLOW_DEVICE_EVENTS* = 19
  XCB_INPUT_GET_DEVICE_FOCUS* = 20
  XCB_INPUT_SET_DEVICE_FOCUS* = 21
  XCB_INPUT_GET_FEEDBACK_CONTROL* = 22
  # XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_STRING = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
  XCB_INPUT_CHANGE_FEEDBACK_CONTROL* = 23
  XCB_INPUT_GET_DEVICE_KEY_MAPPING* = 24
  XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING* = 25
  XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING* = 26
  XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING* = 27
  XCB_INPUT_GET_DEVICE_BUTTON_MAPPING* = 28
  XCB_INPUT_SET_DEVICE_BUTTON_MAPPING* = 29
  XCB_INPUT_QUERY_DEVICE_STATE* = 30
  XCB_INPUT_DEVICE_BELL* = 32
  XCB_INPUT_SET_DEVICE_VALUATORS* = 33
  XCB_INPUT_GET_DEVICE_CONTROL* = 34
  XCB_INPUT_CHANGE_DEVICE_CONTROL* = 35
  XCB_INPUT_LIST_DEVICE_PROPERTIES* = 36
  XCB_INPUT_CHANGE_DEVICE_PROPERTY* = 37
  XCB_INPUT_DELETE_DEVICE_PROPERTY* = 38
  XCB_INPUT_GET_DEVICE_PROPERTY* = 39
  XCB_INPUT_XI_QUERY_POINTER* = 40
  XCB_INPUT_XI_WARP_POINTER* = 41
  XCB_INPUT_XI_CHANGE_CURSOR* = 42
  XCB_INPUT_XI_CHANGE_HIERARCHY* = 43
  XCB_INPUT_XI_SET_CLIENT_POINTER* = 44
  XCB_INPUT_XI_GET_CLIENT_POINTER* = 45
  XCB_INPUT_XI_SELECT_EVENTS* = 46
  XCB_INPUT_XI_QUERY_VERSION* = 47
  XCB_INPUT_XI_QUERY_DEVICE* = 48
  XCB_INPUT_XI_SET_FOCUS* = 49
  XCB_INPUT_XI_GET_FOCUS* = 50
  XCB_INPUT_XI_GRAB_DEVICE* = 51
  XCB_INPUT_XI_UNGRAB_DEVICE* = 52
  XCB_INPUT_XI_ALLOW_EVENTS* = 53
  XCB_INPUT_XI_PASSIVE_GRAB_DEVICE* = 54
  XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE* = 55
  XCB_INPUT_XI_LIST_PROPERTIES* = 56
  XCB_INPUT_XI_CHANGE_PROPERTY* = 57
  XCB_INPUT_XI_DELETE_PROPERTY* = 58
  XCB_INPUT_XI_GET_PROPERTY* = 59
  XCB_INPUT_XI_GET_SELECTED_EVENTS* = 60
  XCB_INPUT_XI_BARRIER_RELEASE_POINTER* = 61
  XCB_INPUT_DEVICE_VALUATOR* = 0
  XCB_INPUT_DEVICE_KEY_PRESS* = 1
  XCB_INPUT_DEVICE_KEY_RELEASE* = 2
  XCB_INPUT_DEVICE_BUTTON_PRESS* = 3
  XCB_INPUT_DEVICE_BUTTON_RELEASE* = 4
  XCB_INPUT_DEVICE_MOTION_NOTIFY* = 5
  XCB_INPUT_DEVICE_FOCUS_IN* = 6
  XCB_INPUT_DEVICE_FOCUS_OUT* = 7
  XCB_INPUT_PROXIMITY_IN* = 8
  XCB_INPUT_PROXIMITY_OUT* = 9
  XCB_INPUT_DEVICE_STATE_NOTIFY* = 10
  XCB_INPUT_DEVICE_MAPPING_NOTIFY* = 11
  XCB_INPUT_CHANGE_DEVICE_NOTIFY* = 12
  XCB_INPUT_DEVICE_KEY_STATE_NOTIFY* = 13
  XCB_INPUT_DEVICE_BUTTON_STATE_NOTIFY* = 14
  XCB_INPUT_DEVICE_PRESENCE_NOTIFY* = 15
  XCB_INPUT_DEVICE_PROPERTY_NOTIFY* = 16
  XCB_INPUT_DEVICE_CHANGED* = 1
  XCB_INPUT_KEY_PRESS* = 2
  XCB_INPUT_KEY_RELEASE* = 3
  XCB_INPUT_BUTTON_PRESS* = 4
  XCB_INPUT_BUTTON_RELEASE* = 5
  XCB_INPUT_MOTION* = 6
  XCB_INPUT_ENTER* = 7
  XCB_INPUT_LEAVE* = 8
  XCB_INPUT_FOCUS_IN* = 9
  XCB_INPUT_FOCUS_OUT* = 10
  XCB_INPUT_HIERARCHY* = 11
  XCB_INPUT_PROPERTY* = 12
  XCB_INPUT_RAW_KEY_PRESS* = 13
  XCB_INPUT_RAW_KEY_RELEASE* = 14
  XCB_INPUT_RAW_BUTTON_PRESS* = 15
  XCB_INPUT_RAW_BUTTON_RELEASE* = 16
  XCB_INPUT_RAW_MOTION* = 17
  XCB_INPUT_TOUCH_BEGIN* = 18
  XCB_INPUT_TOUCH_UPDATE* = 19
  XCB_INPUT_TOUCH_END* = 20
  XCB_INPUT_TOUCH_OWNERSHIP* = 21
  XCB_INPUT_RAW_TOUCH_BEGIN* = 22
  XCB_INPUT_RAW_TOUCH_UPDATE* = 23
  XCB_INPUT_RAW_TOUCH_END* = 24
  XCB_INPUT_BARRIER_HIT* = 25
  XCB_INPUT_BARRIER_LEAVE* = 26
  XCB_INPUT_SEND_EXTENSION_EVENT* = 31
  XCB_INPUT_DEVICE* = 0
  XCB_INPUT_EVENT* = 1
  XCB_INPUT_MODE* = 2
  XCB_INPUT_DEVICE_BUSY* = 3
  XCB_INPUT_CLASS* = 4
  XCB_XKB_MAJOR_VERSION* = 1
  XCB_XKB_MINOR_VERSION* = 0
  XCB_XKB_KEYBOARD* = 0
  # XCB_XKB_SA_GROUP_ABSOLUTE = XCB_XKB_SA_USE_MOD_MAP_MODS
  # XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE = XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS
  XCB_XKB_USE_EXTENSION* = 0
  XCB_XKB_SELECT_EVENTS* = 1
  XCB_XKB_BELL* = 3
  XCB_XKB_GET_STATE* = 4
  XCB_XKB_LATCH_LOCK_STATE* = 5
  XCB_XKB_GET_CONTROLS* = 6
  XCB_XKB_SET_CONTROLS* = 7
  XCB_XKB_GET_MAP* = 8
  XCB_XKB_SET_MAP* = 9
  XCB_XKB_GET_COMPAT_MAP* = 10
  XCB_XKB_SET_COMPAT_MAP* = 11
  XCB_XKB_GET_INDICATOR_STATE* = 12
  XCB_XKB_GET_INDICATOR_MAP* = 13
  XCB_XKB_SET_INDICATOR_MAP* = 14
  XCB_XKB_GET_NAMED_INDICATOR* = 15
  XCB_XKB_SET_NAMED_INDICATOR* = 16
  XCB_XKB_GET_NAMES* = 17
  XCB_XKB_SET_NAMES* = 18
  XCB_XKB_PER_CLIENT_FLAGS* = 21
  XCB_XKB_LIST_COMPONENTS* = 22
  XCB_XKB_GET_KBD_BY_NAME* = 23
  XCB_XKB_GET_DEVICE_INFO* = 24
  XCB_XKB_SET_DEVICE_INFO* = 25
  XCB_XKB_SET_DEBUGGING_FLAGS* = 101
  XCB_XKB_NEW_KEYBOARD_NOTIFY* = 0
  XCB_XKB_MAP_NOTIFY* = 1
  XCB_XKB_STATE_NOTIFY* = 2
  XCB_XKB_CONTROLS_NOTIFY* = 3
  XCB_XKB_INDICATOR_STATE_NOTIFY* = 4
  XCB_XKB_INDICATOR_MAP_NOTIFY* = 5
  XCB_XKB_NAMES_NOTIFY* = 6
  XCB_XKB_COMPAT_MAP_NOTIFY* = 7
  XCB_XKB_BELL_NOTIFY* = 8
  XCB_XKB_ACTION_MESSAGE* = 9
  XCB_XKB_ACCESS_X_NOTIFY* = 10
  XCB_XKB_EXTENSION_DEVICE_NOTIFY* = 11
  XCB_XPRINT_MAJOR_VERSION* = 1
  XCB_X_PRINT_PRINT_QUERY_VERSION* = 0
  XCB_X_PRINT_PRINT_GET_PRINTER_LIST* = 1
  XCB_X_PRINT_PRINT_REHASH_PRINTER_LIST* = 20
  XCB_X_PRINT_CREATE_CONTEXT* = 2
  XCB_X_PRINT_PRINT_SET_CONTEXT* = 3
  XCB_X_PRINT_PRINT_GET_CONTEXT* = 4
  XCB_X_PRINT_PRINT_DESTROY_CONTEXT* = 5
  XCB_X_PRINT_PRINT_GET_SCREEN_OF_CONTEXT* = 6
  XCB_X_PRINT_PRINT_START_JOB* = 7
  XCB_X_PRINT_PRINT_END_JOB* = 8
  XCB_X_PRINT_PRINT_START_DOC* = 9
  XCB_X_PRINT_PRINT_END_DOC* = 10
  XCB_X_PRINT_PRINT_PUT_DOCUMENT_DATA* = 11
  XCB_X_PRINT_PRINT_GET_DOCUMENT_DATA* = 12
  XCB_X_PRINT_PRINT_START_PAGE* = 13
  XCB_X_PRINT_PRINT_END_PAGE* = 14
  XCB_X_PRINT_PRINT_SELECT_INPUT* = 15
  XCB_X_PRINT_PRINT_INPUT_SELECTED* = 16
  XCB_X_PRINT_PRINT_GET_ATTRIBUTES* = 17
  XCB_X_PRINT_PRINT_GET_ONE_ATTRIBUTES* = 19
  XCB_X_PRINT_PRINT_SET_ATTRIBUTES* = 18
  XCB_X_PRINT_PRINT_GET_PAGE_DIMENSIONS* = 21
  XCB_X_PRINT_PRINT_QUERY_SCREENS* = 22
  XCB_X_PRINT_PRINT_SET_IMAGE_RESOLUTION* = 23
  XCB_X_PRINT_PRINT_GET_IMAGE_RESOLUTION* = 24
  XCB_X_PRINT_NOTIFY* = 0
  XCB_X_PRINT_ATTRIBUT_NOTIFY* = 1
  XCB_X_PRINT_BAD_CONTEXT* = 0
  XCB_X_PRINT_BAD_SEQUENCE* = 1
  XCB_KEY_PRESS* = 2
  XCB_ENTER_NOTIFY* = 7
  XCB_LEAVE_NOTIFY* = 8
  XCB_FOCUS_IN* = 9
  XCB_FOCUS_OUT* = 10
  XCB_KEYMAP_NOTIFY* = 11
  XCB_EXPOSE* = 12
  XCB_GRAPHICS_EXPOSURE* = 13
  XCB_NO_EXPOSURE* = 14
  XCB_VISIBILITY_NOTIFY* = 15
  XCB_CREATE_NOTIFY* = 16
  XCB_UNMAP_NOTIFY* = 18
  XCB_MAP_NOTIFY* = 19
  XCB_MAP_REQUEST* = 20
  XCB_REPARENT_NOTIFY* = 21
  # XCB_CONFIGURE_NOTIFY* = 22
  XCB_CONFIGURE_REQUEST* = 23
  XCB_GRAVITY_NOTIFY* = 24
  # XCB_RESIZE_REQUEST* = 25
  XCB_CIRCULATE_NOTIFY* = 26
  XCB_CIRCULATE_REQUEST* = 27
  XCB_PROPERTY_NOTIFY* = 28
  XCB_SELECTION_CLEAR* = 29

  XCB_SELECTION_REQUEST* = 30
  XCB_SELECTION_NOTIFY* = 31
  XCB_COLORMAP_NOTIFY* = 32
  XCB_CLIENT_MESSAGE* = 33
  XCB_MAPPING_NOTIFY* = 34
  XCB_GE_GENERIC* = 35
  XCB_REQUEST* = 1
  XCB_VALUE* = 2
  XCB_WINDOW* = 3
  XCB_PIXMAP* = 4
  XCB_ATOM* = 5
  XCB_CURSOR* = 6
  XCB_FONT* = 7
  XCB_MATCH* = 8
  XCB_DRAWABLE* = 9
  XCB_ACCESS* = 10
  XCB_ALLOC* = 11
  XCB_COLORMAP* = 12
  XCB_G_CONTEXT* = 13
  XCB_ID_CHOICE* = 14
  XCB_NAME* = 15
  XCB_LENGTH* = 16
  XCB_IMPLEMENTATION* = 17
  # XCB_GRAVITY_WIN_UNMAP = XCB_GRAVITY_BIT_FORGET
  XCB_CREATE_WINDOW* = 1
  XCB_CHANGE_WINDOW_ATTRIBUTES* = 2
  XCB_GET_WINDOW_ATTRIBUTES* = 3
  XCB_DESTROY_WINDOW* = 4
  XCB_DESTROY_SUBWINDOWS* = 5
  XCB_CHANGE_SAVE_SET* = 6
  XCB_REPARENT_WINDOW* = 7
  XCB_MAP_WINDOW* = 8
  XCB_MAP_SUBWINDOWS* = 9
  XCB_UNMAP_WINDOW* = 10
  XCB_UNMAP_SUBWINDOWS* = 11
  XCB_CONFIGURE_WINDOW* = 12
  XCB_CIRCULATE_WINDOW* = 13
  XCB_GET_GEOMETRY* = 14
  XCB_QUERY_TREE* = 15
  XCB_INTERN_ATOM* = 16
  XCB_GET_ATOM_NAME* = 17
  XCB_CHANGE_PROPERTY* = 18
  XCB_DELETE_PROPERTY* = 19
  XCB_GET_PROPERTY* = 20
  XCB_LIST_PROPERTIES* = 21
  XCB_SET_SELECTION_OWNER* = 22
  XCB_GET_SELECTION_OWNER* = 23
  XCB_CONVERT_SELECTION* = 24
  XCB_SEND_EVENT* = 25
  XCB_GRAB_POINTER* = 26
  XCB_UNGRAB_POINTER* = 27
  XCB_GRAB_BUTTON* = 28
  XCB_UNGRAB_BUTTON* = 29
  XCB_CHANGE_ACTIVE_POINTER_GRAB* = 30
  XCB_GRAB_KEYBOARD* = 31
  XCB_UNGRAB_KEYBOARD* = 32
  XCB_GRAB_KEY* = 33
  XCB_UNGRAB_KEY* = 34
  XCB_ALLOW_EVENTS* = 35
  XCB_GRAB_SERVER* = 36
  XCB_UNGRAB_SERVER* = 37
  XCB_QUERY_POINTER* = 38
  XCB_GET_MOTION_EVENTS* = 39
  XCB_TRANSLATE_COORDINATES* = 40
  XCB_WARP_POINTER* = 41
  XCB_SET_INPUT_FOCUS* = 42
  XCB_GET_INPUT_FOCUS* = 43
  XCB_QUERY_KEYMAP* = 44
  XCB_OPEN_FONT* = 45
  XCB_CLOSE_FONT* = 46
  XCB_QUERY_FONT* = 47
  XCB_QUERY_TEXT_EXTENTS* = 48
  XCB_LIST_FONTS* = 49
  XCB_LIST_FONTS_WITH_INFO* = 50
  XCB_SET_FONT_PATH* = 51
  XCB_GET_FONT_PATH* = 52
  XCB_CREATE_PIXMAP* = 53
  XCB_FREE_PIXMAP* = 54
  XCB_CREATE_GC* = 55
  XCB_CHANGE_GC* = 56
  XCB_COPY_GC* = 57
  XCB_SET_DASHES* = 58
  XCB_SET_CLIP_RECTANGLES* = 59
  XCB_FREE_GC* = 60
  XCB_CLEAR_AREA* = 61
  XCB_COPY_AREA* = 62
  XCB_COPY_PLANE* = 63
  XCB_POLY_POINT* = 64
  XCB_POLY_LINE* = 65
  XCB_POLY_SEGMENT* = 66
  XCB_POLY_RECTANGLE* = 67
  XCB_POLY_ARC* = 68
  XCB_FILL_POLY* = 69
  XCB_POLY_FILL_RECTANGLE* = 70
  XCB_POLY_FILL_ARC* = 71
  XCB_PUT_IMAGE* = 72
  XCB_GET_IMAGE* = 73
  XCB_POLY_TEXT_8* = 74
  XCB_POLY_TEXT_16* = 75
  XCB_IMAGE_TEXT_8* = 76
  XCB_IMAGE_TEXT_16* = 77
  XCB_CREATE_COLORMAP* = 78
  XCB_FREE_COLORMAP* = 79
  XCB_COPY_COLORMAP_AND_FREE* = 80
  XCB_INSTALL_COLORMAP* = 81
  XCB_UNINSTALL_COLORMAP* = 82
  XCB_LIST_INSTALLED_COLORMAPS* = 83
  XCB_ALLOC_COLOR* = 84
  XCB_ALLOC_NAMED_COLOR* = 85
  XCB_ALLOC_COLOR_CELLS* = 86
  XCB_ALLOC_COLOR_PLANES* = 87
  XCB_FREE_COLORS* = 88
  XCB_STORE_COLORS* = 89
  XCB_STORE_NAMED_COLOR* = 90
  XCB_QUERY_COLORS* = 91
  XCB_LOOKUP_COLOR* = 92
  XCB_CREATE_CURSOR* = 93
  XCB_CREATE_GLYPH_CURSOR* = 94
  XCB_FREE_CURSOR* = 95
  XCB_RECOLOR_CURSOR* = 96
  XCB_QUERY_BEST_SIZE* = 97
  XCB_QUERY_EXTENSION* = 98
  XCB_LIST_EXTENSIONS* = 99
  XCB_CHANGE_KEYBOARD_MAPPING* = 100
  XCB_GET_KEYBOARD_MAPPING* = 101
  XCB_CHANGE_KEYBOARD_CONTROL* = 102
  XCB_GET_KEYBOARD_CONTROL* = 103
  XCB_BELL* = 104
  XCB_CHANGE_POINTER_CONTROL* = 105
  XCB_GET_POINTER_CONTROL* = 106
  XCB_SET_SCREEN_SAVER* = 107
  XCB_GET_SCREEN_SAVER* = 108
  XCB_CHANGE_HOSTS* = 109
  XCB_LIST_HOSTS* = 110
  XCB_SET_ACCESS_CONTROL* = 111
  XCB_SET_CLOSE_DOWN_MODE* = 112
  XCB_KILL_CLIENT* = 113
  XCB_ROTATE_PROPERTIES* = 114
  XCB_FORCE_SCREEN_SAVER* = 115
  XCB_SET_POINTER_MAPPING* = 116
  XCB_GET_POINTER_MAPPING* = 117
  XCB_SET_MODIFIER_MAPPING* = 118
  XCB_GET_MODIFIER_MAPPING* = 119
  XCB_NO_OPERATION* = 127
  XCB_SELINUX_MAJOR_VERSION* = 1
  XCB_SELINUX_QUERY_VERSION* = 0
  XCB_SELINUX_SET_DEVICE_CREATE_CONTEXT* = 1
  XCB_SELINUX_GET_DEVICE_CREATE_CONTEXT* = 2
  XCB_SELINUX_SET_DEVICE_CONTEXT* = 3
  XCB_SELINUX_GET_DEVICE_CONTEXT* = 4
  XCB_SELINUX_SET_WINDOW_CREATE_CONTEXT* = 5
  XCB_SELINUX_GET_WINDOW_CREATE_CONTEXT* = 6
  XCB_SELINUX_GET_WINDOW_CONTEXT* = 7
  XCB_SELINUX_SET_PROPERTY_CREATE_CONTEXT* = 8
  XCB_SELINUX_GET_PROPERTY_CREATE_CONTEXT* = 9
  XCB_SELINUX_SET_PROPERTY_USE_CONTEXT* = 10
  XCB_SELINUX_GET_PROPERTY_USE_CONTEXT* = 11
  XCB_SELINUX_GET_PROPERTY_CONTEXT* = 12
  XCB_SELINUX_GET_PROPERTY_DATA_CONTEXT* = 13
  XCB_SELINUX_LIST_PROPERTIES* = 14
  XCB_SELINUX_SET_SELECTION_CREATE_CONTEXT* = 15
  XCB_SELINUX_GET_SELECTION_CREATE_CONTEXT* = 16
  XCB_SELINUX_SET_SELECTION_USE_CONTEXT* = 17
  XCB_SELINUX_GET_SELECTION_USE_CONTEXT* = 18
  XCB_SELINUX_GET_SELECTION_CONTEXT* = 19
  XCB_SELINUX_GET_SELECTION_DATA_CONTEXT* = 20
  XCB_SELINUX_LIST_SELECTIONS* = 21
  XCB_SELINUX_GET_CLIENT_CONTEXT* = 22
  XCB_TEST_MAJOR_VERSION* = 2
  XCB_TEST_GET_VERSION* = 0
  XCB_TEST_COMPARE_CURSOR* = 1
  XCB_TEST_FAKE_INPUT* = 2
  XCB_TEST_GRAB_CONTROL* = 3
  XCB_XV_MAJOR_VERSION* = 2
  XCB_XV_BAD_PORT* = 0
  XCB_XV_BAD_ENCODING* = 1
  XCB_XV_BAD_CONTROL* = 2
  XCB_XV_VIDEO_NOTIFY* = 0
  XCB_XV_PORT_NOTIFY* = 1
  XCB_XV_QUERY_EXTENSION* = 0
  XCB_XV_QUERY_ADAPTORS* = 1
  XCB_XV_QUERY_ENCODINGS* = 2
  XCB_XV_GRAB_PORT* = 3
  XCB_XV_UNGRAB_PORT* = 4
  XCB_XV_PUT_VIDEO* = 5
  XCB_XV_PUT_STILL* = 6
  XCB_XV_GET_VIDEO* = 7
  XCB_XV_GET_STILL* = 8
  XCB_XV_STOP_VIDEO* = 9
  XCB_XV_SELECT_VIDEO_NOTIFY* = 10
  XCB_XV_SELECT_PORT_NOTIFY* = 11
  XCB_XV_QUERY_BEST_SIZE* = 12
  XCB_XV_SET_PORT_ATTRIBUTE* = 13
  XCB_XV_GET_PORT_ATTRIBUTE* = 14
  XCB_XV_QUERY_PORT_ATTRIBUTES* = 15
  XCB_XV_LIST_IMAGE_FORMATS* = 16
  XCB_XV_QUERY_IMAGE_ATTRIBUTES* = 17
  XCB_XV_PUT_IMAGE* = 18
  XCB_XV_SHM_PUT_IMAGE* = 19
  XCB_XVMC_MAJOR_VERSION* = 1
  XCB_XVMC_QUERY_VERSION* = 0
  XCB_XVMC_LIST_SURFACE_TYPES* = 1
  XCB_XVMC_CREATE_CONTEXT* = 2
  XCB_XVMC_DESTROY_CONTEXT* = 3
  XCB_XVMC_CREATE_SURFACE* = 4
  XCB_XVMC_DESTROY_SURFACE* = 5
  XCB_XVMC_CREATE_SUBPICTURE* = 6
  XCB_XVMC_DESTROY_SUBPICTURE* = 7
  XCB_XVMC_LIST_SUBPICTURE_TYPES* = 8


type
  xcb_keycode_t* = uint8
  xcb_timestamp_t* = uint32
  xcb_window_t* = uint32
  xcb_button_t* = uint8
  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_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
    XCB_BUTTON_INDEX_6
    XCB_BUTTON_INDEX_7
    XCB_BUTTON_INDEX_8
    XCB_BUTTON_INDEX_9
    XCB_BUTTON_INDEX_10
    XCB_BUTTON_INDEX_11
    XCB_BUTTON_INDEX_12
    XCB_BUTTON_INDEX_13
    XCB_BUTTON_INDEX_14
    XCB_BUTTON_INDEX_15
    XCB_BUTTON_INDEX_16
    XCB_BUTTON_INDEX_17
    XCB_BUTTON_INDEX_18
    XCB_BUTTON_INDEX_19
    XCB_BUTTON_INDEX_20
  
  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
  
  # typedef struct xcb_xrm_database_t xcb_xrm_database_t;
  xcb_xrm_database_t* {.bycopy.} = object # correct?

  xcb_client_message_data_t* {.bycopy, union.} = object
    data8*: array[20, uint8]
    data16*: array[10, uint16]
    data32*: array[5, uint32]

  xcb_client_message_event_t* {.bycopy.} = object
    response_type*: uint8
    format*: uint8
    sequence*: uint16
    window*: xcb_window_t
    ty*: xcb_atom_t
    data*: xcb_client_message_data_t

  MotifHints* {.bycopy.} = object 
   flags*: uint32
   functions*: uint32
   decorations*: uint32
   input_mode*: int32
   status*: uint32

  xcb_mapping_t* = enum
    XCB_MAPPING_MODIFIER = 0, XCB_MAPPING_KEYBOARD = 1, XCB_MAPPING_POINTER = 2
  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
  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
  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]
  # xcb_void_cookie_t* = object
  #   sequence*: cuint           ## *< Sequence number
  xcb_connection_t* = object

  xcb_colormap_t* = uint32
  xcb_atom_t* = uint32
  
  #TODO: better name for the port of the C version: 
  #[
    union xkb_event 
    {
        struct 
        {
            uint8_t response_type;
            uint8_t xkbType;
            uint16_t sequence;
            xcb_timestamp_t time;
            uint8_t deviceID;
        } any;
        xcb_xkb_new_keyboard_notify_event_t new_keyboard_notify;
        xcb_xkb_map_notify_event_t map_notify;
        xcb_xkb_state_notify_event_t state_notify;
     } *event = (union xkb_event *) gevent;
  ]#
  AnyStruct* {.bycopy.} = object
    response_type*: uint8
    xkbType*: uint8
    sequence*: uint16
    time*: xcb_timestamp_t
    deviceID*: uint8

  xkb_event* {.bycopy, union.} = object
   anyy*: AnyStruct
   new_keyboard_notify*: xcb_xkb_new_keyboard_notify_event_t
   map_notify*: xcb_xkb_map_notify_event_t
   state_notify*: xcb_xkb_state_notify_event_t
    
  xcb_generic_event_t* {.bycopy.} = object
    response_type*: uint8    ## *<  of the response
    pad0*: uint8             ## *< Padding
    sequence*: uint16        ## *< Sequence number
    pad*: array[7, uint32]    ## *< Padding
    full_sequence*: uint32   ## *< full sequence
    
  xcb_generic_iterator_t* {.bycopy.} = object
    data*: pointer             ## *< Data of the current iterator
    rem*: cint                 ## *< remaining elements
    index*: cint               ## *< index of the current iterator



  xcb_intern_atom_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    atom*: xcb_atom_t
  xcb_intern_atom_cookie_t* {.bycopy.} = object
    sequence*: cuint
  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
  
  xcb_visualid_t* = uint32
  
  xcb_screen_iterator_t* {.bycopy.} = object
    data*: ptr xcb_screen_t
    rem*: cint
    index*: cint

  xcb_generic_error_t* {.bycopy.} = object
    response_type*: uint8    ## *<  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
  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
  xcb_button_release_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
  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

  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
  xcb_window_class_t* {.pure, size: sizeof(cint).}  = enum
    XCB_WINDOW_CLASS_COPY_FROM_PARENT = 0,
    XCB_WINDOW_CLASS_INPUT_OUTPUT = 1,
    XCB_WINDOW_CLASS_INPUT_ONLY = 2
  xcb_prop_mode_t* {.pure, size: sizeof(cint).}  = 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  and format with zero-length data.
    XCB_PROP_MODE_APPEND = 2
  xcb_cw_t* {.pure, size: sizeof(cint).} = 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  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 
                        ## 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  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* {.pure, size: sizeof(cint).}= enum
    XCB_BACK_PIXMAP_NONE = 0, XCB_BACK_PIXMAP_PARENT_RELATIVE = 1
  xcb_gravity_t*{.pure, size: sizeof(cint).} = 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
  xcb_event_mask_t*{.pure, size: sizeof(cint).} = 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*{.pure, size: sizeof(cint).} = enum
    XCB_BACKING_STORE_NOT_USEFUL = 0, XCB_BACKING_STORE_WHEN_MAPPED = 1,
    XCB_BACKING_STORE_ALWAYS = 2
  xcb_atom_enum_t* = enum
    XCB_ATOM_NONE = 0
    XCB_ATOM_PRIMARY = 1
    XCB_ATOM_SECONDARY = 2
    XCB_ATOM_ARC = 3
    XCB_ATOM_ATOM = 4
    XCB_ATOM_BITMAP = 5
    XCB_ATOM_CARDINAL = 6
    XCB_ATOM_COLORMAP = 7
    XCB_ATOM_CURSOR = 8
    XCB_ATOM_CUT_BUFFER0 = 9
    CB_ATOM_CUT_BUFFER1 = 10
    XCB_ATOM_CUT_BUFFER2 = 11
    XCB_ATOM_CUT_BUFFER3 = 12
    XCB_ATOM_CUT_BUFFER4 = 13
    XCB_ATOM_CUT_BUFFER5 = 14
    XCB_ATOM_CUT_BUFFER6 = 15
    XCB_ATOM_CUT_BUFFER7 = 16
    XCB_ATOM_DRAWABLE = 17
    XCB_ATOM_FONT = 18
    XCB_ATOM_INTEGER = 19
    XCB_ATOM_PIXMAP = 20
    XCB_ATOM_POINT = 21
    XCB_ATOM_RECTANGLE = 22
    XCB_ATOM_RESOURCE_MANAGER = 23
    XCB_ATOM_RGB_COLOR_MAP = 24
    XCB_ATOM_RGB_BEST_MAP = 25
    XCB_ATOM_RGB_BLUE_MAP = 26
    XCB_ATOM_RGB_DEFAULT_MAP = 27
    XCB_ATOM_RGB_GRAY_MAP = 28
    XCB_ATOM_RGB_GREEN_MAP = 29
    XCB_ATOM_RGB_RED_MAP = 30
    XCB_ATOM_STRING = 31
    XCB_ATOM_VISUALID = 32
    XCB_ATOM_WINDOW = 33
    XCB_ATOM_WM_COMMAND = 34
    XCB_ATOM_WM_HINTS = 35
    XCB_ATOM_WM_CLIENT_MACHINE = 36
    XCB_ATOM_WM_ICON_NAME = 37
    XCB_ATOM_WM_ICON_SIZE = 38
    XCB_ATOM_WM_NAME = 39
    XCB_ATOM_WM_NORMAL_HINTS = 40
    XCB_ATOM_WM_SIZE_HINTS = 41
    XCB_ATOM_WM_ZOOM_HINTS = 42
    XCB_ATOM_MIN_SPACE = 43
    XCB_ATOM_NORM_SPACE = 44
    XCB_ATOM_MAX_SPACE = 45
    XCB_ATOM_END_SPACE = 46
    XCB_ATOM_SUPERSCRIPT_X = 47
    XCB_ATOM_SUPERSCRIPT_Y = 48
    XCB_ATOM_SUBSCRIPT_X = 49
    XCB_ATOM_SUBSCRIPT_Y = 50
    XCB_ATOM_UNDERLINE_POSITION = 51
    XCB_ATOM_UNDERLINE_THICKNESS = 52
    XCB_ATOM_STRIKEOUT_ASCENT = 53
    XCB_ATOM_STRIKEOUT_DESCENT = 54
    XCB_ATOM_ITALIC_ANGLE = 55
    XCB_ATOM_X_HEIGHT = 56
    XCB_ATOM_QUAD_WIDTH = 57
    XCB_ATOM_WEIGHT = 58
    XCB_ATOM_POINT_SIZE = 59
    XCB_ATOM_RESOLUTION = 60
    XCB_ATOM_COPYRIGHT = 61
    XCB_ATOM_NOTICE = 62
    XCB_ATOM_FONT_NAME = 63
    XCB_ATOM_FAMILY_NAME = 64
    XCB_ATOM_FULL_NAME = 65
    XCB_ATOM_CAP_HEIGHT = 66
    XCB_ATOM_WM_CLASS = 67
    XCB_ATOM_WM_TRANSIENT_FOR = 68

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

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

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

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

  xcb_composite_redirect_t* = enum
    XCB_COMPOSITE_REDIRECT_AUTOMATIC = 0, XCB_COMPOSITE_REDIRECT_MANUAL = 1

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

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

  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]

  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]

  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]

  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]

  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]

  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

  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

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

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

  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]

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

  xcb_damage_damage_t* = uint32

  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

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

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

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

  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]

  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]

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

  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

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

  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

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

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

  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

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

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

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

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

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

  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]

  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

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

  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

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

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

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

  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]

  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

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

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

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

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

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

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

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

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

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

  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]

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

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

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

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

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

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

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

  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]

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

  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

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

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

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

  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]

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

  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

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

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

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

  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

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

  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

  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

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

  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

  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

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

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

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

  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

  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

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

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

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

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

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

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

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

  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

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

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

  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]

  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]

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

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

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

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

  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]

  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]

  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

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

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

  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]

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

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

  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]

  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

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

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

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

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

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

  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

  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

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

  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

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

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

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

  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

  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

  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

  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

  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

  xcb_randr_mode_t* = uint32

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

  xcb_randr_crtc_t* = uint32

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

  xcb_randr_output_t* = uint32

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

  xcb_randr_provider_t* = uint32

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

  xcb_randr_lease_t* = uint32

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

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

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

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

  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

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

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

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

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

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

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

  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

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

  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]

  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

  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]

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

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

  xcb_randr_get_screen_info_reply_t* {.bycopy.} = object
    response_type*: uint8
    rotations*: uint8
    sequence*: uint16
    length*: uint32
    root*: xcb_window_t
    timestamp*: xcb_timestamp_t
    config_timestamp*: xcb_timestamp_t
    nSizes*: uint16
    sizeID*: uint16
    rotation*: uint16
    rate*: uint16
    nInfo*: uint16
    pad0*: array[2, uint8]

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

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

  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]

  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

  xcb_randr_mode_info_t* {.bycopy.} = object
    id*: uint32
    width*: uint16
    height*: uint16
    dot_clock*: uint32
    hsync_start*: uint16
    hsync_end*: uint16
    htotal*: uint16
    hskew*: uint16
    vsync_start*: uint16
    vsync_end*: uint16
    vtotal*: uint16
    name_len*: uint16
    mode_flags*: uint32

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

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

  xcb_randr_get_screen_resources_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t
    
  xcb_randr_get_screen_resources_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_connection_t* = enum
    XCB_RANDR_CONNECTION_CONNECTED = 0, XCB_RANDR_CONNECTION_DISCONNECTED = 1,
    XCB_RANDR_CONNECTION_UNKNOWN = 2

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

  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

  xcb_randr_get_output_info_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32
    timestamp*: xcb_timestamp_t
    crtc*: xcb_randr_crtc_t
    mm_width*: uint32
    mm_height*: uint32
    connection*: uint8
    subpixel_order*: uint8
    num_crtcs*: uint16
    num_modes*: uint16
    num_preferred*: uint16
    num_clones*: uint16
    name_len*: uint16

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

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

  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]

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

  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

  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]

  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]

  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

  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

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

  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
    `u_delete`*: uint8
    pending*: uint8
    pad0*: array[2, uint8]

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

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

  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

  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]

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

  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

  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

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

  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

  xcb_randr_get_crtc_info_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32
    timestamp*: xcb_timestamp_t
    x*: int16
    y*: int16
    width*: uint16
    height*: uint16
    mode*: xcb_randr_mode_t
    rotation*: uint16
    rotations*: uint16
    num_outputs*: uint16
    num_possible_outputs*: uint16

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

  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]

  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]

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

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

  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]

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

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

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

  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]

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

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

  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

  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]

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

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

  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

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

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

  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

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

  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

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

  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

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

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

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

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

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

  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

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

  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

  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]

  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

  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

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

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

  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]

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

  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

  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]

  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]

  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

  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

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

  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
    xx_delete*: uint8
    pending*: uint8
    pad0*: array[2, uint8]

  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]

  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

  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

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

  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

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

  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]

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

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

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

  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]

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

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

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

  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

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

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

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

  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]

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

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

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

  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

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

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

  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]

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

  xcb_randr_notify_data_t* {.bycopy, union.} = object
    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

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

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

  xcb_record_context_t* = uint32

  xcb_record_context_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_context_t
    rem*: cint
    index*: cint

  xcb_record_range_8_t* {.bycopy.} = object
    first*: uint8
    last*: uint8

  xcb_record_range_8_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_range_8_t
    rem*: cint
    index*: cint

  xcb_record_range_16_t* {.bycopy.} = object
    first*: uint16
    last*: uint16

  xcb_record_range_16_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_range_16_t
    rem*: cint
    index*: cint

  xcb_record_ext_range_t* {.bycopy.} = object
    major*: xcb_record_range_8_t
    minor*: xcb_record_range_16_t

  xcb_record_ext_range_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_ext_range_t
    rem*: cint
    index*: cint

  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

  xcb_record_range_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_range_t
    rem*: cint
    index*: cint

  xcb_record_element_header_t* = uint8

  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

  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

  xcb_record_client_info_t* {.bycopy.} = object
    client_resource*: xcb_record_client_spec_t
    num_ranges*: uint32

  xcb_record_client_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_record_client_info_t
    rem*: cint
    index*: cint

  xcb_record_bad_context_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16
    invalid_record*: uint32

  xcb_record_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_record_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    major_version*: uint16
    minor_version*: uint16

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

  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

  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

  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

  xcb_record_get_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_record_get_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: xcb_record_context_t

  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]

  xcb_record_enable_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_record_enable_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: xcb_record_context_t

  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]

  xcb_record_disable_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: xcb_record_context_t

  xcb_record_free_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: xcb_record_context_t

  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

  xcb_render_glyph_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_glyph_t
    rem*: cint
    index*: cint

  xcb_render_glyphset_t* = uint32

  xcb_render_glyphset_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_glyphset_t
    rem*: cint
    index*: cint

  xcb_render_picture_t* = uint32

  xcb_render_picture_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_picture_t
    rem*: cint
    index*: cint

  xcb_render_pictformat_t* = uint32

  xcb_render_pictformat_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pictformat_t
    rem*: cint
    index*: cint

  xcb_render_fixed_t* = int32

  xcb_render_fixed_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_fixed_t
    rem*: cint
    index*: cint

  xcb_render_pict_format_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_render_picture_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_render_pict_op_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_render_glyph_set_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_render_glyph_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  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

  xcb_render_directformat_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_directformat_t
    rem*: cint
    index*: cint

  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

  xcb_render_pictforminfo_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pictforminfo_t
    rem*: cint
    index*: cint

  xcb_render_pictvisual_t* {.bycopy.} = object
    visual*: xcb_visualid_t
    format*: xcb_render_pictformat_t

  xcb_render_pictvisual_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pictvisual_t
    rem*: cint
    index*: cint

  xcb_render_pictdepth_t* {.bycopy.} = object
    depth*: uint8
    pad0*: uint8
    num_visuals*: uint16
    pad1*: array[4, uint8]

  xcb_render_pictdepth_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pictdepth_t
    rem*: cint
    index*: cint

  xcb_render_pictscreen_t* {.bycopy.} = object
    num_depths*: uint32
    fallback*: xcb_render_pictformat_t

  xcb_render_pictscreen_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pictscreen_t
    rem*: cint
    index*: cint

  xcb_render_indexvalue_t* {.bycopy.} = object
    pixel*: uint32
    red*: uint16
    green*: uint16
    blue*: uint16
    alpha*: uint16

  xcb_render_indexvalue_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_indexvalue_t
    rem*: cint
    index*: cint

  xcb_render_color_t* {.bycopy.} = object
    red*: uint16
    green*: uint16
    blue*: uint16
    alpha*: uint16

  xcb_render_color_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_color_t
    rem*: cint
    index*: cint

  xcb_render_pointfix_t* {.bycopy.} = object
    x*: xcb_render_fixed_t
    y*: xcb_render_fixed_t

  xcb_render_pointfix_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_pointfix_t
    rem*: cint
    index*: cint

  xcb_render_linefix_t* {.bycopy.} = object
    p1*: xcb_render_pointfix_t
    p2*: xcb_render_pointfix_t

  xcb_render_linefix_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_linefix_t
    rem*: cint
    index*: cint

  xcb_render_triangle_t* {.bycopy.} = object
    p1*: xcb_render_pointfix_t
    p2*: xcb_render_pointfix_t
    p3*: xcb_render_pointfix_t

  xcb_render_triangle_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_triangle_t
    rem*: cint
    index*: cint

  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

  xcb_render_trapezoid_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_trapezoid_t
    rem*: cint
    index*: cint

  xcb_render_glyphinfo_t* {.bycopy.} = object
    width*: uint16
    height*: uint16
    x*: int16
    y*: int16
    x_off*: int16
    y_off*: int16

  xcb_render_glyphinfo_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_glyphinfo_t
    rem*: cint
    index*: cint

  xcb_render_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

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

  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]

  xcb_render_query_pict_formats_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_render_query_pict_formats_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_render_query_pict_index_values_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_render_query_pict_index_values_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    format*: xcb_render_pictformat_t

  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]

  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

  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

  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

  xcb_render_change_picture_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    picture*: xcb_render_picture_t
    value_mask*: uint32

  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

  xcb_render_free_picture_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    picture*: xcb_render_picture_t

  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

  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

  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

  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

  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

  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

  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

  xcb_render_free_glyph_set_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    glyphset*: xcb_render_glyphset_t

  xcb_render_add_glyphs_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    glyphset*: xcb_render_glyphset_t
    glyphs_len*: uint32

  xcb_render_free_glyphs_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    glyphset*: xcb_render_glyphset_t

  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

  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

  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

  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

  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

  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

  xcb_render_transform_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_transform_t
    rem*: cint
    index*: cint

  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

  xcb_render_query_filters_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_render_query_filters_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t

  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]

  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]

  xcb_render_animcursorelt_t* {.bycopy.} = object
    cursor*: xcb_cursor_t
    delay*: uint32

  xcb_render_animcursorelt_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_animcursorelt_t
    rem*: cint
    index*: cint

  xcb_render_create_anim_cursor_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cid*: xcb_cursor_t

  xcb_render_spanfix_t* {.bycopy.} = object
    l*: xcb_render_fixed_t
    r*: xcb_render_fixed_t
    y*: xcb_render_fixed_t

  xcb_render_spanfix_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_spanfix_t
    rem*: cint
    index*: cint

  xcb_render_trap_t* {.bycopy.} = object
    top*: xcb_render_spanfix_t
    bot*: xcb_render_spanfix_t

  xcb_render_trap_iterator_t* {.bycopy.} = object
    data*: ptr xcb_render_trap_t
    rem*: cint
    index*: cint

  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

  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

  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

  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

  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

  xcb_res_client_t* {.bycopy.} = object
    resource_base*: uint32
    resource_mask*: uint32

  xcb_res_client_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_client_t
    rem*: cint
    index*: cint

  xcb_res_type_t* {.bycopy.} = object
    resource_type*: xcb_atom_t
    count*: uint32

  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

  xcb_res_client_id_spec_t* {.bycopy.} = object
    client*: uint32
    mask*: uint32

  xcb_res_client_id_spec_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_client_id_spec_t
    rem*: cint
    index*: cint

  xcb_res_client_id_value_t* {.bycopy.} = object
    spec*: xcb_res_client_id_spec_t
    length*: uint32

  xcb_res_client_id_value_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_client_id_value_t
    rem*: cint
    index*: cint

  xcb_res_resource_id_spec_t* {.bycopy.} = object
    resource*: uint32
    `type`*: uint32

  xcb_res_resource_id_spec_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_resource_id_spec_t
    rem*: cint
    index*: cint

  xcb_res_resource_size_spec_t* {.bycopy.} = object
    spec*: xcb_res_resource_id_spec_t
    bytes*: uint32
    ref_count*: uint32
    use_count*: uint32

  xcb_res_resource_size_spec_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_resource_size_spec_t
    rem*: cint
    index*: cint

  xcb_res_resource_size_value_t* {.bycopy.} = object
    size*: xcb_res_resource_size_spec_t
    num_cross_references*: uint32

  xcb_res_resource_size_value_iterator_t* {.bycopy.} = object
    data*: ptr xcb_res_resource_size_value_t
    rem*: cint
    index*: cint

  xcb_res_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    client_major*: uint8
    client_minor*: uint8

  xcb_res_query_version_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    server_major*: uint16
    server_minor*: uint16

  xcb_res_query_clients_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_clients_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_res_query_clients_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    num_clients*: uint32
    pad1*: array[20, uint8]

  xcb_res_query_client_resources_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_client_resources_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    xid*: uint32

  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]

  xcb_res_query_client_pixmap_bytes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_client_pixmap_bytes_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    xid*: uint32

  xcb_res_query_client_pixmap_bytes_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    bytes*: uint32
    bytes_overflow*: uint32

  xcb_res_query_client_ids_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_client_ids_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    num_specs*: uint32

  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]

  xcb_res_query_resource_bytes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_res_query_resource_bytes_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    client*: uint32
    num_specs*: uint32

  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]

  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

  xcb_screensaver_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_screensaver_query_info_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_screensaver_query_info_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t

  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]

  xcb_screensaver_select_input_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    event_mask*: uint32

  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

  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
    xx_class*: uint8
    depth*: uint8
    visual*: xcb_visualid_t
    value_mask*: uint32

  xcb_screensaver_unset_attributes_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t

  xcb_screensaver_suspend_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    suspend*: uint8
    pad0*: array[3, uint8]

  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]

  xcb_shape_op_t* = uint8

  xcb_shape_op_iterator_t* {.bycopy.} = object
    data*: ptr xcb_shape_op_t
    rem*: cint
    index*: cint

  xcb_shape_kind_t* = uint8

  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

  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]

  xcb_shape_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_shape_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

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

  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

  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

  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

  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

  xcb_shape_query_extents_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_shape_query_extents_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    destination_window*: xcb_window_t

  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

  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]

  xcb_shape_input_selected_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_shape_input_selected_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    destination_window*: xcb_window_t

  xcb_shape_input_selected_reply_t* {.bycopy.} = object
    response_type*: uint8
    enabled*: uint8
    sequence*: uint16
    length*: uint32

  xcb_shape_get_rectangles_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  xcb_shape_get_rectangles_reply_t* {.bycopy.} = object
    response_type*: uint8
    ordering*: uint8
    sequence*: uint16
    length*: uint32
    rectangles_len*: uint32
    pad0*: array[20, uint8]

  xcb_shm_seg_t* = uint32

  xcb_shm_seg_iterator_t* {.bycopy.} = object
    data*: ptr xcb_shm_seg_t
    rem*: cint
    index*: cint

  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

  xcb_shm_bad_seg_error_t* = xcb_value_error_t

  xcb_shm_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_shm_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  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]

  xcb_shm_detach_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    shmseg*: xcb_shm_seg_t

  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

  xcb_shm_get_image_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_shm_get_image_reply_t* {.bycopy.} = object
    response_type*: uint8
    depth*: uint8
    sequence*: uint16
    length*: uint32
    visual*: xcb_visualid_t
    size*: uint32

  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

  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]

  xcb_shm_create_segment_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

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

  xcb_sync_alarm_t* = uint32

  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

  xcb_sync_counter_iterator_t* {.bycopy.} = object
    data*: ptr xcb_sync_counter_t
    rem*: cint
    index*: cint

  xcb_sync_fence_t* = uint32

  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

  xcb_sync_int64_t* {.bycopy.} = object
    hi*: int32
    lo*: uint32

  xcb_sync_int64_iterator_t* {.bycopy.} = object
    data*: ptr xcb_sync_int64_t
    rem*: cint
    index*: cint

  xcb_sync_systemcounter_t* {.bycopy.} = object
    counter*: xcb_sync_counter_t
    resolution*: xcb_sync_int64_t
    name_len*: uint16

  xcb_sync_systemcounter_iterator_t* {.bycopy.} = object
    data*: ptr xcb_sync_systemcounter_t
    rem*: cint
    index*: cint

  xcb_sync_trigger_t* {.bycopy.} = object
    counter*: xcb_sync_counter_t
    wait_type*: uint32
    wait_value*: xcb_sync_int64_t
    test_type*: uint32

  xcb_sync_trigger_iterator_t* {.bycopy.} = object
    data*: ptr xcb_sync_trigger_t
    rem*: cint
    index*: cint

  xcb_sync_waitcondition_t* {.bycopy.} = object
    trigger*: xcb_sync_trigger_t
    event_threshold*: xcb_sync_int64_t

  xcb_sync_waitcondition_iterator_t* {.bycopy.} = object
    data*: ptr xcb_sync_waitcondition_t
    rem*: cint
    index*: cint

  xcb_sync_counter_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16
    bad_counter*: uint32
    minor_opcode*: uint16
    major_opcode*: uint8

  xcb_sync_alarm_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16
    bad_alarm*: uint32
    minor_opcode*: uint16
    major_opcode*: uint8

  xcb_sync_initialize_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_initialize_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    desired_major_version*: uint8
    desired_minor_version*: uint8

  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]

  xcb_sync_list_system_counters_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_list_system_counters_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  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

  xcb_sync_destroy_counter_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    counter*: xcb_sync_counter_t

  xcb_sync_query_counter_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_query_counter_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    counter*: xcb_sync_counter_t

  xcb_sync_query_counter_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    counter_value*: xcb_sync_int64_t

  xcb_sync_await_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  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

  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

  xcb_sync_create_alarm_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    id*: xcb_sync_alarm_t
    value_mask*: uint32

  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

  xcb_sync_change_alarm_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    id*: xcb_sync_alarm_t
    value_mask*: uint32

  xcb_sync_destroy_alarm_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    alarm*: xcb_sync_alarm_t

  xcb_sync_query_alarm_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_query_alarm_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    alarm*: xcb_sync_alarm_t

  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]

  xcb_sync_set_priority_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    id*: uint32
    priority*: int32

  xcb_sync_get_priority_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_get_priority_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    id*: uint32

  xcb_sync_get_priority_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    priority*: int32

  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

  xcb_sync_trigger_fence_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    fence*: xcb_sync_fence_t

  xcb_sync_reset_fence_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    fence*: xcb_sync_fence_t

  xcb_sync_destroy_fence_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    fence*: xcb_sync_fence_t

  xcb_sync_query_fence_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_sync_query_fence_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    fence*: xcb_sync_fence_t

  xcb_sync_query_fence_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    triggered*: uint8
    pad1*: array[23, uint8]

  xcb_sync_await_fence_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  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]

  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

    # where dis from? window: xcb_window_t; mask: uint32; params: ptr xcb_params_cw_t): xcb_void_cookie_t

  xcb_params_configure_window_t* {.bycopy.} = object
    x*: int32
    y*: int32
    width*: uint32
    height*: uint32
    border_width*: uint32
    sibling*: uint32
    stack_mode*: uint32
    
    ### where dis come from? params: ptr xcb_params_configure_window_t): xcb_void_cookie_t
    
  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
    
    # where dis from?  mask: uint32; params: ptr xcb_params_gc_t): xcb_void_cookie_t

  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
    
  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          ## * x_NET_WM_CM_Sn atoms depending on the number of screens
    x_NET_WM_CM_Sn*: ptr xcb_atom_t ## * The EWMH atoms of this connection
    x_NET_SUPPORTED*: xcb_atom_t
    x_NET_CLIENT_LIST*: xcb_atom_t
    x_NET_CLIENT_LIST_STACKING*: xcb_atom_t
    x_NET_NUMBER_OF_DESKTOPS*: xcb_atom_t
    x_NET_DESKTOP_GEOMETRY*: xcb_atom_t
    x_NET_DESKTOP_VIEWPORT*: xcb_atom_t
    x_NET_CURRENT_DESKTOP*: xcb_atom_t
    x_NET_DESKTOP_NAMES*: xcb_atom_t
    x_NET_ACTIVE_WINDOW*: xcb_atom_t
    x_NET_WORKAREA*: xcb_atom_t
    x_NET_SUPPORTING_WM_CHECK*: xcb_atom_t
    x_NET_VIRTUAL_ROOTS*: xcb_atom_t
    x_NET_DESKTOP_LAYOUT*: xcb_atom_t
    x_NET_SHOWING_DESKTOP*: xcb_atom_t
    x_NET_CLOSE_WINDOW*: xcb_atom_t
    x_NET_MOVERESIZE_WINDOW*: xcb_atom_t
    x_NET_WM_MOVERESIZE*: xcb_atom_t
    x_NET_RESTACK_WINDOW*: xcb_atom_t
    x_NET_REQUEST_FRAME_EXTENTS*: xcb_atom_t
    x_NET_WM_NAME*: xcb_atom_t
    x_NET_WM_VISIBLE_NAME*: xcb_atom_t
    x_NET_WM_ICON_NAME*: xcb_atom_t
    x_NET_WM_VISIBLE_ICON_NAME*: xcb_atom_t
    x_NET_WM_DESKTOP*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE*: xcb_atom_t
    x_NET_WM_STATE*: xcb_atom_t
    x_NET_WM_ALLOWED_ACTIONS*: xcb_atom_t
    x_NET_WM_STRUT*: xcb_atom_t
    x_NET_WM_STRUT_PARTIAL*: xcb_atom_t
    x_NET_WM_ICON_GEOMETRY*: xcb_atom_t
    x_NET_WM_ICON*: xcb_atom_t
    x_NET_WM_PID*: xcb_atom_t
    x_NET_WM_HANDLED_ICONS*: xcb_atom_t
    x_NET_WM_USER_TIME*: xcb_atom_t
    x_NET_WM_USER_TIME_WINDOW*: xcb_atom_t
    x_NET_FRAME_EXTENTS*: xcb_atom_t
    x_NET_WM_PING*: xcb_atom_t
    x_NET_WM_SYNC_REQUEST*: xcb_atom_t
    x_NET_WM_SYNC_REQUEST_COUNTER*: xcb_atom_t
    x_NET_WM_FULLSCREEN_MONITORS*: xcb_atom_t
    x_NET_WM_FULL_PLACEMENT*: xcb_atom_t
    x_UTF8_STRING*: xcb_atom_t
    x_WM_PROTOCOLS*: xcb_atom_t
    x_MANAGER*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_DESKTOP*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_DOCK*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_TOOLBAR*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_MENU*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_UTILITY*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_SPLASH*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_DIALOG*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_DROPDOWN_MENU*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_POPUP_MENU*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_TOOLTIP*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_NOTIFICATION*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_COMBO*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_DND*: xcb_atom_t
    x_NET_WM_WINDOW_TYPE_NORMAL*: xcb_atom_t
    x_NET_WM_STATE_MODAL*: xcb_atom_t
    x_NET_WM_STATE_STICKY*: xcb_atom_t
    x_NET_WM_STATE_MAXIMIZED_VERT*: xcb_atom_t
    x_NET_WM_STATE_MAXIMIZED_HORZ*: xcb_atom_t
    x_NET_WM_STATE_SHADED*: xcb_atom_t
    x_NET_WM_STATE_SKIP_TASKBAR*: xcb_atom_t
    x_NET_WM_STATE_SKIP_PAGER*: xcb_atom_t
    x_NET_WM_STATE_HIDDEN*: xcb_atom_t
    x_NET_WM_STATE_FULLSCREEN*: xcb_atom_t
    x_NET_WM_STATE_ABOVE*: xcb_atom_t
    x_NET_WM_STATE_BELOW*: xcb_atom_t
    x_NET_WM_STATE_DEMANDS_ATTENTION*: xcb_atom_t
    x_NET_WM_ACTION_MOVE*: xcb_atom_t
    x_NET_WM_ACTION_RESIZE*: xcb_atom_t
    x_NET_WM_ACTION_MINIMIZE*: xcb_atom_t
    x_NET_WM_ACTION_SHADE*: xcb_atom_t
    x_NET_WM_ACTION_STICK*: xcb_atom_t
    x_NET_WM_ACTION_MAXIMIZE_HORZ*: xcb_atom_t
    x_NET_WM_ACTION_MAXIMIZE_VERT*: xcb_atom_t
    x_NET_WM_ACTION_FULLSCREEN*: xcb_atom_t
    x_NET_WM_ACTION_CHANGE_DESKTOP*: xcb_atom_t
    x_NET_WM_ACTION_CLOSE*: xcb_atom_t
    x_NET_WM_ACTION_ABOVE*: xcb_atom_t
    x_NET_WM_ACTION_BELOW*: xcb_atom_t

  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
    x_reply*: ptr xcb_get_property_reply_t

  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
    x_reply*: ptr xcb_get_property_reply_t

  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
    x_reply*: ptr xcb_get_property_reply_t

  xcb_ewmh_coordinates_t* {.bycopy.} = object
    x*: uint32               ## * The x coordinate
    ## * The y coordinate
    y*: uint32

  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
    x_reply*: ptr xcb_get_property_reply_t

  xcb_ewmh_geometry_t* {.bycopy.} = object
    x*: uint32               ## * The x coordinate
    ## * The y coordinate
    y*: uint32               ## * The width
    width*: uint32           ## * The height
    height*: uint32

  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
    x_reply*: ptr xcb_get_property_reply_t

  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

  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

  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

  xcb_ewmh_get_wm_icon_reply_t* {.bycopy.} = object
    num_icons*: uint8          ## * Number of icons
    ## * The actual GetProperty reply
    x_reply*: ptr xcb_get_property_reply_t

  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

  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

  xcb_protocol_request_t* {.bycopy.} = object
    count*: csize_t
    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


  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



  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

  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


  xcb_void_cookie_t* {.bycopy.} = object
    sequence*: uint8           ## *< Sequence number

  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_icccm_get_text_property_reply_t* {.bycopy.} = object
    x_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

  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
    x_reply*: ptr xcb_get_property_reply_t

    # class_len: uint32; class_name: cstring): xcb_void_cookie_t

  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
    x_reply*: ptr xcb_get_property_reply_t
    
  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

  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

  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

  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)

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

  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
    x_reply*: ptr xcb_get_property_reply_t

  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.

  xcb_shm_segment_info_t* {.bycopy.} = object
    shmseg*: xcb_shm_seg_t
    shmid*: uint32
    shmaddr*: ptr uint8

  # xcb_key_symbols_t* = x_XCBKeySymbols

  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

  xcb_xc_misc_get_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  xcb_xc_misc_get_xid_range_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xc_misc_get_xid_range_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_xc_misc_get_xid_range_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    start_id*: uint32
    count*: uint32

  xcb_xc_misc_get_xid_list_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xc_misc_get_xid_list_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    count*: uint32

  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]

  xcb_xevie_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xevie_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    client_major_version*: uint16
    client_minor_version*: uint16

  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]

  xcb_xevie_start_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xevie_start_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  xcb_xevie_start_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    pad1*: array[24, uint8]

  xcb_xevie_end_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xevie_end_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cmap*: uint32

  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

  xcb_xevie_event_t* {.bycopy.} = object
    pad0*: array[32, uint8]

  xcb_xevie_event_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xevie_event_t
    rem*: cint
    index*: cint

  xcb_xevie_send_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  xcb_xevie_send_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    pad1*: array[24, uint8]

  xcb_xevie_select_input_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xevie_select_input_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    event_mask*: uint32

  xcb_xevie_select_input_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    pad1*: array[24, uint8]

  xcb_xf86dri_drm_clip_rect_t* {.bycopy.} = object
    x1*: int16
    y1*: int16
    x2*: int16
    x3*: int16

  xcb_xf86dri_drm_clip_rect_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xf86dri_drm_clip_rect_t
    rem*: cint
    index*: cint

  xcb_xf86dri_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  xcb_xf86dri_query_direct_rendering_capable_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_query_direct_rendering_capable_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  xcb_xf86dri_query_direct_rendering_capable_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    is_capable*: uint8

  xcb_xf86dri_open_connection_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_open_connection_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  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]

  xcb_xf86dri_close_connection_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  xcb_xf86dri_get_client_driver_name_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_get_client_driver_name_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  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]

  xcb_xf86dri_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    visual*: uint32
    context*: uint32

  xcb_xf86dri_create_context_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    hw_context*: uint32

  xcb_xf86dri_destroy_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    context*: uint32

  xcb_xf86dri_create_drawable_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_create_drawable_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    drawable*: uint32

  xcb_xf86dri_create_drawable_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    hw_drawable_handle*: uint32

  xcb_xf86dri_destroy_drawable_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    drawable*: uint32

  xcb_xf86dri_get_drawable_info_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_get_drawable_info_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    drawable*: uint32

  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

  xcb_xf86dri_get_device_info_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_get_device_info_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32

  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

  xcb_xf86dri_auth_connection_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xf86dri_auth_connection_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    screen*: uint32
    magic*: uint32

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

  xcb_xfixes_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

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

  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

  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

  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]

  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

  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]

  xcb_xfixes_select_cursor_input_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t
    event_mask*: uint32

  xcb_xfixes_get_cursor_image_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xfixes_get_cursor_image_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  xcb_xfixes_region_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xfixes_region_t
    rem*: cint
    index*: cint

  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

  xcb_xfixes_create_region_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    region*: xcb_xfixes_region_t

  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

  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]

  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

  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

  xcb_xfixes_destroy_region_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    region*: xcb_xfixes_region_t

  xcb_xfixes_set_region_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    region*: xcb_xfixes_region_t

  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

  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

  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

  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

  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

  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

  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

  xcb_xfixes_fetch_region_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xfixes_fetch_region_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    region*: xcb_xfixes_region_t

  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]

  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

  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

  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

  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]

  xcb_xfixes_get_cursor_name_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xfixes_get_cursor_name_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cursor*: xcb_cursor_t

  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]

  xcb_xfixes_get_cursor_image_and_name_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xfixes_get_cursor_image_and_name_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_xfixes_change_cursor_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    source*: xcb_cursor_t
    destination*: xcb_cursor_t

  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]

  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

  xcb_xfixes_hide_cursor_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  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

  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

  xcb_xfixes_delete_pointer_barrier_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    barrier*: xcb_xfixes_barrier_t

  xcb_xinerama_screen_info_t* {.bycopy.} = object
    x_org*: int16
    y_org*: int16
    width*: uint16
    height*: uint16

  xcb_xinerama_screen_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xinerama_screen_info_t
    rem*: cint
    index*: cint

  xcb_xinerama_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    major*: uint8
    minor*: uint8

  xcb_xinerama_query_version_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    major*: uint16
    minor*: uint16

  xcb_xinerama_get_state_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_get_state_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_xinerama_get_state_reply_t* {.bycopy.} = object
    response_type*: uint8
    state*: uint8
    sequence*: uint16
    length*: uint32
    window*: xcb_window_t

  xcb_xinerama_get_screen_count_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_get_screen_count_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_xinerama_get_screen_count_reply_t* {.bycopy.} = object
    response_type*: uint8
    screen_count*: uint8
    sequence*: uint16
    length*: uint32
    window*: xcb_window_t

  xcb_xinerama_get_screen_size_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_get_screen_size_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t
    screen*: uint32

  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

  xcb_xinerama_is_active_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_is_active_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_xinerama_is_active_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    state*: uint32

  xcb_xinerama_query_screens_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xinerama_query_screens_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_xinerama_query_screens_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    number*: uint32
    pad1*: array[20, uint8]

  xcb_input_event_class_t* = uint32

  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

  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

  xcb_input_device_id_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_id_t
    rem*: cint
    index*: cint

  xcb_input_fp1616_t* = int32

  xcb_input_fp1616_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_fp1616_t
    rem*: cint
    index*: cint

  xcb_input_fp3232_t* {.bycopy.} = object
    integral*: int32
    frac*: uint32

  xcb_input_fp3232_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_fp3232_t
    rem*: cint
    index*: cint

  xcb_input_get_extension_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_get_extension_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    name_len*: uint16
    pad0*: array[2, uint8]

  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

  xcb_input_device_info_t* {.bycopy.} = object
    device_type*: xcb_atom_t
    device_id*: uint8
    num_class_info*: uint8
    device_use*: uint8
    pad0*: uint8

  xcb_input_device_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_info_t
    rem*: cint
    index*: cint

  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]

  xcb_input_key_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_key_info_t
    rem*: cint
    index*: cint

  xcb_input_button_info_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8
    num_buttons*: uint16

  xcb_input_button_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_button_info_t
    rem*: cint
    index*: cint

  xcb_input_axis_info_t* {.bycopy.} = object
    resolution*: uint32
    minimum*: int32
    maximum*: int32

  xcb_input_axis_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_axis_info_t
    rem*: cint
    index*: cint

  xcb_input_valuator_info_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8
    axes_len*: uint8
    mode*: uint8
    motion_size*: uint32

  xcb_input_valuator_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_valuator_info_t
    rem*: cint
    index*: cint

  xcb_input_input_info_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8

  xcb_input_input_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_input_info_t
    rem*: cint
    index*: cint

  xcb_input_device_name_t* {.bycopy.} = object
    len*: uint8

  xcb_input_device_name_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_name_t
    rem*: cint
    index*: cint

  xcb_input_list_input_devices_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_list_input_devices_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  xcb_input_event_type_base_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_event_type_base_t
    rem*: cint
    index*: cint

  xcb_input_input_class_info_t* {.bycopy.} = object
    class_id*: uint8
    event_type_base*: xcb_input_event_type_base_t

  xcb_input_input_class_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_input_class_info_t
    rem*: cint
    index*: cint

  xcb_input_open_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_open_device_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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]

  xcb_input_close_device_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  xcb_input_set_device_mode_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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]

  xcb_input_get_selected_extension_events_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_get_selected_extension_events_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  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

  xcb_input_get_device_dont_propagate_list_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_get_device_dont_propagate_list_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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]

  xcb_input_device_time_coord_t* {.bycopy.} = object
    time*: xcb_timestamp_t

  xcb_input_device_time_coord_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_time_coord_t
    rem*: cint
    index*: cint
    num_axes*: uint8         ## *<

  xcb_input_get_device_motion_events_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_change_keyboard_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_change_keyboard_device_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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]

  xcb_input_change_pointer_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_input_grab_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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

  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]

  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

  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]

  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

  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]

  xcb_input_get_device_focus_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_get_device_focus_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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]

  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

  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]

  xcb_input_kbd_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_kbd_feedback_state_t
    rem*: cint
    index*: cint

  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

  xcb_input_ptr_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_ptr_feedback_state_t
    rem*: cint
    index*: cint

  xcb_input_integer_feedback_state_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    resolution*: uint32
    min_value*: int32
    max_value*: int32

  xcb_input_integer_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_integer_feedback_state_t
    rem*: cint
    index*: cint

  xcb_input_string_feedback_state_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    max_symbols*: uint16
    num_keysyms*: uint16

  xcb_input_string_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_string_feedback_state_t
    rem*: cint
    index*: cint

  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

  xcb_input_bell_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_bell_feedback_state_t
    rem*: cint
    index*: cint

  xcb_input_led_feedback_state_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    led_mask*: uint32
    led_values*: uint32

  xcb_input_led_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_led_feedback_state_t
    rem*: cint
    index*: cint

  xcb_input_feedback_state_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16

  xcb_input_feedback_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_feedback_state_t
    rem*: cint
    index*: cint

  xcb_input_get_feedback_control_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_get_feedback_control_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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]

  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

  xcb_input_kbd_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_kbd_feedback_ctl_t
    rem*: cint
    index*: cint

  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

  xcb_input_ptr_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_ptr_feedback_ctl_t
    rem*: cint
    index*: cint

  xcb_input_integer_feedback_ctl_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    int_to_display*: int32

  xcb_input_integer_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_integer_feedback_ctl_t
    rem*: cint
    index*: cint

  xcb_input_string_feedback_ctl_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    pad0*: array[2, uint8]
    num_keysyms*: uint16

  xcb_input_string_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_string_feedback_ctl_t
    rem*: cint
    index*: cint

  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

  xcb_input_bell_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_bell_feedback_ctl_t
    rem*: cint
    index*: cint

  xcb_input_led_feedback_ctl_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16
    led_mask*: uint32
    led_values*: uint32

  xcb_input_led_feedback_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_led_feedback_ctl_t
    rem*: cint
    index*: cint

  xcb_input_feedback_ctl_t* {.bycopy.} = object
    class_id*: uint8
    feedback_id*: uint8
    len*: uint16

  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



  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]

  xcb_input_get_device_key_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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

  xcb_input_get_device_modifier_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_set_device_modifier_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_get_device_button_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_set_device_button_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_key_state_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8
    num_keys*: uint8
    pad0*: uint8
    keys*: array[32, uint8]

  xcb_input_key_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_key_state_t
    rem*: cint
    index*: cint

  xcb_input_button_state_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8
    num_buttons*: uint8
    pad0*: uint8
    buttons*: array[32, uint8]

  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

  xcb_input_valuator_state_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8
    num_valuators*: uint8
    mode*: uint8

  xcb_input_valuator_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_valuator_state_t
    rem*: cint
    index*: cint

  xcb_input_input_state_t* {.bycopy.} = object
    class_id*: uint8
    len*: uint8

  xcb_input_input_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_input_state_t
    rem*: cint
    index*: cint

  xcb_input_query_device_state_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_query_device_state_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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]

  xcb_input_device_bell_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    feedback_id*: uint8
    xfeedback_class*: uint8
    percent*: int8

  xcb_input_set_device_valuators_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  xcb_input_device_resolution_state_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    num_valuators*: uint32

  xcb_input_device_resolution_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_resolution_state_t
    rem*: cint
    index*: cint

  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

  xcb_input_device_abs_calib_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_abs_calib_state_t
    rem*: cint
    index*: cint

  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

  xcb_input_device_abs_area_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_abs_area_state_t
    rem*: cint
    index*: cint

  xcb_input_device_core_state_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    status*: uint8
    iscore*: uint8
    pad0*: array[2, uint8]

  xcb_input_device_core_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_core_state_t
    rem*: cint
    index*: cint

  xcb_input_device_enable_state_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    enable*: uint8
    pad0*: array[3, uint8]

  xcb_input_device_enable_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_enable_state_t
    rem*: cint
    index*: cint

  xcb_input_device_state_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16

  xcb_input_device_state_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_state_t
    rem*: cint
    index*: cint

  xcb_input_get_device_control_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_input_device_resolution_ctl_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    first_valuator*: uint8
    num_valuators*: uint8
    pad0*: array[2, uint8]

  xcb_input_device_resolution_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_resolution_ctl_t
    rem*: cint
    index*: cint

  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

  xcb_input_device_abs_calib_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_abs_calib_ctl_t
    rem*: cint
    index*: cint

  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

  xcb_input_device_abs_area_ctrl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_abs_area_ctrl_t
    rem*: cint
    index*: cint

  xcb_input_device_core_ctrl_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    status*: uint8
    pad0*: array[3, uint8]

  xcb_input_device_core_ctrl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_core_ctrl_t
    rem*: cint
    index*: cint

  xcb_input_device_enable_ctrl_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16
    enable*: uint8
    pad0*: array[3, uint8]

  xcb_input_device_enable_ctrl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_enable_ctrl_t
    rem*: cint
    index*: cint

  xcb_input_device_ctl_t* {.bycopy.} = object
    control_id*: uint16
    len*: uint16

  xcb_input_device_ctl_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_ctl_t
    rem*: cint
    index*: cint

  xcb_input_change_device_control_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_input_list_device_properties_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_list_device_properties_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device_id*: uint8
    pad0*: array[3, uint8]

  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

  xcb_input_change_device_property_items_t* {.bycopy.} = object
    data8*: ptr uint8
    data16*: ptr uint16
    data32*: ptr uint32

  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

  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]

  xcb_input_get_device_property_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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
    x_delete*: uint8
    pad0*: array[2, uint8]

  xcb_input_get_device_property_items_t* {.bycopy.} = object
    data8*: ptr uint8
    data16*: ptr uint16
    data32*: ptr uint32

  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

  xcb_input_group_info_t* {.bycopy.} = object
    base*: uint8
    latched*: uint8
    locked*: uint8
    effective*: uint8

  xcb_input_group_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_group_info_t
    rem*: cint
    index*: cint

  xcb_input_modifier_info_t* {.bycopy.} = object
    base*: uint32
    latched*: uint32
    locked*: uint32
    effective*: uint32

  xcb_input_modifier_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_modifier_info_t
    rem*: cint
    index*: cint

  xcb_input_xi_query_pointer_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  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]

  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

  xcb_input_add_master_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    name_len*: uint16
    send_core*: uint8
    enable*: uint8

  xcb_input_add_master_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_add_master_t
    rem*: cint
    index*: cint

  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

  xcb_input_remove_master_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_remove_master_t
    rem*: cint
    index*: cint

  xcb_input_attach_slave_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    deviceid*: xcb_input_device_id_t
    master*: xcb_input_device_id_t

  xcb_input_attach_slave_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_attach_slave_t
    rem*: cint
    index*: cint

  xcb_input_detach_slave_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    deviceid*: xcb_input_device_id_t
    pad0*: array[2, uint8]

  xcb_input_detach_slave_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_detach_slave_t
    rem*: cint
    index*: cint

  xcb_input_hierarchy_change_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16

  xcb_input_hierarchy_change_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_hierarchy_change_t
    rem*: cint
    index*: cint

  xcb_input_xi_change_hierarchy_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    num_changes*: uint8
    pad0*: array[3, uint8]

  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]

  xcb_input_xi_get_client_pointer_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_xi_get_client_pointer_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  xcb_input_event_mask_t* {.bycopy.} = object
    deviceid*: xcb_input_device_id_t
    mask_len*: uint16

  xcb_input_event_mask_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_event_mask_t
    rem*: cint
    index*: cint

  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]

  xcb_input_xi_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_xi_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    major_version*: uint16
    minor_version*: uint16

  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

  xcb_input_button_class_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    sourceid*: xcb_input_device_id_t
    num_buttons*: uint16

  xcb_input_button_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_button_class_t
    rem*: cint
    index*: cint

  xcb_input_key_class_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    sourceid*: xcb_input_device_id_t
    num_keys*: uint16

  xcb_input_key_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_key_class_t
    rem*: cint
    index*: cint

  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

  xcb_input_scroll_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_scroll_class_t
    rem*: cint
    index*: cint

  xcb_input_touch_class_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    sourceid*: xcb_input_device_id_t
    mode*: uint8
    num_touches*: uint8

  xcb_input_touch_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_touch_class_t
    rem*: cint
    index*: cint

  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]

  xcb_input_valuator_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_valuator_class_t
    rem*: cint
    index*: cint

  xcb_input_device_class_t* {.bycopy.} = object
    `type`*: uint16
    len*: uint16
    sourceid*: xcb_input_device_id_t

  xcb_input_device_class_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_device_class_t
    rem*: cint
    index*: cint

  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

  xcb_input_xi_device_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_xi_device_info_t
    rem*: cint
    index*: cint

  xcb_input_xi_query_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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]

  xcb_input_xi_get_focus_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  xcb_input_xi_grab_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_input_xi_grab_device_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    status*: uint8
    pad1*: array[23, uint8]

  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

  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

  xcb_input_grab_modifier_info_t* {.bycopy.} = object
    modifiers*: uint32
    status*: uint8
    pad0*: array[3, uint8]

  xcb_input_grab_modifier_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_grab_modifier_info_t
    rem*: cint
    index*: cint

  xcb_input_xi_passive_grab_device_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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]

  xcb_input_xi_list_properties_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_input_xi_change_property_items_t* {.bycopy.} = object
    data8*: ptr uint8
    data16*: ptr uint16
    data32*: ptr uint32

  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

  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

  xcb_input_xi_get_property_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_xi_get_property_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    deviceid*: xcb_input_device_id_t
    x_delete*: uint8
    pad0*: uint8
    property*: xcb_atom_t
    `type`*: xcb_atom_t
    offset*: uint32
    len*: uint32

  xcb_input_xi_get_property_items_t* {.bycopy.} = object
    data8*: ptr uint8
    data16*: ptr uint16
    data32*: ptr uint32

  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]

  xcb_input_xi_get_selected_events_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_input_xi_get_selected_events_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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]

  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

  xcb_input_barrier_release_pointer_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_barrier_release_pointer_info_t
    rem*: cint
    index*: cint

  xcb_input_xi_barrier_release_pointer_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    num_barriers*: uint32

  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

  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

  xcb_input_device_key_release_event_t* = xcb_input_device_key_press_event_t

  xcb_input_device_button_press_event_t* = xcb_input_device_key_press_event_t

  xcb_input_device_button_release_event_t* = xcb_input_device_key_press_event_t

  xcb_input_device_motion_notify_event_t* = xcb_input_device_key_press_event_t

  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]

  xcb_input_device_focus_out_event_t* = xcb_input_device_focus_in_event_t

  xcb_input_proximity_in_event_t* = xcb_input_device_key_press_event_t

  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

  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]

  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

  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]

  xcb_input_device_key_state_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    device_id*: uint8
    sequence*: uint16
    keys*: array[28, uint8]

  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

  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]

  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

  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

  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

  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

  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

  xcb_input_button_release_event_t* = xcb_input_button_press_event_t

  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

  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

  xcb_input_leave_event_t* = xcb_input_enter_event_t

  xcb_input_focus_in_event_t* = xcb_input_enter_event_t

  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

  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

  xcb_input_hierarchy_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_hierarchy_info_t
    rem*: cint
    index*: cint

  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

  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

  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

  xcb_input_raw_key_release_event_t* = xcb_input_raw_key_press_event_t

  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

  xcb_input_raw_button_release_event_t* = xcb_input_raw_button_press_event_t

  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

  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

  xcb_input_touch_update_event_t* = xcb_input_touch_begin_event_t

  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

  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]

  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

  xcb_input_raw_touch_update_event_t* = xcb_input_raw_touch_begin_event_t

  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

  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

  xcb_input_barrier_leave_event_t* = xcb_input_barrier_hit_event_t

  xcb_input_event_for_send_t* {.bycopy, union.} = object
    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

  xcb_input_event_for_send_iterator_t* {.bycopy.} = object
    data*: ptr xcb_input_event_for_send_t
    rem*: cint
    index*: cint

  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]

  xcb_input_device_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_input_event_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_input_mode_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_input_device_busy_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_input_class_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  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

  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

  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

  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

  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

  xcb_xkb_indicator_map_t* {.bycopy.} = object
    flags*: uint8
    whichGroups*: uint8
    groups*: uint8
    whichMods*: uint8
    mods*: uint8
    realMods*: uint8
    vmods*: uint16
    ctrls*: uint32

  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

  xcb_xkb_mod_def_t* {.bycopy.} = object
    mask*: uint8
    realMods*: uint8
    vmods*: uint16

  xcb_xkb_mod_def_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_mod_def_t
    rem*: cint
    index*: cint

  xcb_xkb_key_name_t* {.bycopy.} = object
    name*: array[4, char]

  xcb_xkb_key_name_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_name_t
    rem*: cint
    index*: cint

  xcb_xkb_key_alias_t* {.bycopy.} = object
    real*: array[4, char]
    alias*: array[4, char]

  xcb_xkb_key_alias_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_alias_t
    rem*: cint
    index*: cint

  xcb_xkb_counted_string_16_t* {.bycopy.} = object
    length*: uint16

  xcb_xkb_counted_string_16_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_counted_string_16_t
    rem*: cint
    index*: cint

  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]

  xcb_xkb_kt_map_entry_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_kt_map_entry_t
    rem*: cint
    index*: cint

  xcb_xkb_key_type_t* {.bycopy.} = object
    mods_mask*: uint8
    mods_mods*: uint8
    mods_vmods*: uint16
    numLevels*: uint8
    nMapEntries*: uint8
    hasPreserve*: uint8
    pad0*: uint8

  xcb_xkb_key_type_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_type_t
    rem*: cint
    index*: cint

  xcb_xkb_key_sym_map_t* {.bycopy.} = object
    kt_index*: array[4, uint8]
    groupInfo*: uint8
    width*: uint8
    nSyms*: uint16

  xcb_xkb_key_sym_map_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_sym_map_t
    rem*: cint
    index*: cint

  xcb_xkb_common_behavior_t* {.bycopy.} = object
    `type`*: uint8
    data*: uint8

  xcb_xkb_common_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_common_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_default_behavior_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: uint8

  xcb_xkb_default_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_default_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_lock_behavior_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: uint8

  xcb_xkb_lock_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_lock_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_radio_group_behavior_t* {.bycopy.} = object
    `type`*: uint8
    group*: uint8

  xcb_xkb_radio_group_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_radio_group_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_overlay_behavior_t* {.bycopy.} = object
    `type`*: uint8
    key*: xcb_keycode_t

  xcb_xkb_overlay_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_overlay_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_permament_lock_behavior_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: uint8

  xcb_xkb_permament_lock_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_permament_lock_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_permament_radio_group_behavior_t* {.bycopy.} = object
    `type`*: uint8
    group*: uint8

  xcb_xkb_permament_radio_group_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_permament_radio_group_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_permament_overlay_behavior_t* {.bycopy.} = object
    `type`*: uint8
    key*: xcb_keycode_t

  xcb_xkb_permament_overlay_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_permament_overlay_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_behavior_t* {.bycopy, union.} = object
    common*: xcb_xkb_common_behavior_t
    x_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

  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

  xcb_xkb_set_behavior_t* {.bycopy.} = object
    keycode*: xcb_keycode_t
    behavior*: xcb_xkb_behavior_t
    pad0*: uint8

  xcb_xkb_set_behavior_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_set_behavior_t
    rem*: cint
    index*: cint

  xcb_xkb_set_explicit_t* {.bycopy.} = object
    keycode*: xcb_keycode_t
    explicit*: uint8

  xcb_xkb_set_explicit_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_set_explicit_t
    rem*: cint
    index*: cint

  xcb_xkb_key_mod_map_t* {.bycopy.} = object
    keycode*: xcb_keycode_t
    mods*: uint8

  xcb_xkb_key_mod_map_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_mod_map_t
    rem*: cint
    index*: cint

  xcb_xkb_key_v_mod_map_t* {.bycopy.} = object
    keycode*: xcb_keycode_t
    pad0*: uint8
    vmods*: uint16

  xcb_xkb_key_v_mod_map_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_v_mod_map_t
    rem*: cint
    index*: cint

  xcb_xkb_kt_set_map_entry_t* {.bycopy.} = object
    level*: uint8
    realMods*: uint8
    virtualMods*: uint16

  xcb_xkb_kt_set_map_entry_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_kt_set_map_entry_t
    rem*: cint
    index*: cint

  xcb_xkb_set_key_type_t* {.bycopy.} = object
    mask*: uint8
    realMods*: uint8
    virtualMods*: uint16
    numLevels*: uint8
    nMapEntries*: uint8
    preserve*: uint8
    pad0*: uint8

  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

  xcb_xkb_string8_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_string8_t
    rem*: cint
    index*: cint

  xcb_xkb_outline_t* {.bycopy.} = object
    nPoints*: uint8
    cornerRadius*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_outline_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_outline_t
    rem*: cint
    index*: cint

  xcb_xkb_shape_t* {.bycopy.} = object
    name*: xcb_atom_t
    nOutlines*: uint8
    primaryNdx*: uint8
    approxNdx*: uint8
    pad0*: uint8

  xcb_xkb_shape_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_shape_t
    rem*: cint
    index*: cint

  xcb_xkb_key_t* {.bycopy.} = object
    name*: array[4, xcb_xkb_string8_t]
    gap*: int16
    shapeNdx*: uint8
    colorNdx*: uint8

  xcb_xkb_key_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_key_t
    rem*: cint
    index*: cint

  xcb_xkb_overlay_key_t* {.bycopy.} = object
    over*: array[4, xcb_xkb_string8_t]
    under*: array[4, xcb_xkb_string8_t]

  xcb_xkb_overlay_key_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_overlay_key_t
    rem*: cint
    index*: cint

  xcb_xkb_overlay_row_t* {.bycopy.} = object
    rowUnder*: uint8
    nKeys*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_overlay_row_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_overlay_row_t
    rem*: cint
    index*: cint

  xcb_xkb_overlay_t* {.bycopy.} = object
    name*: xcb_atom_t
    nRows*: uint8
    pad0*: array[3, uint8]

  xcb_xkb_overlay_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_overlay_t
    rem*: cint
    index*: cint

  xcb_xkb_row_t* {.bycopy.} = object
    top*: int16
    left*: int16
    nKeys*: uint8
    vertical*: uint8
    pad0*: array[2, uint8]

  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

  xcb_xkb_listing_t* {.bycopy.} = object
    flags*: uint16
    length*: uint16

  xcb_xkb_listing_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_listing_t
    rem*: cint
    index*: cint

  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

  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

  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

  xcb_xkb_sa_no_action_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: array[7, uint8]

  xcb_xkb_sa_no_action_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_no_action_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_set_mods_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    mask*: uint8
    realMods*: uint8
    vmodsHigh*: uint8
    vmodsLow*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_sa_set_mods_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_set_mods_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_latch_mods_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    mask*: uint8
    realMods*: uint8
    vmodsHigh*: uint8
    vmodsLow*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_sa_latch_mods_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_latch_mods_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_lock_mods_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    mask*: uint8
    realMods*: uint8
    vmodsHigh*: uint8
    vmodsLow*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_sa_lock_mods_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_lock_mods_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_set_group_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    group*: int8
    pad0*: array[5, uint8]

  xcb_xkb_sa_set_group_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_set_group_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_latch_group_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    group*: int8
    pad0*: array[5, uint8]

  xcb_xkb_sa_latch_group_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_latch_group_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_lock_group_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    group*: int8
    pad0*: array[5, uint8]

  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

  xcb_xkb_sa_move_ptr_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    xHigh*: int8
    xLow*: uint8
    yHigh*: int8
    yLow*: uint8
    pad0*: array[2, uint8]

  xcb_xkb_sa_move_ptr_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_move_ptr_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_ptr_btn_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    count*: uint8
    button*: uint8
    pad0*: array[4, uint8]

  xcb_xkb_sa_ptr_btn_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_ptr_btn_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_lock_ptr_btn_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    pad0*: uint8
    button*: uint8
    pad1*: array[4, uint8]

  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

  xcb_xkb_sa_set_ptr_dflt_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    affect*: uint8
    value*: int8
    pad0*: array[4, uint8]

  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

  xcb_xkb_sa_iso_lock_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    mask*: uint8
    realMods*: uint8
    group*: int8
    affect*: uint8
    vmodsHigh*: uint8
    vmodsLow*: uint8

  xcb_xkb_sa_iso_lock_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_iso_lock_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_terminate_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: array[7, uint8]

  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

  xcb_xkb_sa_switch_screen_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    newScreen*: int8
    pad0*: array[5, uint8]

  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

  xcb_xkb_sa_set_controls_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: array[3, uint8]
    boolCtrlsHigh*: uint8
    boolCtrlsLow*: uint8
    pad1*: array[2, uint8]

  xcb_xkb_sa_set_controls_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_set_controls_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_lock_controls_t* {.bycopy.} = object
    `type`*: uint8
    pad0*: array[3, uint8]
    boolCtrlsHigh*: uint8
    boolCtrlsLow*: uint8
    pad1*: array[2, uint8]

  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

  xcb_xkb_sa_action_message_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    message*: array[6, uint8]

  xcb_xkb_sa_action_message_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_action_message_t
    rem*: cint
    index*: cint

  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

  xcb_xkb_sa_redirect_key_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_redirect_key_t
    rem*: cint
    index*: cint

  xcb_xkb_sa_device_btn_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    count*: uint8
    button*: uint8
    device*: uint8
    pad0*: array[3, uint8]

  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

  xcb_xkb_sa_lock_device_btn_t* {.bycopy.} = object
    `type`*: uint8
    flags*: uint8
    pad0*: uint8
    button*: uint8
    device*: uint8
    pad1*: array[3, uint8]

  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

  xcb_xkb_sa_device_valuator_t* {.bycopy.} = object
    `type`*: uint8
    device*: uint8
    val1what*: uint8
    val1index*: uint8
    val1value*: uint8
    val2what*: uint8
    val2index*: uint8
    val2value*: uint8

  xcb_xkb_sa_device_valuator_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sa_device_valuator_t
    rem*: cint
    index*: cint

  xcb_xkb_si_action_t* {.bycopy.} = object
    `type`*: uint8
    data*: array[7, uint8]

  xcb_xkb_si_action_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_si_action_t
    rem*: cint
    index*: cint

  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

  xcb_xkb_sym_interpret_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_sym_interpret_t
    rem*: cint
    index*: cint

  xcb_xkb_action_t* {.bycopy, union.} = object
    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

  xcb_xkb_action_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xkb_action_t
    rem*: cint
    index*: cint

  xcb_xkb_use_extension_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xkb_use_extension_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    wantedMajor*: uint16
    wantedMinor*: uint16

  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]

  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

  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

  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

  xcb_xkb_get_state_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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

  xcb_xkb_get_controls_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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]

  xcb_xkb_get_map_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  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

  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

  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

  xcb_xkb_get_compat_map_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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]

  xcb_xkb_get_indicator_state_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  xcb_xkb_get_indicator_state_reply_t* {.bycopy.} = object
    response_type*: uint8
    deviceID*: uint8
    sequence*: uint16
    length*: uint32
    state*: uint32
    pad0*: array[20, uint8]

  xcb_xkb_get_indicator_map_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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

  xcb_xkb_get_named_indicator_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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

  xcb_xkb_get_names_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  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]

  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

  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

  xcb_xkb_per_client_flags_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_xkb_list_components_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xkb_list_components_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    deviceSpec*: xcb_xkb_device_spec_t
    maxNames*: uint16

  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]

  xcb_xkb_get_kbd_by_name_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  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

  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]

  xcb_xkb_get_device_info_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  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

  xcb_xkb_set_debugging_flags_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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]

  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]

  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

  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]

  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]

  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]

  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]

  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]

  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]

  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]

  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]

  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]

  xcb_x_print_string8_t* = char

  xcb_x_print_string8_iterator_t* {.bycopy.} = object
    data*: ptr xcb_x_print_string8_t
    rem*: cint
    index*: cint

  xcb_x_print_printer_t* {.bycopy.} = object
    nameLen*: uint32
    descLen*: uint32

  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

  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

  xcb_x_print_print_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  xcb_x_print_print_get_printer_list_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_get_printer_list_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    printerNameLen*: uint32
    localeLen*: uint32

  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]

  xcb_x_print_print_rehash_printer_list_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_x_print_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_id*: uint32
    printerNameLen*: uint32
    localeLen*: uint32

  xcb_x_print_print_set_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: uint32

  xcb_x_print_print_get_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_get_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_x_print_print_get_context_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    context*: uint32

  xcb_x_print_print_destroy_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: uint32

  xcb_x_print_print_get_screen_of_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_get_screen_of_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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

  xcb_x_print_print_start_job_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    output_mode*: uint8

  xcb_x_print_print_end_job_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cancel*: uint8

  xcb_x_print_print_start_doc_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    driver_mode*: uint8

  xcb_x_print_print_end_doc_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cancel*: uint8

  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

  xcb_x_print_print_get_document_data_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_x_print_print_start_page_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_x_print_print_end_page_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    cancel*: uint8
    pad0*: array[3, uint8]

  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

  xcb_x_print_print_input_selected_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_input_selected_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context*: xcb_x_print_pcontext_t

  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

  xcb_x_print_print_get_attributes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  xcb_x_print_print_get_one_attributes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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]

  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]

  xcb_x_print_print_get_page_dimensions_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  xcb_x_print_print_query_screens_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_x_print_print_query_screens_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_x_print_print_set_image_resolution_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_x_print_print_set_image_resolution_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32
    previous_resolutions*: uint16

  xcb_x_print_print_get_image_resolution_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_x_print_print_get_image_resolution_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    image_resolution*: uint16

  xcb_x_print_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    detail*: uint8
    sequence*: uint16
    context*: xcb_x_print_pcontext_t
    cancel*: uint8

  xcb_x_print_attribut_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    detail*: uint8
    sequence*: uint16
    context*: xcb_x_print_pcontext_t

  xcb_x_print_bad_context_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_x_print_bad_sequence_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_char2b_t* {.bycopy.} = object
    byte1*: uint8
    byte2*: uint8

  xcb_char2b_iterator_t* {.bycopy.} = object
    data*: ptr xcb_char2b_t
    rem*: cint
    index*: cint

  xcb_window_iterator_t* {.bycopy.} = object
    data*: ptr xcb_window_t
    rem*: cint
    index*: cint

  xcb_pixmap_t* = uint32

  xcb_pixmap_iterator_t* {.bycopy.} = object
    data*: ptr xcb_pixmap_t
    rem*: cint
    index*: cint

  xcb_cursor_t* = uint32

  xcb_cursor_iterator_t* {.bycopy.} = object
    data*: ptr xcb_cursor_t
    rem*: cint
    index*: cint

  xcb_font_t* = uint32

  xcb_font_iterator_t* {.bycopy.} = object
    data*: ptr xcb_font_t
    rem*: cint
    index*: cint

  xcb_gcontext_t* = uint32

  xcb_gcontext_iterator_t* {.bycopy.} = object
    data*: ptr xcb_gcontext_t
    rem*: cint
    index*: cint



  xcb_colormap_iterator_t* {.bycopy.} = object
    data*: ptr xcb_colormap_t
    rem*: cint
    index*: cint



  xcb_atom_iterator_t* {.bycopy.} = object
    data*: ptr xcb_atom_t
    rem*: cint
    index*: cint

  xcb_drawable_t* = uint32

  xcb_drawable_iterator_t* {.bycopy.} = object
    data*: ptr xcb_drawable_t
    rem*: cint
    index*: cint

  xcb_fontable_t* = uint32

  xcb_fontable_iterator_t* {.bycopy.} = object
    data*: ptr xcb_fontable_t
    rem*: cint
    index*: cint

  xcb_bool32_t* = uint32

  xcb_bool32_iterator_t* {.bycopy.} = object
    data*: ptr xcb_bool32_t
    rem*: cint
    index*: cint



  xcb_visualid_iterator_t* {.bycopy.} = object
    data*: ptr xcb_visualid_t
    rem*: cint
    index*: cint



  xcb_timestamp_iterator_t* {.bycopy.} = object
    data*: ptr xcb_timestamp_t
    rem*: cint
    index*: cint

  xcb_keysym_t* = uint32

  xcb_keysym_iterator_t* {.bycopy.} = object
    data*: ptr xcb_keysym_t
    rem*: cint
    index*: cint


  xcb_keycode_iterator_t* {.bycopy.} = object
    data*: ptr xcb_keycode_t
    rem*: cint
    index*: cint

  xcb_keycode32_t* = uint32

  xcb_keycode32_iterator_t* {.bycopy.} = object
    data*: ptr xcb_keycode32_t
    rem*: cint
    index*: cint

  xcb_button_iterator_t* {.bycopy.} = object
    data*: ptr xcb_button_t
    rem*: cint
    index*: cint

  xcb_point_t* {.bycopy.} = object
    x*: int16
    y*: int16

  xcb_point_iterator_t* {.bycopy.} = object
    data*: ptr xcb_point_t
    rem*: cint
    index*: cint

  xcb_rectangle_t* {.bycopy.} = object
    x*: int16
    y*: int16
    width*: uint16
    height*: uint16

  xcb_rectangle_iterator_t* {.bycopy.} = object
    data*: ptr xcb_rectangle_t
    rem*: cint
    index*: cint

  xcb_arc_t* {.bycopy.} = object
    x*: int16
    y*: int16
    width*: uint16
    height*: uint16
    angle1*: int16
    angle2*: int16

  xcb_arc_iterator_t* {.bycopy.} = object
    data*: ptr xcb_arc_t
    rem*: cint
    index*: cint

  xcb_format_t* {.bycopy.} = object
    depth*: uint8
    bits_per_pixel*: uint8
    scanline_pad*: uint8
    pad0*: array[5, uint8]

  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

  xcb_visualtype_t* {.bycopy.} = object
    visual_id*: xcb_visualid_t
    x_class*: uint8
    bits_per_rgb_value*: uint8
    colormap_entries*: uint16
    red_mask*: uint32
    green_mask*: uint32
    blue_mask*: uint32
    pad0*: array[4, uint8]

  xcb_visualtype_iterator_t* {.bycopy.} = object
    data*: ptr xcb_visualtype_t
    rem*: cint
    index*: cint

  xcb_depth_t* {.bycopy.} = object
    depth*: uint8
    pad0*: uint8
    visuals_len*: uint16
    pad1*: array[4, uint8]

  xcb_depth_iterator_t* {.bycopy.} = object
    data*: ptr xcb_depth_t
    rem*: cint
    index*: cint


  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]

  xcb_setup_request_iterator_t* {.bycopy.} = object
    data*: ptr xcb_setup_request_t
    rem*: cint
    index*: cint

  xcb_setup_failed_t* {.bycopy.} = object
    status*: uint8
    reason_len*: uint8
    protocol_major_version*: uint16
    protocol_minor_version*: uint16
    length*: uint16

  xcb_setup_failed_iterator_t* {.bycopy.} = object
    data*: ptr xcb_setup_failed_t
    rem*: cint
    index*: cint

  xcb_setup_authenticate_t* {.bycopy.} = object
    status*: uint8
    pad0*: array[5, uint8]
    length*: uint16

  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


  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


  # 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

  # xcb_button_release_event_t* = xcb_button_press_event_t
  # xcb_motion_t* = enum
  #   XCB_MOTION_NORMAL = 0, XCB_MOTION_HINT = 1

  # 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

  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

  xcb_leave_notify_event_t* = xcb_enter_notify_event_t

  xcb_focus_in_event_t* {.bycopy.} = object
    response_type*: uint8
    detail*: uint8
    sequence*: uint16
    event*: xcb_window_t
    mode*: uint8
    pad0*: array[3, uint8]

  xcb_focus_out_event_t* = xcb_focus_in_event_t

  xcb_keymap_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    keys*: array[31, uint8]

  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]

  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]

  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

  xcb_visibility_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    window*: xcb_window_t
    state*: uint8
    pad1*: array[3, uint8]

  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

  xcb_destroy_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    event*: xcb_window_t
    window*: xcb_window_t

  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]

  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]

  xcb_map_request_event_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    parent*: xcb_window_t
    window*: xcb_window_t

  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]



  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

  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

  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

  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]

  xcb_circulate_request_event_t* = xcb_circulate_notify_event_t
  xcb_property_t* = enum
    XCB_PROPERTY_NEW_VALUE = 0, XCB_PROPERTY_DELETE = 1

  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]

  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

  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

  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

  xcb_colormap_notify_event_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    window*: xcb_window_t
    colormap*: xcb_colormap_t
    x_new*: uint8
    state*: uint8
    pad1*: array[2, uint8]

  xcb_client_message_data_iterator_t* {.bycopy.} = object
    data*: ptr xcb_client_message_data_t
    rem*: cint
    index*: cint

  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

  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

  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

  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

  xcb_window_error_t* = xcb_value_error_t

  xcb_pixmap_error_t* = xcb_value_error_t

  xcb_atom_error_t* = xcb_value_error_t

  xcb_cursor_error_t* = xcb_value_error_t

  xcb_font_error_t* = xcb_value_error_t

  xcb_match_error_t* = xcb_request_error_t

  xcb_drawable_error_t* = xcb_value_error_t

  xcb_access_error_t* = xcb_request_error_t

  xcb_alloc_error_t* = xcb_request_error_t

  xcb_colormap_error_t* = xcb_value_error_t

  xcb_g_context_error_t* = xcb_value_error_t

  xcb_id_choice_error_t* = xcb_value_error_t

  xcb_name_error_t* = xcb_request_error_t

  xcb_length_error_t* = xcb_request_error_t

  xcb_implementation_error_t* = xcb_request_error_t

  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

  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
    x_class*: uint16
    visual*: xcb_visualid_t
    value_mask*: uint32

  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

  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

  xcb_get_window_attributes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_window_attributes_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_get_window_attributes_reply_t* {.bycopy.} = object
    response_type*: uint8
    backing_store*: uint8
    sequence*: uint16
    length*: uint32
    visual*: xcb_visualid_t
    x_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]

  xcb_destroy_window_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  xcb_change_save_set_request_t* {.bycopy.} = object
    major_opcode*: uint8
    mode*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  xcb_map_window_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_map_subwindows_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_unmap_window_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  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

  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

  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

  xcb_circulate_window_request_t* {.bycopy.} = object
    major_opcode*: uint8
    direction*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_get_geometry_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_geometry_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    drawable*: xcb_drawable_t

  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]

  xcb_query_tree_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_tree_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  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]


  xcb_intern_atom_request_t* {.bycopy.} = object
    major_opcode*: uint8
    only_if_exists*: uint8
    length*: uint16
    name_len*: uint16
    pad0*: array[2, uint8]


  xcb_get_atom_name_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_atom_name_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    atom*: xcb_atom_t

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

  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

  xcb_get_property_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_property_request_t* {.bycopy.} = object
    major_opcode*: uint8
    x_delete*: uint8
    length*: uint16
    window*: xcb_window_t
    property*: xcb_atom_t
    `type`*: xcb_atom_t
    long_offset*: uint32
    long_length*: uint32

  xcb_get_property_reply_t* {.bycopy.} = object
    response_type*: uint8
    format*: uint8
    sequence*: uint16
    length*: uint32
    ty*: xcb_atom_t
    bytes_after*: uint32
    value_len*: uint32
    pad0*: array[12, uint8]

  xcb_list_properties_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_properties_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_list_properties_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    atoms_len*: uint16
    pad1*: array[22, uint8]

  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

  xcb_get_selection_owner_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_selection_owner_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    selection*: xcb_atom_t

  xcb_get_selection_owner_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    owner*: xcb_window_t

  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

  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

  xcb_grab_pointer_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_grab_pointer_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32

  xcb_ungrab_pointer_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    time*: xcb_timestamp_t


  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

  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]

  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]

  xcb_grab_keyboard_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  xcb_grab_keyboard_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32

  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

  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]

  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

  xcb_allow_events_request_t* {.bycopy.} = object
    major_opcode*: uint8
    mode*: uint8
    length*: uint16
    time*: xcb_timestamp_t

  xcb_grab_server_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_ungrab_server_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_query_pointer_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_pointer_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  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]

  xcb_timecoord_t* {.bycopy.} = object
    time*: xcb_timestamp_t
    x*: int16
    y*: int16

  xcb_timecoord_iterator_t* {.bycopy.} = object
    data*: ptr xcb_timecoord_t
    rem*: cint
    index*: cint

  xcb_get_motion_events_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_get_motion_events_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    events_len*: uint32
    pad1*: array[20, uint8]

  xcb_translate_coordinates_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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

  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

  xcb_set_input_focus_request_t* {.bycopy.} = object
    major_opcode*: uint8
    revert_to*: uint8
    length*: uint16
    focus*: xcb_window_t
    time*: xcb_timestamp_t

  xcb_get_input_focus_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_input_focus_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_get_input_focus_reply_t* {.bycopy.} = object
    response_type*: uint8
    revert_to*: uint8
    sequence*: uint16
    length*: uint32
    focus*: xcb_window_t

  xcb_query_keymap_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_keymap_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_query_keymap_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    keys*: array[32, uint8]

  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]

  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

  xcb_fontprop_t* {.bycopy.} = object
    name*: xcb_atom_t
    value*: uint32

  xcb_fontprop_iterator_t* {.bycopy.} = object
    data*: ptr xcb_fontprop_t
    rem*: cint
    index*: cint

  xcb_charinfo_t* {.bycopy.} = object
    left_side_bearing*: int16
    right_side_bearing*: int16
    character_width*: int16
    ascent*: int16
    descent*: int16
    attributes*: uint16

  xcb_charinfo_iterator_t* {.bycopy.} = object
    data*: ptr xcb_charinfo_t
    rem*: cint
    index*: cint

  xcb_query_font_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_font_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    font*: xcb_fontable_t

  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

  xcb_query_text_extents_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_text_extents_request_t* {.bycopy.} = object
    major_opcode*: uint8
    odd_length*: uint8
    length*: uint16
    font*: xcb_fontable_t

  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

  xcb_str_t* {.bycopy.} = object
    name_len*: uint8

  xcb_str_iterator_t* {.bycopy.} = object
    data*: ptr xcb_str_t
    rem*: cint
    index*: cint

  xcb_list_fonts_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_fonts_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    max_names*: uint16
    pattern_len*: uint16

  xcb_list_fonts_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    names_len*: uint16
    pad1*: array[22, uint8]

  xcb_list_fonts_with_info_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_fonts_with_info_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    max_names*: uint16
    pattern_len*: uint16

  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

  xcb_set_font_path_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    font_qty*: uint16
    pad1*: array[2, uint8]

  xcb_get_font_path_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_font_path_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_get_font_path_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    path_len*: uint16
    pad1*: array[22, uint8]

  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

  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

  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

  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

  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

  xcb_change_gc_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    gc*: xcb_gcontext_t
    value_mask*: uint32

  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

  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

  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

  xcb_free_gc_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    gc*: xcb_gcontext_t

  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

  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

  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

  xcb_poly_point_request_t* {.bycopy.} = object
    major_opcode*: uint8
    coordinate_mode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    gc*: xcb_gcontext_t

  xcb_poly_line_request_t* {.bycopy.} = object
    major_opcode*: uint8
    coordinate_mode*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    gc*: xcb_gcontext_t

  xcb_segment_t* {.bycopy.} = object
    x1*: int16
    y1*: int16
    x2*: int16
    y2*: int16

  xcb_segment_iterator_t* {.bycopy.} = object
    data*: ptr xcb_segment_t
    rem*: cint
    index*: cint

  xcb_poly_segment_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    gc*: xcb_gcontext_t

  xcb_poly_rectangle_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    gc*: xcb_gcontext_t

  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

  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]

  xcb_poly_fill_rectangle_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    gc*: xcb_gcontext_t

  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

  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]

  xcb_get_image_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_get_image_reply_t* {.bycopy.} = object
    response_type*: uint8
    depth*: uint8
    sequence*: uint16
    length*: uint32
    visual*: xcb_visualid_t
    pad0*: array[20, uint8]

  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

  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

  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

  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

  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

  xcb_free_colormap_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cmap*: xcb_colormap_t

  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

  xcb_install_colormap_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cmap*: xcb_colormap_t

  xcb_uninstall_colormap_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cmap*: xcb_colormap_t

  xcb_list_installed_colormaps_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_installed_colormaps_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_list_installed_colormaps_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    cmaps_len*: uint16
    pad1*: array[22, uint8]

  xcb_alloc_color_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  xcb_alloc_named_color_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  xcb_alloc_color_cells_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_alloc_color_cells_request_t* {.bycopy.} = object
    major_opcode*: uint8
    contiguous*: uint8
    length*: uint16
    cmap*: xcb_colormap_t
    colors*: uint16
    planes*: uint16

  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]

  xcb_alloc_color_planes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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

  xcb_coloritem_t* {.bycopy.} = object
    pixel*: uint32
    red*: uint16
    green*: uint16
    blue*: uint16
    flags*: uint8
    pad0*: uint8

  xcb_coloritem_iterator_t* {.bycopy.} = object
    data*: ptr xcb_coloritem_t
    rem*: cint
    index*: cint

  xcb_store_colors_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cmap*: xcb_colormap_t

  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]

  xcb_rgb_t* {.bycopy.} = object
    red*: uint16
    green*: uint16
    blue*: uint16
    pad0*: array[2, uint8]

  xcb_rgb_iterator_t* {.bycopy.} = object
    data*: ptr xcb_rgb_t
    rem*: cint
    index*: cint

  xcb_query_colors_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_colors_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cmap*: xcb_colormap_t

  xcb_query_colors_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    colors_len*: uint16
    pad1*: array[22, uint8]

  xcb_lookup_color_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  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

  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

  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

  xcb_free_cursor_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    cursor*: xcb_cursor_t

  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

  xcb_query_best_size_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_best_size_request_t* {.bycopy.} = object
    major_opcode*: uint8
    x_class*: uint8
    length*: uint16
    drawable*: xcb_drawable_t
    width*: uint16
    height*: uint16

  xcb_query_best_size_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    width*: uint16
    height*: uint16

  xcb_query_extension_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_query_extension_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    name_len*: uint16
    pad1*: array[2, uint8]

  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

  xcb_list_extensions_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_extensions_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_list_extensions_reply_t* {.bycopy.} = object
    response_type*: uint8
    names_len*: uint8
    sequence*: uint16
    length*: uint32
    pad0*: array[24, uint8]

  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]

  xcb_get_keyboard_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_keyboard_mapping_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    first_keycode*: xcb_keycode_t
    count*: uint8

  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

  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

  xcb_change_keyboard_control_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    value_mask*: uint32

  xcb_get_keyboard_control_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_keyboard_control_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  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]

  xcb_bell_request_t* {.bycopy.} = object
    major_opcode*: uint8
    percent*: int8
    length*: uint16

  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

  xcb_get_pointer_control_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_pointer_control_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  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

  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

  xcb_get_screen_saver_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_screen_saver_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  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

  xcb_change_hosts_request_t* {.bycopy.} = object
    major_opcode*: uint8
    mode*: uint8
    length*: uint16
    family*: uint8
    pad0*: uint8
    address_len*: uint16

  xcb_host_t* {.bycopy.} = object
    family*: uint8
    pad0*: uint8
    address_len*: uint16

  xcb_host_iterator_t* {.bycopy.} = object
    data*: ptr xcb_host_t
    rem*: cint
    index*: cint

  xcb_list_hosts_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_list_hosts_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  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

  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

  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

  xcb_kill_client_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16
    resource*: uint32

  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

  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

  xcb_set_pointer_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_set_pointer_mapping_request_t* {.bycopy.} = object
    major_opcode*: uint8
    map_len*: uint8
    length*: uint16

  xcb_set_pointer_mapping_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32

  xcb_get_pointer_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_pointer_mapping_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  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

  xcb_set_modifier_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_set_modifier_mapping_request_t* {.bycopy.} = object
    major_opcode*: uint8
    keycodes_per_modifier*: uint8
    length*: uint16

  xcb_set_modifier_mapping_reply_t* {.bycopy.} = object
    response_type*: uint8
    status*: uint8
    sequence*: uint16
    length*: uint32

  xcb_get_modifier_mapping_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_get_modifier_mapping_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_get_modifier_mapping_reply_t* {.bycopy.} = object
    response_type*: uint8
    keycodes_per_modifier*: uint8
    sequence*: uint16
    length*: uint32
    pad0*: array[24, uint8]

  xcb_no_operation_request_t* {.bycopy.} = object
    major_opcode*: uint8
    pad0*: uint8
    length*: uint16

  xcb_selinux_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    client_major*: uint8
    client_minor*: uint8

  xcb_selinux_query_version_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    server_major*: uint16
    server_minor*: uint16

  xcb_selinux_set_device_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_device_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_device_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_set_device_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device*: uint32
    context_len*: uint32

  xcb_selinux_get_device_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_device_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    device*: uint32

  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]

  xcb_selinux_set_window_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_window_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_window_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_get_window_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_window_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  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]

  xcb_selinux_list_item_t* {.bycopy.} = object
    name*: xcb_atom_t
    object_context_len*: uint32
    data_context_len*: uint32

  xcb_selinux_list_item_iterator_t* {.bycopy.} = object
    data*: ptr xcb_selinux_list_item_t
    rem*: cint
    index*: cint

  xcb_selinux_set_property_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_property_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_property_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_set_property_use_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_property_use_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_property_use_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_get_property_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_selinux_get_property_data_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_selinux_list_properties_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_list_properties_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_selinux_list_properties_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    properties_len*: uint32
    pad1*: array[20, uint8]

  xcb_selinux_set_selection_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_selection_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_selection_create_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_set_selection_use_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_len*: uint32

  xcb_selinux_get_selection_use_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_selection_use_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  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]

  xcb_selinux_get_selection_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_selection_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    selection*: xcb_atom_t

  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]

  xcb_selinux_get_selection_data_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_selection_data_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    selection*: xcb_atom_t

  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]

  xcb_selinux_list_selections_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_list_selections_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_selinux_list_selections_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    selections_len*: uint32
    pad1*: array[20, uint8]

  xcb_selinux_get_client_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_selinux_get_client_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    resource*: uint32

  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]

  xcb_test_get_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_test_get_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    major_version*: uint8
    pad0*: uint8
    minor_version*: uint16

  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

  xcb_test_compare_cursor_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_test_compare_cursor_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t
    cursor*: xcb_cursor_t

  xcb_test_compare_cursor_reply_t* {.bycopy.} = object
    response_type*: uint8
    same*: uint8
    sequence*: uint16
    length*: uint32

  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

  xcb_test_grab_control_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    impervious*: uint8
    pad0*: array[3, uint8]

  xcb_xv_port_t* = uint32

  xcb_xv_port_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_port_t
    rem*: cint
    index*: cint

  xcb_xv_encoding_t* = uint32

  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

  xcb_xv_rational_t* {.bycopy.} = object
    numerator*: int32
    denominator*: int32

  xcb_xv_rational_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_rational_t
    rem*: cint
    index*: cint

  xcb_xv_format_t* {.bycopy.} = object
    visual*: xcb_visualid_t
    depth*: uint8
    pad0*: array[3, uint8]

  xcb_xv_format_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_format_t
    rem*: cint
    index*: cint

  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

  xcb_xv_adaptor_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_adaptor_info_t
    rem*: cint
    index*: cint

  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

  xcb_xv_encoding_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_encoding_info_t
    rem*: cint
    index*: cint

  xcb_xv_image_t* {.bycopy.} = object
    id*: uint32
    width*: uint16
    height*: uint16
    data_size*: uint32
    num_planes*: uint32

  xcb_xv_image_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_image_t
    rem*: cint
    index*: cint

  xcb_xv_attribute_info_t* {.bycopy.} = object
    flags*: uint32
    min*: int32
    max*: int32
    size*: uint32

  xcb_xv_attribute_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_attribute_info_t
    rem*: cint
    index*: cint

  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]

  xcb_xv_image_format_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xv_image_format_info_t
    rem*: cint
    index*: cint

  xcb_xv_bad_port_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_xv_bad_encoding_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  xcb_xv_bad_control_error_t* {.bycopy.} = object
    response_type*: uint8
    error_code*: uint8
    sequence*: uint16

  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

  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

  xcb_xv_query_extension_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xv_query_extension_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_xv_query_extension_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    major*: uint16
    minor*: uint16

  xcb_xv_query_adaptors_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xv_query_adaptors_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    window*: xcb_window_t

  xcb_xv_query_adaptors_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    num_adaptors*: uint16
    pad1*: array[22, uint8]

  xcb_xv_query_encodings_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xv_query_encodings_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    port*: xcb_xv_port_t

  xcb_xv_query_encodings_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    num_encodings*: uint16
    pad1*: array[22, uint8]

  xcb_xv_grab_port_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_xv_grab_port_reply_t* {.bycopy.} = object
    response_type*: uint8
    result*: uint8
    sequence*: uint16
    length*: uint32

  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

  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

  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

  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

  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

  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

  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]

  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]

  xcb_xv_query_best_size_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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]

  xcb_xv_query_best_size_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    actual_width*: uint16
    actual_height*: uint16

  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

  xcb_xv_get_port_attribute_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_xv_get_port_attribute_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    value*: int32

  xcb_xv_query_port_attributes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xv_query_port_attributes_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    port*: xcb_xv_port_t

  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]

  xcb_xv_list_image_formats_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xv_list_image_formats_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    port*: xcb_xv_port_t

  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]

  xcb_xv_query_image_attributes_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  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

  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]

  xcb_xvmc_context_t* = uint32

  xcb_xvmc_context_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xvmc_context_t
    rem*: cint
    index*: cint

  xcb_xvmc_surface_t* = uint32

  xcb_xvmc_surface_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xvmc_surface_t
    rem*: cint
    index*: cint

  xcb_xvmc_subpicture_t* = uint32

  xcb_xvmc_subpicture_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xvmc_subpicture_t
    rem*: cint
    index*: cint

  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

  xcb_xvmc_surface_info_iterator_t* {.bycopy.} = object
    data*: ptr xcb_xvmc_surface_info_t
    rem*: cint
    index*: cint

  xcb_xvmc_query_version_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xvmc_query_version_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16

  xcb_xvmc_query_version_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    major*: uint32
    minor*: uint32

  xcb_xvmc_list_surface_types_cookie_t* {.bycopy.} = object
    sequence*: uint8

  xcb_xvmc_list_surface_types_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    port_id*: xcb_xv_port_t

  xcb_xvmc_list_surface_types_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    num*: uint32
    pad1*: array[20, uint8]

  xcb_xvmc_create_context_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_xvmc_destroy_context_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    context_id*: xcb_xvmc_context_t

  xcb_xvmc_create_surface_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_xvmc_create_surface_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    pad1*: array[24, uint8]

  xcb_xvmc_destroy_surface_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    surface_id*: xcb_xvmc_surface_t

  xcb_xvmc_create_subpicture_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  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]

  xcb_xvmc_destroy_subpicture_request_t* {.bycopy.} = object
    major_opcode*: uint8
    minor_opcode*: uint8
    length*: uint16
    subpicture_id*: xcb_xvmc_subpicture_t

  xcb_xvmc_list_subpicture_types_cookie_t* {.bycopy.} = object
    sequence*: uint8

  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

  xcb_xvmc_list_subpicture_types_reply_t* {.bycopy.} = object
    response_type*: uint8
    pad0*: uint8
    sequence*: uint16
    length*: uint32
    num*: uint32
    pad1*: array[20, uint8]


const 
  XCB_ATOM_ANY* = XCB_ATOM_NONE

#   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

proc xcb_generate_id*(c: ptr xcb_connection_t): uint32 {.importc, cdecl.}
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  {.importc, cdecl.}
proc xcb_change_property_data*(R: ptr xcb_change_property_request_t): pointer  {.importc, cdecl.}
proc xcb_change_property_data_length*(R: ptr xcb_change_property_request_t): cint  {.importc, cdecl.}
proc xcb_change_property_data_end*(R: ptr xcb_change_property_request_t): xcb_generic_iterator_t  {.importc, cdecl.}

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  {.importc, cdecl.}

proc xcb_intern_atom*(c: ptr xcb_connection_t; only_if_exists: uint8; name_len: uint16; name: cstring): xcb_intern_atom_cookie_t  {.importc, cdecl.}
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  {.importc, cdecl.}
proc xcb_map_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t  {.importc, cdecl.}
proc xcb_connect*(displayname: cstring; screenp: ptr cint): ptr xcb_connection_t {.importc, cdecl.}
proc xcb_get_setup*(c: ptr xcb_connection_t): ptr xcb_setup_t {.importc, cdecl.}
proc xcb_setup_roots_iterator*(R: ptr xcb_setup_t): xcb_screen_iterator_t {.importc, cdecl.}
proc xcb_screen_next*(i: ptr xcb_screen_iterator_t){.importc, cdecl.}
proc xcb_flush*(c: ptr xcb_connection_t): cint {.importc, cdecl.}
proc xcb_poll_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t {.importc, cdecl.}
proc xcb_wait_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t {.importc, cdecl.}
proc xcb_aux_sync*(c: ptr xcb_connection_t){.importc, cdecl.}
proc xcb_destroy_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t {.importc, cdecl.}
proc xcb_destroy_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t {.importc, cdecl.}
proc xcb_connection_has_error*(c: ptr xcb_connection_t): cint {.importc, cdecl.}
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 {.importc, cdecl.}

proc xcb_randr_get_screen_resources_current*(c: ptr xcb_connection_t;  window: xcb_window_t): xcb_randr_get_screen_resources_current_cookie_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_outputs_length*( R: ptr xcb_randr_get_screen_resources_current_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_outputs*( R: ptr xcb_randr_get_screen_resources_current_reply_t): ptr xcb_randr_output_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_outputs_end*( R: ptr xcb_randr_get_screen_resources_current_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_modes*( R: ptr xcb_randr_get_screen_resources_current_reply_t): ptr xcb_randr_mode_info_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_modes_length*(  R: ptr xcb_randr_get_screen_resources_current_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_modes_iterator*( R: ptr xcb_randr_get_screen_resources_current_reply_t): xcb_randr_mode_info_iterator_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_names*( R: ptr xcb_randr_get_screen_resources_current_reply_t): ptr uint8 {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_names_length*( R: ptr xcb_randr_get_screen_resources_current_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_screen_resources_current_names_end*(  R: ptr xcb_randr_get_screen_resources_current_reply_t): xcb_generic_iterator_t {.importc, cdecl.}

proc xcb_randr_get_output_info_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_output_info_cookie_t; e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_output_info_reply_t {.importc, cdecl.}
proc xcb_randr_get_output_info*( c: ptr xcb_connection_t
                               , output: xcb_randr_output_t
                               , config_timestamp: xcb_timestamp_t
                               ): xcb_randr_get_output_info_cookie_t {.importc, cdecl.} 
# proc xcb_poll_for_queued_event*(c: ptr xcb_connection_t): ptr xcb_special_event_t* = xcb_special_event

## *
##
##  @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 {.importc, cdecl.}
## *
##
##  @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 {.importc, cdecl.}
## *
##  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 {.importc, cdecl.}
## *
##  @}
##

##
##  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.
##  @{
##

converter xcb_window_class_tToInt*(x: xcb_window_class_t): int = x.int
converter xcb_cw_tToInt*(x:xcb_cw_t):int = x.int
converter xcb_event_mask_tToInt*(x:xcb_event_mask_t):uint32 = x.uint32


# from xcblob.nim
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_disconnect*(c: ptr xcb_connection_t) {.importc, cdecl.}
##  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_randr_get_crtc_info_reply*(c: ptr xcb_connection_t; 
                                    cookie: xcb_randr_get_crtc_info_cookie_t; 
                                    e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_info_reply_t {.importc, cdecl.}

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 {.importc, cdecl.}  

proc xcb_get_keyboard_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_get_keyboard_mapping_cookie_t; e: ptr ptr xcb_generic_error_t): ptr xcb_get_keyboard_mapping_reply_t {.importc, cdecl.}

proc xcb_get_keyboard_mapping*(c: ptr xcb_connection_t; first_keycode: xcb_keycode_t; count: uint8): xcb_get_keyboard_mapping_cookie_t {.importc, cdecl.}
## *
##
##  @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.
##

var ALL_COMPONENTS_MASK*: uint16 =  ( XCB_XKB_MAP_PART_KEY_TYPES.ord           or
                                      XCB_XKB_MAP_PART_KEY_SYMS.ord            or
                                      XCB_XKB_MAP_PART_MODIFIER_MAP.ord        or
                                      XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS.ord or
                                      XCB_XKB_MAP_PART_KEY_ACTIONS.ord         or
                                      XCB_XKB_MAP_PART_KEY_BEHAVIORS.ord       or
                                      XCB_XKB_MAP_PART_VIRTUAL_MODS.ord        or
                                      XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP.ord
                                    )

proc xcb_xkb_get_map*(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 {.importc, cdecl.}

proc xcb_xkb_get_map_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_map_cookie_t; e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_map_reply_t {.importc, cdecl.}

proc xcb_get_extension_data*(c: ptr xcb_connection_t; ext: ptr xcb_extension_t): ptr xcb_query_extension_reply_t {.importc, cdecl.}
## *
##  @brief Prefetch of extension data into the extension cache
##  @param c The connection.
##  @param ext The extension data.
##
##  This function allows a "prefetch" of extension data into the
##  extension cache. Invoking the function may cause a call to
##  xcb_query_extension, but will not block waiting for the
##  reply. xcb_get_extension_data will return the prefetched data after
##  possibly blocking while it is retrieved.
##

proc xcb_prefetch_extension_data*(c: ptr xcb_connection_t; ext: ptr xcb_extension_t) {.importc, cdecl.}
##  xcb_conn.c
## *
##  @brief Access the data returned by the server.
##  @param c The connection.
##  @return A pointer to an xcb_setup_t structure.
##
##  Accessor for the data returned by the server when the xcb_connection_t
##  was initialized. This data includes
##  - the server's required format for images,
##  - a list of available visuals,
##  - a list of available screens,
##  - the server's maximum request length (in the absence of the
##  BIG-REQUESTS extension),
##  - and other assorted information.
##
##  See the X protocol specification for more details.
##
##  The result must not be freed.
##
var xcb_xkb_id*: xcb_extension_t = xcb_extension_t(name: "XKEYBOARD", global_id: 0)

proc xcb_xkb_use_extension*(c: ptr xcb_connection_t; wantedMajor: uint16; wantedMinor: uint16): xcb_xkb_use_extension_cookie_t {.importc, cdecl.}

proc xcb_xkb_use_extension_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_use_extension_cookie_t; e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_use_extension_reply_t {.importc, cdecl.}
proc xcb_xkb_select_events_details_serialize*(buffer: ptr pointer; affectWhich: uint16; clear: uint16; selectAll: uint16; aux: ptr xcb_xkb_select_events_details_t): cint {.importc, cdecl.}
proc xcb_xkb_select_events_details_unpack*(buffer: pointer; affectWhich: uint16; clear: uint16; selectAll: uint16; aux: ptr xcb_xkb_select_events_details_t): cint {.importc, cdecl.}
proc xcb_xkb_select_events_details_sizeof*(buffer: pointer; affectWhich: uint16; clear: uint16; selectAll: uint16): cint {.importc, cdecl.}
proc xcb_xkb_select_events_sizeof*(buffer: pointer): cint {.importc, cdecl.}

proc xcb_xkb_get_map_map*(R: ptr xcb_xkb_get_map_reply_t): pointer {.importc, cdecl.}
## *
##  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_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_map_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_map_map_t): cint {.importc, cdecl.}

proc xcb_xkb_get_map_map_types_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}
proc xcb_xkb_get_map_map_types_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_type_iterator_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_syms_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}
proc xcb_xkb_get_map_map_syms_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_sym_map_iterator_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_count*(S: ptr xcb_xkb_get_map_map_t): ptr uint8 {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_count_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_count_end*(R: ptr xcb_xkb_get_map_reply_t;  S: ptr xcb_xkb_get_map_map_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_acts*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_action_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_acts_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}
proc xcb_xkb_get_map_map_acts_rtrn_acts_iterator*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): xcb_xkb_action_iterator_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_behaviors_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_set_behavior_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_behaviors_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}
proc xcb_xkb_get_map_map_behaviors_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): xcb_xkb_set_behavior_iterator_t {.importc, cdecl.}
proc xcb_xkb_get_map_map_vmods_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr uint8 {.importc, cdecl.}
proc xcb_xkb_get_map_map_vmods_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t; S: ptr xcb_xkb_get_map_map_t): cint {.importc, cdecl.}

proc xcb_xkb_kt_map_entry_end*(i: xcb_xkb_kt_map_entry_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_xkb_key_type_sizeof*(buffer: pointer): cint {.importc, cdecl.}
proc xcb_xkb_key_type_map*(R: ptr xcb_xkb_key_type_t): ptr xcb_xkb_kt_map_entry_t {.importc, cdecl.}
proc xcb_xkb_key_type_map_length*(R: ptr xcb_xkb_key_type_t): cint {.importc, cdecl.}
proc xcb_xkb_key_type_map_iterator*(R: ptr xcb_xkb_key_type_t): xcb_xkb_kt_map_entry_iterator_t {.importc, cdecl.}
proc xcb_xkb_key_type_preserve*(R: ptr xcb_xkb_key_type_t): ptr xcb_xkb_mod_def_t {.importc, cdecl.}
proc xcb_xkb_key_type_preserve_length*(R: ptr xcb_xkb_key_type_t): cint {.importc, cdecl.}
proc xcb_xkb_key_type_preserve_iterator*(R: ptr xcb_xkb_key_type_t): xcb_xkb_mod_def_iterator_t {.importc, cdecl.}

proc xcb_xkb_kt_map_entry_next*(i: ptr xcb_xkb_kt_map_entry_iterator_t) {.importc, cdecl.}
## *
##  Return the iterator pointing to the last element
##  @param i An xcb_xkb_kt_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_key_type_next*(i: ptr xcb_xkb_key_type_iterator_t) {.importc, cdecl.}
## *
##  Return the iterator pointing to the last element
##  @param i An xcb_xkb_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_randr_get_screen_resources_crtcs_length*(reply: ptr xcb_randr_get_screen_resources_reply_t): int {.importc, cdecl.}
proc xcb_randr_get_screen_resources_crtcs*(reply: ptr xcb_randr_get_screen_resources_reply_t): int {.importc, cdecl.}

proc xcb_randr_get_screen_resources_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_screen_resources_cookie_t;  e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_screen_resources_reply_t {.importc, cdecl.}
proc xcb_randr_get_output_info_sizeof*(buffer: pointer): cint {.importc, cdecl.}
proc xcb_randr_get_screen_resources*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_resources_cookie_t {.importc, cdecl.}
proc XRRGetOutputPrimary*(dpy: ptr Display, window: Window): RROutput {.importc, cdecl.}
proc xcb_poll_for_queued_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t {.importc, cdecl.}

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 {.importc, cdecl.}

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 {.importc, cdecl.}

proc XGetXCBConnection*(dpy: ptr Display): ptr xcb_connection_t {.importc, cdecl.}


proc xcb_xrm_database_from_default*(conn: ptr xcb_connection_t): ptr xcb_xrm_database_t {.importc, cdecl.}

proc xcb_xkb_select_events*( 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 {.importc, cdecl.}


 # 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
                                , pout: ptr cstring
                                ): int {.importc, cdecl.}

## *
##  @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_checked*(c: ptr xcb_connection_t;
    window: xcb_window_t; value_mask: uint32; value_list: pointer): xcb_void_cookie_t {.importc, cdecl.}
## *
##  @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*(c: ptr xcb_connection_t
                                  ,  window: xcb_window_t
                                  , value_mask: uint32
                                  , value_list: pointer
                                  ): xcb_void_cookie_t {.importc, cdecl.}

proc xcb_xfixes_select_selection_input_checked*( c: ptr xcb_connection_t
                                               , window: xcb_window_t
                                               , selection: xcb_atom_t
                                               , event_mask: uint32
                                               ): xcb_void_cookie_t {.importc, cdecl.}

proc xcb_query_pointer*(c: ptr xcb_connection_t
                       ,  window: xcb_window_t
                       ): xcb_query_pointer_cookie_t {.importc, cdecl.}

proc xcb_grab_pointer*(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 {.importc, cdecl.}

proc xcb_query_pointer_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_query_pointer_cookie_t {.importc, cdecl.}

proc xcb_query_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_query_pointer_cookie_t; 
                             e: ptr ptr xcb_generic_error_t): ptr xcb_query_pointer_reply_t {.importc, cdecl.}


proc xcb_randr_get_output_primary*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_output_primary_cookie_t {.importc, cdecl.}

proc xcb_randr_get_output_primary_reply*(c: ptr xcb_connection_t
                                        , cookie: xcb_randr_get_output_primary_cookie_t 
                                        , e: ptr ptr xcb_generic_error_t
                                        ): ptr xcb_randr_get_output_primary_reply_t {.importc, cdecl.}

proc xcb_randr_query_version*(c: ptr xcb_connection_t; major_version: uint32;
                             minor_version: uint32): xcb_randr_query_version_cookie_t {.importc, cdecl.}
## *
##
##  @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_version_unchecked*(c: ptr xcb_connection_t;
                                       major_version: uint32;
                                       minor_version: uint32): xcb_randr_query_version_cookie_t {.importc, cdecl.}
## *
##  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_version_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_version_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_query_version_cookie_t; ## *<
                                   e: ptr ptr xcb_generic_error_t): ptr xcb_randr_query_version_reply_t {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##

proc xcb_randr_set_screen_config*(c: ptr xcb_connection_t; window: xcb_window_t;
                                 timestamp: xcb_timestamp_t;
                                 config_timestamp: xcb_timestamp_t;
                                 sizeID: uint16; rotation: uint16;
                                 rate: uint16): xcb_randr_set_screen_config_cookie_t {.importc, cdecl.}
## *
##
##  @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_screen_config_unchecked*(c: ptr xcb_connection_t;
    window: xcb_window_t; timestamp: xcb_timestamp_t;
    config_timestamp: xcb_timestamp_t; sizeID: uint16; rotation: uint16;
    rate: uint16): xcb_randr_set_screen_config_cookie_t {.importc, cdecl.}
## *
##  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_screen_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_screen_config_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_set_screen_config_cookie_t; ## *<
                                       e: ptr ptr xcb_generic_error_t): ptr xcb_randr_set_screen_config_reply_t {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##  This form can be used only if 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_select_input_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
                                    enable: uint16): xcb_void_cookie_t {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##

proc xcb_randr_select_input*(c: ptr xcb_connection_t; window: xcb_window_t;
                            enable: uint16): xcb_void_cookie_t {.importc, cdecl.}

proc xcb_randr_get_screen_info_sizeof*(buffer: pointer): cint {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##

proc xcb_randr_get_screen_info*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_info_cookie_t {.importc, cdecl.}
## *
##
##  @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_screen_info_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_info_cookie_t {.importc, cdecl.}

proc xcb_randr_get_screen_info_sizes*(R: ptr xcb_randr_get_screen_info_reply_t): ptr xcb_randr_screen_size_t {.importc, cdecl.}
proc xcb_randr_get_screen_info_sizes_length*( R: ptr xcb_randr_get_screen_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_screen_info_sizes_iterator*( R: ptr xcb_randr_get_screen_info_reply_t): xcb_randr_screen_size_iterator_t {.importc, cdecl.}
proc xcb_randr_get_screen_info_rates_length*( R: ptr xcb_randr_get_screen_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_screen_info_rates_iterator*( R: ptr xcb_randr_get_screen_info_reply_t): xcb_randr_refresh_rates_iterator_t {.importc, cdecl.}
## *
##  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_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_get_screen_info_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_screen_info_cookie_t;
                                     e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_screen_info_reply_t {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##

proc xcb_get_geometry*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_get_geometry_cookie_t {.importc, cdecl.}
## *
##  @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`).
##
##  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_geometry_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_get_geometry_cookie_t {.importc, cdecl.}
## *
##  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_geometry_unchecked(). is used.
##  Otherwise, it stores the error if any.
##
##  The returned value must be freed by the caller using free().
##

proc xcb_get_geometry_reply*(c: ptr xcb_connection_t
                            , cookie: xcb_get_geometry_cookie_t
                            , e: ptr ptr xcb_generic_error_t
                            ): ptr xcb_get_geometry_reply_t {.importc, cdecl.}

proc xcb_configure_window*(c: ptr xcb_connection_t
                          , window: xcb_window_t
                          , value_mask: uint16
                          , value_list: pointer
                          ): xcb_void_cookie_t {.importc, cdecl.}

proc xcb_randr_get_screen_resources_current_unchecked*(c: ptr xcb_connection_t
                                                      , window: xcb_window_t
                                                      ): xcb_randr_get_screen_resources_current_cookie_t  {.importc, cdecl.}

proc xcb_randr_get_screen_resources_current_crtcs*( R: ptr xcb_randr_get_screen_resources_current_reply_t
                                                  ): ptr xcb_randr_crtc_t {.importc, cdecl.}

proc xcb_randr_get_screen_resources_current_crtcs_length*( R: ptr xcb_randr_get_screen_resources_current_reply_t
                                                         ): cint {.importc, cdecl.}

proc xcb_randr_get_screen_resources_current_crtcs_end*( R: ptr xcb_randr_get_screen_resources_current_reply_t
                                                      ): xcb_generic_iterator_t {.importc, cdecl.}

proc xcb_randr_create_mode*(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 {.importc, cdecl.}

proc xcb_randr_create_mode_reply*(c: ptr xcb_connection_t
                                 ,  cookie: xcb_randr_create_mode_cookie_t
                                 , e: ptr ptr xcb_generic_error_t
                                 ): ptr xcb_randr_create_mode_reply_t {.importc, cdecl.}

proc xcb_randr_get_output_info_unchecked*(c: ptr xcb_connection_t; output: xcb_randr_output_t; config_timestamp: xcb_timestamp_t): xcb_randr_get_output_info_cookie_t {.importc, cdecl.}
proc xcb_randr_get_output_info_crtcs*(R: ptr xcb_randr_get_output_info_reply_t): ptr xcb_randr_crtc_t  {.importc, cdecl.}
# proc xcb_randr_get_output_info_crtcs_length*( R: ptr xcb_randr_get_output_info_reply_t): cint
# proc xcb_randr_get_output_info_crtcs_end*( R: ptr xcb_randr_get_output_info_reply_t): xcb_generic_iterator_t
proc xcb_randr_get_output_info_modes*(R: ptr xcb_randr_get_output_info_reply_t): ptr xcb_randr_mode_t {.importc, cdecl.}
proc xcb_randr_get_output_info_modes_length*( R: ptr xcb_randr_get_output_info_reply_t): cint {.importc, cdecl.}
# proc xcb_randr_get_output_info_modes_end*( R: ptr xcb_randr_get_output_info_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_output_info_clones*(R: ptr xcb_randr_get_output_info_reply_t): ptr xcb_randr_output_t
# proc xcb_randr_get_output_info_clones_length*( R: ptr xcb_randr_get_output_info_reply_t): cint
# proc xcb_randr_get_output_info_clones_end*( R: ptr xcb_randr_get_output_info_reply_t): xcb_generic_iterator_t
proc xcb_randr_get_output_info_name*(R: ptr xcb_randr_get_output_info_reply_t): ptr uint8 {.importc, cdecl.}
proc xcb_randr_get_output_info_name_length*( R: ptr xcb_randr_get_output_info_reply_t): cint {.importc, cdecl.}
# proc xcb_randr_get_output_info_name_end*(R: ptr xcb_randr_get_output_info_reply_t): xcb_generic_iterator_t

proc xcb_randr_get_crtc_info_outputs*(R: ptr xcb_randr_get_crtc_info_reply_t): ptr xcb_randr_output_t {.importc, cdecl.}

proc xcb_get_atom_name*(c: ptr xcb_connection_t; atom: xcb_atom_t): xcb_get_atom_name_cookie_t {.importc, cdecl.}


proc xcb_get_atom_name_reply*(c: ptr xcb_connection_t; cookie: xcb_get_atom_name_cookie_t; 
                             e: ptr ptr xcb_generic_error_t): ptr xcb_get_atom_name_reply_t {.importc, cdecl.}

proc xcb_randr_list_output_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_list_output_properties_cookie_t; ## *<
    e: ptr ptr xcb_generic_error_t): ptr xcb_randr_list_output_properties_reply_t {.importc, cdecl.}

proc xcb_randr_list_output_properties_atoms*( R: ptr xcb_randr_list_output_properties_reply_t): ptr xcb_atom_t {.importc, cdecl.}

proc xcb_randr_list_output_properties*(c: ptr xcb_connection_t;
                                      output: xcb_randr_output_t): xcb_randr_list_output_properties_cookie_t {.importc, cdecl.}

proc xcb_get_atom_name_name*(R: ptr xcb_get_atom_name_reply_t): cstring {.importc, cdecl.}
proc xcb_randr_get_output_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_output_property_cookie_t; e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_output_property_reply_t {.importc, cdecl.}
proc xcb_randr_get_output_property_data*(R: ptr xcb_randr_get_output_property_reply_t): ptr uint8 {.importc, cdecl.}

proc xcb_randr_get_output_property_data_length*( R: ptr xcb_randr_get_output_property_reply_t): cint {.importc, cdecl.}

proc xcb_randr_get_screen_resources_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_resources_cookie_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_crtcs*(  R: ptr xcb_randr_get_screen_resources_reply_t): ptr xcb_randr_crtc_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_crtcs_length*(   R: ptr xcb_randr_get_screen_resources_reply_t): cint  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_crtcs_end*(    R: ptr xcb_randr_get_screen_resources_reply_t): xcb_generic_iterator_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_outputs*(    R: ptr xcb_randr_get_screen_resources_reply_t): ptr xcb_randr_output_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_outputs_length*(    R: ptr xcb_randr_get_screen_resources_reply_t): cint  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_outputs_end*(    R: ptr xcb_randr_get_screen_resources_reply_t): xcb_generic_iterator_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_modes*(    R: ptr xcb_randr_get_screen_resources_reply_t): ptr xcb_randr_mode_info_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_modes_length*(    R: ptr xcb_randr_get_screen_resources_reply_t): cint  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_modes_iterator*(    R: ptr xcb_randr_get_screen_resources_reply_t): xcb_randr_mode_info_iterator_t  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_names*(    R: ptr xcb_randr_get_screen_resources_reply_t): ptr uint8  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_names_length*(    R: ptr xcb_randr_get_screen_resources_reply_t): cint  {.cdecl, importc.}
proc xcb_randr_get_screen_resources_names_end*(    R: ptr xcb_randr_get_screen_resources_reply_t): xcb_generic_iterator_t  {.cdecl, importc.}

proc xcb_randr_get_crtc_info_outputs_length*( R: ptr xcb_randr_get_crtc_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_crtc_info_outputs_end*(R: ptr xcb_randr_get_crtc_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_crtc_info_possible*(R: ptr xcb_randr_get_crtc_info_reply_t): ptr xcb_randr_output_t {.importc, cdecl.}
proc xcb_randr_get_crtc_info_possible_length*(  R: ptr xcb_randr_get_crtc_info_reply_t): cint {.importc, cdecl.}

proc xcb_randr_list_provider_properties*(c: ptr xcb_connection_t; provider: xcb_randr_provider_t): xcb_randr_list_provider_properties_cookie_t {.importc, cdecl.}

proc xcb_randr_list_provider_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_list_provider_properties_cookie_t; 
    e: ptr ptr xcb_generic_error_t): ptr xcb_randr_list_provider_properties_reply_t {.importc, cdecl.}

proc xcb_randr_get_provider_info_unchecked*(c: ptr xcb_connection_t;    provider: xcb_randr_provider_t; config_timestamp: xcb_timestamp_t): xcb_randr_get_provider_info_cookie_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_crtcs*(R: ptr xcb_randr_get_provider_info_reply_t): ptr xcb_randr_crtc_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_crtcs_length*(     R: ptr xcb_randr_get_provider_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_provider_info_crtcs_end*(     R: ptr xcb_randr_get_provider_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_outputs*(     R: ptr xcb_randr_get_provider_info_reply_t): ptr xcb_randr_output_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_outputs_length*(     R: ptr xcb_randr_get_provider_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_provider_info_outputs_end*(     R: ptr xcb_randr_get_provider_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_providers*(     R: ptr xcb_randr_get_provider_info_reply_t): ptr xcb_randr_provider_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_providers_length*(     R: ptr xcb_randr_get_provider_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_providers_end*(     R: ptr xcb_randr_get_provider_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_capability*(     R: ptr xcb_randr_get_provider_info_reply_t): ptr uint32 {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_capability_length*(     R: ptr xcb_randr_get_provider_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_provider_info_associated_capability_end*(     R: ptr xcb_randr_get_provider_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_provider_info_name*(R: ptr xcb_randr_get_provider_info_reply_t): cstring {.importc, cdecl.}
proc xcb_randr_get_provider_info_name_length*(     R: ptr xcb_randr_get_provider_info_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_provider_info_name_end*(   R: ptr xcb_randr_get_provider_info_reply_t): xcb_generic_iterator_t {.importc, cdecl.}

proc xcb_randr_list_provider_properties_unchecked*(c: ptr xcb_connection_t;   provider: xcb_randr_provider_t): xcb_randr_list_provider_properties_cookie_t {.importc, cdecl.}
proc xcb_randr_list_provider_properties_atoms*(    R: ptr xcb_randr_list_provider_properties_reply_t): ptr xcb_atom_t {.importc, cdecl.}
proc xcb_randr_list_provider_properties_atoms_length*(   R: ptr xcb_randr_list_provider_properties_reply_t): cint {.importc, cdecl.}
proc xcb_randr_list_provider_properties_atoms_end*(  R: ptr xcb_randr_list_provider_properties_reply_t): xcb_generic_iterator_t {.importc, cdecl.}

proc xcb_randr_get_monitors_sizeof*(buffer: pointer): cint {.importc, cdecl.}
## *
##
##  @param c The connection
##  @return A cookie
##
##  Delivers a request to the X server.
##
##
proc xcb_screen_allowed_depths_iterator*(R: ptr xcb_screen_t): xcb_depth_iterator_t {.importc, cdecl.}

proc xcb_randr_get_monitors*(c: ptr xcb_connection_t; window: xcb_window_t;
                            get_active: uint8): xcb_randr_get_monitors_cookie_t {.importc, cdecl.}


proc xcb_randr_get_monitors_unchecked*(c: ptr xcb_connection_t;  window: xcb_window_t; get_active: uint8): xcb_randr_get_monitors_cookie_t {.importc, cdecl.}
proc xcb_randr_get_monitors_monitors_length*( R: ptr xcb_randr_get_monitors_reply_t): cint {.importc, cdecl.}
proc xcb_randr_get_monitors_monitors_iterator*(  R: ptr xcb_randr_get_monitors_reply_t): xcb_randr_monitor_info_iterator_t {.importc, cdecl.}


proc xcb_randr_get_monitors_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_monitors_cookie_t;
                                  e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_monitors_reply_t {.importc, cdecl.}

proc xcb_randr_mode_next*(i: ptr xcb_randr_mode_iterator_t) {.importc, cdecl.}
proc xcb_randr_mode_end*(i: xcb_randr_mode_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_crtc_next*(i: ptr xcb_randr_crtc_iterator_t) {.importc, cdecl.}
proc xcb_randr_crtc_end*(i: xcb_randr_crtc_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_output_next*(i: ptr xcb_randr_output_iterator_t) {.importc, cdecl.}
proc xcb_randr_output_end*(i: xcb_randr_output_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_provider_next*(i: ptr xcb_randr_provider_iterator_t) {.importc, cdecl.}
proc xcb_randr_provider_end*(i: xcb_randr_provider_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_lease_next*(i: ptr xcb_randr_lease_iterator_t) {.importc, cdecl.}
proc xcb_randr_lease_end*(i: xcb_randr_lease_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_screen_size_next*(i: ptr xcb_randr_screen_size_iterator_t) {.importc, cdecl.}
proc xcb_randr_screen_size_end*(i: xcb_randr_screen_size_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_refresh_rates_sizeof*(buffer: pointer): cint {.importc, cdecl.}
proc xcb_randr_refresh_rates_rates*(R: ptr xcb_randr_refresh_rates_t): ptr uint16 {.importc, cdecl.}
proc xcb_randr_refresh_rates_rates_length*(R: ptr xcb_randr_refresh_rates_t): cint {.importc, cdecl.}
proc xcb_randr_refresh_rates_rates_end*(R: ptr xcb_randr_refresh_rates_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_refresh_rates_next*(i: ptr xcb_randr_refresh_rates_iterator_t) {.importc, cdecl.}
proc xcb_randr_refresh_rates_end*(i: xcb_randr_refresh_rates_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_screen_size_range*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_size_range_cookie_t {.importc, cdecl.}
proc xcb_randr_get_screen_size_range_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_screen_size_range_cookie_t {.importc, cdecl.}
proc xcb_randr_get_screen_size_range_reply*(c: ptr xcb_connection_t;
                                            cookie: xcb_randr_get_screen_size_range_cookie_t;  
                                            e: ptr ptr xcb_generic_error_t
                                           ): ptr xcb_randr_get_screen_size_range_reply_t {.importc, cdecl.}

proc xcb_randr_set_screen_size_checked*(c: ptr xcb_connection_t;
                                       window: xcb_window_t; width: uint16;
                                       height: uint16; mm_width: uint32;
                                       mm_height: uint32): xcb_void_cookie_t {.importc, cdecl.}


proc xcb_randr_set_screen_size*(c: ptr xcb_connection_t; window: xcb_window_t;
                               width: uint16; height: uint16;
                               mm_width: uint32; mm_height: uint32): xcb_void_cookie_t {.importc, cdecl.}


proc xcb_randr_mode_info_next*(i: ptr xcb_randr_mode_info_iterator_t) {.importc, cdecl.}


proc xcb_randr_mode_info_end*(i: xcb_randr_mode_info_iterator_t): xcb_generic_iterator_t {.importc, cdecl.}
proc xcb_randr_get_screen_resources_sizeof*(buffer: pointer): cint {.importc, cdecl.}

proc xcb_randr_monitor_info_outputs*(R: ptr xcb_randr_monitor_info_t): ptr xcb_randr_output_t {.importc, cdecl.}
proc xcb_randr_monitor_info_outputs_length*(R: ptr xcb_randr_monitor_info_t): cint {.importc, cdecl.}
proc xcb_randr_monitor_info_next*(i: ptr xcb_randr_monitor_info_iterator_t) {.importc, cdecl.}

proc xcb_randr_get_output_property*( c: ptr xcb_connection_t
                                   , output: xcb_randr_output_t
                                   , property: xcb_atom_t
                                   , ty: xcb_atom_t
                                   , long_offset: uint32
                                   , long_length: uint32
                                   , del: uint8
                                   , pending: uint8
                                   ): xcb_randr_get_output_property_cookie_t {.importc, cdecl.}

proc xcb_list_properties_reply*(c: ptr xcb_connection_t
                               , cookie: xcb_list_properties_cookie_t
                               , e: ptr ptr xcb_generic_error_t
                               ): ptr xcb_list_properties_reply_t {.importc, cdecl.}

proc xcb_list_properties_atoms*(R: ptr xcb_list_properties_reply_t): ptr xcb_atom_t {.importc, cdecl.}
proc xcb_list_properties_atoms_length*(R: ptr xcb_list_properties_reply_t): cint {.importc, cdecl.}
proc xcb_list_properties*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_list_properties_cookie_t {.importc, cdecl.}
proc xcb_list_properties_sizeof*(buffer: pointer): cint {.importc, cdecl.}

# is pointer return right?
proc xcb_get_property_value*(R: ptr xcb_get_property_reply_t): pointer {.importc, cdecl.}
proc xcb_get_property_value_length*(R: ptr xcb_get_property_reply_t): cint {.importc, cdecl.}

proc xcb_get_property_reply*( c: ptr xcb_connection_t; cookie: xcb_get_property_cookie_t 
                            , e: ptr ptr xcb_generic_error_t
                             ): ptr xcb_get_property_reply_t {.importc, cdecl.}

# DO NOT DELETE THE DOCS BELOW
proc xcb_get_property*( c: ptr xcb_connection_t
                      , del: uint8
                      , window: xcb_window_t
                      , property: xcb_atom_t
                      , ty: xcb_atom_t
                      , long_offset: uint32
                      , long_length: uint32
                      ): xcb_get_property_cookie_t {.importc, cdecl.}
# ## *
# ##  @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?
# ##
# ##  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_ewmh_get_workarea*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t {.importc, cdecl.}


proc xcb_ewmh_get_workarea_from_reply*(wa: ptr xcb_ewmh_get_workarea_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.importc, cdecl.}


proc xcb_ewmh_get_workarea_reply*(ewmh: ptr xcb_ewmh_connection_t;
                                  cookie: xcb_get_property_cookie_t;
                                  wa: ptr xcb_ewmh_get_workarea_reply_t;
                                  e: ptr ptr xcb_generic_error_t): uint8 {.importc, cdecl.}

proc xcb_get_property_unchecked*(c: ptr xcb_connection_t
                                , delete: uint8
                                , window: xcb_window_t
                                , property: xcb_atom_t
                                , ty: xcb_atom_t
                                , long_offset: uint32
                                , long_length: uint32
                                ): xcb_get_property_cookie_t {.importc, cdecl.}

proc xcb_ewmh_init_atoms*(c: ptr xcb_connection_t; ewmh: ptr xcb_ewmh_connection_t): ptr xcb_intern_atom_cookie_t {.importc, cdecl.}

proc xcb_ewmh_init_atoms_replies*( ewmh: ptr xcb_ewmh_connection_t
                                 , ewmh_cookies: ptr xcb_intern_atom_cookie_t
                                 , e: ptr ptr xcb_generic_error_t
                                 ): uint8 {.importc, cdecl.}


type 
 WMSizeHints* {.bycopy.} = object
  flags* : uint32
  x*: int32
  y* : int32
  width*: int32
  height* : int32
  minWidth*: int32
  minHeight*: int32
  maxWidth*: int32
  maxHeight* : int32
  widthInc*: int32
  heightInc* : int32
  minAspectNum*: int32
  minAspectDen* : int32
  maxAspectNum*: int32
  maxAspectDen* : int32
  baseWidth*: int32
  baseHeight* : int32
  winGravity* : uint32
 
 WMSizeHintsFlag* = enum
  WM_SIZE_HINT_US_POSITION   = 1U shl 0
  WM_SIZE_HINT_US_SIZE       = 1U shl 1
  WM_SIZE_HINT_P_POSITION    = 1U shl 2
  WM_SIZE_HINT_P_SIZE        = 1U shl 3
  WM_SIZE_HINT_P_MIN_SIZE    = 1U shl 4
  WM_SIZE_HINT_P_MAX_SIZE    = 1U shl 5
  WM_SIZE_HINT_P_RESIZE_INC  = 1U shl 6
  WM_SIZE_HINT_P_ASPECT      = 1U shl 7
  WM_SIZE_HINT_BASE_SIZE     = 1U shl 8
  WM_SIZE_HINT_P_WIN_GRAVITY = 1U shl 9

const
 MWM_HINTS_FUNCTIONS*   = 1 shl 0
 MWM_HINTS_DECORATIONS* = 1 shl 1
 # MWM_DECOR_ALL         = 1 shl 0
 MWM_DECOR_BORDER*      = 1 shl 1
 MWM_DECOR_RESIZEH*     = 1 shl 2
 MWM_DECOR_TITLE*       = 1 shl 3
 MWM_DECOR_MENU*        = 1 shl 4
 MWM_DECOR_MINIMIZE*    = 1 shl 5
 MWM_DECOR_MAXIMIZE*    = 1 shl 6
 # MWM_FUNC_ALL          = 1 shl 0
 MWM_FUNC_RESIZE*       = 1 shl 1
 MWM_FUNC_MOVE*         = 1 shl 2
 MWM_FUNC_MINIMIZE*     = 1 shl 3
 MWM_FUNC_MAXIMIZE*     = 1 shl 4
 MWM_FUNC_CLOSE*        = 1 shl 5

const 
 xcb_xfixes_id* = xcb_extension_t( name: "XFIXES", global_id: 0)
 err0* = cast[ptr ptr xcb_generic_error_t](0)
 err1* = cast[ptr ptr xcb_generic_error_t](1)