JJVSVLL4YA7QD335UZAFSUXNPMPUC6FCLL5GXHEGVGN5PO2KUDJAC
MAJOR: malloc(): unsorted double linked list corrupted
MINOR:
font_sdf_rgba.ktx is opened in 3 different places
write more tests
BUG:
BAD:
CORRECT:
- ktx 1 parser can only handle the font_sdf_rgba.ktx,
as it doesn't check anything or do dynamic padding for the data
Features
dynamic verts and indice buffers to a_shape as arguments
--experimental:strictEffects
# Turn on the new refined effect tracking. It enables the new .effectsOf
# annotation for effect polymorphic code ("this code raises if the callback does so").
--experimental:unicodeOperators
# Allow the usage of Unicode operators. I hope that some of
# the scientific computing libraries use this soon.
--experimental:overloadableEnums
# Allow enum field names to be overloaded. I hope some libraries make good use of this feature.
--define:nimPreviewDotLikeOps
# Dot-like operators (operators starting with `.`,
but not with `..`)
# now have the same precedence as `.`,
so that `a.?b.c` is now parsed as `(a.?b).c`
# instead of `a.?(b.c)`.
--define:nimPreviewFloatRoundtrip
# Enable much faster "floating point to string" operations that also produce
# easier to read floating point numbers.
--gc:orc
# The one and only way to do memory management in modern Nim.
--define:nimStrictDelete
# make system.delete strict for index out of bounds accesses.
# THINGS
#[Tempest (video game)
#I,
Robot (video game)
commando
zaxon
radar scope
alone in the dark
ultima underworld
int(round((atan2((y - y_center),
(x - x_center))/PI * 4 + 4))) % 8
`KOFF` as a command to turn off voice speech - reference to C64 speech sythisizer
# getOccupiedSharedMem when using --gc:arc --threads:on" or "--gc:orc --threads:on
ful·mi·nate
/ˈfo͝olməˌnāt/
Learn to pronounce
verb
1. express vehement protest.
"he fulminated against the evils of his time"
2. LITERARY: explode violently or flash like lightning.
"thunder fulminated around the house"
]#
# var
# computer: Computer
# with computer:
# manufacturer = "bananas"
# cpu = "x7"
# powerConsumption = 17
# ram = 32
# ssd = 1024
# quantity = 3
# price = 499.99
#[
Here are four books that Jon recommends: A Digital Signal Processing Primer: With Applications to Digital Audio and Computer Music -- Ken Stieglitz (ISBN:0805316841); Hypercomplex Numbers: An Elementary Introduction to Algebras -- I.L. Kantor (ISBN:0387969802); Linear Algebra Done Right -- Sheldon Axler (ISBN:3319110799); Hacker's Delight -- Henry Warren (ISBN:0321842685)
]#
The Cthaeh
asymptotic
You're expected to have experience in linear algebra, multi-variable calculus, group theory, and complex function theory to really understand it.
By default, the Nim compiler passes "-g3" to the C compiler, with "--debugger:native", which almost doubles the resulting binary's size (only on disk, not in memory). If we don't need to use GDB on that binary, we can get away with significantly fewer debugging symbols by switching to "-g1":
# for the C backend
nim c --debugger:native --gcc.options.debug:'-g1' -d:release somefile.nim
(P)ower (H)ungry (M)aniacs
- the critique of ego of Ye
The first 3 phases to the final boss (Yu?) is normal video game stuff
the last 3-4 phases are introducing the very universe lore, and his spawning and coming to the pocket, and how the tear happenend.
/agdg/ -> Agatha Dagathe
The good news is that any queue family with VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT capabilities already implicitly support VK_QUEUE_TRANSFER_BIT operations. The implementation is not required to explicitly list it in queueFlags in those cases.
UI elements for most game genres should never appear outside the center 16:9 when running on ultra wide resolutions.
better FOV calculation
TASHI-497 -> The little cute bomb thing that exploded in space to create a new galaxy in Symbiotic Titan
THE SUNFLOWER CLUB -> The mysterious club/cult(?) dedicated to SUN(yellow)flowers
On Windows, you'll need to open the binary SPIR-V file in binary mode by specifying the fopen mode flags as "rb". SPIR-V code is a sequence of 32-bit unsigned integers and on Windows you need to suppress any line-ending translations with the "binary" mode flag. The "b" flag is ignored on POSIX conforming systems like Linux and so you can leave it in your code if it is to be compiled on multiple platforms.
import vk/vulkan
vkLoad1_0()
var
instance: VkInstance
val = allocCStringArray(["VK_LAYER_KHRONOS_validation", "VK_LAYER_LUNARG_api_dump"])
appInfo = newVkApplicationInfo( pApplicationName = "instance test"
, applicationVersion = vkMakeVersion(1, 0, 0)
, pEngineName = "zzz"
, engineVersion = vkMakeVersion(1, 0, 0)
, apiVersion = vkApiVersion1_1
)
exts = allocCStringArray([])
instanceCreateInfo = newVkInstanceCreateInfo( pApplicationInfo = appInfo.addr
, enabledExtensionCount = 0
, ppEnabledExtensionNames = exts
, enabledLayerCount = 0
, ppEnabledLayerNames = val
)
if vkCreateInstance(instanceCreateInfo.addr, nil, addr instance) != VKSuccess: quit("failed to create instance")
else: echo "vkInstance: PASS"
--path:"../src/"
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
#[
THINGS TO FIX
: why uboVS as a ref object fucks up vertice uploading
: #TODO: decouple rec.vk_device from rec and "properly" implement it
]#
import vulkan as nvk
, ../utils/lets
, bitops
, vkTypes
, ../memory/[utils]
#from depth_stencil import Depth_Stencil
proc `<`*(x,y: VkDeviceSize): bool = return x.int < y.int
proc `>`*(x,y: VkDeviceSize): bool = return x.int > y.int
proc `==`*(x,y: VkDeviceSize): bool = return x.int == y.int
proc getQueueFamilyIndex*( qfp: seq[VkQueueFamilyProperties], qFlags: VkQueueFlagBits): uint32 =
if bitand(qFlags.int, VK_QUEUE_GRAPHICS_BIT.int) == 1:
for i, x in qfp:
if bitand(qfp[i].queueFlags.int, qFlags.int) == 1: return i.uint32
elif bitand(qFlags.int, VK_QUEUE_TRANSFER_BIT.int) == 1:
for i, x in qfp:
if bitand(qfp[i].queueFlags.int, qFlags.int) == 1: return i.uint32
elif bitand(qFlags.int, VK_QUEUE_COMPUTE_BIT.int) == 1:
for i, x in qfp:
if bitand(qfp[i].queueFlags.int, qFlags.int) == 1: return i.uint32
else:
for i, x in qfp:
if bitand(qfp[i].queueFlags.int, qFlags.int) == 1: return i.uint32
proc chooseSwapSurfaceFormat*(availableFormats: seq[VkSurfaceFormatKHR]): VkSurfaceFormatKHR =
for availableFormat in availableFormats:
if availableFormat.format == VK_FORMAT_B8G8R8A8_UNORM and
availableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:
return availableFormat
availableFormats[0]
proc chooseSwapPresentMode*(availablePresentModes: seq[VkPresentModeKHR]): VkPresentModeKHR =
for availablePresentMode in availablePresentModes:
if availablePresentMode == VK_PRESENT_MODE_MAILBOX_KHR:
return availablePresentMode
VK_PRESENT_MODE_FIFO_KHR
proc chooseSwapExtent*(capabilities: VkSurfaceCapabilitiesKHR): VkExtent2D =
if capabilities.currentExtent.width != uint32.high:
return capabilities.currentExtent
else:
# result = VkExtent2D(width: WIDTH, height: HEIGHT)
result.width = max( capabilities.minImageExtent.width, min(capabilities.maxImageExtent.width, result.width))
result.height = max(capabilities.minImageExtent.height, min(capabilities.maxImageExtent.height, result.height) )
proc createShaderModule*(device: VkDevice, code: string): VkShaderModule =
var createInfo = VkShaderModuleCreateInfo(
sType: VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
codeSize: code.len.uint32,
pCode: cast[ptr uint32](code[0].addr)
)
if vkCreateShaderModule(device, createInfo.addr, nil, result.addr) != VK_SUCCESS:
quit("failed to create shader module")
proc createCommandPool*( vk_device: VkDevice
, graphics_queue_index: uint32
): VkCommandPool =
var
poolInfo = VkCommandPoolCreateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
, queueFamilyIndex: graphics_queue_index # rec.qfi.graphics
, flags: VkCommandPoolCreateFlags VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT# optional
)
if vkCreateCommandPool( vk_device
, poolInfo.addr
, nil
, addr result
) != VK_SUCCESS:
quit("failed to create command pool")
proc getCommandBuffers*( device: VkDevice
, command_pool: VkCommandPool
, start: bool
): VkCommandBuffer =
var
allocInfo = VkCommandBufferAllocateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
, commandPool: command_pool
, level: VK_COMMAND_BUFFER_LEVEL_PRIMARY
, commandBufferCount: 1
)
discard vkAllocateCommandBuffers(device, allocInfo.addr, result.addr)
if start:
var cmdBufInfo: VkCommandBufferBeginInfo
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
discard vkBeginCommandBuffer(result, addr cmdBufInfo)
result
proc createPipeLineCache*( vk_device: VKDevice
): VkPipelineCache =
var pipelineCacheCreateInfo: VkPipelineCacheCreateInfo
pipelineCacheCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
discard vkCreatePipelineCache( vk_device
, addr pipelineCacheCreateInfo
, nil
, addr result
)
proc flushCommandBuffer*( device: VkDevice
, q: VkQueue
, command_pool: VkCommandPool
, commandBuffer: var VkCommandBuffer
) =
discard vkEndCommandBuffer commandBuffer
var
submitInfo: VkSubmitInfo
fenceCreateInfo: VkFenceCreateInfo
fence: VkFence
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO
submitInfo.commandBufferCount = 1
submitInfo.pCommandBuffers = addr commandBuffer #????????
# Create fence to ensure that the command buffer has finished executing
fenceCreateInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
fenceCreateInfo.flags = VkFenceCreateFlags 0
discard vkCreateFence(device, addr fenceCreateInfo, nil, addr fence)
# Submit to the queue
discard vkQueueSubmit(q, 1, addr submitInfo, fence)
# # Wait for the fence to signal that command buffer has finished executing
discard vkWaitForFences(device, 1.uint32, addr fence, VkBool32 VK_TRUE, high uint64) # in nanoseconds
vkDestroyFence(device, fence, nil)
vkFreeCommandBuffers(device, command_pool, 1, addr commandBuffer)
proc createOneCommandBuffer*( device: VkDevice
, pool: VkCommandPool
, level: VkCommandBufferLevel = VK_COMMAND_BUFFER_LEVEL_PRIMARY
, begin: bool = false
): VkCommandBuffer =
var allocInfo = VkCommandBufferAllocateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
, commandPool: pool
, level: level
, commandBufferCount: 1
)
discard vkAllocateCommandBuffers(device, addr allocInfo, addr result)
if begin:
var cmdBufferBeginInfo: VkCommandBufferBeginInfo
cmdBufferBeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
discard vkBeginCommandBuffer(result, addr cmdBufferBeginInfo)
result
proc setImageLayout*( cmdbuffer: VkCommandBuffer
, image: VkImage
, oldImageLayout: VkImageLayout
, newImageLayout: VkImageLayout
, subresourceRange: VkImageSubresourceRange
, srcStageMask: VkPipelineStageFlags
, dstStageMask: VkPipelineStageFlags
) =
var
# Initialize an image memory barrier with no image transfer ownership
imageMemoryBarrier = VkImageMemoryBarrier( sType: VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
, srcQueueFamilyIndex: VK_QUEUE_FAMILY_IGNORED
, dstQueueFamilyIndex: VK_QUEUE_FAMILY_IGNORED
, oldLayout: oldImageLayout
, newLayout: newImageLayout
, image: image
, subresourceRange: subresourceRange
)
# Source layouts (old)
# Source access mask controls actions that have to be finished on the old layout
# before it will be transitioned to the new layout
case oldImageLayout:
of VK_IMAGE_LAYOUT_UNDEFINED:
# Image layout is undefined (or does not matter)
# Only valid as initial layout
# No flags required, listed only for completeness
imageMemoryBarrier.srcAccessMask = VkAccessFlags 0
of VK_IMAGE_LAYOUT_PREINITIALIZED:
# Image is preinitialized
# Only valid as initial layout for linear images, preserves memory contents
# Make sure host writes have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_HOST_WRITE_BIT
of VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
# Image is a color attachment
# Make sure any writes to the color buffer have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
of VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
# Image is a depth/stencil attachment
# Make sure any writes to the depth/stencil buffer have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
# Image is a transfer source
# Make sure any reads from the image have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_READ_BIT
of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
# Image is a transfer destination
# Make sure any writes to the image have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_WRITE_BIT
of VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
# Image is read by a shader
# Make sure any shader reads from the image have been finished
imageMemoryBarrier.srcAccessMask = VkAccessFlags VK_ACCESS_SHADER_READ_BIT
else: discard # Other source layouts aren't handled (yet)
# Target layouts (new)
# Destination access mask controls the dependency for the new image layout
case newImageLayout:
of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
# Image will be used as a transfer destination
# Make sure any writes to the image have been finished
imageMemoryBarrier.dstAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_WRITE_BIT
of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
# Image will be used as a transfer source
# Make sure any reads from the image have been finished
imageMemoryBarrier.dstAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_READ_BIT
of VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
# Image will be used as a color attachment
# Make sure any writes to the color buffer have been finished
imageMemoryBarrier.dstAccessMask = VkAccessFlags VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
of VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
# Image layout will be used as a depth/stencil attachment
# Make sure any writes to depth/stencil buffer have been finished
imageMemoryBarrier.dstAccessMask = VkAccessFlags bitor(imageMemoryBarrier.dstAccessMask.ord, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT.ord)
of VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
# Image will be read in a shader (sampler, input attachment)
# Make sure any writes to the image have been finished
if (imageMemoryBarrier.srcAccessMask.int == 0).bool:
imageMemoryBarrier.srcAccessMask = VkAccessFlags bitor(VK_ACCESS_HOST_WRITE_BIT.ord, VK_ACCESS_TRANSFER_WRITE_BIT.ord)
imageMemoryBarrier.dstAccessMask = VkAccessFlags VK_ACCESS_SHADER_READ_BIT
else: discard #Other source layouts aren't handled (yet)
# Put barrier inside setup command buffer
vkCmdPipelineBarrier( cmdbuffer
, srcStageMask
, dstStageMask
, VkDependencyFlags 0
, 0
, nil
, 0
, nil
, 1
, addr imageMemoryBarrier)
proc beginSingleTimeCommands*( vk_device: VkDevice
, command_pool: VkCommandPool
): VkCommandBuffer =
var
commandBuffer: VkCommandBuffer
beginInfo = VkCommandBufferBeginInfo( sType:VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
, flags: VkCommandBufferUsageFlags VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
)
allocInfo = VkCommandBufferAllocateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
, level: VK_COMMAND_BUFFER_LEVEL_PRIMARY
, commandPool: command_pool
, commandBufferCount: 1
)
discard vkAllocateCommandBuffers( vk_device
, addr allocInfo
, addr commandBuffer
)
discard vkBeginCommandBuffer(commandBuffer, addr beginInfo)
proc endSingleTimeCommands*( vk_device: VkDevice
, cmdBuffer: VkCommandBuffer
, graphics_queue: VkQueue
, command_pool: VkCommandPool
, fence: VkFence = VkFence 0
, cmdBufferCount: uint32 = 1
) =
var submitInfo = VkSubmitInfo( sType: VK_STRUCTURE_TYPE_SUBMIT_INFO
, commandBufferCount: cmdBufferCount
, pCommandBuffers: addr cmdBuffer
)
discard vkEndCommandBuffer(cmdBuffer
)
discard vkQueueSubmit( graphics_queue
, uint32 1
, addr submitInfo
, fence
)
discard vkQueueWaitIdle graphics_queue
vkFreeCommandBuffers( vk_device
, command_pool
, 1
, addr cmdBuffer
)
proc createImageView*( device: VkDevice
, image: VkImage
, format: VkFormat
): VkImageVIew =
var viewInfo = VkImageViewCreateInfo( sType: VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
, image: image
, viewType: VK_IMAGE_VIEW_TYPE_2D
, format: format
, subresourceRange: VkImageSubresourceRange( aspectMask: VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
, baseMipLevel: 0
, levelCount: 1
, baseArrayLayer: 0
, layerCount: 1
)
)
discard vkCreateImageView(device, addr viewInfo, nil, addr result)
result
# TODO: Samplers can be shared. Decide on parameters and reuse samplers
# when the same parameters are passed.
proc createSampler*(device: VkDevice): VkSampler =
var samplerInfo = VkSamplerCreateInfo( sType: VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
, magFilter: VK_FILTER_LINEAR
, minFilter: VK_FILTER_LINEAR
, addressModeU: VK_SAMPLER_ADDRESS_MODE_REPEAT
, addressModeV: VK_SAMPLER_ADDRESS_MODE_REPEAT
, addressModeW: VK_SAMPLER_ADDRESS_MODE_REPEAT
, anisotropyEnable: vktrue
, maxAnisotropy: 16
, borderColor: VK_BORDER_COLOR_INT_OPAQUE_BLACK
, unnormalizedCoordinates: vkfalse
, compareEnable: vkfalse
, compareOp: VK_COMPARE_OP_ALWAYS
, mipmapMode: VK_SAMPLER_MIPMAP_MODE_LINEAR
)
discard vkCreateSampler(device, addr samplerInfo, nil, addr result)
result
proc newVkFenceCreateInfo*(sType: VkStructureType = VkStructureTypeFenceCreateInfo, pNext: pointer = nil, flags: VkFenceCreateFlags = 0.VkFenceCreateFlags): VkFenceCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
proc createSyncPrims*( vk_device: VkDevice
, fences: var seq[VkFence]
, draw_command_buffers: var seq[VkCommandBuffer]
) =
var createInfo = newVkFenceCreateInfo()
#echo rec.draw_command_buffers.len
fences.setLen draw_command_buffers.len
for i,fence in fences:
discard vkCreateFence( vk_device
, addr createInfo
, nil
, addr fences[i]
)
proc aVkDescriptorImageInfo*( sampler: VkSampler
, imageView: VkImageView
, imageLayout: VkImageLayout
): VkDescriptorImageInfo =
result = VkDescriptorImageInfo()
result.sampler = sampler
result.imageView = imageView
result.imageLayout = imageLayout
proc aVkWriteDescriptorSet*( descSet: VkDescriptorSet
, descType: VkDescriptorType
, binding: uint32
, bufferInfo: VkDescriptorBufferInfo
, descriptorCount: uint32 = 1
): VkWriteDescriptorSet =
result = VkWriteDescriptorSet()
result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
result.dstSet = descSet
result.descriptorType = descType
result.dstBinding = binding
result.pBufferInfo = cast[ptr ptr VkDescriptorBufferInfo] (addr bufferInfo) # LMAO?????
result.descriptorCount = descriptorCount
proc aVkDescriptorSetLayoutBinding*( descType: VkDescriptorType
, stageFlags: VkShaderStageFlags
, binding: uint32
, descCount: uint32 = 1): VkDescriptorSetLayoutBinding =
result = VkDescriptorSetLayoutBinding()
result.descriptorType = descType
result.stageFlags = stageFlags
result.binding = binding
result.descriptorCount = descCount
proc aVkBufferCreateInfo*( usage: VkBufferUsageFlags
, size: VkDeviceSize = vk0
): VkBufferCreateInfo =
result = VkBufferCreateInfo(sType: VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
, usage: usage
, size: size
)
proc Vkds*[T](t: T): VKDeviceSize {.inline.}= VKDeviceSize t
proc find_memory_with_property*( memory_properties: VkPhysicalDeviceMemoryProperties
, the_type_bits: var uint32
, required_memory_properties: VkMemoryPropertyFlags
): uint32 =
for memory_index in 0 ..< memoryProperties.memoryTypeCount:
let
memory_type_bits = 1 shl memory_index
is_required_memory_type = (the_type_bits and memory_type_bits.uint32)
property_flags: VkMemoryPropertyFlags = memory_properties.memoryTypes[memory_index].propertyFlags
memory_has_required_properties = ( property_flags.int and
required_memory_properties.int
)
# is == 1 correct?
if is_required_memory_type == 1 and
memory_has_required_properties == 1:
return memory_index
quit("no matching memory type could be found:")
proc create_image*( vk_device: VkDevice
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
, width: uint32
, height: uint32
, depth: uint32
, format: VkFormat
, tiling: VkImageTiling
, usage: VkImageUsageFlags
, properties: VkMemoryPropertyFlags
): BoundImage =
var
allocInfo = VkMemoryAllocateInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
image: VKImage
memReqs: VkMemoryRequirements
imageMem: VkDeviceMemory
imageci = VkimageCreateInfo( sType: VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
, imageType: VK_IMAGE_TYPE_2D
, extent: VkExtent3D( width: width
, height: height
, depth: 1
)
, mipLevels: 1
, arrayLayers: 1
, format: format
, tiling: tiling
, initialLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
, usage: usage
, samples: VK_SAMPLE_COUNT_1_BIT
, sharingMode: VK_SHARING_MODE_EXCLUSIVE
#[ , imageCreateMaxMipLevels: 1
, imageCreateMaxArrayLayers: 1
, imageCreateMaxExtent: VkExtent3D( width: width
, height: height
, depth: depth
)
, imageCreateSampleCounts: VK_SAMPLE_COUNT_1_BIT ]#
)
discard vkCreateImage( vk_device
, addr imageci
, nil
, addr image
)
vkGetImageMemoryRequirements( vk_device
, image
, addr memReqs
)
allocInfo.allocationSize = memReqs.size
allocInfo.memoryTypeIndex = find_memory_with_property( gpu_memory_properties
, memReqs.memoryTypeBits
, properties
)
discard vkBindImageMemory( vk_device
, image
, imageMem
, vk0
)
#TODO: This should be per pipeline correct?
proc create_descriptor_pool*( vk_device: VkDevice
): VkDescriptorPool =
var
sizes = [ VkDescriptorPoolSize( typee: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, descriptorCount: 1
)
, VkDescriptorPoolSize( typee: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, descriptorCount: 1
)
]
# Create the global descriptor pool
# All descriptors used in this example are allocated from this pool
descriptorPoolInfo = VkDescriptorPoolCreateInfo( sType : VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
, pNext : nil
, poolSizeCount : 2
, pPoolSizes : addr sizes[0]
, maxSets: 4 # Set the max. number of descriptor sets that can be requested from this pool
)
discard vkCreateDescriptorPool( vk_device
, addr descriptorPoolInfo
, nil
, addr result
)
result
import vulkan
, gpu
, swapchain
, vkTypes
, buffer
, depth_stencil
, render_pass
, uniform_buffer
, graphics_pipeline
type
Vulkan_Record_Object = object of RootObj
command_pool*: VkCommandPool
vk_device*: VkDevice
gpu*: GPU
graphics_queue*: VkQueue
instance*: VkInstance
logicalDevice*: VkDevice
presentQueue*: VkQueue
queue*: VkQueue
swapchain*: Swapchain
semaphores*: Semaphores
pipeline_cache*: VkPipelineCache
frame_buffers*: seq[VkFramebuffer]
currentFrameBuffer*: uint32
instanceExtensions*: cstringarray
ieLen*: int
deviceExtensions*: cstringarray
deLen*: int
framePrepared*: bool
qfi*: QueueFamily
qfps*: seq[VkQueueFamilyProperties]
qni*: uint32
submitInfo*: VkSubmitInfo
draw_command_buffers*: seq[VkCommandBuffer]
fences*: seq[VkFence]
presentCompleteSemaphore*: VkSemaphore
renderCompleteSemaphore*: VkSemaphore
current_viewport*: VkViewport
readyFrame*: bool
master_vertex_buffer*: Buffer
master_index_buffer*: Buffer
master_uniform_buffer*: Buffer
Vulkan_Record* = ref object of Vulkan_Record_Object
var vkGetProc*: proc(procName: cstring): pointer {.cdecl.}
when not defined(vkCustomLoader):
import dynlib
when defined(linux):
const vkDLL = "libvulkan.so.1"
when defined(windows):
const vkDLL = "vulkan-1.dll"
let vkHandleDLL = loadLib(vkDLL)
if isNil(vkHandleDLL):
quit("could not load: " & vkDLL)
let vkGetProcAddress* = cast[proc(s: cstring): pointer {.stdcall.}](symAddr(vkHandleDLL, "vkGetInstanceProcAddr"))
if vkGetProcAddress == nil:
quit("failed to load `vkGetInstanceProcAddr` from " & vkDLL)
vkGetProc = proc(procName: cstring): pointer {.cdecl.} =
when defined(windows):
result = vkGetProcAddress(procName)
if result != nil:
echo "vkGetProc SUCCESS: " & $procName
return
else: quit("vkGetProcAddress(" & $procName & ") is nil")
result = symAddr(vkHandleDLL, procName)
if result == nil:
raiseInvalidLibrary(procName)
proc setVKGetProc*(getProc: proc(procName: cstring): pointer {.cdecl.}) =
vkGetProc = getProc
type
VkHandle* = int64
VkNonDispatchableHandle* = int64
ANativeWindow = ptr object
CAMetalLayer = ptr object
AHardwareBuffer = ptr object
# Enums
const
VK_MAX_PHYSICAL_DEVICE_NAME_SIZE* = 256
VK_UUID_SIZE* = 16
VK_LUID_SIZE* = 8
VK_LUID_SIZE_KHR* = VK_LUID_SIZE
VK_MAX_EXTENSION_NAME_SIZE* = 256
VK_MAX_DESCRIPTION_SIZE* = 256
VK_MAX_MEMORY_TYPES* = 32
VK_MAX_MEMORY_HEAPS* = 16
VK_LOD_CLAMP_NONE* = 1000.0f
VK_REMAINING_MIP_LEVELS* = (not 0'u32)
VK_REMAINING_ARRAY_LAYERS* = (not 0'u32)
VK_WHOLE_SIZE* = (not 0'u64)
VK_ATTACHMENT_UNUSED* = (not 0'u32)
VK_TRUE* = 1
VK_FALSE* = 0
VK_QUEUE_FAMILY_IGNORED* = (not 0'u32)
VK_QUEUE_FAMILY_EXTERNAL* = (not 0'u32) - 1
VK_QUEUE_FAMILY_EXTERNAL_KHR* = VK_QUEUE_FAMILY_EXTERNAL
VK_QUEUE_FAMILY_FOREIGN_EXT* = (not 0'u32) - 2
VK_SUBPASS_EXTERNAL* = (not 0'u32)
VK_MAX_DEVICE_GROUP_SIZE* = 32
VK_MAX_DEVICE_GROUP_SIZE_KHR* = VK_MAX_DEVICE_GROUP_SIZE
VK_MAX_DRIVER_NAME_SIZE* = 256
VK_MAX_DRIVER_NAME_SIZE_KHR* = VK_MAX_DRIVER_NAME_SIZE
VK_MAX_DRIVER_INFO_SIZE* = 256
VK_MAX_DRIVER_INFO_SIZE_KHR* = VK_MAX_DRIVER_INFO_SIZE
VK_SHADER_UNUSED_KHR* = (not 0'u32)
VK_SHADER_UNUSED_NV* = VK_SHADER_UNUSED_KHR
type
VkImageLayout* {.size: int32.sizeof.} = enum
VK_IMAGE_LAYOUT_UNDEFINED = 0
VK_IMAGE_LAYOUT_GENERAL = 1
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7
VK_IMAGE_LAYOUT_PREINITIALIZED = 8
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001
VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002
VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003
VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000
VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001
VkAttachmentLoadOp* {.size: int32.sizeof.} = enum
VK_ATTACHMENT_LOAD_OP_LOAD = 0
VK_ATTACHMENT_LOAD_OP_CLEAR = 1
VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2
VkAttachmentStoreOp* {.size: int32.sizeof.} = enum
VK_ATTACHMENT_STORE_OP_STORE = 0
VK_ATTACHMENT_STORE_OP_DONT_CARE = 1
VkImageType* {.size: int32.sizeof.} = enum
VK_IMAGE_TYPE_1D = 0
VK_IMAGE_TYPE_2D = 1
VK_IMAGE_TYPE_3D = 2
VkImageTiling* {.size: int32.sizeof.} = enum
VK_IMAGE_TILING_OPTIMAL = 0
VK_IMAGE_TILING_LINEAR = 1
VkImageViewType* {.size: int32.sizeof.} = enum
VK_IMAGE_VIEW_TYPE_1D = 0
VK_IMAGE_VIEW_TYPE_2D = 1
VK_IMAGE_VIEW_TYPE_3D = 2
VK_IMAGE_VIEW_TYPE_CUBE = 3
VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4
VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5
VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6
VkCommandBufferLevel* {.size: int32.sizeof.} = enum
VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0
VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1
VkComponentSwizzle* {.size: int32.sizeof.} = enum
VK_COMPONENT_SWIZZLE_IDENTITY = 0
VK_COMPONENT_SWIZZLE_ZERO = 1
VK_COMPONENT_SWIZZLE_ONE = 2
VK_COMPONENT_SWIZZLE_R = 3
VK_COMPONENT_SWIZZLE_G = 4
VK_COMPONENT_SWIZZLE_B = 5
VK_COMPONENT_SWIZZLE_A = 6
VkDescriptorType* {.size: int32.sizeof.} = enum
VK_DESCRIPTOR_TYPE_SAMPLER = 0
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10
VkQueryType* {.size: int32.sizeof.} = enum
VK_QUERY_TYPE_OCCLUSION = 0
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1
VK_QUERY_TYPE_TIMESTAMP = 2
VkBorderColor* {.size: int32.sizeof.} = enum
VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0
VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1
VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2
VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3
VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4
VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5
VkPipelineBindPoint* {.size: int32.sizeof.} = enum
VK_PIPELINE_BIND_POINT_GRAPHICS = 0
VK_PIPELINE_BIND_POINT_COMPUTE = 1
VkPipelineCacheHeaderVersion* {.size: int32.sizeof.} = enum
VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1
VkPrimitiveTopology* {.size: int32.sizeof.} = enum
VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0
VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5
VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9
VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10
VkSharingMode* {.size: int32.sizeof.} = enum
VK_SHARING_MODE_EXCLUSIVE = 0
VK_SHARING_MODE_CONCURRENT = 1
VkIndexType* {.size: int32.sizeof.} = enum
VK_INDEX_TYPE_UINT16 = 0
VK_INDEX_TYPE_UINT32 = 1
VkFilter* {.size: int32.sizeof.} = enum
VK_FILTER_NEAREST = 0
VK_FILTER_LINEAR = 1
VkSamplerMipmapMode* {.size: int32.sizeof.} = enum
VK_SAMPLER_MIPMAP_MODE_NEAREST = 0
VK_SAMPLER_MIPMAP_MODE_LINEAR = 1
VkSamplerAddressMode* {.size: int32.sizeof.} = enum
VK_SAMPLER_ADDRESS_MODE_REPEAT = 0
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3
VkCompareOp* {.size: int32.sizeof.} = enum
VK_COMPARE_OP_NEVER = 0
VK_COMPARE_OP_LESS = 1
VK_COMPARE_OP_EQUAL = 2
VK_COMPARE_OP_LESS_OR_EQUAL = 3
VK_COMPARE_OP_GREATER = 4
VK_COMPARE_OP_NOT_EQUAL = 5
VK_COMPARE_OP_GREATER_OR_EQUAL = 6
VK_COMPARE_OP_ALWAYS = 7
VkPolygonMode* {.size: int32.sizeof.} = enum
VK_POLYGON_MODE_FILL = 0
VK_POLYGON_MODE_LINE = 1
VK_POLYGON_MODE_POINT = 2
VkCullModeFlagBits* {.size: int32.sizeof.} = enum
VK_CULL_MODE_NONE = 0
VK_CULL_MODE_FRONT_BIT = 1
VK_CULL_MODE_BACK_BIT = 2
VK_CULL_MODE_FRONT_AND_BACK = 3
VkFrontFace* {.size: int32.sizeof.} = enum
VK_FRONT_FACE_COUNTER_CLOCKWISE = 0
VK_FRONT_FACE_CLOCKWISE = 1
VkBlendFactor* {.size: int32.sizeof.} = enum
VK_BLEND_FACTOR_ZERO = 0
VK_BLEND_FACTOR_ONE = 1
VK_BLEND_FACTOR_SRC_COLOR = 2
VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3
VK_BLEND_FACTOR_DST_COLOR = 4
VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5
VK_BLEND_FACTOR_SRC_ALPHA = 6
VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7
VK_BLEND_FACTOR_DST_ALPHA = 8
VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9
VK_BLEND_FACTOR_CONSTANT_COLOR = 10
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11
VK_BLEND_FACTOR_CONSTANT_ALPHA = 12
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13
VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14
VK_BLEND_FACTOR_SRC1_COLOR = 15
VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16
VK_BLEND_FACTOR_SRC1_ALPHA = 17
VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
VkBlendOp* {.size: int32.sizeof.} = enum
VK_BLEND_OP_ADD = 0
VK_BLEND_OP_SUBTRACT = 1
VK_BLEND_OP_REVERSE_SUBTRACT = 2
VK_BLEND_OP_MIN = 3
VK_BLEND_OP_MAX = 4
VkStencilOp* {.size: int32.sizeof.} = enum
VK_STENCIL_OP_KEEP = 0
VK_STENCIL_OP_ZERO = 1
VK_STENCIL_OP_REPLACE = 2
VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3
VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4
VK_STENCIL_OP_INVERT = 5
VK_STENCIL_OP_INCREMENT_AND_WRAP = 6
VK_STENCIL_OP_DECREMENT_AND_WRAP = 7
VkLogicOp* {.size: int32.sizeof.} = enum
VK_LOGIC_OP_CLEAR = 0
VK_LOGIC_OP_AND = 1
VK_LOGIC_OP_AND_REVERSE = 2
VK_LOGIC_OP_COPY = 3
VK_LOGIC_OP_AND_INVERTED = 4
VK_LOGIC_OP_NO_OP = 5
VK_LOGIC_OP_XOR = 6
VK_LOGIC_OP_OR = 7
VK_LOGIC_OP_NOR = 8
VK_LOGIC_OP_EQUIVALENT = 9
VK_LOGIC_OP_INVERT = 10
VK_LOGIC_OP_OR_REVERSE = 11
VK_LOGIC_OP_COPY_INVERTED = 12
VK_LOGIC_OP_OR_INVERTED = 13
VK_LOGIC_OP_NAND = 14
VK_LOGIC_OP_SET = 15
VkInternalAllocationType* {.size: int32.sizeof.} = enum
VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0
VkSystemAllocationScope* {.size: int32.sizeof.} = enum
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1
VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4
VkPhysicalDeviceType* {.size: int32.sizeof.} = enum
VK_PHYSICAL_DEVICE_TYPE_OTHER = 0
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1
VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2
VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3
VK_PHYSICAL_DEVICE_TYPE_CPU = 4
VkVertexInputRate* {.size: int32.sizeof.} = enum
VK_VERTEX_INPUT_RATE_VERTEX = 0
VK_VERTEX_INPUT_RATE_INSTANCE = 1
VkFormat* {.size: int32.sizeof.} = enum
VK_FORMAT_UNDEFINED = 0
VK_FORMAT_R4G4_UNORM_PACK8 = 1
VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2
VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3
VK_FORMAT_R5G6B5_UNORM_PACK16 = 4
VK_FORMAT_B5G6R5_UNORM_PACK16 = 5
VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6
VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7
VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8
VK_FORMAT_R8_UNORM = 9
VK_FORMAT_R8_SNORM = 10
VK_FORMAT_R8_USCALED = 11
VK_FORMAT_R8_SSCALED = 12
VK_FORMAT_R8_UINT = 13
VK_FORMAT_R8_SINT = 14
VK_FORMAT_R8_SRGB = 15
VK_FORMAT_R8G8_UNORM = 16
VK_FORMAT_R8G8_SNORM = 17
VK_FORMAT_R8G8_USCALED = 18
VK_FORMAT_R8G8_SSCALED = 19
VK_FORMAT_R8G8_UINT = 20
VK_FORMAT_R8G8_SINT = 21
VK_FORMAT_R8G8_SRGB = 22
VK_FORMAT_R8G8B8_UNORM = 23
VK_FORMAT_R8G8B8_SNORM = 24
VK_FORMAT_R8G8B8_USCALED = 25
VK_FORMAT_R8G8B8_SSCALED = 26
VK_FORMAT_R8G8B8_UINT = 27
VK_FORMAT_R8G8B8_SINT = 28
VK_FORMAT_R8G8B8_SRGB = 29
VK_FORMAT_B8G8R8_UNORM = 30
VK_FORMAT_B8G8R8_SNORM = 31
VK_FORMAT_B8G8R8_USCALED = 32
VK_FORMAT_B8G8R8_SSCALED = 33
VK_FORMAT_B8G8R8_UINT = 34
VK_FORMAT_B8G8R8_SINT = 35
VK_FORMAT_B8G8R8_SRGB = 36
VK_FORMAT_R8G8B8A8_UNORM = 37
VK_FORMAT_R8G8B8A8_SNORM = 38
VK_FORMAT_R8G8B8A8_USCALED = 39
VK_FORMAT_R8G8B8A8_SSCALED = 40
VK_FORMAT_R8G8B8A8_UINT = 41
VK_FORMAT_R8G8B8A8_SINT = 42
VK_FORMAT_R8G8B8A8_SRGB = 43
VK_FORMAT_B8G8R8A8_UNORM = 44
VK_FORMAT_B8G8R8A8_SNORM = 45
VK_FORMAT_B8G8R8A8_USCALED = 46
VK_FORMAT_B8G8R8A8_SSCALED = 47
VK_FORMAT_B8G8R8A8_UINT = 48
VK_FORMAT_B8G8R8A8_SINT = 49
VK_FORMAT_B8G8R8A8_SRGB = 50
VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51
VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52
VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53
VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54
VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55
VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56
VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57
VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58
VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59
VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60
VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61
VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62
VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63
VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64
VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65
VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66
VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67
VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68
VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69
VK_FORMAT_R16_UNORM = 70
VK_FORMAT_R16_SNORM = 71
VK_FORMAT_R16_USCALED = 72
VK_FORMAT_R16_SSCALED = 73
VK_FORMAT_R16_UINT = 74
VK_FORMAT_R16_SINT = 75
VK_FORMAT_R16_SFLOAT = 76
VK_FORMAT_R16G16_UNORM = 77
VK_FORMAT_R16G16_SNORM = 78
VK_FORMAT_R16G16_USCALED = 79
VK_FORMAT_R16G16_SSCALED = 80
VK_FORMAT_R16G16_UINT = 81
VK_FORMAT_R16G16_SINT = 82
VK_FORMAT_R16G16_SFLOAT = 83
VK_FORMAT_R16G16B16_UNORM = 84
VK_FORMAT_R16G16B16_SNORM = 85
VK_FORMAT_R16G16B16_USCALED = 86
VK_FORMAT_R16G16B16_SSCALED = 87
VK_FORMAT_R16G16B16_UINT = 88
VK_FORMAT_R16G16B16_SINT = 89
VK_FORMAT_R16G16B16_SFLOAT = 90
VK_FORMAT_R16G16B16A16_UNORM = 91
VK_FORMAT_R16G16B16A16_SNORM = 92
VK_FORMAT_R16G16B16A16_USCALED = 93
VK_FORMAT_R16G16B16A16_SSCALED = 94
VK_FORMAT_R16G16B16A16_UINT = 95
VK_FORMAT_R16G16B16A16_SINT = 96
VK_FORMAT_R16G16B16A16_SFLOAT = 97
VK_FORMAT_R32_UINT = 98
VK_FORMAT_R32_SINT = 99
VK_FORMAT_R32_SFLOAT = 100
VK_FORMAT_R32G32_UINT = 101
VK_FORMAT_R32G32_SINT = 102
VK_FORMAT_R32G32_SFLOAT = 103
VK_FORMAT_R32G32B32_UINT = 104
VK_FORMAT_R32G32B32_SINT = 105
VK_FORMAT_R32G32B32_SFLOAT = 106
VK_FORMAT_R32G32B32A32_UINT = 107
VK_FORMAT_R32G32B32A32_SINT = 108
VK_FORMAT_R32G32B32A32_SFLOAT = 109
VK_FORMAT_R64_UINT = 110
VK_FORMAT_R64_SINT = 111
VK_FORMAT_R64_SFLOAT = 112
VK_FORMAT_R64G64_UINT = 113
VK_FORMAT_R64G64_SINT = 114
VK_FORMAT_R64G64_SFLOAT = 115
VK_FORMAT_R64G64B64_UINT = 116
VK_FORMAT_R64G64B64_SINT = 117
VK_FORMAT_R64G64B64_SFLOAT = 118
VK_FORMAT_R64G64B64A64_UINT = 119
VK_FORMAT_R64G64B64A64_SINT = 120
VK_FORMAT_R64G64B64A64_SFLOAT = 121
VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123
VK_FORMAT_D16_UNORM = 124
VK_FORMAT_X8_D24_UNORM_PACK32 = 125
VK_FORMAT_D32_SFLOAT = 126
VK_FORMAT_S8_UINT = 127
VK_FORMAT_D16_UNORM_S8_UINT = 128
VK_FORMAT_D24_UNORM_S8_UINT = 129
VK_FORMAT_D32_SFLOAT_S8_UINT = 130
VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131
VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132
VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133
VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134
VK_FORMAT_BC2_UNORM_BLOCK = 135
VK_FORMAT_BC2_SRGB_BLOCK = 136
VK_FORMAT_BC3_UNORM_BLOCK = 137
VK_FORMAT_BC3_SRGB_BLOCK = 138
VK_FORMAT_BC4_UNORM_BLOCK = 139
VK_FORMAT_BC4_SNORM_BLOCK = 140
VK_FORMAT_BC5_UNORM_BLOCK = 141
VK_FORMAT_BC5_SNORM_BLOCK = 142
VK_FORMAT_BC6H_UFLOAT_BLOCK = 143
VK_FORMAT_BC6H_SFLOAT_BLOCK = 144
VK_FORMAT_BC7_UNORM_BLOCK = 145
VK_FORMAT_BC7_SRGB_BLOCK = 146
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152
VK_FORMAT_EAC_R11_UNORM_BLOCK = 153
VK_FORMAT_EAC_R11_SNORM_BLOCK = 154
VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155
VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156
VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157
VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158
VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159
VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160
VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161
VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162
VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163
VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164
VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165
VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166
VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167
VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168
VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169
VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170
VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171
VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172
VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173
VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174
VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175
VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176
VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177
VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178
VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179
VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180
VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181
VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001
VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002
VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013
VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000
VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003
VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004
VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005
VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006
VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007
VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016
VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017
VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026
VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027
VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028
VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029
VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030
VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031
VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032
VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003
VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000
VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001
VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
VkStructureType* {.size: int32.sizeof.} = enum
VK_STRUCTURE_TYPE_APPLICATION_INFO = 0
VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1
VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2
VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3
VK_STRUCTURE_TYPE_SUBMIT_INFO = 4
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5
VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6
VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7
VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8
VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9
VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12
VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14
VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15
VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16
VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19
VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20
VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23
VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24
VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26
VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27
VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28
VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29
VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32
VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35
VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36
VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37
VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38
VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39
VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41
VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43
VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45
VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46
VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47
VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 #added by me
VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000
VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000
VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000
VkSubpassContents* {.size: int32.sizeof.} = enum
VK_SUBPASS_CONTENTS_INLINE = 0
VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1
VkResult* {.size: int32.sizeof.} = enum
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
VK_ERROR_FRAGMENTATION = -1000161000,
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
VK_ERROR_INVALID_SHADER_NV = -1000012000,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
VK_ERROR_SURFACE_LOST_KHR = -1000000000,
VK_ERROR_UNKNOWN = -13,
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
VK_ERROR_TOO_MANY_OBJECTS = -10,
VK_ERROR_INCOMPATIBLE_DRIVER = -9,
VK_ERROR_FEATURE_NOT_PRESENT = -8,
VK_ERROR_EXTENSION_NOT_PRESENT = -7,
VK_ERROR_LAYER_NOT_PRESENT = -6,
VK_ERROR_MEMORY_MAP_FAILED = -5,
VK_ERROR_DEVICE_LOST = -4,
VK_ERROR_INITIALIZATION_FAILED = -3,
VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
VK_ERROR_OUT_OF_HOST_MEMORY = -1,
VK_SUCCESS = 0,
VK_NOT_READY = 1,
VK_TIMEOUT = 2,
VK_EVENT_SET = 3,
VK_EVENT_RESET = 4,
VK_INCOMPLETE = 5,
VK_SUBOPTIMAL_KHR = 1000001003,
VkDynamicState* {.size: int32.sizeof.} = enum
VK_DYNAMIC_STATE_VIEWPORT = 0
VK_DYNAMIC_STATE_SCISSOR = 1
VK_DYNAMIC_STATE_LINE_WIDTH = 2
VK_DYNAMIC_STATE_DEPTH_BIAS = 3
VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4
VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5
VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6
VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7
VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8
VkDescriptorUpdateTemplateType* {.size: int32.sizeof.} = enum
VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0
VkObjectType* {.size: int32.sizeof.} = enum
VK_OBJECT_TYPE_UNKNOWN = 0
VK_OBJECT_TYPE_INSTANCE = 1
VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2
VK_OBJECT_TYPE_DEVICE = 3
VK_OBJECT_TYPE_QUEUE = 4
VK_OBJECT_TYPE_SEMAPHORE = 5
VK_OBJECT_TYPE_COMMAND_BUFFER = 6
VK_OBJECT_TYPE_FENCE = 7
VK_OBJECT_TYPE_DEVICE_MEMORY = 8
VK_OBJECT_TYPE_BUFFER = 9
VK_OBJECT_TYPE_IMAGE = 10
VK_OBJECT_TYPE_EVENT = 11
VK_OBJECT_TYPE_QUERY_POOL = 12
VK_OBJECT_TYPE_BUFFER_VIEW = 13
VK_OBJECT_TYPE_IMAGE_VIEW = 14
VK_OBJECT_TYPE_SHADER_MODULE = 15
VK_OBJECT_TYPE_PIPELINE_CACHE = 16
VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17
VK_OBJECT_TYPE_RENDER_PASS = 18
VK_OBJECT_TYPE_PIPELINE = 19
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20
VK_OBJECT_TYPE_SAMPLER = 21
VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22
VK_OBJECT_TYPE_DESCRIPTOR_SET = 23
VK_OBJECT_TYPE_FRAMEBUFFER = 24
VK_OBJECT_TYPE_COMMAND_POOL = 25
VkQueueFlagBits* {.size: int32.sizeof.} = enum
VK_QUEUE_GRAPHICS_BIT = 1
VK_QUEUE_COMPUTE_BIT = 2
VK_QUEUE_TRANSFER_BIT = 4
VK_QUEUE_SPARSE_BINDING_BIT = 8
VkMemoryPropertyFlagBits* {.size: int32.sizeof.} = enum
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4
VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16
VkMemoryHeapFlagBits* {.size: int32.sizeof.} = enum
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1
VkAccessFlagBits* {.size: int32.sizeof.} = enum
VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1
VK_ACCESS_INDEX_READ_BIT = 2
VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4
VK_ACCESS_UNIFORM_READ_BIT = 8
VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16
VK_ACCESS_SHADER_READ_BIT = 32
VK_ACCESS_SHADER_WRITE_BIT = 64
VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024
VK_ACCESS_TRANSFER_READ_BIT = 2048
VK_ACCESS_TRANSFER_WRITE_BIT = 4096
VK_ACCESS_HOST_READ_BIT = 8192
VK_ACCESS_HOST_WRITE_BIT = 16384
VK_ACCESS_MEMORY_READ_BIT = 32768
VK_ACCESS_MEMORY_WRITE_BIT = 65536
VkBufferUsageFlagBits* {.size: int32.sizeof.} = enum
VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001
VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000
VkBufferCreateFlagBits* {.size: int32.sizeof.} = enum
VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4
VkShaderStageFlagBits* {.size: int32.sizeof.} = enum
VK_SHADER_STAGE_VERTEX_BIT = 1
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4
VK_SHADER_STAGE_GEOMETRY_BIT = 8
VK_SHADER_STAGE_FRAGMENT_BIT = 16
VK_SHADER_STAGE_ALL_GRAPHICS = 31
VK_SHADER_STAGE_COMPUTE_BIT = 32
VK_SHADER_STAGE_ALL = 2147483647
VkImageUsageFlagBits* {.size: int32.sizeof.} = enum
VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1
VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2
VK_IMAGE_USAGE_SAMPLED_BIT = 4
VK_IMAGE_USAGE_STORAGE_BIT = 8
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128
VkImageCreateFlagBits* {.size: int32.sizeof.} = enum
VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16
VkPipelineCreateFlagBits* {.size: int32.sizeof.} = enum
VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1
VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2
VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4
VkColorComponentFlagBits* {.size: int32.sizeof.} = enum
VK_COLOR_COMPONENT_R_BIT = 1
VK_COLOR_COMPONENT_G_BIT = 2
VK_COLOR_COMPONENT_B_BIT = 4
VK_COLOR_COMPONENT_A_BIT = 8
VkFenceCreateFlagBits* {.size: int32.sizeof.} = enum
VK_FENCE_CREATE_SIGNALED_BIT = 1
VkFormatFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512
VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024
VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096
VkQueryControlFlagBits* {.size: int32.sizeof.} = enum
VK_QUERY_CONTROL_PRECISE_BIT = 1
VkQueryResultFlagBits* {.size: int32.sizeof.} = enum
VK_QUERY_RESULT_64_BIT = 1
VK_QUERY_RESULT_WAIT_BIT = 2
VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4
VK_QUERY_RESULT_PARTIAL_BIT = 8
VkCommandBufferUsageFlagBits* {.size: int32.sizeof.} = enum
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4
VkQueryPipelineStatisticFlagBits* {.size: int32.sizeof.} = enum
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64
VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512
VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024
VkImageAspectFlagBits* {.size: int32.sizeof.} = enum
VK_IMAGE_ASPECT_COLOR_BIT = 1
VK_IMAGE_ASPECT_DEPTH_BIT = 2
VK_IMAGE_ASPECT_STENCIL_BIT = 4
VK_IMAGE_ASPECT_METADATA_BIT = 8
VkSparseImageFormatFlagBits* {.size: int32.sizeof.} = enum
VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1
VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2
VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4
VkSparseMemoryBindFlagBits* {.size: int32.sizeof.} = enum
VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1
VkPipelineStageFlagBits* {.size: int32.sizeof.} = enum
VK_PIPELINE_STAGE_NONE = 0 # Provided by VK_KHR_synchronization2
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800
VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000
VK_PIPELINE_STAGE_HOST_BIT = 0x00004000
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000 # Provided by VK_NV_device_generated_commands
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000 # Provided by VK_EXT_conditional_rendering
VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000 # Provided by VK_NV_mesh_shader
VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000 # Provided by VK_NV_mesh_shader
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT = 0x00200000 # Provided by VK_KHR_ray_tracing_pipeline
VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT = 0x00400000 # Provided by VK_KHR_fragment_shading_rate
VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000 # Provided by VK_EXT_fragment_density_map
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000 # Provided by VK_EXT_transform_feedback
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT = 0x02000000 # Provided by VK_KHR_acceleration_structure
# VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT # Provided by VK_NV_ray_tracing
# VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT # Provided by VK_NV_shading_rate_image
# VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT # Provided by VK_NV_ray_tracing
VkCommandPoolCreateFlagBits* {.size: int32.sizeof.} = enum
VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2
VkCommandPoolResetFlagBits* {.size: int32.sizeof.} = enum
VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1
VkCommandBufferResetFlagBits* {.size: int32.sizeof.} = enum
VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1
VkSampleCountFlagBits* {.size: int32.sizeof.} = enum
VK_SAMPLE_COUNT_1_BIT = 1
VK_SAMPLE_COUNT_2_BIT = 2
VK_SAMPLE_COUNT_4_BIT = 4
VK_SAMPLE_COUNT_8_BIT = 8
VK_SAMPLE_COUNT_16_BIT = 16
VK_SAMPLE_COUNT_32_BIT = 32
VK_SAMPLE_COUNT_64_BIT = 64
VkAttachmentDescriptionFlagBits* {.size: int32.sizeof.} = enum
VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1
VkStencilFaceFlagBits* {.size: int32.sizeof.} = enum
VK_STENCIL_FACE_FRONT_BIT = 1
VK_STENCIL_FACE_BACK_BIT = 2
VK_STENCIL_FACE_FRONT_AND_BACK = 3
VkDescriptorPoolCreateFlagBits* {.size: int32.sizeof.} = enum
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1
VkDependencyFlagBits* {.size: int32.sizeof.} = enum
VK_DEPENDENCY_BY_REGION_BIT = 1
VkSemaphoreType* {.size: int32.sizeof.} = enum
VK_SEMAPHORE_TYPE_BINARY = 0
VK_SEMAPHORE_TYPE_TIMELINE = 1
VkSemaphoreWaitFlagBits* {.size: int32.sizeof.} = enum
VK_SEMAPHORE_WAIT_ANY_BIT = 1
VkPresentModeKHR* {.size: int32.sizeof.} = enum
VK_PRESENT_MODE_IMMEDIATE_KHR = 0
VK_PRESENT_MODE_MAILBOX_KHR = 1
VK_PRESENT_MODE_FIFO_KHR = 2
VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3
VkColorSpaceKHR* {.size: int32.sizeof.} = enum
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0
VkDisplayPlaneAlphaFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1
VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2
VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4
VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8
VkCompositeAlphaFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1
VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2
VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4
VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8
VkSurfaceTransformFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1
VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2
VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4
VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8
VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16
VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32
VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64
VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128
VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256
VkSwapchainImageUsageFlagBitsANDROID* {.size: int32.sizeof.} = enum
VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID = 1
VkTimeDomainEXT* {.size: int32.sizeof.} = enum
VK_TIME_DOMAIN_DEVICE_EXT = 0
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2
VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3
VkDebugReportFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1
VK_DEBUG_REPORT_WARNING_BIT_EXT = 2
VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4
VK_DEBUG_REPORT_ERROR_BIT_EXT = 8
VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16
VkDebugReportObjectTypeEXT* {.size: int32.sizeof.} = enum
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0
VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1
VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3
VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4
VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5
VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6
VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8
VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9
VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10
VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11
VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12
VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13
VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14
VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17
VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20
VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23
VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24
VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25
VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26
VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27
VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30
VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33
VkRasterizationOrderAMD* {.size: int32.sizeof.} = enum
VK_RASTERIZATION_ORDER_STRICT_AMD = 0
VK_RASTERIZATION_ORDER_RELAXED_AMD = 1
VkExternalMemoryHandleTypeFlagBitsNV* {.size: int32.sizeof.} = enum
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8
VkExternalMemoryFeatureFlagBitsNV* {.size: int32.sizeof.} = enum
VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1
VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2
VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4
VkValidationCheckEXT* {.size: int32.sizeof.} = enum
VK_VALIDATION_CHECK_ALL_EXT = 0
VK_VALIDATION_CHECK_SHADERS_EXT = 1
VkValidationFeatureEnableEXT* {.size: int32.sizeof.} = enum
VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0
VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1
VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3
VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4
VkValidationFeatureDisableEXT* {.size: int32.sizeof.} = enum
VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0
VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1
VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2
VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3
VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4
VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5
VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6
VkSubgroupFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_SUBGROUP_FEATURE_BASIC_BIT = 1
VK_SUBGROUP_FEATURE_VOTE_BIT = 2
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4
VK_SUBGROUP_FEATURE_BALLOT_BIT = 8
VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32
VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64
VK_SUBGROUP_FEATURE_QUAD_BIT = 128
VkIndirectCommandsLayoutUsageFlagBitsNV* {.size: int32.sizeof.} = enum
VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1
VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2
VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4
VkIndirectStateFlagBitsNV* {.size: int32.sizeof.} = enum
VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1
VkIndirectCommandsTokenTypeNV* {.size: int32.sizeof.} = enum
VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0
VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1
VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2
VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3
VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7
VkExternalMemoryHandleTypeFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64
VkExternalMemoryFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1
VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2
VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4
VkExternalSemaphoreHandleTypeFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16
VkExternalSemaphoreFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1
VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2
VkSemaphoreImportFlagBits* {.size: int32.sizeof.} = enum
VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1
VkExternalFenceHandleTypeFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1
VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2
VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8
VkExternalFenceFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1
VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2
VkFenceImportFlagBits* {.size: int32.sizeof.} = enum
VK_FENCE_IMPORT_TEMPORARY_BIT = 1
VkSurfaceCounterFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_SURFACE_COUNTER_VBLANK_EXT = 1
VkDisplayPowerStateEXT* {.size: int32.sizeof.} = enum
VK_DISPLAY_POWER_STATE_OFF_EXT = 0
VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1
VK_DISPLAY_POWER_STATE_ON_EXT = 2
VkDeviceEventTypeEXT* {.size: int32.sizeof.} = enum
VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0
VkDisplayEventTypeEXT* {.size: int32.sizeof.} = enum
VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0
VkPeerMemoryFeatureFlagBits* {.size: int32.sizeof.} = enum
VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1
VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2
VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4
VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8
VkMemoryAllocateFlagBits* {.size: int32.sizeof.} = enum
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001
VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002
VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004
VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
VkDeviceGroupPresentModeFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1
VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2
VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4
VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8
VkViewportCoordinateSwizzleNV* {.size: int32.sizeof.} = enum
VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0
VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1
VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2
VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3
VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4
VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5
VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6
VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7
VkDiscardRectangleModeEXT* {.size: int32.sizeof.} = enum
VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0
VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1
VkPointClippingBehavior* {.size: int32.sizeof.} = enum
VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0
VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1
VkSamplerReductionMode* {.size: int32.sizeof.} = enum
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0
VK_SAMPLER_REDUCTION_MODE_MIN = 1
VK_SAMPLER_REDUCTION_MODE_MAX = 2
VkTessellationDomainOrigin* {.size: int32.sizeof.} = enum
VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0
VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1
VkSamplerYcbcrModelConversion* {.size: int32.sizeof.} = enum
VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4
VkSamplerYcbcrRange* {.size: int32.sizeof.} = enum
VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0
VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1
VkChromaLocation* {.size: int32.sizeof.} = enum
VK_CHROMA_LOCATION_COSITED_EVEN = 0
VK_CHROMA_LOCATION_MIDPOINT = 1
VkBlendOverlapEXT* {.size: int32.sizeof.} = enum
VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0
VK_BLEND_OVERLAP_DISJOINT_EXT = 1
VK_BLEND_OVERLAP_CONJOINT_EXT = 2
VkCoverageModulationModeNV* {.size: int32.sizeof.} = enum
VK_COVERAGE_MODULATION_MODE_NONE_NV = 0
VK_COVERAGE_MODULATION_MODE_RGB_NV = 1
VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2
VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3
VkCoverageReductionModeNV* {.size: int32.sizeof.} = enum
VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0
VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1
VkValidationCacheHeaderVersionEXT* {.size: int32.sizeof.} = enum
VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1
VkShaderInfoTypeAMD* {.size: int32.sizeof.} = enum
VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0
VK_SHADER_INFO_TYPE_BINARY_AMD = 1
VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2
VkQueueGlobalPriorityEXT* {.size: int32.sizeof.} = enum
VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128
VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256
VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512
VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024
VkDebugUtilsMessageSeverityFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1
VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096
VkDebugUtilsMessageTypeFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4
VkConservativeRasterizationModeEXT* {.size: int32.sizeof.} = enum
VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0
VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1
VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2
VkDescriptorBindingFlagBits* {.size: int32.sizeof.} = enum
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8
VkVendorId* {.size: int32.sizeof.} = enum
VK_VENDOR_ID_VIV = 65537
VK_VENDOR_ID_VSI = 65538
VK_VENDOR_ID_KAZAN = 65539
VK_VENDOR_ID_CODEPLAY = 65540
VK_VENDOR_ID_MESA = 65541
VkDriverId* {.size: int32.sizeof.} = enum
VK_DRIVER_ID_AMD_PROPRIETARY = 1
VK_DRIVER_ID_AMD_OPEN_SOURCE = 2
VK_DRIVER_ID_MESA_RADV = 3
VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4
VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5
VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6
VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7
VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8
VK_DRIVER_ID_ARM_PROPRIETARY = 9
VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10
VK_DRIVER_ID_GGP_PROPRIETARY = 11
VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12
VK_DRIVER_ID_MESA_LLVMPIPE = 13
VK_DRIVER_ID_MOLTENVK = 14
VkConditionalRenderingFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1
VkResolveModeFlagBits* {.size: int32.sizeof.} = enum
VK_RESOLVE_MODE_NONE = 0
VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1
VK_RESOLVE_MODE_AVERAGE_BIT = 2
VK_RESOLVE_MODE_MIN_BIT = 4
VK_RESOLVE_MODE_MAX_BIT = 8
VkShadingRatePaletteEntryNV* {.size: int32.sizeof.} = enum
VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0
VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1
VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2
VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3
VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10
VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11
VkCoarseSampleOrderTypeNV* {.size: int32.sizeof.} = enum
VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0
VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1
VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2
VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3
VkGeometryInstanceFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1
VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2
VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4
VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8
VkGeometryFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_GEOMETRY_OPAQUE_BIT_KHR = 1
VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2
VkBuildAccelerationStructureFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8
VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16
VkCopyAccelerationStructureModeKHR* {.size: int32.sizeof.} = enum
VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0
VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1
VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2
VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3
VkAccelerationStructureTypeKHR* {.size: int32.sizeof.} = enum
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1
VkGeometryTypeKHR* {.size: int32.sizeof.} = enum
VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0
VK_GEOMETRY_TYPE_AABBS_KHR = 1
VkAccelerationStructureMemoryRequirementsTypeKHR* {.size: int32.sizeof.} = enum
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2
VkAccelerationStructureBuildTypeKHR* {.size: int32.sizeof.} = enum
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2
VkRayTracingShaderGroupTypeKHR* {.size: int32.sizeof.} = enum
VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0
VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1
VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2
VkMemoryOverallocationBehaviorAMD* {.size: int32.sizeof.} = enum
VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0
VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1
VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2
VkScopeNV* {.size: int32.sizeof.} = enum
VK_SCOPE_DEVICE_NV = 1
VK_SCOPE_WORKGROUP_NV = 2
VK_SCOPE_SUBGROUP_NV = 3
VK_SCOPE_QUEUE_FAMILY_NV = 5
VkComponentTypeNV* {.size: int32.sizeof.} = enum
VK_COMPONENT_TYPE_FLOAT16_NV = 0
VK_COMPONENT_TYPE_FLOAT32_NV = 1
VK_COMPONENT_TYPE_FLOAT64_NV = 2
VK_COMPONENT_TYPE_SINT8_NV = 3
VK_COMPONENT_TYPE_SINT16_NV = 4
VK_COMPONENT_TYPE_SINT32_NV = 5
VK_COMPONENT_TYPE_SINT64_NV = 6
VK_COMPONENT_TYPE_UINT8_NV = 7
VK_COMPONENT_TYPE_UINT16_NV = 8
VK_COMPONENT_TYPE_UINT32_NV = 9
VK_COMPONENT_TYPE_UINT64_NV = 10
VkDeviceDiagnosticsConfigFlagBitsNV* {.size: int32.sizeof.} = enum
VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1
VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2
VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4
VkPipelineCreationFeedbackFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1
VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2
VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4
VkFullScreenExclusiveEXT* {.size: int32.sizeof.} = enum
VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0
VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1
VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2
VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3
VkPerformanceCounterScopeKHR* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0
VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1
VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2
VkPerformanceCounterUnitKHR* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0
VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1
VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2
VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3
VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4
VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5
VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6
VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7
VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8
VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9
VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10
VkPerformanceCounterStorageKHR* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0
VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1
VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2
VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3
VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4
VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5
VkPerformanceCounterDescriptionFlagBitsKHR* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1
VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2
VkPerformanceConfigurationTypeINTEL* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0
VkQueryPoolSamplingModeINTEL* {.size: int32.sizeof.} = enum
VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0
VkPerformanceOverrideTypeINTEL* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0
VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1
VkPerformanceParameterTypeINTEL* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0
VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1
VkPerformanceValueTypeINTEL* {.size: int32.sizeof.} = enum
VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0
VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1
VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2
VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3
VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4
VkShaderFloatControlsIndependence* {.size: int32.sizeof.} = enum
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2
VkPipelineExecutableStatisticFormatKHR* {.size: int32.sizeof.} = enum
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3
VkLineRasterizationModeEXT* {.size: int32.sizeof.} = enum
VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1
VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3
VkToolPurposeFlagBitsEXT* {.size: int32.sizeof.} = enum
VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1
VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2
VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4
VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8
VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16
# Types
type
Display* = ptr object
VisualID* = ptr object
Window* = ptr object
RROutput* = ptr object
wl_display* = ptr object
wl_surface* = ptr object
HINSTANCE* = ptr object
HWND* = ptr object
HMONITOR* = ptr object
HANDLE* = ptr object
SECURITY_ATTRIBUTES* = ptr object
DWORD* = ptr object
LPCWSTR* = ptr object
xcb_connection_t* = ptr object
xcb_visualid_t* = ptr object
xcb_window_t* = ptr object
IDirectFB* = ptr object
IDirectFBSurface* = ptr object
zx_handle_t* = ptr object
GgpStreamDescriptor* = ptr object
GgpFrameToken* = ptr object
template vkMakeVersion*(major, minor, patch: untyped): untyped =
(((major) shl 22) or ((minor) shl 12) or (patch))
template vkVersionMajor*(version: untyped): untyped =
((uint32)(version) shr 22)
template vkVersionMinor*(version: untyped): untyped =
(((uint32)(version) shr 12) and 0x000003FF)
template vkVersionPatch*(version: untyped): untyped =
((uint32)(version) and 0x00000FFF)
const vkApiVersion1_0* = vkMakeVersion(1, 0, 0)
const vkApiVersion1_1* = vkMakeVersion(1, 1, 0)
const vkApiVersion1_2* = vkMakeVersion(1, 2, 0)
const vkApiVersion1_3* = vkMakeVersion(1, 3, 0)
type
VkSampleMask* = distinct uint32
VkBool32* = distinct uint32
VkFlags* = distinct uint32
VkDeviceSize* = distinct uint64
VkDeviceAddress* = distinct uint64
VkFramebufferCreateFlags* = distinct VkFlags
VkQueryPoolCreateFlags* = distinct VkFlags
VkRenderPassCreateFlags* = distinct VkFlags
VkSamplerCreateFlags* = distinct VkFlags
VkPipelineLayoutCreateFlags* = distinct VkFlags
VkPipelineCacheCreateFlags* = distinct VkFlags
VkPipelineDepthStencilStateCreateFlags* = distinct VkFlags
VkPipelineDynamicStateCreateFlags* = distinct VkFlags
VkPipelineColorBlendStateCreateFlags* = distinct VkFlags
VkPipelineMultisampleStateCreateFlags* = distinct VkFlags
VkPipelineRasterizationStateCreateFlags* = distinct VkFlags
VkPipelineViewportStateCreateFlags* = distinct VkFlags
VkPipelineTessellationStateCreateFlags* = distinct VkFlags
VkPipelineInputAssemblyStateCreateFlags* = distinct VkFlags
VkPipelineVertexInputStateCreateFlags* = distinct VkFlags
VkPipelineShaderStageCreateFlags* = distinct VkFlags
VkDescriptorSetLayoutCreateFlags* = distinct VkFlags
VkBufferViewCreateFlags* = distinct VkFlags
VkInstanceCreateFlags* = distinct VkFlags
VkDeviceCreateFlags* = distinct VkFlags
VkDeviceQueueCreateFlags* = distinct VkFlags
VkQueueFlags* = distinct VkFlags
VkMemoryPropertyFlags* = distinct VkFlags
VkMemoryHeapFlags* = distinct VkFlags
VkAccessFlags* = distinct VkFlags
VkBufferUsageFlags* = distinct VkFlags
VkBufferCreateFlags* = distinct VkFlags
VkShaderStageFlags* = distinct VkFlags
VkImageUsageFlags* = distinct VkFlags
VkImageCreateFlags* = distinct VkFlags
VkImageViewCreateFlags* = distinct VkFlags
VkPipelineCreateFlags* = distinct VkFlags
VkColorComponentFlags* = distinct VkFlags
VkFenceCreateFlags* = distinct VkFlags
VkSemaphoreCreateFlags* = distinct VkFlags
VkFormatFeatureFlags* = distinct VkFlags
VkQueryControlFlags* = distinct VkFlags
VkQueryResultFlags* = distinct VkFlags
VkShaderModuleCreateFlags* = distinct VkFlags
VkEventCreateFlags* = distinct VkFlags
VkCommandPoolCreateFlags* = distinct VkFlags
VkCommandPoolResetFlags* = distinct VkFlags
VkCommandBufferResetFlags* = distinct VkFlags
VkCommandBufferUsageFlags* = distinct VkFlags
VkQueryPipelineStatisticFlags* = distinct VkFlags
VkMemoryMapFlags* = distinct VkFlags
VkImageAspectFlags* = distinct VkFlags
VkSparseMemoryBindFlags* = distinct VkFlags
VkSparseImageFormatFlags* = distinct VkFlags
VkSubpassDescriptionFlags* = distinct VkFlags
VkPipelineStageFlags* = distinct VkFlags
VkSampleCountFlags* = distinct VkFlags
VkAttachmentDescriptionFlags* = distinct VkFlags
VkStencilFaceFlags* = distinct VkFlags
VkCullModeFlags* = distinct VkFlags
VkDescriptorPoolCreateFlags* = distinct VkFlags
VkDescriptorPoolResetFlags* = distinct VkFlags
VkDependencyFlags* = distinct VkFlags
VkSubgroupFeatureFlags* = distinct VkFlags
VkIndirectCommandsLayoutUsageFlagsNV* = distinct VkFlags
VkIndirectStateFlagsNV* = distinct VkFlags
VkGeometryFlagsKHR* = distinct VkFlags
VkGeometryFlagsNV* = VkGeometryFlagsKHR
VkGeometryInstanceFlagsKHR* = distinct VkFlags
VkGeometryInstanceFlagsNV* = VkGeometryInstanceFlagsKHR
VkBuildAccelerationStructureFlagsKHR* = distinct VkFlags
VkBuildAccelerationStructureFlagsNV* = VkBuildAccelerationStructureFlagsKHR
VkPrivateDataSlotCreateFlagsEXT* = distinct VkFlags
VkDescriptorUpdateTemplateCreateFlags* = distinct VkFlags
VkDescriptorUpdateTemplateCreateFlagsKHR* = VkDescriptorUpdateTemplateCreateFlags
VkPipelineCreationFeedbackFlagsEXT* = distinct VkFlags
VkPerformanceCounterDescriptionFlagsKHR* = distinct VkFlags
VkAcquireProfilingLockFlagsKHR* = distinct VkFlags
VkSemaphoreWaitFlags* = distinct VkFlags
VkSemaphoreWaitFlagsKHR* = VkSemaphoreWaitFlags
VkPipelineCompilerControlFlagsAMD* = distinct VkFlags
VkShaderCorePropertiesFlagsAMD* = distinct VkFlags
VkDeviceDiagnosticsConfigFlagsNV* = distinct VkFlags
VkCompositeAlphaFlagsKHR* = distinct VkFlags
VkDisplayPlaneAlphaFlagsKHR* = distinct VkFlags
VkSurfaceTransformFlagsKHR* = distinct VkFlags
VkSwapchainCreateFlagsKHR* = distinct VkFlags
VkDisplayModeCreateFlagsKHR* = distinct VkFlags
VkDisplaySurfaceCreateFlagsKHR* = distinct VkFlags
VkAndroidSurfaceCreateFlagsKHR* = distinct VkFlags
VkViSurfaceCreateFlagsNN* = distinct VkFlags
VkWaylandSurfaceCreateFlagsKHR* = distinct VkFlags
VkWin32SurfaceCreateFlagsKHR* = distinct VkFlags
VkXlibSurfaceCreateFlagsKHR* = distinct VkFlags
VkXcbSurfaceCreateFlagsKHR* = distinct VkFlags
VkDirectFBSurfaceCreateFlagsEXT* = distinct VkFlags
VkIOSSurfaceCreateFlagsMVK* = distinct VkFlags
VkMacOSSurfaceCreateFlagsMVK* = distinct VkFlags
VkMetalSurfaceCreateFlagsEXT* = distinct VkFlags
VkImagePipeSurfaceCreateFlagsFUCHSIA* = distinct VkFlags
VkStreamDescriptorSurfaceCreateFlagsGGP* = distinct VkFlags
VkHeadlessSurfaceCreateFlagsEXT* = distinct VkFlags
VkPeerMemoryFeatureFlags* = distinct VkFlags
VkPeerMemoryFeatureFlagsKHR* = VkPeerMemoryFeatureFlags
VkMemoryAllocateFlags* = distinct VkFlags
VkMemoryAllocateFlagsKHR* = VkMemoryAllocateFlags
VkDeviceGroupPresentModeFlagsKHR* = distinct VkFlags
VkDebugReportFlagsEXT* = distinct VkFlags
VkCommandPoolTrimFlags* = distinct VkFlags
VkCommandPoolTrimFlagsKHR* = VkCommandPoolTrimFlags
VkExternalMemoryHandleTypeFlagsNV* = distinct VkFlags
VkExternalMemoryFeatureFlagsNV* = distinct VkFlags
VkExternalMemoryHandleTypeFlags* = distinct VkFlags
VkExternalMemoryHandleTypeFlagsKHR* = VkExternalMemoryHandleTypeFlags
VkExternalMemoryFeatureFlags* = distinct VkFlags
VkExternalMemoryFeatureFlagsKHR* = VkExternalMemoryFeatureFlags
VkExternalSemaphoreHandleTypeFlags* = distinct VkFlags
VkExternalSemaphoreHandleTypeFlagsKHR* = VkExternalSemaphoreHandleTypeFlags
VkExternalSemaphoreFeatureFlags* = distinct VkFlags
VkExternalSemaphoreFeatureFlagsKHR* = VkExternalSemaphoreFeatureFlags
VkSemaphoreImportFlags* = distinct VkFlags
VkSemaphoreImportFlagsKHR* = VkSemaphoreImportFlags
VkExternalFenceHandleTypeFlags* = distinct VkFlags
VkExternalFenceHandleTypeFlagsKHR* = VkExternalFenceHandleTypeFlags
VkExternalFenceFeatureFlags* = distinct VkFlags
VkExternalFenceFeatureFlagsKHR* = VkExternalFenceFeatureFlags
VkFenceImportFlags* = distinct VkFlags
VkFenceImportFlagsKHR* = VkFenceImportFlags
VkSurfaceCounterFlagsEXT* = distinct VkFlags
VkPipelineViewportSwizzleStateCreateFlagsNV* = distinct VkFlags
VkPipelineDiscardRectangleStateCreateFlagsEXT* = distinct VkFlags
VkPipelineCoverageToColorStateCreateFlagsNV* = distinct VkFlags
VkPipelineCoverageModulationStateCreateFlagsNV* = distinct VkFlags
VkPipelineCoverageReductionStateCreateFlagsNV* = distinct VkFlags
VkValidationCacheCreateFlagsEXT* = distinct VkFlags
VkDebugUtilsMessageSeverityFlagsEXT* = distinct VkFlags
VkDebugUtilsMessageTypeFlagsEXT* = distinct VkFlags
VkDebugUtilsMessengerCreateFlagsEXT* = distinct VkFlags
VkDebugUtilsMessengerCallbackDataFlagsEXT* = distinct VkFlags
VkPipelineRasterizationConservativeStateCreateFlagsEXT* = distinct VkFlags
VkDescriptorBindingFlags* = distinct VkFlags
VkDescriptorBindingFlagsEXT* = VkDescriptorBindingFlags
VkConditionalRenderingFlagsEXT* = distinct VkFlags
VkResolveModeFlags* = distinct VkFlags
VkResolveModeFlagsKHR* = VkResolveModeFlags
VkPipelineRasterizationStateStreamCreateFlagsEXT* = distinct VkFlags
VkPipelineRasterizationDepthClipStateCreateFlagsEXT* = distinct VkFlags
VkSwapchainImageUsageFlagsANDROID* = distinct VkFlags
VkToolPurposeFlagsEXT* = distinct VkFlags
VkInstance* = distinct VkHandle
VkPhysicalDevice* = distinct VkHandle
VkDevice* = distinct VkHandle
VkQueue* = distinct VkHandle
VkCommandBuffer* = distinct VkHandle
VkDeviceMemory* = distinct VkNonDispatchableHandle
VkCommandPool* = distinct VkNonDispatchableHandle
VkBuffer* = distinct VkNonDispatchableHandle
VkBufferView* = distinct VkNonDispatchableHandle
VkImage* = distinct VkNonDispatchableHandle
VkImageView* = distinct VkNonDispatchableHandle
VkShaderModule* = distinct VkNonDispatchableHandle
VkPipeline* = distinct VkNonDispatchableHandle
VkPipelineLayout* = distinct VkNonDispatchableHandle
VkSampler* = distinct VkNonDispatchableHandle
VkDescriptorSet* = distinct VkNonDispatchableHandle
VkDescriptorSetLayout* = distinct VkNonDispatchableHandle
VkDescriptorPool* = distinct VkNonDispatchableHandle
VkFence* = distinct VkNonDispatchableHandle
VkSemaphore* = distinct VkNonDispatchableHandle
VkEvent* = distinct VkNonDispatchableHandle
VkQueryPool* = distinct VkNonDispatchableHandle
VkFramebuffer* = distinct VkNonDispatchableHandle
VkRenderPass* = distinct VkNonDispatchableHandle
VkPipelineCache* = distinct VkNonDispatchableHandle
VkIndirectCommandsLayoutNV* = distinct VkNonDispatchableHandle
VkDescriptorUpdateTemplate* = distinct VkNonDispatchableHandle
VkDescriptorUpdateTemplateKHR* = VkDescriptorUpdateTemplate
VkSamplerYcbcrConversion* = distinct VkNonDispatchableHandle
VkSamplerYcbcrConversionKHR* = VkSamplerYcbcrConversion
VkValidationCacheEXT* = distinct VkNonDispatchableHandle
VkAccelerationStructureKHR* = distinct VkNonDispatchableHandle
VkAccelerationStructureNV* = VkAccelerationStructureKHR
VkPerformanceConfigurationINTEL* = distinct VkNonDispatchableHandle
VkDeferredOperationKHR* = distinct VkNonDispatchableHandle
VkPrivateDataSlotEXT* = distinct VkNonDispatchableHandle
VkDisplayKHR* = distinct VkNonDispatchableHandle
VkDisplayModeKHR* = distinct VkNonDispatchableHandle
VkSurfaceKHR* = distinct VkNonDispatchableHandle
VkSwapchainKHR* = distinct VkNonDispatchableHandle
VkDebugReportCallbackEXT* = distinct VkNonDispatchableHandle
VkDebugUtilsMessengerEXT* = distinct VkNonDispatchableHandle
VkDescriptorUpdateTemplateTypeKHR* = VkDescriptorUpdateTemplateType
VkPointClippingBehaviorKHR* = VkPointClippingBehavior
VkResolveModeFlagBitsKHR* = VkResolveModeFlagBits
VkDescriptorBindingFlagBitsEXT* = VkDescriptorBindingFlagBits
VkSemaphoreTypeKHR* = VkSemaphoreType
VkGeometryFlagBitsNV* = VkGeometryFlagBitsKHR
VkGeometryInstanceFlagBitsNV* = VkGeometryInstanceFlagBitsKHR
VkBuildAccelerationStructureFlagBitsNV* = VkBuildAccelerationStructureFlagBitsKHR
VkCopyAccelerationStructureModeNV* = VkCopyAccelerationStructureModeKHR
VkAccelerationStructureTypeNV* = VkAccelerationStructureTypeKHR
VkGeometryTypeNV* = VkGeometryTypeKHR
VkRayTracingShaderGroupTypeNV* = VkRayTracingShaderGroupTypeKHR
VkAccelerationStructureMemoryRequirementsTypeNV* = VkAccelerationStructureMemoryRequirementsTypeKHR
VkSemaphoreWaitFlagBitsKHR* = VkSemaphoreWaitFlagBits
VkExternalMemoryHandleTypeFlagBitsKHR* = VkExternalMemoryHandleTypeFlagBits
VkExternalMemoryFeatureFlagBitsKHR* = VkExternalMemoryFeatureFlagBits
VkExternalSemaphoreHandleTypeFlagBitsKHR* = VkExternalSemaphoreHandleTypeFlagBits
VkExternalSemaphoreFeatureFlagBitsKHR* = VkExternalSemaphoreFeatureFlagBits
VkSemaphoreImportFlagBitsKHR* = VkSemaphoreImportFlagBits
VkExternalFenceHandleTypeFlagBitsKHR* = VkExternalFenceHandleTypeFlagBits
VkExternalFenceFeatureFlagBitsKHR* = VkExternalFenceFeatureFlagBits
VkFenceImportFlagBitsKHR* = VkFenceImportFlagBits
VkPeerMemoryFeatureFlagBitsKHR* = VkPeerMemoryFeatureFlagBits
VkMemoryAllocateFlagBitsKHR* = VkMemoryAllocateFlagBits
VkTessellationDomainOriginKHR* = VkTessellationDomainOrigin
VkSamplerYcbcrModelConversionKHR* = VkSamplerYcbcrModelConversion
VkSamplerYcbcrRangeKHR* = VkSamplerYcbcrRange
VkChromaLocationKHR* = VkChromaLocation
VkSamplerReductionModeEXT* = VkSamplerReductionMode
VkShaderFloatControlsIndependenceKHR* = VkShaderFloatControlsIndependence
VkDriverIdKHR* = VkDriverId
PFN_vkInternalAllocationNotification* = proc(pUserData: pointer; size: csize_t; allocationType: VkInternalAllocationType; allocationScope: VkSystemAllocationScope) {.cdecl.}
PFN_vkInternalFreeNotification* = proc(pUserData: pointer; size: csize_t; allocationType: VkInternalAllocationType; allocationScope: VkSystemAllocationScope) {.cdecl.}
PFN_vkReallocationFunction* = proc(pUserData: pointer; pOriginal: pointer; size: csize_t; alignment: csize_t; allocationScope: VkSystemAllocationScope): pointer {.cdecl.}
PFN_vkAllocationFunction* = proc(pUserData: pointer; size: csize_t; alignment: csize_t; allocationScope: VkSystemAllocationScope): pointer {.cdecl.}
PFN_vkFreeFunction* = proc(pUserData: pointer; pMemory: pointer) {.cdecl.}
PFN_vkVoidFunction* = proc() {.cdecl.}
PFN_vkDebugReportCallbackEXT* = proc(flags: VkDebugReportFlagsEXT; objectType: VkDebugReportObjectTypeEXT; cbObject: uint64; location: csize_t; messageCode: int32; pLayerPrefix: cstring; pMessage: cstring; pUserData: pointer): VkBool32 {.cdecl.}
PFN_vkDebugUtilsMessengerCallbackEXT* = proc(messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: VkDebugUtilsMessengerCallbackDataEXT, userData: pointer): VkBool32 {.cdecl.}
VkOffset2D* = object
x*: int32
y*: int32
VkOffset3D* = object
x*: int32
y*: int32
z*: int32
VkExtent2D* = object
width*: uint32
height*: uint32
VkExtent3D* = object
width*: uint32
height*: uint32
depth*: uint32
VkViewport* = object
x*: float32
y*: float32
width*: float32
height*: float32
minDepth*: float32
maxDepth*: float32
VkRect2D* = object
offset*: VkOffset2D
extent*: VkExtent2D
VkClearRect* = object
rect*: VkRect2D
baseArrayLayer*: uint32
layerCount*: uint32
VkComponentMapping* = object
r*: VkComponentSwizzle
g*: VkComponentSwizzle
b*: VkComponentSwizzle
a*: VkComponentSwizzle
VkPhysicalDeviceProperties* = object
apiVersion*: uint32
driverVersion*: uint32
vendorID*: uint32
deviceID*: uint32
deviceType*: VkPhysicalDeviceType
deviceName*: array[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE, char]
pipelineCacheUUID*: array[VK_UUID_SIZE, uint8]
limits*: VkPhysicalDeviceLimits
sparseProperties*: VkPhysicalDeviceSparseProperties
VkExtensionProperties* = object
extensionName*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
specVersion*: uint32
VkLayerProperties* = object
layerName*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
specVersion*: uint32
implementationVersion*: uint32
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
VkApplicationInfo* = object
sType*: VkStructureType
pNext*: pointer
pApplicationName*: cstring
applicationVersion*: uint32
pEngineName*: cstring
engineVersion*: uint32
apiVersion*: uint32
VkAllocationCallbacks* = object
pUserData*: pointer
pfnAllocation*: PFN_vkAllocationFunction
pfnReallocation*: PFN_vkReallocationFunction
pfnFree*: PFN_vkFreeFunction
pfnInternalAllocation*: PFN_vkInternalAllocationNotification
pfnInternalFree*: PFN_vkInternalFreeNotification
VkDeviceQueueCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDeviceQueueCreateFlags
queueFamilyIndex*: uint32
queueCount*: uint32
pQueuePriorities*: ptr float32
VkDeviceCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDeviceCreateFlags
queueCreateInfoCount*: uint32
pQueueCreateInfos*: ptr VkDeviceQueueCreateInfo
enabledLayerCount*: uint32
ppEnabledLayerNames*: cstringArray
enabledExtensionCount*: uint32
ppEnabledExtensionNames*: cstringArray
pEnabledFeatures*: ptr VkPhysicalDeviceFeatures
VkInstanceCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkInstanceCreateFlags
pApplicationInfo*: ptr VkApplicationInfo
enabledLayerCount*: uint32
ppEnabledLayerNames*: cstringArray
enabledExtensionCount*: uint32
ppEnabledExtensionNames*: cstringArray
VkQueueFamilyProperties* = object
queueFlags*: VkQueueFlags
queueCount*: uint32
timestampValidBits*: uint32
minImageTransferGranularity*: VkExtent3D
VkPhysicalDeviceMemoryProperties* = object
memoryTypeCount*: uint32
memoryTypes*: array[VK_MAX_MEMORY_TYPES, VkMemoryType]
memoryHeapCount*: uint32
memoryHeaps*: array[VK_MAX_MEMORY_HEAPS, VkMemoryHeap]
VkMemoryAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
allocationSize*: VkDeviceSize
memoryTypeIndex*: uint32
VkMemoryRequirements* = object
size*: VkDeviceSize
alignment*: VkDeviceSize
memoryTypeBits*: uint32
VkSparseImageFormatProperties* = object
aspectMask*: VkImageAspectFlags
imageGranularity*: VkExtent3D
flags*: VkSparseImageFormatFlags
VkSparseImageMemoryRequirements* = object
formatProperties*: VkSparseImageFormatProperties
imageMipTailFirstLod*: uint32
imageMipTailSize*: VkDeviceSize
imageMipTailOffset*: VkDeviceSize
imageMipTailStride*: VkDeviceSize
VkMemoryType* = object
propertyFlags*: VkMemoryPropertyFlags
heapIndex*: uint32
VkMemoryHeap* = object
size*: VkDeviceSize
flags*: VkMemoryHeapFlags
VkMappedMemoryRange* = object
sType*: VkStructureType
pNext*: pointer
memory*: VkDeviceMemory
offset*: VkDeviceSize
size*: VkDeviceSize
VkFormatProperties* = object
linearTilingFeatures*: VkFormatFeatureFlags
optimalTilingFeatures*: VkFormatFeatureFlags
bufferFeatures*: VkFormatFeatureFlags
VkImageFormatProperties* = object
maxExtent*: VkExtent3D
maxMipLevels*: uint32
maxArrayLayers*: uint32
sampleCounts*: VkSampleCountFlags
maxResourceSize*: VkDeviceSize
VkDescriptorBufferInfo* = object
buffer*: VkBuffer
offset*: VkDeviceSize
range*: VkDeviceSize
VkDescriptorImageInfo* = object
sampler*: VkSampler
imageView*: VkImageView
imageLayout*: VkImageLayout
VkWriteDescriptorSet* = object
sType*: VkStructureType
pNext*: pointer
dstSet*: VkDescriptorSet
dstBinding*: uint32
dstArrayElement*: uint32
descriptorCount*: uint32
descriptorType*: VkDescriptorType
pImageInfo*: ptr VkDescriptorImageInfo
pBufferInfo*: ptr ptr VkDescriptorBufferInfo
pTexelBufferView*: ptr VkBufferView
VkCopyDescriptorSet* = object
sType*: VkStructureType
pNext*: pointer
srcSet*: VkDescriptorSet
srcBinding*: uint32
srcArrayElement*: uint32
dstSet*: VkDescriptorSet
dstBinding*: uint32
dstArrayElement*: uint32
descriptorCount*: uint32
VkBufferCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkBufferCreateFlags
size*: VkDeviceSize
usage*: VkBufferUsageFlags
sharingMode*: VkSharingMode
queueFamilyIndexCount*: uint32
pQueueFamilyIndices*: ptr uint32
VkBufferViewCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkBufferViewCreateFlags
buffer*: VkBuffer
format*: VkFormat
offset*: VkDeviceSize
range*: VkDeviceSize
VkImageSubresource* = object
aspectMask*: VkImageAspectFlags
mipLevel*: uint32
arrayLayer*: uint32
VkImageSubresourceLayers* = object
aspectMask*: VkImageAspectFlags
mipLevel*: uint32
baseArrayLayer*: uint32
layerCount*: uint32
VkImageSubresourceRange* = object
aspectMask*: VkImageAspectFlags
baseMipLevel*: uint32
levelCount*: uint32
baseArrayLayer*: uint32
layerCount*: uint32
VkMemoryBarrier* = object
sType*: VkStructureType
pNext*: pointer
srcAccessMask*: VkAccessFlags
dstAccessMask*: VkAccessFlags
VkBufferMemoryBarrier* = object
sType*: VkStructureType
pNext*: pointer
srcAccessMask*: VkAccessFlags
dstAccessMask*: VkAccessFlags
srcQueueFamilyIndex*: uint32
dstQueueFamilyIndex*: uint32
buffer*: VkBuffer
offset*: VkDeviceSize
size*: VkDeviceSize
VkImageMemoryBarrier* = object
sType*: VkStructureType
pNext*: pointer
srcAccessMask*: VkAccessFlags
dstAccessMask*: VkAccessFlags
oldLayout*: VkImageLayout
newLayout*: VkImageLayout
srcQueueFamilyIndex*: uint32
dstQueueFamilyIndex*: uint32
image*: VkImage
subresourceRange*: VkImageSubresourceRange
VkImageCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkImageCreateFlags
imageType*: VkImageType
format*: VkFormat
extent*: VkExtent3D
mipLevels*: uint32
arrayLayers*: uint32
samples*: VkSampleCountFlagBits
tiling*: VkImageTiling
usage*: VkImageUsageFlags
sharingMode*: VkSharingMode
queueFamilyIndexCount*: uint32
pQueueFamilyIndices*: ptr uint32
initialLayout*: VkImageLayout
VkSubresourceLayout* = object
offset*: VkDeviceSize
size*: VkDeviceSize
rowPitch*: VkDeviceSize
arrayPitch*: VkDeviceSize
depthPitch*: VkDeviceSize
VkImageViewCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkImageViewCreateFlags
image*: VkImage
viewType*: VkImageViewType
format*: VkFormat
components*: VkComponentMapping
subresourceRange*: VkImageSubresourceRange
VkBufferCopy* = object
srcOffset*: VkDeviceSize
dstOffset*: VkDeviceSize
size*: VkDeviceSize
VkSparseMemoryBind* = object
resourceOffset*: VkDeviceSize
size*: VkDeviceSize
memory*: VkDeviceMemory
memoryOffset*: VkDeviceSize
flags*: VkSparseMemoryBindFlags
VkSparseImageMemoryBind* = object
subresource*: VkImageSubresource
offset*: VkOffset3D
extent*: VkExtent3D
memory*: VkDeviceMemory
memoryOffset*: VkDeviceSize
flags*: VkSparseMemoryBindFlags
VkSparseBufferMemoryBindInfo* = object
buffer*: VkBuffer
bindCount*: uint32
pBinds*: ptr VkSparseMemoryBind
VkSparseImageOpaqueMemoryBindInfo* = object
image*: VkImage
bindCount*: uint32
pBinds*: ptr VkSparseMemoryBind
VkSparseImageMemoryBindInfo* = object
image*: VkImage
bindCount*: uint32
pBinds*: ptr VkSparseImageMemoryBind
VkBindSparseInfo* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreCount*: uint32
pWaitSemaphores*: ptr VkSemaphore
bufferBindCount*: uint32
pBufferBinds*: ptr VkSparseBufferMemoryBindInfo
imageOpaqueBindCount*: uint32
pImageOpaqueBinds*: ptr VkSparseImageOpaqueMemoryBindInfo
imageBindCount*: uint32
pImageBinds*: ptr VkSparseImageMemoryBindInfo
signalSemaphoreCount*: uint32
pSignalSemaphores*: ptr VkSemaphore
VkImageCopy* = object
srcSubresource*: VkImageSubresourceLayers
srcOffset*: VkOffset3D
dstSubresource*: VkImageSubresourceLayers
dstOffset*: VkOffset3D
extent*: VkExtent3D
VkImageBlit* = object
srcSubresource*: VkImageSubresourceLayers
srcOffsets*: array[2, VkOffset3D]
dstSubresource*: VkImageSubresourceLayers
dstOffsets*: array[2, VkOffset3D]
VkBufferImageCopy* = object
bufferOffset*: VkDeviceSize
bufferRowLength*: uint32
bufferImageHeight*: uint32
imageSubresource*: VkImageSubresourceLayers
imageOffset*: VkOffset3D
imageExtent*: VkExtent3D
VkImageResolve* = object
srcSubresource*: VkImageSubresourceLayers
srcOffset*: VkOffset3D
dstSubresource*: VkImageSubresourceLayers
dstOffset*: VkOffset3D
extent*: VkExtent3D
VkShaderModuleCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkShaderModuleCreateFlags
codeSize*: uint
pCode*: ptr uint32
VkDescriptorSetLayoutBinding* = object
binding*: uint32
descriptorType*: VkDescriptorType
descriptorCount*: uint32
stageFlags*: VkShaderStageFlags
pImmutableSamplers*: ptr VkSampler
VkDescriptorSetLayoutCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDescriptorSetLayoutCreateFlags
bindingCount*: uint32
pBindings*: ptr VkDescriptorSetLayoutBinding
VkDescriptorPoolSize* = object
typee*: VkDescriptorType
descriptorCount*: uint32
VkDescriptorPoolCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDescriptorPoolCreateFlags
maxSets*: uint32
poolSizeCount*: uint32
pPoolSizes*: ptr VkDescriptorPoolSize
VkDescriptorSetAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
descriptorPool*: VkDescriptorPool
descriptorSetCount*: uint32
pSetLayouts*: ptr VkDescriptorSetLayout
VkSpecializationMapEntry* = object
constantID*: uint32
offset*: uint32
size*: uint
VkSpecializationInfo* = object
mapEntryCount*: uint32
pMapEntries*: ptr VkSpecializationMapEntry
dataSize*: uint
pData*: pointer
VkPipelineShaderStageCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineShaderStageCreateFlags
stage*: VkShaderStageFlagBits
module*: VkShaderModule
pName*: cstring
pSpecializationInfo*: ptr VkSpecializationInfo
VkComputePipelineCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCreateFlags
stage*: VkPipelineShaderStageCreateInfo
layout*: VkPipelineLayout
basePipelineHandle*: VkPipeline
basePipelineIndex*: int32
VkVertexInputBindingDescription* = object
binding*: uint32
stride*: uint32
inputRate*: VkVertexInputRate
VkVertexInputAttributeDescription* = object
location*: uint32
binding*: uint32
format*: VkFormat
offset*: uint32
VkPipelineVertexInputStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineVertexInputStateCreateFlags
vertexBindingDescriptionCount*: uint32
pVertexBindingDescriptions*: ptr VkVertexInputBindingDescription
vertexAttributeDescriptionCount*: uint32
pVertexAttributeDescriptions*: ptr VkVertexInputAttributeDescription
VkPipelineInputAssemblyStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineInputAssemblyStateCreateFlags
topology*: VkPrimitiveTopology
primitiveRestartEnable*: VkBool32
VkPipelineTessellationStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineTessellationStateCreateFlags
patchControlPoints*: uint32
VkPipelineViewportStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineViewportStateCreateFlags
viewportCount*: uint32
pViewports*: ptr VkViewport
scissorCount*: uint32
pScissors*: ptr VkRect2D
VkPipelineRasterizationStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineRasterizationStateCreateFlags
depthClampEnable*: VkBool32
rasterizerDiscardEnable*: VkBool32
polygonMode*: VkPolygonMode
cullMode*: VkCullModeFlags
frontFace*: VkFrontFace
depthBiasEnable*: VkBool32
depthBiasConstantFactor*: float32
depthBiasClamp*: float32
depthBiasSlopeFactor*: float32
lineWidth*: float32
VkPipelineMultisampleStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineMultisampleStateCreateFlags
rasterizationSamples*: VkSampleCountFlagBits
sampleShadingEnable*: VkBool32
minSampleShading*: float32
pSampleMask*: ptr VkSampleMask
alphaToCoverageEnable*: VkBool32
alphaToOneEnable*: VkBool32
VkPipelineColorBlendAttachmentState* = object
blendEnable*: VkBool32
srcColorBlendFactor*: VkBlendFactor
dstColorBlendFactor*: VkBlendFactor
colorBlendOp*: VkBlendOp
srcAlphaBlendFactor*: VkBlendFactor
dstAlphaBlendFactor*: VkBlendFactor
alphaBlendOp*: VkBlendOp
colorWriteMask*: VkColorComponentFlags
VkPipelineColorBlendStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineColorBlendStateCreateFlags
logicOpEnable*: VkBool32
logicOp*: VkLogicOp
attachmentCount*: uint32
pAttachments*: ptr VkPipelineColorBlendAttachmentState
blendConstants*: array[4, float32]
VkPipelineDynamicStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineDynamicStateCreateFlags
dynamicStateCount*: uint32
pDynamicStates*: ptr VkDynamicState
VkStencilOpState* = object
failOp*: VkStencilOp
passOp*: VkStencilOp
depthFailOp*: VkStencilOp
compareOp*: VkCompareOp
compareMask*: uint32
writeMask*: uint32
reference*: uint32
VkPipelineDepthStencilStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineDepthStencilStateCreateFlags
depthTestEnable*: VkBool32
depthWriteEnable*: VkBool32
depthCompareOp*: VkCompareOp
depthBoundsTestEnable*: VkBool32
stencilTestEnable*: VkBool32
front*: VkStencilOpState
back*: VkStencilOpState
minDepthBounds*: float32
maxDepthBounds*: float32
VkGraphicsPipelineCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCreateFlags
stageCount*: uint32
pStages*: ptr VkPipelineShaderStageCreateInfo
pVertexInputState*: ptr VkPipelineVertexInputStateCreateInfo
pInputAssemblyState*: ptr VkPipelineInputAssemblyStateCreateInfo
pTessellationState*: ptr VkPipelineTessellationStateCreateInfo
pViewportState*: ptr VkPipelineViewportStateCreateInfo
pRasterizationState*: ptr VkPipelineRasterizationStateCreateInfo
pMultisampleState*: ptr VkPipelineMultisampleStateCreateInfo
pDepthStencilState*: ptr VkPipelineDepthStencilStateCreateInfo
pColorBlendState*: ptr VkPipelineColorBlendStateCreateInfo
pDynamicState*: ptr VkPipelineDynamicStateCreateInfo
layout*: VkPipelineLayout
render_pass*: VkRenderPass
subpass*: uint32
basePipelineHandle*: VkPipeline
basePipelineIndex*: int32
VkPipelineCacheCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCacheCreateFlags
initialDataSize*: uint
pInitialData*: pointer
VkPushConstantRange* = object
stageFlags*: VkShaderStageFlags
offset*: uint32
size*: uint32
VkPipelineLayoutCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineLayoutCreateFlags
setLayoutCount*: uint32
pSetLayouts*: ptr VkDescriptorSetLayout
pushConstantRangeCount*: uint32
pPushConstantRanges*: ptr VkPushConstantRange
VkSamplerCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkSamplerCreateFlags
magFilter*: VkFilter
minFilter*: VkFilter
mipmapMode*: VkSamplerMipmapMode
addressModeU*: VkSamplerAddressMode
addressModeV*: VkSamplerAddressMode
addressModeW*: VkSamplerAddressMode
mipLodBias*: float32
anisotropyEnable*: VkBool32
maxAnisotropy*: float32
compareEnable*: VkBool32
compareOp*: VkCompareOp
minLod*: float32
maxLod*: float32
borderColor*: VkBorderColor
unnormalizedCoordinates*: VkBool32
VkCommandPoolCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkCommandPoolCreateFlags
queueFamilyIndex*: uint32
VkCommandBufferAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
commandPool*: VkCommandPool
level*: VkCommandBufferLevel
commandBufferCount*: uint32
VkCommandBufferInheritanceInfo* = object
sType*: VkStructureType
pNext*: pointer
render_pass*: VkRenderPass
subpass*: uint32
framebuffer*: VkFramebuffer
occlusionQueryEnable*: VkBool32
queryFlags*: VkQueryControlFlags
pipelineStatistics*: VkQueryPipelineStatisticFlags
VkCommandBufferBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkCommandBufferUsageFlags
pInheritanceInfo*: ptr VkCommandBufferInheritanceInfo
VkRenderPassBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
render_pass*: VkRenderPass
framebuffer*: VkFramebuffer
renderArea*: VkRect2D
clearValueCount*: uint32
pClearValues*: ptr VkClearValue
VkClearColorValue* {.union.} = object
float32*: array[4, float32]
int32*: array[4, int32]
uint32*: array[4, uint32]
VkClearDepthStencilValue* = object
depth*: float32
stencil*: uint32
VkClearValue* {.union.} = object
color*: VkClearColorValue
depth_stencil*: VkClearDepthStencilValue
VkClearAttachment* = object
aspectMask*: VkImageAspectFlags
colorAttachment*: uint32
clearValue*: VkClearValue
VkAttachmentDescription* = object
flags*: VkAttachmentDescriptionFlags
format*: VkFormat
samples*: VkSampleCountFlagBits
loadOp*: VkAttachmentLoadOp
storeOp*: VkAttachmentStoreOp
stencilLoadOp*: VkAttachmentLoadOp
stencilStoreOp*: VkAttachmentStoreOp
initialLayout*: VkImageLayout
finalLayout*: VkImageLayout
VkAttachmentReference* = object
attachment*: uint32
layout*: VkImageLayout
VkSubpassDescription* = object
flags*: VkSubpassDescriptionFlags
pipelineBindPoint*: VkPipelineBindPoint
inputAttachmentCount*: uint32
pInputAttachments*: ptr VkAttachmentReference
colorAttachmentCount*: uint32
pColorAttachments*: ptr VkAttachmentReference
pResolveAttachments*: ptr VkAttachmentReference
pDepthStencilAttachment*: ptr VkAttachmentReference
preserveAttachmentCount*: uint32
pPreserveAttachments*: ptr uint32
VkSubpassDependency* = object
srcSubpass*: uint32
dstSubpass*: uint32
srcStageMask*: VkPipelineStageFlags
dstStageMask*: VkPipelineStageFlags
srcAccessMask*: VkAccessFlags
dstAccessMask*: VkAccessFlags
dependencyFlags*: VkDependencyFlags
VkRenderPassCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkRenderPassCreateFlags
attachmentCount*: uint32
pAttachments*: ptr VkAttachmentDescription
subpassCount*: uint32
pSubpasses*: ptr VkSubpassDescription
dependencyCount*: uint32
pDependencies*: ptr VkSubpassDependency
VkEventCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkEventCreateFlags
VkFenceCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkFenceCreateFlags
VkPhysicalDeviceFeatures* = object
robustBufferAccess*: VkBool32
fullDrawIndexUint32*: VkBool32
imageCubeArray*: VkBool32
independentBlend*: VkBool32
geometryShader*: VkBool32
tessellationShader*: VkBool32
sampleRateShading*: VkBool32
dualSrcBlend*: VkBool32
logicOp*: VkBool32
multiDrawIndirect*: VkBool32
drawIndirectFirstInstance*: VkBool32
depthClamp*: VkBool32
depthBiasClamp*: VkBool32
fillModeNonSolid*: VkBool32
depthBounds*: VkBool32
wideLines*: VkBool32
largePoints*: VkBool32
alphaToOne*: VkBool32
multiViewport*: VkBool32
samplerAnisotropy*: VkBool32
textureCompressionETC2*: VkBool32
textureCompressionASTC_LDR*: VkBool32
textureCompressionBC*: VkBool32
occlusionQueryPrecise*: VkBool32
pipelineStatisticsQuery*: VkBool32
vertexPipelineStoresAndAtomics*: VkBool32
fragmentStoresAndAtomics*: VkBool32
shaderTessellationAndGeometryPointSize*: VkBool32
shaderImageGatherExtended*: VkBool32
shaderStorageImageExtendedFormats*: VkBool32
shaderStorageImageMultisample*: VkBool32
shaderStorageImageReadWithoutFormat*: VkBool32
shaderStorageImageWriteWithoutFormat*: VkBool32
shaderUniformBufferArrayDynamicIndexing*: VkBool32
shaderSampledImageArrayDynamicIndexing*: VkBool32
shaderStorageBufferArrayDynamicIndexing*: VkBool32
shaderStorageImageArrayDynamicIndexing*: VkBool32
shaderClipDistance*: VkBool32
shaderCullDistance*: VkBool32
shaderFloat64*: VkBool32
shaderInt64*: VkBool32
shaderInt16*: VkBool32
shaderResourceResidency*: VkBool32
shaderResourceMinLod*: VkBool32
sparseBinding*: VkBool32
sparseResidencyBuffer*: VkBool32
sparseResidencyImage2D*: VkBool32
sparseResidencyImage3D*: VkBool32
sparseResidency2Samples*: VkBool32
sparseResidency4Samples*: VkBool32
sparseResidency8Samples*: VkBool32
sparseResidency16Samples*: VkBool32
sparseResidencyAliased*: VkBool32
variableMultisampleRate*: VkBool32
inheritedQueries*: VkBool32
VkPhysicalDeviceSparseProperties* = object
residencyStandard2DBlockShape*: VkBool32
residencyStandard2DMultisampleBlockShape*: VkBool32
residencyStandard3DBlockShape*: VkBool32
residencyAlignedMipSize*: VkBool32
residencyNonResidentStrict*: VkBool32
VkPhysicalDeviceLimits* = object
maxImageDimension1D*: uint32
maxImageDimension2D*: uint32
maxImageDimension3D*: uint32
maxImageDimensionCube*: uint32
maxImageArrayLayers*: uint32
maxTexelBufferElements*: uint32
maxUniformBufferRange*: uint32
maxStorageBufferRange*: uint32
maxPushConstantsSize*: uint32
maxMemoryAllocationCount*: uint32
maxSamplerAllocationCount*: uint32
bufferImageGranularity*: VkDeviceSize
sparseAddressSpaceSize*: VkDeviceSize
maxBoundDescriptorSets*: uint32
maxPerStageDescriptorSamplers*: uint32
maxPerStageDescriptorUniformBuffers*: uint32
maxPerStageDescriptorStorageBuffers*: uint32
maxPerStageDescriptorSampledImages*: uint32
maxPerStageDescriptorStorageImages*: uint32
maxPerStageDescriptorInputAttachments*: uint32
maxPerStageResources*: uint32
maxDescriptorSetSamplers*: uint32
maxDescriptorSetUniformBuffers*: uint32
maxDescriptorSetUniformBuffersDynamic*: uint32
maxDescriptorSetStorageBuffers*: uint32
maxDescriptorSetStorageBuffersDynamic*: uint32
maxDescriptorSetSampledImages*: uint32
maxDescriptorSetStorageImages*: uint32
maxDescriptorSetInputAttachments*: uint32
maxVertexInputAttributes*: uint32
maxVertexInputBindings*: uint32
maxVertexInputAttributeOffset*: uint32
maxVertexInputBindingStride*: uint32
maxVertexOutputComponents*: uint32
maxTessellationGenerationLevel*: uint32
maxTessellationPatchSize*: uint32
maxTessellationControlPerVertexInputComponents*: uint32
maxTessellationControlPerVertexOutputComponents*: uint32
maxTessellationControlPerPatchOutputComponents*: uint32
maxTessellationControlTotalOutputComponents*: uint32
maxTessellationEvaluationInputComponents*: uint32
maxTessellationEvaluationOutputComponents*: uint32
maxGeometryShaderInvocations*: uint32
maxGeometryInputComponents*: uint32
maxGeometryOutputComponents*: uint32
maxGeometryOutputVertices*: uint32
maxGeometryTotalOutputComponents*: uint32
maxFragmentInputComponents*: uint32
maxFragmentOutputAttachments*: uint32
maxFragmentDualSrcAttachments*: uint32
maxFragmentCombinedOutputResources*: uint32
maxComputeSharedMemorySize*: uint32
maxComputeWorkGroupCount*: array[3, uint32]
maxComputeWorkGroupInvocations*: uint32
maxComputeWorkGroupSize*: array[3, uint32]
subPixelPrecisionBits*: uint32
subTexelPrecisionBits*: uint32
mipmapPrecisionBits*: uint32
maxDrawIndexedIndexValue*: uint32
maxDrawIndirectCount*: uint32
maxSamplerLodBias*: float32
maxSamplerAnisotropy*: float32
maxViewports*: uint32
maxViewportDimensions*: array[2, uint32]
viewportBoundsRange*: array[2, float32]
viewportSubPixelBits*: uint32
minMemoryMapAlignment*: uint
minTexelBufferOffsetAlignment*: VkDeviceSize
minUniformBufferOffsetAlignment*: VkDeviceSize
minStorageBufferOffsetAlignment*: VkDeviceSize
minTexelOffset*: int32
maxTexelOffset*: uint32
minTexelGatherOffset*: int32
maxTexelGatherOffset*: uint32
minInterpolationOffset*: float32
maxInterpolationOffset*: float32
subPixelInterpolationOffsetBits*: uint32
maxFramebufferWidth*: uint32
maxFramebufferHeight*: uint32
maxFramebufferLayers*: uint32
framebufferColorSampleCounts*: VkSampleCountFlags
framebufferDepthSampleCounts*: VkSampleCountFlags
framebufferStencilSampleCounts*: VkSampleCountFlags
framebufferNoAttachmentsSampleCounts*: VkSampleCountFlags
maxColorAttachments*: uint32
sampledImageColorSampleCounts*: VkSampleCountFlags
sampledImageIntegerSampleCounts*: VkSampleCountFlags
sampledImageDepthSampleCounts*: VkSampleCountFlags
sampledImageStencilSampleCounts*: VkSampleCountFlags
storageImageSampleCounts*: VkSampleCountFlags
maxSampleMaskWords*: uint32
timestampComputeAndGraphics*: VkBool32
timestampPeriod*: float32
maxClipDistances*: uint32
maxCullDistances*: uint32
maxCombinedClipAndCullDistances*: uint32
discreteQueuePriorities*: uint32
pointSizeRange*: array[2, float32]
lineWidthRange*: array[2, float32]
pointSizeGranularity*: float32
lineWidthGranularity*: float32
strictLines*: VkBool32
standardSampleLocations*: VkBool32
optimalBufferCopyOffsetAlignment*: VkDeviceSize
optimalBufferCopyRowPitchAlignment*: VkDeviceSize
nonCoherentAtomSize*: VkDeviceSize
VkSemaphoreCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkSemaphoreCreateFlags
VkQueryPoolCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkQueryPoolCreateFlags
queryType*: VkQueryType
queryCount*: uint32
pipelineStatistics*: VkQueryPipelineStatisticFlags
VkFramebufferCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkFramebufferCreateFlags
render_pass*: VkRenderPass
attachmentCount*: uint32
pAttachments*: ptr VkImageView
width*: uint32
height*: uint32
layers*: uint32
VkDrawIndirectCommand* = object
vertexCount*: uint32
instanceCount*: uint32
firstVertex*: uint32
firstInstance*: uint32
VkDrawIndexedIndirectCommand* = object
indexCount*: uint32
instanceCount*: uint32
firstIndex*: uint32
vertexOffset*: int32
firstInstance*: uint32
VkDispatchIndirectCommand* = object
x*: uint32
y*: uint32
z*: uint32
VkSubmitInfo* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreCount*: uint32
pWaitSemaphores*: ptr VkSemaphore
pWaitDstStageMask*: ptr VkPipelineStageFlags
commandBufferCount*: uint32
pCommandBuffers*: ptr VkCommandBuffer
signalSemaphoreCount*: uint32
pSignalSemaphores*: ptr VkSemaphore
VkDisplayPropertiesKHR* = object
display*: VkDisplayKHR
displayName*: cstring
physicalDimensions*: VkExtent2D
physicalResolution*: VkExtent2D
supportedTransforms*: VkSurfaceTransformFlagsKHR
planeReorderPossible*: VkBool32
persistentContent*: VkBool32
VkDisplayPlanePropertiesKHR* = object
currentDisplay*: VkDisplayKHR
currentStackIndex*: uint32
VkDisplayModeParametersKHR* = object
visibleRegion*: VkExtent2D
refreshRate*: uint32
VkDisplayModePropertiesKHR* = object
displayMode*: VkDisplayModeKHR
parameters*: VkDisplayModeParametersKHR
VkDisplayModeCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDisplayModeCreateFlagsKHR
parameters*: VkDisplayModeParametersKHR
VkDisplayPlaneCapabilitiesKHR* = object
supportedAlpha*: VkDisplayPlaneAlphaFlagsKHR
minSrcPosition*: VkOffset2D
maxSrcPosition*: VkOffset2D
minSrcExtent*: VkExtent2D
maxSrcExtent*: VkExtent2D
minDstPosition*: VkOffset2D
maxDstPosition*: VkOffset2D
minDstExtent*: VkExtent2D
maxDstExtent*: VkExtent2D
VkDisplaySurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDisplaySurfaceCreateFlagsKHR
displayMode*: VkDisplayModeKHR
planeIndex*: uint32
planeStackIndex*: uint32
transform*: VkSurfaceTransformFlagBitsKHR
globalAlpha*: float32
alphaMode*: VkDisplayPlaneAlphaFlagBitsKHR
imageExtent*: VkExtent2D
VkDisplayPresentInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
srcRect*: VkRect2D
dstRect*: VkRect2D
persistent*: VkBool32
VkSurfaceCapabilitiesKHR* = object
minImageCount*: uint32
maxImageCount*: uint32
currentExtent*: VkExtent2D
minImageExtent*: VkExtent2D
maxImageExtent*: VkExtent2D
maxImageArrayLayers*: uint32
supportedTransforms*: VkSurfaceTransformFlagsKHR
currentTransform*: VkSurfaceTransformFlagBitsKHR
supportedCompositeAlpha*: VkCompositeAlphaFlagsKHR
supportedUsageFlags*: VkImageUsageFlags
VkAndroidSurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkAndroidSurfaceCreateFlagsKHR
window*: ptr ANativeWindow
VkViSurfaceCreateInfoNN* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkViSurfaceCreateFlagsNN
window*: pointer
VkWaylandSurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkWaylandSurfaceCreateFlagsKHR
display*: ptr wl_display
surface*: ptr wl_surface
VkWin32SurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkWin32SurfaceCreateFlagsKHR
hinstance*: HINSTANCE
hwnd*: HWND
VkXlibSurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkXlibSurfaceCreateFlagsKHR
dpy*: ptr Display
window*: Window
VkXcbSurfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkXcbSurfaceCreateFlagsKHR
connection*: ptr xcb_connection_t
window*: xcb_window_t
VkDirectFBSurfaceCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDirectFBSurfaceCreateFlagsEXT
dfb*: ptr IDirectFB
surface*: ptr IDirectFBSurface
VkImagePipeSurfaceCreateInfoFUCHSIA* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkImagePipeSurfaceCreateFlagsFUCHSIA
imagePipeHandle*: zx_handle_t
VkStreamDescriptorSurfaceCreateInfoGGP* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkStreamDescriptorSurfaceCreateFlagsGGP
streamDescriptor*: GgpStreamDescriptor
VkSurfaceFormatKHR* = object
format*: VkFormat
colorSpace*: VkColorSpaceKHR
VkSwapchainCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkSwapchainCreateFlagsKHR
surface*: VkSurfaceKHR
minImageCount*: uint32
imageFormat*: VkFormat
imageColorSpace*: VkColorSpaceKHR
imageExtent*: VkExtent2D
imageArrayLayers*: uint32
imageUsage*: VkImageUsageFlags
imageSharingMode*: VkSharingMode
queueFamilyIndexCount*: uint32
pQueueFamilyIndices*: ptr uint32
preTransform*: VkSurfaceTransformFlagBitsKHR
compositeAlpha*: VkCompositeAlphaFlagBitsKHR
presentMode*: VkPresentModeKHR
clipped*: VkBool32
oldSwapchain*: VkSwapchainKHR
VkPresentInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreCount*: uint32
pWaitSemaphores*: ptr VkSemaphore
swapchainCount*: uint32
pSwapchains*: ptr VkSwapchainKHR
pImageIndices*: ptr uint32
pResults*: ptr VkResult
VkDebugReportCallbackCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDebugReportFlagsEXT
pfnCallback*: PFN_vkDebugReportCallbackEXT
pUserData*: pointer
VkValidationFlagsEXT* = object
sType*: VkStructureType
pNext*: pointer
disabledValidationCheckCount*: uint32
pDisabledValidationChecks*: ptr VkValidationCheckEXT
VkValidationFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
enabledValidationFeatureCount*: uint32
pEnabledValidationFeatures*: ptr VkValidationFeatureEnableEXT
disabledValidationFeatureCount*: uint32
pDisabledValidationFeatures*: ptr VkValidationFeatureDisableEXT
VkPipelineRasterizationStateRasterizationOrderAMD* = object
sType*: VkStructureType
pNext*: pointer
rasterizationOrder*: VkRasterizationOrderAMD
VkDebugMarkerObjectNameInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
objectType*: VkDebugReportObjectTypeEXT
`object`*: uint64
pObjectName*: cstring
VkDebugMarkerObjectTagInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
objectType*: VkDebugReportObjectTypeEXT
`object`*: uint64
tagName*: uint64
tagSize*: uint
pTag*: pointer
VkDebugMarkerMarkerInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
pMarkerName*: cstring
color*: array[4, float32]
VkDedicatedAllocationImageCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
dedicatedAllocation*: VkBool32
VkDedicatedAllocationBufferCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
dedicatedAllocation*: VkBool32
VkDedicatedAllocationMemoryAllocateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
image*: VkImage
buffer*: VkBuffer
VkExternalImageFormatPropertiesNV* = object
imageFormatProperties*: VkImageFormatProperties
externalMemoryFeatures*: VkExternalMemoryFeatureFlagsNV
exportFromImportedHandleTypes*: VkExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes*: VkExternalMemoryHandleTypeFlagsNV
VkExternalMemoryImageCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalMemoryHandleTypeFlagsNV
VkExportMemoryAllocateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalMemoryHandleTypeFlagsNV
VkImportMemoryWin32HandleInfoNV* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalMemoryHandleTypeFlagsNV
handle*: HANDLE
VkExportMemoryWin32HandleInfoNV* = object
sType*: VkStructureType
pNext*: pointer
pAttributes*: ptr SECURITY_ATTRIBUTES
dwAccess*: DWORD
VkWin32KeyedMutexAcquireReleaseInfoNV* = object
sType*: VkStructureType
pNext*: pointer
acquireCount*: uint32
pAcquireSyncs*: ptr VkDeviceMemory
pAcquireKeys*: ptr uint64
pAcquireTimeoutMilliseconds*: ptr uint32
releaseCount*: uint32
pReleaseSyncs*: ptr VkDeviceMemory
pReleaseKeys*: ptr uint64
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
deviceGeneratedCommands*: VkBool32
VkDevicePrivateDataCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
privateDataSlotRequestCount*: uint32
VkPrivateDataSlotCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPrivateDataSlotCreateFlagsEXT
VkPhysicalDevicePrivateDataFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
privateData*: VkBool32
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
maxGraphicsShaderGroupCount*: uint32
maxIndirectSequenceCount*: uint32
maxIndirectCommandsTokenCount*: uint32
maxIndirectCommandsStreamCount*: uint32
maxIndirectCommandsTokenOffset*: uint32
maxIndirectCommandsStreamStride*: uint32
minSequencesCountBufferOffsetAlignment*: uint32
minSequencesIndexBufferOffsetAlignment*: uint32
minIndirectCommandsBufferOffsetAlignment*: uint32
VkGraphicsShaderGroupCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
stageCount*: uint32
pStages*: ptr VkPipelineShaderStageCreateInfo
pVertexInputState*: ptr VkPipelineVertexInputStateCreateInfo
pTessellationState*: ptr VkPipelineTessellationStateCreateInfo
VkGraphicsPipelineShaderGroupsCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
groupCount*: uint32
pGroups*: ptr VkGraphicsShaderGroupCreateInfoNV
pipelineCount*: uint32
pPipelines*: ptr VkPipeline
VkBindShaderGroupIndirectCommandNV* = object
groupIndex*: uint32
VkBindIndexBufferIndirectCommandNV* = object
bufferAddress*: VkDeviceAddress
size*: uint32
indexType*: VkIndexType
VkBindVertexBufferIndirectCommandNV* = object
bufferAddress*: VkDeviceAddress
size*: uint32
stride*: uint32
VkSetStateFlagsIndirectCommandNV* = object
data*: uint32
VkIndirectCommandsStreamNV* = object
buffer*: VkBuffer
offset*: VkDeviceSize
VkIndirectCommandsLayoutTokenNV* = object
sType*: VkStructureType
pNext*: pointer
tokenType*: VkIndirectCommandsTokenTypeNV
stream*: uint32
offset*: uint32
vertexBindingUnit*: uint32
vertexDynamicStride*: VkBool32
pushconstantPipelineLayout*: VkPipelineLayout
pushconstantShaderStageFlags*: VkShaderStageFlags
pushconstantOffset*: uint32
pushconstantSize*: uint32
indirectStateFlags*: VkIndirectStateFlagsNV
indexTypeCount*: uint32
pIndexTypes*: ptr VkIndexType
pIndexTypeValues*: ptr uint32
VkIndirectCommandsLayoutCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkIndirectCommandsLayoutUsageFlagsNV
pipelineBindPoint*: VkPipelineBindPoint
tokenCount*: uint32
pTokens*: ptr VkIndirectCommandsLayoutTokenNV
streamCount*: uint32
pStreamStrides*: ptr uint32
VkGeneratedCommandsInfoNV* = object
sType*: VkStructureType
pNext*: pointer
pipelineBindPoint*: VkPipelineBindPoint
pipeline*: VkPipeline
indirectCommandsLayout*: VkIndirectCommandsLayoutNV
streamCount*: uint32
pStreams*: ptr VkIndirectCommandsStreamNV
sequencesCount*: uint32
preprocessBuffer*: VkBuffer
preprocessOffset*: VkDeviceSize
preprocessSize*: VkDeviceSize
sequencesCountBuffer*: VkBuffer
sequencesCountOffset*: VkDeviceSize
sequencesIndexBuffer*: VkBuffer
sequencesIndexOffset*: VkDeviceSize
VkGeneratedCommandsMemoryRequirementsInfoNV* = object
sType*: VkStructureType
pNext*: pointer
pipelineBindPoint*: VkPipelineBindPoint
pipeline*: VkPipeline
indirectCommandsLayout*: VkIndirectCommandsLayoutNV
maxSequencesCount*: uint32
VkPhysicalDeviceFeatures2* = object
sType*: VkStructureType
pNext*: pointer
features*: VkPhysicalDeviceFeatures
VkPhysicalDeviceFeatures2KHR* = object
VkPhysicalDeviceProperties2* = object
sType*: VkStructureType
pNext*: pointer
properties*: VkPhysicalDeviceProperties
VkPhysicalDeviceProperties2KHR* = object
VkFormatProperties2* = object
sType*: VkStructureType
pNext*: pointer
formatProperties*: VkFormatProperties
VkFormatProperties2KHR* = object
VkImageFormatProperties2* = object
sType*: VkStructureType
pNext*: pointer
imageFormatProperties*: VkImageFormatProperties
VkImageFormatProperties2KHR* = object
VkPhysicalDeviceImageFormatInfo2* = object
sType*: VkStructureType
pNext*: pointer
format*: VkFormat
typee*: VkImageType
tiling*: VkImageTiling
usage*: VkImageUsageFlags
flags*: VkImageCreateFlags
VkPhysicalDeviceImageFormatInfo2KHR* = object
VkQueueFamilyProperties2* = object
sType*: VkStructureType
pNext*: pointer
queueFamilyProperties*: VkQueueFamilyProperties
VkQueueFamilyProperties2KHR* = object
VkPhysicalDeviceMemoryProperties2* = object
sType*: VkStructureType
pNext*: pointer
memoryProperties*: VkPhysicalDeviceMemoryProperties
VkPhysicalDeviceMemoryProperties2KHR* = object
VkSparseImageFormatProperties2* = object
sType*: VkStructureType
pNext*: pointer
properties*: VkSparseImageFormatProperties
VkSparseImageFormatProperties2KHR* = object
VkPhysicalDeviceSparseImageFormatInfo2* = object
sType*: VkStructureType
pNext*: pointer
format*: VkFormat
typee*: VkImageType
samples*: VkSampleCountFlagBits
usage*: VkImageUsageFlags
tiling*: VkImageTiling
VkPhysicalDeviceSparseImageFormatInfo2KHR* = object
VkPhysicalDevicePushDescriptorPropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
maxPushDescriptors*: uint32
VkConformanceVersion* = object
major*: uint8
minor*: uint8
subminor*: uint8
patch*: uint8
VkConformanceVersionKHR* = object
VkPhysicalDeviceDriverProperties* = object
sType*: VkStructureType
pNext*: pointer
driverID*: VkDriverId
driverName*: array[VK_MAX_DRIVER_NAME_SIZE, char]
driverInfo*: array[VK_MAX_DRIVER_INFO_SIZE, char]
conformanceVersion*: VkConformanceVersion
VkPhysicalDeviceDriverPropertiesKHR* = object
VkPresentRegionsKHR* = object
sType*: VkStructureType
pNext*: pointer
swapchainCount*: uint32
pRegions*: ptr VkPresentRegionKHR
VkPresentRegionKHR* = object
rectangleCount*: uint32
pRectangles*: ptr VkRectLayerKHR
VkRectLayerKHR* = object
offset*: VkOffset2D
extent*: VkExtent2D
layer*: uint32
VkPhysicalDeviceVariablePointersFeatures* = object
sType*: VkStructureType
pNext*: pointer
variablePointersStorageBuffer*: VkBool32
variablePointers*: VkBool32
VkPhysicalDeviceVariablePointersFeaturesKHR* = object
VkPhysicalDeviceVariablePointerFeaturesKHR* = object
VkPhysicalDeviceVariablePointerFeatures* = object
VkExternalMemoryProperties* = object
externalMemoryFeatures*: VkExternalMemoryFeatureFlags
exportFromImportedHandleTypes*: VkExternalMemoryHandleTypeFlags
compatibleHandleTypes*: VkExternalMemoryHandleTypeFlags
VkExternalMemoryPropertiesKHR* = object
VkPhysicalDeviceExternalImageFormatInfo* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalMemoryHandleTypeFlagBits
VkPhysicalDeviceExternalImageFormatInfoKHR* = object
VkExternalImageFormatProperties* = object
sType*: VkStructureType
pNext*: pointer
externalMemoryProperties*: VkExternalMemoryProperties
VkExternalImageFormatPropertiesKHR* = object
VkPhysicalDeviceExternalBufferInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkBufferCreateFlags
usage*: VkBufferUsageFlags
handleType*: VkExternalMemoryHandleTypeFlagBits
VkPhysicalDeviceExternalBufferInfoKHR* = object
VkExternalBufferProperties* = object
sType*: VkStructureType
pNext*: pointer
externalMemoryProperties*: VkExternalMemoryProperties
VkExternalBufferPropertiesKHR* = object
VkPhysicalDeviceIDProperties* = object
sType*: VkStructureType
pNext*: pointer
deviceUUID*: array[VK_UUID_SIZE, uint8]
driverUUID*: array[VK_UUID_SIZE, uint8]
deviceLUID*: array[VK_LUID_SIZE, uint8]
deviceNodeMask*: uint32
deviceLUIDValid*: VkBool32
VkPhysicalDeviceIDPropertiesKHR* = object
VkExternalMemoryImageCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalMemoryHandleTypeFlags
VkExternalMemoryImageCreateInfoKHR* = object
VkExternalMemoryBufferCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalMemoryHandleTypeFlags
VkExternalMemoryBufferCreateInfoKHR* = object
VkExportMemoryAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalMemoryHandleTypeFlags
VkExportMemoryAllocateInfoKHR* = object
VkImportMemoryWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalMemoryHandleTypeFlagBits
handle*: HANDLE
name*: LPCWSTR
VkExportMemoryWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
pAttributes*: ptr SECURITY_ATTRIBUTES
dwAccess*: DWORD
name*: LPCWSTR
VkMemoryWin32HandlePropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
memoryTypeBits*: uint32
VkMemoryGetWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
memory*: VkDeviceMemory
handleType*: VkExternalMemoryHandleTypeFlagBits
VkImportMemoryFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalMemoryHandleTypeFlagBits
fd*: int
VkMemoryFdPropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
memoryTypeBits*: uint32
VkMemoryGetFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
memory*: VkDeviceMemory
handleType*: VkExternalMemoryHandleTypeFlagBits
VkWin32KeyedMutexAcquireReleaseInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
acquireCount*: uint32
pAcquireSyncs*: ptr VkDeviceMemory
pAcquireKeys*: ptr uint64
pAcquireTimeouts*: ptr uint32
releaseCount*: uint32
pReleaseSyncs*: ptr VkDeviceMemory
pReleaseKeys*: ptr uint64
VkPhysicalDeviceExternalSemaphoreInfo* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalSemaphoreHandleTypeFlagBits
VkPhysicalDeviceExternalSemaphoreInfoKHR* = object
VkExternalSemaphoreProperties* = object
sType*: VkStructureType
pNext*: pointer
exportFromImportedHandleTypes*: VkExternalSemaphoreHandleTypeFlags
compatibleHandleTypes*: VkExternalSemaphoreHandleTypeFlags
externalSemaphoreFeatures*: VkExternalSemaphoreFeatureFlags
VkExternalSemaphorePropertiesKHR* = object
VkExportSemaphoreCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalSemaphoreHandleTypeFlags
VkExportSemaphoreCreateInfoKHR* = object
VkImportSemaphoreWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
semaphore*: VkSemaphore
flags*: VkSemaphoreImportFlags
handleType*: VkExternalSemaphoreHandleTypeFlagBits
handle*: HANDLE
name*: LPCWSTR
VkExportSemaphoreWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
pAttributes*: ptr SECURITY_ATTRIBUTES
dwAccess*: DWORD
name*: LPCWSTR
VkD3D12FenceSubmitInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreValuesCount*: uint32
pWaitSemaphoreValues*: ptr uint64
signalSemaphoreValuesCount*: uint32
pSignalSemaphoreValues*: ptr uint64
VkSemaphoreGetWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
semaphore*: VkSemaphore
handleType*: VkExternalSemaphoreHandleTypeFlagBits
VkImportSemaphoreFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
semaphore*: VkSemaphore
flags*: VkSemaphoreImportFlags
handleType*: VkExternalSemaphoreHandleTypeFlagBits
fd*: int
VkSemaphoreGetFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
semaphore*: VkSemaphore
handleType*: VkExternalSemaphoreHandleTypeFlagBits
VkPhysicalDeviceExternalFenceInfo* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalFenceHandleTypeFlagBits
VkPhysicalDeviceExternalFenceInfoKHR* = object
VkExternalFenceProperties* = object
sType*: VkStructureType
pNext*: pointer
exportFromImportedHandleTypes*: VkExternalFenceHandleTypeFlags
compatibleHandleTypes*: VkExternalFenceHandleTypeFlags
externalFenceFeatures*: VkExternalFenceFeatureFlags
VkExternalFencePropertiesKHR* = object
VkExportFenceCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
handleTypes*: VkExternalFenceHandleTypeFlags
VkExportFenceCreateInfoKHR* = object
VkImportFenceWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
fence*: VkFence
flags*: VkFenceImportFlags
handleType*: VkExternalFenceHandleTypeFlagBits
handle*: HANDLE
name*: LPCWSTR
VkExportFenceWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
pAttributes*: ptr SECURITY_ATTRIBUTES
dwAccess*: DWORD
name*: LPCWSTR
VkFenceGetWin32HandleInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
fence*: VkFence
handleType*: VkExternalFenceHandleTypeFlagBits
VkImportFenceFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
fence*: VkFence
flags*: VkFenceImportFlags
handleType*: VkExternalFenceHandleTypeFlagBits
fd*: int
VkFenceGetFdInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
fence*: VkFence
handleType*: VkExternalFenceHandleTypeFlagBits
VkPhysicalDeviceMultiviewFeatures* = object
sType*: VkStructureType
pNext*: pointer
multiview*: VkBool32
multiviewGeometryShader*: VkBool32
multiviewTessellationShader*: VkBool32
VkPhysicalDeviceMultiviewFeaturesKHR* = object
VkPhysicalDeviceMultiviewProperties* = object
sType*: VkStructureType
pNext*: pointer
maxMultiviewViewCount*: uint32
maxMultiviewInstanceIndex*: uint32
VkPhysicalDeviceMultiviewPropertiesKHR* = object
VkRenderPassMultiviewCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
subpassCount*: uint32
pViewMasks*: ptr uint32
dependencyCount*: uint32
pViewOffsets*: ptr int32
correlationMaskCount*: uint32
pCorrelationMasks*: ptr uint32
VkRenderPassMultiviewCreateInfoKHR* = object
VkSurfaceCapabilities2EXT* = object
sType*: VkStructureType
pNext*: pointer
minImageCount*: uint32
maxImageCount*: uint32
currentExtent*: VkExtent2D
minImageExtent*: VkExtent2D
maxImageExtent*: VkExtent2D
maxImageArrayLayers*: uint32
supportedTransforms*: VkSurfaceTransformFlagsKHR
currentTransform*: VkSurfaceTransformFlagBitsKHR
supportedCompositeAlpha*: VkCompositeAlphaFlagsKHR
supportedUsageFlags*: VkImageUsageFlags
supportedSurfaceCounters*: VkSurfaceCounterFlagsEXT
VkDisplayPowerInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
powerState*: VkDisplayPowerStateEXT
VkDeviceEventInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
deviceEvent*: VkDeviceEventTypeEXT
VkDisplayEventInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
displayEvent*: VkDisplayEventTypeEXT
VkSwapchainCounterCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
surfaceCounters*: VkSurfaceCounterFlagsEXT
VkPhysicalDeviceGroupProperties* = object
sType*: VkStructureType
pNext*: pointer
physicalDeviceCount*: uint32
physicalDevices*: array[VK_MAX_DEVICE_GROUP_SIZE, VkPhysicalDevice]
subsetAllocation*: VkBool32
VkPhysicalDeviceGroupPropertiesKHR* = object
VkMemoryAllocateFlagsInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkMemoryAllocateFlags
deviceMask*: uint32
VkMemoryAllocateFlagsInfoKHR* = object
VkBindBufferMemoryInfo* = object
sType*: VkStructureType
pNext*: pointer
buffer*: VkBuffer
memory*: VkDeviceMemory
memoryOffset*: VkDeviceSize
VkBindBufferMemoryInfoKHR* = object
VkBindBufferMemoryDeviceGroupInfo* = object
sType*: VkStructureType
pNext*: pointer
deviceIndexCount*: uint32
pDeviceIndices*: ptr uint32
VkBindBufferMemoryDeviceGroupInfoKHR* = object
VkBindImageMemoryInfo* = object
sType*: VkStructureType
pNext*: pointer
image*: VkImage
memory*: VkDeviceMemory
memoryOffset*: VkDeviceSize
VkBindImageMemoryInfoKHR* = object
VkBindImageMemoryDeviceGroupInfo* = object
sType*: VkStructureType
pNext*: pointer
deviceIndexCount*: uint32
pDeviceIndices*: ptr uint32
splitInstanceBindRegionCount*: uint32
pSplitInstanceBindRegions*: ptr VkRect2D
VkBindImageMemoryDeviceGroupInfoKHR* = object
VkDeviceGroupRenderPassBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
deviceMask*: uint32
deviceRenderAreaCount*: uint32
pDeviceRenderAreas*: ptr VkRect2D
VkDeviceGroupRenderPassBeginInfoKHR* = object
VkDeviceGroupCommandBufferBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
deviceMask*: uint32
VkDeviceGroupCommandBufferBeginInfoKHR* = object
VkDeviceGroupSubmitInfo* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreCount*: uint32
pWaitSemaphoreDeviceIndices*: ptr uint32
commandBufferCount*: uint32
pCommandBufferDeviceMasks*: ptr uint32
signalSemaphoreCount*: uint32
pSignalSemaphoreDeviceIndices*: ptr uint32
VkDeviceGroupSubmitInfoKHR* = object
VkDeviceGroupBindSparseInfo* = object
sType*: VkStructureType
pNext*: pointer
resourceDeviceIndex*: uint32
memoryDeviceIndex*: uint32
VkDeviceGroupBindSparseInfoKHR* = object
VkDeviceGroupPresentCapabilitiesKHR* = object
sType*: VkStructureType
pNext*: pointer
presentMask*: array[VK_MAX_DEVICE_GROUP_SIZE, uint32]
modes*: VkDeviceGroupPresentModeFlagsKHR
VkImageSwapchainCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
swapchain*: VkSwapchainKHR
VkBindImageMemorySwapchainInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
swapchain*: VkSwapchainKHR
imageIndex*: uint32
VkAcquireNextImageInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
swapchain*: VkSwapchainKHR
timeout*: uint64
semaphore*: VkSemaphore
fence*: VkFence
deviceMask*: uint32
VkDeviceGroupPresentInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
swapchainCount*: uint32
pDeviceMasks*: ptr uint32
mode*: VkDeviceGroupPresentModeFlagBitsKHR
VkDeviceGroupDeviceCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
physicalDeviceCount*: uint32
pPhysicalDevices*: ptr VkPhysicalDevice
VkDeviceGroupDeviceCreateInfoKHR* = object
VkDeviceGroupSwapchainCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
modes*: VkDeviceGroupPresentModeFlagsKHR
VkDescriptorUpdateTemplateEntry* = object
dstBinding*: uint32
dstArrayElement*: uint32
descriptorCount*: uint32
descriptorType*: VkDescriptorType
offset*: uint
stride*: uint
VkDescriptorUpdateTemplateEntryKHR* = object
VkDescriptorUpdateTemplateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDescriptorUpdateTemplateCreateFlags
descriptorUpdateEntryCount*: uint32
pDescriptorUpdateEntries*: ptr VkDescriptorUpdateTemplateEntry
templateType*: VkDescriptorUpdateTemplateType
descriptorSetLayout*: VkDescriptorSetLayout
pipelineBindPoint*: VkPipelineBindPoint
pipelineLayout*: VkPipelineLayout
set*: uint32
VkDescriptorUpdateTemplateCreateInfoKHR* = object
VkXYColorEXT* = object
x*: float32
y*: float32
VkHdrMetadataEXT* = object
sType*: VkStructureType
pNext*: pointer
displayPrimaryRed*: VkXYColorEXT
displayPrimaryGreen*: VkXYColorEXT
displayPrimaryBlue*: VkXYColorEXT
whitePoint*: VkXYColorEXT
maxLuminance*: float32
minLuminance*: float32
maxContentLightLevel*: float32
maxFrameAverageLightLevel*: float32
VkDisplayNativeHdrSurfaceCapabilitiesAMD* = object
sType*: VkStructureType
pNext*: pointer
localDimmingSupport*: VkBool32
VkSwapchainDisplayNativeHdrCreateInfoAMD* = object
sType*: VkStructureType
pNext*: pointer
localDimmingEnable*: VkBool32
VkRefreshCycleDurationGOOGLE* = object
refreshDuration*: uint64
VkPastPresentationTimingGOOGLE* = object
presentID*: uint32
desiredPresentTime*: uint64
actualPresentTime*: uint64
earliestPresentTime*: uint64
presentMargin*: uint64
VkPresentTimesInfoGOOGLE* = object
sType*: VkStructureType
pNext*: pointer
swapchainCount*: uint32
pTimes*: ptr VkPresentTimeGOOGLE
VkPresentTimeGOOGLE* = object
presentID*: uint32
desiredPresentTime*: uint64
VkIOSSurfaceCreateInfoMVK* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkIOSSurfaceCreateFlagsMVK
pView*: pointer
VkMacOSSurfaceCreateInfoMVK* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkMacOSSurfaceCreateFlagsMVK
pView*: pointer
VkMetalSurfaceCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkMetalSurfaceCreateFlagsEXT
pLayer*: ptr CAMetalLayer
VkViewportWScalingNV* = object
xcoeff*: float32
ycoeff*: float32
VkPipelineViewportWScalingStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
viewportWScalingEnable*: VkBool32
viewportCount*: uint32
pViewportWScalings*: ptr VkViewportWScalingNV
VkViewportSwizzleNV* = object
x*: VkViewportCoordinateSwizzleNV
y*: VkViewportCoordinateSwizzleNV
z*: VkViewportCoordinateSwizzleNV
w*: VkViewportCoordinateSwizzleNV
VkPipelineViewportSwizzleStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineViewportSwizzleStateCreateFlagsNV
viewportCount*: uint32
pViewportSwizzles*: ptr VkViewportSwizzleNV
VkPhysicalDeviceDiscardRectanglePropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxDiscardRectangles*: uint32
VkPipelineDiscardRectangleStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineDiscardRectangleStateCreateFlagsEXT
discardRectangleMode*: VkDiscardRectangleModeEXT
discardRectangleCount*: uint32
pDiscardRectangles*: ptr VkRect2D
VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* = object
sType*: VkStructureType
pNext*: pointer
perViewPositionAllComponents*: VkBool32
VkInputAttachmentAspectReference* = object
subpass*: uint32
inputAttachmentIndex*: uint32
aspectMask*: VkImageAspectFlags
VkInputAttachmentAspectReferenceKHR* = object
VkRenderPassInputAttachmentAspectCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
aspectReferenceCount*: uint32
pAspectReferences*: ptr VkInputAttachmentAspectReference
VkRenderPassInputAttachmentAspectCreateInfoKHR* = object
VkPhysicalDeviceSurfaceInfo2KHR* = object
sType*: VkStructureType
pNext*: pointer
surface*: VkSurfaceKHR
VkSurfaceCapabilities2KHR* = object
sType*: VkStructureType
pNext*: pointer
surfaceCapabilities*: VkSurfaceCapabilitiesKHR
VkSurfaceFormat2KHR* = object
sType*: VkStructureType
pNext*: pointer
surfaceFormat*: VkSurfaceFormatKHR
VkDisplayProperties2KHR* = object
sType*: VkStructureType
pNext*: pointer
displayProperties*: VkDisplayPropertiesKHR
VkDisplayPlaneProperties2KHR* = object
sType*: VkStructureType
pNext*: pointer
displayPlaneProperties*: VkDisplayPlanePropertiesKHR
VkDisplayModeProperties2KHR* = object
sType*: VkStructureType
pNext*: pointer
displayModeProperties*: VkDisplayModePropertiesKHR
VkDisplayPlaneInfo2KHR* = object
sType*: VkStructureType
pNext*: pointer
mode*: VkDisplayModeKHR
planeIndex*: uint32
VkDisplayPlaneCapabilities2KHR* = object
sType*: VkStructureType
pNext*: pointer
capabilities*: VkDisplayPlaneCapabilitiesKHR
VkSharedPresentSurfaceCapabilitiesKHR* = object
sType*: VkStructureType
pNext*: pointer
sharedPresentSupportedUsageFlags*: VkImageUsageFlags
VkPhysicalDevice16BitStorageFeatures* = object
sType*: VkStructureType
pNext*: pointer
storageBuffer16BitAccess*: VkBool32
uniformAndStorageBuffer16BitAccess*: VkBool32
storagePushConstant16*: VkBool32
storageInputOutput16*: VkBool32
VkPhysicalDevice16BitStorageFeaturesKHR* = object
VkPhysicalDeviceSubgroupProperties* = object
sType*: VkStructureType
pNext*: pointer
subgroupSize*: uint32
supportedStages*: VkShaderStageFlags
supportedOperations*: VkSubgroupFeatureFlags
quadOperationsInAllStages*: VkBool32
VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* = object
sType*: VkStructureType
pNext*: pointer
shaderSubgroupExtendedTypes*: VkBool32
VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR* = object
VkBufferMemoryRequirementsInfo2* = object
sType*: VkStructureType
pNext*: pointer
buffer*: VkBuffer
VkBufferMemoryRequirementsInfo2KHR* = object
VkImageMemoryRequirementsInfo2* = object
sType*: VkStructureType
pNext*: pointer
image*: VkImage
VkImageMemoryRequirementsInfo2KHR* = object
VkImageSparseMemoryRequirementsInfo2* = object
sType*: VkStructureType
pNext*: pointer
image*: VkImage
VkImageSparseMemoryRequirementsInfo2KHR* = object
VkMemoryRequirements2* = object
sType*: VkStructureType
pNext*: pointer
memoryRequirements*: VkMemoryRequirements
VkMemoryRequirements2KHR* = object
VkSparseImageMemoryRequirements2* = object
sType*: VkStructureType
pNext*: pointer
memoryRequirements*: VkSparseImageMemoryRequirements
VkSparseImageMemoryRequirements2KHR* = object
VkPhysicalDevicePointClippingProperties* = object
sType*: VkStructureType
pNext*: pointer
pointClippingBehavior*: VkPointClippingBehavior
VkPhysicalDevicePointClippingPropertiesKHR* = object
VkMemoryDedicatedRequirements* = object
sType*: VkStructureType
pNext*: pointer
prefersDedicatedAllocation*: VkBool32
requiresDedicatedAllocation*: VkBool32
VkMemoryDedicatedRequirementsKHR* = object
VkMemoryDedicatedAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
image*: VkImage
buffer*: VkBuffer
VkMemoryDedicatedAllocateInfoKHR* = object
VkImageViewUsageCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
usage*: VkImageUsageFlags
VkImageViewUsageCreateInfoKHR* = object
VkPipelineTessellationDomainOriginStateCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
domainOrigin*: VkTessellationDomainOrigin
VkPipelineTessellationDomainOriginStateCreateInfoKHR* = object
VkSamplerYcbcrConversionInfo* = object
sType*: VkStructureType
pNext*: pointer
conversion*: VkSamplerYcbcrConversion
VkSamplerYcbcrConversionInfoKHR* = object
VkSamplerYcbcrConversionCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
format*: VkFormat
ycbcrModel*: VkSamplerYcbcrModelConversion
ycbcrRange*: VkSamplerYcbcrRange
components*: VkComponentMapping
xChromaOffset*: VkChromaLocation
yChromaOffset*: VkChromaLocation
chromaFilter*: VkFilter
forceExplicitReconstruction*: VkBool32
VkSamplerYcbcrConversionCreateInfoKHR* = object
VkBindImagePlaneMemoryInfo* = object
sType*: VkStructureType
pNext*: pointer
planeAspect*: VkImageAspectFlagBits
VkBindImagePlaneMemoryInfoKHR* = object
VkImagePlaneMemoryRequirementsInfo* = object
sType*: VkStructureType
pNext*: pointer
planeAspect*: VkImageAspectFlagBits
VkImagePlaneMemoryRequirementsInfoKHR* = object
VkPhysicalDeviceSamplerYcbcrConversionFeatures* = object
sType*: VkStructureType
pNext*: pointer
samplerYcbcrConversion*: VkBool32
VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR* = object
VkSamplerYcbcrConversionImageFormatProperties* = object
sType*: VkStructureType
pNext*: pointer
combinedImageSamplerDescriptorCount*: uint32
VkSamplerYcbcrConversionImageFormatPropertiesKHR* = object
VkTextureLODGatherFormatPropertiesAMD* = object
sType*: VkStructureType
pNext*: pointer
supportsTextureGatherLODBiasAMD*: VkBool32
VkConditionalRenderingBeginInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
buffer*: VkBuffer
offset*: VkDeviceSize
flags*: VkConditionalRenderingFlagsEXT
VkProtectedSubmitInfo* = object
sType*: VkStructureType
pNext*: pointer
protectedSubmit*: VkBool32
VkPhysicalDeviceProtectedMemoryFeatures* = object
sType*: VkStructureType
pNext*: pointer
protectedMemory*: VkBool32
VkPhysicalDeviceProtectedMemoryProperties* = object
sType*: VkStructureType
pNext*: pointer
protectedNoFault*: VkBool32
VkDeviceQueueInfo2* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDeviceQueueCreateFlags
queueFamilyIndex*: uint32
queueIndex*: uint32
VkPipelineCoverageToColorStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCoverageToColorStateCreateFlagsNV
coverageToColorEnable*: VkBool32
coverageToColorLocation*: uint32
VkPhysicalDeviceSamplerFilterMinmaxProperties* = object
sType*: VkStructureType
pNext*: pointer
filterMinmaxSingleComponentFormats*: VkBool32
filterMinmaxImageComponentMapping*: VkBool32
VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* = object
VkSampleLocationEXT* = object
x*: float32
y*: float32
VkSampleLocationsInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
sampleLocationsPerPixel*: VkSampleCountFlagBits
sampleLocationGridSize*: VkExtent2D
sampleLocationsCount*: uint32
pSampleLocations*: ptr VkSampleLocationEXT
VkAttachmentSampleLocationsEXT* = object
attachmentIndex*: uint32
sampleLocationsInfo*: VkSampleLocationsInfoEXT
VkSubpassSampleLocationsEXT* = object
subpassIndex*: uint32
sampleLocationsInfo*: VkSampleLocationsInfoEXT
VkRenderPassSampleLocationsBeginInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
attachmentInitialSampleLocationsCount*: uint32
pAttachmentInitialSampleLocations*: ptr VkAttachmentSampleLocationsEXT
postSubpassSampleLocationsCount*: uint32
pPostSubpassSampleLocations*: ptr VkSubpassSampleLocationsEXT
VkPipelineSampleLocationsStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
sampleLocationsEnable*: VkBool32
sampleLocationsInfo*: VkSampleLocationsInfoEXT
VkPhysicalDeviceSampleLocationsPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
sampleLocationSampleCounts*: VkSampleCountFlags
maxSampleLocationGridSize*: VkExtent2D
sampleLocationCoordinateRange*: array[2, float32]
sampleLocationSubPixelBits*: uint32
variableSampleLocations*: VkBool32
VkMultisamplePropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxSampleLocationGridSize*: VkExtent2D
VkSamplerReductionModeCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
reductionMode*: VkSamplerReductionMode
VkSamplerReductionModeCreateInfoEXT* = object
VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
advancedBlendCoherentOperations*: VkBool32
VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
advancedBlendMaxColorAttachments*: uint32
advancedBlendIndependentBlend*: VkBool32
advancedBlendNonPremultipliedSrcColor*: VkBool32
advancedBlendNonPremultipliedDstColor*: VkBool32
advancedBlendCorrelatedOverlap*: VkBool32
advancedBlendAllOperations*: VkBool32
VkPipelineColorBlendAdvancedStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
srcPremultiplied*: VkBool32
dstPremultiplied*: VkBool32
blendOverlap*: VkBlendOverlapEXT
VkPhysicalDeviceInlineUniformBlockFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
inlineUniformBlock*: VkBool32
descriptorBindingInlineUniformBlockUpdateAfterBind*: VkBool32
VkPhysicalDeviceInlineUniformBlockPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxInlineUniformBlockSize*: uint32
maxPerStageDescriptorInlineUniformBlocks*: uint32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks*: uint32
maxDescriptorSetInlineUniformBlocks*: uint32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks*: uint32
VkWriteDescriptorSetInlineUniformBlockEXT* = object
sType*: VkStructureType
pNext*: pointer
dataSize*: uint32
pData*: pointer
VkDescriptorPoolInlineUniformBlockCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
maxInlineUniformBlockBindings*: uint32
VkPipelineCoverageModulationStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCoverageModulationStateCreateFlagsNV
coverageModulationMode*: VkCoverageModulationModeNV
coverageModulationTableEnable*: VkBool32
coverageModulationTableCount*: uint32
pCoverageModulationTable*: ptr float32
VkImageFormatListCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
viewFormatCount*: uint32
pViewFormats*: ptr VkFormat
VkImageFormatListCreateInfoKHR* = object
VkValidationCacheCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkValidationCacheCreateFlagsEXT
initialDataSize*: uint
pInitialData*: pointer
VkShaderModuleValidationCacheCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
validationCache*: VkValidationCacheEXT
VkPhysicalDeviceMaintenance3Properties* = object
sType*: VkStructureType
pNext*: pointer
maxPerSetDescriptors*: uint32
maxMemoryAllocationSize*: VkDeviceSize
VkPhysicalDeviceMaintenance3PropertiesKHR* = object
VkDescriptorSetLayoutSupport* = object
sType*: VkStructureType
pNext*: pointer
supported*: VkBool32
VkDescriptorSetLayoutSupportKHR* = object
VkPhysicalDeviceShaderDrawParametersFeatures* = object
sType*: VkStructureType
pNext*: pointer
shaderDrawParameters*: VkBool32
VkPhysicalDeviceShaderDrawParameterFeatures* = object
VkPhysicalDeviceShaderFloat16Int8Features* = object
sType*: VkStructureType
pNext*: pointer
shaderFloat16*: VkBool32
shaderInt8*: VkBool32
VkPhysicalDeviceShaderFloat16Int8FeaturesKHR* = object
VkPhysicalDeviceFloat16Int8FeaturesKHR* = object
VkPhysicalDeviceFloatControlsProperties* = object
sType*: VkStructureType
pNext*: pointer
denormBehaviorIndependence*: VkShaderFloatControlsIndependence
roundingModeIndependence*: VkShaderFloatControlsIndependence
shaderSignedZeroInfNanPreserveFloat16*: VkBool32
shaderSignedZeroInfNanPreserveFloat32*: VkBool32
shaderSignedZeroInfNanPreserveFloat64*: VkBool32
shaderDenormPreserveFloat16*: VkBool32
shaderDenormPreserveFloat32*: VkBool32
shaderDenormPreserveFloat64*: VkBool32
shaderDenormFlushToZeroFloat16*: VkBool32
shaderDenormFlushToZeroFloat32*: VkBool32
shaderDenormFlushToZeroFloat64*: VkBool32
shaderRoundingModeRTEFloat16*: VkBool32
shaderRoundingModeRTEFloat32*: VkBool32
shaderRoundingModeRTEFloat64*: VkBool32
shaderRoundingModeRTZFloat16*: VkBool32
shaderRoundingModeRTZFloat32*: VkBool32
shaderRoundingModeRTZFloat64*: VkBool32
VkPhysicalDeviceFloatControlsPropertiesKHR* = object
VkPhysicalDeviceHostQueryResetFeatures* = object
sType*: VkStructureType
pNext*: pointer
hostQueryReset*: VkBool32
VkPhysicalDeviceHostQueryResetFeaturesEXT* = object
VkNativeBufferUsage2ANDROID* = object
consumer*: uint64
producer*: uint64
VkNativeBufferANDROID* = object
sType*: VkStructureType
pNext*: pointer
handle*: pointer
stride*: int
format*: int
usage*: int
usage2*: VkNativeBufferUsage2ANDROID
VkSwapchainImageCreateInfoANDROID* = object
sType*: VkStructureType
pNext*: pointer
usage*: VkSwapchainImageUsageFlagsANDROID
VkPhysicalDevicePresentationPropertiesANDROID* = object
sType*: VkStructureType
pNext*: pointer
sharedImage*: VkBool32
VkShaderResourceUsageAMD* = object
numUsedVgprs*: uint32
numUsedSgprs*: uint32
ldsSizePerLocalWorkGroup*: uint32
ldsUsageSizeInBytes*: uint
scratchMemUsageInBytes*: uint
VkShaderStatisticsInfoAMD* = object
shaderStageMask*: VkShaderStageFlags
resourceUsage*: VkShaderResourceUsageAMD
numPhysicalVgprs*: uint32
numPhysicalSgprs*: uint32
numAvailableVgprs*: uint32
numAvailableSgprs*: uint32
computeWorkGroupSize*: array[3, uint32]
VkDeviceQueueGlobalPriorityCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
globalPriority*: VkQueueGlobalPriorityEXT
VkDebugUtilsObjectNameInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
objectType*: VkObjectType
objectHandle*: uint64
pObjectName*: cstring
VkDebugUtilsObjectTagInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
objectType*: VkObjectType
objectHandle*: uint64
tagName*: uint64
tagSize*: uint
pTag*: pointer
VkDebugUtilsLabelEXT* = object
sType*: VkStructureType
pNext*: pointer
pLabelName*: cstring
color*: array[4, float32]
VkDebugUtilsMessengerCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDebugUtilsMessengerCreateFlagsEXT
messageSeverity*: VkDebugUtilsMessageSeverityFlagsEXT
messageType*: VkDebugUtilsMessageTypeFlagsEXT
pfnUserCallback*: PFN_vkDebugUtilsMessengerCallbackEXT
pUserData*: pointer
VkDebugUtilsMessengerCallbackDataEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDebugUtilsMessengerCallbackDataFlagsEXT
pMessageIdName*: cstring
messageIdNumber*: int32
pMessage*: cstring
queueLabelCount*: uint32
pQueueLabels*: ptr VkDebugUtilsLabelEXT
cmdBufLabelCount*: uint32
pCmdBufLabels*: ptr VkDebugUtilsLabelEXT
objectCount*: uint32
pObjects*: ptr VkDebugUtilsObjectNameInfoEXT
VkImportMemoryHostPointerInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
handleType*: VkExternalMemoryHandleTypeFlagBits
pHostPointer*: pointer
VkMemoryHostPointerPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
memoryTypeBits*: uint32
VkPhysicalDeviceExternalMemoryHostPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
minImportedHostPointerAlignment*: VkDeviceSize
VkPhysicalDeviceConservativeRasterizationPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
primitiveOverestimationSize*: float32
maxExtraPrimitiveOverestimationSize*: float32
extraPrimitiveOverestimationSizeGranularity*: float32
primitiveUnderestimation*: VkBool32
conservativePointAndLineRasterization*: VkBool32
degenerateTrianglesRasterized*: VkBool32
degenerateLinesRasterized*: VkBool32
fullyCoveredFragmentShaderInputVariable*: VkBool32
conservativeRasterizationPostDepthCoverage*: VkBool32
VkCalibratedTimestampInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
timeDomain*: VkTimeDomainEXT
VkPhysicalDeviceShaderCorePropertiesAMD* = object
sType*: VkStructureType
pNext*: pointer
shaderEngineCount*: uint32
shaderArraysPerEngineCount*: uint32
computeUnitsPerShaderArray*: uint32
simdPerComputeUnit*: uint32
wavefrontsPerSimd*: uint32
wavefrontSize*: uint32
sgprsPerSimd*: uint32
minSgprAllocation*: uint32
maxSgprAllocation*: uint32
sgprAllocationGranularity*: uint32
vgprsPerSimd*: uint32
minVgprAllocation*: uint32
maxVgprAllocation*: uint32
vgprAllocationGranularity*: uint32
VkPhysicalDeviceShaderCoreProperties2AMD* = object
sType*: VkStructureType
pNext*: pointer
shaderCoreFeatures*: VkShaderCorePropertiesFlagsAMD
activeComputeUnitCount*: uint32
VkPipelineRasterizationConservativeStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineRasterizationConservativeStateCreateFlagsEXT
conservativeRasterizationMode*: VkConservativeRasterizationModeEXT
extraPrimitiveOverestimationSize*: float32
VkPhysicalDeviceDescriptorIndexingFeatures* = object
sType*: VkStructureType
pNext*: pointer
shaderInputAttachmentArrayDynamicIndexing*: VkBool32
shaderUniformTexelBufferArrayDynamicIndexing*: VkBool32
shaderStorageTexelBufferArrayDynamicIndexing*: VkBool32
shaderUniformBufferArrayNonUniformIndexing*: VkBool32
shaderSampledImageArrayNonUniformIndexing*: VkBool32
shaderStorageBufferArrayNonUniformIndexing*: VkBool32
shaderStorageImageArrayNonUniformIndexing*: VkBool32
shaderInputAttachmentArrayNonUniformIndexing*: VkBool32
shaderUniformTexelBufferArrayNonUniformIndexing*: VkBool32
shaderStorageTexelBufferArrayNonUniformIndexing*: VkBool32
descriptorBindingUniformBufferUpdateAfterBind*: VkBool32
descriptorBindingSampledImageUpdateAfterBind*: VkBool32
descriptorBindingStorageImageUpdateAfterBind*: VkBool32
descriptorBindingStorageBufferUpdateAfterBind*: VkBool32
descriptorBindingUniformTexelBufferUpdateAfterBind*: VkBool32
descriptorBindingStorageTexelBufferUpdateAfterBind*: VkBool32
descriptorBindingUpdateUnusedWhilePending*: VkBool32
descriptorBindingPartiallyBound*: VkBool32
descriptorBindingVariableDescriptorCount*: VkBool32
runtimeDescriptorArray*: VkBool32
VkPhysicalDeviceDescriptorIndexingFeaturesEXT* = object
VkPhysicalDeviceDescriptorIndexingProperties* = object
sType*: VkStructureType
pNext*: pointer
maxUpdateAfterBindDescriptorsInAllPools*: uint32
shaderUniformBufferArrayNonUniformIndexingNative*: VkBool32
shaderSampledImageArrayNonUniformIndexingNative*: VkBool32
shaderStorageBufferArrayNonUniformIndexingNative*: VkBool32
shaderStorageImageArrayNonUniformIndexingNative*: VkBool32
shaderInputAttachmentArrayNonUniformIndexingNative*: VkBool32
robustBufferAccessUpdateAfterBind*: VkBool32
quadDivergentImplicitLod*: VkBool32
maxPerStageDescriptorUpdateAfterBindSamplers*: uint32
maxPerStageDescriptorUpdateAfterBindUniformBuffers*: uint32
maxPerStageDescriptorUpdateAfterBindStorageBuffers*: uint32
maxPerStageDescriptorUpdateAfterBindSampledImages*: uint32
maxPerStageDescriptorUpdateAfterBindStorageImages*: uint32
maxPerStageDescriptorUpdateAfterBindInputAttachments*: uint32
maxPerStageUpdateAfterBindResources*: uint32
maxDescriptorSetUpdateAfterBindSamplers*: uint32
maxDescriptorSetUpdateAfterBindUniformBuffers*: uint32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic*: uint32
maxDescriptorSetUpdateAfterBindStorageBuffers*: uint32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic*: uint32
maxDescriptorSetUpdateAfterBindSampledImages*: uint32
maxDescriptorSetUpdateAfterBindStorageImages*: uint32
maxDescriptorSetUpdateAfterBindInputAttachments*: uint32
VkPhysicalDeviceDescriptorIndexingPropertiesEXT* = object
VkDescriptorSetLayoutBindingFlagsCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
bindingCount*: uint32
pBindingFlags*: ptr VkDescriptorBindingFlags
VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* = object
VkDescriptorSetVariableDescriptorCountAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
descriptorSetCount*: uint32
pDescriptorCounts*: ptr uint32
VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* = object
VkDescriptorSetVariableDescriptorCountLayoutSupport* = object
sType*: VkStructureType
pNext*: pointer
maxVariableDescriptorCount*: uint32
VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* = object
VkAttachmentDescription2* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkAttachmentDescriptionFlags
format*: VkFormat
samples*: VkSampleCountFlagBits
loadOp*: VkAttachmentLoadOp
storeOp*: VkAttachmentStoreOp
stencilLoadOp*: VkAttachmentLoadOp
stencilStoreOp*: VkAttachmentStoreOp
initialLayout*: VkImageLayout
finalLayout*: VkImageLayout
VkAttachmentDescription2KHR* = object
VkAttachmentReference2* = object
sType*: VkStructureType
pNext*: pointer
attachment*: uint32
layout*: VkImageLayout
aspectMask*: VkImageAspectFlags
VkAttachmentReference2KHR* = object
VkSubpassDescription2* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkSubpassDescriptionFlags
pipelineBindPoint*: VkPipelineBindPoint
viewMask*: uint32
inputAttachmentCount*: uint32
pInputAttachments*: ptr VkAttachmentReference2
colorAttachmentCount*: uint32
pColorAttachments*: ptr VkAttachmentReference2
pResolveAttachments*: ptr VkAttachmentReference2
pDepthStencilAttachment*: ptr VkAttachmentReference2
preserveAttachmentCount*: uint32
pPreserveAttachments*: ptr uint32
VkSubpassDescription2KHR* = object
VkSubpassDependency2* = object
sType*: VkStructureType
pNext*: pointer
srcSubpass*: uint32
dstSubpass*: uint32
srcStageMask*: VkPipelineStageFlags
dstStageMask*: VkPipelineStageFlags
srcAccessMask*: VkAccessFlags
dstAccessMask*: VkAccessFlags
dependencyFlags*: VkDependencyFlags
viewOffset*: int32
VkSubpassDependency2KHR* = object
VkRenderPassCreateInfo2* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkRenderPassCreateFlags
attachmentCount*: uint32
pAttachments*: ptr VkAttachmentDescription2
subpassCount*: uint32
pSubpasses*: ptr VkSubpassDescription2
dependencyCount*: uint32
pDependencies*: ptr VkSubpassDependency2
correlatedViewMaskCount*: uint32
pCorrelatedViewMasks*: ptr uint32
VkRenderPassCreateInfo2KHR* = object
VkSubpassBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
contents*: VkSubpassContents
VkSubpassBeginInfoKHR* = object
VkSubpassEndInfo* = object
sType*: VkStructureType
pNext*: pointer
VkSubpassEndInfoKHR* = object
VkPhysicalDeviceTimelineSemaphoreFeatures* = object
sType*: VkStructureType
pNext*: pointer
timelineSemaphore*: VkBool32
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR* = object
VkPhysicalDeviceTimelineSemaphoreProperties* = object
sType*: VkStructureType
pNext*: pointer
maxTimelineSemaphoreValueDifference*: uint64
VkPhysicalDeviceTimelineSemaphorePropertiesKHR* = object
VkSemaphoreTypeCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
semaphoreType*: VkSemaphoreType
initialValue*: uint64
VkSemaphoreTypeCreateInfoKHR* = object
VkTimelineSemaphoreSubmitInfo* = object
sType*: VkStructureType
pNext*: pointer
waitSemaphoreValueCount*: uint32
pWaitSemaphoreValues*: ptr uint64
signalSemaphoreValueCount*: uint32
pSignalSemaphoreValues*: ptr uint64
VkTimelineSemaphoreSubmitInfoKHR* = object
VkSemaphoreWaitInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkSemaphoreWaitFlags
semaphoreCount*: uint32
pSemaphores*: ptr VkSemaphore
pValues*: ptr uint64
VkSemaphoreWaitInfoKHR* = object
VkSemaphoreSignalInfo* = object
sType*: VkStructureType
pNext*: pointer
semaphore*: VkSemaphore
value*: uint64
VkSemaphoreSignalInfoKHR* = object
VkVertexInputBindingDivisorDescriptionEXT* = object
binding*: uint32
divisor*: uint32
VkPipelineVertexInputDivisorStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
vertexBindingDivisorCount*: uint32
pVertexBindingDivisors*: ptr VkVertexInputBindingDivisorDescriptionEXT
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxVertexAttribDivisor*: uint32
VkPhysicalDevicePCIBusInfoPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
pciDomain*: uint32
pciBus*: uint32
pciDevice*: uint32
pciFunction*: uint32
VkImportAndroidHardwareBufferInfoANDROID* = object
sType*: VkStructureType
pNext*: pointer
buffer*: ptr AHardwareBuffer
VkAndroidHardwareBufferUsageANDROID* = object
sType*: VkStructureType
pNext*: pointer
androidHardwareBufferUsage*: uint64
VkAndroidHardwareBufferPropertiesANDROID* = object
sType*: VkStructureType
pNext*: pointer
allocationSize*: VkDeviceSize
memoryTypeBits*: uint32
VkMemoryGetAndroidHardwareBufferInfoANDROID* = object
sType*: VkStructureType
pNext*: pointer
memory*: VkDeviceMemory
VkAndroidHardwareBufferFormatPropertiesANDROID* = object
sType*: VkStructureType
pNext*: pointer
format*: VkFormat
externalFormat*: uint64
formatFeatures*: VkFormatFeatureFlags
samplerYcbcrConversionComponents*: VkComponentMapping
suggestedYcbcrModel*: VkSamplerYcbcrModelConversion
suggestedYcbcrRange*: VkSamplerYcbcrRange
suggestedXChromaOffset*: VkChromaLocation
suggestedYChromaOffset*: VkChromaLocation
VkCommandBufferInheritanceConditionalRenderingInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
conditionalRenderingEnable*: VkBool32
VkExternalFormatANDROID* = object
sType*: VkStructureType
pNext*: pointer
externalFormat*: uint64
VkPhysicalDevice8BitStorageFeatures* = object
sType*: VkStructureType
pNext*: pointer
storageBuffer8BitAccess*: VkBool32
uniformAndStorageBuffer8BitAccess*: VkBool32
storagePushConstant8*: VkBool32
VkPhysicalDevice8BitStorageFeaturesKHR* = object
VkPhysicalDeviceConditionalRenderingFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
conditionalRendering*: VkBool32
inheritedConditionalRendering*: VkBool32
VkPhysicalDeviceVulkanMemoryModelFeatures* = object
sType*: VkStructureType
pNext*: pointer
vulkanMemoryModel*: VkBool32
vulkanMemoryModelDeviceScope*: VkBool32
vulkanMemoryModelAvailabilityVisibilityChains*: VkBool32
VkPhysicalDeviceVulkanMemoryModelFeaturesKHR* = object
VkPhysicalDeviceShaderAtomicInt64Features* = object
sType*: VkStructureType
pNext*: pointer
shaderBufferInt64Atomics*: VkBool32
shaderSharedInt64Atomics*: VkBool32
VkPhysicalDeviceShaderAtomicInt64FeaturesKHR* = object
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
shaderBufferFloat32Atomics*: VkBool32
shaderBufferFloat32AtomicAdd*: VkBool32
shaderBufferFloat64Atomics*: VkBool32
shaderBufferFloat64AtomicAdd*: VkBool32
shaderSharedFloat32Atomics*: VkBool32
shaderSharedFloat32AtomicAdd*: VkBool32
shaderSharedFloat64Atomics*: VkBool32
shaderSharedFloat64AtomicAdd*: VkBool32
shaderImageFloat32Atomics*: VkBool32
shaderImageFloat32AtomicAdd*: VkBool32
sparseImageFloat32Atomics*: VkBool32
sparseImageFloat32AtomicAdd*: VkBool32
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
vertexAttributeInstanceRateDivisor*: VkBool32
vertexAttributeInstanceRateZeroDivisor*: VkBool32
VkQueueFamilyCheckpointPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
checkpointExecutionStageMask*: VkPipelineStageFlags
VkCheckpointDataNV* = object
sType*: VkStructureType
pNext*: pointer
stage*: VkPipelineStageFlagBits
pCheckpointMarker*: pointer
VkPhysicalDeviceDepthStencilResolveProperties* = object
sType*: VkStructureType
pNext*: pointer
supportedDepthResolveModes*: VkResolveModeFlags
supportedStencilResolveModes*: VkResolveModeFlags
independentResolveNone*: VkBool32
independentResolve*: VkBool32
VkPhysicalDeviceDepthStencilResolvePropertiesKHR* = object
VkSubpassDescriptionDepthStencilResolve* = object
sType*: VkStructureType
pNext*: pointer
depthResolveMode*: VkResolveModeFlagBits
stencilResolveMode*: VkResolveModeFlagBits
pDepthStencilResolveAttachment*: ptr VkAttachmentReference2
VkSubpassDescriptionDepthStencilResolveKHR* = object
VkImageViewASTCDecodeModeEXT* = object
sType*: VkStructureType
pNext*: pointer
decodeMode*: VkFormat
VkPhysicalDeviceASTCDecodeFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
decodeModeSharedExponent*: VkBool32
VkPhysicalDeviceTransformFeedbackFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
transformFeedback*: VkBool32
geometryStreams*: VkBool32
VkPhysicalDeviceTransformFeedbackPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxTransformFeedbackStreams*: uint32
maxTransformFeedbackBuffers*: uint32
maxTransformFeedbackBufferSize*: VkDeviceSize
maxTransformFeedbackStreamDataSize*: uint32
maxTransformFeedbackBufferDataSize*: uint32
maxTransformFeedbackBufferDataStride*: uint32
transformFeedbackQueries*: VkBool32
transformFeedbackStreamsLinesTriangles*: VkBool32
transformFeedbackRasterizationStreamSelect*: VkBool32
transformFeedbackDraw*: VkBool32
VkPipelineRasterizationStateStreamCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineRasterizationStateStreamCreateFlagsEXT
rasterizationStream*: uint32
VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
representativeFragmentTest*: VkBool32
VkPipelineRepresentativeFragmentTestStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
representativeFragmentTestEnable*: VkBool32
VkPhysicalDeviceExclusiveScissorFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
exclusiveScissor*: VkBool32
VkPipelineViewportExclusiveScissorStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
exclusiveScissorCount*: uint32
pExclusiveScissors*: ptr VkRect2D
VkPhysicalDeviceCornerSampledImageFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
cornerSampledImage*: VkBool32
VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
computeDerivativeGroupQuads*: VkBool32
computeDerivativeGroupLinear*: VkBool32
VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
fragmentShaderBarycentric*: VkBool32
VkPhysicalDeviceShaderImageFootprintFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
imageFootprint*: VkBool32
VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
dedicatedAllocationImageAliasing*: VkBool32
VkShadingRatePaletteNV* = object
shadingRatePaletteEntryCount*: uint32
pShadingRatePaletteEntries*: ptr VkShadingRatePaletteEntryNV
VkPipelineViewportShadingRateImageStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
shadingRateImageEnable*: VkBool32
viewportCount*: uint32
pShadingRatePalettes*: ptr VkShadingRatePaletteNV
VkPhysicalDeviceShadingRateImageFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
shadingRateImage*: VkBool32
shadingRateCoarseSampleOrder*: VkBool32
VkPhysicalDeviceShadingRateImagePropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
shadingRateTexelSize*: VkExtent2D
shadingRatePaletteSize*: uint32
shadingRateMaxCoarseSamples*: uint32
VkCoarseSampleLocationNV* = object
pixelX*: uint32
pixelY*: uint32
sample*: uint32
VkCoarseSampleOrderCustomNV* = object
shadingRate*: VkShadingRatePaletteEntryNV
sampleCount*: uint32
sampleLocationCount*: uint32
pSampleLocations*: ptr VkCoarseSampleLocationNV
VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
sampleOrderType*: VkCoarseSampleOrderTypeNV
customSampleOrderCount*: uint32
pCustomSampleOrders*: ptr VkCoarseSampleOrderCustomNV
VkPhysicalDeviceMeshShaderFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
taskShader*: VkBool32
meshShader*: VkBool32
VkPhysicalDeviceMeshShaderPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
maxDrawMeshTasksCount*: uint32
maxTaskWorkGroupInvocations*: uint32
maxTaskWorkGroupSize*: array[3, uint32]
maxTaskTotalMemorySize*: uint32
maxTaskOutputCount*: uint32
maxMeshWorkGroupInvocations*: uint32
maxMeshWorkGroupSize*: array[3, uint32]
maxMeshTotalMemorySize*: uint32
maxMeshOutputVertices*: uint32
maxMeshOutputPrimitives*: uint32
maxMeshMultiviewViewCount*: uint32
meshOutputPerVertexGranularity*: uint32
meshOutputPerPrimitiveGranularity*: uint32
VkDrawMeshTasksIndirectCommandNV* = object
taskCount*: uint32
firstTask*: uint32
VkRayTracingShaderGroupCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkRayTracingShaderGroupTypeKHR
generalShader*: uint32
closestHitShader*: uint32
anyHitShader*: uint32
intersectionShader*: uint32
VkRayTracingShaderGroupCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkRayTracingShaderGroupTypeKHR
generalShader*: uint32
closestHitShader*: uint32
anyHitShader*: uint32
intersectionShader*: uint32
pShaderGroupCaptureReplayHandle*: pointer
VkRayTracingPipelineCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCreateFlags
stageCount*: uint32
pStages*: ptr VkPipelineShaderStageCreateInfo
groupCount*: uint32
pGroups*: ptr VkRayTracingShaderGroupCreateInfoNV
maxRecursionDepth*: uint32
layout*: VkPipelineLayout
basePipelineHandle*: VkPipeline
basePipelineIndex*: int32
VkRayTracingPipelineCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCreateFlags
stageCount*: uint32
pStages*: ptr VkPipelineShaderStageCreateInfo
groupCount*: uint32
pGroups*: ptr VkRayTracingShaderGroupCreateInfoKHR
maxRecursionDepth*: uint32
libraries*: VkPipelineLibraryCreateInfoKHR
pLibraryInterface*: ptr VkRayTracingPipelineInterfaceCreateInfoKHR
layout*: VkPipelineLayout
basePipelineHandle*: VkPipeline
basePipelineIndex*: int32
VkGeometryTrianglesNV* = object
sType*: VkStructureType
pNext*: pointer
vertexData*: VkBuffer
vertexOffset*: VkDeviceSize
vertexCount*: uint32
vertexStride*: VkDeviceSize
vertexFormat*: VkFormat
indexData*: VkBuffer
indexOffset*: VkDeviceSize
indexCount*: uint32
indexType*: VkIndexType
transformData*: VkBuffer
transformOffset*: VkDeviceSize
VkGeometryAABBNV* = object
sType*: VkStructureType
pNext*: pointer
aabbData*: VkBuffer
numAABBs*: uint32
stride*: uint32
offset*: VkDeviceSize
VkGeometryDataNV* = object
triangles*: VkGeometryTrianglesNV
aabbs*: VkGeometryAABBNV
VkGeometryNV* = object
sType*: VkStructureType
pNext*: pointer
geometryType*: VkGeometryTypeKHR
geometry*: VkGeometryDataNV
flags*: VkGeometryFlagsKHR
VkAccelerationStructureInfoNV* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkAccelerationStructureTypeNV
flags*: VkBuildAccelerationStructureFlagsNV
instanceCount*: uint32
geometryCount*: uint32
pGeometries*: ptr VkGeometryNV
VkAccelerationStructureCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
compactedSize*: VkDeviceSize
info*: VkAccelerationStructureInfoNV
VkBindAccelerationStructureMemoryInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
accelerationStructure*: VkAccelerationStructureKHR
memory*: VkDeviceMemory
memoryOffset*: VkDeviceSize
deviceIndexCount*: uint32
pDeviceIndices*: ptr uint32
VkBindAccelerationStructureMemoryInfoNV* = object
VkWriteDescriptorSetAccelerationStructureKHR* = object
sType*: VkStructureType
pNext*: pointer
accelerationStructureCount*: uint32
pAccelerationStructures*: ptr VkAccelerationStructureKHR
VkWriteDescriptorSetAccelerationStructureNV* = object
VkAccelerationStructureMemoryRequirementsInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkAccelerationStructureMemoryRequirementsTypeKHR
buildType*: VkAccelerationStructureBuildTypeKHR
accelerationStructure*: VkAccelerationStructureKHR
VkAccelerationStructureMemoryRequirementsInfoNV* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkAccelerationStructureMemoryRequirementsTypeNV
accelerationStructure*: VkAccelerationStructureNV
VkPhysicalDeviceRayTracingFeaturesKHR* = object
sType*: VkStructureType
pNext*: pointer
rayTracing*: VkBool32
rayTracingShaderGroupHandleCaptureReplay*: VkBool32
rayTracingShaderGroupHandleCaptureReplayMixed*: VkBool32
rayTracingAccelerationStructureCaptureReplay*: VkBool32
rayTracingIndirectTraceRays*: VkBool32
rayTracingIndirectAccelerationStructureBuild*: VkBool32
rayTracingHostAccelerationStructureCommands*: VkBool32
rayQuery*: VkBool32
rayTracingPrimitiveCulling*: VkBool32
VkPhysicalDeviceRayTracingPropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
shaderGroupHandleSize*: uint32
maxRecursionDepth*: uint32
maxShaderGroupStride*: uint32
shaderGroupBaseAlignment*: uint32
maxGeometryCount*: uint64
maxInstanceCount*: uint64
maxPrimitiveCount*: uint64
maxDescriptorSetAccelerationStructures*: uint32
shaderGroupHandleCaptureReplaySize*: uint32
VkPhysicalDeviceRayTracingPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
shaderGroupHandleSize*: uint32
maxRecursionDepth*: uint32
maxShaderGroupStride*: uint32
shaderGroupBaseAlignment*: uint32
maxGeometryCount*: uint64
maxInstanceCount*: uint64
maxTriangleCount*: uint64
maxDescriptorSetAccelerationStructures*: uint32
VkStridedBufferRegionKHR* = object
buffer*: VkBuffer
offset*: VkDeviceSize
stride*: VkDeviceSize
size*: VkDeviceSize
VkTraceRaysIndirectCommandKHR* = object
width*: uint32
height*: uint32
depth*: uint32
VkDrmFormatModifierPropertiesListEXT* = object
sType*: VkStructureType
pNext*: pointer
drmFormatModifierCount*: uint32
pDrmFormatModifierProperties*: ptr VkDrmFormatModifierPropertiesEXT
VkDrmFormatModifierPropertiesEXT* = object
drmFormatModifier*: uint64
drmFormatModifierPlaneCount*: uint32
drmFormatModifierTilingFeatures*: VkFormatFeatureFlags
VkPhysicalDeviceImageDrmFormatModifierInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
drmFormatModifier*: uint64
sharingMode*: VkSharingMode
queueFamilyIndexCount*: uint32
pQueueFamilyIndices*: ptr uint32
VkImageDrmFormatModifierListCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
drmFormatModifierCount*: uint32
pDrmFormatModifiers*: ptr uint64
VkImageDrmFormatModifierExplicitCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
drmFormatModifier*: uint64
drmFormatModifierPlaneCount*: uint32
pPlaneLayouts*: ptr VkSubresourceLayout
VkImageDrmFormatModifierPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
drmFormatModifier*: uint64
VkImageStencilUsageCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
stencilUsage*: VkImageUsageFlags
VkImageStencilUsageCreateInfoEXT* = object
VkDeviceMemoryOverallocationCreateInfoAMD* = object
sType*: VkStructureType
pNext*: pointer
overallocationBehavior*: VkMemoryOverallocationBehaviorAMD
VkPhysicalDeviceFragmentDensityMapFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
fragmentDensityMap*: VkBool32
fragmentDensityMapDynamic*: VkBool32
fragmentDensityMapNonSubsampledImages*: VkBool32
VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
fragmentDensityMapDeferred*: VkBool32
VkPhysicalDeviceFragmentDensityMapPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
minFragmentDensityTexelSize*: VkExtent2D
maxFragmentDensityTexelSize*: VkExtent2D
fragmentDensityInvocations*: VkBool32
VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
subsampledLoads*: VkBool32
subsampledCoarseReconstructionEarlyAccess*: VkBool32
maxSubsampledArrayLayers*: uint32
maxDescriptorSetSubsampledSamplers*: uint32
VkRenderPassFragmentDensityMapCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
fragmentDensityMapAttachment*: VkAttachmentReference
VkPhysicalDeviceScalarBlockLayoutFeatures* = object
sType*: VkStructureType
pNext*: pointer
scalarBlockLayout*: VkBool32
VkPhysicalDeviceScalarBlockLayoutFeaturesEXT* = object
VkSurfaceProtectedCapabilitiesKHR* = object
sType*: VkStructureType
pNext*: pointer
supportsProtected*: VkBool32
VkPhysicalDeviceUniformBufferStandardLayoutFeatures* = object
sType*: VkStructureType
pNext*: pointer
uniformBufferStandardLayout*: VkBool32
VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR* = object
VkPhysicalDeviceDepthClipEnableFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
depthClipEnable*: VkBool32
VkPipelineRasterizationDepthClipStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineRasterizationDepthClipStateCreateFlagsEXT
depthClipEnable*: VkBool32
VkPhysicalDeviceMemoryBudgetPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
heapBudget*: array[VK_MAX_MEMORY_HEAPS, VkDeviceSize]
heapUsage*: array[VK_MAX_MEMORY_HEAPS, VkDeviceSize]
VkPhysicalDeviceMemoryPriorityFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
memoryPriority*: VkBool32
VkMemoryPriorityAllocateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
priority*: float32
VkPhysicalDeviceBufferDeviceAddressFeatures* = object
sType*: VkStructureType
pNext*: pointer
bufferDeviceAddress*: VkBool32
bufferDeviceAddressCaptureReplay*: VkBool32
bufferDeviceAddressMultiDevice*: VkBool32
VkPhysicalDeviceBufferDeviceAddressFeaturesKHR* = object
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
bufferDeviceAddress*: VkBool32
bufferDeviceAddressCaptureReplay*: VkBool32
bufferDeviceAddressMultiDevice*: VkBool32
VkPhysicalDeviceBufferAddressFeaturesEXT* = object
VkBufferDeviceAddressInfo* = object
sType*: VkStructureType
pNext*: pointer
buffer*: VkBuffer
VkBufferDeviceAddressInfoKHR* = object
VkBufferDeviceAddressInfoEXT* = object
VkBufferOpaqueCaptureAddressCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
opaqueCaptureAddress*: uint64
VkBufferOpaqueCaptureAddressCreateInfoKHR* = object
VkBufferDeviceAddressCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
deviceAddress*: VkDeviceAddress
VkPhysicalDeviceImageViewImageFormatInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
imageViewType*: VkImageViewType
VkFilterCubicImageViewImageFormatPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
filterCubic*: VkBool32
filterCubicMinmax*: VkBool32
VkPhysicalDeviceImagelessFramebufferFeatures* = object
sType*: VkStructureType
pNext*: pointer
imagelessFramebuffer*: VkBool32
VkPhysicalDeviceImagelessFramebufferFeaturesKHR* = object
VkFramebufferAttachmentsCreateInfo* = object
sType*: VkStructureType
pNext*: pointer
attachmentImageInfoCount*: uint32
pAttachmentImageInfos*: ptr VkFramebufferAttachmentImageInfo
VkFramebufferAttachmentsCreateInfoKHR* = object
VkFramebufferAttachmentImageInfo* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkImageCreateFlags
usage*: VkImageUsageFlags
width*: uint32
height*: uint32
layerCount*: uint32
viewFormatCount*: uint32
pViewFormats*: ptr VkFormat
VkFramebufferAttachmentImageInfoKHR* = object
VkRenderPassAttachmentBeginInfo* = object
sType*: VkStructureType
pNext*: pointer
attachmentCount*: uint32
pAttachments*: ptr VkImageView
VkRenderPassAttachmentBeginInfoKHR* = object
VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
textureCompressionASTC_HDR*: VkBool32
VkPhysicalDeviceCooperativeMatrixFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
cooperativeMatrix*: VkBool32
cooperativeMatrixRobustBufferAccess*: VkBool32
VkPhysicalDeviceCooperativeMatrixPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
cooperativeMatrixSupportedStages*: VkShaderStageFlags
VkCooperativeMatrixPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
MSize*: uint32
NSize*: uint32
KSize*: uint32
AType*: VkComponentTypeNV
BType*: VkComponentTypeNV
CType*: VkComponentTypeNV
DType*: VkComponentTypeNV
scope*: VkScopeNV
VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
ycbcrImageArrays*: VkBool32
VkImageViewHandleInfoNVX* = object
sType*: VkStructureType
pNext*: pointer
imageView*: VkImageView
descriptorType*: VkDescriptorType
sampler*: VkSampler
VkImageViewAddressPropertiesNVX* = object
sType*: VkStructureType
pNext*: pointer
deviceAddress*: VkDeviceAddress
size*: VkDeviceSize
VkPresentFrameTokenGGP* = object
sType*: VkStructureType
pNext*: pointer
frameToken*: GgpFrameToken
VkPipelineCreationFeedbackEXT* = object
flags*: VkPipelineCreationFeedbackFlagsEXT
duration*: uint64
VkPipelineCreationFeedbackCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
pPipelineCreationFeedback*: ptr VkPipelineCreationFeedbackEXT
pipelineStageCreationFeedbackCount*: uint32
pPipelineStageCreationFeedbacks*: ptr ptr VkPipelineCreationFeedbackEXT
VkSurfaceFullScreenExclusiveInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
fullScreenExclusive*: VkFullScreenExclusiveEXT
VkSurfaceFullScreenExclusiveWin32InfoEXT* = object
sType*: VkStructureType
pNext*: pointer
hmonitor*: HMONITOR
VkSurfaceCapabilitiesFullScreenExclusiveEXT* = object
sType*: VkStructureType
pNext*: pointer
fullScreenExclusiveSupported*: VkBool32
VkPhysicalDevicePerformanceQueryFeaturesKHR* = object
sType*: VkStructureType
pNext*: pointer
performanceCounterQueryPools*: VkBool32
performanceCounterMultipleQueryPools*: VkBool32
VkPhysicalDevicePerformanceQueryPropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
allowCommandBufferQueryCopies*: VkBool32
VkPerformanceCounterKHR* = object
sType*: VkStructureType
pNext*: pointer
unit*: VkPerformanceCounterUnitKHR
scope*: VkPerformanceCounterScopeKHR
storage*: VkPerformanceCounterStorageKHR
uuid*: array[VK_UUID_SIZE, uint8]
VkPerformanceCounterDescriptionKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPerformanceCounterDescriptionFlagsKHR
name*: array[VK_MAX_DESCRIPTION_SIZE, char]
category*: array[VK_MAX_DESCRIPTION_SIZE, char]
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
VkQueryPoolPerformanceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
queueFamilyIndex*: uint32
counterIndexCount*: uint32
pCounterIndices*: ptr uint32
VkPerformanceCounterResultKHR* {.union.} = object
int32*: int32
int64*: int64
uint32*: uint32
uint64*: uint64
float32*: float32
float64*: float64
VkAcquireProfilingLockInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkAcquireProfilingLockFlagsKHR
timeout*: uint64
VkPerformanceQuerySubmitInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
counterPassIndex*: uint32
VkHeadlessSurfaceCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkHeadlessSurfaceCreateFlagsEXT
VkPhysicalDeviceCoverageReductionModeFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
coverageReductionMode*: VkBool32
VkPipelineCoverageReductionStateCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkPipelineCoverageReductionStateCreateFlagsNV
coverageReductionMode*: VkCoverageReductionModeNV
VkFramebufferMixedSamplesCombinationNV* = object
sType*: VkStructureType
pNext*: pointer
coverageReductionMode*: VkCoverageReductionModeNV
rasterizationSamples*: VkSampleCountFlagBits
depthStencilSamples*: VkSampleCountFlags
colorSamples*: VkSampleCountFlags
VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* = object
sType*: VkStructureType
pNext*: pointer
shaderIntegerFunctions2*: VkBool32
VkPerformanceValueDataINTEL* {.union.} = object
value32*: uint32
value64*: uint64
valueFloat*: float32
valueBool*: VkBool32
valueString*: cstring
VkPerformanceValueINTEL* = object
typee*: VkPerformanceValueTypeINTEL
data*: VkPerformanceValueDataINTEL
VkInitializePerformanceApiInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
pUserData*: pointer
VkQueryPoolPerformanceQueryCreateInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
performanceCountersSampling*: VkQueryPoolSamplingModeINTEL
VkQueryPoolCreateInfoINTEL* = object
VkPerformanceMarkerInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
marker*: uint64
VkPerformanceStreamMarkerInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
marker*: uint32
VkPerformanceOverrideInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkPerformanceOverrideTypeINTEL
enable*: VkBool32
parameter*: uint64
VkPerformanceConfigurationAcquireInfoINTEL* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkPerformanceConfigurationTypeINTEL
VkPhysicalDeviceShaderClockFeaturesKHR* = object
sType*: VkStructureType
pNext*: pointer
shaderSubgroupClock*: VkBool32
shaderDeviceClock*: VkBool32
VkPhysicalDeviceIndexTypeUint8FeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
indexTypeUint8*: VkBool32
VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* = object
sType*: VkStructureType
pNext*: pointer
shaderSMCount*: uint32
shaderWarpsPerSM*: uint32
VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
shaderSMBuiltins*: VkBool32
VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
fragmentShaderSampleInterlock*: VkBool32
fragmentShaderPixelInterlock*: VkBool32
fragmentShaderShadingRateInterlock*: VkBool32
VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* = object
sType*: VkStructureType
pNext*: pointer
separateDepthStencilLayouts*: VkBool32
VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR* = object
VkAttachmentReferenceStencilLayout* = object
sType*: VkStructureType
pNext*: pointer
stencilLayout*: VkImageLayout
VkAttachmentReferenceStencilLayoutKHR* = object
VkAttachmentDescriptionStencilLayout* = object
sType*: VkStructureType
pNext*: pointer
stencilInitialLayout*: VkImageLayout
stencilFinalLayout*: VkImageLayout
VkAttachmentDescriptionStencilLayoutKHR* = object
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* = object
sType*: VkStructureType
pNext*: pointer
pipelineExecutableInfo*: VkBool32
VkPipelineInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
pipeline*: VkPipeline
VkPipelineExecutablePropertiesKHR* = object
sType*: VkStructureType
pNext*: pointer
stages*: VkShaderStageFlags
name*: array[VK_MAX_DESCRIPTION_SIZE, char]
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
subgroupSize*: uint32
VkPipelineExecutableInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
pipeline*: VkPipeline
executableIndex*: uint32
VkPipelineExecutableStatisticValueKHR* {.union.} = object
b32*: VkBool32
i64*: int64
u64*: uint64
f64*: float64
VkPipelineExecutableStatisticKHR* = object
sType*: VkStructureType
pNext*: pointer
name*: array[VK_MAX_DESCRIPTION_SIZE, char]
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
format*: VkPipelineExecutableStatisticFormatKHR
value*: VkPipelineExecutableStatisticValueKHR
VkPipelineExecutableInternalRepresentationKHR* = object
sType*: VkStructureType
pNext*: pointer
name*: array[VK_MAX_DESCRIPTION_SIZE, char]
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
isText*: VkBool32
dataSize*: uint
pData*: pointer
VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
shaderDemoteToHelperInvocation*: VkBool32
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
texelBufferAlignment*: VkBool32
VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
storageTexelBufferOffsetAlignmentBytes*: VkDeviceSize
storageTexelBufferOffsetSingleTexelAlignment*: VkBool32
uniformTexelBufferOffsetAlignmentBytes*: VkDeviceSize
uniformTexelBufferOffsetSingleTexelAlignment*: VkBool32
VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
subgroupSizeControl*: VkBool32
computeFullSubgroups*: VkBool32
VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
minSubgroupSize*: uint32
maxSubgroupSize*: uint32
maxComputeWorkgroupSubgroups*: uint32
requiredSubgroupSizeStages*: VkShaderStageFlags
VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
requiredSubgroupSize*: uint32
VkMemoryOpaqueCaptureAddressAllocateInfo* = object
sType*: VkStructureType
pNext*: pointer
opaqueCaptureAddress*: uint64
VkMemoryOpaqueCaptureAddressAllocateInfoKHR* = object
VkDeviceMemoryOpaqueCaptureAddressInfo* = object
sType*: VkStructureType
pNext*: pointer
memory*: VkDeviceMemory
VkDeviceMemoryOpaqueCaptureAddressInfoKHR* = object
VkPhysicalDeviceLineRasterizationFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
rectangularLines*: VkBool32
bresenhamLines*: VkBool32
smoothLines*: VkBool32
stippledRectangularLines*: VkBool32
stippledBresenhamLines*: VkBool32
stippledSmoothLines*: VkBool32
VkPhysicalDeviceLineRasterizationPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
lineSubPixelPrecisionBits*: uint32
VkPipelineRasterizationLineStateCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
lineRasterizationMode*: VkLineRasterizationModeEXT
stippledLineEnable*: VkBool32
lineStippleFactor*: uint32
lineStipplePattern*: uint16
VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
pipelineCreationCacheControl*: VkBool32
VkPhysicalDeviceVulkan11Features* = object
sType*: VkStructureType
pNext*: pointer
storageBuffer16BitAccess*: VkBool32
uniformAndStorageBuffer16BitAccess*: VkBool32
storagePushConstant16*: VkBool32
storageInputOutput16*: VkBool32
multiview*: VkBool32
multiviewGeometryShader*: VkBool32
multiviewTessellationShader*: VkBool32
variablePointersStorageBuffer*: VkBool32
variablePointers*: VkBool32
protectedMemory*: VkBool32
samplerYcbcrConversion*: VkBool32
shaderDrawParameters*: VkBool32
VkPhysicalDeviceVulkan11Properties* = object
sType*: VkStructureType
pNext*: pointer
deviceUUID*: array[VK_UUID_SIZE, uint8]
driverUUID*: array[VK_UUID_SIZE, uint8]
deviceLUID*: array[VK_LUID_SIZE, uint8]
deviceNodeMask*: uint32
deviceLUIDValid*: VkBool32
subgroupSize*: uint32
subgroupSupportedStages*: VkShaderStageFlags
subgroupSupportedOperations*: VkSubgroupFeatureFlags
subgroupQuadOperationsInAllStages*: VkBool32
pointClippingBehavior*: VkPointClippingBehavior
maxMultiviewViewCount*: uint32
maxMultiviewInstanceIndex*: uint32
protectedNoFault*: VkBool32
maxPerSetDescriptors*: uint32
maxMemoryAllocationSize*: VkDeviceSize
VkPhysicalDeviceVulkan12Features* = object
sType*: VkStructureType
pNext*: pointer
samplerMirrorClampToEdge*: VkBool32
drawIndirectCount*: VkBool32
storageBuffer8BitAccess*: VkBool32
uniformAndStorageBuffer8BitAccess*: VkBool32
storagePushConstant8*: VkBool32
shaderBufferInt64Atomics*: VkBool32
shaderSharedInt64Atomics*: VkBool32
shaderFloat16*: VkBool32
shaderInt8*: VkBool32
descriptorIndexing*: VkBool32
shaderInputAttachmentArrayDynamicIndexing*: VkBool32
shaderUniformTexelBufferArrayDynamicIndexing*: VkBool32
shaderStorageTexelBufferArrayDynamicIndexing*: VkBool32
shaderUniformBufferArrayNonUniformIndexing*: VkBool32
shaderSampledImageArrayNonUniformIndexing*: VkBool32
shaderStorageBufferArrayNonUniformIndexing*: VkBool32
shaderStorageImageArrayNonUniformIndexing*: VkBool32
shaderInputAttachmentArrayNonUniformIndexing*: VkBool32
shaderUniformTexelBufferArrayNonUniformIndexing*: VkBool32
shaderStorageTexelBufferArrayNonUniformIndexing*: VkBool32
descriptorBindingUniformBufferUpdateAfterBind*: VkBool32
descriptorBindingSampledImageUpdateAfterBind*: VkBool32
descriptorBindingStorageImageUpdateAfterBind*: VkBool32
descriptorBindingStorageBufferUpdateAfterBind*: VkBool32
descriptorBindingUniformTexelBufferUpdateAfterBind*: VkBool32
descriptorBindingStorageTexelBufferUpdateAfterBind*: VkBool32
descriptorBindingUpdateUnusedWhilePending*: VkBool32
descriptorBindingPartiallyBound*: VkBool32
descriptorBindingVariableDescriptorCount*: VkBool32
runtimeDescriptorArray*: VkBool32
samplerFilterMinmax*: VkBool32
scalarBlockLayout*: VkBool32
imagelessFramebuffer*: VkBool32
uniformBufferStandardLayout*: VkBool32
shaderSubgroupExtendedTypes*: VkBool32
separateDepthStencilLayouts*: VkBool32
hostQueryReset*: VkBool32
timelineSemaphore*: VkBool32
bufferDeviceAddress*: VkBool32
bufferDeviceAddressCaptureReplay*: VkBool32
bufferDeviceAddressMultiDevice*: VkBool32
vulkanMemoryModel*: VkBool32
vulkanMemoryModelDeviceScope*: VkBool32
vulkanMemoryModelAvailabilityVisibilityChains*: VkBool32
shaderOutputViewportIndex*: VkBool32
shaderOutputLayer*: VkBool32
subgroupBroadcastDynamicId*: VkBool32
VkPhysicalDeviceVulkan12Properties* = object
sType*: VkStructureType
pNext*: pointer
driverID*: VkDriverId
driverName*: array[VK_MAX_DRIVER_NAME_SIZE, char]
driverInfo*: array[VK_MAX_DRIVER_INFO_SIZE, char]
conformanceVersion*: VkConformanceVersion
denormBehaviorIndependence*: VkShaderFloatControlsIndependence
roundingModeIndependence*: VkShaderFloatControlsIndependence
shaderSignedZeroInfNanPreserveFloat16*: VkBool32
shaderSignedZeroInfNanPreserveFloat32*: VkBool32
shaderSignedZeroInfNanPreserveFloat64*: VkBool32
shaderDenormPreserveFloat16*: VkBool32
shaderDenormPreserveFloat32*: VkBool32
shaderDenormPreserveFloat64*: VkBool32
shaderDenormFlushToZeroFloat16*: VkBool32
shaderDenormFlushToZeroFloat32*: VkBool32
shaderDenormFlushToZeroFloat64*: VkBool32
shaderRoundingModeRTEFloat16*: VkBool32
shaderRoundingModeRTEFloat32*: VkBool32
shaderRoundingModeRTEFloat64*: VkBool32
shaderRoundingModeRTZFloat16*: VkBool32
shaderRoundingModeRTZFloat32*: VkBool32
shaderRoundingModeRTZFloat64*: VkBool32
maxUpdateAfterBindDescriptorsInAllPools*: uint32
shaderUniformBufferArrayNonUniformIndexingNative*: VkBool32
shaderSampledImageArrayNonUniformIndexingNative*: VkBool32
shaderStorageBufferArrayNonUniformIndexingNative*: VkBool32
shaderStorageImageArrayNonUniformIndexingNative*: VkBool32
shaderInputAttachmentArrayNonUniformIndexingNative*: VkBool32
robustBufferAccessUpdateAfterBind*: VkBool32
quadDivergentImplicitLod*: VkBool32
maxPerStageDescriptorUpdateAfterBindSamplers*: uint32
maxPerStageDescriptorUpdateAfterBindUniformBuffers*: uint32
maxPerStageDescriptorUpdateAfterBindStorageBuffers*: uint32
maxPerStageDescriptorUpdateAfterBindSampledImages*: uint32
maxPerStageDescriptorUpdateAfterBindStorageImages*: uint32
maxPerStageDescriptorUpdateAfterBindInputAttachments*: uint32
maxPerStageUpdateAfterBindResources*: uint32
maxDescriptorSetUpdateAfterBindSamplers*: uint32
maxDescriptorSetUpdateAfterBindUniformBuffers*: uint32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic*: uint32
maxDescriptorSetUpdateAfterBindStorageBuffers*: uint32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic*: uint32
maxDescriptorSetUpdateAfterBindSampledImages*: uint32
maxDescriptorSetUpdateAfterBindStorageImages*: uint32
maxDescriptorSetUpdateAfterBindInputAttachments*: uint32
supportedDepthResolveModes*: VkResolveModeFlags
supportedStencilResolveModes*: VkResolveModeFlags
independentResolveNone*: VkBool32
independentResolve*: VkBool32
filterMinmaxSingleComponentFormats*: VkBool32
filterMinmaxImageComponentMapping*: VkBool32
maxTimelineSemaphoreValueDifference*: uint64
framebufferIntegerColorSampleCounts*: VkSampleCountFlags
VkPipelineCompilerControlCreateInfoAMD* = object
sType*: VkStructureType
pNext*: pointer
compilerControlFlags*: VkPipelineCompilerControlFlagsAMD
VkPhysicalDeviceCoherentMemoryFeaturesAMD* = object
sType*: VkStructureType
pNext*: pointer
deviceCoherentMemory*: VkBool32
VkPhysicalDeviceToolPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
name*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
version*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
purposes*: VkToolPurposeFlagsEXT
description*: array[VK_MAX_DESCRIPTION_SIZE, char]
layer*: array[VK_MAX_EXTENSION_NAME_SIZE, char]
VkSamplerCustomBorderColorCreateInfoEXT* = object
sType*: VkStructureType
pNext*: pointer
customBorderColor*: VkClearColorValue
format*: VkFormat
VkPhysicalDeviceCustomBorderColorPropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
maxCustomBorderColorSamplers*: uint32
VkPhysicalDeviceCustomBorderColorFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
customBorderColors*: VkBool32
customBorderColorWithoutFormat*: VkBool32
VkDeviceOrHostAddressKHR* {.union.} = object
deviceAddress*: VkDeviceAddress
hostAddress*: pointer
VkDeviceOrHostAddressConstKHR* {.union.} = object
deviceAddress*: VkDeviceAddress
hostAddress*: pointer
VkAccelerationStructureGeometryTrianglesDataKHR* = object
sType*: VkStructureType
pNext*: pointer
vertexFormat*: VkFormat
vertexData*: VkDeviceOrHostAddressConstKHR
vertexStride*: VkDeviceSize
indexType*: VkIndexType
indexData*: VkDeviceOrHostAddressConstKHR
transformData*: VkDeviceOrHostAddressConstKHR
VkAccelerationStructureGeometryAabbsDataKHR* = object
sType*: VkStructureType
pNext*: pointer
data*: VkDeviceOrHostAddressConstKHR
stride*: VkDeviceSize
VkAccelerationStructureGeometryInstancesDataKHR* = object
sType*: VkStructureType
pNext*: pointer
arrayOfPointers*: VkBool32
data*: VkDeviceOrHostAddressConstKHR
VkAccelerationStructureGeometryDataKHR* {.union.} = object
triangles*: VkAccelerationStructureGeometryTrianglesDataKHR
aabbs*: VkAccelerationStructureGeometryAabbsDataKHR
instances*: VkAccelerationStructureGeometryInstancesDataKHR
VkAccelerationStructureGeometryKHR* = object
sType*: VkStructureType
pNext*: pointer
geometryType*: VkGeometryTypeKHR
geometry*: VkAccelerationStructureGeometryDataKHR
flags*: VkGeometryFlagsKHR
VkAccelerationStructureBuildGeometryInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
typee*: VkAccelerationStructureTypeKHR
flags*: VkBuildAccelerationStructureFlagsKHR
update*: VkBool32
srcAccelerationStructure*: VkAccelerationStructureKHR
dstAccelerationStructure*: VkAccelerationStructureKHR
geometryArrayOfPointers*: VkBool32
geometryCount*: uint32
ppGeometries*: ptr ptr VkAccelerationStructureGeometryKHR
scratchData*: VkDeviceOrHostAddressKHR
VkAccelerationStructureBuildOffsetInfoKHR* = object
primitiveCount*: uint32
primitiveOffset*: uint32
firstVertex*: uint32
transformOffset*: uint32
VkAccelerationStructureCreateGeometryTypeInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
geometryType*: VkGeometryTypeKHR
maxPrimitiveCount*: uint32
indexType*: VkIndexType
maxVertexCount*: uint32
vertexFormat*: VkFormat
allowsTransforms*: VkBool32
VkAccelerationStructureCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
compactedSize*: VkDeviceSize
typee*: VkAccelerationStructureTypeKHR
flags*: VkBuildAccelerationStructureFlagsKHR
maxGeometryCount*: uint32
pGeometryInfos*: ptr VkAccelerationStructureCreateGeometryTypeInfoKHR
deviceAddress*: VkDeviceAddress
VkAabbPositionsKHR* = object
minX*: float32
minY*: float32
minZ*: float32
maxX*: float32
maxY*: float32
maxZ*: float32
VkAabbPositionsNV* = object
VkTransformMatrixKHR* = object
matrix*: array[3, float32]
VkTransformMatrixNV* = object
VkAccelerationStructureInstanceKHR* = object
transform*: VkTransformMatrixKHR
instanceCustomIndex*: uint32
mask*: uint32
instanceShaderBindingTableRecordOffset*: uint32
flags*: VkGeometryInstanceFlagsKHR
accelerationStructureReference*: uint64
VkAccelerationStructureInstanceNV* = object
VkAccelerationStructureDeviceAddressInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
accelerationStructure*: VkAccelerationStructureKHR
VkAccelerationStructureVersionKHR* = object
sType*: VkStructureType
pNext*: pointer
versionData*: ptr uint8
VkCopyAccelerationStructureInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
src*: VkAccelerationStructureKHR
dst*: VkAccelerationStructureKHR
mode*: VkCopyAccelerationStructureModeKHR
VkCopyAccelerationStructureToMemoryInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
src*: VkAccelerationStructureKHR
dst*: VkDeviceOrHostAddressKHR
mode*: VkCopyAccelerationStructureModeKHR
VkCopyMemoryToAccelerationStructureInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
src*: VkDeviceOrHostAddressConstKHR
dst*: VkAccelerationStructureKHR
mode*: VkCopyAccelerationStructureModeKHR
VkRayTracingPipelineInterfaceCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
maxPayloadSize*: uint32
maxAttributeSize*: uint32
maxCallableSize*: uint32
VkDeferredOperationInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
operationHandle*: VkDeferredOperationKHR
VkPipelineLibraryCreateInfoKHR* = object
sType*: VkStructureType
pNext*: pointer
libraryCount*: uint32
pLibraries*: ptr VkPipeline
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
extendedDynamicState*: VkBool32
VkRenderPassTransformBeginInfoQCOM* = object
sType*: VkStructureType
pNext*: pointer
transform*: VkSurfaceTransformFlagBitsKHR
VkCommandBufferInheritanceRenderPassTransformInfoQCOM* = object
sType*: VkStructureType
pNext*: pointer
transform*: VkSurfaceTransformFlagBitsKHR
renderArea*: VkRect2D
VkPhysicalDeviceDiagnosticsConfigFeaturesNV* = object
sType*: VkStructureType
pNext*: pointer
diagnosticsConfig*: VkBool32
VkDeviceDiagnosticsConfigCreateInfoNV* = object
sType*: VkStructureType
pNext*: pointer
flags*: VkDeviceDiagnosticsConfigFlagsNV
VkPhysicalDeviceRobustness2FeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
robustBufferAccess2*: VkBool32
robustImageAccess2*: VkBool32
nullDescriptor*: VkBool32
VkPhysicalDeviceRobustness2PropertiesEXT* = object
sType*: VkStructureType
pNext*: pointer
robustStorageBufferAccessSizeAlignment*: VkDeviceSize
robustUniformBufferAccessSizeAlignment*: VkDeviceSize
VkPhysicalDeviceImageRobustnessFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
robustImageAccess*: VkBool32
VkPhysicalDevice4444FormatsFeaturesEXT* = object
sType*: VkStructureType
pNext*: pointer
formatA4R4G4B4*: VkBool32
formatA4B4G4R4*: VkBool32
# Constructors
proc newVkOffset2D*(x: int32, y: int32): VkOffset2D =
result.x = x
result.y = y
proc newVkOffset3D*(x: int32, y: int32, z: int32): VkOffset3D =
result.x = x
result.y = y
result.z = z
proc newVkExtent2D*(width: uint32, height: uint32): VkExtent2D =
result.width = width
result.height = height
proc newVkExtent3D*(width: uint32, height: uint32, depth: uint32): VkExtent3D =
result.width = width
result.height = height
result.depth = depth
proc newVkViewport*(x: float32, y: float32, width: float32, height: float32, minDepth: float32, maxDepth: float32): VkViewport =
result.x = x
result.y = y
result.width = width
result.height = height
result.minDepth = minDepth
result.maxDepth = maxDepth
proc newVkRect2D*(offset: VkOffset2D, extent: VkExtent2D): VkRect2D =
result.offset = offset
result.extent = extent
proc newVkClearRect*(rect: VkRect2D, baseArrayLayer: uint32, layerCount: uint32): VkClearRect =
result.rect = rect
result.baseArrayLayer = baseArrayLayer
result.layerCount = layerCount
proc newVkComponentMapping*(r: VkComponentSwizzle, g: VkComponentSwizzle, b: VkComponentSwizzle, a: VkComponentSwizzle): VkComponentMapping =
result.r = r
result.g = g
result.b = b
result.a = a
proc newVkPhysicalDeviceProperties*(apiVersion: uint32, driverVersion: uint32, vendorID: uint32, deviceID: uint32, deviceType: VkPhysicalDeviceType, deviceName: array[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE, char], pipelineCacheUUID: array[VK_UUID_SIZE, uint8], limits: VkPhysicalDeviceLimits, sparseProperties: VkPhysicalDeviceSparseProperties): VkPhysicalDeviceProperties =
result.apiVersion = apiVersion
result.driverVersion = driverVersion
result.vendorID = vendorID
result.deviceID = deviceID
result.deviceType = deviceType
result.deviceName = deviceName
result.pipelineCacheUUID = pipelineCacheUUID
result.limits = limits
result.sparseProperties = sparseProperties
proc newVkExtensionProperties*(extensionName: array[VK_MAX_EXTENSION_NAME_SIZE, char], specVersion: uint32): VkExtensionProperties =
result.extensionName = extensionName
result.specVersion = specVersion
proc newVkLayerProperties*(layerName: array[VK_MAX_EXTENSION_NAME_SIZE, char], specVersion: uint32, implementationVersion: uint32, description: array[VK_MAX_DESCRIPTION_SIZE, char]): VkLayerProperties =
result.layerName = layerName
result.specVersion = specVersion
result.implementationVersion = implementationVersion
result.description = description
proc newVkApplicationInfo*(sType: VkStructureType = VkStructureTypeApplicationInfo, pNext: pointer = nil, pApplicationName: cstring, applicationVersion: uint32, pEngineName: cstring, engineVersion: uint32, apiVersion: uint32): VkApplicationInfo =
result.sType = sType
result.pNext = pNext
result.pApplicationName = pApplicationName
result.applicationVersion = applicationVersion
result.pEngineName = pEngineName
result.engineVersion = engineVersion
result.apiVersion = apiVersion
proc newVkAllocationCallbacks*(pUserData: pointer = nil, pfnAllocation: PFN_vkAllocationFunction, pfnReallocation: PFN_vkReallocationFunction, pfnFree: PFN_vkFreeFunction, pfnInternalAllocation: PFN_vkInternalAllocationNotification, pfnInternalFree: PFN_vkInternalFreeNotification): VkAllocationCallbacks =
result.pUserData = pUserData
result.pfnAllocation = pfnAllocation
result.pfnReallocation = pfnReallocation
result.pfnFree = pfnFree
result.pfnInternalAllocation = pfnInternalAllocation
result.pfnInternalFree = pfnInternalFree
proc newVkDeviceQueueCreateInfo*(sType: VkStructureType = VkStructureTypeDeviceQueueCreateInfo, pNext: pointer = nil, flags: VkDeviceQueueCreateFlags = 0.VkDeviceQueueCreateFlags, queueFamilyIndex: uint32, queueCount: uint32, pQueuePriorities: ptr float32): VkDeviceQueueCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
result.queueFamilyIndex = queueFamilyIndex
result.queueCount = queueCount
result.pQueuePriorities = pQueuePriorities
proc newVkDeviceCreateInfo*(sType: VkStructureType = VkStructureTypeDeviceCreateInfo, pNext: pointer = nil, flags: VkDeviceCreateFlags = 0.VkDeviceCreateFlags, queueCreateInfoCount: uint32, pQueueCreateInfos: ptr VkDeviceQueueCreateInfo, enabledLayerCount: uint32, ppEnabledLayerNames: cstringArray, enabledExtensionCount: uint32, ppEnabledExtensionNames: cstringArray, pEnabledFeatures: ptr VkPhysicalDeviceFeatures): VkDeviceCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
result.queueCreateInfoCount = queueCreateInfoCount
result.pQueueCreateInfos = pQueueCreateInfos
result.enabledLayerCount = enabledLayerCount
result.ppEnabledLayerNames = ppEnabledLayerNames
result.enabledExtensionCount = enabledExtensionCount
result.ppEnabledExtensionNames = ppEnabledExtensionNames
result.pEnabledFeatures = pEnabledFeatures
proc newVkInstanceCreateInfo*( sType: VkStructureType = VkStructureTypeInstanceCreateInfo
, pNext: pointer = nil
, flags: VkInstanceCreateFlags = 0.VkInstanceCreateFlags
, pApplicationInfo: ptr VkApplicationInfo
, enabledExtensionCount: uint32
, ppEnabledExtensionNames: cstringArray = allocCStringArray([])
, enabled_layer_count: uint32 = 0
, ppEnabledLayerNames: cstringArray = allocCStringArray([])
): VkInstanceCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
result.pApplicationInfo = pApplicationInfo
result.enabledLayerCount = enabledLayerCount
result.ppEnabledLayerNames = ppEnabledLayerNames
result.enabledExtensionCount = enabledExtensionCount
result.ppEnabledExtensionNames = ppEnabledExtensionNames
proc newVkQueueFamilyProperties*(queueFlags: VkQueueFlags, queueCount: uint32, timestampValidBits: uint32, minImageTransferGranularity: VkExtent3D): VkQueueFamilyProperties =
result.queueFlags = queueFlags
result.queueCount = queueCount
result.timestampValidBits = timestampValidBits
result.minImageTransferGranularity = minImageTransferGranularity
proc newVkPhysicalDeviceMemoryProperties*(memoryTypeCount: uint32, memoryTypes: array[VK_MAX_MEMORY_TYPES, VkMemoryType], memoryHeapCount: uint32, memoryHeaps: array[VK_MAX_MEMORY_HEAPS, VkMemoryHeap]): VkPhysicalDeviceMemoryProperties =
result.memoryTypeCount = memoryTypeCount
result.memoryTypes = memoryTypes
result.memoryHeapCount = memoryHeapCount
result.memoryHeaps = memoryHeaps
proc newVkMemoryAllocateInfo*(sType: VkStructureType = VkStructureTypeMemoryAllocateInfo, pNext: pointer = nil, allocationSize: VkDeviceSize, memoryTypeIndex: uint32): VkMemoryAllocateInfo =
result.sType = sType
result.pNext = pNext
result.allocationSize = allocationSize
result.memoryTypeIndex = memoryTypeIndex
proc newVkMemoryRequirements*(size: VkDeviceSize, alignment: VkDeviceSize, memoryTypeBits: uint32): VkMemoryRequirements =
result.size = size
result.alignment = alignment
result.memoryTypeBits = memoryTypeBits
proc newVkSparseImageFormatProperties*(aspectMask: VkImageAspectFlags, imageGranularity: VkExtent3D, flags: VkSparseImageFormatFlags = 0.VkSparseImageFormatFlags): VkSparseImageFormatProperties =
result.aspectMask = aspectMask
result.imageGranularity = imageGranularity
result.flags = flags
proc newVkSparseImageMemoryRequirements*(formatProperties: VkSparseImageFormatProperties, imageMipTailFirstLod: uint32, imageMipTailSize: VkDeviceSize, imageMipTailOffset: VkDeviceSize, imageMipTailStride: VkDeviceSize): VkSparseImageMemoryRequirements =
result.formatProperties = formatProperties
result.imageMipTailFirstLod = imageMipTailFirstLod
result.imageMipTailSize = imageMipTailSize
result.imageMipTailOffset = imageMipTailOffset
result.imageMipTailStride = imageMipTailStride
proc newVkMemoryType*(propertyFlags: VkMemoryPropertyFlags, heapIndex: uint32): VkMemoryType =
result.propertyFlags = propertyFlags
result.heapIndex = heapIndex
proc newVkMemoryHeap*(size: VkDeviceSize, flags: VkMemoryHeapFlags = 0.VkMemoryHeapFlags): VkMemoryHeap =
result.size = size
result.flags = flags
proc newVkFormatProperties*(linearTilingFeatures: VkFormatFeatureFlags, optimalTilingFeatures: VkFormatFeatureFlags, bufferFeatures: VkFormatFeatureFlags): VkFormatProperties =
result.linearTilingFeatures = linearTilingFeatures
result.optimalTilingFeatures = optimalTilingFeatures
result.bufferFeatures = bufferFeatures
proc newVkImageFormatProperties*(maxExtent: VkExtent3D, maxMipLevels: uint32, maxArrayLayers: uint32, sampleCounts: VkSampleCountFlags, maxResourceSize: VkDeviceSize): VkImageFormatProperties =
result.maxExtent = maxExtent
result.maxMipLevels = maxMipLevels
result.maxArrayLayers = maxArrayLayers
result.sampleCounts = sampleCounts
result.maxResourceSize = maxResourceSize
proc newVkDescriptorBufferInfo*(buffer: VkBuffer, offset: VkDeviceSize, range: VkDeviceSize): VkDescriptorBufferInfo =
result.buffer = buffer
result.offset = offset
result.range = range
proc newVkDescriptorImageInfo*(sampler: VkSampler, imageView: VkImageView, imageLayout: VkImageLayout): VkDescriptorImageInfo =
result.sampler = sampler
result.imageView = imageView
result.imageLayout = imageLayout
proc newVkWriteDescriptorSet*(sType: VkStructureType = VkStructureTypeWriteDescriptorSet, pNext: pointer = nil, dstSet: VkDescriptorSet, dstBinding: uint32, dstArrayElement: uint32, descriptorCount: uint32, descriptorType: VkDescriptorType, pImageInfo: ptr VkDescriptorImageInfo, pBufferInfo: ptr ptr VkDescriptorBufferInfo, pTexelBufferView: ptr VkBufferView): VkWriteDescriptorSet =
result.sType = sType
result.pNext = pNext
result.dstSet = dstSet
result.dstBinding = dstBinding
result.dstArrayElement = dstArrayElement
result.descriptorCount = descriptorCount
result.descriptorType = descriptorType
result.pImageInfo = pImageInfo
result.pBufferInfo = pBufferInfo
result.pTexelBufferView = pTexelBufferView
proc newVkCopyDescriptorSet*(sType: VkStructureType = VkStructureTypeCopyDescriptorSet, pNext: pointer = nil, srcSet: VkDescriptorSet, srcBinding: uint32, srcArrayElement: uint32, dstSet: VkDescriptorSet, dstBinding: uint32, dstArrayElement: uint32, descriptorCount: uint32): VkCopyDescriptorSet =
result.sType = sType
result.pNext = pNext
result.srcSet = srcSet
result.srcBinding = srcBinding
result.srcArrayElement = srcArrayElement
result.dstSet = dstSet
result.dstBinding = dstBinding
result.dstArrayElement = dstArrayElement
result.descriptorCount = descriptorCount
proc newVkBufferCreateInfo*(sType: VkStructureType = VkStructureTypeBufferCreateInfo, pNext: pointer = nil, flags: VkBufferCreateFlags = 0.VkBufferCreateFlags, size: VkDeviceSize, usage: VkBufferUsageFlags, sharingMode: VkSharingMode, queueFamilyIndexCount: uint32, pQueueFamilyIndices: ptr uint32): VkBufferCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
result.size = size
result.usage = usage
result.sharingMode = sharingMode
result.queueFamilyIndexCount = queueFamilyIndexCount
result.pQueueFamilyIndices = pQueueFamilyIndices
proc newVkBufferViewCreateInfo*(sType: VkStructureType = VkStructureTypeBufferViewCreateInfo, pNext: pointer = nil, flags: VkBufferViewCreateFlags = 0.VkBufferViewCreateFlags, buffer: VkBuffer, format: VkFormat, offset: VkDeviceSize, range: VkDeviceSize): VkBufferViewCreateInfo =
result.sType = sType
result.pNext = pNext
result.flags = flags
result.buffer = buffer
result.format = format
result.offset = offset
result.range = range
proc newVkImageSubresource*(aspectMask: VkImageAspectFlags, mipLevel: uint32, arrayLayer: uint32): VkImageSubresource =
result.aspectMask = aspectMask
result.mipLevel = mipLevel
result.arrayLayer = arrayLayer
proc newVkImageSubresourceLayers*(aspectMask: VkImageAspectFlags, mipLevel: uint32, baseArrayLayer: uint32, layerCount: uint32): VkImageSubresourceLayers =
result.aspectMask = aspectMask
result.mipLevel = mipLevel
result.baseArrayLayer = baseArrayLayer
result.layerCount = layerCount
proc newVkImageSubresourceRange*(aspectMask: VkImageAspectFlags, baseMipLevel: uint32, levelCount: uint32, baseArrayLayer: uint32, layerCount: uint32): VkImageSubresourceRange =
result.aspectMask = aspectMask
result.baseMipLevel = baseMipLevel
result.levelCount = levelCount
result.baseArrayLayer = baseArrayLayer
result.layerCount = layerCount
proc newVkMemoryBarrier*(sType: VkStructureType = VkStructureTypeMemoryBarrier, pNext: pointer = nil, srcAccessMask: VkAccessFlags, dstAccessMask: VkAccessFlags): VkMemoryBarrier =
result.sType = sType
result.pNext = pNext
result.srcAccessMask = srcAccessMask
result.dstAccessMask = dstAccessMask
proc newVkBufferMemoryBarrier*(sType: VkStructureType = VkStructureTypeBufferMemoryBarrier, pNext: pointer = nil, srcAccessMask: VkAccessFlags, dstAccessMask: VkAccessFlags, srcQueueFamilyIndex: uint32, dstQueueFamilyIndex: uint32, buffer: VkBuffer, offset: VkDeviceSize, size: VkDeviceSize): VkBufferMemoryBarrier =
result.sType = sType
result.pNext = pNext
result.srcAccessMask = srcAccessMask
result.dstAccessMask = dstAccessMask
result.srcQueueFamilyIndex = srcQueueFamilyIndex
result.dstQueueFamilyIndex = dstQueueFamilyIndex
result.buffer = buffer
result.offset = offset
result.size = size
proc newVkImageMemoryBarrier*(sType: VkStructureType = VkStructureTypeImageMemoryBarrier, pNext: pointer = nil, srcAccessMask: VkAccessFlags, dstAccessMask: VkAccessFlags, oldLayout: VkImageLayout, newLayout: VkImageLayout, srcQueueFamilyIndex: uint32, dstQueueFamilyIndex: uint32, image: VkImage, subresourceRange: VkImageSubresourceRange): VkImageMemoryBarrier =
result.sType = sType
result.pNext = pNext
result.srcAccessMask = srcAccessMask
result.dstAccessMask = dstAccessMask
result.oldLayout = oldLayout
result.newLayout = newLayout
result.srcQueueFamilyIndex = srcQueueFamilyIndex
result.dstQueueFamilyIndex = dstQueueFamilyIndex
result.image = image
result.subresourceRange = subresourceRange
# Procs
var
vkCreateInstance*: proc(pCreateInfo: ptr VkInstanceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pInstance: ptr VkInstance ): VkResult {.stdcall.}
vkDestroyInstance*: proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkEnumeratePhysicalDevices*: proc(instance: VkInstance, pPhysicalDeviceCount: ptr uint32 , pPhysicalDevices: ptr VkPhysicalDevice ): VkResult {.stdcall.}
vkGetDeviceProcAddr*: proc(device: VkDevice, pName: cstring ): PFN_vkVoidFunction {.stdcall.}
vkGetInstanceProcAddr*: proc(instance: VkInstance, pName: cstring ): PFN_vkVoidFunction {.stdcall.}
vkGetPhysicalDeviceProperties*: proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties ): void {.stdcall.}
vkGetPhysicalDeviceQueueFamilyProperties*: proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties ): void {.stdcall.}
vkGetPhysicalDeviceMemoryProperties*: proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties ): void {.stdcall.}
vkGetPhysicalDeviceFeatures*: proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures ): void {.stdcall.}
vkGetPhysicalDeviceFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties ): void {.stdcall.}
vkGetPhysicalDeviceImageFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, pImageFormatProperties: ptr VkImageFormatProperties ): VkResult {.stdcall.}
vkCreateDevice*: proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDevice: ptr VkDevice ): VkResult {.stdcall.}
vkDestroyDevice*: proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkEnumerateInstanceVersion*: proc(pApiVersion: ptr uint32 ): VkResult {.stdcall.}
vkEnumerateInstanceLayerProperties*: proc(pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}
vkEnumerateInstanceExtensionProperties*: proc(pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}
vkEnumerateDeviceLayerProperties*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}
vkEnumerateDeviceExtensionProperties*: proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}
vkGetDeviceQueue*: proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue ): void {.stdcall.}
vkQueueSubmit*: proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo , fence: VkFence): VkResult {.stdcall.}
vkQueueWaitIdle*: proc(queue: VkQueue): VkResult {.stdcall.}
vkDeviceWaitIdle*: proc(device: VkDevice): VkResult {.stdcall.}
vkAllocateMemory*: proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo , pAllocator: ptr VkAllocationCallbacks , pMemory: ptr VkDeviceMemory ): VkResult {.stdcall.}
vkFreeMemory*: proc(device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkMapMemory*: proc(device: VkDevice, memory: VkDeviceMemory, offset: VkDeviceSize, size: VkDeviceSize, flags: VkMemoryMapFlags, ppData: ptr pointer ): VkResult {.stdcall.}
vkUnmapMemory*: proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}
vkFlushMappedMemoryRanges*: proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}
vkInvalidateMappedMemoryRanges*: proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}
vkGetDeviceMemoryCommitment*: proc(device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize ): void {.stdcall.}
vkGetBufferMemoryRequirements*: proc(device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}
vkBindBufferMemory*: proc(device: VkDevice, buffer: VkBuffer, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}
vkGetImageMemoryRequirements*: proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}
vkBindImageMemory*: proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}
vkGetImageSparseMemoryRequirements*: proc(device: VkDevice, image: VkImage, pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements ): void {.stdcall.}
vkGetPhysicalDeviceSparseImageFormatProperties*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, samples: VkSampleCountFlagBits, usage: VkImageUsageFlags, tiling: VkImageTiling, pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties ): void {.stdcall.}
vkQueueBindSparse*: proc(queue: VkQueue, bindInfoCount: uint32, pBindInfo: ptr VkBindSparseInfo , fence: VkFence): VkResult {.stdcall.}
vkCreateFence*: proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}
vkDestroyFence*: proc(device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkResetFences*: proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence ): VkResult {.stdcall.}
vkGetFenceStatus*: proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}
vkWaitForFences*: proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence , waitAll: VkBool32, timeout: uint64): VkResult {.stdcall.}
vkCreateSemaphore*: proc(device: VkDevice, pCreateInfo: ptr VkSemaphoreCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSemaphore: ptr VkSemaphore ): VkResult {.stdcall.}
vkDestroySemaphore*: proc(device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateEvent*: proc(device: VkDevice, pCreateInfo: ptr VkEventCreateInfo , pAllocator: ptr VkAllocationCallbacks , pEvent: ptr VkEvent ): VkResult {.stdcall.}
vkDestroyEvent*: proc(device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetEventStatus*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
vkSetEvent*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
vkResetEvent*: proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}
vkCreateQueryPool*: proc(device: VkDevice, pCreateInfo: ptr VkQueryPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pQueryPool: ptr VkQueryPool ): VkResult {.stdcall.}
vkDestroyQueryPool*: proc(device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetQueryPoolResults*: proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dataSize: uint, pData: pointer , stride: VkDeviceSize, flags: VkQueryResultFlags): VkResult {.stdcall.}
vkResetQueryPool*: proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}
vkCreateBuffer*: proc(device: VkDevice, pCreateInfo: ptr VkBufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pBuffer: ptr VkBuffer ): VkResult {.stdcall.}
vkDestroyBuffer*: proc(device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateBufferView*: proc(device: VkDevice, pCreateInfo: ptr VkBufferViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkBufferView ): VkResult {.stdcall.}
vkDestroyBufferView*: proc(device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateImage*: proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo , pAllocator: ptr VkAllocationCallbacks , pImage: ptr VkImage ): VkResult {.stdcall.}
vkDestroyImage*: proc(device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetImageSubresourceLayout*: proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource , pLayout: ptr VkSubresourceLayout ): void {.stdcall.}
vkCreateImageView*: proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkImageView ): VkResult {.stdcall.}
vkDestroyImageView*: proc(device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateShaderModule*: proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo , pAllocator: ptr VkAllocationCallbacks , pShaderModule: ptr VkShaderModule ): VkResult {.stdcall.}
vkDestroyShaderModule*: proc(device: VkDevice, shaderModule: VkShaderModule, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreatePipelineCache*: proc(device: VkDevice, pCreateInfo: ptr VkPipelineCacheCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineCache: ptr VkPipelineCache ): VkResult {.stdcall.}
vkDestroyPipelineCache*: proc(device: VkDevice, pipelineCache: VkPipelineCache, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetPipelineCacheData*: proc(device: VkDevice, pipelineCache: VkPipelineCache, pDataSize: ptr uint , pData: pointer ): VkResult {.stdcall.}
vkMergePipelineCaches*: proc(device: VkDevice, dstCache: VkPipelineCache, srcCacheCount: uint32, pSrcCaches: ptr VkPipelineCache ): VkResult {.stdcall.}
vkCreateGraphicsPipelines*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkGraphicsPipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}
vkCreateComputePipelines*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkComputePipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}
vkDestroyPipeline*: proc(device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreatePipelineLayout*: proc(device: VkDevice, pCreateInfo: ptr VkPipelineLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineLayout: ptr VkPipelineLayout ): VkResult {.stdcall.}
vkDestroyPipelineLayout*: proc(device: VkDevice, pipelineLayout: VkPipelineLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateSampler*: proc(device: VkDevice, pCreateInfo: ptr VkSamplerCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSampler: ptr VkSampler ): VkResult {.stdcall.}
vkDestroySampler*: proc(device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateDescriptorSetLayout*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSetLayout: ptr VkDescriptorSetLayout ): VkResult {.stdcall.}
vkDestroyDescriptorSetLayout*: proc(device: VkDevice, descriptorSetLayout: VkDescriptorSetLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateDescriptorPool*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorPool: ptr VkDescriptorPool ): VkResult {.stdcall.}
vkDestroyDescriptorPool*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkResetDescriptorPool*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, flags: VkDescriptorPoolResetFlags): VkResult {.stdcall.}
vkAllocateDescriptorSets*: proc(device: VkDevice, pAllocateInfo: ptr VkDescriptorSetAllocateInfo , pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}
vkFreeDescriptorSets*: proc(device: VkDevice, descriptorPool: VkDescriptorPool, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}
vkUpdateDescriptorSets*: proc(device: VkDevice, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet , descriptorCopyCount: uint32, pDescriptorCopies: ptr VkCopyDescriptorSet ): void {.stdcall.}
vkCreateFramebuffer*: proc(device: VkDevice, pCreateInfo: ptr VkFramebufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFramebuffer: ptr VkFramebuffer ): VkResult {.stdcall.}
vkDestroyFramebuffer*: proc(device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkCreateRenderPass*: proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo , pAllocator: ptr VkAllocationCallbacks , pRenderPass: ptr VkRenderPass ): VkResult {.stdcall.}
vkDestroyRenderPass*: proc(device: VkDevice, render_pass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetRenderAreaGranularity*: proc(device: VkDevice, render_pass: VkRenderPass, pGranularity: ptr VkExtent2D ): void {.stdcall.}
vkCreateCommandPool*: proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pCommandPool: ptr VkCommandPool ): VkResult {.stdcall.}
vkDestroyCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkResetCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags): VkResult {.stdcall.}
vkAllocateCommandBuffers*: proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo , pCommandBuffers: ptr VkCommandBuffer ): VkResult {.stdcall.}
vkFreeCommandBuffers*: proc(device: VkDevice, commandPool: VkCommandPool, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}
vkBeginCommandBuffer*: proc(commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo ): VkResult {.stdcall.}
vkEndCommandBuffer*: proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}
vkResetCommandBuffer*: proc(commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags): VkResult {.stdcall.}
vkCmdBindPipeline*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline): void {.stdcall.}
vkCmdSetViewport*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewports: ptr VkViewport ): void {.stdcall.}
vkCmdSetScissor*: proc(commandBuffer: VkCommandBuffer, firstScissor: uint32, scissorCount: uint32, pScissors: ptr VkRect2D ): void {.stdcall.}
vkCmdSetLineWidth*: proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}
vkCmdSetDepthBias*: proc(commandBuffer: VkCommandBuffer, depthBiasConstantFactor: float32, depthBiasClamp: float32, depthBiasSlopeFactor: float32): void {.stdcall.}
vkCmdSetBlendConstants*: proc(commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]): void {.stdcall.}
vkCmdSetDepthBounds*: proc(commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32): void {.stdcall.}
vkCmdSetStencilCompareMask*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32): void {.stdcall.}
vkCmdSetStencilWriteMask*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32): void {.stdcall.}
vkCmdSetStencilReference*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32): void {.stdcall.}
vkCmdBindDescriptorSets*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet , dynamicOffsetCount: uint32, pDynamicOffsets: ptr uint32 ): void {.stdcall.}
vkCmdBindIndexBuffer*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, indexType: VkIndexType): void {.stdcall.}
vkCmdBindVertexBuffers*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize ): void {.stdcall.}
vkCmdDraw*: proc(commandBuffer: VkCommandBuffer, vertexCount: uint32, instanceCount: uint32, firstVertex: uint32, firstInstance: uint32): void {.stdcall.}
vkCmdDrawIndexed*: proc(commandBuffer: VkCommandBuffer, indexCount: uint32, instanceCount: uint32, firstIndex: uint32, vertexOffset: int32, firstInstance: uint32): void {.stdcall.}
vkCmdDrawIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
vkCmdDrawIndexedIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
vkCmdDispatch*: proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
vkCmdDispatchIndirect*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}
vkCmdCopyBuffer*: proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferCopy ): void {.stdcall.}
vkCmdCopyImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageCopy ): void {.stdcall.}
vkCmdBlitImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageBlit , filter: VkFilter): void {.stdcall.}
vkCmdCopyBufferToImage*: proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}
vkCmdCopyImageToBuffer*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}
vkCmdUpdateBuffer*: proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, pData: pointer ): void {.stdcall.}
vkCmdFillBuffer*: proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, size: VkDeviceSize, data: uint32): void {.stdcall.}
vkCmdClearColorImage*: proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pColor: ptr VkClearColorValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}
vkCmdClearDepthStencilImage*: proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pDepthStencil: ptr VkClearDepthStencilValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}
vkCmdClearAttachments*: proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pAttachments: ptr VkClearAttachment , rectCount: uint32, pRects: ptr VkClearRect ): void {.stdcall.}
vkCmdResolveImage*: proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageResolve ): void {.stdcall.}
vkCmdSetEvent*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}
vkCmdResetEvent*: proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}
vkCmdWaitEvents*: proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent , srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}
vkCmdPipelineBarrier*: proc(commandBuffer: VkCommandBuffer, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, dependencyFlags: VkDependencyFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}
vkCmdBeginQuery*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags): void {.stdcall.}
vkCmdEndQuery*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32): void {.stdcall.}
vkCmdBeginConditionalRenderingEXT*: proc(commandBuffer: VkCommandBuffer, pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT ): void {.stdcall.}
vkCmdEndConditionalRenderingEXT*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
vkCmdResetQueryPool*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}
vkCmdWriteTimestamp*: proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, queryPool: VkQueryPool, query: uint32): void {.stdcall.}
vkCmdCopyQueryPoolResults*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, stride: VkDeviceSize, flags: VkQueryResultFlags): void {.stdcall.}
vkCmdPushConstants*: proc(commandBuffer: VkCommandBuffer, layout: VkPipelineLayout, stageFlags: VkShaderStageFlags, offset: uint32, size: uint32, pValues: pointer ): void {.stdcall.}
vkCmdBeginRenderPass*: proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo , contents: VkSubpassContents): void {.stdcall.}
vkCmdNextSubpass*: proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}
vkCmdEndRenderPass*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
vkCmdExecuteCommands*: proc(commandBuffer: VkCommandBuffer, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}
vkCreateAndroidSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkAndroidSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceDisplayPropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPropertiesKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceDisplayPlanePropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPlanePropertiesKHR ): VkResult {.stdcall.}
vkGetDisplayPlaneSupportedDisplaysKHR*: proc(physicalDevice: VkPhysicalDevice, planeIndex: uint32, pDisplayCount: ptr uint32 , pDisplays: ptr VkDisplayKHR ): VkResult {.stdcall.}
vkGetDisplayModePropertiesKHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayModePropertiesKHR ): VkResult {.stdcall.}
vkCreateDisplayModeKHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: ptr VkDisplayModeCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pMode: ptr VkDisplayModeKHR ): VkResult {.stdcall.}
vkGetDisplayPlaneCapabilitiesKHR*: proc(physicalDevice: VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: uint32, pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR ): VkResult {.stdcall.}
vkCreateDisplayPlaneSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateSharedSwapchainsKHR*: proc(device: VkDevice, swapchainCount: uint32, pCreateInfos: ptr VkSwapchainCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSwapchains: ptr VkSwapchainKHR ): VkResult {.stdcall.}
vkDestroySurfaceKHR*: proc(instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetPhysicalDeviceSurfaceSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32 ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfaceCapabilitiesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfaceFormatsKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceFormatCount: ptr uint32 , pSurfaceFormats: ptr VkSurfaceFormatKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfacePresentModesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pPresentModeCount: ptr uint32 , pPresentModes: ptr VkPresentModeKHR ): VkResult {.stdcall.}
vkCreateSwapchainKHR*: proc(device: VkDevice, pCreateInfo: ptr VkSwapchainCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSwapchain: ptr VkSwapchainKHR ): VkResult {.stdcall.}
vkDestroySwapchainKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetSwapchainImagesKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pSwapchainImageCount: ptr uint32 , pSwapchainImages: ptr VkImage ): VkResult {.stdcall.}
vkAcquireNextImageKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR, timeout: uint64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: ptr uint32 ): VkResult {.stdcall.}
vkQueuePresentKHR*: proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR ): VkResult {.stdcall.}
vkCreateViSurfaceNN*: proc(instance: VkInstance, pCreateInfo: ptr VkViSurfaceCreateInfoNN , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateWaylandSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkWaylandSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceWaylandPresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, display: ptr wl_display ): VkBool32 {.stdcall.}
vkCreateWin32SurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceWin32PresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32): VkBool32 {.stdcall.}
vkCreateXlibSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceXlibPresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dpy: ptr Display , visualID: VisualID): VkBool32 {.stdcall.}
vkCreateXcbSurfaceKHR*: proc(instance: VkInstance, pCreateInfo: ptr VkXcbSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceXcbPresentationSupportKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, connection: ptr xcb_connection_t , visual_id: xcb_visualid_t): VkBool32 {.stdcall.}
vkCreateDirectFBSurfaceEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkDirectFBSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceDirectFBPresentationSupportEXT*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dfb: ptr IDirectFB ): VkBool32 {.stdcall.}
vkCreateImagePipeSurfaceFUCHSIA*: proc(instance: VkInstance, pCreateInfo: ptr VkImagePipeSurfaceCreateInfoFUCHSIA , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateStreamDescriptorSurfaceGGP*: proc(instance: VkInstance, pCreateInfo: ptr VkStreamDescriptorSurfaceCreateInfoGGP , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateDebugReportCallbackEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pCallback: ptr VkDebugReportCallbackEXT ): VkResult {.stdcall.}
vkDestroyDebugReportCallbackEXT*: proc(instance: VkInstance, callback: VkDebugReportCallbackEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkDebugReportMessageEXT*: proc(instance: VkInstance, flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, `object`: uint64, location: uint, messageCode: int32, pLayerPrefix: cstring , pMessage: cstring ): void {.stdcall.}
vkDebugMarkerSetObjectNameEXT*: proc(device: VkDevice, pNameInfo: ptr VkDebugMarkerObjectNameInfoEXT ): VkResult {.stdcall.}
vkDebugMarkerSetObjectTagEXT*: proc(device: VkDevice, pTagInfo: ptr VkDebugMarkerObjectTagInfoEXT ): VkResult {.stdcall.}
vkCmdDebugMarkerBeginEXT*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkDebugMarkerMarkerInfoEXT ): void {.stdcall.}
vkCmdDebugMarkerEndEXT*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
vkCmdDebugMarkerInsertEXT*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkDebugMarkerMarkerInfoEXT ): void {.stdcall.}
vkGetPhysicalDeviceExternalImageFormatPropertiesNV*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, externalHandleType: VkExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV ): VkResult {.stdcall.}
vkGetMemoryWin32HandleNV*: proc(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: ptr HANDLE ): VkResult {.stdcall.}
vkCmdExecuteGeneratedCommandsNV*: proc(commandBuffer: VkCommandBuffer, isPreprocessed: VkBool32, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV ): void {.stdcall.}
vkCmdPreprocessGeneratedCommandsNV*: proc(commandBuffer: VkCommandBuffer, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV ): void {.stdcall.}
vkCmdBindPipelineShaderGroupNV*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline, groupIndex: uint32): void {.stdcall.}
vkGetGeneratedCommandsMemoryRequirementsNV*: proc(device: VkDevice, pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}
vkCreateIndirectCommandsLayoutNV*: proc(device: VkDevice, pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV ): VkResult {.stdcall.}
vkDestroyIndirectCommandsLayoutNV*: proc(device: VkDevice, indirectCommandsLayout: VkIndirectCommandsLayoutNV, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetPhysicalDeviceFeatures2*: proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2 ): void {.stdcall.}
vkGetPhysicalDeviceProperties2*: proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2 ): void {.stdcall.}
vkGetPhysicalDeviceFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties2 ): void {.stdcall.}
vkGetPhysicalDeviceImageFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2 , pImageFormatProperties: ptr VkImageFormatProperties2 ): VkResult {.stdcall.}
vkGetPhysicalDeviceQueueFamilyProperties2*: proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties2 ): void {.stdcall.}
vkGetPhysicalDeviceMemoryProperties2*: proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2 ): void {.stdcall.}
vkGetPhysicalDeviceSparseImageFormatProperties2*: proc(physicalDevice: VkPhysicalDevice, pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2 , pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties2 ): void {.stdcall.}
vkCmdPushDescriptorSetKHR*: proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet ): void {.stdcall.}
vkTrimCommandPool*: proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags): void {.stdcall.}
vkGetPhysicalDeviceExternalBufferProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo , pExternalBufferProperties: ptr VkExternalBufferProperties ): void {.stdcall.}
vkGetMemoryWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}
vkGetMemoryWin32HandlePropertiesKHR*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR ): VkResult {.stdcall.}
vkGetMemoryFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}
vkGetMemoryFdPropertiesKHR*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, fd: int, pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceExternalSemaphoreProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo , pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties ): void {.stdcall.}
vkGetSemaphoreWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}
vkImportSemaphoreWin32HandleKHR*: proc(device: VkDevice, pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR ): VkResult {.stdcall.}
vkGetSemaphoreFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}
vkImportSemaphoreFdKHR*: proc(device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceExternalFenceProperties*: proc(physicalDevice: VkPhysicalDevice, pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo , pExternalFenceProperties: ptr VkExternalFenceProperties ): void {.stdcall.}
vkGetFenceWin32HandleKHR*: proc(device: VkDevice, pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}
vkImportFenceWin32HandleKHR*: proc(device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR ): VkResult {.stdcall.}
vkGetFenceFdKHR*: proc(device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}
vkImportFenceFdKHR*: proc(device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR ): VkResult {.stdcall.}
vkReleaseDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}
vkAcquireXlibDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, dpy: ptr Display , display: VkDisplayKHR): VkResult {.stdcall.}
vkGetRandROutputDisplayEXT*: proc(physicalDevice: VkPhysicalDevice, dpy: ptr Display , rrOutput: RROutput, pDisplay: ptr VkDisplayKHR ): VkResult {.stdcall.}
vkDisplayPowerControlEXT*: proc(device: VkDevice, display: VkDisplayKHR, pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT ): VkResult {.stdcall.}
vkRegisterDeviceEventEXT*: proc(device: VkDevice, pDeviceEventInfo: ptr VkDeviceEventInfoEXT , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}
vkRegisterDisplayEventEXT*: proc(device: VkDevice, display: VkDisplayKHR, pDisplayEventInfo: ptr VkDisplayEventInfoEXT , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}
vkGetSwapchainCounterEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR, counter: VkSurfaceCounterFlagBitsEXT, pCounterValue: ptr uint64 ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfaceCapabilities2EXT*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT ): VkResult {.stdcall.}
vkEnumeratePhysicalDeviceGroups*: proc(instance: VkInstance, pPhysicalDeviceGroupCount: ptr uint32 , pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties ): VkResult {.stdcall.}
vkGetDeviceGroupPeerMemoryFeatures*: proc(device: VkDevice, heapIndex: uint32, localDeviceIndex: uint32, remoteDeviceIndex: uint32, pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags ): void {.stdcall.}
vkBindBufferMemory2*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo ): VkResult {.stdcall.}
vkBindImageMemory2*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo ): VkResult {.stdcall.}
vkCmdSetDeviceMask*: proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}
vkGetDeviceGroupPresentCapabilitiesKHR*: proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR ): VkResult {.stdcall.}
vkGetDeviceGroupSurfacePresentModesKHR*: proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}
vkAcquireNextImage2KHR*: proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR , pImageIndex: ptr uint32 ): VkResult {.stdcall.}
vkCmdDispatchBase*: proc(commandBuffer: VkCommandBuffer, baseGroupX: uint32, baseGroupY: uint32, baseGroupZ: uint32, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}
vkGetPhysicalDevicePresentRectanglesKHR*: proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32 , pRects: ptr VkRect2D ): VkResult {.stdcall.}
vkCreateDescriptorUpdateTemplate*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate ): VkResult {.stdcall.}
vkDestroyDescriptorUpdateTemplate*: proc(device: VkDevice, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkUpdateDescriptorSetWithTemplate*: proc(device: VkDevice, descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: pointer ): void {.stdcall.}
vkCmdPushDescriptorSetWithTemplateKHR*: proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer ): void {.stdcall.}
vkSetHdrMetadataEXT*: proc(device: VkDevice, swapchainCount: uint32, pSwapchains: ptr VkSwapchainKHR , pMetadata: ptr VkHdrMetadataEXT ): void {.stdcall.}
vkGetSwapchainStatusKHR*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
vkGetRefreshCycleDurationGOOGLE*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE ): VkResult {.stdcall.}
vkGetPastPresentationTimingGOOGLE*: proc(device: VkDevice, swapchain: VkSwapchainKHR, pPresentationTimingCount: ptr uint32 , pPresentationTimings: ptr VkPastPresentationTimingGOOGLE ): VkResult {.stdcall.}
vkCreateIOSSurfaceMVK*: proc(instance: VkInstance, pCreateInfo: ptr VkIOSSurfaceCreateInfoMVK , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateMacOSSurfaceMVK*: proc(instance: VkInstance, pCreateInfo: ptr VkMacOSSurfaceCreateInfoMVK , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCreateMetalSurfaceEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkMetalSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkCmdSetViewportWScalingNV*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportWScalings: ptr VkViewportWScalingNV ): void {.stdcall.}
vkCmdSetDiscardRectangleEXT*: proc(commandBuffer: VkCommandBuffer, firstDiscardRectangle: uint32, discardRectangleCount: uint32, pDiscardRectangles: ptr VkRect2D ): void {.stdcall.}
vkCmdSetSampleLocationsEXT*: proc(commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT ): void {.stdcall.}
vkGetPhysicalDeviceMultisamplePropertiesEXT*: proc(physicalDevice: VkPhysicalDevice, samples: VkSampleCountFlagBits, pMultisampleProperties: ptr VkMultisamplePropertiesEXT ): void {.stdcall.}
vkGetPhysicalDeviceSurfaceCapabilities2KHR*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfaceFormats2KHR*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pSurfaceFormatCount: ptr uint32 , pSurfaceFormats: ptr VkSurfaceFormat2KHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceDisplayProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayProperties2KHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceDisplayPlaneProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPlaneProperties2KHR ): VkResult {.stdcall.}
vkGetDisplayModeProperties2KHR*: proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayModeProperties2KHR ): VkResult {.stdcall.}
vkGetDisplayPlaneCapabilities2KHR*: proc(physicalDevice: VkPhysicalDevice, pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR , pCapabilities: ptr VkDisplayPlaneCapabilities2KHR ): VkResult {.stdcall.}
vkGetBufferMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkBufferMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}
vkGetImageMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkImageMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}
vkGetImageSparseMemoryRequirements2*: proc(device: VkDevice, pInfo: ptr VkImageSparseMemoryRequirementsInfo2 , pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2 ): void {.stdcall.}
vkCreateSamplerYcbcrConversion*: proc(device: VkDevice, pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo , pAllocator: ptr VkAllocationCallbacks , pYcbcrConversion: ptr VkSamplerYcbcrConversion ): VkResult {.stdcall.}
vkDestroySamplerYcbcrConversion*: proc(device: VkDevice, ycbcrConversion: VkSamplerYcbcrConversion, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetDeviceQueue2*: proc(device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2 , pQueue: ptr VkQueue ): void {.stdcall.}
vkCreateValidationCacheEXT*: proc(device: VkDevice, pCreateInfo: ptr VkValidationCacheCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pValidationCache: ptr VkValidationCacheEXT ): VkResult {.stdcall.}
vkDestroyValidationCacheEXT*: proc(device: VkDevice, validationCache: VkValidationCacheEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetValidationCacheDataEXT*: proc(device: VkDevice, validationCache: VkValidationCacheEXT, pDataSize: ptr uint , pData: pointer ): VkResult {.stdcall.}
vkMergeValidationCachesEXT*: proc(device: VkDevice, dstCache: VkValidationCacheEXT, srcCacheCount: uint32, pSrcCaches: ptr VkValidationCacheEXT ): VkResult {.stdcall.}
vkGetDescriptorSetLayoutSupport*: proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pSupport: ptr VkDescriptorSetLayoutSupport ): void {.stdcall.}
vkGetSwapchainGrallocUsageANDROID*: proc(device: VkDevice, format: VkFormat, imageUsage: VkImageUsageFlags, grallocUsage: ptr int ): VkResult {.stdcall.}
vkGetSwapchainGrallocUsage2ANDROID*: proc(device: VkDevice, format: VkFormat, imageUsage: VkImageUsageFlags, swapchainImageUsage: VkSwapchainImageUsageFlagsANDROID, grallocConsumerUsage: ptr uint64 , grallocProducerUsage: ptr uint64 ): VkResult {.stdcall.}
vkAcquireImageANDROID*: proc(device: VkDevice, image: VkImage, nativeFenceFd: int, semaphore: VkSemaphore, fence: VkFence): VkResult {.stdcall.}
vkQueueSignalReleaseImageANDROID*: proc(queue: VkQueue, waitSemaphoreCount: uint32, pWaitSemaphores: ptr VkSemaphore , image: VkImage, pNativeFenceFd: ptr int ): VkResult {.stdcall.}
vkGetShaderInfoAMD*: proc(device: VkDevice, pipeline: VkPipeline, shaderStage: VkShaderStageFlagBits, infoType: VkShaderInfoTypeAMD, pInfoSize: ptr uint , pInfo: pointer ): VkResult {.stdcall.}
vkSetLocalDimmingAMD*: proc(device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32): void {.stdcall.}
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT*: proc(physicalDevice: VkPhysicalDevice, pTimeDomainCount: ptr uint32 , pTimeDomains: ptr VkTimeDomainEXT ): VkResult {.stdcall.}
vkGetCalibratedTimestampsEXT*: proc(device: VkDevice, timestampCount: uint32, pTimestampInfos: ptr VkCalibratedTimestampInfoEXT , pTimestamps: ptr uint64 , pMaxDeviation: ptr uint64 ): VkResult {.stdcall.}
vkSetDebugUtilsObjectNameEXT*: proc(device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT ): VkResult {.stdcall.}
vkSetDebugUtilsObjectTagEXT*: proc(device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT ): VkResult {.stdcall.}
vkQueueBeginDebugUtilsLabelEXT*: proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}
vkQueueEndDebugUtilsLabelEXT*: proc(queue: VkQueue): void {.stdcall.}
vkQueueInsertDebugUtilsLabelEXT*: proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}
vkCmdBeginDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}
vkCmdEndDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer): void {.stdcall.}
vkCmdInsertDebugUtilsLabelEXT*: proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}
vkCreateDebugUtilsMessengerEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pMessenger: ptr VkDebugUtilsMessengerEXT ): VkResult {.stdcall.}
vkDestroyDebugUtilsMessengerEXT*: proc(instance: VkInstance, messenger: VkDebugUtilsMessengerEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkSubmitDebugUtilsMessageEXT*: proc(instance: VkInstance, messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT ): void {.stdcall.}
vkGetMemoryHostPointerPropertiesEXT*: proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHostPointer: pointer , pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT ): VkResult {.stdcall.}
vkCmdWriteBufferMarkerAMD*: proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, marker: uint32): void {.stdcall.}
vkCreateRenderPass2*: proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo2 , pAllocator: ptr VkAllocationCallbacks , pRenderPass: ptr VkRenderPass ): VkResult {.stdcall.}
vkCmdBeginRenderPass2*: proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo , pSubpassBeginInfo: ptr VkSubpassBeginInfo ): void {.stdcall.}
vkCmdNextSubpass2*: proc(commandBuffer: VkCommandBuffer, pSubpassBeginInfo: ptr VkSubpassBeginInfo , pSubpassEndInfo: ptr VkSubpassEndInfo ): void {.stdcall.}
vkCmdEndRenderPass2*: proc(commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo ): void {.stdcall.}
vkGetSemaphoreCounterValue*: proc(device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64 ): VkResult {.stdcall.}
vkWaitSemaphores*: proc(device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo , timeout: uint64): VkResult {.stdcall.}
vkSignalSemaphore*: proc(device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo ): VkResult {.stdcall.}
vkGetAndroidHardwareBufferPropertiesANDROID*: proc(device: VkDevice, buffer: ptr AHardwareBuffer , pProperties: ptr VkAndroidHardwareBufferPropertiesANDROID ): VkResult {.stdcall.}
vkGetMemoryAndroidHardwareBufferANDROID*: proc(device: VkDevice, pInfo: ptr VkMemoryGetAndroidHardwareBufferInfoANDROID , pBuffer: ptr ptr AHardwareBuffer ): VkResult {.stdcall.}
vkCmdDrawIndirectCount*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
vkCmdDrawIndexedIndirectCount*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
vkCmdSetCheckpointNV*: proc(commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer ): void {.stdcall.}
vkGetQueueCheckpointDataNV*: proc(queue: VkQueue, pCheckpointDataCount: ptr uint32 , pCheckpointData: ptr VkCheckpointDataNV ): void {.stdcall.}
vkCmdBindTransformFeedbackBuffersEXT*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize , pSizes: ptr VkDeviceSize ): void {.stdcall.}
vkCmdBeginTransformFeedbackEXT*: proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer , pCounterBufferOffsets: ptr VkDeviceSize ): void {.stdcall.}
vkCmdEndTransformFeedbackEXT*: proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer , pCounterBufferOffsets: ptr VkDeviceSize ): void {.stdcall.}
vkCmdBeginQueryIndexedEXT*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags, index: uint32): void {.stdcall.}
vkCmdEndQueryIndexedEXT*: proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32): void {.stdcall.}
vkCmdDrawIndirectByteCountEXT*: proc(commandBuffer: VkCommandBuffer, instanceCount: uint32, firstInstance: uint32, counterBuffer: VkBuffer, counterBufferOffset: VkDeviceSize, counterOffset: uint32, vertexStride: uint32): void {.stdcall.}
vkCmdSetExclusiveScissorNV*: proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissors: ptr VkRect2D ): void {.stdcall.}
vkCmdBindShadingRateImageNV*: proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}
vkCmdSetViewportShadingRatePaletteNV*: proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pShadingRatePalettes: ptr VkShadingRatePaletteNV ): void {.stdcall.}
vkCmdSetCoarseSampleOrderNV*: proc(commandBuffer: VkCommandBuffer, sampleOrderType: VkCoarseSampleOrderTypeNV, customSampleOrderCount: uint32, pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV ): void {.stdcall.}
vkCmdDrawMeshTasksNV*: proc(commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32): void {.stdcall.}
vkCmdDrawMeshTasksIndirectNV*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}
vkCmdDrawMeshTasksIndirectCountNV*: proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}
vkCompileDeferredNV*: proc(device: VkDevice, pipeline: VkPipeline, shader: uint32): VkResult {.stdcall.}
vkCreateAccelerationStructureNV*: proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pAccelerationStructure: ptr VkAccelerationStructureNV ): VkResult {.stdcall.}
vkDestroyAccelerationStructureKHR*: proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetAccelerationStructureMemoryRequirementsKHR*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoKHR , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}
vkGetAccelerationStructureMemoryRequirementsNV*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV , pMemoryRequirements: ptr VkMemoryRequirements2KHR ): void {.stdcall.}
vkBindAccelerationStructureMemoryKHR*: proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindAccelerationStructureMemoryInfoKHR ): VkResult {.stdcall.}
vkCmdCopyAccelerationStructureNV*: proc(commandBuffer: VkCommandBuffer, dst: VkAccelerationStructureKHR, src: VkAccelerationStructureKHR, mode: VkCopyAccelerationStructureModeKHR): void {.stdcall.}
vkCmdCopyAccelerationStructureKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR ): void {.stdcall.}
vkCopyAccelerationStructureKHR*: proc(device: VkDevice, pInfo: ptr VkCopyAccelerationStructureInfoKHR ): VkResult {.stdcall.}
vkCmdCopyAccelerationStructureToMemoryKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR ): void {.stdcall.}
vkCopyAccelerationStructureToMemoryKHR*: proc(device: VkDevice, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR ): VkResult {.stdcall.}
vkCmdCopyMemoryToAccelerationStructureKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR ): void {.stdcall.}
vkCopyMemoryToAccelerationStructureKHR*: proc(device: VkDevice, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR ): VkResult {.stdcall.}
vkCmdWriteAccelerationStructuresPropertiesKHR*: proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR , queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}
vkCmdBuildAccelerationStructureNV*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureInfoNV , instanceData: VkBuffer, instanceOffset: VkDeviceSize, update: VkBool32, dst: VkAccelerationStructureKHR, src: VkAccelerationStructureKHR, scratch: VkBuffer, scratchOffset: VkDeviceSize): void {.stdcall.}
vkWriteAccelerationStructuresPropertiesKHR*: proc(device: VkDevice, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR , queryType: VkQueryType, dataSize: uint, pData: pointer , stride: uint): VkResult {.stdcall.}
vkCmdTraceRaysKHR*: proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedBufferRegionKHR , pMissShaderBindingTable: ptr VkStridedBufferRegionKHR , pHitShaderBindingTable: ptr VkStridedBufferRegionKHR , pCallableShaderBindingTable: ptr VkStridedBufferRegionKHR , width: uint32, height: uint32, depth: uint32): void {.stdcall.}
vkCmdTraceRaysNV*: proc(commandBuffer: VkCommandBuffer, raygenShaderBindingTableBuffer: VkBuffer, raygenShaderBindingOffset: VkDeviceSize, missShaderBindingTableBuffer: VkBuffer, missShaderBindingOffset: VkDeviceSize, missShaderBindingStride: VkDeviceSize, hitShaderBindingTableBuffer: VkBuffer, hitShaderBindingOffset: VkDeviceSize, hitShaderBindingStride: VkDeviceSize, callableShaderBindingTableBuffer: VkBuffer, callableShaderBindingOffset: VkDeviceSize, callableShaderBindingStride: VkDeviceSize, width: uint32, height: uint32, depth: uint32): void {.stdcall.}
vkGetRayTracingShaderGroupHandlesKHR*: proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: uint, pData: pointer ): VkResult {.stdcall.}
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR*: proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: uint, pData: pointer ): VkResult {.stdcall.}
vkGetAccelerationStructureHandleNV*: proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, dataSize: uint, pData: pointer ): VkResult {.stdcall.}
vkCreateRayTracingPipelinesNV*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}
vkCreateRayTracingPipelinesKHR*: proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV*: proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkCooperativeMatrixPropertiesNV ): VkResult {.stdcall.}
vkCmdTraceRaysIndirectKHR*: proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedBufferRegionKHR , pMissShaderBindingTable: ptr VkStridedBufferRegionKHR , pHitShaderBindingTable: ptr VkStridedBufferRegionKHR , pCallableShaderBindingTable: ptr VkStridedBufferRegionKHR , buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}
vkGetDeviceAccelerationStructureCompatibilityKHR*: proc(device: VkDevice, version: ptr VkAccelerationStructureVersionKHR ): VkResult {.stdcall.}
vkGetImageViewHandleNVX*: proc(device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX ): uint32 {.stdcall.}
vkGetImageViewAddressNVX*: proc(device: VkDevice, imageView: VkImageView, pProperties: ptr VkImageViewAddressPropertiesNVX ): VkResult {.stdcall.}
vkGetPhysicalDeviceSurfacePresentModes2EXT*: proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pPresentModeCount: ptr uint32 , pPresentModes: ptr VkPresentModeKHR ): VkResult {.stdcall.}
vkGetDeviceGroupSurfacePresentModes2EXT*: proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}
vkAcquireFullScreenExclusiveModeEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
vkReleaseFullScreenExclusiveModeEXT*: proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}
vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR*: proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, pCounterCount: ptr uint32 , pCounters: ptr VkPerformanceCounterKHR , pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR*: proc(physicalDevice: VkPhysicalDevice, pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR , pNumPasses: ptr uint32 ): void {.stdcall.}
vkAcquireProfilingLockKHR*: proc(device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR ): VkResult {.stdcall.}
vkReleaseProfilingLockKHR*: proc(device: VkDevice): void {.stdcall.}
vkGetImageDrmFormatModifierPropertiesEXT*: proc(device: VkDevice, image: VkImage, pProperties: ptr VkImageDrmFormatModifierPropertiesEXT ): VkResult {.stdcall.}
vkGetBufferOpaqueCaptureAddress*: proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo ): uint64 {.stdcall.}
vkGetBufferDeviceAddress*: proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo ): VkDeviceAddress {.stdcall.}
vkCreateHeadlessSurfaceEXT*: proc(instance: VkInstance, pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}
vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV*: proc(physicalDevice: VkPhysicalDevice, pCombinationCount: ptr uint32 , pCombinations: ptr VkFramebufferMixedSamplesCombinationNV ): VkResult {.stdcall.}
vkInitializePerformanceApiINTEL*: proc(device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL ): VkResult {.stdcall.}
vkUninitializePerformanceApiINTEL*: proc(device: VkDevice): void {.stdcall.}
vkCmdSetPerformanceMarkerINTEL*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL ): VkResult {.stdcall.}
vkCmdSetPerformanceStreamMarkerINTEL*: proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL ): VkResult {.stdcall.}
vkCmdSetPerformanceOverrideINTEL*: proc(commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL ): VkResult {.stdcall.}
vkAcquirePerformanceConfigurationINTEL*: proc(device: VkDevice, pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL , pConfiguration: ptr VkPerformanceConfigurationINTEL ): VkResult {.stdcall.}
vkReleasePerformanceConfigurationINTEL*: proc(device: VkDevice, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}
vkQueueSetPerformanceConfigurationINTEL*: proc(queue: VkQueue, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}
vkGetPerformanceParameterINTEL*: proc(device: VkDevice, parameter: VkPerformanceParameterTypeINTEL, pValue: ptr VkPerformanceValueINTEL ): VkResult {.stdcall.}
vkGetDeviceMemoryOpaqueCaptureAddress*: proc(device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo ): uint64 {.stdcall.}
vkGetPipelineExecutablePropertiesKHR*: proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoKHR , pExecutableCount: ptr uint32 , pProperties: ptr VkPipelineExecutablePropertiesKHR ): VkResult {.stdcall.}
vkGetPipelineExecutableStatisticsKHR*: proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR , pStatisticCount: ptr uint32 , pStatistics: ptr VkPipelineExecutableStatisticKHR ): VkResult {.stdcall.}
vkGetPipelineExecutableInternalRepresentationsKHR*: proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR , pInternalRepresentationCount: ptr uint32 , pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR ): VkResult {.stdcall.}
vkCmdSetLineStippleEXT*: proc(commandBuffer: VkCommandBuffer, lineStippleFactor: uint32, lineStipplePattern: uint16): void {.stdcall.}
vkGetPhysicalDeviceToolPropertiesEXT*: proc(physicalDevice: VkPhysicalDevice, pToolCount: ptr uint32 , pToolProperties: ptr VkPhysicalDeviceToolPropertiesEXT ): VkResult {.stdcall.}
vkCreateAccelerationStructureKHR*: proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pAccelerationStructure: ptr VkAccelerationStructureKHR ): VkResult {.stdcall.}
vkCmdBuildAccelerationStructureKHR*: proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR , ppOffsetInfos: ptr ptr VkAccelerationStructureBuildOffsetInfoKHR ): void {.stdcall.}
vkCmdBuildAccelerationStructureIndirectKHR*: proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR , indirectBuffer: VkBuffer, indirectOffset: VkDeviceSize, indirectStride: uint32): void {.stdcall.}
vkBuildAccelerationStructureKHR*: proc(device: VkDevice, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR , ppOffsetInfos: ptr ptr VkAccelerationStructureBuildOffsetInfoKHR ): VkResult {.stdcall.}
vkGetAccelerationStructureDeviceAddressKHR*: proc(device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR ): VkDeviceAddress {.stdcall.}
vkCreateDeferredOperationKHR*: proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks , pDeferredOperation: ptr VkDeferredOperationKHR ): VkResult {.stdcall.}
vkDestroyDeferredOperationKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkGetDeferredOperationMaxConcurrencyKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): uint32 {.stdcall.}
vkGetDeferredOperationResultKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
vkDeferredOperationJoinKHR*: proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}
vkCmdSetCullModeEXT*: proc(commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags): void {.stdcall.}
vkCmdSetFrontFaceEXT*: proc(commandBuffer: VkCommandBuffer, frontFace: VkFrontFace): void {.stdcall.}
vkCmdSetPrimitiveTopologyEXT*: proc(commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology): void {.stdcall.}
vkCmdSetViewportWithCountEXT*: proc(commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport ): void {.stdcall.}
vkCmdSetScissorWithCountEXT*: proc(commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D ): void {.stdcall.}
vkCmdBindVertexBuffers2EXT*: proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize , pSizes: ptr VkDeviceSize , pStrides: ptr VkDeviceSize ): void {.stdcall.}
vkCmdSetDepthTestEnableEXT*: proc(commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32): void {.stdcall.}
vkCmdSetDepthWriteEnableEXT*: proc(commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32): void {.stdcall.}
vkCmdSetDepthCompareOpEXT*: proc(commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp): void {.stdcall.}
vkCmdSetDepthBoundsTestEnableEXT*: proc(commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32): void {.stdcall.}
vkCmdSetStencilTestEnableEXT*: proc(commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32): void {.stdcall.}
vkCmdSetStencilOpEXT*: proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, failOp: VkStencilOp, passOp: VkStencilOp, depthFailOp: VkStencilOp, compareOp: VkCompareOp): void {.stdcall.}
vkCreatePrivateDataSlotEXT*: proc(device: VkDevice, pCreateInfo: ptr VkPrivateDataSlotCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pPrivateDataSlot: ptr VkPrivateDataSlotEXT ): VkResult {.stdcall.}
vkDestroyPrivateDataSlotEXT*: proc(device: VkDevice, privateDataSlot: VkPrivateDataSlotEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}
vkSetPrivateDataEXT*: proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlotEXT, data: uint64): VkResult {.stdcall.}
vkGetPrivateDataEXT*: proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlotEXT, pData: ptr uint64 ): void {.stdcall.}
# Vulkan 1_0
proc vkLoad1_0*() =
when defined linux:
vkCreateInstance = cast[proc(pCreateInfo: ptr VkInstanceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pInstance: ptr VkInstance ): VkResult {.stdcall.}](vkGetProc("vkCreateInstance"))
vkDestroyInstance = cast[proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyInstance"))
vkEnumeratePhysicalDevices = cast[proc(instance: VkInstance, pPhysicalDeviceCount: ptr uint32 , pPhysicalDevices: ptr VkPhysicalDevice ): VkResult {.stdcall.}](vkGetProc("vkEnumeratePhysicalDevices"))
vkGetPhysicalDeviceFeatures = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFeatures"))
vkGetPhysicalDeviceFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFormatProperties"))
vkGetPhysicalDeviceImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, pImageFormatProperties: ptr VkImageFormatProperties ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceImageFormatProperties"))
vkGetPhysicalDeviceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceProperties"))
vkGetPhysicalDeviceQueueFamilyProperties = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceQueueFamilyProperties"))
vkGetPhysicalDeviceMemoryProperties = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceMemoryProperties"))
vkGetInstanceProcAddr = cast[proc(instance: VkInstance, pName: cstring ): PFN_vkVoidFunction {.stdcall.}](vkGetProc("vkGetInstanceProcAddr"))
vkGetDeviceProcAddr = cast[proc(device: VkDevice, pName: cstring ): PFN_vkVoidFunction {.stdcall.}](vkGetProc("vkGetDeviceProcAddr"))
vkCreateDevice = cast[proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDevice: ptr VkDevice ): VkResult {.stdcall.}](vkGetProc("vkCreateDevice"))
vkDestroyDevice = cast[proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDevice"))
vkEnumerateInstanceExtensionProperties = cast[proc(pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateInstanceExtensionProperties"))
vkEnumerateDeviceExtensionProperties = cast[proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateDeviceExtensionProperties"))
vkEnumerateInstanceLayerProperties = cast[proc(pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateInstanceLayerProperties"))
vkEnumerateDeviceLayerProperties = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateDeviceLayerProperties"))
vkGetDeviceQueue = cast[proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue ): void {.stdcall.}](vkGetProc("vkGetDeviceQueue"))
vkQueueSubmit = cast[proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo , fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkQueueSubmit"))
vkQueueWaitIdle = cast[proc(queue: VkQueue): VkResult {.stdcall.}](vkGetProc("vkQueueWaitIdle"))
vkDeviceWaitIdle = cast[proc(device: VkDevice): VkResult {.stdcall.}](vkGetProc("vkDeviceWaitIdle"))
vkAllocateMemory = cast[proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo , pAllocator: ptr VkAllocationCallbacks , pMemory: ptr VkDeviceMemory ): VkResult {.stdcall.}](vkGetProc("vkAllocateMemory"))
vkFreeMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkFreeMemory"))
vkMapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, offset: VkDeviceSize, size: VkDeviceSize, flags: VkMemoryMapFlags, ppData: ptr pointer ): VkResult {.stdcall.}](vkGetProc("vkMapMemory"))
vkUnmapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}](vkGetProc("vkUnmapMemory"))
vkFlushMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}](vkGetProc("vkFlushMappedMemoryRanges"))
vkInvalidateMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}](vkGetProc("vkInvalidateMappedMemoryRanges"))
vkGetDeviceMemoryCommitment = cast[proc(device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkGetDeviceMemoryCommitment"))
vkBindBufferMemory = cast[proc(device: VkDevice, buffer: VkBuffer, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetProc("vkBindBufferMemory"))
vkBindImageMemory = cast[proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetProc("vkBindImageMemory"))
vkGetBufferMemoryRequirements = cast[proc(device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetBufferMemoryRequirements"))
vkGetImageMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetImageMemoryRequirements"))
vkGetImageSparseMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetImageSparseMemoryRequirements"))
vkGetPhysicalDeviceSparseImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, samples: VkSampleCountFlagBits, usage: VkImageUsageFlags, tiling: VkImageTiling, pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSparseImageFormatProperties"))
vkQueueBindSparse = cast[proc(queue: VkQueue, bindInfoCount: uint32, pBindInfo: ptr VkBindSparseInfo , fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkQueueBindSparse"))
vkCreateFence = cast[proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkCreateFence"))
vkDestroyFence = cast[proc(device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyFence"))
vkResetFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkResetFences"))
vkGetFenceStatus = cast[proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkGetFenceStatus"))
vkWaitForFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence , waitAll: VkBool32, timeout: uint64): VkResult {.stdcall.}](vkGetProc("vkWaitForFences"))
vkCreateSemaphore = cast[proc(device: VkDevice, pCreateInfo: ptr VkSemaphoreCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSemaphore: ptr VkSemaphore ): VkResult {.stdcall.}](vkGetProc("vkCreateSemaphore"))
vkDestroySemaphore = cast[proc(device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySemaphore"))
vkCreateEvent = cast[proc(device: VkDevice, pCreateInfo: ptr VkEventCreateInfo , pAllocator: ptr VkAllocationCallbacks , pEvent: ptr VkEvent ): VkResult {.stdcall.}](vkGetProc("vkCreateEvent"))
vkDestroyEvent = cast[proc(device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyEvent"))
vkGetEventStatus = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkGetEventStatus"))
vkSetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkSetEvent"))
vkResetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkResetEvent"))
vkCreateQueryPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkQueryPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pQueryPool: ptr VkQueryPool ): VkResult {.stdcall.}](vkGetProc("vkCreateQueryPool"))
vkDestroyQueryPool = cast[proc(device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyQueryPool"))
vkGetQueryPoolResults = cast[proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dataSize: uint, pData: pointer , stride: VkDeviceSize, flags: VkQueryResultFlags): VkResult {.stdcall.}](vkGetProc("vkGetQueryPoolResults"))
vkCreateBuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pBuffer: ptr VkBuffer ): VkResult {.stdcall.}](vkGetProc("vkCreateBuffer"))
vkDestroyBuffer = cast[proc(device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyBuffer"))
vkCreateBufferView = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkBufferView ): VkResult {.stdcall.}](vkGetProc("vkCreateBufferView"))
vkDestroyBufferView = cast[proc(device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyBufferView"))
vkCreateImage = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo , pAllocator: ptr VkAllocationCallbacks , pImage: ptr VkImage ): VkResult {.stdcall.}](vkGetProc("vkCreateImage"))
vkDestroyImage = cast[proc(device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyImage"))
vkGetImageSubresourceLayout = cast[proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource , pLayout: ptr VkSubresourceLayout ): void {.stdcall.}](vkGetProc("vkGetImageSubresourceLayout"))
vkCreateImageView = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkImageView ): VkResult {.stdcall.}](vkGetProc("vkCreateImageView"))
vkDestroyImageView = cast[proc(device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyImageView"))
vkCreateShaderModule = cast[proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo , pAllocator: ptr VkAllocationCallbacks , pShaderModule: ptr VkShaderModule ): VkResult {.stdcall.}](vkGetProc("vkCreateShaderModule"))
vkDestroyShaderModule = cast[proc(device: VkDevice, shaderModule: VkShaderModule, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyShaderModule"))
vkCreatePipelineCache = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineCacheCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineCache: ptr VkPipelineCache ): VkResult {.stdcall.}](vkGetProc("vkCreatePipelineCache"))
vkDestroyPipelineCache = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipelineCache"))
vkGetPipelineCacheData = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pDataSize: ptr uint , pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetPipelineCacheData"))
vkMergePipelineCaches = cast[proc(device: VkDevice, dstCache: VkPipelineCache, srcCacheCount: uint32, pSrcCaches: ptr VkPipelineCache ): VkResult {.stdcall.}](vkGetProc("vkMergePipelineCaches"))
vkCreateGraphicsPipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkGraphicsPipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateGraphicsPipelines"))
vkCreateComputePipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkComputePipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateComputePipelines"))
vkDestroyPipeline = cast[proc(device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipeline"))
vkCreatePipelineLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineLayout: ptr VkPipelineLayout ): VkResult {.stdcall.}](vkGetProc("vkCreatePipelineLayout"))
vkDestroyPipelineLayout = cast[proc(device: VkDevice, pipelineLayout: VkPipelineLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipelineLayout"))
vkCreateSampler = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSampler: ptr VkSampler ): VkResult {.stdcall.}](vkGetProc("vkCreateSampler"))
vkDestroySampler = cast[proc(device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySampler"))
vkCreateDescriptorSetLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSetLayout: ptr VkDescriptorSetLayout ): VkResult {.stdcall.}](vkGetProc("vkCreateDescriptorSetLayout"))
vkDestroyDescriptorSetLayout = cast[proc(device: VkDevice, descriptorSetLayout: VkDescriptorSetLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDescriptorSetLayout"))
vkCreateDescriptorPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorPool: ptr VkDescriptorPool ): VkResult {.stdcall.}](vkGetProc("vkCreateDescriptorPool"))
vkDestroyDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDescriptorPool"))
vkResetDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, flags: VkDescriptorPoolResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetDescriptorPool"))
vkAllocateDescriptorSets = cast[proc(device: VkDevice, pAllocateInfo: ptr VkDescriptorSetAllocateInfo , pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}](vkGetProc("vkAllocateDescriptorSets"))
vkFreeDescriptorSets = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}](vkGetProc("vkFreeDescriptorSets"))
vkUpdateDescriptorSets = cast[proc(device: VkDevice, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet , descriptorCopyCount: uint32, pDescriptorCopies: ptr VkCopyDescriptorSet ): void {.stdcall.}](vkGetProc("vkUpdateDescriptorSets"))
vkCreateFramebuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkFramebufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFramebuffer: ptr VkFramebuffer ): VkResult {.stdcall.}](vkGetProc("vkCreateFramebuffer"))
vkDestroyFramebuffer = cast[proc(device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyFramebuffer"))
vkCreateRenderPass = cast[proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo , pAllocator: ptr VkAllocationCallbacks , pRenderPass: ptr VkRenderPass ): VkResult {.stdcall.}](vkGetProc("vkCreateRenderPass"))
vkDestroyRenderPass = cast[proc(device: VkDevice, render_pass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyRenderPass"))
vkGetRenderAreaGranularity = cast[proc(device: VkDevice, render_pass: VkRenderPass, pGranularity: ptr VkExtent2D ): void {.stdcall.}](vkGetProc("vkGetRenderAreaGranularity"))
vkCreateCommandPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pCommandPool: ptr VkCommandPool ): VkResult {.stdcall.}](vkGetProc("vkCreateCommandPool"))
vkDestroyCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyCommandPool"))
vkResetCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetCommandPool"))
vkAllocateCommandBuffers = cast[proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo , pCommandBuffers: ptr VkCommandBuffer ): VkResult {.stdcall.}](vkGetProc("vkAllocateCommandBuffers"))
vkFreeCommandBuffers = cast[proc(device: VkDevice, commandPool: VkCommandPool, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}](vkGetProc("vkFreeCommandBuffers"))
vkBeginCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo ): VkResult {.stdcall.}](vkGetProc("vkBeginCommandBuffer"))
vkEndCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}](vkGetProc("vkEndCommandBuffer"))
vkResetCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetCommandBuffer"))
vkCmdBindPipeline = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline): void {.stdcall.}](vkGetProc("vkCmdBindPipeline"))
vkCmdSetViewport = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewports: ptr VkViewport ): void {.stdcall.}](vkGetProc("vkCmdSetViewport"))
vkCmdSetScissor = cast[proc(commandBuffer: VkCommandBuffer, firstScissor: uint32, scissorCount: uint32, pScissors: ptr VkRect2D ): void {.stdcall.}](vkGetProc("vkCmdSetScissor"))
vkCmdSetLineWidth = cast[proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}](vkGetProc("vkCmdSetLineWidth"))
vkCmdSetDepthBias = cast[proc(commandBuffer: VkCommandBuffer, depthBiasConstantFactor: float32, depthBiasClamp: float32, depthBiasSlopeFactor: float32): void {.stdcall.}](vkGetProc("vkCmdSetDepthBias"))
vkCmdSetBlendConstants = cast[proc(commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]): void {.stdcall.}](vkGetProc("vkCmdSetBlendConstants"))
vkCmdSetDepthBounds = cast[proc(commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32): void {.stdcall.}](vkGetProc("vkCmdSetDepthBounds"))
vkCmdSetStencilCompareMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilCompareMask"))
vkCmdSetStencilWriteMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilWriteMask"))
vkCmdSetStencilReference = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilReference"))
vkCmdBindDescriptorSets = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet , dynamicOffsetCount: uint32, pDynamicOffsets: ptr uint32 ): void {.stdcall.}](vkGetProc("vkCmdBindDescriptorSets"))
vkCmdBindIndexBuffer = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, indexType: VkIndexType): void {.stdcall.}](vkGetProc("vkCmdBindIndexBuffer"))
vkCmdBindVertexBuffers = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdBindVertexBuffers"))
vkCmdDraw = cast[proc(commandBuffer: VkCommandBuffer, vertexCount: uint32, instanceCount: uint32, firstVertex: uint32, firstInstance: uint32): void {.stdcall.}](vkGetProc("vkCmdDraw"))
vkCmdDrawIndexed = cast[proc(commandBuffer: VkCommandBuffer, indexCount: uint32, instanceCount: uint32, firstIndex: uint32, vertexOffset: int32, firstInstance: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndexed"))
vkCmdDrawIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndirect"))
vkCmdDrawIndexedIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndexedIndirect"))
vkCmdDispatch = cast[proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetProc("vkCmdDispatch"))
vkCmdDispatchIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}](vkGetProc("vkCmdDispatchIndirect"))
vkCmdCopyBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyBuffer"))
vkCmdCopyImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyImage"))
vkCmdBlitImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageBlit , filter: VkFilter): void {.stdcall.}](vkGetProc("vkCmdBlitImage"))
vkCmdCopyBufferToImage = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyBufferToImage"))
vkCmdCopyImageToBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyImageToBuffer"))
vkCmdUpdateBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, pData: pointer ): void {.stdcall.}](vkGetProc("vkCmdUpdateBuffer"))
vkCmdFillBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, size: VkDeviceSize, data: uint32): void {.stdcall.}](vkGetProc("vkCmdFillBuffer"))
vkCmdClearColorImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pColor: ptr VkClearColorValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}](vkGetProc("vkCmdClearColorImage"))
vkCmdClearDepthStencilImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pDepthStencil: ptr VkClearDepthStencilValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}](vkGetProc("vkCmdClearDepthStencilImage"))
vkCmdClearAttachments = cast[proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pAttachments: ptr VkClearAttachment , rectCount: uint32, pRects: ptr VkClearRect ): void {.stdcall.}](vkGetProc("vkCmdClearAttachments"))
vkCmdResolveImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageResolve ): void {.stdcall.}](vkGetProc("vkCmdResolveImage"))
vkCmdSetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetProc("vkCmdSetEvent"))
vkCmdResetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetProc("vkCmdResetEvent"))
vkCmdWaitEvents = cast[proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent , srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}](vkGetProc("vkCmdWaitEvents"))
vkCmdPipelineBarrier = cast[proc(commandBuffer: VkCommandBuffer, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, dependencyFlags: VkDependencyFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}](vkGetProc("vkCmdPipelineBarrier"))
vkCmdBeginQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags): void {.stdcall.}](vkGetProc("vkCmdBeginQuery"))
vkCmdEndQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetProc("vkCmdEndQuery"))
vkCmdResetQueryPool = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}](vkGetProc("vkCmdResetQueryPool"))
vkCmdWriteTimestamp = cast[proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetProc("vkCmdWriteTimestamp"))
vkCmdCopyQueryPoolResults = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, stride: VkDeviceSize, flags: VkQueryResultFlags): void {.stdcall.}](vkGetProc("vkCmdCopyQueryPoolResults"))
vkCmdPushConstants = cast[proc(commandBuffer: VkCommandBuffer, layout: VkPipelineLayout, stageFlags: VkShaderStageFlags, offset: uint32, size: uint32, pValues: pointer ): void {.stdcall.}](vkGetProc("vkCmdPushConstants"))
vkCmdBeginRenderPass = cast[proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo , contents: VkSubpassContents): void {.stdcall.}](vkGetProc("vkCmdBeginRenderPass"))
vkCmdNextSubpass = cast[proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}](vkGetProc("vkCmdNextSubpass"))
vkCmdEndRenderPass = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetProc("vkCmdEndRenderPass"))
vkCmdExecuteCommands = cast[proc(commandBuffer: VkCommandBuffer, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}](vkGetProc("vkCmdExecuteCommands"))
when defined windows:
vkCreateInstance = cast[proc(pCreateInfo: ptr VkInstanceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pInstance: ptr VkInstance ): VkResult {.stdcall.}](vkGetProcAddress("vkCreateInstance"))
vkGetInstanceProcAddr = cast[proc(instance: VkInstance, pName: cstring ): PFN_vkVoidFunction {.stdcall.}](vkGetProcAddress("vkGetInstanceProcAddr"))
#[ vkDestroyInstance = cast[proc(instance: VkInstance, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyInstance"))
vkGetPhysicalDeviceFeatures = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFeatures"))
vkGetPhysicalDeviceFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFormatProperties"))
vkGetPhysicalDeviceImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, pImageFormatProperties: ptr VkImageFormatProperties ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceImageFormatProperties"))
vkGetPhysicalDeviceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceProperties"))
vkGetPhysicalDeviceMemoryProperties = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceMemoryProperties"))
vkGetDeviceProcAddr = cast[proc(device: VkDevice, pName: cstring ): PFN_vkVoidFunction {.stdcall.}](vkGetProc("vkGetDeviceProcAddr"))
vkCreateDevice = cast[proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDevice: ptr VkDevice ): VkResult {.stdcall.}](vkGetProc("vkCreateDevice"))
vkDestroyDevice = cast[proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDevice"))
vkEnumerateDeviceExtensionProperties = cast[proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateDeviceExtensionProperties"))
vkEnumerateInstanceLayerProperties = cast[proc(pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateInstanceLayerProperties"))
vkEnumerateDeviceLayerProperties = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkLayerProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumerateDeviceLayerProperties"))
vkGetDeviceQueue = cast[proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue ): void {.stdcall.}](vkGetProc("vkGetDeviceQueue"))
vkQueueSubmit = cast[proc(queue: VkQueue, submitCount: uint32, pSubmits: ptr VkSubmitInfo , fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkQueueSubmit"))
vkQueueWaitIdle = cast[proc(queue: VkQueue): VkResult {.stdcall.}](vkGetProc("vkQueueWaitIdle"))
vkDeviceWaitIdle = cast[proc(device: VkDevice): VkResult {.stdcall.}](vkGetProc("vkDeviceWaitIdle"))
vkAllocateMemory = cast[proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo , pAllocator: ptr VkAllocationCallbacks , pMemory: ptr VkDeviceMemory ): VkResult {.stdcall.}](vkGetProc("vkAllocateMemory"))
vkFreeMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkFreeMemory"))
vkMapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory, offset: VkDeviceSize, size: VkDeviceSize, flags: VkMemoryMapFlags, ppData: ptr pointer ): VkResult {.stdcall.}](vkGetProc("vkMapMemory"))
vkUnmapMemory = cast[proc(device: VkDevice, memory: VkDeviceMemory): void {.stdcall.}](vkGetProc("vkUnmapMemory"))
vkFlushMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}](vkGetProc("vkFlushMappedMemoryRanges"))
vkInvalidateMappedMemoryRanges = cast[proc(device: VkDevice, memoryRangeCount: uint32, pMemoryRanges: ptr VkMappedMemoryRange ): VkResult {.stdcall.}](vkGetProc("vkInvalidateMappedMemoryRanges"))
vkGetDeviceMemoryCommitment = cast[proc(device: VkDevice, memory: VkDeviceMemory, pCommittedMemoryInBytes: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkGetDeviceMemoryCommitment"))
vkBindBufferMemory = cast[proc(device: VkDevice, buffer: VkBuffer, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetProc("vkBindBufferMemory"))
vkBindImageMemory = cast[proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}](vkGetProc("vkBindImageMemory"))
vkGetBufferMemoryRequirements = cast[proc(device: VkDevice, buffer: VkBuffer, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetBufferMemoryRequirements"))
vkGetImageMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetImageMemoryRequirements"))
vkGetImageSparseMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements ): void {.stdcall.}](vkGetProc("vkGetImageSparseMemoryRequirements"))
vkGetPhysicalDeviceSparseImageFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, samples: VkSampleCountFlagBits, usage: VkImageUsageFlags, tiling: VkImageTiling, pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSparseImageFormatProperties"))
vkQueueBindSparse = cast[proc(queue: VkQueue, bindInfoCount: uint32, pBindInfo: ptr VkBindSparseInfo , fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkQueueBindSparse"))
vkCreateFence = cast[proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkCreateFence"))
vkDestroyFence = cast[proc(device: VkDevice, fence: VkFence, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyFence"))
vkResetFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkResetFences"))
vkGetFenceStatus = cast[proc(device: VkDevice, fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkGetFenceStatus"))
vkWaitForFences = cast[proc(device: VkDevice, fenceCount: uint32, pFences: ptr VkFence , waitAll: VkBool32, timeout: uint64): VkResult {.stdcall.}](vkGetProc("vkWaitForFences"))
vkDestroySemaphore = cast[proc(device: VkDevice, semaphore: VkSemaphore, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySemaphore"))
vkCreateEvent = cast[proc(device: VkDevice, pCreateInfo: ptr VkEventCreateInfo , pAllocator: ptr VkAllocationCallbacks , pEvent: ptr VkEvent ): VkResult {.stdcall.}](vkGetProc("vkCreateEvent"))
vkDestroyEvent = cast[proc(device: VkDevice, event: VkEvent, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyEvent"))
vkGetEventStatus = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkGetEventStatus"))
vkSetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkSetEvent"))
vkResetEvent = cast[proc(device: VkDevice, event: VkEvent): VkResult {.stdcall.}](vkGetProc("vkResetEvent"))
vkCreateQueryPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkQueryPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pQueryPool: ptr VkQueryPool ): VkResult {.stdcall.}](vkGetProc("vkCreateQueryPool"))
vkDestroyQueryPool = cast[proc(device: VkDevice, queryPool: VkQueryPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyQueryPool"))
vkGetQueryPoolResults = cast[proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dataSize: uint, pData: pointer , stride: VkDeviceSize, flags: VkQueryResultFlags): VkResult {.stdcall.}](vkGetProc("vkGetQueryPoolResults"))
vkCreateBuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pBuffer: ptr VkBuffer ): VkResult {.stdcall.}](vkGetProc("vkCreateBuffer"))
vkDestroyBuffer = cast[proc(device: VkDevice, buffer: VkBuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyBuffer"))
vkCreateBufferView = cast[proc(device: VkDevice, pCreateInfo: ptr VkBufferViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkBufferView ): VkResult {.stdcall.}](vkGetProc("vkCreateBufferView"))
vkDestroyBufferView = cast[proc(device: VkDevice, bufferView: VkBufferView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyBufferView"))
vkCreateImage = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo , pAllocator: ptr VkAllocationCallbacks , pImage: ptr VkImage ): VkResult {.stdcall.}](vkGetProc("vkCreateImage"))
vkDestroyImage = cast[proc(device: VkDevice, image: VkImage, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyImage"))
vkGetImageSubresourceLayout = cast[proc(device: VkDevice, image: VkImage, pSubresource: ptr VkImageSubresource , pLayout: ptr VkSubresourceLayout ): void {.stdcall.}](vkGetProc("vkGetImageSubresourceLayout"))
vkCreateImageView = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkImageView ): VkResult {.stdcall.}](vkGetProc("vkCreateImageView"))
vkDestroyImageView = cast[proc(device: VkDevice, imageView: VkImageView, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyImageView"))
vkCreateShaderModule = cast[proc(device: VkDevice, pCreateInfo: ptr VkShaderModuleCreateInfo , pAllocator: ptr VkAllocationCallbacks , pShaderModule: ptr VkShaderModule ): VkResult {.stdcall.}](vkGetProc("vkCreateShaderModule"))
vkDestroyShaderModule = cast[proc(device: VkDevice, shaderModule: VkShaderModule, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyShaderModule"))
vkCreatePipelineCache = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineCacheCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineCache: ptr VkPipelineCache ): VkResult {.stdcall.}](vkGetProc("vkCreatePipelineCache"))
vkDestroyPipelineCache = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipelineCache"))
vkGetPipelineCacheData = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, pDataSize: ptr uint , pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetPipelineCacheData"))
vkMergePipelineCaches = cast[proc(device: VkDevice, dstCache: VkPipelineCache, srcCacheCount: uint32, pSrcCaches: ptr VkPipelineCache ): VkResult {.stdcall.}](vkGetProc("vkMergePipelineCaches"))
vkCreateGraphicsPipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkGraphicsPipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateGraphicsPipelines"))
vkCreateComputePipelines = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkComputePipelineCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateComputePipelines"))
vkDestroyPipeline = cast[proc(device: VkDevice, pipeline: VkPipeline, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipeline"))
vkCreatePipelineLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkPipelineLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pPipelineLayout: ptr VkPipelineLayout ): VkResult {.stdcall.}](vkGetProc("vkCreatePipelineLayout"))
vkDestroyPipelineLayout = cast[proc(device: VkDevice, pipelineLayout: VkPipelineLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPipelineLayout"))
vkCreateSampler = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSampler: ptr VkSampler ): VkResult {.stdcall.}](vkGetProc("vkCreateSampler"))
vkDestroySampler = cast[proc(device: VkDevice, sampler: VkSampler, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySampler"))
vkCreateDescriptorSetLayout = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSetLayout: ptr VkDescriptorSetLayout ): VkResult {.stdcall.}](vkGetProc("vkCreateDescriptorSetLayout"))
vkDestroyDescriptorSetLayout = cast[proc(device: VkDevice, descriptorSetLayout: VkDescriptorSetLayout, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDescriptorSetLayout"))
vkCreateDescriptorPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorPool: ptr VkDescriptorPool ): VkResult {.stdcall.}](vkGetProc("vkCreateDescriptorPool"))
vkDestroyDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDescriptorPool"))
vkResetDescriptorPool = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, flags: VkDescriptorPoolResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetDescriptorPool"))
vkAllocateDescriptorSets = cast[proc(device: VkDevice, pAllocateInfo: ptr VkDescriptorSetAllocateInfo , pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}](vkGetProc("vkAllocateDescriptorSets"))
vkFreeDescriptorSets = cast[proc(device: VkDevice, descriptorPool: VkDescriptorPool, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet ): VkResult {.stdcall.}](vkGetProc("vkFreeDescriptorSets"))
vkUpdateDescriptorSets = cast[proc(device: VkDevice, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet , descriptorCopyCount: uint32, pDescriptorCopies: ptr VkCopyDescriptorSet ): void {.stdcall.}](vkGetProc("vkUpdateDescriptorSets"))
vkCreateFramebuffer = cast[proc(device: VkDevice, pCreateInfo: ptr VkFramebufferCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFramebuffer: ptr VkFramebuffer ): VkResult {.stdcall.}](vkGetProc("vkCreateFramebuffer"))
vkDestroyFramebuffer = cast[proc(device: VkDevice, framebuffer: VkFramebuffer, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyFramebuffer"))
vkCreateRenderPass = cast[proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo , pAllocator: ptr VkAllocationCallbacks , pRenderPass: ptr VkRenderPass ): VkResult {.stdcall.}](vkGetProc("vkCreateRenderPass"))
vkDestroyRenderPass = cast[proc(device: VkDevice, render_pass: VkRenderPass, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyRenderPass"))
vkGetRenderAreaGranularity = cast[proc(device: VkDevice, render_pass: VkRenderPass, pGranularity: ptr VkExtent2D ): void {.stdcall.}](vkGetProc("vkGetRenderAreaGranularity"))
vkCreateCommandPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pCommandPool: ptr VkCommandPool ): VkResult {.stdcall.}](vkGetProc("vkCreateCommandPool"))
vkDestroyCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyCommandPool"))
vkResetCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetCommandPool"))
vkAllocateCommandBuffers = cast[proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo , pCommandBuffers: ptr VkCommandBuffer ): VkResult {.stdcall.}](vkGetProc("vkAllocateCommandBuffers"))
vkFreeCommandBuffers = cast[proc(device: VkDevice, commandPool: VkCommandPool, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}](vkGetProc("vkFreeCommandBuffers"))
vkBeginCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, pBeginInfo: ptr VkCommandBufferBeginInfo ): VkResult {.stdcall.}](vkGetProc("vkBeginCommandBuffer"))
vkEndCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer): VkResult {.stdcall.}](vkGetProc("vkEndCommandBuffer"))
vkResetCommandBuffer = cast[proc(commandBuffer: VkCommandBuffer, flags: VkCommandBufferResetFlags): VkResult {.stdcall.}](vkGetProc("vkResetCommandBuffer"))
vkCmdBindPipeline = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline): void {.stdcall.}](vkGetProc("vkCmdBindPipeline"))
vkCmdSetViewport = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewports: ptr VkViewport ): void {.stdcall.}](vkGetProc("vkCmdSetViewport"))
vkCmdSetScissor = cast[proc(commandBuffer: VkCommandBuffer, firstScissor: uint32, scissorCount: uint32, pScissors: ptr VkRect2D ): void {.stdcall.}](vkGetProc("vkCmdSetScissor"))
vkCmdSetLineWidth = cast[proc(commandBuffer: VkCommandBuffer, lineWidth: float32): void {.stdcall.}](vkGetProc("vkCmdSetLineWidth"))
vkCmdSetDepthBias = cast[proc(commandBuffer: VkCommandBuffer, depthBiasConstantFactor: float32, depthBiasClamp: float32, depthBiasSlopeFactor: float32): void {.stdcall.}](vkGetProc("vkCmdSetDepthBias"))
vkCmdSetBlendConstants = cast[proc(commandBuffer: VkCommandBuffer, blendConstants: array[4, float32]): void {.stdcall.}](vkGetProc("vkCmdSetBlendConstants"))
vkCmdSetDepthBounds = cast[proc(commandBuffer: VkCommandBuffer, minDepthBounds: float32, maxDepthBounds: float32): void {.stdcall.}](vkGetProc("vkCmdSetDepthBounds"))
vkCmdSetStencilCompareMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, compareMask: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilCompareMask"))
vkCmdSetStencilWriteMask = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, writeMask: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilWriteMask"))
vkCmdSetStencilReference = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, reference: uint32): void {.stdcall.}](vkGetProc("vkCmdSetStencilReference"))
vkCmdBindDescriptorSets = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, firstSet: uint32, descriptorSetCount: uint32, pDescriptorSets: ptr VkDescriptorSet , dynamicOffsetCount: uint32, pDynamicOffsets: ptr uint32 ): void {.stdcall.}](vkGetProc("vkCmdBindDescriptorSets"))
vkCmdBindIndexBuffer = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, indexType: VkIndexType): void {.stdcall.}](vkGetProc("vkCmdBindIndexBuffer"))
vkCmdBindVertexBuffers = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdBindVertexBuffers"))
vkCmdDraw = cast[proc(commandBuffer: VkCommandBuffer, vertexCount: uint32, instanceCount: uint32, firstVertex: uint32, firstInstance: uint32): void {.stdcall.}](vkGetProc("vkCmdDraw"))
vkCmdDrawIndexed = cast[proc(commandBuffer: VkCommandBuffer, indexCount: uint32, instanceCount: uint32, firstIndex: uint32, vertexOffset: int32, firstInstance: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndexed"))
vkCmdDrawIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndirect"))
vkCmdDrawIndexedIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndexedIndirect"))
vkCmdDispatch = cast[proc(commandBuffer: VkCommandBuffer, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetProc("vkCmdDispatch"))
vkCmdDispatchIndirect = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}](vkGetProc("vkCmdDispatchIndirect"))
vkCmdCopyBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyBuffer"))
vkCmdCopyImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyImage"))
vkCmdBlitImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageBlit , filter: VkFilter): void {.stdcall.}](vkGetProc("vkCmdBlitImage"))
vkCmdCopyBufferToImage = cast[proc(commandBuffer: VkCommandBuffer, srcBuffer: VkBuffer, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyBufferToImage"))
vkCmdCopyImageToBuffer = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstBuffer: VkBuffer, regionCount: uint32, pRegions: ptr VkBufferImageCopy ): void {.stdcall.}](vkGetProc("vkCmdCopyImageToBuffer"))
vkCmdUpdateBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, pData: pointer ): void {.stdcall.}](vkGetProc("vkCmdUpdateBuffer"))
vkCmdFillBuffer = cast[proc(commandBuffer: VkCommandBuffer, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, size: VkDeviceSize, data: uint32): void {.stdcall.}](vkGetProc("vkCmdFillBuffer"))
vkCmdClearColorImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pColor: ptr VkClearColorValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}](vkGetProc("vkCmdClearColorImage"))
vkCmdClearDepthStencilImage = cast[proc(commandBuffer: VkCommandBuffer, image: VkImage, imageLayout: VkImageLayout, pDepthStencil: ptr VkClearDepthStencilValue , rangeCount: uint32, pRanges: ptr VkImageSubresourceRange ): void {.stdcall.}](vkGetProc("vkCmdClearDepthStencilImage"))
vkCmdClearAttachments = cast[proc(commandBuffer: VkCommandBuffer, attachmentCount: uint32, pAttachments: ptr VkClearAttachment , rectCount: uint32, pRects: ptr VkClearRect ): void {.stdcall.}](vkGetProc("vkCmdClearAttachments"))
vkCmdResolveImage = cast[proc(commandBuffer: VkCommandBuffer, srcImage: VkImage, srcImageLayout: VkImageLayout, dstImage: VkImage, dstImageLayout: VkImageLayout, regionCount: uint32, pRegions: ptr VkImageResolve ): void {.stdcall.}](vkGetProc("vkCmdResolveImage"))
vkCmdSetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetProc("vkCmdSetEvent"))
vkCmdResetEvent = cast[proc(commandBuffer: VkCommandBuffer, event: VkEvent, stageMask: VkPipelineStageFlags): void {.stdcall.}](vkGetProc("vkCmdResetEvent"))
vkCmdWaitEvents = cast[proc(commandBuffer: VkCommandBuffer, eventCount: uint32, pEvents: ptr VkEvent , srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}](vkGetProc("vkCmdWaitEvents"))
vkCmdPipelineBarrier = cast[proc(commandBuffer: VkCommandBuffer, srcStageMask: VkPipelineStageFlags, dstStageMask: VkPipelineStageFlags, dependencyFlags: VkDependencyFlags, memoryBarrierCount: uint32, pMemoryBarriers: ptr VkMemoryBarrier , bufferMemoryBarrierCount: uint32, pBufferMemoryBarriers: ptr VkBufferMemoryBarrier , imageMemoryBarrierCount: uint32, pImageMemoryBarriers: ptr VkImageMemoryBarrier ): void {.stdcall.}](vkGetProc("vkCmdPipelineBarrier"))
vkCmdBeginQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags): void {.stdcall.}](vkGetProc("vkCmdBeginQuery"))
vkCmdEndQuery = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetProc("vkCmdEndQuery"))
vkCmdResetQueryPool = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}](vkGetProc("vkCmdResetQueryPool"))
vkCmdWriteTimestamp = cast[proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, queryPool: VkQueryPool, query: uint32): void {.stdcall.}](vkGetProc("vkCmdWriteTimestamp"))
vkCmdCopyQueryPoolResults = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, stride: VkDeviceSize, flags: VkQueryResultFlags): void {.stdcall.}](vkGetProc("vkCmdCopyQueryPoolResults"))
vkCmdPushConstants = cast[proc(commandBuffer: VkCommandBuffer, layout: VkPipelineLayout, stageFlags: VkShaderStageFlags, offset: uint32, size: uint32, pValues: pointer ): void {.stdcall.}](vkGetProc("vkCmdPushConstants"))
vkCmdBeginRenderPass = cast[proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo , contents: VkSubpassContents): void {.stdcall.}](vkGetProc("vkCmdBeginRenderPass"))
vkCmdNextSubpass = cast[proc(commandBuffer: VkCommandBuffer, contents: VkSubpassContents): void {.stdcall.}](vkGetProc("vkCmdNextSubpass"))
vkCmdEndRenderPass = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetProc("vkCmdEndRenderPass"))
vkCmdExecuteCommands = cast[proc(commandBuffer: VkCommandBuffer, commandBufferCount: uint32, pCommandBuffers: ptr VkCommandBuffer ): void {.stdcall.}](vkGetProc("vkCmdExecuteCommands")) ]#
proc load_vulkan_functions_for_gpu*(instance: VkInstance
) =
vkEnumeratePhysicalDevices = cast[proc(instance: VkInstance, pPhysicalDeviceCount: ptr uint32 , pPhysicalDevices: ptr VkPhysicalDevice ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkEnumeratePhysicalDevices"
)
)
vkGetPhysicalDeviceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceProperties"
)
)
vkGetPhysicalDeviceFeatures = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceFeatures"
)
)
vkGetPhysicalDeviceMemoryProperties = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceMemoryProperties"
)
)
vkGetPhysicalDeviceQueueFamilyProperties = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceQueueFamilyProperties"
)
)
vkGetPhysicalDeviceFormatProperties = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceFormatProperties"
)
)
# Vulkan 1_1
proc vkLoad1_1*() =
when defined linux:
vkEnumerateInstanceVersion = cast[proc(pApiVersion: ptr uint32 ): VkResult {.stdcall.}](vkGetProc("vkEnumerateInstanceVersion"))
vkBindBufferMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo ): VkResult {.stdcall.}](vkGetProc("vkBindBufferMemory2"))
vkBindImageMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo ): VkResult {.stdcall.}](vkGetProc("vkBindImageMemory2"))
vkGetDeviceGroupPeerMemoryFeatures = cast[proc(device: VkDevice, heapIndex: uint32, localDeviceIndex: uint32, remoteDeviceIndex: uint32, pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags ): void {.stdcall.}](vkGetProc("vkGetDeviceGroupPeerMemoryFeatures"))
vkCmdSetDeviceMask = cast[proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}](vkGetProc("vkCmdSetDeviceMask"))
vkCmdDispatchBase = cast[proc(commandBuffer: VkCommandBuffer, baseGroupX: uint32, baseGroupY: uint32, baseGroupZ: uint32, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetProc("vkCmdDispatchBase"))
vkEnumeratePhysicalDeviceGroups = cast[proc(instance: VkInstance, pPhysicalDeviceGroupCount: ptr uint32 , pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties ): VkResult {.stdcall.}](vkGetProc("vkEnumeratePhysicalDeviceGroups"))
vkGetImageMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProc("vkGetImageMemoryRequirements2"))
vkGetBufferMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkBufferMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProc("vkGetBufferMemoryRequirements2"))
vkGetImageSparseMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageSparseMemoryRequirementsInfo2 , pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2 ): void {.stdcall.}](vkGetProc("vkGetImageSparseMemoryRequirements2"))
vkGetPhysicalDeviceFeatures2 = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFeatures2"))
vkGetPhysicalDeviceProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceProperties2"))
vkGetPhysicalDeviceFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceFormatProperties2"))
vkGetPhysicalDeviceImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2 , pImageFormatProperties: ptr VkImageFormatProperties2 ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceImageFormatProperties2"))
vkGetPhysicalDeviceQueueFamilyProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceQueueFamilyProperties2"))
vkGetPhysicalDeviceMemoryProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceMemoryProperties2"))
vkGetPhysicalDeviceSparseImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2 , pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties2 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSparseImageFormatProperties2"))
vkTrimCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags): void {.stdcall.}](vkGetProc("vkTrimCommandPool"))
vkGetDeviceQueue2 = cast[proc(device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2 , pQueue: ptr VkQueue ): void {.stdcall.}](vkGetProc("vkGetDeviceQueue2"))
vkCreateSamplerYcbcrConversion = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo , pAllocator: ptr VkAllocationCallbacks , pYcbcrConversion: ptr VkSamplerYcbcrConversion ): VkResult {.stdcall.}](vkGetProc("vkCreateSamplerYcbcrConversion"))
vkDestroySamplerYcbcrConversion = cast[proc(device: VkDevice, ycbcrConversion: VkSamplerYcbcrConversion, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySamplerYcbcrConversion"))
vkCreateDescriptorUpdateTemplate = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate ): VkResult {.stdcall.}](vkGetProc("vkCreateDescriptorUpdateTemplate"))
vkDestroyDescriptorUpdateTemplate = cast[proc(device: VkDevice, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDescriptorUpdateTemplate"))
vkUpdateDescriptorSetWithTemplate = cast[proc(device: VkDevice, descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: pointer ): void {.stdcall.}](vkGetProc("vkUpdateDescriptorSetWithTemplate"))
vkGetPhysicalDeviceExternalBufferProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo , pExternalBufferProperties: ptr VkExternalBufferProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceExternalBufferProperties"))
vkGetPhysicalDeviceExternalFenceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo , pExternalFenceProperties: ptr VkExternalFenceProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceExternalFenceProperties"))
vkGetPhysicalDeviceExternalSemaphoreProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo , pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceExternalSemaphoreProperties"))
vkGetDescriptorSetLayoutSupport = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pSupport: ptr VkDescriptorSetLayoutSupport ): void {.stdcall.}](vkGetProc("vkGetDescriptorSetLayoutSupport"))
when defined windows:
vkEnumerateInstanceVersion = cast[proc(pApiVersion: ptr uint32 ): VkResult {.stdcall.}](vkGetProcAddress("vkEnumerateInstanceVersion"))
vkBindBufferMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindBufferMemoryInfo ): VkResult {.stdcall.}](vkGetProcAddress("vkBindBufferMemory2"))
vkBindImageMemory2 = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindImageMemoryInfo ): VkResult {.stdcall.}](vkGetProcAddress("vkBindImageMemory2"))
vkGetDeviceGroupPeerMemoryFeatures = cast[proc(device: VkDevice, heapIndex: uint32, localDeviceIndex: uint32, remoteDeviceIndex: uint32, pPeerMemoryFeatures: ptr VkPeerMemoryFeatureFlags ): void {.stdcall.}](vkGetProcAddress("vkGetDeviceGroupPeerMemoryFeatures"))
vkCmdSetDeviceMask = cast[proc(commandBuffer: VkCommandBuffer, deviceMask: uint32): void {.stdcall.}](vkGetProcAddress("vkCmdSetDeviceMask"))
vkCmdDispatchBase = cast[proc(commandBuffer: VkCommandBuffer, baseGroupX: uint32, baseGroupY: uint32, baseGroupZ: uint32, groupCountX: uint32, groupCountY: uint32, groupCountZ: uint32): void {.stdcall.}](vkGetProcAddress("vkCmdDispatchBase"))
vkEnumeratePhysicalDeviceGroups = cast[proc(instance: VkInstance, pPhysicalDeviceGroupCount: ptr uint32 , pPhysicalDeviceGroupProperties: ptr VkPhysicalDeviceGroupProperties ): VkResult {.stdcall.}](vkGetProcAddress("vkEnumeratePhysicalDeviceGroups"))
vkGetImageMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProcAddress("vkGetImageMemoryRequirements2"))
vkGetBufferMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkBufferMemoryRequirementsInfo2 , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProcAddress("vkGetBufferMemoryRequirements2"))
vkGetImageSparseMemoryRequirements2 = cast[proc(device: VkDevice, pInfo: ptr VkImageSparseMemoryRequirementsInfo2 , pSparseMemoryRequirementCount: ptr uint32 , pSparseMemoryRequirements: ptr VkSparseImageMemoryRequirements2 ): void {.stdcall.}](vkGetProcAddress("vkGetImageSparseMemoryRequirements2"))
vkGetPhysicalDeviceFeatures2 = cast[proc(physicalDevice: VkPhysicalDevice, pFeatures: ptr VkPhysicalDeviceFeatures2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceFeatures2"))
vkGetPhysicalDeviceProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pProperties: ptr VkPhysicalDeviceProperties2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceProperties2"))
vkGetPhysicalDeviceFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, pFormatProperties: ptr VkFormatProperties2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceFormatProperties2"))
vkGetPhysicalDeviceImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pImageFormatInfo: ptr VkPhysicalDeviceImageFormatInfo2 , pImageFormatProperties: ptr VkImageFormatProperties2 ): VkResult {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceImageFormatProperties2"))
vkGetPhysicalDeviceQueueFamilyProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceQueueFamilyProperties2"))
vkGetPhysicalDeviceMemoryProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pMemoryProperties: ptr VkPhysicalDeviceMemoryProperties2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceMemoryProperties2"))
vkGetPhysicalDeviceSparseImageFormatProperties2 = cast[proc(physicalDevice: VkPhysicalDevice, pFormatInfo: ptr VkPhysicalDeviceSparseImageFormatInfo2 , pPropertyCount: ptr uint32 , pProperties: ptr VkSparseImageFormatProperties2 ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceSparseImageFormatProperties2"))
vkTrimCommandPool = cast[proc(device: VkDevice, commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags): void {.stdcall.}](vkGetProcAddress("vkTrimCommandPool"))
vkGetDeviceQueue2 = cast[proc(device: VkDevice, pQueueInfo: ptr VkDeviceQueueInfo2 , pQueue: ptr VkQueue ): void {.stdcall.}](vkGetProcAddress("vkGetDeviceQueue2"))
vkCreateSamplerYcbcrConversion = cast[proc(device: VkDevice, pCreateInfo: ptr VkSamplerYcbcrConversionCreateInfo , pAllocator: ptr VkAllocationCallbacks , pYcbcrConversion: ptr VkSamplerYcbcrConversion ): VkResult {.stdcall.}](vkGetProcAddress("vkCreateSamplerYcbcrConversion"))
vkDestroySamplerYcbcrConversion = cast[proc(device: VkDevice, ycbcrConversion: VkSamplerYcbcrConversion, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProcAddress("vkDestroySamplerYcbcrConversion"))
vkCreateDescriptorUpdateTemplate = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorUpdateTemplateCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDescriptorUpdateTemplate: ptr VkDescriptorUpdateTemplate ): VkResult {.stdcall.}](vkGetProcAddress("vkCreateDescriptorUpdateTemplate"))
vkDestroyDescriptorUpdateTemplate = cast[proc(device: VkDevice, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProcAddress("vkDestroyDescriptorUpdateTemplate"))
vkUpdateDescriptorSetWithTemplate = cast[proc(device: VkDevice, descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: pointer ): void {.stdcall.}](vkGetProcAddress("vkUpdateDescriptorSetWithTemplate"))
vkGetPhysicalDeviceExternalBufferProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalBufferInfo: ptr VkPhysicalDeviceExternalBufferInfo , pExternalBufferProperties: ptr VkExternalBufferProperties ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceExternalBufferProperties"))
vkGetPhysicalDeviceExternalFenceProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalFenceInfo: ptr VkPhysicalDeviceExternalFenceInfo , pExternalFenceProperties: ptr VkExternalFenceProperties ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceExternalFenceProperties"))
vkGetPhysicalDeviceExternalSemaphoreProperties = cast[proc(physicalDevice: VkPhysicalDevice, pExternalSemaphoreInfo: ptr VkPhysicalDeviceExternalSemaphoreInfo , pExternalSemaphoreProperties: ptr VkExternalSemaphoreProperties ): void {.stdcall.}](vkGetProcAddress("vkGetPhysicalDeviceExternalSemaphoreProperties"))
vkGetDescriptorSetLayoutSupport = cast[proc(device: VkDevice, pCreateInfo: ptr VkDescriptorSetLayoutCreateInfo , pSupport: ptr VkDescriptorSetLayoutSupport ): void {.stdcall.}](vkGetProcAddress("vkGetDescriptorSetLayoutSupport"))
# Vulkan 1_2
proc vkLoad1_2*() =
vkCmdDrawIndirectCount = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndirectCount"))
vkCmdDrawIndexedIndirectCount = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndexedIndirectCount"))
vkCreateRenderPass2 = cast[proc(device: VkDevice, pCreateInfo: ptr VkRenderPassCreateInfo2 , pAllocator: ptr VkAllocationCallbacks , pRenderPass: ptr VkRenderPass ): VkResult {.stdcall.}](vkGetProc("vkCreateRenderPass2"))
vkCmdBeginRenderPass2 = cast[proc(commandBuffer: VkCommandBuffer, pRenderPassBegin: ptr VkRenderPassBeginInfo , pSubpassBeginInfo: ptr VkSubpassBeginInfo ): void {.stdcall.}](vkGetProc("vkCmdBeginRenderPass2"))
vkCmdNextSubpass2 = cast[proc(commandBuffer: VkCommandBuffer, pSubpassBeginInfo: ptr VkSubpassBeginInfo , pSubpassEndInfo: ptr VkSubpassEndInfo ): void {.stdcall.}](vkGetProc("vkCmdNextSubpass2"))
vkCmdEndRenderPass2 = cast[proc(commandBuffer: VkCommandBuffer, pSubpassEndInfo: ptr VkSubpassEndInfo ): void {.stdcall.}](vkGetProc("vkCmdEndRenderPass2"))
vkResetQueryPool = cast[proc(device: VkDevice, queryPool: VkQueryPool, firstQuery: uint32, queryCount: uint32): void {.stdcall.}](vkGetProc("vkResetQueryPool"))
vkGetSemaphoreCounterValue = cast[proc(device: VkDevice, semaphore: VkSemaphore, pValue: ptr uint64 ): VkResult {.stdcall.}](vkGetProc("vkGetSemaphoreCounterValue"))
vkWaitSemaphores = cast[proc(device: VkDevice, pWaitInfo: ptr VkSemaphoreWaitInfo , timeout: uint64): VkResult {.stdcall.}](vkGetProc("vkWaitSemaphores"))
vkSignalSemaphore = cast[proc(device: VkDevice, pSignalInfo: ptr VkSemaphoreSignalInfo ): VkResult {.stdcall.}](vkGetProc("vkSignalSemaphore"))
vkGetBufferDeviceAddress = cast[proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo ): VkDeviceAddress {.stdcall.}](vkGetProc("vkGetBufferDeviceAddress"))
vkGetBufferOpaqueCaptureAddress = cast[proc(device: VkDevice, pInfo: ptr VkBufferDeviceAddressInfo ): uint64 {.stdcall.}](vkGetProc("vkGetBufferOpaqueCaptureAddress"))
vkGetDeviceMemoryOpaqueCaptureAddress = cast[proc(device: VkDevice, pInfo: ptr VkDeviceMemoryOpaqueCaptureAddressInfo ): uint64 {.stdcall.}](vkGetProc("vkGetDeviceMemoryOpaqueCaptureAddress"))
# Load VK_KHR_surface
proc loadVK_KHR_surface*( instance: VkInstance
) =
when defined linux:
vkDestroySurfaceKHR = cast[proc(instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySurfaceKHR"))
vkGetPhysicalDeviceSurfaceSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32 ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceSupportKHR"))
vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
vkGetPhysicalDeviceSurfaceFormatsKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceFormatCount: ptr uint32 , pSurfaceFormats: ptr VkSurfaceFormatKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceFormatsKHR"))
vkGetPhysicalDeviceSurfacePresentModesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pPresentModeCount: ptr uint32 , pPresentModes: ptr VkPresentModeKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfacePresentModesKHR"))
when defined windows:
vkDestroySurfaceKHR = cast[proc(instance: VkInstance, surface: VkSurfaceKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkDestroySurfaceKHR"
)
)
vkGetPhysicalDeviceSurfaceSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32 ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceSurfaceSupportKHR"
)
)
vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilitiesKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
)
)
vkGetPhysicalDeviceSurfacePresentModesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pPresentModeCount: ptr uint32 , pPresentModes: ptr VkPresentModeKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceSurfacePresentModesKHR"
)
)
vkCreateImage = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageCreateInfo , pAllocator: ptr VkAllocationCallbacks , pImage: ptr VkImage ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkCreateImage"
)
)
vkCreateImageView = cast[proc(device: VkDevice, pCreateInfo: ptr VkImageViewCreateInfo , pAllocator: ptr VkAllocationCallbacks , pView: ptr VkImageView ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkCreateImageView"
)
)
vkGetImageMemoryRequirements = cast[proc(device: VkDevice, image: VkImage, pMemoryRequirements: ptr VkMemoryRequirements ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetImageMemoryRequirements"
)
)
vkAllocateMemory = cast[proc(device: VkDevice, pAllocateInfo: ptr VkMemoryAllocateInfo , pAllocator: ptr VkAllocationCallbacks , pMemory: ptr VkDeviceMemory ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkAllocateMemory"
)
)
vkBindImageMemory = cast[proc(device: VkDevice, image: VkImage, memory: VkDeviceMemory, memoryOffset: VkDeviceSize): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkBindImageMemory"
)
)
vkEnumerateDeviceExtensionProperties = cast[proc(physicalDevice: VkPhysicalDevice, pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkEnumerateDeviceExtensionProperties"
)
)
vkCreateDevice = cast[proc(physicalDevice: VkPhysicalDevice, pCreateInfo: ptr VkDeviceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pDevice: ptr VkDevice ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkCreateDevice"
)
)
vkCreateCommandPool = cast[proc(device: VkDevice, pCreateInfo: ptr VkCommandPoolCreateInfo , pAllocator: ptr VkAllocationCallbacks , pCommandPool: ptr VkCommandPool ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkCreateCommandPool"
)
)
vkCreateSemaphore = cast[proc(device: VkDevice, pCreateInfo: ptr VkSemaphoreCreateInfo , pAllocator: ptr VkAllocationCallbacks , pSemaphore: ptr VkSemaphore ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkCreateSemaphore"
)
)
vkAllocateCommandBuffers = cast[proc(device: VkDevice, pAllocateInfo: ptr VkCommandBufferAllocateInfo , pCommandBuffers: ptr VkCommandBuffer ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkAllocateCommandBuffers"
)
)
vkCreateFence = cast[proc(device: VkDevice, pCreateInfo: ptr VkFenceCreateInfo , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkCreateFence"
)
)
# Load VK_KHR_swapchain
proc loadVK_KHR_swapchain*( instance: VkInstance
) =
when defined linux:
vkCreateSwapchainKHR = cast[proc(device: VkDevice, pCreateInfo: ptr VkSwapchainCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSwapchain: ptr VkSwapchainKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateSwapchainKHR"))
vkDestroySwapchainKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroySwapchainKHR"))
vkGetSwapchainImagesKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pSwapchainImageCount: ptr uint32 , pSwapchainImages: ptr VkImage ): VkResult {.stdcall.}](vkGetProc("vkGetSwapchainImagesKHR"))
vkAcquireNextImageKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, timeout: uint64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: ptr uint32 ): VkResult {.stdcall.}](vkGetProc("vkAcquireNextImageKHR"))
vkQueuePresentKHR = cast[proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkQueuePresentKHR"))
vkGetDeviceGroupPresentCapabilitiesKHR = cast[proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupPresentCapabilitiesKHR"))
vkGetDeviceGroupSurfacePresentModesKHR = cast[proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupSurfacePresentModesKHR"))
vkGetPhysicalDevicePresentRectanglesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32 , pRects: ptr VkRect2D ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDevicePresentRectanglesKHR"))
vkAcquireNextImage2KHR = cast[proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR , pImageIndex: ptr uint32 ): VkResult {.stdcall.}](vkGetProc("vkAcquireNextImage2KHR"))
when defined windows:
vkCreateSwapchainKHR = cast[proc(device: VkDevice, pCreateInfo: ptr VkSwapchainCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSwapchain: ptr VkSwapchainKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkCreateSwapchainKHR"
)
)
vkDestroySwapchainKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkDestroySwapchainKHR"
)
)
vkGetSwapchainImagesKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pSwapchainImageCount: ptr uint32 , pSwapchainImages: ptr VkImage ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetSwapchainImagesKHR"
)
)
vkAcquireNextImageKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, timeout: uint64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: ptr uint32 ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkAcquireNextImageKHR"
)
)
vkQueuePresentKHR = cast[proc(queue: VkQueue, pPresentInfo: ptr VkPresentInfoKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkQueuePresentKHR"
)
)
vkGetDeviceGroupPresentCapabilitiesKHR = cast[proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetDeviceGroupPresentCapabilitiesKHR"
)
)
vkGetDeviceGroupSurfacePresentModesKHR = cast[proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetDeviceGroupSurfacePresentModesKHR"
)
)
vkGetPhysicalDevicePresentRectanglesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32 , pRects: ptr VkRect2D ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDevicePresentRectanglesKHR"
)
)
vkAcquireNextImage2KHR = cast[proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR , pImageIndex: ptr uint32 ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkAcquireNextImage2KHR"
)
)
# Load VK_KHR_display
proc loadVK_KHR_display*() =
vkGetPhysicalDeviceDisplayPropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceDisplayPropertiesKHR"))
vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPlanePropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
vkGetDisplayPlaneSupportedDisplaysKHR = cast[proc(physicalDevice: VkPhysicalDevice, planeIndex: uint32, pDisplayCount: ptr uint32 , pDisplays: ptr VkDisplayKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDisplayPlaneSupportedDisplaysKHR"))
vkGetDisplayModePropertiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayModePropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDisplayModePropertiesKHR"))
vkCreateDisplayModeKHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: ptr VkDisplayModeCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pMode: ptr VkDisplayModeKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateDisplayModeKHR"))
vkGetDisplayPlaneCapabilitiesKHR = cast[proc(physicalDevice: VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: uint32, pCapabilities: ptr VkDisplayPlaneCapabilitiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDisplayPlaneCapabilitiesKHR"))
vkCreateDisplayPlaneSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDisplaySurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateDisplayPlaneSurfaceKHR"))
# Load VK_KHR_display_swapchain
proc loadVK_KHR_display_swapchain*() =
vkCreateSharedSwapchainsKHR = cast[proc(device: VkDevice, swapchainCount: uint32, pCreateInfos: ptr VkSwapchainCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSwapchains: ptr VkSwapchainKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateSharedSwapchainsKHR"))
# Load VK_KHR_xlib_surface
proc loadVK_KHR_xlib_surface*() =
vkCreateXlibSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkXlibSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateXlibSurfaceKHR"))
vkGetPhysicalDeviceXlibPresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dpy: ptr Display , visualID: VisualID): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceXlibPresentationSupportKHR"))
# Load VK_KHR_xcb_surface
proc loadVK_KHR_xcb_surface*() =
vkCreateXcbSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkXcbSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateXcbSurfaceKHR"))
vkGetPhysicalDeviceXcbPresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, connection: ptr xcb_connection_t , visual_id: xcb_visualid_t): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceXcbPresentationSupportKHR"))
# Load VK_KHR_wayland_surface
proc loadVK_KHR_wayland_surface*() =
vkCreateWaylandSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkWaylandSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateWaylandSurfaceKHR"))
vkGetPhysicalDeviceWaylandPresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, display: ptr wl_display ): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
# Load VK_KHR_android_surface
proc loadVK_KHR_android_surface*() =
vkCreateAndroidSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkAndroidSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateAndroidSurfaceKHR"))
# Load VK_KHR_win32_surface
proc loadVK_KHR_win32_surface*() =
vkCreateWin32SurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateWin32SurfaceKHR"))
vkGetPhysicalDeviceWin32PresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceWin32PresentationSupportKHR"))
# Load VK_ANDROID_native_buffer
proc loadVK_ANDROID_native_buffer*() =
vkGetSwapchainGrallocUsageANDROID = cast[proc(device: VkDevice, format: VkFormat, imageUsage: VkImageUsageFlags, grallocUsage: ptr int ): VkResult {.stdcall.}](vkGetProc("vkGetSwapchainGrallocUsageANDROID"))
vkAcquireImageANDROID = cast[proc(device: VkDevice, image: VkImage, nativeFenceFd: int, semaphore: VkSemaphore, fence: VkFence): VkResult {.stdcall.}](vkGetProc("vkAcquireImageANDROID"))
vkQueueSignalReleaseImageANDROID = cast[proc(queue: VkQueue, waitSemaphoreCount: uint32, pWaitSemaphores: ptr VkSemaphore , image: VkImage, pNativeFenceFd: ptr int ): VkResult {.stdcall.}](vkGetProc("vkQueueSignalReleaseImageANDROID"))
vkGetSwapchainGrallocUsage2ANDROID = cast[proc(device: VkDevice, format: VkFormat, imageUsage: VkImageUsageFlags, swapchainImageUsage: VkSwapchainImageUsageFlagsANDROID, grallocConsumerUsage: ptr uint64 , grallocProducerUsage: ptr uint64 ): VkResult {.stdcall.}](vkGetProc("vkGetSwapchainGrallocUsage2ANDROID"))
# Load VK_EXT_debug_report
proc loadVK_EXT_debug_report*() =
vkCreateDebugReportCallbackEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDebugReportCallbackCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pCallback: ptr VkDebugReportCallbackEXT ): VkResult {.stdcall.}](vkGetProc("vkCreateDebugReportCallbackEXT"))
vkDestroyDebugReportCallbackEXT = cast[proc(instance: VkInstance, callback: VkDebugReportCallbackEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDebugReportCallbackEXT"))
vkDebugReportMessageEXT = cast[proc(instance: VkInstance, flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, `object`: uint64, location: uint, messageCode: int32, pLayerPrefix: cstring , pMessage: cstring ): void {.stdcall.}](vkGetProc("vkDebugReportMessageEXT"))
# Load VK_EXT_debug_marker
proc loadVK_EXT_debug_marker*() =
vkDebugMarkerSetObjectTagEXT = cast[proc(device: VkDevice, pTagInfo: ptr VkDebugMarkerObjectTagInfoEXT ): VkResult {.stdcall.}](vkGetProc("vkDebugMarkerSetObjectTagEXT"))
vkDebugMarkerSetObjectNameEXT = cast[proc(device: VkDevice, pNameInfo: ptr VkDebugMarkerObjectNameInfoEXT ): VkResult {.stdcall.}](vkGetProc("vkDebugMarkerSetObjectNameEXT"))
vkCmdDebugMarkerBeginEXT = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkDebugMarkerMarkerInfoEXT ): void {.stdcall.}](vkGetProc("vkCmdDebugMarkerBeginEXT"))
vkCmdDebugMarkerEndEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetProc("vkCmdDebugMarkerEndEXT"))
vkCmdDebugMarkerInsertEXT = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkDebugMarkerMarkerInfoEXT ): void {.stdcall.}](vkGetProc("vkCmdDebugMarkerInsertEXT"))
# Load VK_EXT_transform_feedback
proc loadVK_EXT_transform_feedback*() =
vkCmdBindTransformFeedbackBuffersEXT = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize , pSizes: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdBindTransformFeedbackBuffersEXT"))
vkCmdBeginTransformFeedbackEXT = cast[proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer , pCounterBufferOffsets: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdBeginTransformFeedbackEXT"))
vkCmdEndTransformFeedbackEXT = cast[proc(commandBuffer: VkCommandBuffer, firstCounterBuffer: uint32, counterBufferCount: uint32, pCounterBuffers: ptr VkBuffer , pCounterBufferOffsets: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdEndTransformFeedbackEXT"))
vkCmdBeginQueryIndexedEXT = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, flags: VkQueryControlFlags, index: uint32): void {.stdcall.}](vkGetProc("vkCmdBeginQueryIndexedEXT"))
vkCmdEndQueryIndexedEXT = cast[proc(commandBuffer: VkCommandBuffer, queryPool: VkQueryPool, query: uint32, index: uint32): void {.stdcall.}](vkGetProc("vkCmdEndQueryIndexedEXT"))
vkCmdDrawIndirectByteCountEXT = cast[proc(commandBuffer: VkCommandBuffer, instanceCount: uint32, firstInstance: uint32, counterBuffer: VkBuffer, counterBufferOffset: VkDeviceSize, counterOffset: uint32, vertexStride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawIndirectByteCountEXT"))
# Load VK_NVX_image_view_handle
proc loadVK_NVX_image_view_handle*() =
vkGetImageViewHandleNVX = cast[proc(device: VkDevice, pInfo: ptr VkImageViewHandleInfoNVX ): uint32 {.stdcall.}](vkGetProc("vkGetImageViewHandleNVX"))
vkGetImageViewAddressNVX = cast[proc(device: VkDevice, imageView: VkImageView, pProperties: ptr VkImageViewAddressPropertiesNVX ): VkResult {.stdcall.}](vkGetProc("vkGetImageViewAddressNVX"))
# Load VK_AMD_shader_info
proc loadVK_AMD_shader_info*() =
vkGetShaderInfoAMD = cast[proc(device: VkDevice, pipeline: VkPipeline, shaderStage: VkShaderStageFlagBits, infoType: VkShaderInfoTypeAMD, pInfoSize: ptr uint , pInfo: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetShaderInfoAMD"))
# Load VK_GGP_stream_descriptor_surface
proc loadVK_GGP_stream_descriptor_surface*() =
vkCreateStreamDescriptorSurfaceGGP = cast[proc(instance: VkInstance, pCreateInfo: ptr VkStreamDescriptorSurfaceCreateInfoGGP , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateStreamDescriptorSurfaceGGP"))
# Load VK_NV_external_memory_capabilities
proc loadVK_NV_external_memory_capabilities*() =
vkGetPhysicalDeviceExternalImageFormatPropertiesNV = cast[proc(physicalDevice: VkPhysicalDevice, format: VkFormat, typee: VkImageType, tiling: VkImageTiling, usage: VkImageUsageFlags, flags: VkImageCreateFlags, externalHandleType: VkExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: ptr VkExternalImageFormatPropertiesNV ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
# Load VK_NV_external_memory_win32
proc loadVK_NV_external_memory_win32*() =
vkGetMemoryWin32HandleNV = cast[proc(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: ptr HANDLE ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryWin32HandleNV"))
# Load VK_KHR_device_group
proc loadVK_KHR_device_group*() =
vkGetDeviceGroupPresentCapabilitiesKHR = cast[proc(device: VkDevice, pDeviceGroupPresentCapabilities: ptr VkDeviceGroupPresentCapabilitiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupPresentCapabilitiesKHR"))
vkGetDeviceGroupSurfacePresentModesKHR = cast[proc(device: VkDevice, surface: VkSurfaceKHR, pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupSurfacePresentModesKHR"))
vkGetPhysicalDevicePresentRectanglesKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pRectCount: ptr uint32 , pRects: ptr VkRect2D ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDevicePresentRectanglesKHR"))
vkAcquireNextImage2KHR = cast[proc(device: VkDevice, pAcquireInfo: ptr VkAcquireNextImageInfoKHR , pImageIndex: ptr uint32 ): VkResult {.stdcall.}](vkGetProc("vkAcquireNextImage2KHR"))
# Load VK_NN_vi_surface
proc loadVK_NN_vi_surface*() =
vkCreateViSurfaceNN = cast[proc(instance: VkInstance, pCreateInfo: ptr VkViSurfaceCreateInfoNN , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateViSurfaceNN"))
# Load VK_KHR_external_memory_win32
proc loadVK_KHR_external_memory_win32*() =
vkGetMemoryWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkMemoryGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryWin32HandleKHR"))
vkGetMemoryWin32HandlePropertiesKHR = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: ptr VkMemoryWin32HandlePropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryWin32HandlePropertiesKHR"))
# Load VK_KHR_external_memory_fd
proc loadVK_KHR_external_memory_fd*() =
vkGetMemoryFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkMemoryGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryFdKHR"))
vkGetMemoryFdPropertiesKHR = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, fd: int, pMemoryFdProperties: ptr VkMemoryFdPropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryFdPropertiesKHR"))
# Load VK_KHR_external_semaphore_win32
proc loadVK_KHR_external_semaphore_win32*() =
vkImportSemaphoreWin32HandleKHR = cast[proc(device: VkDevice, pImportSemaphoreWin32HandleInfo: ptr VkImportSemaphoreWin32HandleInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkImportSemaphoreWin32HandleKHR"))
vkGetSemaphoreWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkSemaphoreGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}](vkGetProc("vkGetSemaphoreWin32HandleKHR"))
# Load VK_KHR_external_semaphore_fd
proc loadVK_KHR_external_semaphore_fd*() =
vkImportSemaphoreFdKHR = cast[proc(device: VkDevice, pImportSemaphoreFdInfo: ptr VkImportSemaphoreFdInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkImportSemaphoreFdKHR"))
vkGetSemaphoreFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkSemaphoreGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}](vkGetProc("vkGetSemaphoreFdKHR"))
# Load VK_KHR_push_descriptor
proc loadVK_KHR_push_descriptor*() =
vkCmdPushDescriptorSetKHR = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, layout: VkPipelineLayout, set: uint32, descriptorWriteCount: uint32, pDescriptorWrites: ptr VkWriteDescriptorSet ): void {.stdcall.}](vkGetProc("vkCmdPushDescriptorSetKHR"))
vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer ): void {.stdcall.}](vkGetProc("vkCmdPushDescriptorSetWithTemplateKHR"))
vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer ): void {.stdcall.}](vkGetProc("vkCmdPushDescriptorSetWithTemplateKHR"))
# Load VK_EXT_conditional_rendering
proc loadVK_EXT_conditional_rendering*() =
vkCmdBeginConditionalRenderingEXT = cast[proc(commandBuffer: VkCommandBuffer, pConditionalRenderingBegin: ptr VkConditionalRenderingBeginInfoEXT ): void {.stdcall.}](vkGetProc("vkCmdBeginConditionalRenderingEXT"))
vkCmdEndConditionalRenderingEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetProc("vkCmdEndConditionalRenderingEXT"))
# Load VK_KHR_descriptor_update_template
proc loadVK_KHR_descriptor_update_template*() =
vkCmdPushDescriptorSetWithTemplateKHR = cast[proc(commandBuffer: VkCommandBuffer, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, layout: VkPipelineLayout, set: uint32, pData: pointer ): void {.stdcall.}](vkGetProc("vkCmdPushDescriptorSetWithTemplateKHR"))
# Load VK_NV_clip_space_w_scaling
proc loadVK_NV_clip_space_w_scaling*() =
vkCmdSetViewportWScalingNV = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pViewportWScalings: ptr VkViewportWScalingNV ): void {.stdcall.}](vkGetProc("vkCmdSetViewportWScalingNV"))
# Load VK_EXT_direct_mode_display
proc loadVK_EXT_direct_mode_display*() =
vkReleaseDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR): VkResult {.stdcall.}](vkGetProc("vkReleaseDisplayEXT"))
# Load VK_EXT_acquire_xlib_display
proc loadVK_EXT_acquire_xlib_display*() =
vkAcquireXlibDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, dpy: ptr Display , display: VkDisplayKHR): VkResult {.stdcall.}](vkGetProc("vkAcquireXlibDisplayEXT"))
vkGetRandROutputDisplayEXT = cast[proc(physicalDevice: VkPhysicalDevice, dpy: ptr Display , rrOutput: RROutput, pDisplay: ptr VkDisplayKHR ): VkResult {.stdcall.}](vkGetProc("vkGetRandROutputDisplayEXT"))
# Load VK_EXT_display_surface_counter
proc loadVK_EXT_display_surface_counter*() =
vkGetPhysicalDeviceSurfaceCapabilities2EXT = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceCapabilities: ptr VkSurfaceCapabilities2EXT ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
# Load VK_EXT_display_control
proc loadVK_EXT_display_control*() =
vkDisplayPowerControlEXT = cast[proc(device: VkDevice, display: VkDisplayKHR, pDisplayPowerInfo: ptr VkDisplayPowerInfoEXT ): VkResult {.stdcall.}](vkGetProc("vkDisplayPowerControlEXT"))
vkRegisterDeviceEventEXT = cast[proc(device: VkDevice, pDeviceEventInfo: ptr VkDeviceEventInfoEXT , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkRegisterDeviceEventEXT"))
vkRegisterDisplayEventEXT = cast[proc(device: VkDevice, display: VkDisplayKHR, pDisplayEventInfo: ptr VkDisplayEventInfoEXT , pAllocator: ptr VkAllocationCallbacks , pFence: ptr VkFence ): VkResult {.stdcall.}](vkGetProc("vkRegisterDisplayEventEXT"))
vkGetSwapchainCounterEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, counter: VkSurfaceCounterFlagBitsEXT, pCounterValue: ptr uint64 ): VkResult {.stdcall.}](vkGetProc("vkGetSwapchainCounterEXT"))
# Load VK_GOOGLE_display_timing
proc loadVK_GOOGLE_display_timing*() =
vkGetRefreshCycleDurationGOOGLE = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pDisplayTimingProperties: ptr VkRefreshCycleDurationGOOGLE ): VkResult {.stdcall.}](vkGetProc("vkGetRefreshCycleDurationGOOGLE"))
vkGetPastPresentationTimingGOOGLE = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR, pPresentationTimingCount: ptr uint32 , pPresentationTimings: ptr VkPastPresentationTimingGOOGLE ): VkResult {.stdcall.}](vkGetProc("vkGetPastPresentationTimingGOOGLE"))
# Load VK_EXT_discard_rectangles
proc loadVK_EXT_discard_rectangles*() =
vkCmdSetDiscardRectangleEXT = cast[proc(commandBuffer: VkCommandBuffer, firstDiscardRectangle: uint32, discardRectangleCount: uint32, pDiscardRectangles: ptr VkRect2D ): void {.stdcall.}](vkGetProc("vkCmdSetDiscardRectangleEXT"))
# Load VK_EXT_hdr_metadata
proc loadVK_EXT_hdr_metadata*() =
vkSetHdrMetadataEXT = cast[proc(device: VkDevice, swapchainCount: uint32, pSwapchains: ptr VkSwapchainKHR , pMetadata: ptr VkHdrMetadataEXT ): void {.stdcall.}](vkGetProc("vkSetHdrMetadataEXT"))
# Load VK_KHR_shared_presentable_image
proc loadVK_KHR_shared_presentable_image*() =
vkGetSwapchainStatusKHR = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetProc("vkGetSwapchainStatusKHR"))
# Load VK_KHR_external_fence_win32
proc loadVK_KHR_external_fence_win32*() =
vkImportFenceWin32HandleKHR = cast[proc(device: VkDevice, pImportFenceWin32HandleInfo: ptr VkImportFenceWin32HandleInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkImportFenceWin32HandleKHR"))
vkGetFenceWin32HandleKHR = cast[proc(device: VkDevice, pGetWin32HandleInfo: ptr VkFenceGetWin32HandleInfoKHR , pHandle: ptr HANDLE ): VkResult {.stdcall.}](vkGetProc("vkGetFenceWin32HandleKHR"))
# Load VK_KHR_external_fence_fd
proc loadVK_KHR_external_fence_fd*() =
vkImportFenceFdKHR = cast[proc(device: VkDevice, pImportFenceFdInfo: ptr VkImportFenceFdInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkImportFenceFdKHR"))
vkGetFenceFdKHR = cast[proc(device: VkDevice, pGetFdInfo: ptr VkFenceGetFdInfoKHR , pFd: ptr int ): VkResult {.stdcall.}](vkGetProc("vkGetFenceFdKHR"))
# Load VK_KHR_performance_query
proc loadVK_KHR_performance_query*() =
vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, pCounterCount: ptr uint32 , pCounters: ptr VkPerformanceCounterKHR , pCounterDescriptions: ptr VkPerformanceCounterDescriptionKHR ): VkResult {.stdcall.}](vkGetProc("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = cast[proc(physicalDevice: VkPhysicalDevice, pPerformanceQueryCreateInfo: ptr VkQueryPoolPerformanceCreateInfoKHR , pNumPasses: ptr uint32 ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
vkAcquireProfilingLockKHR = cast[proc(device: VkDevice, pInfo: ptr VkAcquireProfilingLockInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkAcquireProfilingLockKHR"))
vkReleaseProfilingLockKHR = cast[proc(device: VkDevice): void {.stdcall.}](vkGetProc("vkReleaseProfilingLockKHR"))
# Load VK_KHR_get_surface_capabilities2
proc loadVK_KHR_get_surface_capabilities2*() =
vkGetPhysicalDeviceSurfaceCapabilities2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pSurfaceCapabilities: ptr VkSurfaceCapabilities2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
vkGetPhysicalDeviceSurfaceFormats2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pSurfaceFormatCount: ptr uint32 , pSurfaceFormats: ptr VkSurfaceFormat2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfaceFormats2KHR"))
# Load VK_KHR_get_display_properties2
proc loadVK_KHR_get_display_properties2*() =
vkGetPhysicalDeviceDisplayProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayProperties2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceDisplayProperties2KHR"))
vkGetPhysicalDeviceDisplayPlaneProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayPlaneProperties2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
vkGetDisplayModeProperties2KHR = cast[proc(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: ptr uint32 , pProperties: ptr VkDisplayModeProperties2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetDisplayModeProperties2KHR"))
vkGetDisplayPlaneCapabilities2KHR = cast[proc(physicalDevice: VkPhysicalDevice, pDisplayPlaneInfo: ptr VkDisplayPlaneInfo2KHR , pCapabilities: ptr VkDisplayPlaneCapabilities2KHR ): VkResult {.stdcall.}](vkGetProc("vkGetDisplayPlaneCapabilities2KHR"))
# Load VK_MVK_ios_surface
proc loadVK_MVK_ios_surface*() =
vkCreateIOSSurfaceMVK = cast[proc(instance: VkInstance, pCreateInfo: ptr VkIOSSurfaceCreateInfoMVK , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateIOSSurfaceMVK"))
# Load VK_MVK_macos_surface
proc loadVK_MVK_macos_surface*() =
vkCreateMacOSSurfaceMVK = cast[proc(instance: VkInstance, pCreateInfo: ptr VkMacOSSurfaceCreateInfoMVK , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateMacOSSurfaceMVK"))
# Load VK_EXT_debug_utils
proc loadVK_EXT_debug_utils*() =
vkSetDebugUtilsObjectNameEXT = cast[proc(device: VkDevice, pNameInfo: ptr VkDebugUtilsObjectNameInfoEXT ): VkResult {.stdcall.}](vkGetProc("vkSetDebugUtilsObjectNameEXT"))
vkSetDebugUtilsObjectTagEXT = cast[proc(device: VkDevice, pTagInfo: ptr VkDebugUtilsObjectTagInfoEXT ): VkResult {.stdcall.}](vkGetProc("vkSetDebugUtilsObjectTagEXT"))
vkQueueBeginDebugUtilsLabelEXT = cast[proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}](vkGetProc("vkQueueBeginDebugUtilsLabelEXT"))
vkQueueEndDebugUtilsLabelEXT = cast[proc(queue: VkQueue): void {.stdcall.}](vkGetProc("vkQueueEndDebugUtilsLabelEXT"))
vkQueueInsertDebugUtilsLabelEXT = cast[proc(queue: VkQueue, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}](vkGetProc("vkQueueInsertDebugUtilsLabelEXT"))
vkCmdBeginDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}](vkGetProc("vkCmdBeginDebugUtilsLabelEXT"))
vkCmdEndDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer): void {.stdcall.}](vkGetProc("vkCmdEndDebugUtilsLabelEXT"))
vkCmdInsertDebugUtilsLabelEXT = cast[proc(commandBuffer: VkCommandBuffer, pLabelInfo: ptr VkDebugUtilsLabelEXT ): void {.stdcall.}](vkGetProc("vkCmdInsertDebugUtilsLabelEXT"))
vkCreateDebugUtilsMessengerEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pMessenger: ptr VkDebugUtilsMessengerEXT ): VkResult {.stdcall.}](vkGetProc("vkCreateDebugUtilsMessengerEXT"))
vkDestroyDebugUtilsMessengerEXT = cast[proc(instance: VkInstance, messenger: VkDebugUtilsMessengerEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDebugUtilsMessengerEXT"))
vkSubmitDebugUtilsMessageEXT = cast[proc(instance: VkInstance, messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT, messageTypes: VkDebugUtilsMessageTypeFlagsEXT, pCallbackData: ptr VkDebugUtilsMessengerCallbackDataEXT ): void {.stdcall.}](vkGetProc("vkSubmitDebugUtilsMessageEXT"))
# Load VK_ANDROID_external_memory_android_hardware_buffer
proc loadVK_ANDROID_external_memory_android_hardware_buffer*() =
vkGetAndroidHardwareBufferPropertiesANDROID = cast[proc(device: VkDevice, buffer: ptr AHardwareBuffer , pProperties: ptr VkAndroidHardwareBufferPropertiesANDROID ): VkResult {.stdcall.}](vkGetProc("vkGetAndroidHardwareBufferPropertiesANDROID"))
vkGetMemoryAndroidHardwareBufferANDROID = cast[proc(device: VkDevice, pInfo: ptr VkMemoryGetAndroidHardwareBufferInfoANDROID , pBuffer: ptr ptr AHardwareBuffer ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryAndroidHardwareBufferANDROID"))
# Load VK_EXT_sample_locations
proc loadVK_EXT_sample_locations*() =
vkCmdSetSampleLocationsEXT = cast[proc(commandBuffer: VkCommandBuffer, pSampleLocationsInfo: ptr VkSampleLocationsInfoEXT ): void {.stdcall.}](vkGetProc("vkCmdSetSampleLocationsEXT"))
vkGetPhysicalDeviceMultisamplePropertiesEXT = cast[proc(physicalDevice: VkPhysicalDevice, samples: VkSampleCountFlagBits, pMultisampleProperties: ptr VkMultisamplePropertiesEXT ): void {.stdcall.}](vkGetProc("vkGetPhysicalDeviceMultisamplePropertiesEXT"))
# Load VK_KHR_ray_tracing
proc loadVK_KHR_ray_tracing*() =
vkCreateAccelerationStructureKHR = cast[proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pAccelerationStructure: ptr VkAccelerationStructureKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateAccelerationStructureKHR"))
vkDestroyAccelerationStructureKHR = cast[proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyAccelerationStructureKHR"))
vkGetAccelerationStructureMemoryRequirementsKHR = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoKHR , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProc("vkGetAccelerationStructureMemoryRequirementsKHR"))
vkBindAccelerationStructureMemoryKHR = cast[proc(device: VkDevice, bindInfoCount: uint32, pBindInfos: ptr VkBindAccelerationStructureMemoryInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkBindAccelerationStructureMemoryKHR"))
vkCmdBuildAccelerationStructureKHR = cast[proc(commandBuffer: VkCommandBuffer, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR , ppOffsetInfos: ptr ptr VkAccelerationStructureBuildOffsetInfoKHR ): void {.stdcall.}](vkGetProc("vkCmdBuildAccelerationStructureKHR"))
vkCmdBuildAccelerationStructureIndirectKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureBuildGeometryInfoKHR , indirectBuffer: VkBuffer, indirectOffset: VkDeviceSize, indirectStride: uint32): void {.stdcall.}](vkGetProc("vkCmdBuildAccelerationStructureIndirectKHR"))
vkBuildAccelerationStructureKHR = cast[proc(device: VkDevice, infoCount: uint32, pInfos: ptr VkAccelerationStructureBuildGeometryInfoKHR , ppOffsetInfos: ptr ptr VkAccelerationStructureBuildOffsetInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkBuildAccelerationStructureKHR"))
vkCopyAccelerationStructureKHR = cast[proc(device: VkDevice, pInfo: ptr VkCopyAccelerationStructureInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkCopyAccelerationStructureKHR"))
vkCopyAccelerationStructureToMemoryKHR = cast[proc(device: VkDevice, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkCopyAccelerationStructureToMemoryKHR"))
vkCopyMemoryToAccelerationStructureKHR = cast[proc(device: VkDevice, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR ): VkResult {.stdcall.}](vkGetProc("vkCopyMemoryToAccelerationStructureKHR"))
vkWriteAccelerationStructuresPropertiesKHR = cast[proc(device: VkDevice, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR , queryType: VkQueryType, dataSize: uint, pData: pointer , stride: uint): VkResult {.stdcall.}](vkGetProc("vkWriteAccelerationStructuresPropertiesKHR"))
vkCmdCopyAccelerationStructureKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureInfoKHR ): void {.stdcall.}](vkGetProc("vkCmdCopyAccelerationStructureKHR"))
vkCmdCopyAccelerationStructureToMemoryKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyAccelerationStructureToMemoryInfoKHR ): void {.stdcall.}](vkGetProc("vkCmdCopyAccelerationStructureToMemoryKHR"))
vkCmdCopyMemoryToAccelerationStructureKHR = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkCopyMemoryToAccelerationStructureInfoKHR ): void {.stdcall.}](vkGetProc("vkCmdCopyMemoryToAccelerationStructureKHR"))
vkCmdTraceRaysKHR = cast[proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedBufferRegionKHR , pMissShaderBindingTable: ptr VkStridedBufferRegionKHR , pHitShaderBindingTable: ptr VkStridedBufferRegionKHR , pCallableShaderBindingTable: ptr VkStridedBufferRegionKHR , width: uint32, height: uint32, depth: uint32): void {.stdcall.}](vkGetProc("vkCmdTraceRaysKHR"))
vkCreateRayTracingPipelinesKHR = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateRayTracingPipelinesKHR"))
vkGetRayTracingShaderGroupHandlesKHR = cast[proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: uint, pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetRayTracingShaderGroupHandlesKHR"))
vkGetAccelerationStructureDeviceAddressKHR = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureDeviceAddressInfoKHR ): VkDeviceAddress {.stdcall.}](vkGetProc("vkGetAccelerationStructureDeviceAddressKHR"))
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = cast[proc(device: VkDevice, pipeline: VkPipeline, firstGroup: uint32, groupCount: uint32, dataSize: uint, pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
vkCmdWriteAccelerationStructuresPropertiesKHR = cast[proc(commandBuffer: VkCommandBuffer, accelerationStructureCount: uint32, pAccelerationStructures: ptr VkAccelerationStructureKHR , queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: uint32): void {.stdcall.}](vkGetProc("vkCmdWriteAccelerationStructuresPropertiesKHR"))
vkCmdTraceRaysIndirectKHR = cast[proc(commandBuffer: VkCommandBuffer, pRaygenShaderBindingTable: ptr VkStridedBufferRegionKHR , pMissShaderBindingTable: ptr VkStridedBufferRegionKHR , pHitShaderBindingTable: ptr VkStridedBufferRegionKHR , pCallableShaderBindingTable: ptr VkStridedBufferRegionKHR , buffer: VkBuffer, offset: VkDeviceSize): void {.stdcall.}](vkGetProc("vkCmdTraceRaysIndirectKHR"))
vkGetDeviceAccelerationStructureCompatibilityKHR = cast[proc(device: VkDevice, version: ptr VkAccelerationStructureVersionKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceAccelerationStructureCompatibilityKHR"))
# Load VK_EXT_image_drm_format_modifier
proc loadVK_EXT_image_drm_format_modifier*() =
vkGetImageDrmFormatModifierPropertiesEXT = cast[proc(device: VkDevice, image: VkImage, pProperties: ptr VkImageDrmFormatModifierPropertiesEXT ): VkResult {.stdcall.}](vkGetProc("vkGetImageDrmFormatModifierPropertiesEXT"))
# Load VK_EXT_validation_cache
proc loadVK_EXT_validation_cache*() =
vkCreateValidationCacheEXT = cast[proc(device: VkDevice, pCreateInfo: ptr VkValidationCacheCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pValidationCache: ptr VkValidationCacheEXT ): VkResult {.stdcall.}](vkGetProc("vkCreateValidationCacheEXT"))
vkDestroyValidationCacheEXT = cast[proc(device: VkDevice, validationCache: VkValidationCacheEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyValidationCacheEXT"))
vkMergeValidationCachesEXT = cast[proc(device: VkDevice, dstCache: VkValidationCacheEXT, srcCacheCount: uint32, pSrcCaches: ptr VkValidationCacheEXT ): VkResult {.stdcall.}](vkGetProc("vkMergeValidationCachesEXT"))
vkGetValidationCacheDataEXT = cast[proc(device: VkDevice, validationCache: VkValidationCacheEXT, pDataSize: ptr uint , pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetValidationCacheDataEXT"))
# Load VK_NV_shading_rate_image
proc loadVK_NV_shading_rate_image*() =
vkCmdBindShadingRateImageNV = cast[proc(commandBuffer: VkCommandBuffer, imageView: VkImageView, imageLayout: VkImageLayout): void {.stdcall.}](vkGetProc("vkCmdBindShadingRateImageNV"))
vkCmdSetViewportShadingRatePaletteNV = cast[proc(commandBuffer: VkCommandBuffer, firstViewport: uint32, viewportCount: uint32, pShadingRatePalettes: ptr VkShadingRatePaletteNV ): void {.stdcall.}](vkGetProc("vkCmdSetViewportShadingRatePaletteNV"))
vkCmdSetCoarseSampleOrderNV = cast[proc(commandBuffer: VkCommandBuffer, sampleOrderType: VkCoarseSampleOrderTypeNV, customSampleOrderCount: uint32, pCustomSampleOrders: ptr VkCoarseSampleOrderCustomNV ): void {.stdcall.}](vkGetProc("vkCmdSetCoarseSampleOrderNV"))
# Load VK_NV_ray_tracing
proc loadVK_NV_ray_tracing*() =
vkCreateAccelerationStructureNV = cast[proc(device: VkDevice, pCreateInfo: ptr VkAccelerationStructureCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pAccelerationStructure: ptr VkAccelerationStructureNV ): VkResult {.stdcall.}](vkGetProc("vkCreateAccelerationStructureNV"))
vkGetAccelerationStructureMemoryRequirementsNV = cast[proc(device: VkDevice, pInfo: ptr VkAccelerationStructureMemoryRequirementsInfoNV , pMemoryRequirements: ptr VkMemoryRequirements2KHR ): void {.stdcall.}](vkGetProc("vkGetAccelerationStructureMemoryRequirementsNV"))
vkCmdBuildAccelerationStructureNV = cast[proc(commandBuffer: VkCommandBuffer, pInfo: ptr VkAccelerationStructureInfoNV , instanceData: VkBuffer, instanceOffset: VkDeviceSize, update: VkBool32, dst: VkAccelerationStructureKHR, src: VkAccelerationStructureKHR, scratch: VkBuffer, scratchOffset: VkDeviceSize): void {.stdcall.}](vkGetProc("vkCmdBuildAccelerationStructureNV"))
vkCmdCopyAccelerationStructureNV = cast[proc(commandBuffer: VkCommandBuffer, dst: VkAccelerationStructureKHR, src: VkAccelerationStructureKHR, mode: VkCopyAccelerationStructureModeKHR): void {.stdcall.}](vkGetProc("vkCmdCopyAccelerationStructureNV"))
vkCmdTraceRaysNV = cast[proc(commandBuffer: VkCommandBuffer, raygenShaderBindingTableBuffer: VkBuffer, raygenShaderBindingOffset: VkDeviceSize, missShaderBindingTableBuffer: VkBuffer, missShaderBindingOffset: VkDeviceSize, missShaderBindingStride: VkDeviceSize, hitShaderBindingTableBuffer: VkBuffer, hitShaderBindingOffset: VkDeviceSize, hitShaderBindingStride: VkDeviceSize, callableShaderBindingTableBuffer: VkBuffer, callableShaderBindingOffset: VkDeviceSize, callableShaderBindingStride: VkDeviceSize, width: uint32, height: uint32, depth: uint32): void {.stdcall.}](vkGetProc("vkCmdTraceRaysNV"))
vkCreateRayTracingPipelinesNV = cast[proc(device: VkDevice, pipelineCache: VkPipelineCache, createInfoCount: uint32, pCreateInfos: ptr VkRayTracingPipelineCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pPipelines: ptr VkPipeline ): VkResult {.stdcall.}](vkGetProc("vkCreateRayTracingPipelinesNV"))
vkGetAccelerationStructureHandleNV = cast[proc(device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, dataSize: uint, pData: pointer ): VkResult {.stdcall.}](vkGetProc("vkGetAccelerationStructureHandleNV"))
vkCompileDeferredNV = cast[proc(device: VkDevice, pipeline: VkPipeline, shader: uint32): VkResult {.stdcall.}](vkGetProc("vkCompileDeferredNV"))
# Load VK_EXT_external_memory_host
proc loadVK_EXT_external_memory_host*() =
vkGetMemoryHostPointerPropertiesEXT = cast[proc(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHostPointer: pointer , pMemoryHostPointerProperties: ptr VkMemoryHostPointerPropertiesEXT ): VkResult {.stdcall.}](vkGetProc("vkGetMemoryHostPointerPropertiesEXT"))
# Load VK_AMD_buffer_marker
proc loadVK_AMD_buffer_marker*() =
vkCmdWriteBufferMarkerAMD = cast[proc(commandBuffer: VkCommandBuffer, pipelineStage: VkPipelineStageFlagBits, dstBuffer: VkBuffer, dstOffset: VkDeviceSize, marker: uint32): void {.stdcall.}](vkGetProc("vkCmdWriteBufferMarkerAMD"))
# Load VK_EXT_calibrated_timestamps
proc loadVK_EXT_calibrated_timestamps*() =
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = cast[proc(physicalDevice: VkPhysicalDevice, pTimeDomainCount: ptr uint32 , pTimeDomains: ptr VkTimeDomainEXT ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
vkGetCalibratedTimestampsEXT = cast[proc(device: VkDevice, timestampCount: uint32, pTimestampInfos: ptr VkCalibratedTimestampInfoEXT , pTimestamps: ptr uint64 , pMaxDeviation: ptr uint64 ): VkResult {.stdcall.}](vkGetProc("vkGetCalibratedTimestampsEXT"))
# Load VK_NV_mesh_shader
proc loadVK_NV_mesh_shader*() =
vkCmdDrawMeshTasksNV = cast[proc(commandBuffer: VkCommandBuffer, taskCount: uint32, firstTask: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawMeshTasksNV"))
vkCmdDrawMeshTasksIndirectNV = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, drawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawMeshTasksIndirectNV"))
vkCmdDrawMeshTasksIndirectCountNV = cast[proc(commandBuffer: VkCommandBuffer, buffer: VkBuffer, offset: VkDeviceSize, countBuffer: VkBuffer, countBufferOffset: VkDeviceSize, maxDrawCount: uint32, stride: uint32): void {.stdcall.}](vkGetProc("vkCmdDrawMeshTasksIndirectCountNV"))
# Load VK_NV_scissor_exclusive
proc loadVK_NV_scissor_exclusive*() =
vkCmdSetExclusiveScissorNV = cast[proc(commandBuffer: VkCommandBuffer, firstExclusiveScissor: uint32, exclusiveScissorCount: uint32, pExclusiveScissors: ptr VkRect2D ): void {.stdcall.}](vkGetProc("vkCmdSetExclusiveScissorNV"))
# Load VK_NV_device_diagnostic_checkpoints
proc loadVK_NV_device_diagnostic_checkpoints*() =
vkCmdSetCheckpointNV = cast[proc(commandBuffer: VkCommandBuffer, pCheckpointMarker: pointer ): void {.stdcall.}](vkGetProc("vkCmdSetCheckpointNV"))
vkGetQueueCheckpointDataNV = cast[proc(queue: VkQueue, pCheckpointDataCount: ptr uint32 , pCheckpointData: ptr VkCheckpointDataNV ): void {.stdcall.}](vkGetProc("vkGetQueueCheckpointDataNV"))
# Load VK_INTEL_performance_query
proc loadVK_INTEL_performance_query*() =
vkInitializePerformanceApiINTEL = cast[proc(device: VkDevice, pInitializeInfo: ptr VkInitializePerformanceApiInfoINTEL ): VkResult {.stdcall.}](vkGetProc("vkInitializePerformanceApiINTEL"))
vkUninitializePerformanceApiINTEL = cast[proc(device: VkDevice): void {.stdcall.}](vkGetProc("vkUninitializePerformanceApiINTEL"))
vkCmdSetPerformanceMarkerINTEL = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceMarkerInfoINTEL ): VkResult {.stdcall.}](vkGetProc("vkCmdSetPerformanceMarkerINTEL"))
vkCmdSetPerformanceStreamMarkerINTEL = cast[proc(commandBuffer: VkCommandBuffer, pMarkerInfo: ptr VkPerformanceStreamMarkerInfoINTEL ): VkResult {.stdcall.}](vkGetProc("vkCmdSetPerformanceStreamMarkerINTEL"))
vkCmdSetPerformanceOverrideINTEL = cast[proc(commandBuffer: VkCommandBuffer, pOverrideInfo: ptr VkPerformanceOverrideInfoINTEL ): VkResult {.stdcall.}](vkGetProc("vkCmdSetPerformanceOverrideINTEL"))
vkAcquirePerformanceConfigurationINTEL = cast[proc(device: VkDevice, pAcquireInfo: ptr VkPerformanceConfigurationAcquireInfoINTEL , pConfiguration: ptr VkPerformanceConfigurationINTEL ): VkResult {.stdcall.}](vkGetProc("vkAcquirePerformanceConfigurationINTEL"))
vkReleasePerformanceConfigurationINTEL = cast[proc(device: VkDevice, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}](vkGetProc("vkReleasePerformanceConfigurationINTEL"))
vkQueueSetPerformanceConfigurationINTEL = cast[proc(queue: VkQueue, configuration: VkPerformanceConfigurationINTEL): VkResult {.stdcall.}](vkGetProc("vkQueueSetPerformanceConfigurationINTEL"))
vkGetPerformanceParameterINTEL = cast[proc(device: VkDevice, parameter: VkPerformanceParameterTypeINTEL, pValue: ptr VkPerformanceValueINTEL ): VkResult {.stdcall.}](vkGetProc("vkGetPerformanceParameterINTEL"))
# Load VK_AMD_display_native_hdr
proc loadVK_AMD_display_native_hdr*() =
vkSetLocalDimmingAMD = cast[proc(device: VkDevice, swapChain: VkSwapchainKHR, localDimmingEnable: VkBool32): void {.stdcall.}](vkGetProc("vkSetLocalDimmingAMD"))
# Load VK_FUCHSIA_imagepipe_surface
proc loadVK_FUCHSIA_imagepipe_surface*() =
vkCreateImagePipeSurfaceFUCHSIA = cast[proc(instance: VkInstance, pCreateInfo: ptr VkImagePipeSurfaceCreateInfoFUCHSIA , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateImagePipeSurfaceFUCHSIA"))
# Load VK_EXT_metal_surface
proc loadVK_EXT_metal_surface*() =
vkCreateMetalSurfaceEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkMetalSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateMetalSurfaceEXT"))
# Load VK_EXT_tooling_info
proc loadVK_EXT_tooling_info*() =
vkGetPhysicalDeviceToolPropertiesEXT = cast[proc(physicalDevice: VkPhysicalDevice, pToolCount: ptr uint32 , pToolProperties: ptr VkPhysicalDeviceToolPropertiesEXT ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceToolPropertiesEXT"))
# Load VK_NV_cooperative_matrix
proc loadVK_NV_cooperative_matrix*() =
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = cast[proc(physicalDevice: VkPhysicalDevice, pPropertyCount: ptr uint32 , pProperties: ptr VkCooperativeMatrixPropertiesNV ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
# Load VK_NV_coverage_reduction_mode
proc loadVK_NV_coverage_reduction_mode*() =
vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = cast[proc(physicalDevice: VkPhysicalDevice, pCombinationCount: ptr uint32 , pCombinations: ptr VkFramebufferMixedSamplesCombinationNV ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
# Load VK_EXT_full_screen_exclusive
proc loadVK_EXT_full_screen_exclusive*() =
vkGetPhysicalDeviceSurfacePresentModes2EXT = cast[proc(physicalDevice: VkPhysicalDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pPresentModeCount: ptr uint32 , pPresentModes: ptr VkPresentModeKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPhysicalDeviceSurfacePresentModes2EXT"))
vkAcquireFullScreenExclusiveModeEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetProc("vkAcquireFullScreenExclusiveModeEXT"))
vkReleaseFullScreenExclusiveModeEXT = cast[proc(device: VkDevice, swapchain: VkSwapchainKHR): VkResult {.stdcall.}](vkGetProc("vkReleaseFullScreenExclusiveModeEXT"))
vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupSurfacePresentModes2EXT"))
vkGetDeviceGroupSurfacePresentModes2EXT = cast[proc(device: VkDevice, pSurfaceInfo: ptr VkPhysicalDeviceSurfaceInfo2KHR , pModes: ptr VkDeviceGroupPresentModeFlagsKHR ): VkResult {.stdcall.}](vkGetProc("vkGetDeviceGroupSurfacePresentModes2EXT"))
# Load VK_EXT_headless_surface
proc loadVK_EXT_headless_surface*() =
vkCreateHeadlessSurfaceEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkHeadlessSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateHeadlessSurfaceEXT"))
# Load VK_EXT_line_rasterization
proc loadVK_EXT_line_rasterization*() =
vkCmdSetLineStippleEXT = cast[proc(commandBuffer: VkCommandBuffer, lineStippleFactor: uint32, lineStipplePattern: uint16): void {.stdcall.}](vkGetProc("vkCmdSetLineStippleEXT"))
# Load VK_EXT_extended_dynamic_state
proc loadVK_EXT_extended_dynamic_state*() =
vkCmdSetCullModeEXT = cast[proc(commandBuffer: VkCommandBuffer, cullMode: VkCullModeFlags): void {.stdcall.}](vkGetProc("vkCmdSetCullModeEXT"))
vkCmdSetFrontFaceEXT = cast[proc(commandBuffer: VkCommandBuffer, frontFace: VkFrontFace): void {.stdcall.}](vkGetProc("vkCmdSetFrontFaceEXT"))
vkCmdSetPrimitiveTopologyEXT = cast[proc(commandBuffer: VkCommandBuffer, primitiveTopology: VkPrimitiveTopology): void {.stdcall.}](vkGetProc("vkCmdSetPrimitiveTopologyEXT"))
vkCmdSetViewportWithCountEXT = cast[proc(commandBuffer: VkCommandBuffer, viewportCount: uint32, pViewports: ptr VkViewport ): void {.stdcall.}](vkGetProc("vkCmdSetViewportWithCountEXT"))
vkCmdSetScissorWithCountEXT = cast[proc(commandBuffer: VkCommandBuffer, scissorCount: uint32, pScissors: ptr VkRect2D ): void {.stdcall.}](vkGetProc("vkCmdSetScissorWithCountEXT"))
vkCmdBindVertexBuffers2EXT = cast[proc(commandBuffer: VkCommandBuffer, firstBinding: uint32, bindingCount: uint32, pBuffers: ptr VkBuffer , pOffsets: ptr VkDeviceSize , pSizes: ptr VkDeviceSize , pStrides: ptr VkDeviceSize ): void {.stdcall.}](vkGetProc("vkCmdBindVertexBuffers2EXT"))
vkCmdSetDepthTestEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, depthTestEnable: VkBool32): void {.stdcall.}](vkGetProc("vkCmdSetDepthTestEnableEXT"))
vkCmdSetDepthWriteEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, depthWriteEnable: VkBool32): void {.stdcall.}](vkGetProc("vkCmdSetDepthWriteEnableEXT"))
vkCmdSetDepthCompareOpEXT = cast[proc(commandBuffer: VkCommandBuffer, depthCompareOp: VkCompareOp): void {.stdcall.}](vkGetProc("vkCmdSetDepthCompareOpEXT"))
vkCmdSetDepthBoundsTestEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, depthBoundsTestEnable: VkBool32): void {.stdcall.}](vkGetProc("vkCmdSetDepthBoundsTestEnableEXT"))
vkCmdSetStencilTestEnableEXT = cast[proc(commandBuffer: VkCommandBuffer, stencilTestEnable: VkBool32): void {.stdcall.}](vkGetProc("vkCmdSetStencilTestEnableEXT"))
vkCmdSetStencilOpEXT = cast[proc(commandBuffer: VkCommandBuffer, faceMask: VkStencilFaceFlags, failOp: VkStencilOp, passOp: VkStencilOp, depthFailOp: VkStencilOp, compareOp: VkCompareOp): void {.stdcall.}](vkGetProc("vkCmdSetStencilOpEXT"))
# Load VK_KHR_deferred_host_operations
proc loadVK_KHR_deferred_host_operations*() =
vkCreateDeferredOperationKHR = cast[proc(device: VkDevice, pAllocator: ptr VkAllocationCallbacks , pDeferredOperation: ptr VkDeferredOperationKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateDeferredOperationKHR"))
vkDestroyDeferredOperationKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyDeferredOperationKHR"))
vkGetDeferredOperationMaxConcurrencyKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): uint32 {.stdcall.}](vkGetProc("vkGetDeferredOperationMaxConcurrencyKHR"))
vkGetDeferredOperationResultKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}](vkGetProc("vkGetDeferredOperationResultKHR"))
vkDeferredOperationJoinKHR = cast[proc(device: VkDevice, operation: VkDeferredOperationKHR): VkResult {.stdcall.}](vkGetProc("vkDeferredOperationJoinKHR"))
# Load VK_KHR_pipeline_executable_properties
proc loadVK_KHR_pipeline_executable_properties*() =
vkGetPipelineExecutablePropertiesKHR = cast[proc(device: VkDevice, pPipelineInfo: ptr VkPipelineInfoKHR , pExecutableCount: ptr uint32 , pProperties: ptr VkPipelineExecutablePropertiesKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPipelineExecutablePropertiesKHR"))
vkGetPipelineExecutableStatisticsKHR = cast[proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR , pStatisticCount: ptr uint32 , pStatistics: ptr VkPipelineExecutableStatisticKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPipelineExecutableStatisticsKHR"))
vkGetPipelineExecutableInternalRepresentationsKHR = cast[proc(device: VkDevice, pExecutableInfo: ptr VkPipelineExecutableInfoKHR , pInternalRepresentationCount: ptr uint32 , pInternalRepresentations: ptr VkPipelineExecutableInternalRepresentationKHR ): VkResult {.stdcall.}](vkGetProc("vkGetPipelineExecutableInternalRepresentationsKHR"))
# Load VK_NV_device_generated_commands
proc loadVK_NV_device_generated_commands*() =
vkGetGeneratedCommandsMemoryRequirementsNV = cast[proc(device: VkDevice, pInfo: ptr VkGeneratedCommandsMemoryRequirementsInfoNV , pMemoryRequirements: ptr VkMemoryRequirements2 ): void {.stdcall.}](vkGetProc("vkGetGeneratedCommandsMemoryRequirementsNV"))
vkCmdPreprocessGeneratedCommandsNV = cast[proc(commandBuffer: VkCommandBuffer, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV ): void {.stdcall.}](vkGetProc("vkCmdPreprocessGeneratedCommandsNV"))
vkCmdExecuteGeneratedCommandsNV = cast[proc(commandBuffer: VkCommandBuffer, isPreprocessed: VkBool32, pGeneratedCommandsInfo: ptr VkGeneratedCommandsInfoNV ): void {.stdcall.}](vkGetProc("vkCmdExecuteGeneratedCommandsNV"))
vkCmdBindPipelineShaderGroupNV = cast[proc(commandBuffer: VkCommandBuffer, pipelineBindPoint: VkPipelineBindPoint, pipeline: VkPipeline, groupIndex: uint32): void {.stdcall.}](vkGetProc("vkCmdBindPipelineShaderGroupNV"))
vkCreateIndirectCommandsLayoutNV = cast[proc(device: VkDevice, pCreateInfo: ptr VkIndirectCommandsLayoutCreateInfoNV , pAllocator: ptr VkAllocationCallbacks , pIndirectCommandsLayout: ptr VkIndirectCommandsLayoutNV ): VkResult {.stdcall.}](vkGetProc("vkCreateIndirectCommandsLayoutNV"))
vkDestroyIndirectCommandsLayoutNV = cast[proc(device: VkDevice, indirectCommandsLayout: VkIndirectCommandsLayoutNV, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyIndirectCommandsLayoutNV"))
# Load VK_EXT_private_data
proc loadVK_EXT_private_data*() =
vkCreatePrivateDataSlotEXT = cast[proc(device: VkDevice, pCreateInfo: ptr VkPrivateDataSlotCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pPrivateDataSlot: ptr VkPrivateDataSlotEXT ): VkResult {.stdcall.}](vkGetProc("vkCreatePrivateDataSlotEXT"))
vkDestroyPrivateDataSlotEXT = cast[proc(device: VkDevice, privateDataSlot: VkPrivateDataSlotEXT, pAllocator: ptr VkAllocationCallbacks ): void {.stdcall.}](vkGetProc("vkDestroyPrivateDataSlotEXT"))
vkSetPrivateDataEXT = cast[proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlotEXT, data: uint64): VkResult {.stdcall.}](vkGetProc("vkSetPrivateDataEXT"))
vkGetPrivateDataEXT = cast[proc(device: VkDevice, objectType: VkObjectType, objectHandle: uint64, privateDataSlot: VkPrivateDataSlotEXT, pData: ptr uint64 ): void {.stdcall.}](vkGetProc("vkGetPrivateDataEXT"))
# Load VK_EXT_directfb_surface
proc loadVK_EXT_directfb_surface*() =
vkCreateDirectFBSurfaceEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDirectFBSurfaceCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateDirectFBSurfaceEXT"))
vkGetPhysicalDeviceDirectFBPresentationSupportEXT = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, dfb: ptr IDirectFB ): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
proc vkInit*(load1_0: bool = true, load1_1: bool = true): bool =
if load1_0:
vkLoad1_0()
when not defined(macosx):
if load1_1:
vkLoad1_1()
return true
import glm
# We assume all the spaces up to and including view space to feature a Y-axis pointing upwards.
# Screen space in Vulkan, however, has the +Y-axis pointing downwards, +X to the left, and +Z into the screen.
# We are staying in right-handed (RH) coordinate systems throughout ALL the spaces.
# Therefore, we are representing the coordinates from here on -- actually exactly BETWEEN View Space and
# Clip Space -- in a coordinate system which is rotated 180 around X, having Y point down, still RH.
let rotateAroundXFrom_RH_Yup_to_RH_Ydown*: Mat4[float32] =
mat4f( vec4f(1.float32, 0, 0, 0)
, -vec4f(0.float32, 1, 0, 0)
, -vec4f(0.float32, 0, 1, 0)
, vec4f(0.float32, 0, 0, 1)
)
let rotateAroundXFrom_RH_Yup_to_RH_Ydown_Inverse* = inverse rotateAroundXFrom_RH_Yup_to_RH_Ydown
proc ortho*(left, right, bottom, top, near, far: float32): Mat4f =
var m = mat4[float32](1.0)
let
rl = right - left
tb = top - bottom
fn = far - near
m[0][0] = 2.float32 / rl
m[1][1] = 2.float32 / tb
m[2][2] = 1.float32 / fn
m[3][0] = -(right + left) / rl
m[3][1] = -(top + bottom) / tb
m[3][2] = -(near) / fn
result = m * rotateAroundXFrom_RH_Yup_to_RH_Ydown_Inverse
proc lookAtRH*( eye
, center
, up: Vec3[float32]
): Mat4[float32] =
let
f = normalize(center - eye)
s = normalize(cross(f, up))
u = cross(s, f)
result[0][0] = s.x
result[1][0] = s.y
result[2][0] = s.z
result[0][1] = u.x
result[1][1] = u.y
result[2][1] = u.z
result[0][2] = -f.x
result[1][2] = -f.y
result[2][2] = -f.z
result[3][0] = -dot(s, eye)
result[3][1] = -dot(u, eye)
result[3][2] = dot(f, eye)
proc perspectiveLH*[T]( fovy, aspect, zNear, zFar:T): Mat4[T] =
let tanHalfFovy = tan(fovy / T(2))
result = mat4[T](0.0)
result[0,0] = T(1) / (aspect * tanHalfFovy)
result[1,1] = T(1) / (tanHalfFovy)
result[2,2] = (zFar + zNear) / (zFar - zNear)
result[2,3] = T(1)
result[3,2] = - (T(2) * zFar * zNear) / (zFar - zNear)
proc perspectiveRH*[T]( fovy, aspect, zNear, zFar:T): Mat4f =
let tanHalfFovy = tan(fovy / T(2))
result = mat4[T](0.0)
result[0,0] = T(1) / (aspect * tanHalfFovy)
result[1,1] = T(1) / (tanHalfFovy)
result[2,3] = T(-1)
result[2,2] = -(zFar + zNear) / (zFar - zNear)
result[3,2] = -(T(2) * zFar * zNear) / (zFar - zNear)
import vulkan as nvk
, vkTypes
, vulkan_record
, vulkan_utils
, ../utils/[lets
, etc
]
, bitops
, strutils
, vkTypes
, swapchain
, gpu
, ../portal/portalObj
, dbg
, device
, semaphores
, buffer
import ../memory/[ utils
]
const
needed_validation_layers* = ["VK_LAYER_KHRONOS_validation"]
proc check_validation_layers(
) =
when defined windows:
vkEnumerateInstanceLayerProperties = cast[proc( pPropertyCount: ptr uint32
, pProperties: ptr VkLayerProperties
): VkResult {.stdcall.}]
(vkGetProcAddress("vkEnumerateInstanceLayerProperties"))
var layer_count: uint32 = 0
discard vkEnumerateInstanceLayerProperties( addr layer_count
, nil
)
var layers = newSeq[VkLayerProperties] (layer_count)
discard vkEnumerateInstanceLayerProperties( addr layer_count
, addr layers[0]
)
for validated_layer in needed_validation_layers:
var found = false
for layer in layers:
if cstring(unsafeAddr layer.layerName) == validated_layer:
found = true
break
if not found:
echo validated_layer & " layer is not supported"
proc create_vulkan_instance*(vulkan_record: var Vulkan_Record
) =
var
validationFeatureEnables: array[3, VkValidationFeatureEnableEXT] =
[ VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT
, VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT
, VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT
]
validationFeatures = VkValidationFeaturesEXT( sType: VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
, pNext: nil
, enabledValidationFeatureCount: 3
, pEnabledValidationFeatures: addr validationFeatureEnables[0]
, disabledValidationFeatureCount: 0
, pDisabledValidationFeatures: nil
)
instance: VkInstance
appInfo = newVkApplicationInfo(
pApplicationName = "p0",
applicationVersion = vkMakeVersion(1, 0, 0),
pEngineName = "engine_p0",
engineVersion = vkMakeVersion(1, 0, 0),
apiVersion = vkApiVersion1_3
)
var
exts = allocCStringArray(["VK_KHR_surface"
, "VK_EXT_debug_utils"
]
)
when defined linux:
exts[2] = "VK_KHR_xcb_surface"
when defined windows:
exts[2] = "VK_KHR_win32_surface"
var
instanceCreateInfo = newVkInstanceCreateInfo( pApplicationInfo = appInfo.addr
, enabledExtensionCount = 3 #TODO make dynamic
, ppEnabledExtensionNames = exts
#, enabledLayerCount = 0
#, ppEnabledLayerNames = val
, pNext = addr validationFeatures
)
vulkan_create_instance_result = vkCreateInstance( instanceCreateInfo.addr
, nil
, addr instance
)
#echo repr vulkan_create_instance_result
vulkan_record.instance = instance
when defined windows:
vkEnumerateInstanceExtensionProperties = cast[proc(pLayerName: cstring , pPropertyCount: ptr uint32 , pProperties: ptr VkExtensionProperties ): VkResult {.stdcall.}]
(vkGetProcAddress("vkEnumerateInstanceExtensionProperties"))
var extensionCount: uint32 = 0
discard vkEnumerateInstanceExtensionProperties( nil
, extensionCount.addr
, nil
)
var extensions = newSeq[VkExtensionProperties] ( extensionCount )
discard vkEnumerateInstanceExtensionProperties( nil
, extensionCount.addr
, extensions[0].addr
)
var
debugUtilsMessenger: VkDebugUtilsMessengerEXT
debugUtilsMessengerCI: VkDebugUtilsMessengerCreateInfoEXT
debugUtilsMessengerCI.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
debugUtilsMessengerCI.messageSeverity =
VkDebugUtilsMessageSeverityFlagsEXT bitor( VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT.int)
debugUtilsMessengerCI.messageType =
VkDebugUtilsMessageTypeFlagsEXT bitor( VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT.int
, VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT.int
, VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT.int)
debugUtilsMessengerCI.pfnUserCallback = debugUtilsMessengerCallback
vkCreateDebugUtilsMessengerEXT = cast[proc(instance: VkInstance, pCreateInfo: ptr VkDebugUtilsMessengerCreateInfoEXT , pAllocator: ptr VkAllocationCallbacks , pMessenger: ptr VkDebugUtilsMessengerEXT ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(vulkan_record.instance, "vkCreateDebugUtilsMessengerEXT"))
discard vkCreateDebugUtilsMessengerEXT(vulkan_record.instance, addr debugUtilsMessengerCI, nil, addr debugUtilsMessenger)
proc setup_vulkan*( portal: Portal
): Vulkan_Record =
result = Vulkan_Record( swapchain: Swapchain()
)
vkLoad1_0()
result.create_vulkan_instance()
loadVK_KHR_surface(result.instance)
loadVK_KHR_swapchain(result.instance)
result.gpu = result.instance.get_gpu
result.gpu.handle.getSupportedDepthFormat result.swapchain.depthFormat
result.createLogicalDevice
result.vk_device = result.logical_device
#result.current_descriptor_pool = create_descriptor_pool( result.vk_device )
when defined windows:
vkGetDeviceQueue = cast[proc(device: VkDevice, queueFamilyIndex: uint32, queueIndex: uint32, pQueue: ptr VkQueue ): void {.stdcall.}]
(vkGetInstanceProcAddr(result.instance
, "vkGetDeviceQueue"
)
)
#TODO: properly check and set default(?) q index for the family
vkGetDeviceQueue( result.vk_device
, result.qfi.graphics
, 0
, addr result.queue
)
#TODO: put this in a function
when defined linux:
vkCreateXcbSurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkXcbSurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}](vkGetProc("vkCreateXcbSurfaceKHR"))
vkGetPhysicalDeviceXcbPresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, connection: ptr xcb_connection_t , visual_id: xcb_visualid_t): VkBool32 {.stdcall.}](vkGetProc("vkGetPhysicalDeviceXcbPresentationSupportKHR"))
var surfaceCreateInfo: VkXcbSurfaceCreateInfoKHR
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
surfaceCreateInfo.connection = cast[ptr nvk.xcb_connection_t](portal.conn)
surfaceCreateInfo.window = cast[nvk.xcb_window_t](portal.window)
var surface_res = vkCreateXcbSurfaceKHR( result.instance
, addr surfaceCreateInfo
, nil
, addr result.swapchain.surface
)
assert surface_res == VK_SUCCESS, "surface_res failed: " & $surface_res
when defined windows:
vkCreateWin32SurfaceKHR = cast[proc(instance: VkInstance, pCreateInfo: ptr VkWin32SurfaceCreateInfoKHR , pAllocator: ptr VkAllocationCallbacks , pSurface: ptr VkSurfaceKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(result.instance
, "vkCreateWin32SurfaceKHR"
)
)
vkGetPhysicalDeviceWin32PresentationSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32): VkBool32 {.stdcall.}]
(vkGetInstanceProcAddr(result.instance
, "vkGetPhysicalDeviceWin32PresentationSupportKHR"
)
)
var surfaceCreateInfo: VkWin32SurfaceCreateInfoKHR
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
surfaceCreateInfo.hinstance = cast[nvk.HINSTANCE] ( addr portal.h_instance )
surfaceCreateInfo.hwnd = cast[nvk.HWND] (portal.hwnd)
var surface_res = vkCreateWin32SurfaceKHR( result.instance
, addr surfaceCreateInfo
, nil
, addr result.swapchain.surface
)
assert surface_res == VK_SUCCESS, "ERROR: vkCreateWin32SurfaceKHR is: " & $surface_res
result.gpu.handle.check_surface_support( result.swapchain
, result.qni
, result.instance
)
create_swapchain( result.vk_device
, result.swapchain
, result.gpu.handle
, result.current_viewport
)
#TODO: actually properly check device extensions exist on the used GPU
result.gpu.handle.check_gpu_extensions
result.create_logical_command_pool
result.draw_command_buffers = result.vk_device.create_command_buffers( result.command_pool
)
proc suballocate_vertex_buffer*( vulkan_record: var Vulkan_Record
, vertex_data: pointer
) =
copymem( vertex_data
, addr vulkan_record.master_vertex_buffer.data[vulkan_record.master_vertex_buffer.current_data_offset]
, Natural vertex_data.sizeof
)
# memcpy( &dst[dstIdx], &src[srcIdx], numElementsToCopy * sizeof( Element ) );
vulkan_record.master_vertex_buffer.current_data_offset += vertex_data.sizeof
proc suballocate_index_buffer*( vulkan_record: var Vulkan_Record
, index_data: pointer
) =
copymem( index_data
, addr vulkan_record.master_index_buffer.data[vulkan_record.master_index_buffer.current_data_offset]
, Natural index_data.sizeof
)
# memcpy( &dst[dstIdx], &src[srcIdx], numElementsToCopy * sizeof( Element ) );
vulkan_record.master_index_buffer.current_data_offset += index_data.sizeof
proc suballocate_uniform_buffer*( vulkan_record: var Vulkan_Record
, uniform_buffer_data: pointer
) =
# memcpy( &dst[dstIdx], &src[srcIdx], numElementsToCopy * sizeof( Element ) );
copyMem( uniform_buffer_data
, addr vulkan_record.master_uniform_buffer.data[vulkan_record.master_uniform_buffer.current_data_offset]
, sizeof uniform_buffer_data
)
vulkan_record.master_uniform_buffer.current_data_offset += uniform_buffer_data.sizeof
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
import vulkan
type
BoundImage* = ref object
image*: VkImage
imageMem*: VkDeviceMemory
Semaphores* = ref object
presentComplete*: VkSemaphore
renderComplete*: VkSemaphore
Swapchain_Buffer* = object
image*: VkImage
view*: VkImageView
QueueFamily* = object
graphics*: uint32
transfer*: uint32
compute*: uint32
sparse*: uint32
usingSparse*: bool
usingCompute*: bool
#[ GraphicsPipeline* = ref object
pipelineLayout*: VkPipelineLayout
pipeline*: VkPipeline ]#
import vulkan
, vulkan_utils
type
Uniform_Buffer_Object = object of RootObj
device_memory*: VkDeviceMemory
vk_buffer*: VkBuffer
# The descriptor set stores the resources bound to the binding points in a shader
# It connects the binding points of the different shaders with the buffers and images used for those bindings
descriptor_buffer_info*: VkDescriptorBufferInfo
descriptor_set*: VkDescriptorSet
# We keep a pointer to the mapped buffer, so we can easily update it's contents via a memcpy
data*: pointer
Uniform_Buffer* = ref object of Uniform_Buffer_Object
proc a_uniform_buffer*( vk_device: VkDevice
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
, buffer_usage_flags: VkBufferUsageFlags
, memory_flags: VkMemoryPropertyFlags
, allocation_size: VkDeviceSize
): Uniform_Buffer =
result = Uniform_Buffer()
var
allocation_info = VkMemoryAllocateInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
memory_allocation_flag_info = VkMemoryAllocateFlagsInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR)
mem_reqs: VkMemoryRequirements
buffer_info = VkBufferCreateInfo( sType: VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
, pNext: nil
, size: allocation_size
, usage: VkBufferUsageFlags VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
)
assert vkCreateBuffer( vk_device
, addr buffer_info
, nil
, addr result.vk_buffer
) == VK_SUCCESS
vkGetBufferMemoryRequirements( vk_device
, result.vk_buffer
, addr mem_reqs
)
allocation_info.allocationSize = mem_reqs.size
allocation_info.memoryTypeIndex = gpu_memory_properties.find_memory_with_property( mem_reqs.memoryTypeBits
, memory_flags
)
discard vkAllocateMemory( vk_device
, addr allocation_info
, nil
, addr result.device_memory
)
discard vkBindBufferMemory( vk_device
, result.vk_buffer
, result.device_memory
, VkDeviceSize 0
)
assert vkMapMemory( vk_device
, result.device_memory
, VkDeviceSize 0
, allocation_size
, VkMemoryMapFlags 0
, addr result.data
) == VK_SUCCESS
return result
import locks
type
TimeLine* = object
semaphore*: VkSemaphore
timeline*: uint64
TimeLineLock* = object
pending*: uint64
cond*: Cond
{.experimental: "codeReordering".}
import vulkan
, vkTypes
, depth_stencil
#, math
, bitops
#, ./utils/etc
, glm
import ../portal/[portalObj
]
type
Swapchain_Buffer* = ref object
image*: VkImage
image_view*: VkImageView
Swapchain* = ref object
handle*: VkSwapchainKHR
oldSwapchain*: VkSwapchainKHR
current_extent*: VkExtent2D
surface*: VkSurfaceKHR
images*: seq[VkImage]
buffers*: seq[Swapchain_Buffer]
#auxillary info
image_count*: uint32 # defalut = 3
surfaceCaps*: VkSurfaceCapabilitiesKHR
imageUsage*: VkImageUsageFlags
preTransform*: VkSurfaceTransformFlagBitsKHR
compositeAlpha*: VkCompositeAlphaFlagBitsKHR
the_presentation_mode*: VkPresentModeKHR
colorFormat*: VkFormat
colorSpace*: VkColorSpaceKHR
depth_format*: VkFormat
presentModeCount*: uint32
presentModes*: seq[VkPresentModeKHR]
surfaceFormat*: VkSurfaceFormatKHR
arrayLayers*: uint32
formats*: seq[VkSurfaceFormatKHR]
surfaceFormats*: seq[VkSurfaceFormatKHR]
proc check_surface_support*( gpu: VkPhysicalDevice
, sc: var SwapChain
, theQni: var uint32
, instance: VkInstance
) =
var
queueCount : uint32
formatCount: uint32
supportsPresent: seq[VkBool32]
gqni: uint32 = uint32.high
pqni: uint32 = uint32.high
when defined windows:
vkGetPhysicalDeviceQueueFamilyProperties = cast[proc(physicalDevice: VkPhysicalDevice, pQueueFamilyPropertyCount: ptr uint32 , pQueueFamilyProperties: ptr VkQueueFamilyProperties ): void {.stdcall.}]
(vkGetInstanceProcAddr( instance
, "vkGetPhysicalDeviceQueueFamilyProperties"
)
)
vkGetPhysicalDeviceSurfaceSupportKHR = cast[proc(physicalDevice: VkPhysicalDevice, queueFamilyIndex: uint32, surface: VkSurfaceKHR, pSupported: ptr VkBool32 ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceSurfaceSupportKHR"
)
)
vkGetPhysicalDeviceSurfaceFormatsKHR = cast[proc(physicalDevice: VkPhysicalDevice, surface: VkSurfaceKHR, pSurfaceFormatCount: ptr uint32 , pSurfaceFormats: ptr VkSurfaceFormatKHR ): VkResult {.stdcall.}]
(vkGetInstanceProcAddr(instance
, "vkGetPhysicalDeviceSurfaceFormatsKHR"
)
)
vkGetPhysicalDeviceQueueFamilyProperties(gpu, queueCount.addr, nil)
var queueProperties = newSeq[VkQueueFamilyProperties](queueCount)
vkGetPhysicalDeviceQueueFamilyProperties(gpu, queueCount.addr, queueProperties[0].addr)
if queueCount == 0: quit "ERROR: No Queue Families were found by `vkGetPhysicalDeviceQueueFamilyProperties`. \n Which means Vulkan has no way to actually submit things to the GPU to draw."
supportsPresent.setLen queueCount
for q in 0 ..< queueCount:
discard vkGetPhysicalDeviceSurfaceSupportKHR( gpu
, q.uint32
, sc.surface
, supportsPresent[q].addr
)
# find a q that can present and do graphics
for i in 0..<queueCount:
if bitand(queueProperties[i].queueFlags.int, VK_QUEUE_GRAPHICS_BIT.int) != 0:
if gqni == uint32.high: gqni = i
if supportsPresent[i].bool == true:
gqni = i
pqni = i
# no Q supports presenting and graphics
# find a separate one
if pqni == uint32.high:
for i in 0..queueCount:
if supportsPresent[i].bool == true: pqni = i
if gqni == uint32.high or
pqni == uint32.high: quit "ERROR: No valid Queue was found, so no GPU work can be done."
if pqni != gqni:
echo "WARNING: The present queue and graphics queue are not the same."
echo "WARNING: The present queue and graphics queue are not the same."
echo "WARNING: The present queue and graphics queue are not the same."
echo "WARNING: The present queue and graphics queue are not the same."
theQni = gqni
#Find supported surface formats
discard vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, sc.surface, formatCount.addr, nil)
if formatCount == 0: quit "ERROR: No surface formats found by `vkGetPhysicalDeviceSurfaceFormatsKHR` \n Which Vulkan needs in order to organize and construct a frame for the GPU "
sc.formats.setLen formatCount
discard vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, sc.surface, formatCount.addr, addr sc.formats[0])
# The surface has no preferred format, so we assume VK_FORMAT_B8G8R8A8_UNORM
# TODO: Something better?
if formatCount == 1 and sc.formats[0].format == VK_FORMAT_UNDEFINED:
sc.colorFormat = VK_FORMAT_B8G8R8A8_UNORM
sc.colorSpace = sc.formats[0].colorSpace
else:
var found: bool
for sformat in sc.formats:
if sformat.format == VK_FORMAT_B8G8R8A8_UNORM:
sc.colorFormat = sformat.format
sc.colorSpace = sformat.colorSpace
found = true
break
if not found:
echo "WARNING: NOT FOUND: VK_FORMAT_B8G8R8A8_UNORM"
echo "USING: ", $sc.formats[0].format
echo "USING: ", $sc.formats[0].colorSpace
sc.colorFormat = sc.formats[0].format
sc.colorSpace = sc.formats[0].colorSpace
proc create_swapchain*( device: VkDevice
, sc: var Swapchain
, gpu: VkPhysicalDevice
, current_viewport: var VkViewport
) =
var oldswap = sc.oldSwapchain
var gpu_surface_capabilities_result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR( gpu
, sc.surface
, sc.surfaceCaps.addr
)
#echo "gpu_surface_capa result: " & $gpu_surface_capabilities_result
discard gpu.vkGetPhysicalDeviceSurfacePresentModesKHR( sc.surface
, addr sc.presentModeCount
, nil
)
assert(sc.presentModeCount > 0)
sc.presentModes.setLen sc.presentModeCount
discard gpu.vkGetPhysicalDeviceSurfacePresentModesKHR( sc.surface
, addr sc.presentModeCount
, addr sc.presentModes[0]
)
sc.the_presentation_mode = VK_PRESENT_MODE_MAILBOX_KHR
# vulkan special value -> the size of the surface will be set by the swapchain
if sc.surfaceCaps.currentExtent.width == uint 0xFFFFFFFF:
echo "0xFFFFFFFFFFFFFFFFFF"
#sc.extent.width = .theWindowWidth
#sc.extent.height = .theWindowHeight
else:
sc.current_extent = sc.surfaceCaps.currentExtent
current_viewport = VkViewport( width: float32 sc.surfaceCaps.currentExtent.width
, height: (float32 sc.surfaceCaps.currentExtent.height)
, minDepth: 0.0f
, maxDepth: 1.0f
)
#rec.swapchain.current_extent.width = int sc.surfaceCaps.currentExtent.width
#rec.swapchain.current_extent.height = int sc.surfaceCaps.currentExtent.height
var
desired_number_of_swapchain_images = sc.surfaceCaps.minImageCount + 1 #(?) 3
compositeAlpha:VkCompositeAlphaFlagBitsKHR = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
compositeAlphaFlags = [ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
, VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
, VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
, VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
]
# determine number of images
if sc.surfaceCaps.maxImageCount > 0 and
desired_number_of_swapchain_images > sc.surfaceCaps.maxImageCount:
desired_number_of_swapchain_images = sc.surfaceCaps.maxImageCount
# find transform of the surface
if bitand( sc.surfaceCaps.supportedTransforms.int
, VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR.int
) == 1:
sc.preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
else:
echo "ERROR: bitand(scSupportDetails.capabilities.supportedTransforms.int, VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR.int) == 1 -> FAILED"
sc.preTransform = sc.surfaceCaps.currentTransform
# find alpha format
for flag in compositeAlphaFlags:
if bitand(sc.surfaceCaps.supportedCompositeAlpha.int, flag.int) == 1:
compositeAlpha = flag
break
var createInfo = VkSwapchainCreateInfoKHR(
sType: VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
, surface: sc.surface
, minImageCount: desired_number_of_swapchain_images
, imageFormat: sc.colorFormat
, imageColorSpace: sc.colorSpace
, imageExtent: sc.current_extent
, imageUsage: VkImageUsageFlags bitor( VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT.int
, VK_IMAGE_USAGE_TRANSFER_SRC_BIT.int
, VK_IMAGE_USAGE_TRANSFER_DST_BIT.int
)
, preTransform: VkSurfaceTransformFlagBitsKHR sc.preTransform
, imageArrayLayers: 1
, imageSharingMode: VK_SHARING_MODE_EXCLUSIVE
, queueFamilyIndexCount: 0
, presentMode: VK_PRESENT_MODE_FIFO_KHR #TODO sc.the_presentation_mode # need to do this proper later
, oldSwapChain: oldswap
, clipped: VKBool32 VK_TRUE
, compositeAlpha: compositeAlpha
)
var scres = vkCreateSwapChainKHR( device
, addr createInfo
, nil
, addr sc.handle
)
if scres != VK_SUCCESS: quit $scres
discard vkGetSwapchainImagesKHR( device
, sc.handle
, addr sc.image_count
, nil
)
sc.images.setLen sc.image_count
discard vkGetSwapchainImagesKHR( device
, sc.handle
, addr sc.image_count
, addr sc.images[0]
)
sc.buffers.setLen sc.image_count
for buffer in sc.buffers.mitems:
buffer = Swapchain_Buffer()
sc.colorFormat = VK_FORMAT_B8G8R8A8_UNORM
sc.image_count = sc.image_count
for i in 0 ..< sc.image_count:
var createInfo = VkImageViewCreateInfo( sType: VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
, viewType: VK_IMAGE_VIEW_TYPE_2D
, format: sc.colorFormat
, flags: VkImageViewCreateFlags 0
, components: VkComponentMapping( r: VkComponentSwizzle.VK_COMPONENT_SWIZZLE_R
, g: VkComponentSwizzle.VK_COMPONENT_SWIZZLE_G
, b: VkComponentSwizzle.VK_COMPONENT_SWIZZLE_B
, a: VkComponentSwizzle.VK_COMPONENT_SWIZZLE_A
)
, image: sc.images[i]
, subresourceRange: VkImageSubresourceRange(
aspectMask: VkImageAspectFlags(VK_IMAGE_ASPECT_COLOR_BIT)
, baseMipLevel: 0
, levelCount: 1
, baseArrayLayer: 0
, layerCount: 1
)
)
sc.buffers[i].image = sc.images[i]
create_info.image = sc.buffers[i].image
var
image_view_result = vkCreateImageView( device
, createInfo.addr
, nil
, addr sc.buffers[i].image_view
)
assert image_view_result == VK_SUCCESS, "vkCreateImageView failed"
if (sc.oldSwapchain.int != VkSwapchainKHR(0).int):
for i in 0 ..< sc.image_count: vkDestroyImageView( device
, sc.buffers[i].image_view
, nil
)
vkDestroySwapchainKHR( device
, sc.oldSwapchain
, nil
)
#[ proc anImageView*( device: VkDevice
, sc: var SwapChain
, rebuilding: bool = false
) =
if rebuilding:
sc.images.setLen 0
discard vkGetSwapchainImagesKHR(device, sc.handle, addr sc.image_count, nil)
sc.images.setLen sc.image_count
discard vkGetSwapchainImagesKHR(device, sc.handle, sc.image_count.addr, addr sc.images[0])
sc.buffers.setLen sc.image_count
for b in 0..<sc.buffers.len:
sc.buffers[b] = SwapChain_Buffer()
sc.colorFormat = VK_FORMAT_B8G8R8A8_UNORM
sc.image_count = sc.image_count
for i in 0 ..< sc.image_count:
var createInfo = VkImageViewCreateInfo( sType: VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
, viewType: VK_IMAGE_VIEW_TYPE_2D
, format: sc.colorFormat
, flags: VkImageViewCreateFlags 0
, components: VkComponentMapping( r: VK_COMPONENT_SWIZZLE_IDENTITY
, g: VK_COMPONENT_SWIZZLE_IDENTITY
, b: VK_COMPONENT_SWIZZLE_IDENTITY
, a: VK_COMPONENT_SWIZZLE_IDENTITY
)
, subresourceRange: VkImageSubresourceRange(
aspectMask: VkImageAspectFlags(VK_IMAGE_ASPECT_COLOR_BIT)
, baseMipLevel: 0
, levelCount: 1
, baseArrayLayer: 0
, layerCount: 1
)
)
sc.buffers[i].image = sc.images[i]
createInfo.image = sc.buffers[i].image
if vkCreateImageView( device
, createInfo.addr
, nil
, sc.buffers[i].view.addr
) != VK_SUCCESS: quit("failed to create image view") ]#
proc create_frame_buffers*( vk_device: VkDevice
, frame_buffers: var seq[VkFramebuffer]
, render_pass: var VkRenderPass
, swapchain: var Swapchain
, depth_stencil: var Depth_Stencil
, rebuilding = false
) =
if rebuilding:
frame_buffers.setLen 0
frame_buffers.setLen swapchain.image_count
#echo frame_buffers.len
for i in 0 ..< frame_buffers.len:
var attachments: array[2, VkImageView]
# Depth/Stencil attachment is the same for all frame buffers
attachments[0] = swapchain.buffers[i].image_view
attachments[1] = depth_stencil.view
var frameBufferCreateInfo = VkFramebufferCreateInfo(
sType: VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
, pNext: nil
, render_pass: render_pass
, attachmentCount: uint32 attachments.len
, pAttachments: addr attachments[0]
, width: uint32 swapchain.current_extent.width
, height: uint32 swapchain.current_extent.height
, layers: 1
)
assert vkCreateFramebuffer( vk_device
, addr frameBufferCreateInfo
, nil
, addr frame_buffers[i]
) == VK_SUCCESS
#echo repr frame_buffers
#TODO: we need to somehow get Scene in this without recursive dep errors
# so we can rebuild render_Pass_Begin_info toooo
proc rebuild*( vk_device: VkDevice
, frame_buffers: var seq[VkFramebuffer]
, render_pass: var VkRenderPass
, swapchain: var Swapchain
, depth_stencil: var Depth_Stencil
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
) =
vk_device.destroyDepthStencil depth_stencil
#[ depth_stencil = create_depth_stencil( vk_device
, swapchain.color_format
, swapchain.current_extent
, gpu_memory_properties
) ]#
frame_buffers.setLen 0
frame_buffers.setLen swapchain.image_count
for i in 0 ..< frame_buffers.len:
var attachments: array[2, VkImageView]
# Depth/Stencil attachment is the same for all frame buffers
attachments[0] = swapchain.buffers[i].image_view
attachments[1] = depth_stencil.view
var frameBufferCreateInfo = VkFramebufferCreateInfo(
sType: VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
, pNext: nil
, render_pass: render_pass
, attachmentCount: 2
, pAttachments: addr attachments[0]
, width: swapchain.current_extent.width
, height: swapchain.current_extent.height
, layers: 1
)
if vkCreateFramebuffer( vk_device
, addr frameBufferCreateInfo
, nil
, addr frame_buffers[i]
) != VK_SUCCESS: quit "bad framebiuffer create"
#[ for shape in scene.shapes.mitems:
#rec.setupDescrSetLayout shape
shapes.prepPipeline( rec
, scene.render_pass
, shape.graphicsPipeline
, shape.hollow
, shape.kind
)
for text in scene.texts.mitems:
rec.setupDescrSetLayout text
textM.prepPipeline( rec
, render_pass
, text.graphicsPipeline
) ]#
#rec.build scene
import vulkan
, vkTypes
proc create_vulkan_semaphores*( vulkan_device: VkDevice
, the_present_semaphores: var array[2, VkSemaphore]
, the_render_semaphores: var array[2, VkSemaphore]
) =
var
semaphore_create_info = VkSemaphoreCreateInfo( sType: VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
, pNext: nil
)
for i in 0..1:
discard vkCreateSemaphore( vulkan_device
, addr semaphore_create_info
, nil
, addr the_present_semaphores[i]
)
discard vkCreateSemaphore( vulkan_device
, addr semaphore_create_info
, nil
, addr the_render_semaphores[i]
)
import vulkan
, bitops
, render_pass
proc create_color_only_render_pass*( device: VkDevice
, color_format: VkFormat
): Render_Pass =
result = A_Render_Pass()
var
color_attachment = VkAttachmentDescription( format: color_format
, samples: VK_SAMPLE_COUNT_1_BIT
, loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR
, storeOp: VK_ATTACHMENT_STORE_OP_STORE
, stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE
, stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE
, initialLayout: VK_IMAGE_LAYOUT_UNDEFINED
, finalLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
)
color_attachment_reference = VkAttachmentReference( attachment: 0
, layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
)
subpass = VkSubpassDescription( pipelineBindPoint: VK_PIPELINE_BIND_POINT_GRAPHICS
, colorAttachmentCount: 1
, pColorAttachments: addr color_attachment_reference
)
render_pass_info = VkRenderPassCreateInfo( sType: VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
, attachmentCount: 1
, pAttachments: addr color_attachment
, subpassCount: 1
, pSubpasses: addr subpass
, dependencyCount: 1
)
dependency = VkSubpassDependency( srcSubpass: VK_SUBPASS_EXTERNAL #External means outside of the render pipeline, in srcPass, it means before the render pipeline
, dstSubpass: 0 #must be higher than srcSubpass
, srcStageMask: VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
, srcAccessMask: VkAccessFlags 0
, dstStageMask: VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
, dstAccessMask: VkAccessFlags bitor( VK_ACCESS_COLOR_ATTACHMENT_READ_BIT.ord
, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT.ord
)
)
render_pass_info.pDependencies = addr dependency
var
res: VkResult = vkCreateRenderPass( device
, addr render_pass_info
, nil
, addr result.vk_handle
)
assert res == VK_SUCCESS
, "create_color_only_render_pass FAILED: " & $res
proc create_basic_shape_render_pass*( device: VkDevice
, color_format: VkFormat
, depth_format: VkFormat
): Render_Pass =
result = A_Render_Pass()
var
attachments: array[2,VkAttachmentDescription]
subpass_dependencies: array[2,VkSubpassDependency]
color_attachment_reference = VkAttachmentReference( attachment: 0
, layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
)
depth_attachment_reference = VkAttachmentReference( attachment: 1
, layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
)
subpass = VkSubpassDescription( pipelineBindPoint: VK_PIPELINE_BIND_POINT_GRAPHICS
, colorAttachmentCount: 1
, pColorAttachments: addr color_attachment_reference
, pDepthStencilAttachment: addr depth_attachment_reference # Reference to the depth attachment in slot 1
, inputAttachmentCount: 0 # Input attachments can be used to sample from contents of a previous subpass
, pInputAttachments: nil # (Input attachments not used by this example)
, preserveAttachmentCount: 0 # Preserved attachments can be used to loop (and preserve) attachments through subpasses
, pPreserveAttachments: nil # (Preserve attachments not used by this example)
, pResolveAttachments: nil # Resolve attachments are resolved at the end of a sub pass and can be used for e.g. multi sampling
)
attachment_description = VkAttachmentDescription( format: color_format
, samples: VK_SAMPLE_COUNT_1_BIT
, loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR
, storeOp: VK_ATTACHMENT_STORE_OP_STORE
, stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE
, stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE
, initialLayout: VK_IMAGE_LAYOUT_UNDEFINED
, finalLayout: VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
)
# depth
subpass_dependencies[0] = VkSubpassDependency( srcSubpass: VK_SUBPASS_EXTERNAL #External means outside of the render pipeline, in srcPass, it means before the render pipeline
, dstSubpass: 0 #must be higher than srcSubpass
, srcStageMask: VkPipelineStageFlags bitor( VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT.ord
, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT.ord
)
, dstStageMask: VkPipelineStageFlags bitor( VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT.ord
, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT.ord
)
, srcAccessMask: VkAccessFlags VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, dstAccessMask: VkAccessFlags bitor( VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT.ord
, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT.ord
)
)
subpass_dependencies[1] = VkSubpassDependency( srcSubpass: VK_SUBPASS_EXTERNAL
, dstSubpass: 0
, srcStageMask: VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
, dstStageMask: VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
, srcAccessMask: VkAccessFlags 0
, dstAccessMask: VkAccessFlags bitor( VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT.ord
, VK_ACCESS_COLOR_ATTACHMENT_READ_BIT.ord
)
, dependencyFlags: VkDependencyFlags 0
)
# Color attachment
attachments[0].format = colorFormat # Use the color format selected by the swapchain
attachments[0].samples = VK_SAMPLE_COUNT_1_BIT # We don't use multi sampling in this example
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR # Clear this attachment at the start of the render pass
attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE # Keep its contents after the render pass is finished (for displaying it)
attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE # We don't use stencil, so don't care for load
attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE # Same for store
attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED # Layout at render pass start. Initial doesn't matter, so we use undefined
attachments[0].finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR # Layout to which the attachment is transitioned when the render pass is finished
# As we want to present the color buffer to the swapchain, we transition to PRESENT_KHR
# Depth attachment
attachments[1].format = depthFormat # A proper depth format is selected in the example base
attachments[1].samples = VK_SAMPLE_COUNT_1_BIT
attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR # Clear depth at start of first subpass
attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE # We don't need depth after render pass has finished (DONT_CARE may result in better performance)
attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE # No stencil
attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE # No Stencil
attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED # Layout at render pass start. Initial doesn't matter, so we use undefined
attachments[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL # Transition to depth/stencil attachment
var render_pass_info = VkRenderPassCreateInfo( sType: VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
, attachmentCount: 2
, subpassCount: 1
, pSubpasses: addr subpass
, dependencyCount: 1
, pAttachments: addr attachments[0]
, pDependencies: addr subpass_dependencies[0]
)
render_pass_info.pDependencies = addr subpass_dependencies[0]
var res: VkResult = vkCreateRenderPass( device
, addr render_pass_info
, nil
, addr result.vk_handle
)
assert res == VK_SUCCESS
, "create_color_only_render_pass FAILED: " & $res
import vulkan
type
Render_Pass* = ref object
vk_handle*: VkRenderPass
proc A_Render_Pass*(
): Render_Pass =
result = Render_Pass(
)
import vulkan
, vulkan_record
, pipeline_record
, graphics_pipeline
proc show*( vulkan_record: var Vulkan_Record
, pipeline_record: Pipeline_Record
) =
var
cmdBufInfo = VkCommandBufferBeginInfo(sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
scissor: VkRect2D
clearValues: array[2,VkClearValue]
renderPassBeginInfo: VkRenderPassBeginInfo
imageRange = VkImageSubresourceRange( aspectMask: VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
, levelCount: 1
, layerCount: 1
)
discard vkResetFences( vulkan_record.vk_device
, 1
, addr vulkan_record.fences[vulkan_record.current_frame]
)
if vulkan_record.current_frame_buffer > 1:
vulkan_record.current_frame_buffer = 1
discard vkResetCommandBuffer( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, VkCommandBufferResetFlags 0
)
scissor.extent.width = uint32 vulkan_record.swapchain.current_extent.width
scissor.extent.height = uint32 vulkan_record.swapchain.current_extent.height
#scissor.offset.x = 0
#scissor.offset.y = 0
clearValues[0].color = VkClearColorValue(float32: [1f, 0f, 0f, 1f])
clearValues[1].depth_stencil = VkClearDepthStencilValue(depth: 1.0f, stencil: 0 )
renderPassBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
renderPassBeginInfo.pNext = nil
renderPassBeginInfo.renderArea.offset.x = 0
renderPassBeginInfo.renderArea.offset.y = 0
renderPassBeginInfo.renderArea.extent.width = uint32 vulkan_record.swapchain.current_extent.width
renderPassBeginInfo.renderArea.extent.height = uint32 vulkan_record.swapchain.current_extent.height
renderPassBeginInfo.clearValueCount = 2
renderPassBeginInfo.pClearValues = addr clearValues[0]
renderPassBeginInfo.renderPass = vulkan_record.current_render_pass.vk_handle
renderPassBeginInfo.framebuffer = vulkan_record.frame_buffers[vulkan_record.current_image_index]
discard vkBeginCommandBuffer( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, addr cmdBufInfo
)
vkCmdSetViewport( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, 0
, 1
, addr vulkan_record.current_viewport
)
vkCmdSetScissor( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, 0
, 1
, addr scissor
)
vkCmdClearColorImage( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, vulkan_record.swapchain.images[vulkan_record.current_frame_buffer]
, VK_IMAGE_LAYOUT_GENERAL
, addr clearValues[0].color
, 1
, addr imageRange
)
vkCmdBeginRenderPass( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, addr renderPassBeginInfo
, VK_SUBPASS_CONTENTS_INLINE
)
var
offsets = VkDeviceSize 0
#[ vkCmdBindDescriptorSets( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, VK_PIPELINE_BIND_POINT_GRAPHICS
, pipeline_record.pipelines["test"].pipeline_layout
, 0
, 1
, addr descriptor_set
, 0, nil
)
]#
vkCmdEndRenderPass vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
discard vkEndCommandBuffer vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
vulkan_record.ready_frame = true
proc submit_frame*( image_index: var uint32
, render_complete_semaphore: VkSemaphore
, queue: VkQueue
, current_swapchain_handle: VkSwapchainKHR
) =
var
presentInfo: VkPresentInfoKHR
presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
presentInfo.pNext = nil
presentInfo.waitSemaphoreCount = 1
presentInfo.pWaitSemaphores = addr render_complete_semaphore
presentInfo.swapchainCount = 1
presentInfo.pSwapchains = addr current_swapchain_handle
present_info.pImageIndices = addr image_index
# Check if a wait semaphore has been specified to wait for
# before presenting the image
if (render_complete_semaphore.int != 0):
presentInfo.pWaitSemaphores = addr render_complete_semaphore
presentInfo.waitSemaphoreCount = 1
#TODO: WHY DOES THIS MEMORY LEAK EVERY FRAME
var preres = vkQueuePresentKHR( queue
, addr presentInfo
)
#if preres == VK_SUBOPTIMAL_KHR: quit "bad vkQueuePresentKHR"
# vulkan_record.windowResize scene
# scene.rebuild vulkan_record
# discard vkDeviceWaitIdle vulkan_record.vk_device
# vulkan_record.ready_frame = true
proc send_frame*( vulkan_record: var Vulkan_Record
) =
#prep frame
discard vkWaitForFences( vulkan_record.vk_device
, 1
, addr vulkan_record.fences[vulkan_record.current_frame]
, VKBool32 true
, uint64.high
)
var
res = vkAcquireNextImageKHR( vulkan_record.vk_device
, vulkan_record.swap_chain.handle
, uint64.high
, vulkan_record.present_semaphores[vulkan_record.current_frame]
, VkFence 0
, addr vulkan_record.current_image_index
)
if res == VK_ERROR_OUT_OF_DATE_KHR: discard
#resize_screen()
# show l#
discard vkResetFences( vulkan_record.vk_device
, 1
, addr vulkan_record.fences[vulkan_record.current_frame]
)
discard vkResetCommandBuffer( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, VkCommandBufferResetFlags 0
)
var
cmdBufInfo = VkCommandBufferBeginInfo(sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
scissor: VkRect2D
clearValues: array[2,VkClearValue]
renderPassBeginInfo: VkRenderPassBeginInfo
imageRange = VkImageSubresourceRange( aspectMask: VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
, levelCount: 1
, layerCount: 1
)
scissor.extent.width = uint32 vulkan_record.swapchain.current_extent.width
scissor.extent.height = uint32 vulkan_record.swapchain.current_extent.height
#scissor.offset.x = 0
#scissor.offset.y = 0
clearValues[0].color = VkClearColorValue(float32: [1f, 0f, 0f, 1f])
clearValues[1].depth_stencil = VkClearDepthStencilValue(depth: 1.0f, stencil: 0 )
renderPassBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
renderPassBeginInfo.pNext = nil
renderPassBeginInfo.renderArea.offset.x = 0
renderPassBeginInfo.renderArea.offset.y = 0
renderPassBeginInfo.renderArea.extent.width = uint32 vulkan_record.swapchain.current_extent.width
renderPassBeginInfo.renderArea.extent.height = uint32 vulkan_record.swapchain.current_extent.height
renderPassBeginInfo.clearValueCount = 2
renderPassBeginInfo.pClearValues = addr clearValues[0]
renderPassBeginInfo.renderPass = vulkan_record.current_render_pass.vk_handle
renderPassBeginInfo.framebuffer = vulkan_record.frame_buffers[vulkan_record.current_image_index]
discard vkBeginCommandBuffer( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, addr cmdBufInfo
)
vkCmdBeginRenderPass( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, addr renderPassBeginInfo
, VK_SUBPASS_CONTENTS_INLINE
)
vkCmdSetViewport( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, 0
, 1
, addr vulkan_record.current_viewport
)
vkCmdSetScissor( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, 0
, 1
, addr scissor
)
vkCmdBindDescriptorSets( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, VK_PIPELINE_BIND_POINT_GRAPHICS
, vulkan_record.current_graphics_pipeline.pipelineLayout
, 0
, 1
, addr vulkan_record.uniform_buffers[vulkan_record.current_frame_buffer].descriptor_set
, 0
, nil
)
# Bind the rendering pipeline
# The pipeline (state object) contains all states of the rendering pipeline, binding it will set all the states specified at pipeline creation time
vkCmdBindPipeline( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, VK_PIPELINE_BIND_POINT_GRAPHICS
, vulkan_record.current_graphics_pipeline.pipeline
)
# Bind triangle vertex buffer (contains position and colors)
var offsets: array[1, VkDeviceSize] = [VkDeviceSize 0]
#[ vkCmdBindVertexBuffers(vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, 0
, 1
, &vertices.buffer
, offsets
)
# Bind triangle index buffer
vkCmdBindIndexBuffer( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, indices.buffer
, 0
, VK_INDEX_TYPE_UINT32
)
# Draw indexed triangle
vkCmdDrawIndexed( vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, indices.count
, 1
, 0
, 0
, 1
) ]#
vkCmdEndRenderPass vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
discard vkEndCommandBuffer vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
# show l#
var
waitStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
submitInfo = VkSubmitInfo( sType: VK_STRUCTURE_TYPE_SUBMIT_INFO
, pWaitDstStageMask: addr waitStageMask
, pWaitSemaphores: addr vulkan_record.present_semaphores[vulkan_record.current_frame]
, waitSemaphoreCount: 1
, pSignalSemaphores: addr vulkan_record.render_semaphores[vulkan_record.current_frame]
, commandBufferCount: 1
, pCommandBuffers: addr vulkan_record.draw_command_buffers[vulkan_record.current_frame_buffer]
, signalSemaphoreCount: 1
)
discard vkQueueSubmit( vulkan_record.queue
, 1
, submitInfo.addr
, vulkan_record.fences[vulkan_record.current_frame]
)
if vulkan_record.current_frame == 2:
vulkan_record.current_frame = 1
submit_frame( vulkan_record.current_image_index
, vulkan_record.render_semaphores[vulkan_record.current_frame]
, vulkan_record.queue
, vulkan_record.swapchain.handle
)
type
RenderRecObj = ref object of RootObj
hasSwapChain*: bool
RenderRec* = object of RenderRecObj
# import vulkan
# , device
# , q
# #[
# // A list of present modes in order of priority (vector[0] has high priority, vector[size-1] has low priority)
# std::vector<VkPresentModeKHR> present_mode_priority_list =
# {
# VK_PRESENT_MODE_FIFO_KHR,
# VK_PRESENT_MODE_MAILBOX_KHR
# };
# // A list of surface formats in order of priority (vector[0] has high priority, vector[size-1] has low priority)
# std::vector<VkSurfaceFormatKHR> surface_format_priority_list = {
# {VK_FORMAT_R8G8B8A8_SRGB, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_B8G8R8A8_SRGB, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR}};
# ]#
# const bufferPoolBlockSize: uint32 = 256
# type
# RenderFrameObj = object of RootObj
# surface_extent*: VkExtent2D
# device*: Device
# q*: Queue
# swapchain_properties*: SwapchainProperties
# prepared*: bool
# active*: bool
# currFrameInd*: uin32
# framePtrs*: seq[ptr RenderFrames]
# theSemaphore*: VkSemaphore
# # VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
# preTransform*: VkSurfaceTransformFlagBitsKHR
# RenderFrame* = ref object of RenderFrameObj
# proc aDevice: VkDevice = nil
# proc aFence: VkFence = nil
import vulkan
, graphics_pipeline
import std/tables
import ../utils/etc
type
Pipeline_Record_Obj = object of RootObj
pipelines*: Table[string, Graphics_Pipeline]
Pipeline_Record* = ref object of Pipeline_Record_Obj
proc add*( pipeline_record: var Pipeline_Record
, graphics_pipeline: Graphics_Pipeline
) =
#echo string_of graphics_pipeline
pipeline_record.pipelines[string_of graphics_pipeline] = graphics_pipeline
# import vulkan
# , bitops
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
import vulkan
, buffer
, swapchain
, depth_stencil
, render_pass
, render_passes
, uniform_buffer
, vulkan_utils
import std/os
import glm
#import ../drawable/shape_types
type
Render_Update_Stage* = enum
Never, Always, Pre, Normal, Post, Render
Vertex* = object
position*: array[3,float32]
color*: array[3, float32]
#texture_coordinates*: array[3, float32]
Graphics_Pipeline_Obj = object of RootObj
#Mode mode
#Shader* shader
pipeline_stage*: Render_Update_Stage
shader_stages*: seq[string]
#shader_defines*: Shader_Define
#depth*: Depth
pushDescriptors*: bool
dynamic_states*: seq[VkDynamicState]
shader_modules*: seq[VkShaderModule]
shaders*: seq[string]
pipeline*: VkPipeline
pipeline_layout*: VkPipelineLayout
pipeline_layout_create_info*: VkPipelineLayoutCreateInfo
pipelineBindPoint*: VkPipelineBindPoint
descriptor_pool*: VkDescriptorPool
descriptor_set*: VkDescriptorSet
descriptor_set_layout*: VkDescriptorSetLayout
depth_stencil*: Depth_Stencil
topology*: VkPrimitiveTopology
polygonMode*: VkPolygonMode
cullMode*: VkCullModeFlags
frontFace*: VkFrontFace
render_pass*: Render_Pass
blend_attachment_states*: array[1, VkPipelineColorBlendAttachmentState]
pipeline_shader_stages*: seq[VkPipelineShaderStageCreateInfo]
vertexInputStateCreateInfo*: VkPipelineVertexInputStateCreateInfo
inputAssemblyState*: VkPipelineInputAssemblyStateCreateInfo
rasterizationState*: VkPipelineRasterizationStateCreateInfo
colourBlendState*: VkPipelineColorBlendStateCreateInfo
depthStencilState*: VkPipelineDepthStencilStateCreateInfo
viewportState*: VkPipelineViewportStateCreateInfo
multisampleState*: VkPipelineMultisampleStateCreateInfo
dynamicState*: VkPipelineDynamicStateCreateInfo
tessellationState*: VkPipelineTessellationStateCreateInfo
render_pass_begin_info *: VkRenderPassBeginInfo
Graphics_Pipeline* = ref object of Graphics_Pipeline_Obj
proc a_graphics_pipeline*( vk_device: VkDevice
, swapchain: Swapchain
, descriptor_buffer_info: VkDescriptorBufferInfo
, pipeline_cache: var VkPipelineCache
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
, shaders: seq[string] = @[]
, hollow: bool = false
, make_depth_stencil: bool = false
): Graphics_Pipeline =
var shader_stages: seq[VkPipelineShaderStageCreateInfo]
shader_stages.setLen shaders.len
result = Graphics_Pipeline( descriptor_pool: create_descriptor_pool( vk_device )
, descriptor_set_layout: create_descriptor_set_layout( vk_device )
, render_pass: create_basic_shape_render_pass( vk_device
, swapchain.color_format
, swapchain.depth_format
)
)
if make_depth_stencil:
result.depth_stencil = create_depth_stencil( vk_device
, swapchain.color_format
, swapchain.depth_format
, swapchain.current_extent
, gpu_memory_properties
)
result.pipeline_layout = create_pipeline_layout( vk_device
, result.descriptor_set_layout
, 0
)
result.descriptor_set = create_descriptor_sets( vk_device
, result.descriptor_set_layout
, result.descriptor_pool
, descriptor_buffer_info
)
var
topo: VkPrimitiveTopology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
pMode: VkPolygonMode = VK_POLYGON_MODE_FILL
var
pipeline_info = VkGraphicsPipelineCreateInfo(
sType: VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
, layout: result.pipeline_layout
, render_pass: result.render_pass.vk_handle
#subpass: 0,
#basePipelineHandle: VkPipeline(VK_NULL_HANDLE), # optional
#basePipelineIndex: -1, # optional
)
#Input assembly state describes how primitives are assembled
#This pipeline will assemble vertex data as a triangle lists (though we only use one triangle)
inputAssembly = VkPipelineInputAssemblyStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
, topology: topo
#primitiveRestartEnable: VkBool32(VK_FALSE),
)
rasterizer = VkPipelineRasterizationStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
, depthClampEnable: VkBool32(VK_FALSE)
, rasterizerDiscardEnable: VkBool32(VK_FALSE)
, polygonMode: pMode
, lineWidth: 1.float32
, cullMode: VkCullModeFlags VK_CULL_MODE_NONE
, frontFace: VK_FRONT_FACE_COUNTER_CLOCKWISE
, depthBiasEnable: VkBool32(VK_FALSE)
# , depthBiasConstantFactor: 0f # optional
# , depthBiasClamp: 0f # optional
# , depthBiasSlopeFactor: 0f # optional
)
#[
VK_BLEND_FACTOR_ZERO = 0
VK_BLEND_FACTOR_ONE = 1
VK_BLEND_FACTOR_SRC_COLOR = 2
VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3
VK_BLEND_FACTOR_DST_COLOR = 4
VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5
VK_BLEND_FACTOR_SRC_ALPHA = 6
VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7
VK_BLEND_FACTOR_DST_ALPHA = 8
VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9
VK_BLEND_FACTOR_CONSTANT_COLOR = 10
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11
VK_BLEND_FACTOR_CONSTANT_ALPHA = 12
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13
VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14
VK_BLEND_FACTOR_SRC1_COLOR = 15
VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16
VK_BLEND_FACTOR_SRC1_ALPHA = 17
VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
]#
# Assume Alpha Blending
colorBlendAttachment = VkPipelineColorBlendAttachmentState(
blendEnable: VKBool32 VK_TRUE
, srcColorBlendFactor: VkBlendFactor VK_BLEND_FACTOR_SRC_ALPHA
, dstColorBlendFactor: VkBlendFactor VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
, colorBlendOp: VkBlendOp VK_BLEND_OP_ADD
, srcAlphaBlendFactor: VkBlendFactor VK_BLEND_FACTOR_ONE
, dstAlphaBlendFactor: VkBlendFactor VK_BLEND_FACTOR_ZERO
, alphaBlendOp: VkBlendOp VK_BLEND_OP_ADD
, colorWriteMask: VkColorComponentFlags VK_COLOR_COMPONENT_R_BIT.ord or
VK_COLOR_COMPONENT_G_BIT.ord or
VK_COLOR_COMPONENT_B_BIT.ord or
VK_COLOR_COMPONENT_A_BIT.ord
)
colorBlending = VkPipelineColorBlendStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
, logicOpEnable: VkBool32(VK_FALSE)
, logicOp: VK_LOGIC_OP_COPY # optional
, attachmentCount: 1
, pAttachments: colorBlendAttachment.addr
, blendConstants: [0f, 0f, 0f, 0f] # optional
)
# Enable dynamic states
# Most states are baked into the pipeline, but there are still a few dynamic states that can be changed within a command buffer
# To be able to change these we need do specify which dynamic states VkPipelineViewportStateCreateInfoVkPipelineViewportStateCreateInfo be changed using this pipeline. Their actual states are set later on in the command buffer.
# For this example we will set the viewport and scissor using dynamic states
dynamicStateEnables: seq[VkDynamicSTate] = @[ VK_DYNAMIC_STATE_VIEWPORT
, VK_DYNAMIC_STATE_SCISSOR
, VK_DYNAMIC_STATE_LINE_WIDTH
]
dynamicState = VkPipelineDynamicStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
, pDynamicStates: addr dynamicStateEnables[0]
, dynamicStateCount: dynamicStateEnables.len.uint32
)
# Depth and stencil state containing depth and stencil compare and test operations
# We only use depth tests and want depth tests and writes to be enabled and compare with less or equal
depthStencilState = VkPipelineDepthStencilStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
, depthTestEnable: VkBool32 VK_TRUE
, depthWriteEnable: VkBool32 VK_TRUE
, depthCompareOp: VK_COMPARE_OP_LESS_OR_EQUAL
, depthBoundsTestEnable: VkBool32 VK_FALSE
, back: VkStencilOpState( failOp: VK_STENCIL_OP_KEEP
, passOp: VK_STENCIL_OP_KEEP
, compareOp: VK_COMPARE_OP_ALWAYS
)
, front: VkStencilOpState( failOp: VK_STENCIL_OP_KEEP
, passOp: VK_STENCIL_OP_KEEP
, compareOp: VK_COMPARE_OP_ALWAYS
)
, stencilTestEnable: VkBool32 VK_FALSE
)
# Multi sampling state
# This example does not make use of multi sampling (for anti-aliasing), the state must still be set and passed to the pipeline
multisampleState = VkPipelineMultisampleStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
, rasterizationSamples: VK_SAMPLE_COUNT_1_BIT
, pSampleMask: nil
)
# Vertex input descriptions
# Specifies the vertex input parameters for a pipeline
# Vertex input binding
# This example uses a single vertex input binding at binding point 0 (see vkCmdBindVertexBuffers)
vertexInputBinding = VkVertexInputBindingDescription(
binding: 0
, stride: uint32 sizeof(Vertex)
, inputRate: VK_VERTEX_INPUT_RATE_VERTEX
)
# Input attribute bindings describe shader attribute locations and memory layouts
vertex_input_attributes: array[2,VkVertexInputAttributeDescription]
# Attribute location 0: Position
vertex_input_attributes[0].binding = 0
vertex_input_attributes[0].location = 0
vertex_input_attributes[0].format = VK_FORMAT_R32G32B32_SFLOAT
vertex_input_attributes[0].offset = uint32 offsetof(Vertex, position)
# Attribute location 1: Color
vertex_input_attributes[1].binding = 0
vertex_input_attributes[1].location = 1
vertex_input_attributes[1].format = VK_FORMAT_R32G32B32_SFLOAT
vertex_input_attributes[1].offset = offsetof(Vertex, color).uint32
#[
vertex_input_attributes[2].location = 2
vertex_input_attributes[2].format = VK_FORMAT_R32G32B32_SFLOAT
vertex_input_attributes[2].offset = offsetof(Vertex, texture_coordinates).uint32
]#
var
vertex_input_state =
VkPipelineVertexInputStateCreateInfo( sType: VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
, vertexBindingDescriptionCount: 1
, pVertexBindingDescriptions: addr vertexInputBinding
, vertexAttributeDescriptionCount: uint32 vertex_input_attributes.len
, pVertexAttributeDescriptions: addr vertex_input_attributes[0]
)
viewport = VkViewport(
x: 0f, y: 0
, width: swapchain.current_extent.width.float32
, height: swapchain.current_extent.height.float32
, minDepth: 0f
, maxDepth: 1f
)
scissor = VkRect2D( offset: VkOffset2D(x: 0, y: 0)
, extent: swapchain.current_extent,
)
viewportState = VkPipelineViewportStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
, viewportCount: 1
, pViewports: viewport.addr
, scissorCount: 1
, pScissors: scissor.addr
, flags: VkPipelineViewportStateCreateFlags 0
)
# Shaders
if shaders.len != 0:
var
vertShaderCode = readFile shaders[0]
fragShaderCode = readFile shaders[1]
# Vertex shader
shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT
shaderStages[0].module = vk_device.a_shader_module vertShaderCode
# Main entry point for the shader
shaderStages[0].pName = "main"
# Fragment shader
shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
shaderStages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT
shaderStages[1].module = vk_device.a_shader_module fragShaderCode
# Main entry point for the shader
shaderStages[1].pName = "main"
# Set pipeline shader stage info
pipeline_info.stageCount = shaderStages.len.uint32
pipeline_info.pStages = addr shaderStages[0]
# Assign the pipeline states to the pipeline creation info structure
pipeline_info.pVertexInputState = addr vertex_input_state
pipeline_info.pInputAssemblyState = addr inputAssembly
pipeline_info.pRasterizationState = addr rasterizer
pipeline_info.pColorBlendState = addr colorBlending
pipeline_info.pMultisampleState = addr multisampleState
pipeline_info.pViewportState = addr viewportState
pipeline_info.pDepthStencilState = addr depthStencilState
pipeline_info.render_pass = result.render_pass.vk_handle
pipeline_info.pDynamicState = addr dynamicState
# Create rendering pipeline using the specified states
discard vkCreateGraphicsPipelines( vk_device
, pipelineCache
, 1
, addr pipeline_info
, nil
, addr result.pipeline
)
# Shader modules are no longer needed once the graphics pipeline has been created
if shaders.len != 0:
for shader_stage in shaderStages.mitems:
vkDestroyShaderModule( vk_device
, shader_stage.module
, nil
)
proc a_shader_module( device: VkDevice
, code: string
): VkShaderModule =
var createInfo = VkShaderModuleCreateInfo( sType: VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
, codeSize: cast[uint] (code.len)
, pCode: cast[ptr uint32] ( addr code[0])
)
assert vkCreateShaderModule( device
, addr createInfo
, nil
, addr result
) == VK_SUCCESS
result
# TODO: currently only assumes a single vertex <-> fragment pair. (total of 2 shaders)
proc the_shader_stages( vk_device: VkDevice
, shaders: seq[string]
): seq[VkPipelineShaderStageCreateInfo] =
for shader in shaders:
assert( shader.fileExists()
, "shader file path doesn't exist: " & shader
)
result = @[
VkPipelineShaderStageCreateInfo( sType: VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
, pNext: nil
, flags: VkPipelineShaderStageCreateFlags 0
, stage: VK_SHADER_STAGE_VERTEX_BIT
, module: a_shader_module( vk_device
, readFile shaders[0]
)
, pName: "main"
, pSpecializationInfo: nil
)
, VkPipelineShaderStageCreateInfo( sType: VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
, pNext: nil
, flags: VkPipelineShaderStageCreateFlags 0
, stage: VK_SHADER_STAGE_FRAGMENT_BIT
, module: a_shader_module( vk_device
, readFile shaders[1]
)
, pName: "main"
, pSpecializationInfo: nil
)
]
# TODO
# currently any shape > 6 sides is counted as an Ngon
# weird behavior when hollow is true, in the method used to render the verts
proc create_descriptor_set_layout*( vk_device: VkDevice
): VkDescriptorSetLayout =
# Setup layout of descriptors used in this example
# Basically connects the different shader stages to descriptors for binding uniform buffers, image samplers, etc.
# So every shader binding should map to one descriptor set layout binding
# Binding 0: Uniform buffer (Vertex shader)
var
layoutBinding: VkDescriptorSetLayoutBinding
descriptorLayout: VkDescriptorSetLayoutCreateInfo
layoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
layoutBinding.descriptorCount = 1
layoutBinding.stageFlags = VkShaderStageFlags VK_SHADER_STAGE_VERTEX_BIT.ord or
VK_SHADER_STAGE_FRAGMENT_BIT.ord
layoutBinding.pImmutableSamplers = nil
descriptorLayout.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
descriptorLayout.pNext = nil
descriptorLayout.bindingCount = 1
descriptorLayout.pBindings = addr layoutBinding
discard vkCreateDescriptorSetLayout( vk_device
, addr descriptorLayout
, nil
, addr result
)
proc create_descriptor_sets*( vk_device: VkDevice
, descriptor_set_layout: VkDescriptorSetLayout
, descriptor_pool: VkDescriptorPool
, descriptor_buffer_info: VkDescriptorBufferInfo
): VkDescriptorSet =
var
allocInfo = VkDescriptorSetAllocateInfo( sType: VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
, descriptorPool: descriptor_pool
, descriptorSetCount: 1
, pSetLayouts: addr descriptor_set_layout
)
assert vkAllocateDescriptorSets( vk_device
, addr allocInfo
, addr result
) == VK_SUCCESS
# Update the descriptor set determining the shader binding points
# For every binding point used in a shader there needs to be one
# descriptor set matching that binding point
var write_descriptor_sets: array[1,VkWriteDescriptorSet] =
[ VkWriteDescriptorSet( sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
, dstSet: result
, descriptorCount: 1
, descriptorType: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, pBufferInfo: cast[ptr ptr VkDescriptorBufferInfo] (addr descriptor_buffer_info)
, dstBinding: 0
)
]
vkUpdateDescriptorSets( vk_device
, 1
, addr write_descriptor_sets[0]
, 0
, nil
)
proc create_pipeline_layout( vk_device: VkDevice
, descriptor_set_layout: VkDescriptorSetLayout
, push_constant_size: uint32
, push_constant_range_count: uint32 = 0
): VkPipelineLayout =
var
pPipelineLayoutCreateInfo: VkPipelineLayoutCreateInfo
pushConstantRange = VkPushConstantRange( stageFlags: VkShaderStageFlags VK_SHADER_STAGE_VERTEX_BIT.ord or VK_SHADER_STAGE_FRAGMENT_BIT.ord
, offset: 0
, size : push_constant_size# uint32 sizeof Shape_Pushes
)
# Create the pipeline layout that is used to generate the rendering pipelines that are based on this descriptor set layout
# In a more complex scenario you would have different pipeline layouts for different descriptor set layouts that could be reused
pPipelineLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
pPipelineLayoutCreateInfo.pNext = nil
pPipelineLayoutCreateInfo.setLayoutCount = 1
pPipelineLayoutCreateInfo.pSetLayouts = addr descriptor_set_layout
pPipelineLayoutCreateInfo.pushConstantRangeCount = push_constant_range_count
#pPipelineLayoutCreateInfo.pPushConstantRanges = addr pushConstantRange
assert vkCreatePipelineLayout( vk_device
, addr pPipelineLayoutCreateInfo
, nil
, addr result
) == VK_SUCCESS
result
import vulkan
, vkTypes
, re
, bitops
, ../utils/lets
type
GPU* = object
handle*: VkPhysicalDevice
features*: VkPhysicalDeviceFeatures
properties*: VkPhysicalDeviceProperties
memory_properties*: VkPhysicalDeviceMemoryProperties
queueFamilyProperties*: seq[VkQueueFamilyProperties]
requestedFeatures*: VkPhysicalDeviceFeatures
#from sets import toHashSet, excl, len
from vulkan_utils import `<`, `==`, `>`
from ../utils/etc import toString, flatten2
from sequtils import anyIt, mapIt, filterIt, maxIndex, toSeq
from strutils import contains, isAlphaNumeric
proc getQProperties*(gpu: VkPhysicalDevice): seq[VkQueueFamilyProperties] =
var
queueCount : uint32
# formatCount: uint32
# supportsPresent: seq[VkBool32]
# gqni: uint32 = uint32.high
# pqni: uint32 = uint32.high
vkGetPhysicalDeviceQueueFamilyProperties(gpu, queueCount.addr, nil)
result = newSeq[VkQueueFamilyProperties](queueCount)
vkGetPhysicalDeviceQueueFamilyProperties(gpu, queueCount.addr, result[0].addr)
proc getSupportedDepthFormat*( gpu: VkPhysicalDevice
, depthFormat: var VkFormat
)
=
var
formatProps: VkFormatProperties
formats = [ VK_FORMAT_D32_SFLOAT_S8_UINT
, VK_FORMAT_D32_SFLOAT
, VK_FORMAT_D24_UNORM_S8_UINT
, VK_FORMAT_D16_UNORM_S8_UINT
, VK_FORMAT_D16_UNORM
]
for format in formats:
vkGetPhysicalDeviceFormatProperties( gpu
, format
, addr formatProps
)
if bitand(formatProps.optimalTilingFeatures.int
, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT.int
) > 0:
depthFormat = format
#echo "FOUND DEPTH_FORMAT:" & $depthFormat
break
else: echo "nope!" & $bitand(formatProps.optimalTilingFeatures.int
, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT.int
)
proc get_gpu*( instance: VkInstance
#, surface: VkSurfaceKHR
): GPU =
load_vulkan_functions_for_gpu(instance)
var gpuCount: uint32 = 0
discard vkEnumeratePhysicalDevices(instance, gpuCount.addr, nil)
var gpus = newSeq[VkPhysicalDevice](gpuCount)
discard vkEnumeratePhysicalDevices(instance, gpuCount.addr, gpus[0].addr)
case gpus.len
of 0: quit "ERROR: No GPUs found by `vkEnumeratePhysicalDevices`. This is probably a driver-related issue."
of 1:
var
devProps0: VKPhysicalDeviceProperties
features0: VkPhysicalDeviceFeatures
memoryProperties0: VkPhysicalDeviceMemoryProperties
#qFamilyProperties0: seq[VkQueueFamilyProperties]
vkGetPhysicalDeviceProperties( gpus[0]
, addr devProps0
)
if devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU or
devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:
vkGetPhysicalDeviceFeatures(gpus[0], addr features0)
vkGetPhysicalDeviceMemoryProperties(gpus[0], addr memoryProperties0)
result = GPU( handle: gpus[0]
, features: features0
, properties: devProps0
, memory_properties: memoryProperties0
, queueFamilyProperties: gpus[0].getQProperties
)
else: quit "ERROR: The only GPU/device found is not a Discrete or Integrated type, it is: " & $devProps0.deviceType & " \n Which is currently not supported."
of 2:
# Handle:
# 1 GPU with 2 different drivers -> Use the first
# 2 GPUs: 1 Discrete 1 integrated -> Use the Discrete
# 2 GPUs: 2 Integrated || 2 Discrete -> Use the better one
var
devProps0: VKPhysicalDeviceProperties
devProps1: VKPhysicalDeviceProperties
features0: VkPhysicalDeviceFeatures
memoryProperties0: VkPhysicalDeviceMemoryProperties
#qFamilyProperties0: seq[VkQueueFamilyProperties]
vkGetPhysicalDeviceProperties(gpus[0], addr devProps0)
vkGetPhysicalDeviceProperties(gpus[1], addr devProps1)
# 1 GPU with 2 different drivers -> Use the first
if devProps0.deviceID == devProps1.deviceID:
vkGetPhysicalDeviceFeatures(gpus[0], addr features0)
vkGetPhysicalDeviceMemoryProperties(gpus[0], addr memoryProperties0)
result = GPU( handle: gpus[0]
, features: features0
, properties: devProps0
, memory_properties: memoryProperties0
, queueFamilyProperties: gpus[0].getQProperties
)
#2 GPUs: 1 Discrete 1 integrated, Discrete is the first GPU
if devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU and
devProps1.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:
vkGetPhysicalDeviceFeatures(gpus[0], addr features0)
vkGetPhysicalDeviceMemoryProperties(gpus[0], addr memoryProperties0)
result = GPU( handle: gpus[0]
, features: features0
, properties: devProps0
, memory_properties: memoryProperties0
, queueFamilyProperties: gpus[0].getQProperties
)
#2 GPUs: 1 Discrete 1 integrated, Integrated is the first GPU, so we choose the second (Discrete)
elif devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU and
devProps1.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:
var
features1: VkPhysicalDeviceFeatures
memoryProperties1: VkPhysicalDeviceMemoryProperties
vkGetPhysicalDeviceFeatures(gpus[1], addr features1)
vkGetPhysicalDeviceMemoryProperties(gpus[1], addr memoryProperties1)
result = GPU( handle: gpus[1]
, features: features1
, properties: devProps1
, memory_properties: memoryProperties1
, queueFamilyProperties: gpus[1].getQProperties
)
#2 GPUs: 2 Integrated || 2 Discrete -> Find VRAM sizes, and use the GPU with the larger one, or if they're the same, use the first
if devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU and
devProps1.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU or
devProps0.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU and
devProps1.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:
var
memoryProperties0: VkPhysicalDeviceMemoryProperties
memoryProperties1: VkPhysicalDeviceMemoryProperties
features1: VkPhysicalDeviceFeatures
vkGetPhysicalDeviceMemoryProperties(gpus[0], addr memoryProperties0)
vkGetPhysicalDeviceMemoryProperties(gpus[1], addr memoryProperties1)
if memoryProperties0.memoryHeaps[0].size > memoryProperties1.memoryHeaps[0].size or
memoryProperties0.memoryHeaps[0].size == memoryProperties1.memoryHeaps[0].size:
result = GPU( handle: gpus[0]
, features: features0
, properties: devProps0
, memory_properties: memoryProperties0
, queueFamilyProperties: gpus[0].getQProperties
)
else:
vkGetPhysicalDeviceFeatures(gpus[0], addr features1)
result = GPU( handle: gpus[1]
, features: features1
, properties: devProps1
, memory_properties: memoryProperties1
, queueFamilyProperties: gpus[1].getQProperties
)
# 3 or more GPUs, -> Find Discrete, or Integrated, else error
else:
var
memoryProperties: seq[VkPhysicalDeviceMemoryProperties]
devProps: seq[VKPhysicalDeviceProperties]
features: seq[VkPhysicalDeviceFeatures]
gpuIndex: Natural
for i, d in gpus:
var
someFeatures: VkPhysicalDeviceFeatures
someMemoryProperties: VkPhysicalDeviceMemoryProperties
someDevProps: VKPhysicalDeviceProperties
vkGetPhysicalDeviceFeatures(d, addr someFeatures)
vkGetPhysicalDeviceMemoryProperties(d, addr someMemoryProperties)
vkGetPhysicalDeviceProperties(d, addr someDevProps)
features.add someFeatures
memoryProperties.add someMemoryProperties
devProps.add someDevProps
gpuIndex = maxIndex toSeq memoryProperties.mapit(it.memoryHeaps[0].size)
result = GPU( handle: gpus[gpuIndex]
, features: features[gpuIndex]
, properties: devProps[gpuIndex]
, memory_properties: memoryProperties[gpuIndex]
, queueFamilyProperties: gpus[gpuIndex].getQProperties
)
# NOTE: All of this is probably not needed, because i'm pretty sure there's
# just some temp-bug or something with q'ing extensions.
# It's UB to have a device extension that is not supported by the GPU (?)
# so we check that all coreDeviceExts exist in the q'd extensions from the GPU
# and when an ext is found, we "check it off" by popping it off the seq
# if there's any that are not found, we quit, and the resulting exts are shown
proc check_gpu_extensions*( gpu: VkPhysicalDevice
, dump_extensions: bool = false
) =
var
extCount: uint32
checkList: seq[string] = toSeq coreDeviceExts
#extsNotFound: seq[string]
checkCount = checkList.len
#[ doubleExt = re"VK.*VK"
doubleExtToSplit = re"VK.*(?=VK)"
corruptedExt = re"VK.*[0-9](?=.*)"
allExts: seq[string]
]#
# var fixedList = availableExts.mapIt(it.extensionName.toString)
# .mapIt(it.split anExt)
# .flatten
# #.filterIt(it == "")
discard vkEnumerateDeviceExtensionProperties(gpu, nil, extCount.addr, nil)
var availableExts = newSeq[VkExtensionProperties](extCount)
discard vkEnumerateDeviceExtensionProperties(gpu, nil, extCount.addr, availableExts[0].addr)
for ext in availableExts.mapIt(it.extensionName):
var ne = ext.filterIt((it.isAlphaNumeric or it == '_') ).toString
if dump_extensions: echo ne
# for ext in allExts:
# echo ext
# for chExt in coreDeviceExts:
# echo availableExts.mapIt($it).contains chExt
if checkCount > 0:
echo checkList
# quit "wew ladddddddddddddddddddddddd"
import vulkan
proc create_vulkan_fences*( vulkan_device: VkDevice
): seq[VkFence] =
var
fenceCreateInfo: VkFenceCreateInfo
fenceCreateInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
fenceCreateInfo.flags = VkFenceCreateFlags VK_FENCE_CREATE_SIGNALED_BIT
for fence in result.mitems:
discard vkCreateFence( vulkan_device
, addr fenceCreateInfo
, nil
, addr fence
)
import vulkan
, ../utils/lets
, vkTypes
, vulkan_record
proc createLogicalDevice*( rec: var Vulkan_Record
) =
rec.qfi = QueueFamily( graphics: 0
, transfer: 0
, compute: 0
, sparse: 0
, usingSparse: false
, usingCompute: false
)
var
queuePriority = 0f
# qTypes = bitor( VK_QUEUE_GRAPHICS_BIT.int
# , VK_QUEUE_TRANSFER_BIT.int
# , VK_QUEUE_COMPUTE_BIT.int
# , VK_QUEUE_SPARSE_BINDING_BIT.int
# )
queueCreateInfos = newSeq[VkDeviceQueueCreateInfo]()
let deviceQueueCreateInfo = newVkDeviceQueueCreateInfo( sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
, queueFamilyIndex = rec.qfi.graphics
, queueCount = 1
, pQueuePriorities = queuePriority.addr
)
queueCreateInfos.add deviceQueueCreateInfo
var
deviceFeatures: VkPhysicalDeviceFeatures
deviceExts = allocCStringArray(coreDeviceExts)
vkGetPhysicalDeviceFeatures(rec.gpu.handle, addr deviceFeatures)
var deviceCreateInfo = newVkDeviceCreateInfo( pQueueCreateInfos = queueCreateInfos[0].addr
, queueCreateInfoCount = queueCreateInfos.len.uint32
, pEnabledFeatures = deviceFeatures.addr
, enabledExtensionCount = 1 #coreDeviceExts.len
, enabledLayerCount = 0
, ppEnabledLayerNames = nil
, ppEnabledExtensionNames = deviceExts
)
if vkCreateDevice( rec.gpu.handle
, deviceCreateInfo.addr
, nil
, addr rec.logical_device
) != VKSuccess: quit "failed to create logical device"
proc create_logical_command_pool*(rec: var Vulkan_Record) =
var
poolInfo = VkCommandPoolCreateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
, queueFamilyIndex: rec.qfi.graphics
# , flags: VkCommandPoolCreateFlags VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT # optional
)
if vkCreateCommandPool( rec.logical_device
, poolInfo.addr
, nil
, addr rec.command_pool
) != VK_SUCCESS:
quit("failed to create command pool")
import vulkan
, vulkan_utils
import std/bitops
type
Depth_Stencil* = object #of RootObj
memory*: VkDeviceMemory
image*: VkImage
view*: VkImageView
proc create_depth_stencil*( device: VkDevice
, image_format: VKFormat
, depth_format: VKFormat
, current_extent: VkExtent2D
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
): Depth_Stencil =
result = Depth_Stencil()
var
memReqs: VkMemoryRequirements
memAllloc: VkMemoryAllocateInfo
imageViewCI: VkImageViewCreateInfo
imageCI = VkImageCreateInfo( sType: VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
, imageType: VK_IMAGE_TYPE_2D
, format: depth_format
, extent: VkExtent3D( width: current_extent.width
, height: current_extent.height
, depth: 1
)
, mipLevels: 1
, arrayLayers: 1
, samples: VK_SAMPLE_COUNT_1_BIT
, tiling: VK_IMAGE_TILING_OPTIMAL
, usage: VkImageUsageFlags VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, initialLayout: VK_IMAGE_LAYOUT_UNDEFINED
)
assert vkCreateImage( device
, addr imageCI
, nil
, addr result.image
) == VK_SUCCESS
# Allocate memory for the image (device local) and bind it to our image
memAllloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
vkGetImageMemoryRequirements( device
, result.image
, addr memReqs
)
memAllloc.allocationSize = memReqs.size
memAllloc.memoryTypeIndex = find_memory_with_property( gpu_memory_properties
, memReqs.memoryTypeBits
, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
)
assert vkAllocateMemory( device
, addr memAllloc
, nil
, addr result.memory
) == VK_SUCCESS
assert vkBindImageMemory( device
, result.image
, result.memory
, VkDeviceSize 0
) == VK_SUCCESS
# Create a view for the depth stencil image
# Images aren't directly accessed in Vulkan, but rather through views described by a subresource range
# This allows for multiple views of one image with differing ranges (e.g. for different layers)
imageViewCI.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D
imageViewCI.format = depth_format
imageViewCI.subresourceRange.aspectMask = VkImageAspectFlags bitor( VK_IMAGE_ASPECT_DEPTH_BIT.int
, VK_IMAGE_ASPECT_STENCIL_BIT.int
)
imageViewCI.subresourceRange.baseMipLevel = 0
imageViewCI.subresourceRange.levelCount = 1
imageViewCI.subresourceRange.baseArrayLayer = 0
imageViewCI.subresourceRange.layerCount = 1
imageViewCI.image = result.image
assert vkCreateImageView( device
, addr imageViewCI
, nil
, addr result.view
) == VK_SUCCESS
proc destroyDepthStencil*( device: VkDevice
, depth_stencil: var Depth_Stencil
) =
discard vkDeviceWaitIdle device
vkDestroyImageView( device
, depth_stencil.view
, nil
)
vkDestroyImage( device
, depth_stencil.image
, nil
)
vkFreeMemory( device
, depth_stencil.memory
, nil
)
import vulkan
, strutils
, bitops
, ../utils/lets
proc checkValidationLayers*() =
var layerCount: uint32 = 0
discard vkEnumerateInstanceLayerProperties(layerCount.addr, nil)
var layers = newSeq[VkLayerProperties](layerCount)
discard vkEnumerateInstanceLayerProperties(layerCount.addr, layers[0].addr)
for validate in validationLayers:
var found = false
for layer in layers:
if cstring(layer.layerName.addr) == validate:
found = true
break
if not found: echo layer.layerName," layer is not supported"
proc debugUtilsMessengerCallback*( messageSeverity: VkDebugUtilsMessageSeverityFlagBitsEXT
, messageTypes: VkDebugUtilsMessageTypeFlagsEXT
, pCallbackData: VkDebugUtilsMessengerCallbackDataEXT
, userData: pointer
): VkBool32{.cdecl.} =
if bitand( messageSeverity.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT.int
) != 0:
discard
#echo "VERBOSE: ", "[", pCallbackData.messageIdNumber, "][", pCallbackData.pMessageIdName, "] : ", pCallbackData.pMessage
elif bitand( messageSeverity.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT.int
) != 0: discard
#[ if contains($pCallbackData.pMessage, "/usr") or
contains($pCallbackData.pMessage, "libVkLayer") or
contains($pCallbackData.pMessage, "VUID-NONE") or
pCallbackData.messageIdNumber == 0 #[ [Loader Message] ]# or
contains($pCallbackData.pMessage, "Inserted device layer"): discard
else: echo "INFO: "
, "[",pCallbackData.messageIdNumber
, "]["
, pCallbackData.pMessageIdName
, "] : "
, pCallbackData.pMessage ]#
elif bitand( messageSeverity.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT.int
) != 0:
if contains($pCallbackData.pMessage, "small-dedicated-allocation") or
contains($pCallbackData.pMessage, "CHASSIS") or
contains($pCallbackData.pMessage, "command-buffer-reset") or
contains($pCallbackData.pMessage, "small-allocation") or
# Attempting to enable extension VK_EXT_debug_utils,
#but this extension is intended to support use by applications when debugging and it is strongly recommended that it be otherwise avoided.
pCallbackData.messageIdNumber == 284711830:
discard# echo "small allocation warning"
else: discard#echo "WARNING: ", "[",pCallbackData.messageIdNumber, "][", pCallbackData.pMessageIdName, "] : ", pCallbackData.pMessage
elif bitand( messageSeverity.int
, VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT.int
) != 0:
echo "ERROR: ", "[",pCallbackData.messageIdNumber, "][", pCallbackData.pMessageIdName, "] : ", pCallbackData.pMessage
{.experimental: "codeReordering".}
import vulkan
, vkTypes
, vulkan_utils
, ../utils/[lets]
, bitops
type
Buffer_Object = object of RootObj
device_memory*: VkDeviceMemory
vk_buffer*: VkBuffer
size*: VkDeviceSize
data*: ptr char
current_data_offset*: Natural
Buffer* = ref object of Buffer_Object
#[
Buffer& result
, VkDevice device
, const VkPhysicalDeviceMemoryProperties& memoryProperties
, size_t size
, VkBufferUsageFlags usage
, VkMemoryPropertyFlags memoryFlags
]#
proc a_vulkan_buffer*( vk_device: VkDevice
, gpu_memory_properties: VkPhysicalDeviceMemoryProperties
, allocation_size: VkDeviceSize
, buffer_usage_flags: VkBufferUsageFlags
, memory_flags: VkMemoryPropertyFlags
): Buffer =
result = Buffer( size: allocation_size
)
var
mem_reqs: VkMemoryRequirements
buffer_info = VkBufferCreateInfo( sType: VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
, size: allocation_size
)
allocation_info = VkMemoryAllocateInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
)
memory_allocation_flag_info = VkMemoryAllocateFlagsInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR)
assert vkCreateBuffer( vk_device
, addr buffer_info
, nil
, addr result.vk_buffer
) == VK_SUCCESS
vkGetBufferMemoryRequirements( vk_device
, result.vk_buffer
, addr mem_reqs
)
allocation_info.allocationSize = mem_reqs.size
allocation_info.memoryTypeIndex = gpu_memory_properties.find_memory_with_property( mem_reqs.memoryTypeBits
, memory_flags
)
if bitand( buffer_usage_flags.int
, VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT.ord
) == 1:
allocation_info.pNext = addr memory_allocation_flag_info
memory_allocation_flag_info.flags = VkMemoryAllocateFlags VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
memory_allocation_flag_info.deviceMask = 1
discard vkAllocateMemory( vk_device
, addr allocation_info
, nil
, addr result.device_memory
)
discard vkBindBufferMemory( vk_device
, result.vk_buffer
, result.device_memory
, VkDeviceSize 0
)
if bitand( memory_flags.int
, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord
) == 1:
assert vkMapMemory( vk_device
, result.device_memory
, VkDeviceSize 0
, allocation_size
, VkMemoryMapFlags 0
, cast[ptr pointer] (result.data)
) == VK_SUCCESS
#[ result.descriptor.buffer = result.vk_buffer
result.descriptor.offset = VkDeviceSize 0
result.descriptor.range = VkDeviceSize VK_WHOLE_SIZE
]#
return result
#[ proc fillDescr*( buffer: Buffer
, size: VkDeviceSize = VkDeviceSize VK_WHOLE_SIZE
, offset: VkDeviceSize = vk0
) =
buffer.descriptor.offset = offset
buffer.descriptor.buffer = buffer.vkbuffer
buffer.descriptor.range = size ]#
# Map a memory range of this buffer. If successful, mapped points to the specified buffer range.
# @param size (Optional) Size of the memory range to map. Pass VK_WHOLE_SIZE to map the complete buffer range.
# @param offset (Optional) Byte offset from beginning
proc map_memory*( vk_device: VkDevice
, memory: VkDeviceMemory
, data: var pointer
, size: VkDeviceSize = vkWholeSize
, offset: VkDeviceSize = vk0
) =
discard vkMapMemory( vk_device
, memory
, vk0
, size
, VkMemoryMapFlags 0
, addr data
)
# vkUnmapMemory can't fail (?)
proc unMapMem*( buffer: var Buffer
, data: var pointer
) =
if not data.isNil: data = nil
# # Copies the specified data to the mapped buffer
# # @param data Pointer to the data to copy
# # @param size Size of the data to copy in machine units
# proc copyTo*( data: pointer
# , buffer: Buffer
# , size: Natural
# ) =
# assert not buffer.mapped.isNil
# copyMem(data, addr buffer.mapped, size)
proc aVkMappedMemoryRange*( memory: VkDeviceMemory
, offset: VkDeviceSize
, size: VkDeviceSize
, pNext: pointer = nil
, sType: VkStructureType = VkStructureTypeMappedMemoryRange
): VkMappedMemoryRange =
result.sType = sType
result.memory = memory
result.offset = offset
result.pNext = pNext
result.size = size
# flush a memory range of the buffer to make it visible to VkDevice
# Only required for non-coherent memory (?)
proc flushMem*( vk_device: VkDevice
, buffer: Buffer
, data: pointer
, offset: VkDeviceSize
, size: VkDeviceSize
) =
var r = aVkMappedMemoryRange( memory = buffer.device_memory
, offset = offset
, size = size
)
discard vkFlushMappedMemoryRanges(vk_device, 1.uint32, addr r)
# Invalidates a memory range of the buffer
# to make it visible to the host
# Only required for non-coherent memory (?)
proc invalidate*( vk_device: VkDevice
, buffer: Buffer
, size: VkDeviceSize
, offset: VkDeviceSize
) =
var r = aVkMappedMemoryRange( memory = buffer.device_memory
, offset = offset
, size = size
)
discard vkInvalidateMappedMemoryRanges(vk_device, 1, addr r)
# Release all Vulkan resources held by this buffer
proc destroy*( vk_device: VkDevice
, buffer: var Buffer
) =
vkDestroyBuffer(vk_device, buffer.vkbuffer, nil)
vkFreeMemory(vk_device, buffer.device_memory, nil)
#[ proc fill_descriptor*( buffer: var Buffer
, size: VkDeviceSize = VkDeviceSize VK_WHOLE_SIZE
, offset: VkDeviceSize = vk0
) =
buffer.descriptor.offset = offset
buffer.descriptor.buffer = buffer.vkbuffer
buffer.descriptor.range = size ]#
proc create_command_buffers*( device: VkDevice
, pool: VkCommandPool
, level: VkCommandBufferLevel = VK_COMMAND_BUFFER_LEVEL_PRIMARY
, amount: uint32 = 2
): seq[VkCommandBuffer] =
result.setLen amount
var allocInfo = VkCommandBufferAllocateInfo( sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
, commandPool: pool
, level: level
, commandBufferCount: amount
)
discard vkAllocateCommandBuffers( device
, addr allocInfo
, addr result[0]
)
import macros
, typetraits
, sequtils
, strutils
, macroutils
#, options
, tables
, etc
type
Shape = object
name: string
Text = object
name: string
age: int
# a_scene(sceneName, Shape, Text)
# SceneNameObj* = object of RootObj
# shapes: seq[Shape]
# texts: seq[Text]
# entities: Record
# SceneName* = ref object of SceneNameObj
# dumpTree:
# type
# sceneNameScene* = ref object of Scene
# texts: seq[Text]
# shapes: seq[Shapes]
import ../vk/vulkan
const
validationLayers* = ["VK_LAYER_KHRONOS_validation"]
coreDeviceExts* = ["VK_KHR_swapchain"
]
vktrue* = VkBool32 true
vkfalse* = VkBool32 false
vk0* = VkDeviceSize 0
vkWholeSize* = VkDeviceSize VK_WHOLE_SIZE
u320* = uint32 0
u321* = uint32 1
Z* = 0
{.deadCodeElim: on.}
from ../vk/vulkan import VkDeviceSize
from sequtils import concat
from ../platforms/unix/x11/xcb import xcb_keycode_t
#from ../platforms/unix/xcb import xcb_keysym_t
import bitops
import macros, strutils
macro string_of*( x: typed
): string = x.toStrLit
proc printf*(formatstr: cstring) {.importc: "printf", varargs, header: "<stdio.h>".}
proc `<`*(x,y: VkDeviceSize): bool = return x.int < y.int
proc `>`*(x,y: VkDeviceSize): bool = return x.int > y.int
proc `==`*(x,y: VkDeviceSize): bool = return x.int == y.int
proc `&=`*(s,s2: string): string = result = s & s2
template pr*(t: varargs[string, `$`]) =
var str: string
for thing in t: str &= thing & " "
echo str
proc `$>>`*[T](t: T) = echo repr t
proc flatten2*[T](a: seq[T]): seq[T] = a
proc flatten2*[T](a: seq[seq[T]]): auto = a.concat.flatten
proc toString*(str: array[0..255, char]): string =
result = newStringOfCap str.len
for ch in str:
if ch == '\x00': discard
else: add(result, ch)
proc toString*(str: seq[char] | cstring): string =
result = newStringOfCap str.len
for ch in str: add(result, ch)
proc `nil?` *[T](t: T):bool = cast[pointer](t).isNil
iterator count*(f: float): float =
var i = 0.0
while i <= f:
if (i == 121).bool: break # this is a stupid hack because Keymaps is an array of 121
yield i
i += 1
#define _KTX_PADN(n, nbytes) (nbytes + (n-1) & ~(ktx_uint32_t)(n-1))
# right now this is only used for `loadKTXFile` from text/textutils.nim
proc pad_bytes*[T]( n: int
, nBytes: T
): uint8 =
# Equivalent to n * ceil(nbytes / n)
bitand( nBytes + cast[uint32](n-1)
, bitnot( cast[uint32](n - 1) )
).uint8
template `+`*[T]( p: ptr T
, off: xcb_keycode_t | int | int32 | uint32 | uint64 | Natural
): ptr T =
cast[ptr type(p[])](cast[ByteAddress](p) +% (off * sizeof(p[])))
template `+=`*[T]( p: ptr T
, off: T#int | Natural
) =
p = p + off
template `-`*[T]( p: ptr T
, off: int | xcb_keycode_t
): ptr T =
cast[ptr type(p[])](cast[ByteAddress](p) -% off * sizeof(p[]))
template `-=`*[T](p: ptr T, off: int | xcb_keycode_t) =
p = p - off
template `[]`*[T]( p: ptr T
, off: int | xcb_keycode_t | int32 | Natural
): T =
(p + off)[]
template `[]=`*[T]( p: ptr T
, off: int | int32 | Natural
, val: T
) =
(p + off)[] = val
#[
proc main =
var
p = aPortal()
t = aTriShape p.rec
frameCounter: uint32
frameTimer = 1.0
paused = false
timer = 0.0
timerSpeed = 1.0 # speed up or slow down
lastTS: float
lastFPS: uint32
ticks: float
diff: float
while not p.quit:
events p
let a = cpuTime()
#render
p.rec.draw t
frameCounter += 1
let b = cpuTime()
diff = b - a
frameTimer = diff * 1000
ticks = frameTimer * 10_000
# camera.update frameTimer
if not paused:
timer += timerSpeed * frameTimer
if timer > 1.0: timer -= 1.0
#echo("diff: ",diff, " FT: ",frameTimer, " ticks: ", frame)
# echo fpsTimer / 1000
var fpsTimer = (b - lastTS) * 1000
if fpsTimer > 1000:
lastFPS = (frameCounter.float * (1000.0 / fpsTimer)).uint32
#echo("fps:", lastFPS, " FT: ", frameTimer)
echo frameCounter
frameCounter = 0
lastTS = b
# updateOverlay()
#
p.close
main()
]#
#include <err.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <xcb/xcb.h>
#include <xcb/xkb.h>
# struct ctx {
# xcb_connection_t *conn;
# uint8_t first_xkb_event;
# };
# static void
# handle_xkb_event(struct ctx *ctx, xcb_generic_event_t *event)
# {
# union xkb_event {
# struct {
# uint8_t response_type;
# uint8_t xkbType;
# uint16_t sequence;
# xcb_timestamp_t time;
# uint8_t deviceID;
# } any;
# xcb_xkb_map_notify_event_t map_notify;
# xcb_xkb_state_notify_event_t state_notify;
# } *xkb_event;
# xkb_event = (union xkb_event *) event;
# switch (xkb_event->any.xkbType) {
# case XCB_XKB_NEW_KEYBOARD_NOTIFY:
# printf("xkb new keyboard notify\n");
# break;
# case XCB_XKB_MAP_NOTIFY:
# printf("xkb map notify\n");
# break;
# case XCB_XKB_STATE_NOTIFY:
# printf("xkb state notify\n");
# break;
# default:
# break;
# }
# }
# static void
# loop(struct ctx *ctx)
# {
# while (true)
# {
# xcb_generic_event_t *event;
# event = xcb_wait_for_event(ctx->conn);
# if (!event)
# errx(1, "couldn't get event");
# if (event->response_type == XCB_MAPPING_NOTIFY) {
# printf("core mapping notify\n");
# }
# if (event->response_type == ctx->first_xkb_event) {
# handle_xkb_event(ctx, event);
# }
# free(event);
# }
# }
# static void
# setup_xkb(struct ctx *ctx)
# {
# {
# const xcb_query_extension_reply_t *ext;
# ext = xcb_get_extension_data(ctx->conn, &xcb_xkb_id);
# if (!ext)
# errx(1, "no XKB in X server");
# ctx->first_xkb_event = ext->first_event;
# }
# {
# xcb_xkb_use_extension_cookie_t use_ext;
# xcb_xkb_use_extension_reply_t *use_ext_reply;
# use_ext = xcb_xkb_use_extension(ctx->conn,
# XCB_XKB_MAJOR_VERSION,
# XCB_XKB_MINOR_VERSION);
# use_ext_reply = xcb_xkb_use_extension_reply(ctx->conn, use_ext, NULL);
# if (!use_ext_reply)
# errx(1, "couldn't use XKB extension");
# if (!use_ext_reply->supported)
# errx(1, "the XKB extension is not supported in X server");
# free(use_ext_reply);
# }
# {
# xcb_void_cookie_t select;
# xcb_generic_error_t *error;
# static const uint16_t affectWhich = (XCB_XKB_EVENT_TYPE_MAP_NOTIFY |
# XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY |
# XCB_XKB_EVENT_TYPE_STATE_NOTIFY);
# static const uint16_t affectMap = (XCB_XKB_MAP_PART_KEY_TYPES |
# XCB_XKB_MAP_PART_KEY_SYMS |
# XCB_XKB_MAP_PART_MODIFIER_MAP |
# XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS |
# XCB_XKB_MAP_PART_KEY_ACTIONS |
# XCB_XKB_MAP_PART_KEY_BEHAVIORS |
# XCB_XKB_MAP_PART_VIRTUAL_MODS |
# XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP);
# select = xcb_xkb_select_events_checked(ctx->conn,
# XCB_XKB_ID_USE_CORE_KBD,
# affectWhich,
# 0,
# affectWhich,
# affectMap,
# affectMap,
# NULL);
# error = xcb_request_check(ctx->conn, select);
# if (error)
# errx(1, "couldn't select XKB events");
# }
# }
# int
# main(void)
# {
# struct ctx ctx;
# ctx.conn = xcb_connect(NULL, NULL);
# if (!ctx.conn)
# errx(1, "couldn't connect to display");
# setup_xkb(&ctx);
# loop(&ctx);
# xcb_disconnect(ctx.conn);
# return 0;
# }
# FORKED from https://github.com/liquidev/datarray
## Data oriented design made easy.
##
## Datarray provides a simple to use array of objects designed for cache
## efficiency. It can be used to build fast programs that manipulate lots of
## data, without sacrificing readability.
##
## Unlike manual solutions, indexing a datarray is done just like any old array
## or seq out there, although it cannot be passed around as an openArray as it
## breaks assumptions about the order of data in memory.
##
## The elements returned by datarrays are rather limited compared to ordinary
## objects. Because the memory layout is completely different,
## a wrapper object – `Element[T]` is used. `Element[T]` stores a pointer to
## the datarray's memory, the datarray's size, and the index of the relevant
## element. Field lookups are desugared to reading from the datarray's memory.
##
## Objects stored in datarrays cannot use UFCS out of the box, and do not have
## destructors. The object fields' destructors get run once the datarray is
## destroyed, which, depending on the allocation type, may be when it goes out
## of scope, or is swept by the GC.
##
## Note that this package is quite experimental and uses the experimental
## dot operator overloading feature of Nim. It is possible to use `{}` instead,
## which may not be as convenient, but is better supported.
##
## Use `-d:datarrayNoDots` to disable this feature and make the usage of `.`
## into an error.
{.experimental: "codeReordering".}
import std/macros
import std/sugar
type
Mem = ptr UncheckedArray[byte]
Datarray*[N: static int, T] {.byref.} = object
## Stack-allocated datarray with a fixed size.
## Note that `T` **must not** be ref!
# i tried to constrain `T` but then the compiler yells at me in packedSize
# so whatever
mem: array[packedSize(T) * N, byte]
DynDatarrayObj[T] = object
mem: Mem
len: int
DynDatarray*[T] = ref DynDatarrayObj[T]
## A dynamically allocated datarray with a constant size determined at
## runtime.
AnyDatarray* = Datarray | DynDatarray
## Either a stack-allocated or dynamically allocated datarray.
Element*[T] = object
## A short-lived pointer to an element in a datarray.
## Note that this must not outlive the datarray. In practice this is not
## hard to enforce - simply make sure that the element is not written to
## any variable that can outlive the datarray this element points to.
## This is partially mitigated by `=copy` being unavailable on `Element`\s.
# once view types become stable, this may be enforced a little bit more
# easily, by using openArray instead of ptr UncheckedArray and relying on
# nim's borrow checker.
# right now view types don't work all that well, so let's just not.
mem: Mem
arrlen: int
index: int
VarElement*[T] = object
## An Element pointing to mutable data.
mem: Mem
arrlen: int
index: int
proc packedSize(T: type): int {.compileTime.} =
# calculate the packed size (size with byte alignment) of a type
for x in T.default.fields:
result += x.sizeof
{.push inline.}
# raw operations
# every type of datarray must implement the mem procedure.
# mem must return a *valid, non-nil* pointer to the raw bytes backing a
# datarray.
# template mem*[N, T](arr: Datarray[N, T]): ptr UncheckedArray[byte] =
# ## Implementation detail, do not use.
# cast[ptr UncheckedArray[byte]](arr.data[0].addr)
#
# info
#
# Returns the lower bound of the datarray (always 0).
proc low*[N, T](arr: Datarray[N, T]): int = 0
# Returns the upper bound of the datarray (always N - 1).
proc high*[N, T](arr: Datarray[N, T]): int = N - 1
# Returns the length of the datarray (always N).
proc len*[N, T](arr: Datarray[N, T]): int = N
# Returns the lower bound of the datarray (always 0).
proc low*[T](arr: DynDatarray[T]): int = 0
# Returns the upper bound of the datarray (always len - 1)
proc high*[T](arr: DynDatarray[T]): int = arr.len - 1
# Returns the length of the datarray.
proc len*[T](arr: DynDatarray[T]): int = arr.len
# Creates a new dynamic datarray with the given length.
proc newDynDatarray*[T](len: int): DynDatarray[T] =
result = DynDatarray[T]( mem: alloc0(len * packedSize(T))
, len: len
)
template cleanupElements(arr: AnyDatarray) =
var offset = 0
for x in T.default.fields:
for _ in 1..arr.len:
`=destroy`(cast[ptr typeof(x)](arr.mem[offset].addr)[])
offset += sizeof(x)
# Cleans up the datarray and its elements.
proc `=destroy`*[N, T](arr: var Datarray[N, T]) = cleanupElements(arr)
# Cleans up the dynamic datarray and its elements.
proc `=destroy`*[T](arr: var DynDatarrayObj[T]) =
if arr.data != nil:
cleanupElements(arr)
dealloc(arr.data)
# # system.rangeCheck but the error message doesn't suck
# NO EXCEPTIONS
# template rangeCheck(i: int, range: Slice[int]) =
# when compileOption("rangeChecks"):
# if i notin range:
# raise newException(IndexDefect,
# "index " & $i & " out of bounds (" & $range & ")")
# returns the index of the first field
template firstIndex[T](arrlen: int, field: untyped): int =
var size = 0
for name, x in T.default.fieldPairs:
if name == astToStr(field): break
size += x.sizeof * arrlen
size
template nthIndex[T, F](arrlen: int, field: untyped, i: int): int =
firstIndex[T](arrlen, field) + sizeof(F) * i
template ithImpl(T, arr: untyped, index: int, field: untyped): auto =
type F = T.default.`field`.typeof
#rangeCheck index, 0..<arr.len
cast[ptr F](arr.mem[nthIndex[T, F](arr.len, field, index)].addr)[]
# Indexes into a field of an object in the datarray, and returns it.
template ith*[N, T]( arr: Datarray[N, T]
, index: int
, field: untyped
): auto = ithImpl(T, arr, index, field)
template ith*[N, T]( arr: var Datarray[N, T]
, index: int
, field: untyped{ident}
): auto = ithImpl(T, arr, index, field)
template ith*[T]( arr: DynDatarray[T]
, index: int
, field: untyped{ident}
): auto = ithImpl(T, arr, index, field)
template ith*[T](arr: var DynDatarray[T]
, index: int
, field: untyped{ident}
): auto = ithImpl(T, arr, index, field)
template indexImpl(T, arr: untyped, i: int): Element[T] =
#rangeCheck i, 0..<arr.len
Element[T]( mem: cast[Mem](arr.mem[0].addr)
, arrlen: arr.len
, index: i
)
template varIndexImpl(T, arr: untyped, i: int): VarElement[T] =
#rangeCheck i, 0..<arr.len
VarElement[T]( mem: cast[Mem](arr.mem[0].addr)
, arrlen: arr.len
, index: i
)
# Indexes into the array and returns an `Element[T]` for an object with the given index.
template `[]`*[N, T](arr: Datarray[N, T], index: int): Element[T] = indexImpl(T, arr, index)
# Indexes into the array and returns a `VarElement[T]` for an object with the
# given index. Unlike the non-var version, `VarElement` allows for mutation
# of the object's fields.
template `[]`*[N, T](arr: var Datarray[N, T], index: int): VarElement[T] = varIndexImpl(T, arr, index)
template itemsImpl(T, arr: untyped) =
for i in 0..<arr.len:
yield arr[i]
# Iterates through the elements in the datarray.
iterator items*[N, T](arr: Datarray[N, T]): Element[T] = itemsImpl(T, arr)
# Mutably iterates through the elements in the datarray.
iterator items*[N, T](arr: var Datarray[N, T]): VarElement[T] = itemsImpl(T, arr)
iterator items*[T](arr: DynDatarray[T]): Element[T] = itemsImpl(T, arr)
iterator items*[T](arr: var DynDatarray[T]): VarElement[T] = itemsImpl(T, arr)
template pairsImpl(T, arr: untyped) =
for i in 0..<arr.len:
yield (i, arr[i])
# Iterates through the elements in the datarray, also yielding their indices.
iterator pairs*[N, T](arr: Datarray[N, T]): (int, Element[T]) = pairsImpl(T, arr)
# Mutably Iterates through the elements in the datarray, also yielding their indices.
iterator pairs*[N, T](arr: var Datarray[N, T]): (int, VarElement[T]) = pairsImpl(T, arr)
iterator pairs*[T](arr: DynDatarray[T]): (int, Element[T]) = pairsImpl(T, arr)
iterator pairs*[T](arr: var DynDatarray[T]): (int, VarElement[T]) = pairsImpl(T, arr)
# making copies of elements is illegal
proc `=copy`*[T](dest: var Element[T], src: Element[T]) {.error.}
proc `=copy`*[T](dest: var VarElement[T], src: VarElement[T]) {.error.}
# Accesses a field in the element.
template `{}`*[T](e: Element[T], field: untyped{ident}): auto =
type F = T.default.`field`.typeof
cast[ptr F](e.mem[nthIndex[T, F](e.arrlen, field, e.index)].addr)[]
# Mutably accesses a field in the var element.
template `{}`*[T](e: VarElement[T], field: untyped{ident}): auto =
type F = T.default.`field`.typeof
cast[ptr F](e.mem[nthIndex[T, F](e.arrlen, field, e.index)].addr)[]
# Writes to a field in the object pointed to by the var element.
template `{}=`*[T](e: VarElement[T], field: untyped{ident}, value: sink auto) =
type F = T.default.`field`.typeof
cast[ptr F](e.mem[nthIndex[T, F](e.arrlen, field, e.index)].addr)[] = value
when not defined(datarrayNoDots):
{.push experimental: "dotOperators".}
# Dot access operator for Elements. Sugar for `e{field}`.
template `.`*[T](e: Element[T], field: untyped{ident}): auto = e{field}
# Dot access operator for VarElements. Sugar for `e{field}`.
template `.`*[T](e: VarElement[T], field: untyped{ident}): auto = e{field}
# Dot equals operator for VarElements. Sugar for `e{field} = value`.
template `.=`*[T](e: VarElement[T], field: untyped{ident}, value: untyped) =
e{field} = value
{.pop.} # ?
{.pop.} # ?
proc verify(node: NimNode, predicate: bool, error: string) =
if not predicate:
error(error, node)
macro select*(loop: ForLoopStmt): untyped =
# Selects fields from a datarray. Refer to the example for usage.
runnableExamples:
import std/random
type
Example = object
a, b, c: int
var arr: Datarray[10, Example]
# there must be two loop variables:
# 1. the index
# 2. the fields that should get unpacked
# the index may be _ if it's not used, but it must always be present.
# the unpacked fields are desugared to ith() calls.
for i, (a, b) in select arr:
a = rand(1.0) < 0.5
b = a div 2 + i
# if only one field is needed, the () may be omitted:
for _, c in select(arr):
c += 1
# basic checks
loop.verify loop.len == 4
, "select must have two loop variables"
loop[2].verify loop[2].kind in {nnkCall, nnkCommand}
, "select can only be used like a normal call or a command call"
loop[2].verify loop[2].len == 2
, "select accepts a single argument with the datarray to select from"
# unpack the AST
var
indexVar = loop[0]
fields = loop[1]
arr = loop[2][1]
body = loop[3]
# check the unpacked AST
indexVar.verify indexVar.kind == nnkIdent
, "the index variable's name must be an identifier"
if fields.kind == nnkIdent:
fields = nnkVarTuple.newTree(fields, newEmptyNode())
fields.verify fields.kind == nnkVarTuple
, "fields must be wrapped in parentheses"
# generate a forvar for the index if it is _
if $indexVar == "_":
indexVar = genSym(nskForVar, "index")
# generate the templates
var iths = newStmtList()
for field in fields[0..^2]:
field.verify field.kind == nnkIdent
, "every field must be a single identifier"
let tmpl = nnkTemplateDef.newTree( field # name
, newEmptyNode() # patterns
, newEmptyNode() # generic params
, newTree(nnkFormalParams, bindSym"auto")
, newEmptyNode() # pragmas
, newEmptyNode() # -
, quote do:
`arr`.ith(`indexVar`, `field`)
)
iths.add(tmpl)
# put it all together
result = quote do:
for `indexVar` in 0..<`arr`.len:
`iths`
`body`
# wrap the result in a block, because better safe than sorry
result = newBlockStmt(newEmptyNode(), result)
#nim r --passC:-march=native --passC:-flto -d:danger --exceptions:goto tests/benchmark.nim
#[
For some reason, not using LTO and goto-based exceptions tanks the performance of Element[T]
but I'm yet to discover the reason behind this
or potentially a better solution that doesn't have such high performance overhead.
Thus, try to avoid Element[T] in performance-critical code
and use ith and select instead of it.
]#
import portal/portal
, vk/[ vulkan
, vkTypes
, vulkan_record
, pipeline_record
]
, scenes/[ scene_object
, scene_utils
, scene_record
, main_scenes
]
import drawable/text as mtext
import scenes/intro as sIntro
import scenes/title as sTitle
#TODO: Figure out a way to auto-sync or get rid of current_scene and the_main_scene
# so we only need to worry about one to know and go to the proper scene
proc load*( sr: var Scene_Record
, rec: var Vulkan_Record
, pipeline_record: Pipeline_Record
) = discard
#sTitle.load rec, title
#sIntro.load rec, intro
#case sr.the_main_scene
#of Main_Scene_Enum.Intro: sr.current_scene = sr.get_scene "intro"
#of Main_Scene_Enum.Title: sr.current_scene = sr.get_scene "title"
proc update*( sr: var Scene_Record
, rec: var Vulkan_Record
, fps: string
, tick_rate: float32
) = discard
#[ case sr.the_main_scene
of Main_Scene_Enum.Title:
sr.current_scene = sr.get_scene "title"
sTitle.update rec, sr.current_scene[]
of Main_Scene_Enum.Intro:
sr.current_scene = sr.get_scene "intro"
sIntro.update rec, sr.current_scene[], sr, fps ]#
proc input*( sr: var Scene_Record
, rec: var Vulkan_Record
) = discard
#[ case sr.the_main_scene
of Main_Scene_Enum.Title: sTitle.input rec, sr
of Main_Scene_Enum.Intro: sIntro.input rec, sr ]#
#of Main_Scene_Enum.alive: discard #alive.input(w, hero)
proc show*( sr: Scene_Record
, rec: var Vulkan_Record
, pipeline_record: Pipeline_Record
) = discard
#[ case sr.the_main_scene
of Main_Scene_Enum.Title:
sTitle.show rec, sr.current_scene[]
of Main_Scene_Enum.Intro: sIntro.show( rec
, sr.current_scene[]
, pipeline_record
) ]#
# of Main_Scene_Enum.alive: discard #alive.input(w, hero)
proc prepFrame*(rec: var Vulkan_Record
, sr: var Scene_Record
, pipeline_record: Pipeline_Record
) =
discard vkAcquireNextImageKHR( rec.vk_device
, rec.swapChain.handle
, uint64.high
, rec.presentCompleteSemaphore
, VkFence 0
, addr rec.currentFrameBuffer
)
discard vkWaitForFences(rec.vk_device, 1, addr rec.fences[rec.currentFrameBuffer], VKBool32 true, uint64.high)
discard vkResetFences(rec.vk_device, 1, addr rec.fences[rec.currentFrameBuffer])
sr.show rec, pipeline_record
proc submitFrame*( current_frame_buffer: uint32
, render_complete_semaphore: VkSemaphore
, queue: VkQueue
#, scene: var Scene
, present_info: var VkPresentInfoKHR
) =
#for shape in scene.shapes.mitems:
#if shape.changed: rec.vk_device.updateCamera shape
#[ for text in scene.texts.mitems:
if text.changed:
text.updateCamera ]#
# THE M A G I C (presenting) queuePresent
#[ var presentInfo: VkPresentInfoKHR
presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
presentInfo.pNext = nil
presentInfo.swapchainCount = 1
presentInfo.pSwapchains = addr rec.swapChain.swapChainKHR ]#
present_info.pImageIndices = addr current_frame_buffer #rec.currentFrameBuffer
# Check if a wait semaphore has been specified to wait for
# before presenting the image
if (render_complete_semaphore.int != 0):
presentInfo.pWaitSemaphores = addr render_complete_semaphore
presentInfo.waitSemaphoreCount = 1
#TODO: WHY DOES THIS MEMORY LEAK EVERY FRAME
var preres = vkQueuePresentKHR( queue
, addr presentInfo
)
#if preres == VK_SUBOPTIMAL_KHR: quit "bad vkQueuePresentKHR"
# rec.windowResize scene
# scene.rebuild rec
# discard vkDeviceWaitIdle rec.vk_device
# rec.readyFrame = true
proc sendFrame*(rec: var Vulkan_Record
, sr: var Scene_Record
, pipeline_record: Pipeline_Record
, present_info: var VkPresentInfoKHR
) =
if rec.readyFrame:
rec.prepFrame sr, pipeline_record
var
waitStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
submitInfo = VkSubmitInfo(
sType: VK_STRUCTURE_TYPE_SUBMIT_INFO
, pWaitDstStageMask: addr waitStageMask
, pWaitSemaphores: addr rec.presentCompleteSemaphore
, waitSemaphoreCount: 1
, pSignalSemaphores: addr rec.renderCompleteSemaphore
, commandBufferCount: 1
, pCommandBuffers: addr rec.draw_command_buffers[rec.currentFrameBuffer]
, signalSemaphoreCount: 1
)
discard vkQueueSubmit( rec.queue
, 1
, submitInfo.addr
, rec.fences[rec.currentFrameBuffer]
)
submitFrame( rec.currentFrameBuffer
, rec.renderCompleteSemaphore
, rec.queue
, present_info
)
#rec.readyFrame = false
import tables
, strutils
, options
type
# entry_action: Option[Callback]
# exit_action: Option[Callback]
State_Actions = tuple[ entry_action: Option[Callback]
, exit_action: Option[Callback]
]
Callback = proc(): void
StateEvent[S,E] = tuple[state: S, event: E]
Transition[S] = tuple[nextState: S, action: Option[Callback]]
State_Machine*[S,E] = ref object of RootObj
initial_state*: S
current_state*: Option[S]
state_actions*: array[S, StateActions]
transitions*: TableRef[StateEvent[S,E], Transition[S]]
free_transitions*: TableRef[S, Transition[S]]
default_transition*: Option[Transition[S]]
#TransitionNotFoundException = object of Exception
proc current_state_is[S,E]( m: State_Machine[S,E]
, nextState: S
) =
if m.current_state.isSome:
if m.state_actions[m.current_state.get].exit_action.isSome:
get(m.state_actions[m.current_state.get].exit_action)()
m.current_state = some(nextState)
if m.state_actions[m.current_state.get].entry_action.isSome:
get(m.state_actions[m.current_state.get].entry_action)()
proc reset*[S,E]( m: State_Machine[S,E]
) =
m.setCurrentState m.initial_state
proc initial_state_is*[S,E]( m: State_Machine[S,E]
, state: S
) =
m.initial_state = state
proc add_state_actions*[S,E]( m: State_Machine[S,E]
, state: S
, entry_action: Callback = nil
, exit_action: Callback = nil
) =
let
entry = if entry_action == nil: none(Callback)
else: some(entry_action)
exit = if exit_action == nil: none(Callback)
else: some(exit_action)
m.state_actions[state] = (entry, exit)
proc a_state_machine*[S,E]( initial_state: S
): State_Machine[S,E] =
result = State_Machine[S,E]()
result.transitions = newTable[ StateEvent[S,E]
, Transition[S]
]()
result.free_transitions = newTable[ S
, Transition[S]
]()
result.initial_state_is initial_state
proc add_free_transition*[S,E]( m: State_Machine[S,E]
, state: S, nextState: S
) =
m.free_transitions[state] = (nextState, none(Callback))
proc addTransitionAny*[S,E](m: State_Machine[S,E], state, nextState: S, action: Callback) =
m.free_transitions[state] = (nextState, some(action))
proc add_transition*[S,E](m: State_Machine[S,E], state: S, event: E, nextState: S) =
m.transitions[(state, event)] = (nextState, none(Callback))
proc add_transition*[S,E](m: State_Machine[S,E], state: S, event: E, nextState: S, action: Callback) =
m.transitions[(state, event)] = (nextState, some(action))
proc setDefaultTransition*[S,E](m: State_Machine[S,E], state: S) =
m.default_transition = some((state, none(Callback)))
proc setDefaultTransition*[S,E](m: State_Machine[S,E], state: S, action: Callback) =
m.default_transition = some((state, some(action)))
proc the_transition*[S,E]( m: State_Machine[S,E]
, event: E
, state: S
): Transition[S] =
let map = (state, event)
if m.transitions.hasKey(map): result = m.transitions[map]
elif m.free_transitions.hasKey(state): result = m.free_transitions[state]
elif m.default_transition.isSome: result = m.default_transition.get
else:
echo map
quit "TransitionNotFoundException"
proc process*[S,E]( m: State_Machine[S,E]
, event: E
) =
let transition = m.the_transition(event, m.current_state.get)
if transition[1].isSome: get(transition[1])()
m.current_state_is transition[0]
#echo event, " ", m.current_state.get
when isMainModule:
type
StateName = enum
SOLID
LIQUID
GAS
PLASMA
Event = enum
MELT
EVAPORATE
SUBLIMATE
IONIZE
var m = newMachine[StateName, Event](LIQUID)
proc cb() =
echo "i'm evaporating"
var condition: bool
proc enterLiquid() =
echo "entering liquid state"
proc exitLiquid() =
echo "exiting liquid state"
proc enterGas() =
if condition:
echo "entering gas state and ionizing immediately"
m.process(IONIZE)
else:
echo "entering gas state"
proc exitGas() =
echo "exiting gas state"
proc enterPlasma() =
echo "entering plasma state"
m.add_transition(SOLID, MELT, LIQUID)
m.add_transition(LIQUID, EVAPORATE, GAS, cb)
m.add_transition(SOLID, SUBLIMATE, GAS)
m.add_transition(GAS, IONIZE, PLASMA)
m.add_transition(SOLID, MELT, LIQUID)
m.addStateActions(LIQUID, entry_action=enterLiquid, exit_action=exitLiquid)
m.addStateActions(PLASMA, enterPlasma)
m.addStateActions(GAS, enterGas, exitGas)
# to "start" the fsm
# this is necessary
m.reset
assert m.getCurrentState() == LIQUID
condition = false
m.process(EVAPORATE)
assert m.getCurrentState() == GAS
m.process(IONIZE)
assert m.getCurrentState() == PLASMA
echo "\nreseting\n"
m.reset
assert m.getCurrentState() == LIQUID
condition = true
m.process(EVAPORATE)
assert m.getCurrentState() == PLASMA, $m.getCurrentState()
import scenes/[ scene_object
, scene_utils
, scene_record
, main_scenes
]
import scenes/intro as intro_scene
, scenes/title as title_scene
, drawable/[ shape_object
, text
, textTypes
, actions
, shape_types
]
, vk/[ vk_core
, vulkan
, swapchain
, graphics_pipeline
, pipeline_record
, buffer
]
, portal/[ portal
, portalObj
, keyboard
, mouse
, monitor
, portalUtils
]
, times
, glm
, camera
, utils/etc
, os
, math
,bitops
, theScenes
, input/[ inputTys
]
, strUtils
, memory/[ utils
]
import std/tables
when defined windows:
import winim/lean
when defined linux:
import platforms/unix/x11/xcb
proc main =
var
the_portal = aPortal()
vk_record = the_portal.setup_vulkan()
scene_record = a_scene_record( Main_Scene_Enum.Intro
)
proc key_relay( the_portal: ptr Portal
, key: Key
, action: int
) {.closure.} =
echo "key_relay"
if is_down Key.Q:
echo "----"
the_portal.quit = true
if key == Key.F and
action == ord Key_Action.Press: the_portal.toggle_full_screen
if key == Key.Esc and
action == ord Key_Action.Press: discard
proc mouse_key_relay( the_portal: ptr Portal
, key: MouseButton
, action: MouseBtnAction
){.closure.} =
discard
#echo action
proc window_mapped_relay ( the_portal: ptr Portal
, width: int
, height: int
) {.closure.} = discard
proc window_closed_relay ( the_portal: ptr Portal
) {.closure.} =
echo "im gonna CLOOOOOOSE"
the_portal.quit = true
proc window_resize_relay(the_portal: ptr Portal, width, height: int) {.closure.} =
# Simple fix for 1:1 pixel aspect ratio.
# if vk_record.current_viewport.width > vk_record.current_viewport.height:
# vk_record.current_viewport.x += 0.5 * (vk_record.current_viewport.width - vk_record.current_viewport.height)
# vk_record.current_viewport.width = vk_record.current_viewport.height
# elif vk_record.current_viewport.height > vk_record.current_viewport.width:
# vk_record.current_viewport.y += 0.5f * (vk_record.current_viewport.height - vk_record.current_viewport.width);
# vk_record.current_viewport.height = vk_record.current_viewport.width
windowResize( the_portal
, vk_record.ready_frame
, scene_record.current_scene[]
)
#[ rebuild( vk_record.vk_device
, vk_record.frame_buffers
, scene_record.current_scene.render_pass
, vk_record.swapchain
, scene_record.current_scene.depth_stencil
, vk_record.gpu.memory_properties
) ]#
discard vkDeviceWaitIdle vk_record.vk_device
vk_record.readyFrame = true
#set_key_relay (addr the_portal), key_relay
#set_mouse_relay(the_portal.addr, mouse_key_relay)
#set_window_resize_relay (addr the_portal), window_resize_relay
#set_window_mapped_relay (addr the_portal), window_mapped_relay
set_window_closed_relay (addr the_portal), window_closed_relay
echo repr the_portal.relays
var
dt = 0.0
updateLimit = 1.0 / 144.0
ft,t = 0.0
currTime = 0.0
frames = 0
updates = 0
accum = 0.0
nowTime = 0.0
cpuframeTimer: TimeInterval
gpuframeTimer: TimeInterval
lastFPS: float
fps: string = "???"
presentInfo = VkPresentInfoKHR( sType: VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
, pNext: nil
, swapchainCount: 1
, pSwapchains: addr vk_record.swapchain.handle
)
lastTime = cpuTime()
timer = lastTime
pipeline_record = Pipeline_Record()
# TODO: move scene instantiating out of main
intro = a_scene( vk_record
)
while not the_portal.quit:
events the_portal
nowTime = cpuTime()
dt += (nowTime - lastTime) / updateLimit
lastTime = nowTime
scene_record.input vk_record
while dt > 1.0:
scene_record.update vk_record, fps, 0.1
updates += 1
dt -= 1
#vk_record.sendFrame scene_record, pipeline_record, presentInfo
frames += 1
if cpuTime() - timer > 1.0:
timer += 1
#fps = $frames & " | " & $updates
# echo frames, " | ",updates
updates = 0
frames = 0
#discard vkDeviceWaitIdle vk_record.vk_device
main()
import scene_object
, scene_utils
, scene_record
, main_scenes
, ../vk/[ vulkan
, vkTypes
, vulkan_record
]
, ../drawable/[ shape_object
, text
]
, ../portal/keyboard
, glm
import ../drawable/text as mText
import ../drawable/shape_object
type
MenuState = enum Begin, Exit
var
ms = MenuState.Begin
#TODO proper dynamic resolution scaling of UI elements
proc load*( rec: var Vulkan_Record
, title: var Scene
, scene_record: var Scene_Record
) =
#[ title.add rec.anSDFText(title, "title", str = "Shapes", size = 18)
title.add rec.anSDFText(title, "begin", str = "begin", size = 14)
title.add rec.anSDFText(title, "exit", str = "exit", size = 14)
title.add rec.a_shape( title.render_pass
, title.current_entity_id
, 4
, "settingsFrame"
, hollow = true
, theSize = 100
)
title.the_text("title").move_to( 150
, 40
)
title.the_text("begin").move_to( 900
, 70
)
title.the_text("exit").move_to( 1600
, 70
)
title.the_text("title").updateFS( outlined = 0.0)
echo rec.swapchain.current_extent.width
title.the_shape("settingsFrame").move_to( rec.swapchain.current_extent.width.float32 / 2
, ((rec.swapchain.current_extent.height.int / 2) + 100 ).float32
)
title.the_shape("settingsFrame").scale( 8
, 4
) ]#
#$title.the_shape("settingsFrame").ubo.model.scale(50)
scene_record.add_scene( addr title
, "title"
)
#TODO: switching states is kinda buggy
proc input*( rec: var Vulkan_Record
, sr: var Scene_Record
) =
if Key.Up.is_down or
Key.Right.is_down:
case ms
of MenuState.Begin: inc ms
of MenuState.Exit: ms = MenuState.Begin
if Key.Down.is_down or
Key.Left.is_down:
case ms
of MenuState.Begin: ms = MenuState.Exit
of MenuState.Exit: dec ms
if Key.Enter.is_down:
case ms
#of MenuState.Begin: sr.the_main_scene = Main_Scene_Enum.Intro
of MenuState.Exit: quit()
else: discard
proc update*( rec: var Vulkan_Record
, menu: var Scene
) = discard
#[ case ms
of MenuState.Begin:
menu.the_text("begin").updateFS( outlined = 0.1
)
menu.the_text("exit").updateFS( outlined = 0.0)
of MenuState.Exit:
menu.the_text("begin").updateFS( outlined = 0.0)
menu.the_text("exit").updateFS( outlined = 0.1) ]#
proc show*( rec: var Vulkan_Record
, scene: var Scene
) =
var
cmdBufInfo: VkCommandBufferBeginInfo
scissor: VkRect2D
clearValues: array[2,VkClearValue]
renderPassBeginInfo: VkRenderPassBeginInfo
scissor.extent.width = uint32 rec.swapchain.current_extent.width
scissor.extent.height = uint32 rec.swapchain.current_extent.height
scissor.offset.x = 0
scissor.offset.y = 0
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
cmdBufInfo.pNext = nil
clearValues[0].color = VkClearColorValue(float32: [0f, 0f, 0f, 1f])
clearValues[1].depth_stencil = VkClearDepthStencilValue(depth: 1.0f, stencil: 0 )
renderPassBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
renderPassBeginInfo.pNext = nil
renderPassBeginInfo.renderArea.offset.x = 0
renderPassBeginInfo.renderArea.offset.y = 0
renderPassBeginInfo.renderArea.extent.width = uint32 rec.swapchain.current_extent.width
renderPassBeginInfo.renderArea.extent.height = uint32 rec.swapchain.current_extent.height
renderPassBeginInfo.clearValueCount = 2
renderPassBeginInfo.pClearValues = addr clearValues[0]
renderPassBeginInfo.render_pass = scene.render_pass
renderPassBeginInfo.framebuffer = rec.frame_buffers[rec.currentFrameBuffer]
discard vkBeginCommandBuffer(rec.draw_command_buffers[rec.currentFrameBuffer], addr cmdBufInfo)
vkCmdBeginRenderPass(rec.draw_command_buffers[rec.currentFrameBuffer], addr renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE)
vkCmdSetViewport(rec.draw_command_buffers[rec.currentFrameBuffer], 0, 1, addr rec.current_viewport)
vkCmdSetScissor(rec.draw_command_buffers[rec.currentFrameBuffer], 0, 1, addr scissor)
#[ for shape in scene.shapes.mitems:
rec.buildCommandBuffers shape, scene.render_pass, int rec.currentFrameBuffer
for text in scene.texts.mitems:
mtext.buildCommandBuffers rec, text, scene.render_pass, int rec.currentFrameBuffer ]#
vkCmdEndRenderPass(rec.draw_command_buffers[rec.currentFrameBuffer])
discard vkEndCommandBuffer(rec.draw_command_buffers[rec.currentFrameBuffer])
rec.readyFrame = true
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
#TODO: REBUILD render_Pass_begin_info on window size change
import ../vk/[ vulkan_record
, vulkan_utils
, vulkan
, depth_stencil
, swapchain
, buffer
]
, scene_object
, scene_record
, ../deshn_entity/[ being
]
, ../drawable/[ shape_object
, textTypes
, plane
]
, ../portal/[ portalObj
]
, std/[ tables
, bitops
]
, glm
proc a_scene*( vk_record: var Vulkan_Record
): Scene =
result = Scene()
result.entities = newTable[string, int]()
proc theIds*(scene: Scene): seq[int] =
for t in scene.shapes: result.add t.id
proc theNames*(scene: Scene): seq[string] =
for t in scene.shapes: result.add t.name
proc the_shape*( scene: var Scene
, id: int
, name: string
): var Shape =
for t in scene.shapes.mitems:
if t.id == id: return t
quit("ERROR: Entity[SHAPE] not found: " & name & ": id" & $id)
proc the_shape*( scene: var Scene
, name: string
): var Shape =
scene.the_shape scene.entities[name], name
proc the_deshn_being*( scene: var Scene
, id: int
, name: string
): var Deshn_Being =
for t in scene.deshn_beings.mitems:
if t.id == id: return t
quit("ERROR: Entity[SHAPE] not found: " & name & ": id" & $id)
proc the_deshn_being*( scene: var Scene
, name: string
): var Deshn_Being =
scene.the_deshn_being scene.entities[name], name
#[ proc the_text*( scene: Scene
, id: int
, name: string
): var SDFText =
#WARNING]: Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]
for t in scene.texts.mitems:
if t.id == id: return t
quit("ERROR: Entity[SDFTEXT] not found: " & name & " / id:" & $id)
proc the_text*( scene: Scene
, name: string
): var SDFText = scene.the_text scene.entities[name], name ]#
# # TODO: need drawable-independent command buffers
# proc build*( vk_record: Vulkan_Record
# , scene: var Scene
# ) =
proc the_plane*( scene: var Scene
, id: int
, name: string
): var Plane =
for t in scene.planes.mitems:
if t.id == id: return t
quit("ERROR: Entity[SHAPE] not found: " & name & ": id" & $id)
proc the_plane*( scene: var Scene
, name: string
): var Plane =
scene.the_plane scene.entities[name], name
proc add*( scene: var Scene
, shape: Shape
) =
#echo "adding: ", sh.name, " ", sh.id
scene.shapes.add shape
scene.entities[shape.name] = shape.id
scene.current_entity_id += 1
scene.the_vertices.add shape.vertices
scene.the_indices.add shape.indices
#[ proc add*( scene: var Scene
, text: SDFText
) =
scene.texts.add text
scene.entities[text.name] = scene.current_entity_id
scene.current_entity_id += 1
for text_vert in text.vertices:
scene.the_vertices.add text_vert.pos.x
scene.the_vertices.add text_vert.pos.y
scene.the_vertices.add text_vert.pos.z
scene.the_vertices.add text_vert.uv.x
scene.the_vertices.add text_vert.uv.y
scene.the_indices.add text.indices
]#
proc add*( scene: var Scene
, deshn_being: Deshn_Being
) =
#echo "adding: ", sh.name, " ", sh.id
scene.deshn_beings.add deshn_being
scene.entities[deshn_being.name] = deshn_being.id
scene.current_entity_id += 1
scene.add deshn_being.shape
proc add*( scene: var Scene
, plane: Plane
) =
#echo "adding: ", sh.name, " ", sh.id
scene.planes.add plane
scene.entities[plane.name] = plane.id
scene.current_entity_id += 1
scene.add plane.shape
proc prepare_vertices*( scene: var Scene
, vk_device: VkDevice
, memory_properties: VkPhysicalDeviceMemoryProperties
, command_pool: VkCommandPool
, queue: VkQueue
, master_vertex_buffer: var Buffer
, master_index_buffer: var Buffer
) =
var
copyCmd: VkCommandBuffer = vk_device.getCommandBuffers(command_pool, true)
copyRegion: VkBufferCopy
data: pointer
#[ copyMem( data, addr scene.the_vertices[0]
, Natural scene.the_vertices.sizeof
)
vkUnmapMemory( vk_device
, scene.staging_vertex_buffer.device_memory
)
discard vkBindBufferMemory( vk_device
, scene.staging_vertex_buffer.vkbuffer
, scene.staging_vertex_buffer.device_memory
, VkDeviceSize 0
)
discard vkBindBufferMemory( vk_device
, scene.vertex_buffer.vkbuffer
, scene.vertex_buffer.device_memory
, VkDeviceSize 0
)
scene.staging_index_buffer = a_vulkan_buffer( vk_device
, memory_properties
, VkBufferUsageFlags VK_BUFFER_USAGE_TRANSFER_SRC_BIT
, VkMemoryPropertyFlags bitor( VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord
, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT.ord
)
, VkDeviceSize scene.the_indices.sizeof
)
scene.index_buffer = a_vulkan_buffer( vk_device
, memory_properties
, VkBufferUsageFlags bitor(VK_BUFFER_USAGE_INDEX_BUFFER_BIT.ord, VK_BUFFER_USAGE_TRANSFER_DST_BIT.ord)
, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
, VkDeviceSize scene.the_indices.sizeof
)
vk_device.map_memory( scene.staging_index_buffer.device_memory
, data
)
copyMem(data, addr scene.the_indices[0], Natural scene.the_indices.sizeof)
vkUnmapMemory(vk_device, scene.staging_index_buffer.device_memory)
discard vkBindBufferMemory(vk_device, scene.staging_index_buffer.vkbuffer, scene.staging_index_buffer.device_memory, VkDeviceSize 0)
discard vkBindBufferMemory(vk_device, scene.index_buffer.vkbuffer, scene.index_buffer.device_memory, VkDeviceSize 0)
copyRegion.size = VkDeviceSize scene.the_vertices.sizeof
vkCmdCopyBuffer(copyCmd, scene.staging_vertex_buffer.vkbuffer, scene.vertex_buffer.vkbuffer, 1.uint32, addr copyRegion)
copyRegion.size = VkDeviceSize scene.the_indices.sizeof
vkCmdCopyBuffer(copyCmd, scene.staging_index_buffer.vkbuffer, scene.index_buffer.vkbuffer, 1.uint32, addr copyRegion)
# # Flushing the command buffer will also submit it to the queue and
# # uses a fence to ensure that all commands have been executed before returning
vk_device.flushCommandBuffer queue, command_pool, copyCmd
# Destroy staging buffers
# Note: Staging buffer must not be deleted before the copies have been submitted and executed
vkDestroyBuffer( vk_device
, scene.staging_vertex_buffer.vkbuffer
, nil
)
vkFreeMemory( vk_device
, scene.staging_vertex_buffer.device_memory
, nil
)
vkDestroyBuffer( vk_device
, scene.staging_index_buffer.vkbuffer
, nil
)
vkFreeMemory( vk_device
, scene.staging_index_buffer.device_memory
, nil
) ]#
proc cleanup*( vk_record: var Vulkan_Record
, scene: var Scene
) =
discard vkDeviceWaitIdle vk_record.vk_device
# recycle the Pools!
# vkDestroyDescriptorPool(demo->device, demo->desc_pool, NULL)
# vkDestroyCommandPool(demo->device, demo->command_pool, NULL);
#should we have an initial "setup command buffer"?
#[ for shape in scene.shapes:
vk_record.vk_device.vkDestroyPipeline(shape.graphicsPipeline.pipeline, nil)
vk_record.vk_device.vkDestroyPipelineLayout(shape.graphicsPipeline.pipelineLayout, nil)
vk_record.vk_device.vkDestroyDescriptorSetLayout(shape.descrSetLayout, nil)
for text in scene.texts:
vk_record.vk_device.vkDestroyPipeline(text.graphicsPipeline.pipeline, nil)
vk_record.vk_device.vkDestroyPipelineLayout(text.graphicsPipeline.pipelineLayout, nil)
vk_record.vk_device.vkDestroyDescriptorSetLayout(text.descrSetLayout, nil) ]#
for i,fb in vk_record.draw_command_buffers:
vkFreeCommandBuffers( vk_record.vk_device
, vk_record.command_pool
, 1
, addr vk_record.draw_command_buffers[i]
)
vk_record.vk_device.vkDestroyRenderPass(scene.render_pass, nil)
proc windowResize*( the_portal: ptr Portal
, ready_frame: var bool
, scene : var Scene
) =
readyFrame = false
#vk_record.draw_command_buffers.setLen 0
# frame_buffers.setLen 0
proc rebuild_render_pass_info*( vk_record: var Vulkan_Record
, scene: var Scene
) =
var
scissor = VkRect2D( extent: VkExtent2D( width: uint32 vk_record.swapchain.current_extent.width
, height: uint32 vk_record.swapchain.current_extent.height
)
, offset: VkOffset2D( x: 0
, y: 0
)
)
renderPassBeginInfo = VkRenderPassBeginInfo(sType: VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)
clearValues: array[2,VkClearValue]
clearValues[0].color = VkClearColorValue(float32: [0f, 0f, 0f, 1f])
clearValues[1].depth_stencil = VkClearDepthStencilValue( depth: 1.0f
, stencil: 0
)
renderPassBeginInfo.pNext = nil
renderPassBeginInfo.renderArea.offset.x = 0
renderPassBeginInfo.renderArea.offset.y = 0
renderPassBeginInfo.renderArea.extent.width = uint32 vk_record.swapchain.current_extent.width
renderPassBeginInfo.renderArea.extent.height = uint32 vk_record.swapchain.current_extent.height
renderPassBeginInfo.clearValueCount = 2
renderPassBeginInfo.pClearValues = addr clearValues[0]
renderPassBeginInfo.render_pass = scene.render_pass
renderPassBeginInfo.framebuffer = vk_record.frame_buffers[vk_record.currentFrameBuffer]
scene[].render_pass_begin_info = renderPassBeginInfo
scene[].scissor = scissor
import scene_object
, main_scenes
import std/tables
type
Scene_Record_Object = object of RootObj
current_scene*: ptr Scene
main_scene_table*: Table[string, ptr Scene]
Scene_Record* = ref object of Scene_Record_Object
proc a_scene_record*( the_main_scene: Main_Scene_Enum
, current_scene: ptr Scene = nil
): Scene_Record =
result = Scene_Record( current_scene: current_scene
, main_scene_table: initTable[string, ptr Scene]()
)
proc add_scene*( scene_record: var Scene_Record
, scene: ptr Scene
, scene_name: string
) =
scene_record.main_scene_table[scene_name] = scene
proc get_scene*( scene_record: var Scene_Record
, scene_name: string
): ptr Scene =
scene_record.main_scene_table[scene_name]
import tables
, ../drawable/[ shape_object
, textTypes
, plane
]
, ../deshn_entity/[ being
]
, ../vk/[ vulkan
, vkTypes
, depth_stencil
, buffer
]
type
SceneObj = object of RootObj
device*: ptr VkDevice
entities*: TableRef[string, int]
shapes*: seq[Shape]
#texts*: seq[SDFText]
deshn_beings*: seq[Deshn_Being]
planes*: seq[Plane]
current_entity_id*: int
render_pass*: VkRenderPass
depth_stencil*: Depth_Stencil
render_pass_begin_info*: VkRenderPassBeginInfo
scissor*: VkRect2D
vertex_buffer*: Buffer
index_buffer*: Buffer
staging_vertex_buffer*: Buffer
staging_index_buffer*: Buffer
# TODO: a better way , instead of having to redundantly copy vertices and indices
the_vertices*: seq[float32]
the_indices*: seq[uint32]
indirect_commands*: seq[VkDrawIndexedIndirectCommand]
Scene* = ref object of SceneObj
type
Main_Scene_Enum* = enum
# Begin -> intro0
# Alive -> intro1
Title, Intro
{.experimental: "parallel".}
import scene_object
, scene_utils
, scene_record
, ../vk/[ vulkan
, vkTypes
, vulkan_record
, graphics_pipeline
, pipeline_record
, buffer
, gpu
, vulkan_utils
]
, ../drawable/[ shape_object
, shape_types
, plane
, colors
, grid
]
, ../drawable/text as mText
, ../deshn_entity/[ being
, actions
]
, glm
, strUtils
, ../portal/keyboard
, ../camera
, std/tables
, ../state_machine
, options
proc load*( vulkan_record: var Vulkan_Record
, pipeline_record: Pipeline_Record
, intro: var Scene
, scene_record: var Scene_Record
) =
var
protag_shape = a_shape( vulkan_record
, pipeline_record
, intro.render_pass
, intro.current_entity_id
, 3
, "protag_tri"
, theSize = vec2f( 4.5
, 4.5
)
, being_color = silver_blue
, deshn_color = yellow
, camera_type = Camera_Kind.Perspective
, hollow = false
)
#[ intro.add Plane( shape: a_shape( vulkan_record
, pipeline_record
, intro.render_pass
, intro.current_entity_id
, 4
, "plane0_quad"
, theSize = vec2f( 80
, 40
)
, being_color = dark_purple
, deshn_color = yellow
, camera_type = Camera_Kind.Perspective
, hollow = false
)
, name: "plane0"
, grid: a_dynamic_grid( 10
, 10
, vulkan_record
, intro.render_pass
, pipeline_record
, intro.current_entity_id
, parent_buffer
)
) ]#
intro.add( a_deshn_being( shape = protag_shape
, name = "protag"
)
)
#[ intro.the_deshn_being("protag").move_to( (vulkan_record.swapchain.current_extent.width.int / 2).float32
, (vulkan_record.swapchain.current_extent.height.int / 2).float32
)
intro.the_plane("plane0").move_to( (vulkan_record.swapchain.current_extent.width.int / 2).float32
, (vulkan_record.swapchain.current_extent.height.int / 2).float32
) ]#
intro.the_deshn_being("protag").shape.camera.position_is vec3f(0.0,0.0,-50.0)
# intro.the_shape("plane0_quad").camera.position_is vec3f(0.0,0.0,-50.0)
scene_record.add_scene( addr intro
, "intro"
)
intro.the_deshn_being("protag").main_state_machine.current_state = some Main_Deshn_Being_States.Idle
intro.indirect_commands.setLen intro.current_entity_id
for i in 0..intro.current_entity_id - 1:
intro.indirect_commands[i].instanceCount = 1
intro.indirect_commands[i].firstInstance = 1
intro.indirect_commands[i].firstIndex = 0
intro.indirect_commands[i].indexCount = 1
#echo intro.the_deshn_being("protag").main_state_machine.transitions
prepare_vertices( intro
, vulkan_record.vk_device
, vulkan_record.gpu.memory_properties
, vulkan_record.command_pool
, vulkan_record.queue
, vulkan_record.master_vertex_buffer
, vulkan_record.master_index_buffer
)
proc input*( vulkan_record: var Vulkan_Record
, sr: var Scene_Record
) = discard
proc update*( vulkan_record: var Vulkan_Record
, intro: var Scene
, sr: var Scene_Record
, fps: string
) =
var
protag = intro.the_deshn_being("protag")
# plane = intro.the_plane("plane0")
if Key.K1.is_down_or_held:
protag.shape.camera.position_is vec3f( protag.shape.camera.position.xy
, protag.shape.camera.position.z + 0.1
)
if Key.K2.is_down_or_held:
protag.shape.camera.position_is vec3f( protag.shape.camera.position.xy
, protag.shape.camera.position.z - 0.1
)
#[ if Key.K3.is_down_or_held:
plane.shape.camera.position_is vec3f( plane.shape.camera.position.xy
, plane.shape.camera.position.z + 0.1
)
if Key.K4.is_down_or_held:
plane.shape.camera.position_is vec3f( plane.shape.camera.position.xy
, plane.shape.camera.position.z - 0.1
) ]#
if Key.Comma.is_down_or_held:
protag.move_up 1
if Key.O.is_down_or_held:
protag.move_down 1
if Key.A.is_down_or_held:
protag.move_left 1
if Key.E.is_down_or_held:
protag.move_right 1
if Key.Comma.is_up and
Key.O.is_up and
Key.A.is_up and
Key.E.is_up and
not protag.recovering:
protag.current_state_is Not_Moving
if not protag.deshn_pool_is_full and
not protag.recovering:
# echo "NOT moving, adding."
protag.add_amount_to_deshn_pool 0.03
else:
#echo "can't add because: " , protag.deshn_pool_is_full, " <> ", protag.recovering
discard
if protag.recovering:
#echo "RECOVERING: ", protag.current_deshn_pool_recovery_pool
protag.add_amount_to_recovery_pool 0.01
proc build_command_buffers*( draw_command_buffer: var VkCommandBuffer
, scene: var Scene
, graphics_pipeline: Graphics_Pipeline
, descriptor_set: VkDescriptorSet
, gpu: GPU
, vulkan_record: var Vulkan_Record
, indirect_command_buffer: var Buffer
) =
var
command_buffer_info = VkCommandBufferBeginInfo(sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
scissor: VkRect2D
clearValues: array[2,VkClearValue]
render_pass_info: VkRenderPassBeginInfo
offsets = VkDeviceSize 0
viewport = VkViewport( width: float32 vulkan_record.swapchain.current_extent.width
, height: float32 vulkan_record.swapchain.current_extent.height
, minDepth: 0.0f
, maxDepth: 1.0f
)
scissor.extent.width = uint32 vulkan_record.swapchain.current_extent.width
scissor.extent.height = uint32 vulkan_record.swapchain.current_extent.height
scissor.offset.x = 0
scissor.offset.y = 0
clearValues[0].color = VkClearColorValue(float32: [0f, 0f, 0f, 1f])
clearValues[1].depth_stencil = VkClearDepthStencilValue(depth: 1.0f, stencil: 0 )
render_pass_info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
render_pass_info.pNext = nil
render_pass_info.renderArea.offset.x = 0
render_pass_info.renderArea.offset.y = 0
render_pass_info.renderArea.extent.width = uint32 vulkan_record.swapchain.current_extent.width
render_pass_info.renderArea.extent.height = uint32 vulkan_record.swapchain.current_extent.height
render_pass_info.clearValueCount = 2
render_pass_info.pClearValues = addr clearValues[0]
render_pass_info.render_pass = scene.render_pass
for i in 0 .. vulkan_record.draw_command_buffers.len:
render_pass_info.framebuffer = vulkan_record.frame_buffers[i]
discard vkBeginCommandBuffer( vulkan_record.draw_command_buffers[i]
, addr command_buffer_info
)
vkCmdBeginRenderPass( vulkan_record.draw_command_buffers[i]
, addr render_pass_info
, VK_SUBPASS_CONTENTS_INLINE
)
vkCmdSetViewport( vulkan_record.draw_command_buffers[i]
, 0
, 1
, addr vulkan_record.current_viewport
)
vkCmdSetScissor( vulkan_record.draw_command_buffers[i]
, 0
, 1
, addr scissor
)
vkCmdBindDescriptorSets( vulkan_record.draw_command_buffers[i]
, VK_PIPELINE_BIND_POINT_GRAPHICS
, graphics_pipeline.pipeline_layout
, 0
, 1
, addr descriptor_set
, 0, nil
)
vkCmdBindPipeline( vulkan_record.draw_command_buffers[i]
, VK_PIPELINE_BIND_POINT_GRAPHICS
, graphics_pipeline.pipeline
)
vkCmdSetLineWidth(vulkan_record.draw_command_buffers[i], 1)
vkCmdBindVertexBuffers( vulkan_record.draw_command_buffers[i]
, 0
, 1
, addr scene.vertex_buffer.vk_buffer
, addr offsets
)
vkCmdBindIndexBuffer( vulkan_record.draw_command_buffers[i]
, scene.index_buffer.vk_buffer
, VkDeviceSize 0
, VK_INDEX_TYPE_UINT32
)
#[ vkCmdPushConstants( draw_command_buffer
, graphics_pipeline.pipeline_layout
, VKShaderStageFlags VK_SHADER_STAGE_VERTEX_BIT.ord or VK_SHADER_STAGE_FRAGMENT_BIT.ord
, uint32 0
, uint32 sizeof Shape_Pushes
, cast[pointer] ( addr push_constants )
) ]#
if gpu.features.multiDrawIndirect.bool:
vkCmdDrawIndexedIndirect( vulkan_record.draw_command_buffers[i]
, indirect_command_buffer.vk_buffer
, VkDeviceSize 0
, uint32 scene.indirect_commands.len
, uint32 sizeof(VkDrawIndexedIndirectCommand)
)
vkCmdEndRenderPass( vulkan_record.draw_command_buffers[i]
)
discard vkEndCommandBuffer( vulkan_record.draw_command_buffers[i]
)
#shape.camera.updateAR(60, vulkan_record.swapchain.current_extent.width.float / float vulkan_record.swapchain.current_extent.height )
#vulkan_record.readyFrame = true
proc show*( vulkan_record: var Vulkan_Record
, scene: var Scene
, pipeline_record: Pipeline_Record
) =
vulkan_record.readyFrame = true
import portalObj
, ../platforms/unix/x11/xcb
#, ../scene/tys
proc lock_window*( the_portal: ptr Portal
, width: int
, height: int
) =
when defined linux:
var theHints = WMSizeHints( flags: WM_SIZE_HINT_P_MIN_SIZE.ord
, minWidth: int32 width
, minHeight: int32 height
, maxWidth: int32 width
, maxHeight: int32 height
)
discard xcb_change_property( p.conn
, ord XCB_PROP_MODE_REPLACE
, p.window
, xcb_atom_t XCB_ATOM_WM_NORMAL_HINTS
, xcb_atom_t XCB_ATOM_WM_SIZE_HINTS
, 32
, uint32 WMSizeHints.sizeof shr 2
, addr theHints
)
proc toggle_full_screen*(the_portal: ptr Portal) =
when defined linux:
var
cookie3 = xcb_intern_atom(p.conn, 0, 15, "_MOTIF_WM_HINTS" )
reply3 = xcb_intern_atom_reply( p.conn, cookie3, err0)
fullscreenHint = MotifHints( flags: 2
, functions: 0
, decorations: 0
, input_mode: 0
, status: 0
)
decoratedHint = MotifHints( flags: MWM_HINTS_FUNCTIONS or MWM_HINTS_DECORATIONS
, functions: MWM_FUNC_MOVE or MWM_FUNC_MINIMIZE or MWM_FUNC_CLOSE
, decorations: MWM_DECOR_BORDER or MWM_DECOR_TITLE or MWM_DECOR_MINIMIZE or MWM_DECOR_MENU
, input_mode: 0
, status: 0
)
if not p.isFullScreen:
discard xcb_change_property( p.conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, p.window
, reply3.atom
, reply3.atom
, 32
, 5
, addr fullscreenHint
)
p.isFullScreen = true
else:
discard xcb_change_property( p.conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, p.window
, reply3.atom
, reply3.atom #THIS is essential
, 32
, 5
, addr decoratedHint
)
p.isFullScreen = false
#[ proc top*(a: WindowArea): int16 = a.y
proc left*(a: WindowArea): int16 = a.x
proc right*(a: WindowArea): int16 = a.x + int16 a.width
proc bottom*(a: WindowArea): int16 = a.y + int16 a.height
proc `==`*(a, b: WindowArea): bool =
a.x == b.x and
a.y == b.y and
a.width == b.width and
a.height == b.height
]#
{.experimental: "codeReordering".}
when defined linux:
import ../platforms/unix/x11/[x,xcb, xlib, xkbCommon]
when defined windows:
import winim/lean
import ../platforms/w64/[the_types]
import keyboard
, mouse
, monitor
import tables
type
NS = object
retina*: bool
frameName*: array[256, char]
X11 = object
className*: array[256, char]
instanceName*: array[256, char]
Win32_Key_Menu = object
keymenu*: bool
WL = object
appId*: array[256,char]
Portal_Config* = ref object
title*: ptr char
x_pos*: int
y_pos*: int
width*: int
height*: int
resizable*: bool
visible*: bool
decorated*: bool
focused*: bool
autoIconify*: bool
floating*: bool
maximized*: bool
centerCursor*: bool
focusOnShow*: bool
mousePassthrough*: bool
scaleToMonitor*: bool
ns*: NS
x11*: X11
win32*: Win32_Key_Menu
wl*: WL
PortalObj* = object of RootObj
relays*: Relays
quit*: bool
title*: string
monitorCount: int
currMonitor*: Monitor
monitors*: seq[Monitor]
width*: uint16
height*: uint16
config*: Portal_Config
when defined linux:
conn*: ptr xcb_connection_t
wid*: uint32
reply1*,reply2*: ptr xcb_intern_atom_reply_t
window*: xcb.xcb_window_t # is this root???
root*: Window
iter*: xcb_screen_iterator_t
setup*: ptr xcb_setup_t
userPtr*: pointer
group*: xkb_layout_index_t
xdisplay*: xlib.PDisplay
#kb*: X11Kb
xkbContext*: ptr xkb_context
xkbkm*: ptr xkb_keymap
xkbState* : ptr xkb_state
xkbNewState* : ptr xkb_state
xkbCompState*: ptr xkb_compose_state
xkbCompTable*: ptr xkb_compose_table
locale*: string
screen*: ptr xcb_screen_t
screenIter*: xcb_screen_iterator_t
firstXkbEvent*: uint8
# TODO: find the """proper""" xcb/xkb function for getting group change
# until then, we store the group, and compare it with the event's group
# when the proper event fires, in order to check if we need to update layouts for an actually new group
currKeyboardGroup*: uint8
# TODO: break this out into a proper `Keyboard` struct later
currKeyboardLayout*: string
xwindow*: Window
xfixesEvent*: int
xfixesError*: int
xcompEvent*: int
xcompError*: int
xcbReply*: ptr xcb_query_extension_reply_t
qp*: xcb_query_pointer_cookie_t
mouseRep*: ptr xcb_query_pointer_reply_t
mouse*: Mouse
wmState*: xcb_intern_atom_cookie_t
wmHidden*: xcb_intern_atom_cookie_t
wmMaxX*: xcb_intern_atom_cookie_t
wmMaxY*: xcb_intern_atom_cookie_t
winGeo*: WindowArea
#clientGeo*: WindowArea
#frameGeo*: WindowArea
when defined windows:
hwnd*: lean.HWND
msg*: MSG
wParam*: WPARAM
lParam*: LPARAM
wndclass*: WNDCLASS
h_Instance*: HMODULE
main_window_class*: ATOM
win32_message_loop_hook_procs*: seq[Win32_Message_Loop_Hook_Proc]
class_atom_table*: Table[string, ATOM]
accelorator_exists*: bool
w32_window_table*: Table[HWND, Win32_Window]
win32_Instance*: HANDLE
Portal* = ref object of PortalObj
# # relays.nim
type
Key_Relay* = proc ( the_portal: ptr Portal
, key: Key
, action: int
) {.closure.}
Mouse_Key_Relay* = proc ( the_portal: ptr Portal
, mb: MouseButton
, action: MouseBtnAction
) {.closure.}
Window_Resize_Relay* = proc ( the_portal: ptr Portal
, width: int
, height: int
) {.closure.}
Window_Mapped_Relay* = proc ( the_portal: ptr Portal
, width: int
, height: int
) {.closure.}
Window_Closed_Relay* = proc ( the_portal: ptr Portal
) {.closure.}
Window_Input_Language_Change_Relay* = proc ( the_portal: ptr Portal
) {.closure.}
Relays* = object
window_closed_relay*: Window_Closed_Relay
#key_relay*: Key_Relay
#mouse_key_relay*: Mouse_Key_Relay
#window_resize_relay*: Window_Resize_Relay
#window_mapped_relay*: Window_Mapped_Relay
#window_input_language_change_relay*: Window_Input_Language_Change_Relay
#[ proc set_key_relay*( the_portal: ptr Portal
, key_relay: Key_Relay
) =
#TODO: actual pointers like GLFW
the_portal.relays.key_relay = key_relay
proc set_mouse_relay*( the_portal: ptr Portal
, mouse_key_relay: Mouse_Key_Relay
) = the_portal.relays.mouse_key_relay = mouse_key_relay
proc set_window_resize_relay*( the_portal: ptr Portal
, window_resize_relay: Window_Resize_Relay
) = the_portal.relays.window_resize_relay = window_resize_relay
proc set_window_mapped_relay*( the_portal: ptr Portal
, window_mapped_relay: Window_Mapped_Relay
) = the_portal.relays.window_mapped_relay = window_mapped_relay ]#
proc set_window_closed_relay*( the_portal: ptr Portal
, window_closed_relay: Window_Closed_Relay
) = the_portal.relays.window_closed_relay = window_closed_relay
#[ proc set_window_input_language_change_relay*( the_portal: ptr Portal
, window_input_language_change_relay: Window_Input_Language_Change_Relay
) = the_portal.relays.window_input_language_change_relay = window_input_language_change_relay ]#
#[
void _glfwInputWindowCloseRequest(_GLFWwindow* window)
{
assert(window != NULL);
window->shouldClose = GLFW_TRUE;
if (window->callbacks.close)
window->callbacks.close((GLFWwindow*) window);
}
]#
proc close_window*(p: var Portal) =
when defined linux:
xcb_disconnect p.conn
discard xcb_destroy_window( p.conn
, p.window
)
when defined windows:
p.quit = true
#[ THINGS TO FIX LATER:
]#
#{.experimental: "codeReordering".}
{.experimental: "notnil".}
when defined linux:
import ../platforms/unix/x11/[ x
, xlib
, xcb
, xkblib
, xkbCommon
, keysyms
, xfixes
, xcomposite
, xrandr
]
import keyboard
, mouse
, monitor
, portalObj
, ../utils/[etc]
import bitops
, re
, sequtils
, sugar
, tables
# , utils
# , ../vk/[vkTypes, swapchain, utils, vulkan]
# , monitor
# , ../scene/scene
# , ../drawable/[shapes]
# , ../scene/scene
# , ../camera
#, glm
when defined windows:
import winim
, winim/lean
, ../platforms/w64/[ events
, utils
, the_types
, the_functions
]
proc title_is*( the_portal: ptr Portal
, s: string
) =
when defined linux:
discard xcb_change_property( p.conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, p.window
, 39
, 31
, s.sizeof.uint8
, s.len.uint32
, addr s[0]
)
proc the_screen_info() = discard
# TODO:
# fix the bad(?) video modes for the monitors
# Gamma stuff
# figure out a solution to workarea
proc a_portal*( width: uint16 = 1920
, height: uint16 = 1080
, title: string = "Portal"
): Portal =
when defined linux:
var
title = title
xdisplay = XOpenDisplay nil
# ewmh: xcb_ewmh_connection_t
conn = XGetXCBConnection xdisplay
mask = XCB_GC_FOREGROUND.ord or XCB_GC_GRAPHICS_EXPOSURES.ord
setup: ptr xcb_setup_t
wmClassTitle = title & '\0' #& title & '\0'
root: Window
screenIter = xcb_setup_roots_iterator xcb_get_setup conn
#scr: cint = screenIter.rem
screen: ptr xcb_screen_t = screenIter.data
window = xcb_generate_id conn
# xwin = DefaultRootWindow xdisplay
# ewmhCookie = xcb_ewmh_init_atoms(conn, addr ewmh)
#ewmhRep = xcb_ewmh_init_atoms_replies(addr ewmh, ewmhCookie, err0)
valueList = [screen.black_pixel,0]
#ver = conn.xcb_randr_query_version_reply( xcb_randr_query_version(conn, 1, 6) , err0 ) # TODO: should it be 1.5 or 1.6???
sr = xcb_randr_get_screen_resources_current(conn, screen.root)
reply = xcb_randr_get_screen_resources_current_reply( conn
, sr
, nil
)
outs: ptr xcb_randr_output_t = xcb_randr_get_screen_resources_current_outputs reply
lenn = xcb_randr_get_screen_resources_current_outputs_length reply
monitorAmount: int
modesLen = xcb_randr_get_screen_resources_current_modes_length(reply)
modes = xcb_randr_get_screen_resources_current_modes(reply)
primaryCookie = xcb_randr_get_output_primary(conn, screen.root)
primary = xcb_randr_get_output_primary_reply(conn, primaryCookie, err0)
primaryOut: xcb_randr_get_output_info_cookie_t = xcb_randr_get_output_info(conn
, primary.output
, reply.timestamp
)
primaryInfo = xcb_randr_get_output_info_reply( conn
, primaryOut
, nil
)
primaryCRTC = xcb_randr_get_crtc_info(conn, primaryInfo.crtc, reply.timestamp)
actualPrimary = xcb_randr_get_crtc_info_reply(conn, primaryCRTC, err0)
# primaryModesInfo = xcb_randr_get_output_info_modes(primaryInfo)
# primaryModesInfoReply = xcb_randr_get_output_info_modes_length(primaryInfo)
#primaryOutputInfoModes = xcb_randr_get_output_info_modes_length()
monitors: seq[Monitor]
primaryMonitor: Monitor
theRandrModes: seq[xcb_randr_mode_info_t]
# TODO: stop being stupid and do it properly in the monitorAdd loop
for x in 0 ..< modesLen:
theRandrModes.add modes[x]
#theRandrModes.sort
mask = XCB_CW_BACK_PIXEL or XCB_CW_EVENT_MASK
valueList[1] = XCB_NONE or
XCB_EVENT_MASK_STRUCTURE_NOTIFY or
XCB_EVENT_MASK_ENTER_WINDOW or
XCB_EVENT_MASK_POINTER_MOTION_HINT or
XCB_EVENT_MASK_BUTTON_1_MOTION or
XCB_EVENT_MASK_BUTTON_2_MOTION or
XCB_EVENT_MASK_BUTTON_3_MOTION or
XCB_EVENT_MASK_BUTTON_4_MOTION or
XCB_EVENT_MASK_BUTTON_5_MOTION or
XCB_EVENT_MASK_EXPOSURE or
XCB_EVENT_MASK_BUTTON_PRESS or
XCB_EVENT_MASK_BUTTON_RELEASE or
XCB_EVENT_MASK_BUTTON_MOTION or
XCB_EVENT_MASK_POINTER_MOTION or
XCB_EVENT_MASK_LEAVE_WINDOW or
XCB_EVENT_MASK_KEY_PRESS or
XCB_EVENT_MASK_KEY_RELEASE or
XCB_MAP_NOTIFY or
XCB_MAPPING_NOTIFY or
XCB_MAP_REQUEST or
XCB_EVENT_MASK_PROPERTY_CHANGE or
XCB_EVENT_MASK_FOCUS_CHANGE or
XCB_EVENT_MASK_KEYMAP_STATE or
XCB_EVENT_MASK_VISIBILITY_CHANGE #or
# TODO: This complicates how screen.width|height is reported and complicates the viewport size
# as it combines 2+ monitors together
# not necessarily needed to handle resizing, but is it better™?
# XCB_EVENT_MASK_RESIZE_REDIRECT
if xcb_connection_has_error(conn).bool: quit "ERROR: xcb conn"
discard xcb_create_window( conn # connection
, 0 # depth (same as root)
, window # window ID
, screen.root # parent window
, 0 # X
, 0 # Y
, width
, height
, 0 #border width
, xcb_window_class_t.XCB_WINDOW_CLASS_INPUT_OUTPUT.uint16
, screen.root_visual
, mask.uint32
, valueList[0].addr
)
var
ev: xcb_generic_event_t
cookie = xcb_intern_atom(conn, 1, 12,"WM_PROTOCOLS")
cookie2 = xcb_intern_atom(conn, 0, 16, "WM_DELETE_WINDOW")
cookie3 = xcb_intern_atom(conn, 0, 15, "_MOTIF_WM_HINTS" )
# maxvertAtom = xcb_intern_atom(conn, 0, 13, "_NET_WORKAREA")
# maxHorzAtom = xcb_intern_atom(conn, 0, 28, "_NET_WM_STATE_MAXIMIZED_HORZ")
#something = xcb_get_property(conn, 0, window, x_NET_SUPPORTING_WM_CHECK, XCB_ATOM_WINDOW.ord, 0, 1024)
reply1 = xcb_intern_atom_reply(conn, cookie, err0)
reply2 = xcb_intern_atom_reply(conn, cookie2, err0)
reply3 = xcb_intern_atom_reply( conn, cookie3, err0)
# replyMaxV = xcb_intern_atom_reply( conn, maxvertAtom, err0)
# replyMaxH = xcb_intern_atom_reply( conn, maxhorzAtom, err0)
# replyMaxVProp = xcb_get_property( conn, 0, window, replyMaxV.atom, XCB_ATOM_CARDINAL.ord, 0, 1024)
# replyMaxHProp = xcb_get_property( conn, 0, window, replyMaxH.atom, XCB_ATOM_STRING.ord, 0, 0)
# vRep = xcb_get_property_reply(conn, replyMaxVProp, err0)
# hRep = xcb_get_property_reply(conn, replyMaxHProp, err0)
colors = rgbFromDepth screen.root_depth.int
atomEdid = xcb_intern_atom(conn, 0, 4, "EDID")
atomEdidRep = xcb_intern_atom_reply(conn, atomEdid, err0)
# atomWorkArea = xcb_intern_atom(conn, 0, 13, "_NET_WORKAREA")
# atomWARep = xcb_intern_atom_reply(conn, atomWorkArea, err0)
decoratedHint = MotifHints( flags: MWM_HINTS_FUNCTIONS or MWM_HINTS_DECORATIONS
, functions: MWM_FUNC_MOVE or MWM_FUNC_MINIMIZE or MWM_FUNC_CLOSE or MWM_FUNC_RESIZE
, decorations: MWM_DECOR_BORDER or MWM_DECOR_TITLE or MWM_DECOR_MINIMIZE or MWM_DECOR_MENU
, input_mode: 0
, status: 0
)
discard xcb_change_property( conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, window
, reply1.atom
, 4
, 32
, 1
, addr reply2.atom
)
# setting window title
discard xcb_change_property( conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, window
, 39
, 31
, title.sizeof.uint8
, title.len.uint32
, addr title[0]
)
# WM_CLASS property (?????)
discard xcb_change_property( conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, window
, 39
, 31
, wmClassTitle.sizeof.uint8
, wmClassTitle.len.uint32
, addr wmClassTitle[0]
)
discard xcb_change_property( conn
, xcb_prop_mode_t.XCB_PROP_MODE_REPLACE.ord
, window
, reply3.atom
, reply3.atom
, 32
, 5
, addr decoratedHint
)
# this will get connected monitors
# but xcb_randr_get_output_info_reply will still report monitors even if they're disabled
# so we get the CRTC, which will only(?) get currently enabled monitors
# so we more accurately know what the user currently has
# NOTE:
# Currently, just using the depth, from the geoReply, which is from the overall "Screen" (combined render area from both monitors(?))
# Maybe in the future, properly get the depth, by individual monitor
for x in 0 ..< lenn:
var
outt = xcb_randr_get_output_info_reply(conn, xcb_randr_get_output_info(conn, outs[x], reply.timestamp), nil )
outCR = xcb_randr_get_crtc_info(conn, outt.crtc, reply.timestamp)
outActual = xcb_randr_get_crtc_info_reply(conn, outCR, err0)
outmodes = xcb_randr_get_output_info_modes outt
outmodeslen = xcb_randr_get_output_info_modes_length outt
# TODO: do we really need the connection check if we're getting a CRTC reply?
if outt.connection == RR_Connected and
not outActual.isNil:
for m in 0 ..< modesLen:
if modes[m].id == outActual.mode:
var
b1 = xcb_randr_get_output_property( conn
, outs[x]
, atomEdidRep.atom
, XCB_ATOM_ANY.ord
, 0
, 100
, 0
, 0
)
a1 = xcb_randr_get_output_property_reply(conn, b1, err0)
propData = xcb_randr_get_output_property_data(a1)
edidStr = newString(a1.num_items)
copyMem( edidStr[0].addr
, propData
, a1.num_items
)
var
actualvTotal: float32 = cdouble modes[m].vtotal
if bitand(modes[m].mode_flags, RR_DoubleScan).bool: actualvTotal *= 2
if bitand(modes[m].mode_flags, RR_Interlace).bool: actualvTotal /= 2
var
aMonitor = Monitor( currVideoMode: VideoMode( refreshRate: ( modes[m].dot_clock.float32 /
( modes[m].htotal.float32 *
actualvTotal.float32
)
)
, width: int outActual.width
, height: int outActual.height
, bpp: int screen.root_depth
, redbits: colors[0]
, greenbits: colors[1]
, bluebits: colors[2]
)
, rotation : int (outActual[].addr).rotation
, widthMM : int outt.mm_width
, heightMM : int outt.mm_height
, connName : $cast[cstring](xcb_randr_get_output_info_name outt)
, edid: edidStr
, name: (edidstr.findAll(re"(\w+ \w+)\n")[0])[0..^2] # chop the `\n` off at the end
)
#add all the display modes!
#TODO: investigate the weird video modes with high refreshrates
for mmm, theMode in theRandrModes:
for mmm2 in 0 ..< outmodesLen:
if theMode.id == outmodes[mmm2]:
var theActualvTotal: float32 = cdouble theMode.vtotal
if bitand(modes[m].mode_flags, RR_DoubleScan).bool: actualvTotal *= 2
if bitand(modes[m].mode_flags, RR_Interlace).bool: actualvTotal /= 2
var aVMode = VideoMode( refreshRate: (modes[m].dot_clock.float32 /
( modes[m].htotal.float32 *
theActualvTotal.float32
)
)
, width: int theMode.width
, height: int theMode.height
, bpp: int screen.root_depth
, redbits: colors[0]
, greenbits: colors[1]
, bluebits: colors[2]
)
aMonitor.videoModes.add aVMode
#echo aMonitor.name, " can: ", repr theMode
monitorAmount += 1
monitors.add aMonitor
#TODO: a better way to check(verify?) the primary monitor
if outActual.x == actualPrimary.x and
outActual.y == actualPrimary.y and
outActual.width == actualPrimary.width and
outActual.height == actualPrimary.height:
primaryMonitor = aMonitor
else: discard#echo repr modes[m]
discard xcb_map_window(conn, window)
#echo repr monitors
xcb_aux_sync conn
var
xcb_xfixes_id2 = xcb_extension_t( name: "XFIXES", global_id: 0)
p = Portal( width: width
, height: height
, title: title
, reply1: reply1
, reply2: reply2
, conn: conn
, window: window
, setup: setup
, xdisplay: xdisplay
, screen: screen
, currMonitor: primaryMonitor
, monitors: monitors
# , screenIter: iter
, locale: theLocale()
, mouse: Mouse()
#, xwindow: DefaultRootWindow xdiplay
, xcbReply: conn.xcb_get_extension_data( addr xcb_xfixes_id2)
#, xkbCompState: addr xkbcs
#, kb: kb
#, relays: Relays(key_relay: Key_Relay())
#, group: group
, root: root
# , iter: iter
)
p.xdisplay.loadXKB(p.conn, p.firstXkbEvent)
assert p.xdisplay.XCompositeQueryExtension(addr p.xcompEvent, addr p.xCompError) == true
assert p.xdisplay.XFixesQueryExtension(addr p.xfixes_event, addr p.xfixes_error) == true
p.xdisplay.XFixesSelectCursorInput( p.xwindow
, XFixesDisplayCursorNotifyMask
)
var xfixesMask: uint32 = XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_CLIENT_CLOSE.ord or
XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_WINDOW_DESTROY.ord or
XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER.ord
discard xcb_xfixes_select_selection_input_checked(p.conn, p.window, xcb_atom_t XCB_ATOM_PRIMARY.ord, xfixesMask)
discard xcb_xfixes_select_selection_input_checked(p.conn, p.window, xcb_atom_t XCB_ATOM_SECONDARY.ord, xfixesMask)
p.wmState = xcb_intern_atom(conn, 0, 13, "_NET_WM_STATE" )
p.wmHidden = xcb_intern_atom(conn, 0, 20, "_NET_WM_STATE_HIDDEN" )
p.wmMaxY = xcb_intern_atom(conn, 0, 28, "_NET_WM_STATE_MAXIMIZED_VERT" )
p.wmMaxX = xcb_intern_atom(conn, 0, 28, "_NET_WM_STATE_MAXIMIZED_HORZ" )
#p.getDPI()
when defined windows:
var
h_instance = GetModuleHandle nil
appName = "portal!"
hwnd: lean.HWND
wndclass: WNDCLASS
p = Portal( width: width
, height: height
, title: title
)
GetModuleHandleExW( bitor( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
, GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
)
, cast[ptr WCHAR] (addr appName)
, cast[ptr HMODULE] (addr h_instance)
)
wndclass.style = CS_HREDRAW or CS_VREDRAW
wndclass.lpfnWndProc = WindowProc
wndclass.cbClsExtra = cast[int32] (( Portal).sizeof)
wndclass.cbWndExtra = cast[int32] ((Portal).sizeof)
wndclass.hInstance = h_instance
wndclass.hIcon = LoadIcon(0, IDI_APPLICATION)
wndclass.hCursor = LoadCursor(0, IDC_ARROW)
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH)
wndclass.lpszMenuName = nil
wndclass.lpszClassName = appName
RegisterClass(wndclass)
hwnd = CreateWindow( appName
, "p0"
, WS_VISIBLE or WS_OVERLAPPEDWINDOW
, CW_USEDEFAULT
, CW_USEDEFAULT
, CW_USEDEFAULT
, CW_USEDEFAULT
, 0
, 0
, h_instance
, addr (p)
)
discard ShowWindow(hwnd, SW_SHOW)
discard UpdateWindow(hwnd)
var lp_string: LPWSTR = "Windows did a bad"
if GetLastError() != 0: MessageBox( 0
, T $GetLastError().why
, lp_string # TODO ( T"some_string" ) macro gives an error
, 0
)
p.hwnd = hwnd
p.wndclass = wndclass
p.hInstance = h_instance
var
thing = 98
thing2: ptr int = addr thing
#[
if SetProp( GetActiveWindow()
, "thing2"
, cast[HANDLE] ((thing2))
) == 0: quit("SetProp thing2 failed")
var get_thing: pointer = cast[pointer] ( GetProp( GetActiveWindow() , "thing2") )
echo "GETPROP INSIDE PORTAL:"
echo repr (cast[ptr int](get_thing)[])
echo "GETPROP PORTAL END/ "
]#
ChangeWindowMessageFilterEx( p.hwnd
, WM_DROPFILES
, MSGFLT_ALLOW
, nil
)
ChangeWindowMessageFilterEx( p.hwnd
, WM_COPYDATA
, MSGFLT_ALLOW
, nil
)
#ChangeWindowMessageFilterEx(p.hwnd,WM_COPYGLOBALDATA, MSGFLT_ALLOW, nil);
var ctrl =
TINITCOMMONCONTROLSEX( dwSize: int32 sizeof(TINITCOMMONCONTROLSEX)
, dwICC: ICC_DATE_CLASSES or ICC_LISTVIEW_CLASSES or
ICC_INTERNET_CLASSES or
ICC_LINK_CLASS or ICC_BAR_CLASSES or ICC_COOL_CLASSES
)
InitCommonControlsEx(ctrl)
OleInitialize(nil)
p
# TODO: get this inside keyboard.nim without recursive import errors
when defined linux:
proc update_key_state*( p: var Portal
, key: KeySym
, action: Key_Action
) =
#var held: bool
#echo "[",key_from_sym(key).key, "]", " was: ", $key_from_sym(key).state
if key_from_sym(key).state == KeyState.Up and
action == Key_Action.Press: key_from_sym(key).state = KeyState.Down
elif ( key_from_sym(key).state == KeyState.Down or
key_from_sym(key).state == KeyState.Held) and
action == Key_Action.Release: key_from_sym(key).state = KeyState.Up
elif key_from_sym(key).state == KeyState.Down and
action == Key_Action.Press: key_from_sym(key).state = KeyState.Held
#echo "[",key_from_sym(key).key, "]", " now is: ", $key_from_sym(key).state
#echo ""
p.relays.key_relay( p
, key_from_sym(key).key
, action.ord
)
when defined windows:
proc update_key_state*( p: var Portal
, key: WORD
, action: Key_Action
) = discard
#var held: bool
#echo "[",key_from_sym(key).key, "]", " was: ", $key_from_sym(key).state
#[ if key_from_sym(key).state == KeyState.Up and
action == Key_Action.Press: key_from_sym(key).state = KeyState.Down
elif ( key_from_sym(key).state == KeyState.Down or
key_from_sym(key).state == KeyState.Held) and
action == Key_Action.Release: key_from_sym(key).state = KeyState.Up
elif key_from_sym(key).state == KeyState.Down and
action == Key_Action.Press: key_from_sym(key).state = KeyState.Held
#echo "[",key_from_sym(key).key, "]", " now is: ", $key_from_sym(key).state
#echo "" ]#
#[ p.relays.key_relay( p
, key_from_sym(key).key
, action.ord
) ]#
# TODO:
# 1. get this inside keyboard.nim without recursive import errors
# 2. Handle multiple scroll wheels
# 3. Do we actually care about MouseBtnState.PressedAndScrolledUp && MouseBtnState.PressedAndScrolledDown
when defined linux:
proc updateMouseKeyState*( the_portal: ptr Portal
, mb: xcb_button_t
, action: MouseBtnAction
) =
#[
MouseBtnState* {.pure.} = enum Up Down Held ScrolledUp ScrolledDown PressedAndScrolledUp PressedAndScrolledDown
MouseBtnAction* {.pure.} = enum Release Press ScrollUp ScrollDown
]#
case action
of MouseBtnAction.Press:
mbs[mb - 1].state = MouseBtnState.Down
of MouseBtnAction.Release:
mbs[mb - 1].state = MouseBtnState.Up
of MouseBtnAction.ScrollUp:
mbs[1].state = MouseBtnState.ScrolledUp
of MouseBtnAction.ScrollDown:
mbs[1].state = MouseBtnState.ScrolledDown
#else: discard
p.relays.mouse_key_relay( p
, MouseButton ord (mb - 1)
, action
)
# TODO:
# 1. get this inside keyboard.nim without recursive import errors
# 2. Handle multiple scroll wheels
# 3. Do we actually care about MouseBtnState.PressedAndScrolledUp && MouseBtnState.PressedAndScrolledDown
proc updateMouseKeyState*( the_portal: ptr Portal
, mb: xcb_button_t
, action: MouseBtnAction
) =
#[
MouseBtnState* {.pure.} = enum Up Down Held ScrolledUp ScrolledDown PressedAndScrolledUp PressedAndScrolledDown
MouseBtnAction* {.pure.} = enum Release Press ScrollUp ScrollDown
]#
case action
of MouseBtnAction.Press:
mbs[mb - 1].state = MouseBtnState.Down
of MouseBtnAction.Release:
mbs[mb - 1].state = MouseBtnState.Up
of MouseBtnAction.ScrollUp:
mbs[1].state = MouseBtnState.ScrolledUp
of MouseBtnAction.ScrollDown:
mbs[1].state = MouseBtnState.ScrolledDown
#else: discard
p.relays.mouse_key_relay( p
, MouseButton ord (mb - 1)
, action
)
proc events*( p: var Portal
) =
when defined linux:
discard xcb_flush p.conn
var
cm: xcb_client_message_event_t
ev: ptr xcb_generic_event_t
ev = xcb_poll_for_event p.conn
if not ev.isNil:
case ev.response_type and 0x7f
#of XCB_RESIZE_REQUEST: discard
of XCB_EXPOSE: discard nil
of XCB_MOTION_NOTIFY:
var me = cast[ptr xcb_motion_notify_event_t](ev)
p.mouse.posX = me.event_x
p.mouse.posY = me.event_y
of XCB_BUTTON_PRESS:
var bpe = cast[ptr xcb_button_press_event_t](ev)
case bpe.detail
of 4: p.updateMouseKeyState bpe.detail, MouseBtnAction.ScrollUp
of 5: p.updateMouseKeyState bpe.detail, MouseBtnAction.ScrollDown
else: p.updateMouseKeyState bpe.detail, MouseBtnAction.Press
p.mouseRep = cast[ptr xcb_query_pointer_reply_t](ev)
# need to subtract old mouse pos from new
of XCB_BUTTON_RELEASE:
var bpe = cast[ptr xcb_button_release_event_t](ev)
p.updateMouseKeyState bpe.detail, MouseBtnAction.Release
p.mouseRep = cast[ptr xcb_query_pointer_reply_t](ev)
of XCB_ENTER_NOTIFY: discard nil
of XCB_LEAVE_NOTIFY: discard nil
of XCB_KEY_PRESS:
var
kp: ptr xcb_key_press_event_t = cast[ ptr xcb_key_press_event_t](ev)
#kcs: int16 = if bitand(kp.state, ShiftMask).bool: 1 else: 0
#p.update_key_state(XkbKeycodeToKeysym(p.xdiplay, kp.detail.char, 0, kcs), Press)
# TODO: this can fail sometimes?
p.update_key_state(xkb_state_key_get_one_sym(p.xkbState, kp.detail), Key_Action.Press)
of XCB_KEY_RELEASE:
var
kr: ptr xcb_key_release_event_t = cast[ ptr xcb_key_release_event_t](ev)
#kcs: int16 = if bitand(kr.state, ShiftMask).bool: 1 else: 0
p.update_key_state(xkb_state_key_get_one_sym(p.xkbState, kr.detail), Key_Action.Release)
#of XCB_ALLOC_NAMED_COLOR: discard
of XCB_MAP_NOTIFY:
var
xkbe = cast[ptr xkb_event](ev)
#we = cast[ ptr xcb_map_notify_event_t](ev)
#geo = p.conn.xcb_get_geometry_reply(p.conn.xcb_get_geometry p.window, err0)
#echo geo[]
p.conn.loadKeyMap( p.xkbContext
, p.xkbkm
, p.xkbState
, p.xkbNewState
)
assert loadComposeTable( p.locale
, p.xkbCompTable
, p.xkbContext
, p.xkbCompState
) == true
p.currKeyboardGroup = xkbe[].state_notify.group
p.relays.window_mapped_relay( p
, 8
, 4
)
of XCB_XKB_MAP_NOTIFY: discard
of XCB_PROPERTY_NOTIFY:
var pe = cast[ptr xcb_property_notify_event_t](ev)
#if pe.atom == wmState: echo "?"
of XCB_CONFIGURE_NOTIFY:
var
ce = cast[ ptr xcb_configure_notify_event_t](ev)
if ce.width > 0 and ce.height > 0:
p.relays.window_resize_relay( p
, int ce.width
, int ce.height
)
of XCB_MAPPING_NOTIFY:
var km: ptr xcb_mapping_notify_event_t= cast[ ptr xcb_mapping_notify_event_t](ev)
#echo "mapping: MYA-NEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!~~~~"
# of XCB_MAP_REQUEST:
# var km: ptr xcb_map_request_event_t= cast[ ptr xcb_map_request_event_t](ev)
# echor km
# echo "map_request: MYA-NEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!~~~~"
# of XCB_XKB_STATE_NOTIFY: echo "wo"
#echo repr km
of XCB_CLIENT_MESSAGE:
# this is the "window close" response
if ev.response_type == 161: p.quit = true
#of XCB_INPUT_DEVICE_STATE_NOTIFY:
#of XCB_DESTROY_NOTIFY: echo "window destroyed"
of XCB_VISIBILITY_NOTIFY: discard
of XCB_FOCUS_IN: discard #echo "focused"
of XCB_FOCUS_OUT: discard #echo "un-focused"
else:
#echo repr ev
#echo ev.response_type
#echo ev.response_type, " <> ", p.firstXkbEvent
if ev.response_type == p.firstXkbEvent:
var xkbe = cast[ptr xkb_event](ev)
case xkbe.anyy.xkbType
of XCB_XKB_NEW_KEYBOARD_NOTIFY:
# check if things actually changed on the keyboard
# TODO: This also triggers for a first press on a 2nd mouse
echo "new keyboard!"
# echo repr p.xkbState.components
p.conn.loadKeyMap( p.xkbContext
, p.xkbkm
, p.xkbState
, p.xkbNewState
)
of XCB_XKB_MAP_NOTIFY:
echo "XCB_XKB_MAP_NOTIFY"
of XCB_XKB_STATE_NOTIFY:
#echo "XCB_XKB_STATE_NOTIFY"
#TODO: figure a better way
# Currently this event hits if any "mod" key is pressed like ctrl (4) or alt (8)
# so we check for this and filter out
# as we currently only care about getting a new keyboard layout/group
if xkbe[].state_notify.mods == 8 or
xkbe[].state_notify.mods == 4 or
xkbe[].state_notify.eventType == 5: discard # mouse button down (?)
else:
if xkbe[].state_notify.group != p.currKeyboardGroup:
p.conn.loadKeyMap( p.xkbContext
, p.xkbkm
, p.xkbState
, p.xkbNewState
)
p.group = xkb_state_serialize_layout(p.xkbNewState, XKB_STATE_LAYOUT_EFFECTIVE)
p.currKeyboardLayout = toString theLayoutName(p.group, p.xkbkm)
p.currKeyboardGroup = xkbe[].state_notify.group
of XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY.ord: discard
of XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY.ord: discard
of XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY.ord: discard
of XCB_XKB_EVENT_TYPE_NAMES_NOTIFY.ord: discard
of XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY.ord: discard
#of uint8 XCB_XKB_EVENT_TYPE_BELL_NOTIFY.ord: discard
#of XCB_XKB_EVENT_TYPE_ACTION_MESSAGE.ord: discard
#of XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY.ord: discard
#of XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY.ord: discard
else: discard
if ev.response_type == (uint p.xfixesEvent + XFixesCursorNotify): discard
# var ce = cast[ptr XFixesCursorNotifyEvent](ev)
# echo repr ce
# var e = cast[ptr XFixesCursorNotifyEvent](ev)
# echo repr e
when defined windows:
var
msg: MSG
while PeekMessageW( msg
, cast[HWND] (nil)
, 0
, 0
, PM_REMOVE
) != 0:
#for hook_proc in
TranslateMessage msg
DispatchMessage msg
type
MouseObj = object of RootObj
posX*: int
posY*: int
Mouse* = ref object of MouseObj
MouseButton* {.size: int8.sizeof.} = enum
LMB
MMB
RMB
mb4
mb5
mb6
mb7
mb8
mb9
mb10
mb11
mb12
mb13
mb14
mb15
mb16
mb17
mb18
mb19
mb20
MouseBtnObj = object of RootObj
state*: MouseBtnState
MouseBtn* = ref object of MouseBtnObj
MouseBtnState* {.pure.} = enum Up Down Held ScrolledUp ScrolledDown PressedAndScrolledUp PressedAndScrolledDown
MouseBtnAction* {.pure.} = enum Release Press ScrollUp ScrollDown
var
mbs*: array[20, MouseBtn] = [ MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
, MouseBtn(state: MouseBtnState.Up)
]
proc state*(mb: MouseButton): MouseBtnState = mbs[ord mb].state
proc is_down*(mb: MouseButton): bool = return bool mbs[ord mb].state == MouseBtnState.Down
proc isUp*(mb: MouseButton): bool = return bool mbs[ord mb].state == MouseBtnState.Up
when defined linux:
{.passl: "-lXinerama".}
{.passl: "-lXrandr".}
# {.passl: "-lXi".}
# {.passl: "-lXcursor".}
# {.passl: "-lXxf86vm".}
import ../platforms/unix/x11/[x, xcb, xrandr,xlib]
import ../utils/etc
, re
type
VideoModeObj = object of RootObj
width*: int #! The width, in screen coordinates, of the video mode.
height*: int #! The height, in screen coordinates, of the video mode.
redBits*: int#! The bit depth of the red channel of the video mode.
greenBits*: int #! The bit depth of the green channel of the video mode.
blueBits*: int #! The bit depth of the blue channel of the video mode.
refreshRate*: float32 #! The refresh rate, in Hz, of the video mode.
bpp*:int
VideoMode* = ref object of VideoModeObj
GammaRampObj = object of RootObj
redBits*: cushort
greenBits*: cushort
blueBits*: cushort
size*: cuint
GammaRamp* = ref object of GammaRampObj
MonitorObj = object of RootObj
rotation*: int
widthMM*: int
heightMM*: int
currVideoMode*: VideoMode
videoModes*: seq[VideoMode]
gammaRamp: GammaRamp
connName*: string
name*: string
edid*: string
Monitor* = ref object of MonitorObj
#, xcb
#from utils import echor
#proc monitorCount*(p: Monitors): int = p.monitorCount
proc rgbFromDepth*( depth: int
, actualDepth: bool = false # for later ?
): array[3, int] =
var delta: int
#GLFW parity (???)
#if depth == 32: depth = 24
# R G B
result[0] = (depth div 3)
result[1] = (depth div 3)
result[2] = (depth div 3)
delta = depth - (result[0] * 3)
if delta >= 1: result[1] += 1
if delta == 2: result[0] += 1
when defined linux:
#TODO: handle when no monitor is marked a "primary"
proc thePrimaryMonitor*( conn: ptr xcb_connection_t
, root: ptr xcb_screen_t
, win: xcb_window_t
): Monitor =
result = Monitor(currVideoMode: VideoMode())
var
sr = xcb_randr_get_screen_resources_current(conn, win)
primaryCookie = xcb_randr_get_output_primary(conn, win)
reply = xcb_randr_get_screen_resources_current_reply( conn
, sr
, nil
)
ts = reply.timestamp
primary = xcb_randr_get_output_primary_reply(conn, primaryCookie, err0)
primaryOut: xcb_randr_get_output_info_cookie_t = xcb_randr_get_output_info(conn
, primary.output
, ts
)
primaryInfo = xcb_randr_get_output_info_reply( conn
, primaryOut
, nil
)
primaryCRTC = xcb_randr_get_crtc_info(conn, primaryInfo.crtc, ts)
actual = xcb_randr_get_crtc_info_reply(conn, primaryCRTC, err0)
geo = xcb_get_geometry(conn, win)
geoRep = xcb_get_geometry_reply(conn, geo, err0)
outs = xcb_randr_get_screen_resources_current_outputs reply
thing10 = xcb_randr_get_crtc_info_outputs actual
outProps = xcb_randr_list_output_properties(conn, primary.output)
outPropsRep = xcb_randr_list_output_properties_reply(conn, outProps, err0)
theAtoms = xcb_randr_list_output_properties_atoms(outpropsRep)
far = xcb_randr_get_output_info_modes(primaryInfo)
farLen = xcb_randr_get_output_info_modes_length(primaryInfo)
nthis = xcb_randr_get_screen_info(conn, win)
woo = xcb_randr_get_screen_info_reply(conn, nthis ,err0)
woop = xcb_randr_get_screen_info_rates_iterator(woo)
woopLen = xcb_randr_get_screen_info_rates_length(woo)
boop = xcb_randr_get_monitors(conn, win, 1)
boopRep = xcb_randr_get_monitors_reply(conn, boop, err0)
boopIter = xcb_randr_get_monitors_monitors_iterator(boopRep)
boopLen = xcb_randr_get_monitors_monitors_length(boopRep)
amo = xcb_randr_get_screen_resources_current_outputs_length(reply)
ops = xcb_randr_get_screen_resources_current_outputs(reply)
modesLen = xcb_randr_get_screen_resources_current_modes_length(reply)
modes = xcb_randr_get_screen_resources_current_modes(reply)
for x in 0 ..< modesLen:
if modes[x].id == actual.mode:
result.currVideoMode.refreshRate = (modes[x].dot_clock.float32 /
(modes[x].htotal.float32 *
modes[x].vtotal.float32
)
)
result.currVideoMode.bpp = int geoRep[].depth
result.currVideoMode.width = int geoRep[].width
result.currVideoMode.height = int geoRep[].height
# rgbFromDepth( result.currVideoMode.bpp
# , result.currVideoMode.redBits
# , result.currVideoMode.greenBits
# , result.currVideoMode.blueBits
# )
result.rotation = int (actual[].addr).rotation
result.widthMM = int primaryInfo.mm_width
result.heightMM = int primaryInfo.mm_height
result.connName = $cast[cstring](xcb_randr_get_output_info_name primaryInfo)
for x in 0 ..< theAtoms[]:
var
z = xcb_get_atom_name(conn, theAtoms[] + x)
zr = xcb_get_atom_name_reply(conn, z, err0)
#echo xcb_get_atom_name_name(zr) # print atom name
if xcb_get_atom_name_name(zr) == "EDID":
var
atom = xcb_intern_atom(conn, 0, 4, "EDID")
atomRep = xcb_intern_atom_reply(conn, atom, err0)
b1 = xcb_randr_get_output_property(conn
, primary.output
, atomRep.atom
, XCB_ATOM_ANY.ord
, 0
, 100
, 0
, 0
)
a1 = xcb_randr_get_output_property_reply(conn, b1, err0)
propData = xcb_randr_get_output_property_data(a1)
var str = newString(a1.num_items)
copyMem(str[0].addr, propData, a1.num_items)
result.edid = str
result.name = str.findAll(re"(\w+ \w+)")[0]
proc theMonitors*( conn: ptr xcb_connection_t
, root: ptr xcb_screen_t
, win: xcb_window_t
) =#: seq[Monitor] =
var
sr = xcb_randr_get_screen_resources_current(conn, win)
reply = xcb_randr_get_screen_resources_current_reply( conn
, sr
, nil
)
outs: ptr xcb_randr_output_t = xcb_randr_get_screen_resources_current_outputs reply
lenn = xcb_randr_get_screen_resources_current_outputs_length reply
for i in 0 ..< lenn:
var outt = xcb_randr_get_output_info_reply( conn
, xcb_randr_get_output_info(conn
, (outs + i)[]
, reply.timestamp
)
, nil
)
if not outt.isNil:
var
getcrtc = xcb_randr_get_crtc_info( conn
, outt.crtc
, reply.timestamp
)
crtc = xcb_randr_get_crtc_info_reply( conn
, getcrtc
, err0
)
if not crtc[].addr.isNil:
echo crtc[]
# printf("x = %d | y = %d | w = %d | h = %d\n",
# crtc.x, crtc.y, crtc.width, crtc.height)
# Relays* = ref object
# pos: WindowPosRelay
# size: WindowSizeRelay
# close: WindowCloseRelay
# refresh: WindowRefreshRelay
# focus: WindowFocusRelay
# iconify: WindowIconifyRelay
# maximize: WindowMaximizedRelay
# fbsize: WindowFBSizeRelay
# scale: WindowContentScaleRelay
# mouseButton: MouseButtonRelay
# cursorPos: MouseCursorPosRelay
# cursorEnter: MouseCursorEnterRelay
# scroll: MouseScrollRelay
# key: KeyboardRelay
# character: CharRelay
# charmods: CharModsRelay
# drop: WindowDropRelay
# MonitorX11* = ref object
# output*: RROutput
# crtc*: RRCrtc
# oldMode*: RRMode
# index: int # Index of corresponding Xinerama screen, for EWMH full screen window placement
# Monitor* = ref object
# name: cstring #array[128,char]
# userPointer: pointer
# widthMM, heightMM: int # Physical dimensions in millimeters.
# window: Window# The window whose video mode is current on this monitor
# modes: seq[Vidmode]
# modeCount: int
# currentMode: Vidmode
# originalRamp: Gammaramp
# currentRamp: Gammaramp
# platform: MonitorType #We're assuming x11 monitor until this is truly cross-plat
# x11*: MonitorX11
# const
# xineramaLib = "libXinerama.so"
# Rotate0* = 1
# Rotate90* = 2
# Rotate180* = 4
# Rotate270* = 8
# ReflectX* = 16
# ReflectY* = 32
# type
# PXineramaScreenInfo* = ptr XineramaScreenInfo
# XineramaScreenInfo*{.final.} = object
# screen_number*: cint
# x_org*: int16
# y_org*: int16
# width*: int16
# height*: int16
# proc XineramaQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): bool{.cdecl, importc.}
# proc XineramaQueryVersion*(dpy: PDisplay, major: Pcint, minor: Pcint): int #[Status]# {.cdecl, importc.}
# proc XineramaIsActive*(dpy: PDisplay): bool{.cdecl, dynlib: xineramaLib, importc.}
# proc XineramaQueryScreens*(dpy: PDisplay, number: Pcint): PXineramaScreenInfo{.cdecl, importc.}
# proc XRRGetOutputPrimary*(dpy: ptr Display, window: Window): RROutput {.cdecl, importc.}
# proc thePrimary*( p: PDisplay
# , w: Window
# ) =
# var
# t = p.XRRGetScreenResourcesCurrent w
# primary = p.XRRGetOutputPrimary w
# echo repr primary
proc pollMonitors*() = discard
{.deadCodeElim: on.}
when defined linux:
import ../platforms/unix/x11/[x, xlib, xcb, xkb, xkblib, xkbCommon, keysyms]
#, platforms/unix/x11/[xkblib, xlib, xkb, ]
from os import getEnv
type
Key* {.pure.} = enum
A = 0
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
X
Z
K1
K2
K3
K4
K5
K6
K7
K8
K9
K0
Space
Tab
Up
Down
Left
Right
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
LSuper
RSuper
LCtrl
RCtrl
LShift
RShift
LAlt
RAlt
Minus
Equals
BackSpace
LBracket
RBracket
Enter
SemiColon
Apos
Tilde
BSlash
Comma
Period
FSlash
Caps
Esc
NPMult
NumLock
Scrl
NP7
NP8
NP9
NPMin
NP4
NP5
NP6
NPAdd
NP1
NP2
NP3
NP0
NPDeci
NPEnter
NPDiv
Prnt
Home
PgUp
End
PgDown
Ins
Del
Pause
Menu
NPEquals
KeyState* {.pure.} = enum Up Down Held ScrolledUp ScrolledDown
Key_Action* {.pure.} = enum Release Press
AKeyObj = object of RootObj
key*: Key
state*: KeyState
when defined linux:
keySym*: KeySym
#scanCode: int
#name: string
A_Key* = ref object of AKeyObj
var
keys*: array[105, A_Key] = [ A_Key( key: A, state: KeyState.Up)
, A_Key( key: B, state: KeyState.Up)
, A_Key( key: C, state: KeyState.Up)
, A_Key( key: D, state: KeyState.Up)
, A_Key( key: E, state: KeyState.Up)
, A_Key( key: Key.F, state: KeyState.Up)
, A_Key( key: G, state: KeyState.Up)
, A_Key( key: H, state: KeyState.Up)
, A_Key( key: I, state: KeyState.Up)
, A_Key( key: J, state: KeyState.Up)
, A_Key( key: K, state: KeyState.Up)
, A_Key( key: L, state: KeyState.Up)
, A_Key( key: M, state: KeyState.Up)
, A_Key( key: N, state: KeyState.Up)
, A_Key( key: O, state: KeyState.Up)
, A_Key( key: P, state: KeyState.Up)
, A_Key( key: Q, state: KeyState.Up)
, A_Key( key: R, state: KeyState.Up)
, A_Key( key: S, state: KeyState.Up)
, A_Key( key: T, state: KeyState.Up)
, A_Key( key: U, state: KeyState.Up)
, A_Key( key: V, state: KeyState.Up)
, A_Key( key: W, state: KeyState.Up)
, A_Key( key: Y, state: KeyState.Up)
, A_Key( key: X, state: KeyState.Up)
, A_Key( key: Z, state: KeyState.Up)
, A_Key( key: K1, state: KeyState.Up)
, A_Key( key: K2, state: KeyState.Up)
, A_Key( key: K3, state: KeyState.Up)
, A_Key( key: K4, state: KeyState.Up)
, A_Key( key: K5, state: KeyState.Up)
, A_Key( key: K6, state: KeyState.Up)
, A_Key( key: K7, state: KeyState.Up)
, A_Key( key: K8, state: KeyState.Up)
, A_Key( key: K9, state: KeyState.Up)
, A_Key( key: K0, state: KeyState.Up)
, A_Key( key: Space, state: KeyState.Up)
, A_Key( key: Tab, state: KeyState.Up)
, A_Key( key: Key.Up, state: KeyState.Up)
, A_Key( key: Key.Down, state: KeyState.Up)
, A_Key( key: Left, state: KeyState.Up)
, A_Key( key: Right, state: KeyState.Up)
, A_Key( key: F1, state: KeyState.Up)
, A_Key( key: F2, state: KeyState.Up)
, A_Key( key: F3, state: KeyState.Up)
, A_Key( key: F4, state: KeyState.Up)
, A_Key( key: F5, state: KeyState.Up)
, A_Key( key: F6, state: KeyState.Up)
, A_Key( key: F7, state: KeyState.Up)
, A_Key( key: F8, state: KeyState.Up)
, A_Key( key: F9, state: KeyState.Up)
, A_Key( key: F10, state: KeyState.Up)
, A_Key( key: F11, state: KeyState.Up)
, A_Key( key: F12, state: KeyState.Up)
, A_Key( key: LSuper, state: KeyState.Up)
, A_Key( key: RSuper, state: KeyState.Up)
, A_Key( key: LCtrl, state: KeyState.Up)
, A_Key( key: RCtrl, state: KeyState.Up)
, A_Key( key: LShift, state: KeyState.Up)
, A_Key( key: RShift, state: KeyState.Up)
, A_Key( key: LAlt, state: KeyState.Up)
, A_Key( key: RAlt, state: KeyState.Up)
, A_Key( key: Minus, state: KeyState.Up)
, A_Key( key: Equals, state: KeyState.Up)
, A_Key( key: BackSpace, state: KeyState.Up)
, A_Key( key: LBracket, state: KeyState.Up)
, A_Key( key: RBracket, state: KeyState.Up)
, A_Key( key: Enter, state: KeyState.Up)
, A_Key( key: SemiColon, state: KeyState.Up)
, A_Key( key: Apos, state: KeyState.Up)
, A_Key( key: Tilde, state: KeyState.Up)
, A_Key( key: BSlash, state: KeyState.Up)
, A_Key( key: Comma, state: KeyState.Up)
, A_Key( key: Period, state: KeyState.Up)
, A_Key( key: FSlash, state: KeyState.Up)
, A_Key( key: Caps, state: KeyState.Up)
, A_Key( key: Esc, state: KeyState.Up)
, A_Key( key: NPMult, state: KeyState.Up)
, A_Key( key: NumLock, state: KeyState.Up)
, A_Key( key: Scrl, state: KeyState.Up)
, A_Key( key: NP7, state: KeyState.Up)
, A_Key( key: NP8, state: KeyState.Up)
, A_Key( key: NP9, state: KeyState.Up)
, A_Key( key: NPMin, state: KeyState.Up)
, A_Key( key: NP4, state: KeyState.Up)
, A_Key( key: NP5, state: KeyState.Up)
, A_Key( key: NP6, state: KeyState.Up)
, A_Key( key: NPAdd, state: KeyState.Up)
, A_Key( key: NP1, state: KeyState.Up)
, A_Key( key: NP2, state: KeyState.Up)
, A_Key( key: NP3, state: KeyState.Up)
, A_Key( key: NP0, state: KeyState.Up)
, A_Key( key: NPDeci, state: KeyState.Up)
, A_Key( key: NPEnter, state: KeyState.Up)
, A_Key( key: NPDiv, state: KeyState.Up)
, A_Key( key: Prnt, state: KeyState.Up)
, A_Key( key: Home, state: KeyState.Up)
, A_Key( key: PgUp, state: KeyState.Up)
, A_Key( key: End, state: KeyState.Up)
, A_Key( key: PgDown, state: KeyState.Up)
, A_Key( key: Ins, state: KeyState.Up)
, A_Key( key: Del, state: KeyState.Up)
, A_Key( key: Pause, state: KeyState.Up)
, A_Key( key: Menu, state: KeyState.Up)
, A_Key( key: NPEquals, state: KeyState.Up)
]
proc state*(k: Key): KeyState = return keys[k.ord].state
when defined linux:
proc key_from_sym*(sym: KeySym): A_Key =
case sym
of XK_aa: return keys[0]
of XK_bb: return keys[1]
of XK_cc: return keys[2]
of XK_dd: return keys[3]
of XK_ee: return keys[4]
of XK_ff: return keys[5]
of XK_gg: return keys[6]
of XK_hh: return keys[7]
of XK_ii: return keys[8]
of XK_jj: return keys[9]
of XK_kk: return keys[10]
of XK_ll: return keys[11]
of XK_mm: return keys[12]
of XK_nn: return keys[13]
of XK_oo: return keys[14]
of XK_pp: return keys[15]
of XK_qq: return keys[16]
of XK_rr: return keys[17]
of XK_ss: return keys[18]
of XK_tt: return keys[19]
of XK_uu: return keys[20]
of XK_vv: return keys[21]
of XK_ww: return keys[22]
of XK_xx: return keys[23]
of XK_yy: return keys[24]
of XK_zz: return keys[25]
of XK_1: return keys[26]
of XK_2: return keys[27]
of XK_3: return keys[28]
of XK_4: return keys[29]
of XK_5: return keys[30]
of XK_6: return keys[31]
of XK_7: return keys[32]
of XK_8: return keys[33]
of XK_9: return keys[34]
of XK_0: return keys[35]
of XK_space: return keys[36]
of XK_Tab: return keys[37]
of XK_Up: return keys[38]
of XK_Down: return keys[39]
of XK_Left: return keys[40]
of XK_Right: return keys[41]
of XK_F1: return keys[42]
of XK_F2: return keys[43]
of XK_F3: return keys[44]
of XK_F4: return keys[45]
of XK_F5: return keys[46]
of XK_F6: return keys[47]
of XK_F7: return keys[48]
of XK_F8: return keys[49]
of XK_F9: return keys[50]
of XK_F10: return keys[51]
of XK_F11: return keys[52]
of XK_F12: return keys[53]
of XK_Super_L: return keys[54]
of XK_Super_R: return keys[55]
of XK_Control_L: return keys[56]
of XK_Control_R: return keys[57]
of XK_Shift_L: return keys[58]
of XK_Shift_R: return keys[59]
of XK_Alt_L: return keys[60]
of XK_Alt_R: return keys[61]
of XK_minus: return keys[62]
of XK_equal: return keys[63]
of XK_BackSpace: return keys[64]
of XK_bracketleft: return keys[65]
of XK_bracketright: return keys[66]
of XK_Return: return keys[67]
of XK_semicolon: return keys[68]
of XK_apostrophe: return keys[69]
of XK_grave: return keys[70]
of XK_backslash: return keys[71]
of XK_comma: return keys[72]
of XK_period: return keys[73]
of XK_slash: return keys[74]
of XK_Caps_Lock: return keys[75]
of XK_Escape: return keys[76]
#of XK_exclam:
#of XK_quotedbl:
#of XK_numbersign:
#of XK_dollar:
#of XK_percent:
#of XK_ampersand:
# of XK_apostrophe:
# of XK_quoteright:
# of XK_parenleft:
# of XK_parenright:
# of XK_asterisk:
# of XK_plus:
# of XK_comma:
# of XK_minus:
# of XK_period:
# of XK_slash:
# of XK_colon:
# of XK_semicolon:
# of XK_less:
# of XK_equal:
# of XK_greater:
# of XK_question:
# of XK_at:
# of XK_A:
# of XK_B:
# of XK_C:
# of XK_D:
# of XK_E:
# of XK_F:
# of XK_G:
# of XK_H:
# of XK_I:
# of XK_J:
# of XK_K:
# of XK_L:
# of XK_M:
# of XK_N:
# of XK_O:
# of XK_P:
# of XK_Q:
# of XK_R:
# of XK_S:
# of XK_T:
# of XK_U:
# of XK_V:
# of XK_W:
# of XK_X:
# of XK_Y:
# of XK_Z:
# of XK_bracketleft:
# of XK_backslash:
# of XK_bracketright:
# of XK_asciicircum:
# of XK_underscore:
# of XK_grave:
# of XK_quoteleft:
# of #:
# of #:
# of XK_braceleft:
# of XK_bar:
# of XK_braceright:
# of XK_asciitilde:
# of XK_nobreakspace:
else: discard
when defined linux:
proc theLayoutName*( group: xkb_layout_index_t
, xkbkm: ptr xkb_keymap
): cstring =
xkb_keymap_layout_get_name(xkbkm, xkb_layout_index_t group )
proc theLocale*: string =
when defined linux:
# TODO: Better (more robust) way to get locale?
if getEnv("LANG").len != 0:
#echo "valid: LANG: ", getEnv("LANG")
result = getEnv("LANG")
elif getEnv("LC_ALL").len != 0:
#echo "valid: LC_ALL"
result = getEnv("LC_ALL")
elif getEnv("LC_CTYPE").len != 0:
#echo "valid: LC_CTYPE"
result = getEnv("LC_CTYPE")
else:
result = "C"
echo "WARNING: Couldn't find locale, falling back to 'C'"
when defined linux:
var #TODO: do we need the global pragmas?
xkb_base_event* {.global.} : uint8
xkb_base_error* {.global.} : uint8
proc x11KeySymName*(ks: xcb_keysym_t): cstring =
discard xkb_keysym_get_name(ks, result, sizeof(cstring).csize_t)
result
proc loadComposeTable*( locale: string
, xkbCompTable: var ptr xkb_compose_table
, xkbContext: ptr xkb_context
, xkbCompState: var ptr xkb_compose_state
): bool =
#xkb_compose_table_unref addr p.xkbCompTable
#echo "Locale: ", locale
xkbCompTable = xkb_compose_table_new_from_locale(xkbContext, locale, xkb_compose_compile_flags 0)
assert not xkbCompTable.isNil
var newCompState: ptr xkb_compose_state = xkb_compose_state_new(xkbCompTable, xkb_compose_state_flags 0)
assert not newCompState.isNil
#xkb_compose_state_unref addr p.xkbCompState
xkbCompState = newCompState
return true
proc loadKeyMap*( conn: ptr xcb_connection_t
, xkbContext: var ptr xkb_context
, xkbkm: var ptr xkb_keymap
, xkbState: var ptr xkb_state
, xkbNewState: var ptr xkb_state
) =
xkbContext = xkb_context_new xkb_context_flags 0
assert not xkbContext.isNil
xkb_keymap_unref xkbkm
var deviceID: int32 = xkb_x11_get_core_keyboard_device_id conn
xkbkm = xkb_x11_keymap_new_from_device( xkbContext
, conn
, deviceID
, xkb_keymap_compile_flags 0
)
assert not xkbkm.isNil
xkbNewState = xkb_x11_state_new_from_device(xkbkm, conn, deviceID)
assert not xkbNewState.isNil
xkb_state_unref xkbState
xkbState = xkbNewState
assert not xkbNewState.isNil
#echo "DeviceID: ", deviceID
proc loadXKB*( dpy: PDisplay
, conn: ptr xcb_connection_t
# , group: var int8
, firstXkbEvent: var uint8
) =
# keep ?
# if XkbGetState(dpy, XkbUseCorekbd, addr state) == Success: group = state.group
# discard XkbGetNames(dpy, XkbKeyNamesMask, desc)
#discard XkbSetAutoRepeatRate(dpy, 1, 1, 1)
# desc = XkbGetMap(dpy, 0, XkbUseCoreKbd)
#kb: X11kb
var
supported: bool
xkbDesc: ptr XkbDescRec = XkbAllocKeyboard()
discard XAutoRepeatOn dpy
discard XkbSetDetectableAutoRepeat(dpy, true, addr supported)
assert supported
discard XkbSelectEventDetails(dpy, XkbUseCorekbd, XkbStateNotify, XkbGroupStateMask, XkbGroupStateMask)
assert xkb_x11_setup_xkb_extension( conn
, uint16 1 #XKB_X11_MIN_MAJOR_XKB_VERSION
, uint16 0 #XKB_X11_MIN_MINOR_XKB_VERSION
, xkb_x11_setup_xkb_extension_flags 0
, nil
, nil
, addr firstXkbEvent
, nil
) == 1
discard XkbGetControls(dpy, XkbAllControlsMask, xkbDesc)
discard XkbGetNames(dpy, XkbSymbolsNameMask, xkbDesc)
discard XkbGetNames(dpy, XkbGroupNamesMask, xkbDesc)
#echo xkbDesc.names.groups
const
required_map_parts: xcb_xkb_map_part_t =
xcb_xkb_map_part_t 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
required_events: xcb_xkb_event_type_t =
xcb_xkb_event_type_t XCB_XKB_EVENT_TYPE_MAP_NOTIFY.ord or
XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY.ord or
XCB_XKB_EVENT_TYPE_STATE_NOTIFY.ord
discard xcb_xkb_select_events( conn
, xcb_xkb_device_spec_t xkb_x11_get_core_keyboard_device_id conn
, uint16 required_events
, 0
, uint16 required_events
, uint16 required_map_parts
, uint16 required_map_parts
, nil #cast[pointer](0)
)
var
#xkbs: ptr xkb_state
#xkb_base_event: uint8
xkberr: uint8
xcbXKBRep = xcb_get_extension_data(conn, addr xcb_xkb_id)
#echo xcbXKBRep.first_event
assert xkb_x11_setup_xkb_extension( conn
, 1
, 14
, XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS
, nil
, nil
, addr firstXkbEvent
, addr xkberr
) == 1
assert not xcbXKBRep.isNil
proc is_down*(key: Key): bool = return bool keys[ord key].state == KeyState.Down
proc is_down_or_held*(key: Key): bool = return bool (keys[ord key].state == KeyState.Down or keys[ord key].state == KeyState.Held)
proc isUp*(key: Key): bool = return bool keys[ord key].state == KeyState.Up
# snippets to possibly use later
#[
var st = xkb_state_get_keymap(p.xkbNewState)
var group: xkb_layout_index_t = xkb_state_serialize_layout(p.xkbNewState, XKB_STATE_LAYOUT_EFFECTIVE)
echo group
echo xkb_keymap_num_layouts st
echo xkb_keymap_num_layouts st
echo xkb_keymap_num_layouts st
for grp in 0..xkb_keymap_num_layouts(st):
echo xkb_state_layout_index_is_active( p.xkbNewState
,xkb_layout_index_t group
, XKB_STATE_LAYOUT_EFFECTIVE
)
echo xkb_state_layout_index_is_active( p.xkbNewState
,xkb_layout_index_t group
, XKB_STATE_LAYOUT_DEPRESSED
)
echo xkb_state_layout_index_is_active( p.xkbNewState
,xkb_layout_index_t group
, XKB_STATE_LAYOUT_LATCHED
)
echo xkb_state_layout_index_is_active( p.xkbNewState
,xkb_layout_index_t group
, XKB_STATE_LAYOUT_LOCKED
)
]#
#====================================================================
#
# Winim - Nim's Windows API Module
# (c) Copyright 2016-2022 Ward
#
#====================================================================
{.push hint[Name]: off.}
when defined(nimHasUsed): {.used.}
import winim/inc/winimbase
import winim/inc/windef
import winim/inc/winbase
const
FACILITY_WIN32* = 7
ERROR_SUCCESS* = 0
ERROR_CANCELLED* = 1223
E_UNEXPECTED* = HRESULT 0x8000FFFF'i32
E_NOTIMPL* = HRESULT 0x80004001'i32
E_NOINTERFACE* = HRESULT 0x80004002'i32
E_POINTER* = HRESULT 0x80004003'i32
E_FAIL* = HRESULT 0x80004005'i32
template HRESULT_FROM_WIN32*(x: untyped): HRESULT = (if x <= 0: HRESULT x else: HRESULT(x and 0x0000ffff) or HRESULT(FACILITY_WIN32 shl 16) or HRESULT(0x80000000'i32))
const
S_OK* = HRESULT 0x00000000
S_FALSE* = HRESULT 0x00000001
DRAGDROP_S_DROP* = HRESULT 0x00040100
DRAGDROP_S_CANCEL* = HRESULT 0x00040101
DISP_E_MEMBERNOTFOUND* = HRESULT 0x80020003'i32
DISP_E_UNKNOWNNAME* = HRESULT 0x80020006'i32
TYPE_E_ELEMENTNOTFOUND* = HRESULT 0x8002802B'i32
template SUCCEEDED*(hr: untyped): bool = hr.HRESULT >= 0
template FAILED*(hr: untyped): bool = hr.HRESULT < 0
type
BITMAP* {.pure.} = object
bmType*: LONG
bmWidth*: LONG
bmHeight*: LONG
bmWidthBytes*: LONG
bmPlanes*: WORD
bmBitsPixel*: WORD
bmBits*: LPVOID
RGBQUAD* {.pure.} = object
rgbBlue*: BYTE
rgbGreen*: BYTE
rgbRed*: BYTE
rgbReserved*: BYTE
BITMAPINFOHEADER* {.pure.} = object
biSize*: DWORD
biWidth*: LONG
biHeight*: LONG
biPlanes*: WORD
biBitCount*: WORD
biCompression*: DWORD
biSizeImage*: DWORD
biXPelsPerMeter*: LONG
biYPelsPerMeter*: LONG
biClrUsed*: DWORD
biClrImportant*: DWORD
BITMAPINFO* {.pure.} = object
bmiHeader*: BITMAPINFOHEADER
bmiColors*: array[1, RGBQUAD]
TEXTMETRICA* {.pure.} = object
tmHeight*: LONG
tmAscent*: LONG
tmDescent*: LONG
tmInternalLeading*: LONG
tmExternalLeading*: LONG
tmAveCharWidth*: LONG
tmMaxCharWidth*: LONG
tmWeight*: LONG
tmOverhang*: LONG
tmDigitizedAspectX*: LONG
tmDigitizedAspectY*: LONG
tmFirstChar*: BYTE
tmLastChar*: BYTE
tmDefaultChar*: BYTE
tmBreakChar*: BYTE
tmItalic*: BYTE
tmUnderlined*: BYTE
tmStruckOut*: BYTE
tmPitchAndFamily*: BYTE
tmCharSet*: BYTE
LPTEXTMETRICA* = ptr TEXTMETRICA
TEXTMETRICW* {.pure.} = object
tmHeight*: LONG
tmAscent*: LONG
tmDescent*: LONG
tmInternalLeading*: LONG
tmExternalLeading*: LONG
tmAveCharWidth*: LONG
tmMaxCharWidth*: LONG
tmWeight*: LONG
tmOverhang*: LONG
tmDigitizedAspectX*: LONG
tmDigitizedAspectY*: LONG
tmFirstChar*: WCHAR
tmLastChar*: WCHAR
tmDefaultChar*: WCHAR
tmBreakChar*: WCHAR
tmItalic*: BYTE
tmUnderlined*: BYTE
tmStruckOut*: BYTE
tmPitchAndFamily*: BYTE
tmCharSet*: BYTE
LPTEXTMETRICW* = ptr TEXTMETRICW
LOGBRUSH* {.pure.} = object
lbStyle*: UINT
lbColor*: COLORREF
lbHatch*: ULONG_PTR
EXTLOGPEN* {.pure.} = object
elpPenStyle*: DWORD
elpWidth*: DWORD
elpBrushStyle*: UINT
elpColor*: COLORREF
elpHatch*: ULONG_PTR
elpNumEntries*: DWORD
elpStyleEntry*: array[1, DWORD]
PALETTEENTRY* {.pure.} = object
peRed*: BYTE
peGreen*: BYTE
peBlue*: BYTE
peFlags*: BYTE
LOGPALETTE* {.pure.} = object
palVersion*: WORD
palNumEntries*: WORD
palPalEntry*: array[1, PALETTEENTRY]
const
LF_FACESIZE* = 32
type
LOGFONTA* {.pure.} = object
lfHeight*: LONG
lfWidth*: LONG
lfEscapement*: LONG
lfOrientation*: LONG
lfWeight*: LONG
lfItalic*: BYTE
lfUnderline*: BYTE
lfStrikeOut*: BYTE
lfCharSet*: BYTE
lfOutPrecision*: BYTE
lfClipPrecision*: BYTE
lfQuality*: BYTE
lfPitchAndFamily*: BYTE
lfFaceName*: array[LF_FACESIZE, CHAR]
LPLOGFONTA* = ptr LOGFONTA
LOGFONTW* {.pure.} = object
lfHeight*: LONG
lfWidth*: LONG
lfEscapement*: LONG
lfOrientation*: LONG
lfWeight*: LONG
lfItalic*: BYTE
lfUnderline*: BYTE
lfStrikeOut*: BYTE
lfCharSet*: BYTE
lfOutPrecision*: BYTE
lfClipPrecision*: BYTE
lfQuality*: BYTE
lfPitchAndFamily*: BYTE
lfFaceName*: array[LF_FACESIZE, WCHAR]
LPLOGFONTW* = ptr LOGFONTW
const
CCHDEVICENAME* = 32
type
DEVMODEA_UNION1_STRUCT1* {.pure.} = object
dmOrientation*: int16
dmPaperSize*: int16
dmPaperLength*: int16
dmPaperWidth*: int16
dmScale*: int16
dmCopies*: int16
dmDefaultSource*: int16
dmPrintQuality*: int16
DEVMODEA_UNION1_STRUCT2* {.pure.} = object
dmPosition*: POINTL
dmDisplayOrientation*: DWORD
dmDisplayFixedOutput*: DWORD
DEVMODEA_UNION1* {.pure, union.} = object
struct1*: DEVMODEA_UNION1_STRUCT1
struct2*: DEVMODEA_UNION1_STRUCT2
const
CCHFORMNAME* = 32
type
DEVMODEA_UNION2* {.pure, union.} = object
dmDisplayFlags*: DWORD
dmNup*: DWORD
DEVMODEA* {.pure.} = object
dmDeviceName*: array[CCHDEVICENAME, BYTE]
dmSpecVersion*: WORD
dmDriverVersion*: WORD
dmSize*: WORD
dmDriverExtra*: WORD
dmFields*: DWORD
union1*: DEVMODEA_UNION1
dmColor*: int16
dmDuplex*: int16
dmYResolution*: int16
dmTTOption*: int16
dmCollate*: int16
dmFormName*: array[CCHFORMNAME, BYTE]
dmLogPixels*: WORD
dmBitsPerPel*: DWORD
dmPelsWidth*: DWORD
dmPelsHeight*: DWORD
union2*: DEVMODEA_UNION2
dmDisplayFrequency*: DWORD
dmICMMethod*: DWORD
dmICMIntent*: DWORD
dmMediaType*: DWORD
dmDitherType*: DWORD
dmReserved1*: DWORD
dmReserved2*: DWORD
dmPanningWidth*: DWORD
dmPanningHeight*: DWORD
PDEVMODEA* = ptr DEVMODEA
LPDEVMODEA* = ptr DEVMODEA
DEVMODEW_UNION1_STRUCT1* {.pure.} = object
dmOrientation*: int16
dmPaperSize*: int16
dmPaperLength*: int16
dmPaperWidth*: int16
dmScale*: int16
dmCopies*: int16
dmDefaultSource*: int16
dmPrintQuality*: int16
DEVMODEW_UNION1_STRUCT2* {.pure.} = object
dmPosition*: POINTL
dmDisplayOrientation*: DWORD
dmDisplayFixedOutput*: DWORD
DEVMODEW_UNION1* {.pure, union.} = object
struct1*: DEVMODEW_UNION1_STRUCT1
struct2*: DEVMODEW_UNION1_STRUCT2
DEVMODEW_UNION2* {.pure, union.} = object
dmDisplayFlags*: DWORD
dmNup*: DWORD
DEVMODEW* {.pure.} = object
dmDeviceName*: array[CCHDEVICENAME, WCHAR]
dmSpecVersion*: WORD
dmDriverVersion*: WORD
dmSize*: WORD
dmDriverExtra*: WORD
dmFields*: DWORD
union1*: DEVMODEW_UNION1
dmColor*: int16
dmDuplex*: int16
dmYResolution*: int16
dmTTOption*: int16
dmCollate*: int16
dmFormName*: array[CCHFORMNAME, WCHAR]
dmLogPixels*: WORD
dmBitsPerPel*: DWORD
dmPelsWidth*: DWORD
dmPelsHeight*: DWORD
union2*: DEVMODEW_UNION2
dmDisplayFrequency*: DWORD
dmICMMethod*: DWORD
dmICMIntent*: DWORD
dmMediaType*: DWORD
dmDitherType*: DWORD
dmReserved1*: DWORD
dmReserved2*: DWORD
dmPanningWidth*: DWORD
dmPanningHeight*: DWORD
PDEVMODEW* = ptr DEVMODEW
LPDEVMODEW* = ptr DEVMODEW
BLENDFUNCTION* {.pure.} = object
BlendOp*: BYTE
BlendFlags*: BYTE
SourceConstantAlpha*: BYTE
AlphaFormat*: BYTE
DIBSECTION* {.pure.} = object
dsBm*: BITMAP
dsBmih*: BITMAPINFOHEADER
dsBitfields*: array[3, DWORD]
dshSection*: HANDLE
dsOffset*: DWORD
DOCINFOA* {.pure.} = object
cbSize*: int32
lpszDocName*: LPCSTR
lpszOutput*: LPCSTR
lpszDatatype*: LPCSTR
fwType*: DWORD
DOCINFOW* {.pure.} = object
cbSize*: int32
lpszDocName*: LPCWSTR
lpszOutput*: LPCWSTR
lpszDatatype*: LPCWSTR
fwType*: DWORD
const
R2_BLACK* = 1
R2_NOTMERGEPEN* = 2
R2_MASKNOTPEN* = 3
R2_NOTCOPYPEN* = 4
R2_MASKPENNOT* = 5
R2_NOT* = 6
R2_XORPEN* = 7
R2_NOTMASKPEN* = 8
R2_MASKPEN* = 9
R2_NOTXORPEN* = 10
R2_NOP* = 11
R2_MERGENOTPEN* = 12
R2_COPYPEN* = 13
R2_MERGEPENNOT* = 14
R2_MERGEPEN* = 15
R2_WHITE* = 16
SRCCOPY* = DWORD 0x00CC0020
SRCPAINT* = DWORD 0x00EE0086
SRCAND* = DWORD 0x008800C6
SRCINVERT* = DWORD 0x00660046
SRCERASE* = DWORD 0x00440328
NOTSRCCOPY* = DWORD 0x00330008
MERGECOPY* = DWORD 0x00C000CA
MERGEPAINT* = DWORD 0x00BB0226
DSTINVERT* = DWORD 0x00550009
BLACKNESS* = DWORD 0x00000042
WHITENESS* = DWORD 0x00FF0062
ERROR* = 0
RGN_AND* = 1
RGN_OR* = 2
RGN_XOR* = 3
RGN_DIFF* = 4
RGN_COPY* = 5
HALFTONE* = 4
ALTERNATE* = 1
WINDING* = 2
ETO_OPAQUE* = 0x0002
abortDoc* = 2
startDoc* = 10
endDoc* = 11
DEFAULT_PITCH* = 0
ANSI_CHARSET* = 0
DEFAULT_CHARSET* = 1
SHIFTJIS_CHARSET* = 128
HANGUL_CHARSET* = 129
GB2312_CHARSET* = 134
CHINESEBIG5_CHARSET* = 136
OEM_CHARSET* = 255
JOHAB_CHARSET* = 130
HEBREW_CHARSET* = 177
ARABIC_CHARSET* = 178
GREEK_CHARSET* = 161
VIETNAMESE_CHARSET* = 163
THAI_CHARSET* = 222
EASTEUROPE_CHARSET* = 238
RUSSIAN_CHARSET* = 204
BALTIC_CHARSET* = 186
FF_DONTCARE* = 0 shl 4
FF_ROMAN* = 1 shl 4
FF_SWISS* = 2 shl 4
FF_MODERN* = 3 shl 4
FF_SCRIPT* = 4 shl 4
FF_DECORATIVE* = 5 shl 4
FW_THIN* = 100
FW_EXTRALIGHT* = 200
FW_LIGHT* = 300
FW_NORMAL* = 400
FW_MEDIUM* = 500
FW_SEMIBOLD* = 600
FW_BOLD* = 700
FW_EXTRABOLD* = 800
FW_HEAVY* = 900
TRANSPARENT* = 1
OPAQUE* = 2
MM_TEXT* = 1
MM_ANISOTROPIC* = 8
DEFAULT_GUI_FONT* = 17
BS_SOLID* = 0
BS_NULL* = 1
BS_HOLLOW* = BS_NULL
BS_HATCHED* = 2
HS_HORIZONTAL* = 0
HS_VERTICAL* = 1
HS_FDIAGONAL* = 2
HS_BDIAGONAL* = 3
HS_CROSS* = 4
HS_DIAGCROSS* = 5
PS_SOLID* = 0
PS_DASH* = 1
PS_DOT* = 2
PS_DASHDOT* = 3
PS_NULL* = 5
PS_INSIDEFRAME* = 6
PS_STYLE_MASK* = 0x0000000F
PS_ENDCAP_ROUND* = 0x00000000
PS_ENDCAP_SQUARE* = 0x00000100
PS_ENDCAP_FLAT* = 0x00000200
PS_ENDCAP_MASK* = 0x00000F00
PS_JOIN_ROUND* = 0x00000000
PS_JOIN_BEVEL* = 0x00001000
PS_JOIN_MITER* = 0x00002000
PS_JOIN_MASK* = 0x0000F000
PS_GEOMETRIC* = 0x00010000
HORZRES* = 8
VERTRES* = 10
BITSPIXEL* = 12
PLANES* = 14
LOGPIXELSX* = 88
LOGPIXELSY* = 90
PHYSICALWIDTH* = 110
PHYSICALHEIGHT* = 111
PHYSICALOFFSETX* = 112
PHYSICALOFFSETY* = 113
DM_ORIENTATION* = 0x00000001
DM_PAPERSIZE* = 0x00000002
DM_PAPERLENGTH* = 0x00000004
DM_PAPERWIDTH* = 0x00000008
DM_COPIES* = 0x00000100
DM_COLOR* = 0x00000800
DM_DUPLEX* = 0x00001000
DMORIENT_PORTRAIT* = 1
DMORIENT_LANDSCAPE* = 2
DMPAPER_LETTER* = 1
DMPAPER_LETTERSMALL* = 2
DMPAPER_TABLOID* = 3
DMPAPER_LEDGER* = 4
DMPAPER_LEGAL* = 5
DMPAPER_STATEMENT* = 6
DMPAPER_EXECUTIVE* = 7
DMPAPER_A3* = 8
DMPAPER_A4* = 9
DMPAPER_A4SMALL* = 10
DMPAPER_A5* = 11
DMPAPER_B4* = 12
DMPAPER_B5* = 13
DMPAPER_FOLIO* = 14
DMPAPER_QUARTO* = 15
DMPAPER_10X14* = 16
DMPAPER_11X17* = 17
DMPAPER_NOTE* = 18
DMPAPER_ENV_9* = 19
DMPAPER_ENV_10* = 20
DMPAPER_ENV_11* = 21
DMPAPER_ENV_12* = 22
DMPAPER_ENV_14* = 23
DMPAPER_CSHEET* = 24
DMPAPER_DSHEET* = 25
DMPAPER_ESHEET* = 26
DMPAPER_ENV_DL* = 27
DMPAPER_ENV_C5* = 28
DMPAPER_ENV_C3* = 29
DMPAPER_ENV_C4* = 30
DMPAPER_ENV_C6* = 31
DMPAPER_ENV_C65* = 32
DMPAPER_ENV_B4* = 33
DMPAPER_ENV_B5* = 34
DMPAPER_ENV_B6* = 35
DMPAPER_ENV_ITALY* = 36
DMPAPER_ENV_MONARCH* = 37
DMPAPER_ENV_PERSONAL* = 38
DMPAPER_FANFOLD_US* = 39
DMPAPER_FANFOLD_STD_GERMAN* = 40
DMPAPER_FANFOLD_LGL_GERMAN* = 41
DMPAPER_ISO_B4* = 42
DMPAPER_JAPANESE_POSTCARD* = 43
DMPAPER_9X11* = 44
DMPAPER_10X11* = 45
DMPAPER_15X11* = 46
DMPAPER_ENV_INVITE* = 47
DMPAPER_RESERVED_48* = 48
DMPAPER_RESERVED_49* = 49
DMPAPER_LETTER_EXTRA* = 50
DMPAPER_LEGAL_EXTRA* = 51
DMPAPER_TABLOID_EXTRA* = 52
DMPAPER_A4_EXTRA* = 53
DMPAPER_LETTER_TRANSVERSE* = 54
DMPAPER_A4_TRANSVERSE* = 55
DMPAPER_LETTER_EXTRA_TRANSVERSE* = 56
DMPAPER_A_PLUS* = 57
DMPAPER_B_PLUS* = 58
DMPAPER_LETTER_PLUS* = 59
DMPAPER_A4_PLUS* = 60
DMPAPER_A5_TRANSVERSE* = 61
DMPAPER_B5_TRANSVERSE* = 62
DMPAPER_A3_EXTRA* = 63
DMPAPER_A5_EXTRA* = 64
DMPAPER_B5_EXTRA* = 65
DMPAPER_A2* = 66
DMPAPER_A3_TRANSVERSE* = 67
DMPAPER_A3_EXTRA_TRANSVERSE* = 68
DMPAPER_DBL_JAPANESE_POSTCARD* = 69
DMPAPER_A6* = 70
DMPAPER_JENV_KAKU2* = 71
DMPAPER_JENV_KAKU3* = 72
DMPAPER_JENV_CHOU3* = 73
DMPAPER_JENV_CHOU4* = 74
DMPAPER_LETTER_ROTATED* = 75
DMPAPER_A3_ROTATED* = 76
DMPAPER_A4_ROTATED* = 77
DMPAPER_A5_ROTATED* = 78
DMPAPER_B4_JIS_ROTATED* = 79
DMPAPER_B5_JIS_ROTATED* = 80
DMPAPER_JAPANESE_POSTCARD_ROTATED* = 81
DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED* = 82
DMPAPER_A6_ROTATED* = 83
DMPAPER_JENV_KAKU2_ROTATED* = 84
DMPAPER_JENV_KAKU3_ROTATED* = 85
DMPAPER_JENV_CHOU3_ROTATED* = 86
DMPAPER_JENV_CHOU4_ROTATED* = 87
DMPAPER_B6_JIS* = 88
DMPAPER_B6_JIS_ROTATED* = 89
DMPAPER_12X11* = 90
DMPAPER_JENV_YOU4* = 91
DMPAPER_JENV_YOU4_ROTATED* = 92
DMPAPER_P16K* = 93
DMPAPER_P32K* = 94
DMPAPER_P32KBIG* = 95
DMPAPER_PENV_1* = 96
DMPAPER_PENV_2* = 97
DMPAPER_PENV_3* = 98
DMPAPER_PENV_4* = 99
DMPAPER_PENV_5* = 100
DMPAPER_PENV_6* = 101
DMPAPER_PENV_7* = 102
DMPAPER_PENV_8* = 103
DMPAPER_PENV_9* = 104
DMPAPER_PENV_10* = 105
DMPAPER_P16K_ROTATED* = 106
DMPAPER_P32K_ROTATED* = 107
DMPAPER_P32KBIG_ROTATED* = 108
DMPAPER_PENV_1_ROTATED* = 109
DMPAPER_PENV_2_ROTATED* = 110
DMPAPER_PENV_3_ROTATED* = 111
DMPAPER_PENV_4_ROTATED* = 112
DMPAPER_PENV_5_ROTATED* = 113
DMPAPER_PENV_6_ROTATED* = 114
DMPAPER_PENV_7_ROTATED* = 115
DMPAPER_PENV_8_ROTATED* = 116
DMPAPER_PENV_9_ROTATED* = 117
DMPAPER_PENV_10_ROTATED* = 118
DMPAPER_USER* = 256
DMCOLOR_MONOCHROME* = 1
DMCOLOR_COLOR* = 2
DMDUP_SIMPLEX* = 1
DMDUP_VERTICAL* = 2
DMDUP_HORIZONTAL* = 3
DMCOLLATE_FALSE* = 0
AC_SRC_OVER* = 0x00
AC_SRC_ALPHA* = 0x01
when winimUnicode:
type
LPDEVMODE* = LPDEVMODEW
when winimAnsi:
type
LPDEVMODE* = LPDEVMODEA
proc Arc*(hdc: HDC, x1: int32, y1: int32, x2: int32, y2: int32, x3: int32, y3: int32, x4: int32, y4: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc BitBlt*(hdc: HDC, x: int32, y: int32, cx: int32, cy: int32, hdcSrc: HDC, x1: int32, y1: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CombineRgn*(hrgnDst: HRGN, hrgnSrc1: HRGN, hrgnSrc2: HRGN, iMode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateBitmap*(nWidth: int32, nHeight: int32, nPlanes: UINT, nBitCount: UINT, lpBits: pointer): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateBrushIndirect*(plbrush: ptr LOGBRUSH): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateCompatibleBitmap*(hdc: HDC, cx: int32, cy: int32): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateCompatibleDC*(hdc: HDC): HDC {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateEllipticRgn*(x1: int32, y1: int32, x2: int32, y2: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateHatchBrush*(iHatch: int32, color: COLORREF): HBRUSH {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateRectRgn*(x1: int32, y1: int32, x2: int32, y2: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
proc CreateRoundRectRgn*(x1: int32, y1: int32, x2: int32, y2: int32, w: int32, h: int32): HRGN {.winapi, stdcall, dynlib: "gdi32", importc.}
proc DeleteDC*(hdc: HDC): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc DeleteObject*(ho: HGDIOBJ): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc Ellipse*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc EqualRgn*(hrgn1: HRGN, hrgn2: HRGN): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc FrameRgn*(hdc: HDC, hrgn: HRGN, hbr: HBRUSH, w: int32, h: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetROP2*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetBkColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetBkMode*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetDeviceCaps*(hdc: HDC, index: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetObjectType*(h: HGDIOBJ): DWORD {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetPixel*(hdc: HDC, x: int32, y: int32): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetRgnBox*(hrgn: HRGN, lprc: LPRECT): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetStockObject*(i: int32): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetTextColor*(hdc: HDC): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc GetViewportOrgEx*(hdc: HDC, lppoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc LineTo*(hdc: HDC, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc OffsetRgn*(hrgn: HRGN, x: int32, y: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc Pie*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32, xr1: int32, yr1: int32, xr2: int32, yr2: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc PaintRgn*(hdc: HDC, hrgn: HRGN): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc PolyPolygon*(hdc: HDC, apt: ptr POINT, asz: ptr INT, csz: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc PtInRegion*(hrgn: HRGN, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc RectInRegion*(hrgn: HRGN, lprect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc Rectangle*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc RoundRect*(hdc: HDC, left: int32, top: int32, right: int32, bottom: int32, width: int32, height: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SelectClipRgn*(hdc: HDC, hrgn: HRGN): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SelectObject*(hdc: HDC, h: HGDIOBJ): HGDIOBJ {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetBkColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetBkMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetBitmapBits*(hbm: HBITMAP, cb: DWORD, pvBits: pointer): LONG {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetMapMode*(hdc: HDC, iMode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetPixel*(hdc: HDC, x: int32, y: int32, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetPolyFillMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc StretchBlt*(hdcDest: HDC, xDest: int32, yDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xSrc: int32, ySrc: int32, wSrc: int32, hSrc: int32, rop: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetROP2*(hdc: HDC, rop2: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetStretchBltMode*(hdc: HDC, mode: int32): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetTextColor*(hdc: HDC, color: COLORREF): COLORREF {.winapi, stdcall, dynlib: "gdi32", importc.}
proc AlphaBlend*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, ftn: BLENDFUNCTION): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
proc TransparentBlt*(hdcDest: HDC, xoriginDest: int32, yoriginDest: int32, wDest: int32, hDest: int32, hdcSrc: HDC, xoriginSrc: int32, yoriginSrc: int32, wSrc: int32, hSrc: int32, crTransparent: UINT): WINBOOL {.winapi, stdcall, dynlib: "msimg32", importc.}
proc CreateDIBSection*(hdc: HDC, lpbmi: ptr BITMAPINFO, usage: UINT, ppvBits: ptr pointer, hSection: HANDLE, offset: DWORD): HBITMAP {.winapi, stdcall, dynlib: "gdi32", importc.}
proc EndDoc*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc StartPage*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc EndPage*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc AbortDoc*(hdc: HDC): int32 {.winapi, stdcall, dynlib: "gdi32", importc.}
proc ExtCreatePen*(iPenStyle: DWORD, cWidth: DWORD, plbrush: ptr LOGBRUSH, cStyle: DWORD, pstyle: ptr DWORD): HPEN {.winapi, stdcall, dynlib: "gdi32", importc.}
proc MoveToEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc Polygon*(hdc: HDC, apt: ptr POINT, cpt: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc Polyline*(hdc: HDC, apt: ptr POINT, cpt: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc PolyBezier*(hdc: HDC, apt: ptr POINT, cpt: DWORD): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetViewportExtEx*(hdc: HDC, x: int32, y: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetViewportOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetWindowExtEx*(hdc: HDC, x: int32, y: int32, lpsz: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
proc SetBrushOrgEx*(hdc: HDC, x: int32, y: int32, lppt: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc.}
template RGB*(r: untyped, g: untyped, b: untyped): COLORREF = COLORREF(COLORREF(r and 0xff) or (COLORREF(g and 0xff) shl 8) or (COLORREF(b and 0xff) shl 16))
template GetRValue*(c: untyped): BYTE = BYTE((c) and 0xff)
template GetGValue*(c: untyped): BYTE = BYTE((c shr 8) and 0xff)
template GetBValue*(c: untyped): BYTE = BYTE((c shr 16) and 0xff)
proc `dmOrientation=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmOrientation = x
proc dmOrientation*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmOrientation
proc dmOrientation*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmOrientation
proc `dmPaperSize=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperSize = x
proc dmPaperSize*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperSize
proc dmPaperSize*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperSize
proc `dmPaperLength=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperLength = x
proc dmPaperLength*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperLength
proc dmPaperLength*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperLength
proc `dmPaperWidth=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPaperWidth = x
proc dmPaperWidth*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPaperWidth
proc dmPaperWidth*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPaperWidth
proc `dmScale=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmScale = x
proc dmScale*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmScale
proc dmScale*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmScale
proc `dmCopies=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmCopies = x
proc dmCopies*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmCopies
proc dmCopies*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmCopies
proc `dmDefaultSource=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmDefaultSource = x
proc dmDefaultSource*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmDefaultSource
proc dmDefaultSource*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmDefaultSource
proc `dmPrintQuality=`*(self: var DEVMODEA, x: int16) {.inline.} = self.union1.struct1.dmPrintQuality = x
proc dmPrintQuality*(self: DEVMODEA): int16 {.inline.} = self.union1.struct1.dmPrintQuality
proc dmPrintQuality*(self: var DEVMODEA): var int16 {.inline.} = self.union1.struct1.dmPrintQuality
proc `dmPosition=`*(self: var DEVMODEA, x: POINTL) {.inline.} = self.union1.struct2.dmPosition = x
proc dmPosition*(self: DEVMODEA): POINTL {.inline.} = self.union1.struct2.dmPosition
proc dmPosition*(self: var DEVMODEA): var POINTL {.inline.} = self.union1.struct2.dmPosition
proc `dmDisplayOrientation=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayOrientation = x
proc dmDisplayOrientation*(self: DEVMODEA): DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
proc dmDisplayOrientation*(self: var DEVMODEA): var DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
proc `dmDisplayFixedOutput=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayFixedOutput = x
proc dmDisplayFixedOutput*(self: DEVMODEA): DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
proc dmDisplayFixedOutput*(self: var DEVMODEA): var DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
proc `dmDisplayFlags=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union2.dmDisplayFlags = x
proc dmDisplayFlags*(self: DEVMODEA): DWORD {.inline.} = self.union2.dmDisplayFlags
proc dmDisplayFlags*(self: var DEVMODEA): var DWORD {.inline.} = self.union2.dmDisplayFlags
proc `dmNup=`*(self: var DEVMODEA, x: DWORD) {.inline.} = self.union2.dmNup = x
proc dmNup*(self: DEVMODEA): DWORD {.inline.} = self.union2.dmNup
proc dmNup*(self: var DEVMODEA): var DWORD {.inline.} = self.union2.dmNup
proc `dmOrientation=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmOrientation = x
proc dmOrientation*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmOrientation
proc dmOrientation*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmOrientation
proc `dmPaperSize=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperSize = x
proc dmPaperSize*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperSize
proc dmPaperSize*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperSize
proc `dmPaperLength=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperLength = x
proc dmPaperLength*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperLength
proc dmPaperLength*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperLength
proc `dmPaperWidth=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPaperWidth = x
proc dmPaperWidth*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPaperWidth
proc dmPaperWidth*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPaperWidth
proc `dmScale=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmScale = x
proc dmScale*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmScale
proc dmScale*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmScale
proc `dmCopies=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmCopies = x
proc dmCopies*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmCopies
proc dmCopies*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmCopies
proc `dmDefaultSource=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmDefaultSource = x
proc dmDefaultSource*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmDefaultSource
proc dmDefaultSource*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmDefaultSource
proc `dmPrintQuality=`*(self: var DEVMODEW, x: int16) {.inline.} = self.union1.struct1.dmPrintQuality = x
proc dmPrintQuality*(self: DEVMODEW): int16 {.inline.} = self.union1.struct1.dmPrintQuality
proc dmPrintQuality*(self: var DEVMODEW): var int16 {.inline.} = self.union1.struct1.dmPrintQuality
proc `dmPosition=`*(self: var DEVMODEW, x: POINTL) {.inline.} = self.union1.struct2.dmPosition = x
proc dmPosition*(self: DEVMODEW): POINTL {.inline.} = self.union1.struct2.dmPosition
proc dmPosition*(self: var DEVMODEW): var POINTL {.inline.} = self.union1.struct2.dmPosition
proc `dmDisplayOrientation=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayOrientation = x
proc dmDisplayOrientation*(self: DEVMODEW): DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
proc dmDisplayOrientation*(self: var DEVMODEW): var DWORD {.inline.} = self.union1.struct2.dmDisplayOrientation
proc `dmDisplayFixedOutput=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union1.struct2.dmDisplayFixedOutput = x
proc dmDisplayFixedOutput*(self: DEVMODEW): DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
proc dmDisplayFixedOutput*(self: var DEVMODEW): var DWORD {.inline.} = self.union1.struct2.dmDisplayFixedOutput
proc `dmDisplayFlags=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union2.dmDisplayFlags = x
proc dmDisplayFlags*(self: DEVMODEW): DWORD {.inline.} = self.union2.dmDisplayFlags
proc dmDisplayFlags*(self: var DEVMODEW): var DWORD {.inline.} = self.union2.dmDisplayFlags
proc `dmNup=`*(self: var DEVMODEW, x: DWORD) {.inline.} = self.union2.dmNup = x
proc dmNup*(self: DEVMODEW): DWORD {.inline.} = self.union2.dmNup
proc dmNup*(self: var DEVMODEW): var DWORD {.inline.} = self.union2.dmNup
when winimUnicode:
type
TEXTMETRIC* = TEXTMETRICW
LOGFONT* = LOGFONTW
DEVMODE* = DEVMODEW
DOCINFO* = DOCINFOW
proc CreateDC*(pwszDriver: LPCWSTR, pwszDevice: LPCWSTR, pszPort: LPCWSTR, pdm: ptr DEVMODEW): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCW".}
proc CreateFontIndirect*(lplf: ptr LOGFONTW): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectW".}
proc DeviceCapabilities*(pDevice: LPCWSTR, pPort: LPCWSTR, fwCapability: WORD, pOutput: LPWSTR, pDevMode: ptr DEVMODEW): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesW".}
proc GetCharWidth*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}
proc GetTextExtentPoint32*(hdc: HDC, lpString: LPCWSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32W".}
proc GetTextMetrics*(hdc: HDC, lptm: LPTEXTMETRICW): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsW".}
proc StartDoc*(hdc: HDC, lpdi: ptr DOCINFOW): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocW".}
proc GetObject*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectW".}
proc TextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCWSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutW".}
proc ExtTextOut*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCWSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}
when winimAnsi:
type
TEXTMETRIC* = TEXTMETRICA
LOGFONT* = LOGFONTA
DEVMODE* = DEVMODEA
DOCINFO* = DOCINFOA
proc CreateDC*(pwszDriver: LPCSTR, pwszDevice: LPCSTR, pszPort: LPCSTR, pdm: ptr DEVMODEA): HDC {.winapi, stdcall, dynlib: "gdi32", importc: "CreateDCA".}
proc CreateFontIndirect*(lplf: ptr LOGFONTA): HFONT {.winapi, stdcall, dynlib: "gdi32", importc: "CreateFontIndirectA".}
proc DeviceCapabilities*(pDevice: LPCSTR, pPort: LPCSTR, fwCapability: WORD, pOutput: LPSTR, pDevMode: ptr DEVMODEA): int32 {.winapi, stdcall, dynlib: "winspool.drv", importc: "DeviceCapabilitiesA".}
proc GetCharWidth*(hdc: HDC, iFirst: UINT, iLast: UINT, lpBuffer: LPINT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}
proc GetTextExtentPoint32*(hdc: HDC, lpString: LPCSTR, c: int32, psizl: LPSIZE): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}
proc GetTextMetrics*(hdc: HDC, lptm: LPTEXTMETRICA): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "GetTextMetricsA".}
proc StartDoc*(hdc: HDC, lpdi: ptr DOCINFOA): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "StartDocA".}
proc GetObject*(h: HANDLE, c: int32, pv: LPVOID): int32 {.winapi, stdcall, dynlib: "gdi32", importc: "GetObjectA".}
proc TextOut*(hdc: HDC, x: int32, y: int32, lpString: LPCSTR, c: int32): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "TextOutA".}
proc ExtTextOut*(hdc: HDC, x: int32, y: int32, options: UINT, lprect: ptr RECT, lpString: LPCSTR, c: UINT, lpDx: ptr INT): WINBOOL {.winapi, stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}
type
CREATESTRUCTA* {.pure.} = object
lpCreateParams*: LPVOID
hInstance*: HINSTANCE
hMenu*: HMENU
hwndParent*: HWND
cy*: int32
cx*: int32
y*: int32
x*: int32
style*: LONG
lpszName*: LPCSTR
lpszClass*: LPCSTR
dwExStyle*: DWORD
CREATESTRUCTW* {.pure.} = object
lpCreateParams*: LPVOID
hInstance*: HINSTANCE
hMenu*: HMENU
hwndParent*: HWND
cy*: int32
cx*: int32
y*: int32
x*: int32
style*: LONG
lpszName*: LPCWSTR
lpszClass*: LPCWSTR
dwExStyle*: DWORD
KBDLLHOOKSTRUCT* {.pure.} = object
vkCode*: DWORD
scanCode*: DWORD
flags*: DWORD
time*: DWORD
dwExtraInfo*: ULONG_PTR
LPKBDLLHOOKSTRUCT* = ptr KBDLLHOOKSTRUCT
WNDPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): LRESULT {.stdcall.}
WNDCLASSEXA* {.pure.} = object
cbSize*: UINT
style*: UINT
lpfnWndProc*: WNDPROC
cbClsExtra*: int32
cbWndExtra*: int32
hInstance*: HINSTANCE
hIcon*: HICON
hCursor*: HCURSOR
hbrBackground*: HBRUSH
lpszMenuName*: LPCSTR
lpszClassName*: LPCSTR
hIconSm*: HICON
WNDCLASSEXW* {.pure.} = object
cbSize*: UINT
style*: UINT
lpfnWndProc*: WNDPROC
cbClsExtra*: int32
cbWndExtra*: int32
hInstance*: HINSTANCE
hIcon*: HICON
hCursor*: HCURSOR
hbrBackground*: HBRUSH
lpszMenuName*: LPCWSTR
lpszClassName*: LPCWSTR
hIconSm*: HICON
WNDCLASSA* {.pure.} = object
style*: UINT
lpfnWndProc*: WNDPROC
cbClsExtra*: int32
cbWndExtra*: int32
hInstance*: HINSTANCE
hIcon*: HICON
hCursor*: HCURSOR
hbrBackground*: HBRUSH
lpszMenuName*: LPCSTR
lpszClassName*: LPCSTR
LPWNDCLASSA* = ptr WNDCLASSA
WNDCLASSW* {.pure.} = object
style*: UINT
lpfnWndProc*: WNDPROC
cbClsExtra*: int32
cbWndExtra*: int32
hInstance*: HINSTANCE
hIcon*: HICON
hCursor*: HCURSOR
hbrBackground*: HBRUSH
lpszMenuName*: LPCWSTR
lpszClassName*: LPCWSTR
LPWNDCLASSW* = ptr WNDCLASSW
MSG* {.pure.} = object
hwnd*: HWND
message*: UINT
wParam*: WPARAM
lParam*: LPARAM
time*: DWORD
pt*: POINT
LPMSG* = ptr MSG
MINMAXINFO* {.pure.} = object
ptReserved*: POINT
ptMaxSize*: POINT
ptMaxPosition*: POINT
ptMinTrackSize*: POINT
ptMaxTrackSize*: POINT
PMINMAXINFO* = ptr MINMAXINFO
WINDOWPOS* {.pure.} = object
hwnd*: HWND
hwndInsertAfter*: HWND
x*: int32
y*: int32
cx*: int32
cy*: int32
flags*: UINT
LPWINDOWPOS* = ptr WINDOWPOS
TTRACKMOUSEEVENT* {.pure.} = object
cbSize*: DWORD
dwFlags*: DWORD
hwndTrack*: HWND
dwHoverTime*: DWORD
LPTRACKMOUSEEVENT* = ptr TTRACKMOUSEEVENT
ACCEL* {.pure.} = object
fVirt*: BYTE
key*: WORD
cmd*: WORD
LPACCEL* = ptr ACCEL
PAINTSTRUCT* {.pure.} = object
hdc*: HDC
fErase*: WINBOOL
rcPaint*: RECT
fRestore*: WINBOOL
fIncUpdate*: WINBOOL
rgbReserved*: array[32, BYTE]
LPPAINTSTRUCT* = ptr PAINTSTRUCT
NMHDR* {.pure.} = object
hwndFrom*: HWND
idFrom*: UINT_PTR
code*: UINT
LPNMHDR* = ptr NMHDR
MEASUREITEMSTRUCT* {.pure.} = object
CtlType*: UINT
CtlID*: UINT
itemID*: UINT
itemWidth*: UINT
itemHeight*: UINT
itemData*: ULONG_PTR
LPMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT
DRAWITEMSTRUCT* {.pure.} = object
CtlType*: UINT
CtlID*: UINT
itemID*: UINT
itemAction*: UINT
itemState*: UINT
hwndItem*: HWND
hDC*: HDC
rcItem*: RECT
itemData*: ULONG_PTR
LPDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT
MENUINFO* {.pure.} = object
cbSize*: DWORD
fMask*: DWORD
dwStyle*: DWORD
cyMax*: UINT
hbrBack*: HBRUSH
dwContextHelpID*: DWORD
dwMenuData*: ULONG_PTR
LPMENUINFO* = ptr MENUINFO
TPMPARAMS* {.pure.} = object
cbSize*: UINT
rcExclude*: RECT
LPTPMPARAMS* = ptr TPMPARAMS
LPCMENUINFO* = ptr MENUINFO
MENUITEMINFOA* {.pure.} = object
cbSize*: UINT
fMask*: UINT
fType*: UINT
fState*: UINT
wID*: UINT
hSubMenu*: HMENU
hbmpChecked*: HBITMAP
hbmpUnchecked*: HBITMAP
dwItemData*: ULONG_PTR
dwTypeData*: LPSTR
cch*: UINT
hbmpItem*: HBITMAP
LPMENUITEMINFOA* = ptr MENUITEMINFOA
MENUITEMINFOW* {.pure.} = object
cbSize*: UINT
fMask*: UINT
fType*: UINT
fState*: UINT
wID*: UINT
hSubMenu*: HMENU
hbmpChecked*: HBITMAP
hbmpUnchecked*: HBITMAP
dwItemData*: ULONG_PTR
dwTypeData*: LPWSTR
cch*: UINT
hbmpItem*: HBITMAP
LPMENUITEMINFOW* = ptr MENUITEMINFOW
LPCMENUITEMINFOA* = ptr MENUITEMINFOA
LPCMENUITEMINFOW* = ptr MENUITEMINFOW
ICONINFO* {.pure.} = object
fIcon*: WINBOOL
xHotspot*: DWORD
yHotspot*: DWORD
hbmMask*: HBITMAP
hbmColor*: HBITMAP
PICONINFO* = ptr ICONINFO
SCROLLINFO* {.pure.} = object
cbSize*: UINT
fMask*: UINT
nMin*: int32
nMax*: int32
nPage*: UINT
nPos*: int32
nTrackPos*: int32
LPSCROLLINFO* = ptr SCROLLINFO
LPCSCROLLINFO* = ptr SCROLLINFO
NONCLIENTMETRICSA* {.pure.} = object
cbSize*: UINT
iBorderWidth*: int32
iScrollWidth*: int32
iScrollHeight*: int32
iCaptionWidth*: int32
iCaptionHeight*: int32
lfCaptionFont*: LOGFONTA
iSmCaptionWidth*: int32
iSmCaptionHeight*: int32
lfSmCaptionFont*: LOGFONTA
iMenuWidth*: int32
iMenuHeight*: int32
lfMenuFont*: LOGFONTA
lfStatusFont*: LOGFONTA
lfMessageFont*: LOGFONTA
iPaddedBorderWidth*: int32
NONCLIENTMETRICSW* {.pure.} = object
cbSize*: UINT
iBorderWidth*: int32
iScrollWidth*: int32
iScrollHeight*: int32
iCaptionWidth*: int32
iCaptionHeight*: int32
lfCaptionFont*: LOGFONTW
iSmCaptionWidth*: int32
iSmCaptionHeight*: int32
lfSmCaptionFont*: LOGFONTW
iMenuWidth*: int32
iMenuHeight*: int32
lfMenuFont*: LOGFONTW
lfStatusFont*: LOGFONTW
lfMessageFont*: LOGFONTW
iPaddedBorderWidth*: int32
const
CCHILDREN_SCROLLBAR* = 5
type
SCROLLBARINFO* {.pure.} = object
cbSize*: DWORD
rcScrollBar*: RECT
dxyLineButton*: int32
xyThumbTop*: int32
xyThumbBottom*: int32
reserved*: int32
rgstate*: array[CCHILDREN_SCROLLBAR + 1, DWORD]
PSCROLLBARINFO* = ptr SCROLLBARINFO
COMBOBOXINFO* {.pure.} = object
cbSize*: DWORD
rcItem*: RECT
rcButton*: RECT
stateButton*: DWORD
hwndCombo*: HWND
hwndItem*: HWND
hwndList*: HWND
PCOMBOBOXINFO* = ptr COMBOBOXINFO
template MAKEINTRESOURCE*(i: untyped): untyped = cast[LPTSTR](i and 0xffff)
const
RT_CURSOR* = MAKEINTRESOURCE(1)
RT_ICON* = MAKEINTRESOURCE(3)
DIFFERENCE* = 11
SB_HORZ* = 0
SB_VERT* = 1
SB_CTL* = 2
SB_LINEUP* = 0
SB_LINEDOWN* = 1
SB_PAGEUP* = 2
SB_PAGEDOWN* = 3
SB_THUMBPOSITION* = 4
SB_THUMBTRACK* = 5
SB_TOP* = 6
SB_BOTTOM* = 7
SB_ENDSCROLL* = 8
SW_HIDE* = 0
SW_SHOWNORMAL* = 1
SW_SHOWMINIMIZED* = 2
SW_SHOWMAXIMIZED* = 3
SW_MAXIMIZE* = 3
SW_SHOWNOACTIVATE* = 4
SW_SHOW* = 5
SW_MINIMIZE* = 6
SW_SHOWMINNOACTIVE* = 7
SW_SHOWNA* = 8
SW_RESTORE* = 9
SW_SHOWDEFAULT* = 10
SW_FORCEMINIMIZE* = 11
VK_LBUTTON* = 0x01
VK_RBUTTON* = 0x02
VK_CANCEL* = 0x03
VK_MBUTTON* = 0x04
VK_XBUTTON1* = 0x05
VK_XBUTTON2* = 0x06
VK_BACK* = 0x08
VK_TAB* = 0x09
VK_CLEAR* = 0x0C
VK_RETURN* = 0x0D
VK_SHIFT* = 0x10
VK_CONTROL* = 0x11
VK_MENU* = 0x12
VK_PAUSE* = 0x13
VK_CAPITAL* = 0x14
VK_KANA* = 0x15
VK_HANGEUL* = 0x15
VK_HANGUL* = 0x15
VK_JUNJA* = 0x17
VK_FINAL* = 0x18
VK_HANJA* = 0x19
VK_KANJI* = 0x19
VK_ESCAPE* = 0x1B
VK_CONVERT* = 0x1C
VK_NONCONVERT* = 0x1D
VK_ACCEPT* = 0x1E
VK_MODECHANGE* = 0x1F
VK_SPACE* = 0x20
VK_PRIOR* = 0x21
VK_NEXT* = 0x22
VK_END* = 0x23
VK_HOME* = 0x24
VK_LEFT* = 0x25
VK_UP* = 0x26
VK_RIGHT* = 0x27
VK_DOWN* = 0x28
VK_SELECT* = 0x29
VK_PRINT* = 0x2A
VK_EXECUTE* = 0x2B
VK_SNAPSHOT* = 0x2C
VK_INSERT* = 0x2D
VK_DELETE* = 0x2E
VK_HELP* = 0x2F
VK_LWIN* = 0x5B
VK_RWIN* = 0x5C
VK_APPS* = 0x5D
VK_SLEEP* = 0x5F
VK_NUMPAD0* = 0x60
VK_NUMPAD1* = 0x61
VK_NUMPAD2* = 0x62
VK_NUMPAD3* = 0x63
VK_NUMPAD4* = 0x64
VK_NUMPAD5* = 0x65
VK_NUMPAD6* = 0x66
VK_NUMPAD7* = 0x67
VK_NUMPAD8* = 0x68
VK_NUMPAD9* = 0x69
VK_MULTIPLY* = 0x6A
VK_ADD* = 0x6B
VK_SEPARATOR* = 0x6C
VK_SUBTRACT* = 0x6D
VK_DECIMAL* = 0x6E
VK_DIVIDE* = 0x6F
VK_F1* = 0x70
VK_F2* = 0x71
VK_F3* = 0x72
VK_F4* = 0x73
VK_F5* = 0x74
VK_F6* = 0x75
VK_F7* = 0x76
VK_F8* = 0x77
VK_F9* = 0x78
VK_F10* = 0x79
VK_F11* = 0x7A
VK_F12* = 0x7B
VK_F13* = 0x7C
VK_F14* = 0x7D
VK_F15* = 0x7E
VK_F16* = 0x7F
VK_F17* = 0x80
VK_F18* = 0x81
VK_F19* = 0x82
VK_F20* = 0x83
VK_F21* = 0x84
VK_F22* = 0x85
VK_F23* = 0x86
VK_F24* = 0x87
VK_NUMLOCK* = 0x90
VK_SCROLL* = 0x91
VK_OEM_NEC_EQUAL* = 0x92
VK_OEM_FJ_JISHO* = 0x92
VK_OEM_FJ_MASSHOU* = 0x93
VK_OEM_FJ_TOUROKU* = 0x94
VK_OEM_FJ_LOYA* = 0x95
VK_OEM_FJ_ROYA* = 0x96
VK_LSHIFT* = 0xA0
VK_RSHIFT* = 0xA1
VK_LCONTROL* = 0xA2
VK_RCONTROL* = 0xA3
VK_LMENU* = 0xA4
VK_RMENU* = 0xA5
VK_BROWSER_BACK* = 0xA6
VK_BROWSER_FORWARD* = 0xA7
VK_BROWSER_REFRESH* = 0xA8
VK_BROWSER_STOP* = 0xA9
VK_BROWSER_SEARCH* = 0xAA
VK_BROWSER_FAVORITES* = 0xAB
VK_BROWSER_HOME* = 0xAC
VK_VOLUME_MUTE* = 0xAD
VK_VOLUME_DOWN* = 0xAE
VK_VOLUME_UP* = 0xAF
VK_MEDIA_NEXT_TRACK* = 0xB0
VK_MEDIA_PREV_TRACK* = 0xB1
VK_MEDIA_STOP* = 0xB2
VK_MEDIA_PLAY_PAUSE* = 0xB3
VK_LAUNCH_MAIL* = 0xB4
VK_LAUNCH_MEDIA_SELECT* = 0xB5
VK_LAUNCH_APP1* = 0xB6
VK_LAUNCH_APP2* = 0xB7
VK_OEM_1* = 0xBA
VK_OEM_PLUS* = 0xBB
VK_OEM_COMMA* = 0xBC
VK_OEM_MINUS* = 0xBD
VK_OEM_PERIOD* = 0xBE
VK_OEM_2* = 0xBF
VK_OEM_3* = 0xC0
VK_OEM_4* = 0xDB
VK_OEM_5* = 0xDC
VK_OEM_6* = 0xDD
VK_OEM_7* = 0xDE
VK_OEM_8* = 0xDF
VK_OEM_AX* = 0xE1
VK_OEM_102* = 0xE2
VK_ICO_HELP* = 0xE3
VK_ICO_00* = 0xE4
VK_PROCESSKEY* = 0xE5
VK_ICO_CLEAR* = 0xE6
VK_PACKET* = 0xE7
VK_OEM_RESET* = 0xE9
VK_OEM_JUMP* = 0xEA
VK_OEM_PA1* = 0xEB
VK_OEM_PA2* = 0xEC
VK_OEM_PA3* = 0xED
VK_OEM_WSCTRL* = 0xEE
VK_OEM_CUSEL* = 0xEF
VK_OEM_ATTN* = 0xF0
VK_OEM_FINISH* = 0xF1
VK_OEM_COPY* = 0xF2
VK_OEM_AUTO* = 0xF3
VK_OEM_ENLW* = 0xF4
VK_OEM_BACKTAB* = 0xF5
VK_ATTN* = 0xF6
VK_CRSEL* = 0xF7
VK_EXSEL* = 0xF8
VK_EREOF* = 0xF9
VK_PLAY* = 0xFA
VK_ZOOM* = 0xFB
VK_NONAME* = 0xFC
VK_PA1* = 0xFD
VK_OEM_CLEAR* = 0xFE
WH_MSGFILTER* = -1
WH_CBT* = 5
WH_KEYBOARD_LL* = 13
HCBT_ACTIVATE* = 5
GWL_STYLE* = -16
GWL_EXSTYLE* = -20
GWLP_USERDATA* = -21
GWLP_ID* = -12
WM_NULL* = 0x0000
WM_CREATE* = 0x0001
WM_DESTROY* = 0x0002
WM_MOVE* = 0x0003
WM_SIZE* = 0x0005
WM_ACTIVATE* = 0x0006
WM_SETFOCUS* = 0x0007
WM_KILLFOCUS* = 0x0008
WM_SETREDRAW* = 0x000B
WM_SETTEXT* = 0x000C
WM_PAINT* = 0x000F
WM_CLOSE* = 0x0010
WM_QUIT* = 0x0012
WM_ERASEBKGND* = 0x0014
WM_SHOWWINDOW* = 0x0018
WM_CANCELMODE* = 0x001F
WM_SETCURSOR* = 0x0020
WM_GETMINMAXINFO* = 0x0024
WM_DRAWITEM* = 0x002B
WM_MEASUREITEM* = 0x002C
WM_SETFONT* = 0x0030
WM_GETFONT* = 0x0031
WM_WINDOWPOSCHANGED* = 0x0047
WM_NOTIFY* = 0x004E
WM_CONTEXTMENU* = 0x007B
WM_STYLECHANGED* = 0x007D
WM_SETICON* = 0x0080
WM_NCDESTROY* = 0x0082
WM_NCCALCSIZE* = 0x0083
WM_NCHITTEST* = 0x0084
WM_NCPAINT* = 0x0085
WM_NCMOUSEMOVE* = 0x00A0
WM_NCLBUTTONDOWN* = 0x00A1
WM_NCLBUTTONUP* = 0x00A2
WM_NCLBUTTONDBLCLK* = 0x00A3
WM_NCRBUTTONDOWN* = 0x00A4
WM_NCRBUTTONUP* = 0x00A5
WM_NCRBUTTONDBLCLK* = 0x00A6
WM_NCMBUTTONDOWN* = 0x00A7
WM_NCMBUTTONUP* = 0x00A8
WM_NCMBUTTONDBLCLK* = 0x00A9
WM_NCXBUTTONDOWN* = 0x00AB
WM_NCXBUTTONUP* = 0x00AC
WM_NCXBUTTONDBLCLK* = 0x00AD
WM_KEYFIRST* = 0x0100
WM_KEYDOWN* = 0x0100
WM_KEYUP* = 0x0101
WM_CHAR* = 0x0102
WM_SYSKEYDOWN* = 0x0104
WM_SYSKEYUP* = 0x0105
WM_SYSCHAR* = 0x0106
WM_KEYLAST* = 0x0109
WM_INITDIALOG* = 0x0110
WM_COMMAND* = 0x0111
WM_SYSCOMMAND* = 0x0112
WM_TIMER* = 0x0113
WM_HSCROLL* = 0x0114
WM_VSCROLL* = 0x0115
WM_MENUSELECT* = 0x011F
WM_MENURBUTTONUP* = 0x0122
WM_MENUCOMMAND* = 0x0126
WM_CHANGEUISTATE* = 0x0127
WM_UPDATEUISTATE* = 0x0128
WM_QUERYUISTATE* = 0x0129
UIS_SET* = 1
UIS_CLEAR* = 2
UISF_HIDEFOCUS* = 0x1
UISF_HIDEACCEL* = 0x2
WM_CTLCOLOREDIT* = 0x0133
WM_CTLCOLORLISTBOX* = 0x0134
WM_CTLCOLORBTN* = 0x0135
WM_CTLCOLORSTATIC* = 0x0138
WM_MOUSEFIRST* = 0x0200
WM_MOUSEMOVE* = 0x0200
WM_LBUTTONDOWN* = 0x0201
WM_LBUTTONUP* = 0x0202
WM_LBUTTONDBLCLK* = 0x0203
WM_RBUTTONDOWN* = 0x0204
WM_RBUTTONUP* = 0x0205
WM_RBUTTONDBLCLK* = 0x0206
WM_MBUTTONDOWN* = 0x0207
WM_MBUTTONUP* = 0x0208
WM_MBUTTONDBLCLK* = 0x0209
WM_MOUSEWHEEL* = 0x020A
WM_MOUSEHWHEEL* = 0x020e
WM_MOUSELAST* = 0x020e
WM_MOVING* = 0x0216
WM_MOUSEHOVER* = 0x02A1
WM_MOUSELEAVE* = 0x02A3
WM_CUT* = 0x0300
WM_COPY* = 0x0301
WM_HOTKEY* = 0x0312
WM_APP* = 0x8000
WM_USER* = 0x0400
HTTRANSPARENT* = -1
HTCLIENT* = 1
HTCAPTION* = 2
ICON_SMALL* = 0
SIZE_RESTORED* = 0
SIZE_MINIMIZED* = 1
SIZE_MAXIMIZED* = 2
SIZE_MAXSHOW* = 3
SIZE_MAXHIDE* = 4
TME_LEAVE* = 0x00000002
HOVER_DEFAULT* = 0xFFFFFFFF'i32
WS_POPUP* = 0x80000000'i32
WS_CHILD* = 0x40000000
WS_MINIMIZE* = 0x20000000
WS_VISIBLE* = 0x10000000
WS_CLIPSIBLINGS* = 0x04000000
WS_CLIPCHILDREN* = 0x02000000
WS_MAXIMIZE* = 0x01000000
WS_CAPTION* = 0x00C00000
WS_BORDER* = 0x00800000
WS_VSCROLL* = 0x00200000
WS_HSCROLL* = 0x00100000
WS_SYSMENU* = 0x00080000
WS_THICKFRAME* = 0x00040000
WS_GROUP* = 0x00020000
WS_TABSTOP* = 0x00010000
WS_MINIMIZEBOX* = 0x00020000
WS_MAXIMIZEBOX* = 0x00010000
WS_ICONIC* = WS_MINIMIZE
WS_SIZEBOX* = WS_THICKFRAME
WS_POPUPWINDOW* = WS_POPUP or WS_BORDER or WS_SYSMENU
WS_EX_DLGMODALFRAME* = 0x00000001
WS_EX_TOPMOST* = 0x00000008
WS_EX_TRANSPARENT* = 0x00000020
WS_EX_TOOLWINDOW* = 0x00000080
WS_EX_WINDOWEDGE* = 0x00000100
WS_EX_CLIENTEDGE* = 0x00000200
WS_EX_RTLREADING* = 0x00002000
WS_EX_STATICEDGE* = 0x00020000
WS_EX_LAYERED* = 0x00080000
WS_EX_LAYOUTRTL* = 0x00400000
WS_EX_COMPOSITED* = 0x02000000
CS_VREDRAW* = 0x0001
CS_HREDRAW* = 0x0002
CS_DBLCLKS* = 0x0008
CS_PARENTDC* = 0x0080
DFC_MENU* = 2
DFCS_MENUCHECK* = 0x0001
CF_TEXT* = 1
CF_BITMAP* = 2
CF_UNICODETEXT* = 13
CF_HDROP* = 15
FVIRTKEY* = TRUE
FSHIFT* = 0x04
FCONTROL* = 0x08
FALT* = 0x10
ODT_MENU* = 1
ODT_COMBOBOX* = 3
ODA_DRAWENTIRE* = 0x0001
ODA_SELECT* = 0x0002
ODS_SELECTED* = 0x0001
ODS_COMBOBOXEDIT* = 0x1000
PM_REMOVE* = 0x0001
MOD_ALT* = 0x0001
MOD_CONTROL* = 0x0002
MOD_SHIFT* = 0x0004
MOD_WIN* = 0x0008
MOD_NOREPEAT* = 0x4000
CW_USEDEFAULT* = int32 0x80000000'i32
HWND_DESKTOP* = HWND 0
LWA_ALPHA* = 0x00000002
SWP_NOSIZE* = 0x0001
SWP_NOMOVE* = 0x0002
SWP_NOZORDER* = 0x0004
SWP_NOACTIVATE* = 0x0010
SWP_FRAMECHANGED* = 0x0020
SWP_SHOWWINDOW* = 0x0040
SWP_NOOWNERZORDER* = 0x0200
SWP_DRAWFRAME* = SWP_FRAMECHANGED
SWP_NOREPOSITION* = SWP_NOOWNERZORDER
HWND_TOP* = HWND 0
HWND_BOTTOM* = HWND 1
HWND_TOPMOST* = HWND(-1)
HWND_NOTOPMOST* = HWND(-2)
KEYEVENTF_KEYUP* = 0x0002
SM_CXSCREEN* = 0
SM_CYSCREEN* = 1
SM_CXVSCROLL* = 2
SM_CYHSCROLL* = 3
SM_CYCAPTION* = 4
SM_CXBORDER* = 5
SM_CYBORDER* = 6
SM_CYVTHUMB* = 9
SM_CXHTHUMB* = 10
SM_CXICON* = 11
SM_CYICON* = 12
SM_CXCURSOR* = 13
SM_CYCURSOR* = 14
SM_CYMENU* = 15
SM_CYVSCROLL* = 20
SM_CXHSCROLL* = 21
SM_SWAPBUTTON* = 23
SM_CXMIN* = 28
SM_CYMIN* = 29
SM_CXFRAME* = 32
SM_CYFRAME* = 33
SM_CXDOUBLECLK* = 36
SM_CYDOUBLECLK* = 37
SM_CXICONSPACING* = 38
SM_CYICONSPACING* = 39
SM_MENUDROPALIGNMENT* = 40
SM_PENWINDOWS* = 41
SM_CXSIZEFRAME* = SM_CXFRAME
SM_CYSIZEFRAME* = SM_CYFRAME
SM_CXEDGE* = 45
SM_CYEDGE* = 46
SM_CXSMICON* = 49
SM_CYSMICON* = 50
SM_CXMENUSIZE* = 54
SM_CYMENUSIZE* = 55
SM_NETWORK* = 63
SM_CXDRAG* = 68
SM_CYDRAG* = 69
SM_SHOWSOUNDS* = 70
MNS_NOTIFYBYPOS* = 0x08000000
MNS_CHECKORBMP* = 0x04000000
MIM_MENUDATA* = 0x00000008
MIM_STYLE* = 0x00000010
MIIM_STATE* = 0x00000001
MIIM_ID* = 0x00000002
MIIM_SUBMENU* = 0x00000004
MIIM_DATA* = 0x00000020
MIIM_STRING* = 0x00000040
MIIM_BITMAP* = 0x00000080
MIIM_FTYPE* = 0x00000100
HBMMENU_CALLBACK* = HBITMAP(-1)
TPM_LEFTBUTTON* = 0x0000
TPM_LEFTALIGN* = 0x0000
TPM_RIGHTALIGN* = 0x0008
TPM_TOPALIGN* = 0x0000
TPM_VCENTERALIGN* = 0x0010
TPM_BOTTOMALIGN* = 0x0020
TPM_VERTICAL* = 0x0040
TPM_RETURNCMD* = 0x0100
TPM_RECURSE* = 0x0001
TPM_HORPOSANIMATION* = 0x0400
TPM_HORNEGANIMATION* = 0x0800
TPM_LAYOUTRTL* = 0x8000
DT_TOP* = 0x00000000
DT_LEFT* = 0x00000000
DT_CENTER* = 0x00000001
DT_RIGHT* = 0x00000002
DT_VCENTER* = 0x00000004
DT_BOTTOM* = 0x00000008
DT_SINGLELINE* = 0x00000020
DT_CALCRECT* = 0x00000400
DT_NOPREFIX* = 0x00000800
DT_END_ELLIPSIS* = 0x00008000
DT_HIDEPREFIX* = 0x00100000
RDW_INVALIDATE* = 0x0001
RDW_ERASE* = 0x0004
RDW_ALLCHILDREN* = 0x0080
RDW_UPDATENOW* = 0x0100
ESB_ENABLE_BOTH* = 0x0000
ESB_DISABLE_BOTH* = 0x0003
MB_OK* = 0x00000000
MB_OKCANCEL* = 0x00000001
MB_ABORTRETRYIGNORE* = 0x00000002
MB_YESNOCANCEL* = 0x00000003
MB_YESNO* = 0x00000004
MB_RETRYCANCEL* = 0x00000005
MB_CANCELTRYCONTINUE* = 0x00000006
MB_ICONHAND* = 0x00000010
MB_ICONQUESTION* = 0x00000020
MB_ICONEXCLAMATION* = 0x00000030
MB_ICONASTERISK* = 0x00000040
MB_ICONWARNING* = MB_ICONEXCLAMATION
MB_ICONERROR* = MB_ICONHAND
MB_ICONINFORMATION* = MB_ICONASTERISK
MB_ICONSTOP* = MB_ICONHAND
MB_DEFBUTTON1* = 0x00000000
MB_DEFBUTTON2* = 0x00000100
MB_DEFBUTTON3* = 0x00000200
MB_DEFBUTTON4* = 0x00000300
MB_APPLMODAL* = 0x00000000
MB_TASKMODAL* = 0x00002000
MB_TOPMOST* = 0x00040000
COLOR_MENUTEXT* = 7
COLOR_ACTIVEBORDER* = 10
COLOR_APPWORKSPACE* = 12
COLOR_HIGHLIGHT* = 13
COLOR_HIGHLIGHTTEXT* = 14
COLOR_BTNFACE* = 15
COLOR_GRAYTEXT* = 17
GW_HWNDNEXT* = 2
GW_OWNER* = 4
GW_CHILD* = 5
MF_BYCOMMAND* = 0x00000000
MF_BYPOSITION* = 0x00000400
MF_SEPARATOR* = 0x00000800
MF_ENABLED* = 0x00000000
MF_GRAYED* = 0x00000001
MF_DISABLED* = 0x00000002
MF_CHECKED* = 0x00000008
MF_STRING* = 0x00000000
MF_POPUP* = 0x00000010
MF_MENUBARBREAK* = 0x00000020
MF_MENUBREAK* = 0x00000040
MFT_STRING* = MF_STRING
MFT_SEPARATOR* = MF_SEPARATOR
MFS_GRAYED* = 0x00000003
MFS_DISABLED* = MFS_GRAYED
MFS_CHECKED* = MF_CHECKED
SC_SIZE* = 0xF000
SC_MOVE* = 0xF010
SC_MINIMIZE* = 0xF020
SC_MAXIMIZE* = 0xF030
SC_CLOSE* = 0xF060
SC_RESTORE* = 0xF120
IDC_ARROW* = MAKEINTRESOURCE(32512)
IMAGE_BITMAP* = 0
IMAGE_ICON* = 1
LR_COPYDELETEORG* = 0x0008
LR_DEFAULTSIZE* = 0x0040
LR_CREATEDIBSECTION* = 0x2000
LR_SHARED* = 0x8000
DI_NORMAL* = 0x0003
IDI_ASTERISK* = MAKEINTRESOURCE(32516)
IDI_INFORMATION* = IDI_ASTERISK
IDOK* = 1
IDCANCEL* = 2
IDABORT* = 3
IDRETRY* = 4
IDIGNORE* = 5
IDYES* = 6
IDNO* = 7
IDTRYAGAIN* = 10
IDCONTINUE* = 11
ES_LEFT* = 0x0000
ES_CENTER* = 0x0001
ES_RIGHT* = 0x0002
ES_MULTILINE* = 0x0004
ES_PASSWORD* = 0x0020
ES_AUTOHSCROLL* = 0x0080
ES_NOHIDESEL* = 0x0100
ES_READONLY* = 0x0800
EN_CHANGE* = 0x0300
EN_UPDATE* = 0x0400
EN_MAXTEXT* = 0x0501
EC_LEFTMARGIN* = 0x0001
EC_RIGHTMARGIN* = 0x0002
EM_GETSEL* = 0x00B0
EM_SETSEL* = 0x00B1
EM_LINESCROLL* = 0x00B6
EM_GETMODIFY* = 0x00B8
EM_SETMODIFY* = 0x00B9
EM_GETLINECOUNT* = 0x00BA
EM_LINEINDEX* = 0x00BB
EM_LINELENGTH* = 0x00C1
EM_REPLACESEL* = 0x00C2
EM_GETLINE* = 0x00C4
EM_LIMITTEXT* = 0x00C5
EM_CANUNDO* = 0x00C6
EM_UNDO* = 0x00C7
EM_LINEFROMCHAR* = 0x00C9
EM_GETFIRSTVISIBLELINE* = 0x00CE
EM_SETREADONLY* = 0x00CF
EM_SETMARGINS* = 0x00D3
EM_GETMARGINS* = 0x00D4
BS_PUSHBUTTON* = 0x00000000
BS_DEFPUSHBUTTON* = 0x00000001
BS_AUTOCHECKBOX* = 0x00000003
BS_3STATE* = 0x00000005
BS_AUTO3STATE* = 0x00000006
BS_GROUPBOX* = 0x00000007
BS_AUTORADIOBUTTON* = 0x00000009
BS_LEFTTEXT* = 0x00000020
BS_LEFT* = 0x00000100
BS_RIGHT* = 0x00000200
BS_TOP* = 0x00000400
BS_BOTTOM* = 0x00000800
BS_FLAT* = 0x00008000
BN_CLICKED* = 0
BM_GETCHECK* = 0x00F0
BM_SETCHECK* = 0x00F1
BM_CLICK* = 0x00F5
BST_UNCHECKED* = 0x0000
BST_CHECKED* = 0x0001
BST_INDETERMINATE* = 0x0002
SS_LEFT* = 0x00000000
SS_CENTER* = 0x00000001
SS_RIGHT* = 0x00000002
SS_LEFTNOWORDWRAP* = 0x0000000C
SS_BITMAP* = 0x0000000E
SS_REALSIZECONTROL* = 0x00000040
SS_NOTIFY* = 0x00000100
SS_CENTERIMAGE* = 0x00000200
SS_SUNKEN* = 0x00001000
STM_SETIMAGE* = 0x0172
STN_CLICKED* = 0
STN_DBLCLK* = 1
DS_MODALFRAME* = 0x80
LB_ERR* = -1
LBN_SELCHANGE* = 1
LBN_DBLCLK* = 2
LBN_SETFOCUS* = 4
LB_ADDSTRING* = 0x0180
LB_INSERTSTRING* = 0x0181
LB_DELETESTRING* = 0x0182
LB_RESETCONTENT* = 0x0184
LB_SETSEL* = 0x0185
LB_SETCURSEL* = 0x0186
LB_GETSEL* = 0x0187
LB_GETCURSEL* = 0x0188
LB_GETTEXT* = 0x0189
LB_GETTEXTLEN* = 0x018A
LB_GETCOUNT* = 0x018B
LB_GETTOPINDEX* = 0x018E
LB_GETSELITEMS* = 0x0191
LB_SETTOPINDEX* = 0x0197
LB_GETITEMRECT* = 0x0198
LB_GETITEMDATA* = 0x0199
LB_SETITEMDATA* = 0x019A
LB_SETCARETINDEX* = 0x019E
LB_GETCARETINDEX* = 0x019F
LB_GETITEMHEIGHT* = 0x01A1
LB_ITEMFROMPOINT* = 0x01A9
LBS_NOTIFY* = 0x0001
LBS_SORT* = 0x0002
LBS_MULTIPLESEL* = 0x0008
LBS_NOINTEGRALHEIGHT* = 0x0100
LBS_EXTENDEDSEL* = 0x0800
LBS_DISABLENOSCROLL* = 0x1000
LBS_NOSEL* = 0x4000
CB_ERR* = -1
CBN_DBLCLK* = 2
CBN_SETFOCUS* = 3
CBN_KILLFOCUS* = 4
CBN_DROPDOWN* = 7
CBN_CLOSEUP* = 8
CBN_SELENDOK* = 9
CBS_SIMPLE* = 0x0001
CBS_DROPDOWN* = 0x0002
CBS_DROPDOWNLIST* = 0x0003
CBS_OWNERDRAWFIXED* = 0x0010
CBS_OWNERDRAWVARIABLE* = 0x0020
CBS_AUTOHSCROLL* = 0x0040
CBS_SORT* = 0x0100
CBS_HASSTRINGS* = 0x0200
CBS_NOINTEGRALHEIGHT* = 0x0400
CBS_DISABLENOSCROLL* = 0x0800
CB_ADDSTRING* = 0x0143
CB_DELETESTRING* = 0x0144
CB_GETCOUNT* = 0x0146
CB_GETCURSEL* = 0x0147
CB_GETLBTEXT* = 0x0148
CB_GETLBTEXTLEN* = 0x0149
CB_INSERTSTRING* = 0x014A
CB_RESETCONTENT* = 0x014B
CB_SETCURSEL* = 0x014E
CB_SHOWDROPDOWN* = 0x014F
CB_GETITEMDATA* = 0x0150
CB_SETITEMDATA* = 0x0151
CB_SETITEMHEIGHT* = 0x0153
CB_GETITEMHEIGHT* = 0x0154
CB_GETDROPPEDSTATE* = 0x0157
SBS_HORZ* = 0x0000
SBS_VERT* = 0x0001
SIF_RANGE* = 0x0001
SIF_PAGE* = 0x0002
SIF_POS* = 0x0004
SIF_TRACKPOS* = 0x0010
SIF_ALL* = SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS
SPI_GETNONCLIENTMETRICS* = 0x0029
SPI_GETKEYBOARDCUES* = 0x100A
SPI_GETMENUUNDERLINES* = SPI_GETKEYBOARDCUES
OBJID_VSCROLL* = LONG 0xFFFFFFFB'i32
OBJID_HSCROLL* = LONG 0xFFFFFFFA'i32
STATE_SYSTEM_PRESSED* = 0x00000008
STATE_SYSTEM_INVISIBLE* = 0x00008000
GA_PARENT* = 1
GA_ROOT* = 2
RT_GROUP_CURSOR* = MAKEINTRESOURCE(1+DIFFERENCE)
RT_GROUP_ICON* = MAKEINTRESOURCE(3+DIFFERENCE)
type
TIMERPROC* = proc (P1: HWND, P2: UINT, P3: UINT_PTR, P4: DWORD): VOID {.stdcall.}
WNDENUMPROC* = proc (P1: HWND, P2: LPARAM): WINBOOL {.stdcall.}
HOOKPROC* = proc (code: int32, wParam: WPARAM, lParam: LPARAM): LRESULT {.stdcall.}
proc TrackMouseEvent*(lpEventTrack: LPTRACKMOUSEEVENT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DrawFrameControl*(P1: HDC, P2: LPRECT, P3: UINT, P4: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc TranslateMessage*(lpMsg: ptr MSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc RegisterHotKey*(hWnd: HWND, id: int32, fsModifiers: UINT, vk: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc UnregisterHotKey*(hWnd: HWND, id: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMessagePos*(): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMessageTime*(): LONG {.winapi, stdcall, dynlib: "user32", importc.}
proc AttachThreadInput*(idAttach: DWORD, idAttachTo: DWORD, fAttach: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc PostQuitMessage*(nExitCode: int32): VOID {.winapi, stdcall, dynlib: "user32", importc.}
proc IsWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsMenu*(hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsChild*(hWndParent: HWND, hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DestroyWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc ShowWindow*(hWnd: HWND, nCmdShow: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetLayeredWindowAttributes*(hwnd: HWND, pcrKey: ptr COLORREF, pbAlpha: ptr BYTE, pdwFlags: ptr DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetLayeredWindowAttributes*(hwnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetWindowPos*(hWnd: HWND, hWndInsertAfter: HWND, X: int32, Y: int32, cx: int32, cy: int32, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsWindowVisible*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsIconic*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc BringWindowToTop*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsZoomed*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetDlgItem*(hDlg: HWND, nIDDlgItem: int32): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetNextDlgGroupItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetNextDlgTabItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetDialogBaseUnits*(): LONG32 {.winapi, stdcall, dynlib: "user32", importc.}
proc SetFocus*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetFocus*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetKeyState*(nVirtKey: int32): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
proc GetAsyncKeyState*(vKey: int32): SHORT {.winapi, stdcall, dynlib: "user32", importc.}
proc GetKeyboardState*(lpKeyState: PBYTE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc keybd_event*(bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: ULONG_PTR): VOID {.winapi, stdcall, dynlib: "user32", importc.}
proc GetCapture*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc SetCapture*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc ReleaseCapture*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetTimer*(hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC): UINT_PTR {.winapi, stdcall, dynlib: "user32", importc.}
proc KillTimer*(hWnd: HWND, uIDEvent: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc EnableWindow*(hWnd: HWND, bEnable: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IsWindowEnabled*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DestroyAcceleratorTable*(hAccel: HACCEL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetSystemMetrics*(nIndex: int32): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMenu*(hWnd: HWND): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
proc SetMenu*(hWnd: HWND, hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMenuState*(hMenu: HMENU, uId: UINT, uFlags: UINT): UINT {.winapi, stdcall, dynlib: "user32", importc.}
proc DrawMenuBar*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetSystemMenu*(hWnd: HWND, bRevert: WINBOOL): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
proc CreateMenu*(): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
proc CreatePopupMenu*(): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
proc DestroyMenu*(hMenu: HMENU): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc EnableMenuItem*(hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetSubMenu*(hMenu: HMENU, nPos: int32): HMENU {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMenuItemCount*(hMenu: HMENU): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc RemoveMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32, nReserved: int32, hWnd: HWND, prcRect: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc TrackPopupMenuEx*(P1: HMENU, P2: UINT, P3: int32, P4: int32, P5: HWND, P6: LPTPMPARAMS): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetMenuInfo*(P1: HMENU, P2: LPMENUINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetMenuInfo*(P1: HMENU, P2: LPCMENUINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DrawIcon*(hDC: HDC, X: int32, Y: int32, hIcon: HICON): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc UpdateWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetForegroundWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc SetForegroundWindow*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetDC*(hWnd: HWND): HDC {.winapi, stdcall, dynlib: "user32", importc.}
proc GetWindowDC*(hWnd: HWND): HDC {.winapi, stdcall, dynlib: "user32", importc.}
proc ReleaseDC*(hWnd: HWND, hDC: HDC): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc BeginPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): HDC {.winapi, stdcall, dynlib: "user32", importc.}
proc EndPaint*(hWnd: HWND, lpPaint: ptr PAINTSTRUCT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetUpdateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetWindowRgn*(hWnd: HWND, hRgn: HRGN, bRedraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc InvalidateRect*(hWnd: HWND, lpRect: ptr RECT, bErase: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc RedrawWindow*(hWnd: HWND, lprcUpdate: ptr RECT, hrgnUpdate: HRGN, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc ShowScrollBar*(hWnd: HWND, wBar: int32, bShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc EnableScrollBar*(hWnd: HWND, wSBflags: UINT, wArrows: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetClientRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetWindowRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetCursorPos*(X: int32, Y: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetCursor*(hCursor: HCURSOR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc.}
proc GetCursorPos*(lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc HideCaret*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc ShowCaret*(hWnd: HWND): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc ClientToScreen*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc ScreenToClient*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc MapWindowPoints*(hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT, cPoints: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc WindowFromPoint*(Point: POINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetSysColor*(nIndex: int32): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
proc DrawFocusRect*(hDC: HDC, lprc: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc FillRect*(hDC: HDC, lprc: ptr RECT, hbr: HBRUSH): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc InflateRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc IntersectRect*(lprcDst: LPRECT, lprcSrc1: ptr RECT, lprcSrc2: ptr RECT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc OffsetRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc PtInRect*(lprc: ptr RECT, pt: POINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetDesktopWindow*(): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc GetParent*(hWnd: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc SetParent*(hWndChild: HWND, hWndNewParent: HWND): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc EnumChildWindows*(hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetWindowThreadProcessId*(hWnd: HWND, lpdwProcessId: LPDWORD): DWORD {.winapi, stdcall, dynlib: "user32", importc.}
proc GetWindow*(hWnd: HWND, uCmd: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
proc UnhookWindowsHookEx*(hhk: HHOOK): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc CallNextHookEx*(hhk: HHOOK, nCode: int32, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc.}
proc CheckMenuRadioItem*(hmenu: HMENU, first: UINT, last: UINT, check: UINT, flags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DestroyCursor*(hCursor: HCURSOR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc DestroyIcon*(hIcon: HICON): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc LookupIconIdFromDirectoryEx*(presbits: PBYTE, fIcon: WINBOOL, cxDesired: int32, cyDesired: int32, Flags: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc CreateIconFromResourceEx*(presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL, dwVer: DWORD, cxDesired: int32, cyDesired: int32, Flags: UINT): HICON {.winapi, stdcall, dynlib: "user32", importc.}
proc CopyImage*(h: HANDLE, `type`: UINT, cx: int32, cy: int32, flags: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc.}
proc DrawIconEx*(hdc: HDC, xLeft: int32, yTop: int32, hIcon: HICON, cxWidth: int32, cyWidth: int32, istepIfAniCur: UINT, hbrFlickerFreeDraw: HBRUSH, diFlags: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc CreateIconIndirect*(piconinfo: PICONINFO): HICON {.winapi, stdcall, dynlib: "user32", importc.}
proc GetIconInfo*(hIcon: HICON, piconinfo: PICONINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetScrollInfo*(hwnd: HWND, nBar: int32, lpsi: LPCSCROLLINFO, redraw: WINBOOL): int32 {.winapi, stdcall, dynlib: "user32", importc.}
proc GetScrollInfo*(hwnd: HWND, nBar: int32, lpsi: LPSCROLLINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc SetProcessDPIAware*(): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetScrollBarInfo*(hwnd: HWND, idObject: LONG, psbi: PSCROLLBARINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetComboBoxInfo*(hwndCombo: HWND, pcbi: PCOMBOBOXINFO): WINBOOL {.winapi, stdcall, dynlib: "user32", importc.}
proc GetAncestor*(hwnd: HWND, gaFlags: UINT): HWND {.winapi, stdcall, dynlib: "user32", importc.}
template MAKEWPARAM*(l: untyped, h: untyped): WPARAM = WPARAM MAKELONG(l, h)
template MAKELPARAM*(l: untyped, h: untyped): LPARAM = LPARAM MAKELONG(l, h)
template GET_WHEEL_DELTA_WPARAM*(wParam: untyped): SHORT = cast[SHORT](HIWORD(wParam))
when winimAnsi:
proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExA".}
when winimUnicode:
proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32, nWidth: int32, nHeight: int32, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID): HWND {.winapi, stdcall, dynlib: "user32", importc: "CreateWindowExW".}
type
WNDCLASSEX* = WNDCLASSEXW
WNDCLASS* = WNDCLASSW
CREATESTRUCT* = CREATESTRUCTW
MENUITEMINFO* = MENUITEMINFOW
NONCLIENTMETRICS* = NONCLIENTMETRICSW
proc RegisterWindowMessage*(lpString: LPCWSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageW".}
proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageW".}
proc DispatchMessage*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageW".}
proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageW".}
proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageW".}
proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageW".}
proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcW".}
proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcW".}
proc UnregisterClass*(lpClassName: LPCWSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassW".}
proc GetClassInfo*(hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoW".}
proc RegisterClassEx*(P1: ptr WNDCLASSEXW): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExW".}
proc CreateAcceleratorTable*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableW".}
proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
proc InsertMenuItem*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemW".}
proc GetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoW".}
proc SetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOW): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoW".}
proc DrawText*(hdc: HDC, lpchText: LPCWSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextW".}
proc SetWindowText*(hWnd: HWND, lpString: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextW".}
proc GetWindowText*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextW".}
proc GetWindowTextLength*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthW".}
proc MessageBox*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxW".}
proc FindWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowW".}
proc FindWindowEx*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExW".}
proc GetClassName*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameW".}
proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExW".}
proc LoadCursor*(hInstance: HINSTANCE, lpCursorName: LPCWSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorW".}
proc LoadImage*(hInst: HINSTANCE, name: LPCWSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageW".}
proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageW".}
proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoW".}
when winimAnsi:
type
WNDCLASSEX* = WNDCLASSEXA
WNDCLASS* = WNDCLASSA
CREATESTRUCT* = CREATESTRUCTA
MENUITEMINFO* = MENUITEMINFOA
NONCLIENTMETRICS* = NONCLIENTMETRICSA
proc RegisterWindowMessage*(lpString: LPCSTR): UINT {.winapi, stdcall, dynlib: "user32", importc: "RegisterWindowMessageA".}
proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMessageA".}
proc DispatchMessage*(lpMsg: ptr MSG): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DispatchMessageA".}
proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PeekMessageA".}
proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "SendMessageA".}
proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "PostMessageA".}
proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "DefWindowProcA".}
proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "user32", importc: "CallWindowProcA".}
proc UnregisterClass*(lpClassName: LPCSTR, hInstance: HINSTANCE): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "UnregisterClassA".}
proc GetClassInfo*(hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetClassInfoA".}
proc RegisterClassEx*(P1: ptr WNDCLASSEXA): ATOM {.winapi, stdcall, dynlib: "user32", importc: "RegisterClassExA".}
proc CreateAcceleratorTable*(paccel: LPACCEL, cAccel: int32): HACCEL {.winapi, stdcall, dynlib: "user32", importc: "CreateAcceleratorTableA".}
proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32 {.winapi, stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
proc InsertMenuItem*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmi: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "InsertMenuItemA".}
proc GetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPosition: WINBOOL, lpmii: LPMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}
proc SetMenuItemInfo*(hmenu: HMENU, item: UINT, fByPositon: WINBOOL, lpmii: LPCMENUITEMINFOA): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}
proc DrawText*(hdc: HDC, lpchText: LPCSTR, cchText: int32, lprc: LPRECT, format: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "DrawTextA".}
proc SetWindowText*(hWnd: HWND, lpString: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SetWindowTextA".}
proc GetWindowText*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextA".}
proc GetWindowTextLength*(hWnd: HWND): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetWindowTextLengthA".}
proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32 {.winapi, stdcall, dynlib: "user32", importc: "MessageBoxA".}
proc FindWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowA".}
proc FindWindowEx*(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR): HWND {.winapi, stdcall, dynlib: "user32", importc: "FindWindowExA".}
proc GetClassName*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32 {.winapi, stdcall, dynlib: "user32", importc: "GetClassNameA".}
proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD): HHOOK {.winapi, stdcall, dynlib: "user32", importc: "SetWindowsHookExA".}
proc LoadCursor*(hInstance: HINSTANCE, lpCursorName: LPCSTR): HCURSOR {.winapi, stdcall, dynlib: "user32", importc: "LoadCursorA".}
proc LoadImage*(hInst: HINSTANCE, name: LPCSTR, `type`: UINT, cx: int32, cy: int32, fuLoad: UINT): HANDLE {.winapi, stdcall, dynlib: "user32", importc: "LoadImageA".}
proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "IsDialogMessageA".}
proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT): WINBOOL {.winapi, stdcall, dynlib: "user32", importc: "SystemParametersInfoA".}
when winimUnicode and winimCpu64:
proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrW".}
proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}
when winimAnsi and winimCpu64:
proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongPtrA".}
proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}
when winimUnicode and winimCpu32:
proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongW".}
proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongW".}
when winimAnsi and winimCpu32:
proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG {.winapi, stdcall, dynlib: "user32", importc: "GetWindowLongA".}
proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG {.winapi, stdcall, dynlib: "user32", importc: "SetWindowLongA".}
const
CP_ACP* = 0
type
REGSAM* = ACCESS_MASK
const
HKEY_CURRENT_USER* = HKEY 0x80000001'i32
proc RegCloseKey*(hKey: HKEY): LONG {.winapi, stdcall, dynlib: "advapi32", importc.}
when winimUnicode:
proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
when winimAnsi:
proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD, dwType: DWORD, lpData: ptr BYTE, cbData: DWORD): LONG {.winapi, stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
type
SOCKET* = int
const
FD_SETSIZE* = 64
type
fd_set* {.pure.} = object
fd_count*: int32
fd_array*: array[FD_SETSIZE, SOCKET]
sockaddr* {.pure.} = object
sa_family*: uint16
sa_data*: array[14, char]
timeval* {.pure.} = object
tv_sec*: int32
tv_usec*: int32
PTIMEVAL* = ptr timeval
proc accept*(s: SOCKET, `addr`: ptr sockaddr, addrlen: ptr int32): SOCKET {.winapi, stdcall, dynlib: "ws2_32", importc.}
proc connect*(s: SOCKET, name: ptr sockaddr, namelen: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
proc select*(nfds: int32, readfds: ptr fd_set, writefds: ptr fd_set, exceptfds: ptr fd_set, timeout: PTIMEVAL): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
proc send*(s: SOCKET, buf: ptr char, len: int32, flags: int32): int32 {.winapi, stdcall, dynlib: "ws2_32", importc.}
const
network* = 3
batch* = 4
type
Percentage* = UINT8
VARTYPE* = uint16
TYPEKIND* = int32
CALLCONV* = int32
FUNCKIND* = int32
INVOKEKIND* = int32
VARKIND* = int32
DESCKIND* = int32
SYSKIND* = int32
READYSTATE* = int32
OLECMDF* = int32
OLECMDEXECOPT* = int32
OLECMDID* = int32
GETPROPERTYSTOREFLAGS* = int32
CLIPFORMAT* = WORD
DISPID* = LONG
HREFTYPE* = DWORD
SCODE* = LONG
HMETAFILEPICT* = HANDLE
DATE* = float64
CY_STRUCT1* {.pure.} = object
Lo*: int32
Hi*: int32
CY* {.pure, union.} = object
struct1*: CY_STRUCT1
int64*: LONGLONG
DECIMAL_UNION1_STRUCT1* {.pure.} = object
scale*: BYTE
sign*: BYTE
DECIMAL_UNION1* {.pure, union.} = object
struct1*: DECIMAL_UNION1_STRUCT1
signscale*: USHORT
DECIMAL_UNION2_STRUCT1* {.pure.} = object
Lo32*: ULONG
Mid32*: ULONG
DECIMAL_UNION2* {.pure, union.} = object
struct1*: DECIMAL_UNION2_STRUCT1
Lo64*: ULONGLONG
DECIMAL* {.pure.} = object
wReserved*: USHORT
union1*: DECIMAL_UNION1
Hi32*: ULONG
union2*: DECIMAL_UNION2
VARIANT_BOOL* = int16
IUnknown* {.pure.} = object
lpVtbl*: ptr IUnknownVtbl
IUnknownVtbl* {.pure, inheritable.} = object
QueryInterface*: proc(self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.stdcall.}
AddRef*: proc(self: ptr IUnknown): ULONG {.stdcall.}
Release*: proc(self: ptr IUnknown): ULONG {.stdcall.}
LPUNKNOWN* = ptr IUnknown
ISequentialStream* {.pure.} = object
lpVtbl*: ptr ISequentialStreamVtbl
ISequentialStreamVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Read*: proc(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.stdcall.}
Write*: proc(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.stdcall.}
LPOLESTR* = ptr OLECHAR
STATSTG* {.pure.} = object
pwcsName*: LPOLESTR
`type`*: DWORD
cbSize*: ULARGE_INTEGER
mtime*: FILETIME
ctime*: FILETIME
atime*: FILETIME
grfMode*: DWORD
grfLocksSupported*: DWORD
clsid*: CLSID
grfStateBits*: DWORD
reserved*: DWORD
IStream* {.pure.} = object
lpVtbl*: ptr IStreamVtbl
IStreamVtbl* {.pure, inheritable.} = object of ISequentialStreamVtbl
Seek*: proc(self: ptr IStream, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
SetSize*: proc(self: ptr IStream, libNewSize: ULARGE_INTEGER): HRESULT {.stdcall.}
CopyTo*: proc(self: ptr IStream, pstm: ptr IStream, cb: ULARGE_INTEGER, pcbRead: ptr ULARGE_INTEGER, pcbWritten: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
Commit*: proc(self: ptr IStream, grfCommitFlags: DWORD): HRESULT {.stdcall.}
Revert*: proc(self: ptr IStream): HRESULT {.stdcall.}
LockRegion*: proc(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
UnlockRegion*: proc(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.stdcall.}
Stat*: proc(self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.stdcall.}
Clone*: proc(self: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
IEnumUnknown* {.pure.} = object
lpVtbl*: ptr IEnumUnknownVtbl
IEnumUnknownVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumUnknown, celt: ULONG, rgelt: ptr ptr IUnknown, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumUnknown, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumUnknown): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
IEnumString* {.pure.} = object
lpVtbl*: ptr IEnumStringVtbl
IEnumStringVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumString, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumString): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumString, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
BIND_OPTS* {.pure.} = object
cbStruct*: DWORD
grfFlags*: DWORD
grfMode*: DWORD
dwTickCountDeadline*: DWORD
IPersist* {.pure.} = object
lpVtbl*: ptr IPersistVtbl
IPersistVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetClassID*: proc(self: ptr IPersist, pClassID: ptr CLSID): HRESULT {.stdcall.}
IPersistStream* {.pure.} = object
lpVtbl*: ptr IPersistStreamVtbl
IPersistStreamVtbl* {.pure, inheritable.} = object of IPersistVtbl
IsDirty*: proc(self: ptr IPersistStream): HRESULT {.stdcall.}
Load*: proc(self: ptr IPersistStream, pStm: ptr IStream): HRESULT {.stdcall.}
Save*: proc(self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL): HRESULT {.stdcall.}
GetSizeMax*: proc(self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER): HRESULT {.stdcall.}
IEnumMoniker* {.pure.} = object
lpVtbl*: ptr IEnumMonikerVtbl
IEnumMonikerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumMoniker, celt: ULONG, rgelt: ptr ptr IMoniker, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumMoniker, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumMoniker): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
IMoniker* {.pure.} = object
lpVtbl*: ptr IMonikerVtbl
IMonikerVtbl* {.pure, inheritable.} = object of IPersistStreamVtbl
BindToObject*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riidResult: REFIID, ppvResult: ptr pointer): HRESULT {.stdcall.}
BindToStorage*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riid: REFIID, ppvObj: ptr pointer): HRESULT {.stdcall.}
Reduce*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, dwReduceHowFar: DWORD, ppmkToLeft: ptr ptr IMoniker, ppmkReduced: ptr ptr IMoniker): HRESULT {.stdcall.}
ComposeWith*: proc(self: ptr IMoniker, pmkRight: ptr IMoniker, fOnlyIfNotGeneric: WINBOOL, ppmkComposite: ptr ptr IMoniker): HRESULT {.stdcall.}
Enum*: proc(self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
IsEqual*: proc(self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker): HRESULT {.stdcall.}
Hash*: proc(self: ptr IMoniker, pdwHash: ptr DWORD): HRESULT {.stdcall.}
IsRunning*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pmkNewlyRunning: ptr IMoniker): HRESULT {.stdcall.}
GetTimeOfLastChange*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pFileTime: ptr FILETIME): HRESULT {.stdcall.}
Inverse*: proc(self: ptr IMoniker, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
CommonPrefixWith*: proc(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker): HRESULT {.stdcall.}
RelativePathTo*: proc(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker): HRESULT {.stdcall.}
GetDisplayName*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, ppszDisplayName: ptr LPOLESTR): HRESULT {.stdcall.}
ParseDisplayName*: proc(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.stdcall.}
IsSystemMoniker*: proc(self: ptr IMoniker, pdwMksys: ptr DWORD): HRESULT {.stdcall.}
IRunningObjectTable* {.pure.} = object
lpVtbl*: ptr IRunningObjectTableVtbl
IRunningObjectTableVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Register*: proc(self: ptr IRunningObjectTable, grfFlags: DWORD, punkObject: ptr IUnknown, pmkObjectName: ptr IMoniker, pdwRegister: ptr DWORD): HRESULT {.stdcall.}
Revoke*: proc(self: ptr IRunningObjectTable, dwRegister: DWORD): HRESULT {.stdcall.}
IsRunning*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker): HRESULT {.stdcall.}
GetObject*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, ppunkObject: ptr ptr IUnknown): HRESULT {.stdcall.}
NoteChangeTime*: proc(self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME): HRESULT {.stdcall.}
GetTimeOfLastChange*: proc(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, pfiletime: ptr FILETIME): HRESULT {.stdcall.}
EnumRunning*: proc(self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.stdcall.}
IBindCtx* {.pure.} = object
lpVtbl*: ptr IBindCtxVtbl
IBindCtxVtbl* {.pure, inheritable.} = object of IUnknownVtbl
RegisterObjectBound*: proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
RevokeObjectBound*: proc(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.stdcall.}
ReleaseBoundObjects*: proc(self: ptr IBindCtx): HRESULT {.stdcall.}
SetBindOptions*: proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
GetBindOptions*: proc(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.stdcall.}
GetRunningObjectTable*: proc(self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable): HRESULT {.stdcall.}
RegisterObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown): HRESULT {.stdcall.}
GetObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown): HRESULT {.stdcall.}
EnumObjectParam*: proc(self: ptr IBindCtx, ppenum: ptr ptr IEnumString): HRESULT {.stdcall.}
RevokeObjectParam*: proc(self: ptr IBindCtx, pszKey: LPOLESTR): HRESULT {.stdcall.}
IEnumSTATSTG* {.pure.} = object
lpVtbl*: ptr IEnumSTATSTGVtbl
IEnumSTATSTGVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumSTATSTG, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumSTATSTG): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.stdcall.}
SNB* = ptr LPOLESTR
IStorage* {.pure.} = object
lpVtbl*: ptr IStorageVtbl
IStorageVtbl* {.pure, inheritable.} = object of IUnknownVtbl
CreateStream*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
OpenStream*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, reserved1: pointer, grfMode: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.stdcall.}
CreateStorage*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstg: ptr ptr IStorage): HRESULT {.stdcall.}
OpenStorage*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstg: ptr ptr IStorage): HRESULT {.stdcall.}
CopyTo*: proc(self: ptr IStorage, ciidExclude: DWORD, rgiidExclude: ptr IID, snbExclude: SNB, pstgDest: ptr IStorage): HRESULT {.stdcall.}
MoveElementTo*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgDest: ptr IStorage, pwcsNewName: ptr OLECHAR, grfFlags: DWORD): HRESULT {.stdcall.}
Commit*: proc(self: ptr IStorage, grfCommitFlags: DWORD): HRESULT {.stdcall.}
Revert*: proc(self: ptr IStorage): HRESULT {.stdcall.}
EnumElements*: proc(self: ptr IStorage, reserved1: DWORD, reserved2: pointer, reserved3: DWORD, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.stdcall.}
DestroyElement*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR): HRESULT {.stdcall.}
RenameElement*: proc(self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR): HRESULT {.stdcall.}
SetElementTimes*: proc(self: ptr IStorage, pwcsName: ptr OLECHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.stdcall.}
SetClass*: proc(self: ptr IStorage, clsid: REFCLSID): HRESULT {.stdcall.}
SetStateBits*: proc(self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD): HRESULT {.stdcall.}
Stat*: proc(self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.stdcall.}
LPCOLESTR* = ptr OLECHAR
DVTARGETDEVICE* {.pure.} = object
tdSize*: DWORD
tdDriverNameOffset*: WORD
tdDeviceNameOffset*: WORD
tdPortNameOffset*: WORD
tdExtDevmodeOffset*: WORD
tdData*: array[1, BYTE]
FORMATETC* {.pure.} = object
cfFormat*: CLIPFORMAT
ptd*: ptr DVTARGETDEVICE
dwAspect*: DWORD
lindex*: LONG
tymed*: DWORD
IEnumFORMATETC* {.pure.} = object
lpVtbl*: ptr IEnumFORMATETCVtbl
IEnumFORMATETCVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumFORMATETC, celt: ULONG, rgelt: ptr FORMATETC, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumFORMATETC, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumFORMATETC): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC): HRESULT {.stdcall.}
uSTGMEDIUM_u* {.pure, union.} = object
hBitmap*: HBITMAP
hMetaFilePict*: HMETAFILEPICT
hEnhMetaFile*: HENHMETAFILE
hGlobal*: HGLOBAL
lpszFileName*: LPOLESTR
pstm*: ptr IStream
pstg*: ptr IStorage
uSTGMEDIUM* {.pure.} = object
tymed*: DWORD
u*: uSTGMEDIUM_u
pUnkForRelease*: ptr IUnknown
STGMEDIUM* = uSTGMEDIUM
IAdviseSink* {.pure.} = object
lpVtbl*: ptr IAdviseSinkVtbl
IAdviseSinkVtbl* {.pure, inheritable.} = object of IUnknownVtbl
OnDataChange*: proc(self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.stdcall.}
OnViewChange*: proc(self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG): void {.stdcall.}
OnRename*: proc(self: ptr IAdviseSink, pmk: ptr IMoniker): void {.stdcall.}
OnSave*: proc(self: ptr IAdviseSink): void {.stdcall.}
OnClose*: proc(self: ptr IAdviseSink): void {.stdcall.}
STATDATA* {.pure.} = object
formatetc*: FORMATETC
advf*: DWORD
pAdvSink*: ptr IAdviseSink
dwConnection*: DWORD
IEnumSTATDATA* {.pure.} = object
lpVtbl*: ptr IEnumSTATDATAVtbl
IEnumSTATDATAVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumSTATDATA, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumSTATDATA): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
LPSTGMEDIUM* = ptr STGMEDIUM
IDataObject* {.pure.} = object
lpVtbl*: ptr IDataObjectVtbl
IDataObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetData*: proc(self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.stdcall.}
GetDataHere*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.stdcall.}
QueryGetData*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC): HRESULT {.stdcall.}
GetCanonicalFormatEtc*: proc(self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC): HRESULT {.stdcall.}
SetData*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.stdcall.}
EnumFormatEtc*: proc(self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.stdcall.}
DAdvise*: proc(self: ptr IDataObject, pformatetc: ptr FORMATETC, advf: DWORD, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
DUnadvise*: proc(self: ptr IDataObject, dwConnection: DWORD): HRESULT {.stdcall.}
EnumDAdvise*: proc(self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
LPDATAOBJECT* = ptr IDataObject
SAFEARRAYBOUND* {.pure.} = object
cElements*: ULONG
lLbound*: LONG
MEMBERID* = DISPID
ARRAYDESC* {.pure.} = object
tdescElem*: TYPEDESC
cDims*: USHORT
rgbounds*: array[1, SAFEARRAYBOUND]
TYPEDESC_UNION1* {.pure, union.} = object
lptdesc*: ptr TYPEDESC
lpadesc*: ptr ARRAYDESC
hreftype*: HREFTYPE
TYPEDESC* {.pure.} = object
union1*: TYPEDESC_UNION1
vt*: VARTYPE
IDLDESC* {.pure.} = object
dwReserved*: ULONG_PTR
wIDLFlags*: USHORT
TYPEATTR* {.pure.} = object
guid*: GUID
lcid*: LCID
dwReserved*: DWORD
memidConstructor*: MEMBERID
memidDestructor*: MEMBERID
lpstrSchema*: LPOLESTR
cbSizeInstance*: ULONG
typekind*: TYPEKIND
cFuncs*: WORD
cVars*: WORD
cImplTypes*: WORD
cbSizeVft*: WORD
cbAlignment*: WORD
wTypeFlags*: WORD
wMajorVerNum*: WORD
wMinorVerNum*: WORD
tdescAlias*: TYPEDESC
idldescType*: IDLDESC
SAFEARRAY* {.pure.} = object
cDims*: USHORT
fFeatures*: USHORT
cbElements*: ULONG
cLocks*: ULONG
pvData*: PVOID
rgsabound*: array[1, SAFEARRAYBOUND]
IRecordInfo* {.pure.} = object
lpVtbl*: ptr IRecordInfoVtbl
IRecordInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
RecordInit*: proc(self: ptr IRecordInfo, pvNew: PVOID): HRESULT {.stdcall.}
RecordClear*: proc(self: ptr IRecordInfo, pvExisting: PVOID): HRESULT {.stdcall.}
RecordCopy*: proc(self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID): HRESULT {.stdcall.}
GetGuid*: proc(self: ptr IRecordInfo, pguid: ptr GUID): HRESULT {.stdcall.}
GetName*: proc(self: ptr IRecordInfo, pbstrName: ptr BSTR): HRESULT {.stdcall.}
GetSize*: proc(self: ptr IRecordInfo, pcbSize: ptr ULONG): HRESULT {.stdcall.}
GetTypeInfo*: proc(self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
GetField*: proc(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
GetFieldNoCopy*: proc(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT, ppvDataCArray: ptr PVOID): HRESULT {.stdcall.}
PutField*: proc(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
PutFieldNoCopy*: proc(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.stdcall.}
GetFieldNames*: proc(self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR): HRESULT {.stdcall.}
IsMatchingType*: proc(self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo): WINBOOL {.stdcall.}
RecordCreate*: proc(self: ptr IRecordInfo): PVOID {.stdcall.}
RecordCreateCopy*: proc(self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID): HRESULT {.stdcall.}
RecordDestroy*: proc(self: ptr IRecordInfo, pvRecord: PVOID): HRESULT {.stdcall.}
VARIANT_UNION1_STRUCT1_UNION1_STRUCT1* {.pure.} = object
pvRecord*: PVOID
pRecInfo*: ptr IRecordInfo
VARIANT_UNION1_STRUCT1_UNION1* {.pure, union.} = object
llVal*: LONGLONG
lVal*: LONG
bVal*: BYTE
iVal*: SHORT
fltVal*: FLOAT
dblVal*: DOUBLE
boolVal*: VARIANT_BOOL
scode*: SCODE
cyVal*: CY
date*: DATE
bstrVal*: BSTR
punkVal*: ptr IUnknown
pdispVal*: ptr IDispatch
parray*: ptr SAFEARRAY
pbVal*: ptr BYTE
piVal*: ptr SHORT
plVal*: ptr LONG
pllVal*: ptr LONGLONG
pfltVal*: ptr FLOAT
pdblVal*: ptr DOUBLE
pboolVal*: ptr VARIANT_BOOL
pscode*: ptr SCODE
pcyVal*: ptr CY
pdate*: ptr DATE
pbstrVal*: ptr BSTR
ppunkVal*: ptr ptr IUnknown
ppdispVal*: ptr ptr IDispatch
pparray*: ptr ptr SAFEARRAY
pvarVal*: ptr VARIANT
byref*: PVOID
cVal*: CHAR
uiVal*: USHORT
ulVal*: ULONG
ullVal*: ULONGLONG
intVal*: INT
uintVal*: UINT
pdecVal*: ptr DECIMAL
pcVal*: ptr CHAR
puiVal*: ptr USHORT
pulVal*: ptr ULONG
pullVal*: ptr ULONGLONG
pintVal*: ptr INT
puintVal*: ptr UINT
struct1*: VARIANT_UNION1_STRUCT1_UNION1_STRUCT1
VARIANT_UNION1_STRUCT1* {.pure.} = object
vt*: VARTYPE
wReserved1*: WORD
wReserved2*: WORD
wReserved3*: WORD
union1*: VARIANT_UNION1_STRUCT1_UNION1
VARIANT_UNION1* {.pure, union.} = object
struct1*: VARIANT_UNION1_STRUCT1
decVal*: DECIMAL
VARIANT* {.pure.} = object
union1*: VARIANT_UNION1
VARIANTARG* = VARIANT
PARAMDESCEX* {.pure.} = object
cBytes*: ULONG
varDefaultValue*: VARIANTARG
LPPARAMDESCEX* = ptr PARAMDESCEX
PARAMDESC* {.pure.} = object
pparamdescex*: LPPARAMDESCEX
wParamFlags*: USHORT
ELEMDESC_UNION1* {.pure, union.} = object
idldesc*: IDLDESC
paramdesc*: PARAMDESC
ELEMDESC* {.pure.} = object
tdesc*: TYPEDESC
union1*: ELEMDESC_UNION1
FUNCDESC* {.pure.} = object
memid*: MEMBERID
lprgscode*: ptr SCODE
lprgelemdescParam*: ptr ELEMDESC
funckind*: FUNCKIND
invkind*: INVOKEKIND
callconv*: CALLCONV
cParams*: SHORT
cParamsOpt*: SHORT
oVft*: SHORT
cScodes*: SHORT
elemdescFunc*: ELEMDESC
wFuncFlags*: WORD
VARDESC_UNION1* {.pure, union.} = object
oInst*: ULONG
lpvarValue*: ptr VARIANT
VARDESC* {.pure.} = object
memid*: MEMBERID
lpstrSchema*: LPOLESTR
union1*: VARDESC_UNION1
elemdescVar*: ELEMDESC
wVarFlags*: WORD
varkind*: VARKIND
BINDPTR* {.pure, union.} = object
lpfuncdesc*: ptr FUNCDESC
lpvardesc*: ptr VARDESC
lptcomp*: ptr ITypeComp
ITypeComp* {.pure.} = object
lpVtbl*: ptr ITypeCompVtbl
ITypeCompVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Bind*: proc(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, wFlags: WORD, ppTInfo: ptr ptr ITypeInfo, pDescKind: ptr DESCKIND, pBindPtr: ptr BINDPTR): HRESULT {.stdcall.}
BindType*: proc(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
DISPPARAMS* {.pure.} = object
rgvarg*: ptr VARIANTARG
rgdispidNamedArgs*: ptr DISPID
cArgs*: UINT
cNamedArgs*: UINT
EXCEPINFO* {.pure.} = object
wCode*: WORD
wReserved*: WORD
bstrSource*: BSTR
bstrDescription*: BSTR
bstrHelpFile*: BSTR
dwHelpContext*: DWORD
pvReserved*: PVOID
pfnDeferredFillIn*: proc(P1: ptr EXCEPINFO): HRESULT {.stdcall.}
scode*: SCODE
TLIBATTR* {.pure.} = object
guid*: GUID
lcid*: LCID
syskind*: SYSKIND
wMajorVerNum*: WORD
wMinorVerNum*: WORD
wLibFlags*: WORD
ITypeLib* {.pure.} = object
lpVtbl*: ptr ITypeLibVtbl
ITypeLibVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetTypeInfoCount*: proc(self: ptr ITypeLib): UINT {.stdcall.}
GetTypeInfo*: proc(self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
GetTypeInfoType*: proc(self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND): HRESULT {.stdcall.}
GetTypeInfoOfGuid*: proc(self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
GetLibAttr*: proc(self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR): HRESULT {.stdcall.}
GetTypeComp*: proc(self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
GetDocumentation*: proc(self: ptr ITypeLib, index: INT, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
IsName*: proc(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL): HRESULT {.stdcall.}
FindName*: proc(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, rgMemId: ptr MEMBERID, pcFound: ptr USHORT): HRESULT {.stdcall.}
ReleaseTLibAttr*: proc(self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR): void {.stdcall.}
ITypeInfo* {.pure.} = object
lpVtbl*: ptr ITypeInfoVtbl
ITypeInfoVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetTypeAttr*: proc(self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR): HRESULT {.stdcall.}
GetTypeComp*: proc(self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.stdcall.}
GetFuncDesc*: proc(self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC): HRESULT {.stdcall.}
GetVarDesc*: proc(self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC): HRESULT {.stdcall.}
GetNames*: proc(self: ptr ITypeInfo, memid: MEMBERID, rgBstrNames: ptr BSTR, cMaxNames: UINT, pcNames: ptr UINT): HRESULT {.stdcall.}
GetRefTypeOfImplType*: proc(self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE): HRESULT {.stdcall.}
GetImplTypeFlags*: proc(self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT): HRESULT {.stdcall.}
GetIDsOfNames*: proc(self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID): HRESULT {.stdcall.}
Invoke*: proc(self: ptr ITypeInfo, pvInstance: PVOID, memid: MEMBERID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.stdcall.}
GetDocumentation*: proc(self: ptr ITypeInfo, memid: MEMBERID, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.stdcall.}
GetDllEntry*: proc(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, pBstrDllName: ptr BSTR, pBstrName: ptr BSTR, pwOrdinal: ptr WORD): HRESULT {.stdcall.}
GetRefTypeInfo*: proc(self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
AddressOfMember*: proc(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID): HRESULT {.stdcall.}
CreateInstance*: proc(self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID): HRESULT {.stdcall.}
GetMops*: proc(self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR): HRESULT {.stdcall.}
GetContainingTypeLib*: proc(self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT): HRESULT {.stdcall.}
ReleaseTypeAttr*: proc(self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR): void {.stdcall.}
ReleaseFuncDesc*: proc(self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC): void {.stdcall.}
ReleaseVarDesc*: proc(self: ptr ITypeInfo, pVarDesc: ptr VARDESC): void {.stdcall.}
IDispatch* {.pure.} = object
lpVtbl*: ptr IDispatchVtbl
IDispatchVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetTypeInfoCount*: proc(self: ptr IDispatch, pctinfo: ptr UINT): HRESULT {.stdcall.}
GetTypeInfo*: proc(self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo): HRESULT {.stdcall.}
GetIDsOfNames*: proc(self: ptr IDispatch, riid: REFIID, rgszNames: ptr LPOLESTR, cNames: UINT, lcid: LCID, rgDispId: ptr DISPID): HRESULT {.stdcall.}
Invoke*: proc(self: ptr IDispatch, dispIdMember: DISPID, riid: REFIID, lcid: LCID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.stdcall.}
IParseDisplayName* {.pure.} = object
lpVtbl*: ptr IParseDisplayNameVtbl
IParseDisplayNameVtbl* {.pure, inheritable.} = object of IUnknownVtbl
ParseDisplayName*: proc(self: ptr IParseDisplayName, pbc: ptr IBindCtx, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.stdcall.}
IOleContainer* {.pure.} = object
lpVtbl*: ptr IOleContainerVtbl
IOleContainerVtbl* {.pure, inheritable.} = object of IParseDisplayNameVtbl
EnumObjects*: proc(self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown): HRESULT {.stdcall.}
LockContainer*: proc(self: ptr IOleContainer, fLock: WINBOOL): HRESULT {.stdcall.}
IOleClientSite* {.pure.} = object
lpVtbl*: ptr IOleClientSiteVtbl
IOleClientSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
SaveObject*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
GetMoniker*: proc(self: ptr IOleClientSite, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
GetContainer*: proc(self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer): HRESULT {.stdcall.}
ShowObject*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
OnShowWindow*: proc(self: ptr IOleClientSite, fShow: WINBOOL): HRESULT {.stdcall.}
RequestNewObjectLayout*: proc(self: ptr IOleClientSite): HRESULT {.stdcall.}
OLEVERB* {.pure.} = object
lVerb*: LONG
lpszVerbName*: LPOLESTR
fuFlags*: DWORD
grfAttribs*: DWORD
LPOLEVERB* = ptr OLEVERB
IEnumOLEVERB* {.pure.} = object
lpVtbl*: ptr IEnumOLEVERBVtbl
IEnumOLEVERBVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumOLEVERB, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumOLEVERB): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB): HRESULT {.stdcall.}
IOleObject* {.pure.} = object
lpVtbl*: ptr IOleObjectVtbl
IOleObjectVtbl* {.pure, inheritable.} = object of IUnknownVtbl
SetClientSite*: proc(self: ptr IOleObject, pClientSite: ptr IOleClientSite): HRESULT {.stdcall.}
GetClientSite*: proc(self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite): HRESULT {.stdcall.}
SetHostNames*: proc(self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR): HRESULT {.stdcall.}
Close*: proc(self: ptr IOleObject, dwSaveOption: DWORD): HRESULT {.stdcall.}
SetMoniker*: proc(self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker): HRESULT {.stdcall.}
GetMoniker*: proc(self: ptr IOleObject, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.stdcall.}
InitFromData*: proc(self: ptr IOleObject, pDataObject: ptr IDataObject, fCreation: WINBOOL, dwReserved: DWORD): HRESULT {.stdcall.}
GetClipboardData*: proc(self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject): HRESULT {.stdcall.}
DoVerb*: proc(self: ptr IOleObject, iVerb: LONG, lpmsg: LPMSG, pActiveSite: ptr IOleClientSite, lindex: LONG, hwndParent: HWND, lprcPosRect: LPCRECT): HRESULT {.stdcall.}
EnumVerbs*: proc(self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB): HRESULT {.stdcall.}
Update*: proc(self: ptr IOleObject): HRESULT {.stdcall.}
IsUpToDate*: proc(self: ptr IOleObject): HRESULT {.stdcall.}
GetUserClassID*: proc(self: ptr IOleObject, pClsid: ptr CLSID): HRESULT {.stdcall.}
GetUserType*: proc(self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR): HRESULT {.stdcall.}
SetExtent*: proc(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.stdcall.}
GetExtent*: proc(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.stdcall.}
Advise*: proc(self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.stdcall.}
Unadvise*: proc(self: ptr IOleObject, dwConnection: DWORD): HRESULT {.stdcall.}
EnumAdvise*: proc(self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.stdcall.}
GetMiscStatus*: proc(self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD): HRESULT {.stdcall.}
SetColorScheme*: proc(self: ptr IOleObject, pLogpal: ptr LOGPALETTE): HRESULT {.stdcall.}
IOleWindow* {.pure.} = object
lpVtbl*: ptr IOleWindowVtbl
IOleWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetWindow*: proc(self: ptr IOleWindow, phwnd: ptr HWND): HRESULT {.stdcall.}
ContextSensitiveHelp*: proc(self: ptr IOleWindow, fEnterMode: WINBOOL): HRESULT {.stdcall.}
LPCBORDERWIDTHS* = LPCRECT
IOleInPlaceActiveObject* {.pure.} = object
lpVtbl*: ptr IOleInPlaceActiveObjectVtbl
IOleInPlaceActiveObjectVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
TranslateAccelerator*: proc(self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG): HRESULT {.stdcall.}
OnFrameWindowActivate*: proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
OnDocWindowActivate*: proc(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.stdcall.}
ResizeBorder*: proc(self: ptr IOleInPlaceActiveObject, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fFrameWindow: WINBOOL): HRESULT {.stdcall.}
EnableModeless*: proc(self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL): HRESULT {.stdcall.}
IOleInPlaceUIWindow* {.pure.} = object
lpVtbl*: ptr IOleInPlaceUIWindowVtbl
IOleInPlaceUIWindowVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
GetBorder*: proc(self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT): HRESULT {.stdcall.}
RequestBorderSpace*: proc(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.stdcall.}
SetBorderSpace*: proc(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.stdcall.}
SetActiveObject*: proc(self: ptr IOleInPlaceUIWindow, pActiveObject: ptr IOleInPlaceActiveObject, pszObjName: LPCOLESTR): HRESULT {.stdcall.}
OLEMENUGROUPWIDTHS* {.pure.} = object
width*: array[6, LONG]
LPOLEMENUGROUPWIDTHS* = ptr OLEMENUGROUPWIDTHS
HOLEMENU* = HGLOBAL
IOleInPlaceFrame* {.pure.} = object
lpVtbl*: ptr IOleInPlaceFrameVtbl
IOleInPlaceFrameVtbl* {.pure, inheritable.} = object of IOleInPlaceUIWindowVtbl
InsertMenus*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.stdcall.}
SetMenu*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, holemenu: HOLEMENU, hwndActiveObject: HWND): HRESULT {.stdcall.}
RemoveMenus*: proc(self: ptr IOleInPlaceFrame, hmenuShared: HMENU): HRESULT {.stdcall.}
SetStatusText*: proc(self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR): HRESULT {.stdcall.}
EnableModeless*: proc(self: ptr IOleInPlaceFrame, fEnable: WINBOOL): HRESULT {.stdcall.}
TranslateAccelerator*: proc(self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD): HRESULT {.stdcall.}
IOleInPlaceObject* {.pure.} = object
lpVtbl*: ptr IOleInPlaceObjectVtbl
IOleInPlaceObjectVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
InPlaceDeactivate*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
UIDeactivate*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
SetObjectRects*: proc(self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT): HRESULT {.stdcall.}
ReactivateAndUndo*: proc(self: ptr IOleInPlaceObject): HRESULT {.stdcall.}
OLEINPLACEFRAMEINFO* {.pure.} = object
cb*: UINT
fMDIApp*: WINBOOL
hwndFrame*: HWND
haccel*: HACCEL
cAccelEntries*: UINT
LPOLEINPLACEFRAMEINFO* = ptr OLEINPLACEFRAMEINFO
IOleInPlaceSite* {.pure.} = object
lpVtbl*: ptr IOleInPlaceSiteVtbl
IOleInPlaceSiteVtbl* {.pure, inheritable.} = object of IOleWindowVtbl
CanInPlaceActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
OnInPlaceActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
OnUIActivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
GetWindowContext*: proc(self: ptr IOleInPlaceSite, ppFrame: ptr ptr IOleInPlaceFrame, ppDoc: ptr ptr IOleInPlaceUIWindow, lprcPosRect: LPRECT, lprcClipRect: LPRECT, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.stdcall.}
Scroll*: proc(self: ptr IOleInPlaceSite, scrollExtant: SIZE): HRESULT {.stdcall.}
OnUIDeactivate*: proc(self: ptr IOleInPlaceSite, fUndoable: WINBOOL): HRESULT {.stdcall.}
OnInPlaceDeactivate*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
DiscardUndoState*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
DeactivateAndUndo*: proc(self: ptr IOleInPlaceSite): HRESULT {.stdcall.}
OnPosRectChange*: proc(self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT): HRESULT {.stdcall.}
IDropSource* {.pure.} = object
lpVtbl*: ptr IDropSourceVtbl
IDropSourceVtbl* {.pure, inheritable.} = object of IUnknownVtbl
QueryContinueDrag*: proc(self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD): HRESULT {.stdcall.}
GiveFeedback*: proc(self: ptr IDropSource, dwEffect: DWORD): HRESULT {.stdcall.}
LPDROPSOURCE* = ptr IDropSource
IDropTarget* {.pure.} = object
lpVtbl*: ptr IDropTargetVtbl
IDropTargetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
DragEnter*: proc(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
DragOver*: proc(self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
DragLeave*: proc(self: ptr IDropTarget): HRESULT {.stdcall.}
Drop*: proc(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.stdcall.}
LPDROPTARGET* = ptr IDropTarget
CONNECTDATA* {.pure.} = object
pUnk*: ptr IUnknown
dwCookie*: DWORD
LPCONNECTDATA* = ptr CONNECTDATA
IEnumConnections* {.pure.} = object
lpVtbl*: ptr IEnumConnectionsVtbl
IEnumConnectionsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumConnections, cConnections: ULONG, rgcd: LPCONNECTDATA, pcFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumConnections, cConnections: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumConnections): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections): HRESULT {.stdcall.}
LPCONNECTIONPOINT* = ptr IConnectionPoint
IEnumConnectionPoints* {.pure.} = object
lpVtbl*: ptr IEnumConnectionPointsVtbl
IEnumConnectionPointsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumConnectionPoints, cConnections: ULONG, ppCP: ptr LPCONNECTIONPOINT, pcFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumConnectionPoints, cConnections: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumConnectionPoints): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.stdcall.}
IConnectionPointContainer* {.pure.} = object
lpVtbl*: ptr IConnectionPointContainerVtbl
IConnectionPointContainerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
EnumConnectionPoints*: proc(self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.stdcall.}
FindConnectionPoint*: proc(self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint): HRESULT {.stdcall.}
IConnectionPoint* {.pure.} = object
lpVtbl*: ptr IConnectionPointVtbl
IConnectionPointVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetConnectionInterface*: proc(self: ptr IConnectionPoint, pIID: ptr IID): HRESULT {.stdcall.}
GetConnectionPointContainer*: proc(self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer): HRESULT {.stdcall.}
Advise*: proc(self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
Unadvise*: proc(self: ptr IConnectionPoint, dwCookie: DWORD): HRESULT {.stdcall.}
EnumConnections*: proc(self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections): HRESULT {.stdcall.}
IOleInPlaceSiteEx* {.pure.} = object
lpVtbl*: ptr IOleInPlaceSiteExVtbl
IOleInPlaceSiteExVtbl* {.pure, inheritable.} = object of IOleInPlaceSiteVtbl
OnInPlaceActivateEx*: proc(self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD): HRESULT {.stdcall.}
OnInPlaceDeactivateEx*: proc(self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL): HRESULT {.stdcall.}
RequestUIActivate*: proc(self: ptr IOleInPlaceSiteEx): HRESULT {.stdcall.}
IObjectWithSite* {.pure.} = object
lpVtbl*: ptr IObjectWithSiteVtbl
IObjectWithSiteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
SetSite*: proc(self: ptr IObjectWithSite, pUnkSite: ptr IUnknown): HRESULT {.stdcall.}
GetSite*: proc(self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer): HRESULT {.stdcall.}
SHITEMID* {.pure, packed.} = object
cb*: USHORT
abID*: array[1, BYTE]
ITEMIDLIST* {.pure, packed.} = object
mkid*: SHITEMID
ITEMIDLIST_RELATIVE* = ITEMIDLIST
ITEMID_CHILD* = ITEMIDLIST
ITEMIDLIST_ABSOLUTE* = ITEMIDLIST
PIDLIST_ABSOLUTE* = ptr ITEMIDLIST_ABSOLUTE
PCIDLIST_ABSOLUTE* = ptr ITEMIDLIST_ABSOLUTE
PIDLIST_RELATIVE* = ptr ITEMIDLIST_RELATIVE
PCUITEMID_CHILD* = ptr ITEMID_CHILD
PCUITEMID_CHILD_ARRAY* = ptr PCUITEMID_CHILD
PROPERTYKEY* {.pure.} = object
fmtid*: GUID
pid*: DWORD
OLECMD* {.pure.} = object
cmdID*: ULONG
cmdf*: DWORD
OLECMDTEXT* {.pure.} = object
cmdtextf*: DWORD
cwActual*: ULONG
cwBuf*: ULONG
rgwz*: array[1, uint16]
IOleCommandTarget* {.pure.} = object
lpVtbl*: ptr IOleCommandTargetVtbl
IOleCommandTargetVtbl* {.pure, inheritable.} = object of IUnknownVtbl
QueryStatus*: proc(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, cCmds: ULONG, prgCmds: ptr OLECMD, pCmdText: ptr OLECMDTEXT): HRESULT {.stdcall.}
Exec*: proc(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, nCmdID: DWORD, nCmdexecopt: DWORD, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.stdcall.}
REFPROPERTYKEY* = ptr PROPERTYKEY
const
CLSCTX_INPROC_SERVER* = 0x1
CLSCTX_INPROC_HANDLER* = 0x2
CLSCTX_LOCAL_SERVER* = 0x4
CLSCTX_REMOTE_SERVER* = 0x10
CLSCTX_ALL* = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or CLSCTX_LOCAL_SERVER or CLSCTX_REMOTE_SERVER
DVASPECT_CONTENT* = 1
STATFLAG_NONAME* = 1
VARIANT_TRUE* = VARIANT_BOOL(-1)
VARIANT_FALSE* = VARIANT_BOOL 0
VT_I4* = 3
VT_BSTR* = 8
VT_VARIANT* = 12
IID_IUnknown* = DEFINE_GUID("00000000-0000-0000-c000-000000000046")
IID_IEnumString* = DEFINE_GUID("00000101-0000-0000-c000-000000000046")
STREAM_SEEK_SET* = 0
TYMED_HGLOBAL* = 1
TYMED_GDI* = 16
DATADIR_GET* = 1
IID_IDataObject* = DEFINE_GUID("0000010e-0000-0000-c000-000000000046")
DISPID_UNKNOWN* = -1
IID_IDispatch* = DEFINE_GUID("00020400-0000-0000-c000-000000000046")
OLEIVERB_HIDE* = -3
OLEIVERB_INPLACEACTIVATE* = -5
IID_IOleClientSite* = DEFINE_GUID("00000118-0000-0000-c000-000000000046")
OLECLOSE_NOSAVE* = 1
IID_IOleObject* = DEFINE_GUID("00000112-0000-0000-c000-000000000046")
IID_IOleWindow* = DEFINE_GUID("00000114-0000-0000-c000-000000000046")
IID_IOleInPlaceActiveObject* = DEFINE_GUID("00000117-0000-0000-c000-000000000046")
IID_IOleInPlaceFrame* = DEFINE_GUID("00000116-0000-0000-c000-000000000046")
IID_IOleInPlaceObject* = DEFINE_GUID("00000113-0000-0000-c000-000000000046")
IID_IOleInPlaceSite* = DEFINE_GUID("00000119-0000-0000-c000-000000000046")
DROPEFFECT_NONE* = 0
DROPEFFECT_COPY* = 1
DROPEFFECT_MOVE* = 2
DROPEFFECT_LINK* = 4
IID_IConnectionPointContainer* = DEFINE_GUID("b196b284-bab4-101a-b69c-00aa00341d07")
IID_IOleInPlaceSiteEx* = DEFINE_GUID("9c2cad80-3424-11cf-b670-00aa004cd6d8")
IID_IObjectWithSite* = DEFINE_GUID("fc4801a3-2ba9-11cf-a229-00aa003d7352")
navNoHistory* = 0x2
DIID_DWebBrowserEvents* = DEFINE_GUID("eab22ac2-30c1-11cf-a7eb-0000c05bae0b")
CSC_NAVIGATEFORWARD* = 1
CSC_NAVIGATEBACK* = 2
IID_IWebBrowser2* = DEFINE_GUID("d30c1661-cdaf-11d0-8a3e-00c04fc9e26e")
DIID_DWebBrowserEvents2* = DEFINE_GUID("34a715a0-6587-11d0-924a-0020afc7ac4d")
CLSID_WebBrowser* = DEFINE_GUID("8856f961-340a-11d0-a96b-00c04fd705a2")
DISPID_STATUSTEXTCHANGE* = 102
DISPID_COMMANDSTATECHANGE* = 105
DISPID_PROGRESSCHANGE* = 108
DISPID_TITLECHANGE* = 113
DISPID_BEFORENAVIGATE2* = 250
DISPID_NEWWINDOW2* = 251
DISPID_NAVIGATECOMPLETE2* = 252
DISPID_NAVIGATEERROR* = 271
DISPID_NEWWINDOW3* = 273
type
COMDLG_FILTERSPEC* {.pure.} = object
pszName*: LPCWSTR
pszSpec*: LPCWSTR
IWebBrowser* {.pure.} = object
lpVtbl*: ptr IWebBrowserVtbl
IWebBrowserVtbl* {.pure, inheritable.} = object of IDispatchVtbl
GoBack*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
GoForward*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
GoHome*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
GoSearch*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
Navigate*: proc(self: ptr IWebBrowser, URL: BSTR, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.stdcall.}
Refresh*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
Refresh2*: proc(self: ptr IWebBrowser, Level: ptr VARIANT): HRESULT {.stdcall.}
Stop*: proc(self: ptr IWebBrowser): HRESULT {.stdcall.}
get_Application*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
get_Parent*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
get_Container*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
get_Document*: proc(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.stdcall.}
get_TopLevelContainer*: proc(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_Type*: proc(self: ptr IWebBrowser, Type: ptr BSTR): HRESULT {.stdcall.}
get_Left*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
put_Left*: proc(self: ptr IWebBrowser, Left: LONG): HRESULT {.stdcall.}
get_Top*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
put_Top*: proc(self: ptr IWebBrowser, Top: LONG): HRESULT {.stdcall.}
get_Width*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
put_Width*: proc(self: ptr IWebBrowser, Width: LONG): HRESULT {.stdcall.}
get_Height*: proc(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.stdcall.}
put_Height*: proc(self: ptr IWebBrowser, Height: LONG): HRESULT {.stdcall.}
get_LocationName*: proc(self: ptr IWebBrowser, LocationName: ptr BSTR): HRESULT {.stdcall.}
get_LocationURL*: proc(self: ptr IWebBrowser, LocationURL: ptr BSTR): HRESULT {.stdcall.}
get_Busy*: proc(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IWebBrowserApp* {.pure.} = object
lpVtbl*: ptr IWebBrowserAppVtbl
IWebBrowserAppVtbl* {.pure, inheritable.} = object of IWebBrowserVtbl
Quit*: proc(self: ptr IWebBrowserApp): HRESULT {.stdcall.}
ClientToWindow*: proc(self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32): HRESULT {.stdcall.}
PutProperty*: proc(self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT): HRESULT {.stdcall.}
GetProperty*: proc(self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT): HRESULT {.stdcall.}
get_Name*: proc(self: ptr IWebBrowserApp, Name: ptr BSTR): HRESULT {.stdcall.}
get_HWND*: proc(self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR): HRESULT {.stdcall.}
get_FullName*: proc(self: ptr IWebBrowserApp, FullName: ptr BSTR): HRESULT {.stdcall.}
get_Path*: proc(self: ptr IWebBrowserApp, Path: ptr BSTR): HRESULT {.stdcall.}
get_Visible*: proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_Visible*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
get_StatusBar*: proc(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_StatusBar*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
get_StatusText*: proc(self: ptr IWebBrowserApp, StatusText: ptr BSTR): HRESULT {.stdcall.}
put_StatusText*: proc(self: ptr IWebBrowserApp, StatusText: BSTR): HRESULT {.stdcall.}
get_ToolBar*: proc(self: ptr IWebBrowserApp, Value: ptr int32): HRESULT {.stdcall.}
put_ToolBar*: proc(self: ptr IWebBrowserApp, Value: int32): HRESULT {.stdcall.}
get_MenuBar*: proc(self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_MenuBar*: proc(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.stdcall.}
get_FullScreen*: proc(self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_FullScreen*: proc(self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL): HRESULT {.stdcall.}
IWebBrowser2* {.pure.} = object
lpVtbl*: ptr IWebBrowser2Vtbl
IWebBrowser2Vtbl* {.pure, inheritable.} = object of IWebBrowserAppVtbl
Navigate2*: proc(self: ptr IWebBrowser2, URL: ptr VARIANT, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.stdcall.}
QueryStatusWB*: proc(self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF): HRESULT {.stdcall.}
ExecWB*: proc(self: ptr IWebBrowser2, cmdID: OLECMDID, cmdexecopt: OLECMDEXECOPT, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.stdcall.}
ShowBrowserBar*: proc(self: ptr IWebBrowser2, pvaClsid: ptr VARIANT, pvarShow: ptr VARIANT, pvarSize: ptr VARIANT): HRESULT {.stdcall.}
get_ReadyState*: proc(self: ptr IWebBrowser2, plReadyState: ptr READYSTATE): HRESULT {.stdcall.}
get_Offline*: proc(self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_Offline*: proc(self: ptr IWebBrowser2, bOffline: VARIANT_BOOL): HRESULT {.stdcall.}
get_Silent*: proc(self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_Silent*: proc(self: ptr IWebBrowser2, bSilent: VARIANT_BOOL): HRESULT {.stdcall.}
get_RegisterAsBrowser*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_RegisterAsBrowser*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
get_RegisterAsDropTarget*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_RegisterAsDropTarget*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
get_TheaterMode*: proc(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_TheaterMode*: proc(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.stdcall.}
get_AddressBar*: proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_AddressBar*: proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
get_Resizable*: proc(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_Resizable*: proc(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.stdcall.}
proc SysAllocString*(P1: ptr OLECHAR): BSTR {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc SysFreeString*(P1: BSTR): void {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc SafeArrayDestroy*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc SafeArrayAccessData*(psa: ptr SAFEARRAY, ppvData: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc SafeArrayUnaccessData*(psa: ptr SAFEARRAY): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc SafeArrayCreateVector*(vt: VARTYPE, lLbound: LONG, cElements: ULONG): ptr SAFEARRAY {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc VariantClear*(pvarg: ptr VARIANTARG): HRESULT {.winapi, stdcall, dynlib: "oleaut32", importc.}
proc OleInitialize*(pvReserved: LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc OleSetContainedObject*(pUnknown: LPUNKNOWN, fContained: WINBOOL): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc RegisterDragDrop*(hwnd: HWND, pDropTarget: LPDROPTARGET): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc RevokeDragDrop*(hwnd: HWND): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc DoDragDrop*(pDataObj: LPDATAOBJECT, pDropSource: LPDROPSOURCE, dwOKEffects: DWORD, pdwEffect: LPDWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc OleSetClipboard*(pDataObj: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc OleGetClipboard*(ppDataObj: ptr LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc OleFlushClipboard*(): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc OleIsCurrentClipboard*(pDataObj: LPDATAOBJECT): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc ReleaseStgMedium*(P1: LPSTGMEDIUM): void {.winapi, stdcall, dynlib: "ole32", importc.}
proc CoDisconnectObject*(pUnk: LPUNKNOWN, dwReserved: DWORD): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc CoCreateInstance*(rclsid: REFCLSID, pUnkOuter: LPUNKNOWN, dwClsContext: DWORD, riid: REFIID, ppv: ptr LPVOID): HRESULT {.winapi, stdcall, dynlib: "ole32", importc.}
proc CoTaskMemAlloc*(cb: SIZE_T): LPVOID {.winapi, stdcall, dynlib: "ole32", importc.}
proc CoTaskMemFree*(pv: LPVOID): void {.winapi, stdcall, dynlib: "ole32", importc.}
proc `Lo=`*(self: var CY, x: int32) {.inline.} = self.struct1.Lo = x
proc Lo*(self: CY): int32 {.inline.} = self.struct1.Lo
proc Lo*(self: var CY): var int32 {.inline.} = self.struct1.Lo
proc `Hi=`*(self: var CY, x: int32) {.inline.} = self.struct1.Hi = x
proc Hi*(self: CY): int32 {.inline.} = self.struct1.Hi
proc Hi*(self: var CY): var int32 {.inline.} = self.struct1.Hi
proc `scale=`*(self: var DECIMAL, x: BYTE) {.inline.} = self.union1.struct1.scale = x
proc scale*(self: DECIMAL): BYTE {.inline.} = self.union1.struct1.scale
proc scale*(self: var DECIMAL): var BYTE {.inline.} = self.union1.struct1.scale
proc `sign=`*(self: var DECIMAL, x: BYTE) {.inline.} = self.union1.struct1.sign = x
proc sign*(self: DECIMAL): BYTE {.inline.} = self.union1.struct1.sign
proc sign*(self: var DECIMAL): var BYTE {.inline.} = self.union1.struct1.sign
proc `signscale=`*(self: var DECIMAL, x: USHORT) {.inline.} = self.union1.signscale = x
proc signscale*(self: DECIMAL): USHORT {.inline.} = self.union1.signscale
proc signscale*(self: var DECIMAL): var USHORT {.inline.} = self.union1.signscale
proc `Lo32=`*(self: var DECIMAL, x: ULONG) {.inline.} = self.union2.struct1.Lo32 = x
proc Lo32*(self: DECIMAL): ULONG {.inline.} = self.union2.struct1.Lo32
proc Lo32*(self: var DECIMAL): var ULONG {.inline.} = self.union2.struct1.Lo32
proc `Mid32=`*(self: var DECIMAL, x: ULONG) {.inline.} = self.union2.struct1.Mid32 = x
proc Mid32*(self: DECIMAL): ULONG {.inline.} = self.union2.struct1.Mid32
proc Mid32*(self: var DECIMAL): var ULONG {.inline.} = self.union2.struct1.Mid32
proc `Lo64=`*(self: var DECIMAL, x: ULONGLONG) {.inline.} = self.union2.Lo64 = x
proc Lo64*(self: DECIMAL): ULONGLONG {.inline.} = self.union2.Lo64
proc Lo64*(self: var DECIMAL): var ULONGLONG {.inline.} = self.union2.Lo64
proc `vt=`*(self: var VARIANT, x: VARTYPE) {.inline.} = self.union1.struct1.vt = x
proc vt*(self: VARIANT): VARTYPE {.inline.} = self.union1.struct1.vt
proc vt*(self: var VARIANT): var VARTYPE {.inline.} = self.union1.struct1.vt
proc `wReserved1=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved1 = x
proc wReserved1*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved1
proc wReserved1*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved1
proc `wReserved2=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved2 = x
proc wReserved2*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved2
proc wReserved2*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved2
proc `wReserved3=`*(self: var VARIANT, x: WORD) {.inline.} = self.union1.struct1.wReserved3 = x
proc wReserved3*(self: VARIANT): WORD {.inline.} = self.union1.struct1.wReserved3
proc wReserved3*(self: var VARIANT): var WORD {.inline.} = self.union1.struct1.wReserved3
proc `llVal=`*(self: var VARIANT, x: LONGLONG) {.inline.} = self.union1.struct1.union1.llVal = x
proc llVal*(self: VARIANT): LONGLONG {.inline.} = self.union1.struct1.union1.llVal
proc llVal*(self: var VARIANT): var LONGLONG {.inline.} = self.union1.struct1.union1.llVal
proc `lVal=`*(self: var VARIANT, x: LONG) {.inline.} = self.union1.struct1.union1.lVal = x
proc lVal*(self: VARIANT): LONG {.inline.} = self.union1.struct1.union1.lVal
proc lVal*(self: var VARIANT): var LONG {.inline.} = self.union1.struct1.union1.lVal
proc `bVal=`*(self: var VARIANT, x: BYTE) {.inline.} = self.union1.struct1.union1.bVal = x
proc bVal*(self: VARIANT): BYTE {.inline.} = self.union1.struct1.union1.bVal
proc bVal*(self: var VARIANT): var BYTE {.inline.} = self.union1.struct1.union1.bVal
proc `iVal=`*(self: var VARIANT, x: SHORT) {.inline.} = self.union1.struct1.union1.iVal = x
proc iVal*(self: VARIANT): SHORT {.inline.} = self.union1.struct1.union1.iVal
proc iVal*(self: var VARIANT): var SHORT {.inline.} = self.union1.struct1.union1.iVal
proc `fltVal=`*(self: var VARIANT, x: FLOAT) {.inline.} = self.union1.struct1.union1.fltVal = x
proc fltVal*(self: VARIANT): FLOAT {.inline.} = self.union1.struct1.union1.fltVal
proc fltVal*(self: var VARIANT): var FLOAT {.inline.} = self.union1.struct1.union1.fltVal
proc `dblVal=`*(self: var VARIANT, x: DOUBLE) {.inline.} = self.union1.struct1.union1.dblVal = x
proc dblVal*(self: VARIANT): DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
proc dblVal*(self: var VARIANT): var DOUBLE {.inline.} = self.union1.struct1.union1.dblVal
proc `boolVal=`*(self: var VARIANT, x: VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.boolVal = x
proc boolVal*(self: VARIANT): VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
proc boolVal*(self: var VARIANT): var VARIANT_BOOL {.inline.} = self.union1.struct1.union1.boolVal
proc `scode=`*(self: var VARIANT, x: SCODE) {.inline.} = self.union1.struct1.union1.scode = x
proc scode*(self: VARIANT): SCODE {.inline.} = self.union1.struct1.union1.scode
proc scode*(self: var VARIANT): var SCODE {.inline.} = self.union1.struct1.union1.scode
proc `cyVal=`*(self: var VARIANT, x: CY) {.inline.} = self.union1.struct1.union1.cyVal = x
proc cyVal*(self: VARIANT): CY {.inline.} = self.union1.struct1.union1.cyVal
proc cyVal*(self: var VARIANT): var CY {.inline.} = self.union1.struct1.union1.cyVal
proc `date=`*(self: var VARIANT, x: DATE) {.inline.} = self.union1.struct1.union1.date = x
proc date*(self: VARIANT): DATE {.inline.} = self.union1.struct1.union1.date
proc date*(self: var VARIANT): var DATE {.inline.} = self.union1.struct1.union1.date
proc `bstrVal=`*(self: var VARIANT, x: BSTR) {.inline.} = self.union1.struct1.union1.bstrVal = x
proc bstrVal*(self: VARIANT): BSTR {.inline.} = self.union1.struct1.union1.bstrVal
proc bstrVal*(self: var VARIANT): var BSTR {.inline.} = self.union1.struct1.union1.bstrVal
proc `punkVal=`*(self: var VARIANT, x: ptr IUnknown) {.inline.} = self.union1.struct1.union1.punkVal = x
proc punkVal*(self: VARIANT): ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
proc punkVal*(self: var VARIANT): var ptr IUnknown {.inline.} = self.union1.struct1.union1.punkVal
proc `pdispVal=`*(self: var VARIANT, x: ptr IDispatch) {.inline.} = self.union1.struct1.union1.pdispVal = x
proc pdispVal*(self: VARIANT): ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
proc pdispVal*(self: var VARIANT): var ptr IDispatch {.inline.} = self.union1.struct1.union1.pdispVal
proc `parray=`*(self: var VARIANT, x: ptr SAFEARRAY) {.inline.} = self.union1.struct1.union1.parray = x
proc parray*(self: VARIANT): ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.parray
proc parray*(self: var VARIANT): var ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.parray
proc `pbVal=`*(self: var VARIANT, x: ptr BYTE) {.inline.} = self.union1.struct1.union1.pbVal = x
proc pbVal*(self: VARIANT): ptr BYTE {.inline.} = self.union1.struct1.union1.pbVal
proc pbVal*(self: var VARIANT): var ptr BYTE {.inline.} = self.union1.struct1.union1.pbVal
proc `piVal=`*(self: var VARIANT, x: ptr SHORT) {.inline.} = self.union1.struct1.union1.piVal = x
proc piVal*(self: VARIANT): ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
proc piVal*(self: var VARIANT): var ptr SHORT {.inline.} = self.union1.struct1.union1.piVal
proc `plVal=`*(self: var VARIANT, x: ptr LONG) {.inline.} = self.union1.struct1.union1.plVal = x
proc plVal*(self: VARIANT): ptr LONG {.inline.} = self.union1.struct1.union1.plVal
proc plVal*(self: var VARIANT): var ptr LONG {.inline.} = self.union1.struct1.union1.plVal
proc `pllVal=`*(self: var VARIANT, x: ptr LONGLONG) {.inline.} = self.union1.struct1.union1.pllVal = x
proc pllVal*(self: VARIANT): ptr LONGLONG {.inline.} = self.union1.struct1.union1.pllVal
proc pllVal*(self: var VARIANT): var ptr LONGLONG {.inline.} = self.union1.struct1.union1.pllVal
proc `pfltVal=`*(self: var VARIANT, x: ptr FLOAT) {.inline.} = self.union1.struct1.union1.pfltVal = x
proc pfltVal*(self: VARIANT): ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
proc pfltVal*(self: var VARIANT): var ptr FLOAT {.inline.} = self.union1.struct1.union1.pfltVal
proc `pdblVal=`*(self: var VARIANT, x: ptr DOUBLE) {.inline.} = self.union1.struct1.union1.pdblVal = x
proc pdblVal*(self: VARIANT): ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
proc pdblVal*(self: var VARIANT): var ptr DOUBLE {.inline.} = self.union1.struct1.union1.pdblVal
proc `pboolVal=`*(self: var VARIANT, x: ptr VARIANT_BOOL) {.inline.} = self.union1.struct1.union1.pboolVal = x
proc pboolVal*(self: VARIANT): ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
proc pboolVal*(self: var VARIANT): var ptr VARIANT_BOOL {.inline.} = self.union1.struct1.union1.pboolVal
proc `pscode=`*(self: var VARIANT, x: ptr SCODE) {.inline.} = self.union1.struct1.union1.pscode = x
proc pscode*(self: VARIANT): ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
proc pscode*(self: var VARIANT): var ptr SCODE {.inline.} = self.union1.struct1.union1.pscode
proc `pcyVal=`*(self: var VARIANT, x: ptr CY) {.inline.} = self.union1.struct1.union1.pcyVal = x
proc pcyVal*(self: VARIANT): ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
proc pcyVal*(self: var VARIANT): var ptr CY {.inline.} = self.union1.struct1.union1.pcyVal
proc `pdate=`*(self: var VARIANT, x: ptr DATE) {.inline.} = self.union1.struct1.union1.pdate = x
proc pdate*(self: VARIANT): ptr DATE {.inline.} = self.union1.struct1.union1.pdate
proc pdate*(self: var VARIANT): var ptr DATE {.inline.} = self.union1.struct1.union1.pdate
proc `pbstrVal=`*(self: var VARIANT, x: ptr BSTR) {.inline.} = self.union1.struct1.union1.pbstrVal = x
proc pbstrVal*(self: VARIANT): ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
proc pbstrVal*(self: var VARIANT): var ptr BSTR {.inline.} = self.union1.struct1.union1.pbstrVal
proc `ppunkVal=`*(self: var VARIANT, x: ptr ptr IUnknown) {.inline.} = self.union1.struct1.union1.ppunkVal = x
proc ppunkVal*(self: VARIANT): ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
proc ppunkVal*(self: var VARIANT): var ptr ptr IUnknown {.inline.} = self.union1.struct1.union1.ppunkVal
proc `ppdispVal=`*(self: var VARIANT, x: ptr ptr IDispatch) {.inline.} = self.union1.struct1.union1.ppdispVal = x
proc ppdispVal*(self: VARIANT): ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
proc ppdispVal*(self: var VARIANT): var ptr ptr IDispatch {.inline.} = self.union1.struct1.union1.ppdispVal
proc `pparray=`*(self: var VARIANT, x: ptr ptr SAFEARRAY) {.inline.} = self.union1.struct1.union1.pparray = x
proc pparray*(self: VARIANT): ptr ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
proc pparray*(self: var VARIANT): var ptr ptr SAFEARRAY {.inline.} = self.union1.struct1.union1.pparray
proc `pvarVal=`*(self: var VARIANT, x: ptr VARIANT) {.inline.} = self.union1.struct1.union1.pvarVal = x
proc pvarVal*(self: VARIANT): ptr VARIANT {.inline.} = self.union1.struct1.union1.pvarVal
proc pvarVal*(self: var VARIANT): var ptr VARIANT {.inline.} = self.union1.struct1.union1.pvarVal
proc `byref=`*(self: var VARIANT, x: PVOID) {.inline.} = self.union1.struct1.union1.byref = x
proc byref*(self: VARIANT): PVOID {.inline.} = self.union1.struct1.union1.byref
proc byref*(self: var VARIANT): var PVOID {.inline.} = self.union1.struct1.union1.byref
proc `cVal=`*(self: var VARIANT, x: CHAR) {.inline.} = self.union1.struct1.union1.cVal = x
proc cVal*(self: VARIANT): CHAR {.inline.} = self.union1.struct1.union1.cVal
proc cVal*(self: var VARIANT): var CHAR {.inline.} = self.union1.struct1.union1.cVal
proc `uiVal=`*(self: var VARIANT, x: USHORT) {.inline.} = self.union1.struct1.union1.uiVal = x
proc uiVal*(self: VARIANT): USHORT {.inline.} = self.union1.struct1.union1.uiVal
proc uiVal*(self: var VARIANT): var USHORT {.inline.} = self.union1.struct1.union1.uiVal
proc `ulVal=`*(self: var VARIANT, x: ULONG) {.inline.} = self.union1.struct1.union1.ulVal = x
proc ulVal*(self: VARIANT): ULONG {.inline.} = self.union1.struct1.union1.ulVal
proc ulVal*(self: var VARIANT): var ULONG {.inline.} = self.union1.struct1.union1.ulVal
proc `ullVal=`*(self: var VARIANT, x: ULONGLONG) {.inline.} = self.union1.struct1.union1.ullVal = x
proc ullVal*(self: VARIANT): ULONGLONG {.inline.} = self.union1.struct1.union1.ullVal
proc ullVal*(self: var VARIANT): var ULONGLONG {.inline.} = self.union1.struct1.union1.ullVal
proc `intVal=`*(self: var VARIANT, x: INT) {.inline.} = self.union1.struct1.union1.intVal = x
proc intVal*(self: VARIANT): INT {.inline.} = self.union1.struct1.union1.intVal
proc intVal*(self: var VARIANT): var INT {.inline.} = self.union1.struct1.union1.intVal
proc `uintVal=`*(self: var VARIANT, x: UINT) {.inline.} = self.union1.struct1.union1.uintVal = x
proc uintVal*(self: VARIANT): UINT {.inline.} = self.union1.struct1.union1.uintVal
proc uintVal*(self: var VARIANT): var UINT {.inline.} = self.union1.struct1.union1.uintVal
proc `pdecVal=`*(self: var VARIANT, x: ptr DECIMAL) {.inline.} = self.union1.struct1.union1.pdecVal = x
proc pdecVal*(self: VARIANT): ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
proc pdecVal*(self: var VARIANT): var ptr DECIMAL {.inline.} = self.union1.struct1.union1.pdecVal
proc `pcVal=`*(self: var VARIANT, x: ptr CHAR) {.inline.} = self.union1.struct1.union1.pcVal = x
proc pcVal*(self: VARIANT): ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
proc pcVal*(self: var VARIANT): var ptr CHAR {.inline.} = self.union1.struct1.union1.pcVal
proc `puiVal=`*(self: var VARIANT, x: ptr USHORT) {.inline.} = self.union1.struct1.union1.puiVal = x
proc puiVal*(self: VARIANT): ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
proc puiVal*(self: var VARIANT): var ptr USHORT {.inline.} = self.union1.struct1.union1.puiVal
proc `pulVal=`*(self: var VARIANT, x: ptr ULONG) {.inline.} = self.union1.struct1.union1.pulVal = x
proc pulVal*(self: VARIANT): ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
proc pulVal*(self: var VARIANT): var ptr ULONG {.inline.} = self.union1.struct1.union1.pulVal
proc `pullVal=`*(self: var VARIANT, x: ptr ULONGLONG) {.inline.} = self.union1.struct1.union1.pullVal = x
proc pullVal*(self: VARIANT): ptr ULONGLONG {.inline.} = self.union1.struct1.union1.pullVal
proc pullVal*(self: var VARIANT): var ptr ULONGLONG {.inline.} = self.union1.struct1.union1.pullVal
proc `pintVal=`*(self: var VARIANT, x: ptr INT) {.inline.} = self.union1.struct1.union1.pintVal = x
proc pintVal*(self: VARIANT): ptr INT {.inline.} = self.union1.struct1.union1.pintVal
proc pintVal*(self: var VARIANT): var ptr INT {.inline.} = self.union1.struct1.union1.pintVal
proc `puintVal=`*(self: var VARIANT, x: ptr UINT) {.inline.} = self.union1.struct1.union1.puintVal = x
proc puintVal*(self: VARIANT): ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
proc puintVal*(self: var VARIANT): var ptr UINT {.inline.} = self.union1.struct1.union1.puintVal
proc `pvRecord=`*(self: var VARIANT, x: PVOID) {.inline.} = self.union1.struct1.union1.struct1.pvRecord = x
proc pvRecord*(self: VARIANT): PVOID {.inline.} = self.union1.struct1.union1.struct1.pvRecord
proc pvRecord*(self: var VARIANT): var PVOID {.inline.} = self.union1.struct1.union1.struct1.pvRecord
proc `pRecInfo=`*(self: var VARIANT, x: ptr IRecordInfo) {.inline.} = self.union1.struct1.union1.struct1.pRecInfo = x
proc pRecInfo*(self: VARIANT): ptr IRecordInfo {.inline.} = self.union1.struct1.union1.struct1.pRecInfo
proc pRecInfo*(self: var VARIANT): var ptr IRecordInfo {.inline.} = self.union1.struct1.union1.struct1.pRecInfo
proc `decVal=`*(self: var VARIANT, x: DECIMAL) {.inline.} = self.union1.decVal = x
proc decVal*(self: VARIANT): DECIMAL {.inline.} = self.union1.decVal
proc decVal*(self: var VARIANT): var DECIMAL {.inline.} = self.union1.decVal
proc `lptdesc=`*(self: var TYPEDESC, x: ptr TYPEDESC) {.inline.} = self.union1.lptdesc = x
proc lptdesc*(self: TYPEDESC): ptr TYPEDESC {.inline.} = self.union1.lptdesc
proc lptdesc*(self: var TYPEDESC): var ptr TYPEDESC {.inline.} = self.union1.lptdesc
proc `lpadesc=`*(self: var TYPEDESC, x: ptr ARRAYDESC) {.inline.} = self.union1.lpadesc = x
proc lpadesc*(self: TYPEDESC): ptr ARRAYDESC {.inline.} = self.union1.lpadesc
proc lpadesc*(self: var TYPEDESC): var ptr ARRAYDESC {.inline.} = self.union1.lpadesc
proc `hreftype=`*(self: var TYPEDESC, x: HREFTYPE) {.inline.} = self.union1.hreftype = x
proc hreftype*(self: TYPEDESC): HREFTYPE {.inline.} = self.union1.hreftype
proc hreftype*(self: var TYPEDESC): var HREFTYPE {.inline.} = self.union1.hreftype
proc `idldesc=`*(self: var ELEMDESC, x: IDLDESC) {.inline.} = self.union1.idldesc = x
proc idldesc*(self: ELEMDESC): IDLDESC {.inline.} = self.union1.idldesc
proc idldesc*(self: var ELEMDESC): var IDLDESC {.inline.} = self.union1.idldesc
proc `paramdesc=`*(self: var ELEMDESC, x: PARAMDESC) {.inline.} = self.union1.paramdesc = x
proc paramdesc*(self: ELEMDESC): PARAMDESC {.inline.} = self.union1.paramdesc
proc paramdesc*(self: var ELEMDESC): var PARAMDESC {.inline.} = self.union1.paramdesc
proc `oInst=`*(self: var VARDESC, x: ULONG) {.inline.} = self.union1.oInst = x
proc oInst*(self: VARDESC): ULONG {.inline.} = self.union1.oInst
proc oInst*(self: var VARDESC): var ULONG {.inline.} = self.union1.oInst
proc `lpvarValue=`*(self: var VARDESC, x: ptr VARIANT) {.inline.} = self.union1.lpvarValue = x
proc lpvarValue*(self: VARDESC): ptr VARIANT {.inline.} = self.union1.lpvarValue
proc lpvarValue*(self: var VARDESC): var ptr VARIANT {.inline.} = self.union1.lpvarValue
proc QueryInterface*(self: ptr IUnknown, riid: REFIID, ppvObject: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryInterface(self, riid, ppvObject)
proc AddRef*(self: ptr IUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddRef(self)
proc Release*(self: ptr IUnknown): ULONG {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Release(self)
proc Next*(self: ptr IEnumUnknown, celt: ULONG, rgelt: ptr ptr IUnknown, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumUnknown, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumUnknown, ppenum: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc Next*(self: ptr IEnumString, celt: ULONG, rgelt: ptr LPOLESTR, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumString, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumString, ppenum: ptr ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc Read*(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbRead: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Read(self, pv, cb, pcbRead)
proc Write*(self: ptr ISequentialStream, pv: pointer, cb: ULONG, pcbWritten: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Write(self, pv, cb, pcbWritten)
proc Seek*(self: ptr IStream, dlibMove: LARGE_INTEGER, dwOrigin: DWORD, plibNewPosition: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Seek(self, dlibMove, dwOrigin, plibNewPosition)
proc SetSize*(self: ptr IStream, libNewSize: ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSize(self, libNewSize)
proc CopyTo*(self: ptr IStream, pstm: ptr IStream, cb: ULARGE_INTEGER, pcbRead: ptr ULARGE_INTEGER, pcbWritten: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyTo(self, pstm, cb, pcbRead, pcbWritten)
proc Commit*(self: ptr IStream, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, grfCommitFlags)
proc Revert*(self: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revert(self)
proc LockRegion*(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockRegion(self, libOffset, cb, dwLockType)
proc UnlockRegion*(self: ptr IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnlockRegion(self, libOffset, cb, dwLockType)
proc Stat*(self: ptr IStream, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
proc Clone*(self: ptr IStream, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppstm)
proc RegisterObjectBound*(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterObjectBound(self, punk)
proc RevokeObjectBound*(self: ptr IBindCtx, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeObjectBound(self, punk)
proc ReleaseBoundObjects*(self: ptr IBindCtx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseBoundObjects(self)
proc SetBindOptions*(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBindOptions(self, pbindopts)
proc GetBindOptions*(self: ptr IBindCtx, pbindopts: ptr BIND_OPTS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBindOptions(self, pbindopts)
proc GetRunningObjectTable*(self: ptr IBindCtx, pprot: ptr ptr IRunningObjectTable): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRunningObjectTable(self, pprot)
proc RegisterObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterObjectParam(self, pszKey, punk)
proc GetObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR, ppunk: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObjectParam(self, pszKey, ppunk)
proc EnumObjectParam*(self: ptr IBindCtx, ppenum: ptr ptr IEnumString): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumObjectParam(self, ppenum)
proc RevokeObjectParam*(self: ptr IBindCtx, pszKey: LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RevokeObjectParam(self, pszKey)
proc Next*(self: ptr IEnumMoniker, celt: ULONG, rgelt: ptr ptr IMoniker, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumMoniker, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumMoniker, ppenum: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc Register*(self: ptr IRunningObjectTable, grfFlags: DWORD, punkObject: ptr IUnknown, pmkObjectName: ptr IMoniker, pdwRegister: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Register(self, grfFlags, punkObject, pmkObjectName, pdwRegister)
proc Revoke*(self: ptr IRunningObjectTable, dwRegister: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revoke(self, dwRegister)
proc IsRunning*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self, pmkObjectName)
proc GetObject*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, ppunkObject: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetObject(self, pmkObjectName, ppunkObject)
proc NoteChangeTime*(self: ptr IRunningObjectTable, dwRegister: DWORD, pfiletime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.NoteChangeTime(self, dwRegister, pfiletime)
proc GetTimeOfLastChange*(self: ptr IRunningObjectTable, pmkObjectName: ptr IMoniker, pfiletime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTimeOfLastChange(self, pmkObjectName, pfiletime)
proc EnumRunning*(self: ptr IRunningObjectTable, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumRunning(self, ppenumMoniker)
proc GetClassID*(self: ptr IPersist, pClassID: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClassID(self, pClassID)
proc IsDirty*(self: ptr IPersistStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsDirty(self)
proc Load*(self: ptr IPersistStream, pStm: ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Load(self, pStm)
proc Save*(self: ptr IPersistStream, pStm: ptr IStream, fClearDirty: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Save(self, pStm, fClearDirty)
proc GetSizeMax*(self: ptr IPersistStream, pcbSize: ptr ULARGE_INTEGER): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSizeMax(self, pcbSize)
proc BindToObject*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riidResult: REFIID, ppvResult: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToObject(self, pbc, pmkToLeft, riidResult, ppvResult)
proc BindToStorage*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, riid: REFIID, ppvObj: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToStorage(self, pbc, pmkToLeft, riid, ppvObj)
proc Reduce*(self: ptr IMoniker, pbc: ptr IBindCtx, dwReduceHowFar: DWORD, ppmkToLeft: ptr ptr IMoniker, ppmkReduced: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reduce(self, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced)
proc ComposeWith*(self: ptr IMoniker, pmkRight: ptr IMoniker, fOnlyIfNotGeneric: WINBOOL, ppmkComposite: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ComposeWith(self, pmkRight, fOnlyIfNotGeneric, ppmkComposite)
proc Enum*(self: ptr IMoniker, fForward: WINBOOL, ppenumMoniker: ptr ptr IEnumMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enum(self, fForward, ppenumMoniker)
proc IsEqual*(self: ptr IMoniker, pmkOtherMoniker: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsEqual(self, pmkOtherMoniker)
proc Hash*(self: ptr IMoniker, pdwHash: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Hash(self, pdwHash)
proc IsRunning*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pmkNewlyRunning: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsRunning(self, pbc, pmkToLeft, pmkNewlyRunning)
proc GetTimeOfLastChange*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pFileTime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTimeOfLastChange(self, pbc, pmkToLeft, pFileTime)
proc Inverse*(self: ptr IMoniker, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Inverse(self, ppmk)
proc CommonPrefixWith*(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkPrefix: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CommonPrefixWith(self, pmkOther, ppmkPrefix)
proc RelativePathTo*(self: ptr IMoniker, pmkOther: ptr IMoniker, ppmkRelPath: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RelativePathTo(self, pmkOther, ppmkRelPath)
proc GetDisplayName*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, ppszDisplayName: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, pbc, pmkToLeft, ppszDisplayName)
proc ParseDisplayName*(self: ptr IMoniker, pbc: ptr IBindCtx, pmkToLeft: ptr IMoniker, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseDisplayName(self, pbc, pmkToLeft, pszDisplayName, pchEaten, ppmkOut)
proc IsSystemMoniker*(self: ptr IMoniker, pdwMksys: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsSystemMoniker(self, pdwMksys)
proc Next*(self: ptr IEnumSTATSTG, celt: ULONG, rgelt: ptr STATSTG, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumSTATSTG, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumSTATSTG, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc CreateStream*(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStream(self, pwcsName, grfMode, reserved1, reserved2, ppstm)
proc OpenStream*(self: ptr IStorage, pwcsName: ptr OLECHAR, reserved1: pointer, grfMode: DWORD, reserved2: DWORD, ppstm: ptr ptr IStream): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenStream(self, pwcsName, reserved1, grfMode, reserved2, ppstm)
proc CreateStorage*(self: ptr IStorage, pwcsName: ptr OLECHAR, grfMode: DWORD, reserved1: DWORD, reserved2: DWORD, ppstg: ptr ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateStorage(self, pwcsName, grfMode, reserved1, reserved2, ppstg)
proc OpenStorage*(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgPriority: ptr IStorage, grfMode: DWORD, snbExclude: SNB, reserved: DWORD, ppstg: ptr ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OpenStorage(self, pwcsName, pstgPriority, grfMode, snbExclude, reserved, ppstg)
proc CopyTo*(self: ptr IStorage, ciidExclude: DWORD, rgiidExclude: ptr IID, snbExclude: SNB, pstgDest: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CopyTo(self, ciidExclude, rgiidExclude, snbExclude, pstgDest)
proc MoveElementTo*(self: ptr IStorage, pwcsName: ptr OLECHAR, pstgDest: ptr IStorage, pwcsNewName: ptr OLECHAR, grfFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MoveElementTo(self, pwcsName, pstgDest, pwcsNewName, grfFlags)
proc Commit*(self: ptr IStorage, grfCommitFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Commit(self, grfCommitFlags)
proc Revert*(self: ptr IStorage): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Revert(self)
proc EnumElements*(self: ptr IStorage, reserved1: DWORD, reserved2: pointer, reserved3: DWORD, ppenum: ptr ptr IEnumSTATSTG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumElements(self, reserved1, reserved2, reserved3, ppenum)
proc DestroyElement*(self: ptr IStorage, pwcsName: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DestroyElement(self, pwcsName)
proc RenameElement*(self: ptr IStorage, pwcsOldName: ptr OLECHAR, pwcsNewName: ptr OLECHAR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RenameElement(self, pwcsOldName, pwcsNewName)
proc SetElementTimes*(self: ptr IStorage, pwcsName: ptr OLECHAR, pctime: ptr FILETIME, patime: ptr FILETIME, pmtime: ptr FILETIME): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetElementTimes(self, pwcsName, pctime, patime, pmtime)
proc SetClass*(self: ptr IStorage, clsid: REFCLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClass(self, clsid)
proc SetStateBits*(self: ptr IStorage, grfStateBits: DWORD, grfMask: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStateBits(self, grfStateBits, grfMask)
proc Stat*(self: ptr IStorage, pstatstg: ptr STATSTG, grfStatFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stat(self, pstatstg, grfStatFlag)
proc Next*(self: ptr IEnumFORMATETC, celt: ULONG, rgelt: ptr FORMATETC, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumFORMATETC, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumFORMATETC, ppenum: ptr ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc Next*(self: ptr IEnumSTATDATA, celt: ULONG, rgelt: ptr STATDATA, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumSTATDATA, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumSTATDATA, ppenum: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc OnDataChange*(self: ptr IAdviseSink, pFormatetc: ptr FORMATETC, pStgmed: ptr STGMEDIUM): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDataChange(self, pFormatetc, pStgmed)
proc OnViewChange*(self: ptr IAdviseSink, dwAspect: DWORD, lindex: LONG): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnViewChange(self, dwAspect, lindex)
proc OnRename*(self: ptr IAdviseSink, pmk: ptr IMoniker): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnRename(self, pmk)
proc OnSave*(self: ptr IAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSave(self)
proc OnClose*(self: ptr IAdviseSink): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnClose(self)
proc GetData*(self: ptr IDataObject, pformatetcIn: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetData(self, pformatetcIn, pmedium)
proc GetDataHere*(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDataHere(self, pformatetc, pmedium)
proc QueryGetData*(self: ptr IDataObject, pformatetc: ptr FORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryGetData(self, pformatetc)
proc GetCanonicalFormatEtc*(self: ptr IDataObject, pformatectIn: ptr FORMATETC, pformatetcOut: ptr FORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCanonicalFormatEtc(self, pformatectIn, pformatetcOut)
proc SetData*(self: ptr IDataObject, pformatetc: ptr FORMATETC, pmedium: ptr STGMEDIUM, fRelease: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetData(self, pformatetc, pmedium, fRelease)
proc EnumFormatEtc*(self: ptr IDataObject, dwDirection: DWORD, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumFormatEtc(self, dwDirection, ppenumFormatEtc)
proc DAdvise*(self: ptr IDataObject, pformatetc: ptr FORMATETC, advf: DWORD, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DAdvise(self, pformatetc, advf, pAdvSink, pdwConnection)
proc DUnadvise*(self: ptr IDataObject, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DUnadvise(self, dwConnection)
proc EnumDAdvise*(self: ptr IDataObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumDAdvise(self, ppenumAdvise)
proc GetTypeInfoCount*(self: ptr IDispatch, pctinfo: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self, pctinfo)
proc GetTypeInfo*(self: ptr IDispatch, iTInfo: UINT, lcid: LCID, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, iTInfo, lcid, ppTInfo)
proc GetIDsOfNames*(self: ptr IDispatch, riid: REFIID, rgszNames: ptr LPOLESTR, cNames: UINT, lcid: LCID, rgDispId: ptr DISPID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, riid, rgszNames, cNames, lcid, rgDispId)
proc Invoke*(self: ptr IDispatch, dispIdMember: DISPID, riid: REFIID, lcid: LCID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
proc Bind*(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, wFlags: WORD, ppTInfo: ptr ptr ITypeInfo, pDescKind: ptr DESCKIND, pBindPtr: ptr BINDPTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Bind(self, szName, lHashVal, wFlags, ppTInfo, pDescKind, pBindPtr)
proc BindType*(self: ptr ITypeComp, szName: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindType(self, szName, lHashVal, ppTInfo, ppTComp)
proc GetTypeAttr*(self: ptr ITypeInfo, ppTypeAttr: ptr ptr TYPEATTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeAttr(self, ppTypeAttr)
proc GetTypeComp*(self: ptr ITypeInfo, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeComp(self, ppTComp)
proc GetFuncDesc*(self: ptr ITypeInfo, index: UINT, ppFuncDesc: ptr ptr FUNCDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFuncDesc(self, index, ppFuncDesc)
proc GetVarDesc*(self: ptr ITypeInfo, index: UINT, ppVarDesc: ptr ptr VARDESC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetVarDesc(self, index, ppVarDesc)
proc GetNames*(self: ptr ITypeInfo, memid: MEMBERID, rgBstrNames: ptr BSTR, cMaxNames: UINT, pcNames: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetNames(self, memid, rgBstrNames, cMaxNames, pcNames)
proc GetRefTypeOfImplType*(self: ptr ITypeInfo, index: UINT, pRefType: ptr HREFTYPE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRefTypeOfImplType(self, index, pRefType)
proc GetImplTypeFlags*(self: ptr ITypeInfo, index: UINT, pImplTypeFlags: ptr INT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetImplTypeFlags(self, index, pImplTypeFlags)
proc GetIDsOfNames*(self: ptr ITypeInfo, rgszNames: ptr LPOLESTR, cNames: UINT, pMemId: ptr MEMBERID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetIDsOfNames(self, rgszNames, cNames, pMemId)
proc Invoke*(self: ptr ITypeInfo, pvInstance: PVOID, memid: MEMBERID, wFlags: WORD, pDispParams: ptr DISPPARAMS, pVarResult: ptr VARIANT, pExcepInfo: ptr EXCEPINFO, puArgErr: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Invoke(self, pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
proc GetDocumentation*(self: ptr ITypeInfo, memid: MEMBERID, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation(self, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile)
proc GetDllEntry*(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, pBstrDllName: ptr BSTR, pBstrName: ptr BSTR, pwOrdinal: ptr WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDllEntry(self, memid, invKind, pBstrDllName, pBstrName, pwOrdinal)
proc GetRefTypeInfo*(self: ptr ITypeInfo, hRefType: HREFTYPE, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetRefTypeInfo(self, hRefType, ppTInfo)
proc AddressOfMember*(self: ptr ITypeInfo, memid: MEMBERID, invKind: INVOKEKIND, ppv: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddressOfMember(self, memid, invKind, ppv)
proc CreateInstance*(self: ptr ITypeInfo, pUnkOuter: ptr IUnknown, riid: REFIID, ppvObj: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CreateInstance(self, pUnkOuter, riid, ppvObj)
proc GetMops*(self: ptr ITypeInfo, memid: MEMBERID, pBstrMops: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMops(self, memid, pBstrMops)
proc GetContainingTypeLib*(self: ptr ITypeInfo, ppTLib: ptr ptr ITypeLib, pIndex: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainingTypeLib(self, ppTLib, pIndex)
proc ReleaseTypeAttr*(self: ptr ITypeInfo, pTypeAttr: ptr TYPEATTR): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseTypeAttr(self, pTypeAttr)
proc ReleaseFuncDesc*(self: ptr ITypeInfo, pFuncDesc: ptr FUNCDESC): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseFuncDesc(self, pFuncDesc)
proc ReleaseVarDesc*(self: ptr ITypeInfo, pVarDesc: ptr VARDESC): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseVarDesc(self, pVarDesc)
proc GetTypeInfoCount*(self: ptr ITypeLib): UINT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoCount(self)
proc GetTypeInfo*(self: ptr ITypeLib, index: UINT, ppTInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, index, ppTInfo)
proc GetTypeInfoType*(self: ptr ITypeLib, index: UINT, pTKind: ptr TYPEKIND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoType(self, index, pTKind)
proc GetTypeInfoOfGuid*(self: ptr ITypeLib, guid: REFGUID, ppTinfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfoOfGuid(self, guid, ppTinfo)
proc GetLibAttr*(self: ptr ITypeLib, ppTLibAttr: ptr ptr TLIBATTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetLibAttr(self, ppTLibAttr)
proc GetTypeComp*(self: ptr ITypeLib, ppTComp: ptr ptr ITypeComp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeComp(self, ppTComp)
proc GetDocumentation*(self: ptr ITypeLib, index: INT, pBstrName: ptr BSTR, pBstrDocString: ptr BSTR, pdwHelpContext: ptr DWORD, pBstrHelpFile: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDocumentation(self, index, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile)
proc IsName*(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, pfName: ptr WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsName(self, szNameBuf, lHashVal, pfName)
proc FindName*(self: ptr ITypeLib, szNameBuf: LPOLESTR, lHashVal: ULONG, ppTInfo: ptr ptr ITypeInfo, rgMemId: ptr MEMBERID, pcFound: ptr USHORT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindName(self, szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound)
proc ReleaseTLibAttr*(self: ptr ITypeLib, pTLibAttr: ptr TLIBATTR): void {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReleaseTLibAttr(self, pTLibAttr)
proc RecordInit*(self: ptr IRecordInfo, pvNew: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordInit(self, pvNew)
proc RecordClear*(self: ptr IRecordInfo, pvExisting: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordClear(self, pvExisting)
proc RecordCopy*(self: ptr IRecordInfo, pvExisting: PVOID, pvNew: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCopy(self, pvExisting, pvNew)
proc GetGuid*(self: ptr IRecordInfo, pguid: ptr GUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetGuid(self, pguid)
proc GetName*(self: ptr IRecordInfo, pbstrName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetName(self, pbstrName)
proc GetSize*(self: ptr IRecordInfo, pcbSize: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSize(self, pcbSize)
proc GetTypeInfo*(self: ptr IRecordInfo, ppTypeInfo: ptr ptr ITypeInfo): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetTypeInfo(self, ppTypeInfo)
proc GetField*(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetField(self, pvData, szFieldName, pvarField)
proc GetFieldNoCopy*(self: ptr IRecordInfo, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT, ppvDataCArray: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFieldNoCopy(self, pvData, szFieldName, pvarField, ppvDataCArray)
proc PutField*(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutField(self, wFlags, pvData, szFieldName, pvarField)
proc PutFieldNoCopy*(self: ptr IRecordInfo, wFlags: ULONG, pvData: PVOID, szFieldName: LPCOLESTR, pvarField: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutFieldNoCopy(self, wFlags, pvData, szFieldName, pvarField)
proc GetFieldNames*(self: ptr IRecordInfo, pcNames: ptr ULONG, rgBstrNames: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFieldNames(self, pcNames, rgBstrNames)
proc IsMatchingType*(self: ptr IRecordInfo, pRecordInfo: ptr IRecordInfo): WINBOOL {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsMatchingType(self, pRecordInfo)
proc RecordCreate*(self: ptr IRecordInfo): PVOID {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCreate(self)
proc RecordCreateCopy*(self: ptr IRecordInfo, pvSource: PVOID, ppvDest: ptr PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordCreateCopy(self, pvSource, ppvDest)
proc RecordDestroy*(self: ptr IRecordInfo, pvRecord: PVOID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RecordDestroy(self, pvRecord)
proc ParseDisplayName*(self: ptr IParseDisplayName, pbc: ptr IBindCtx, pszDisplayName: LPOLESTR, pchEaten: ptr ULONG, ppmkOut: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ParseDisplayName(self, pbc, pszDisplayName, pchEaten, ppmkOut)
proc EnumObjects*(self: ptr IOleContainer, grfFlags: DWORD, ppenum: ptr ptr IEnumUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumObjects(self, grfFlags, ppenum)
proc LockContainer*(self: ptr IOleContainer, fLock: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.LockContainer(self, fLock)
proc SaveObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SaveObject(self)
proc GetMoniker*(self: ptr IOleClientSite, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
proc GetContainer*(self: ptr IOleClientSite, ppContainer: ptr ptr IOleContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetContainer(self, ppContainer)
proc ShowObject*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowObject(self)
proc OnShowWindow*(self: ptr IOleClientSite, fShow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnShowWindow(self, fShow)
proc RequestNewObjectLayout*(self: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestNewObjectLayout(self)
proc SetClientSite*(self: ptr IOleObject, pClientSite: ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientSite(self, pClientSite)
proc GetClientSite*(self: ptr IOleObject, ppClientSite: ptr ptr IOleClientSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClientSite(self, ppClientSite)
proc SetHostNames*(self: ptr IOleObject, szContainerApp: LPCOLESTR, szContainerObj: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetHostNames(self, szContainerApp, szContainerObj)
proc Close*(self: ptr IOleObject, dwSaveOption: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, dwSaveOption)
proc SetMoniker*(self: ptr IOleObject, dwWhichMoniker: DWORD, pmk: ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMoniker(self, dwWhichMoniker, pmk)
proc GetMoniker*(self: ptr IOleObject, dwAssign: DWORD, dwWhichMoniker: DWORD, ppmk: ptr ptr IMoniker): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMoniker(self, dwAssign, dwWhichMoniker, ppmk)
proc InitFromData*(self: ptr IOleObject, pDataObject: ptr IDataObject, fCreation: WINBOOL, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitFromData(self, pDataObject, fCreation, dwReserved)
proc GetClipboardData*(self: ptr IOleObject, dwReserved: DWORD, ppDataObject: ptr ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetClipboardData(self, dwReserved, ppDataObject)
proc DoVerb*(self: ptr IOleObject, iVerb: LONG, lpmsg: LPMSG, pActiveSite: ptr IOleClientSite, lindex: LONG, hwndParent: HWND, lprcPosRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DoVerb(self, iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect)
proc EnumVerbs*(self: ptr IOleObject, ppEnumOleVerb: ptr ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumVerbs(self, ppEnumOleVerb)
proc Update*(self: ptr IOleObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Update(self)
proc IsUpToDate*(self: ptr IOleObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IsUpToDate(self)
proc GetUserClassID*(self: ptr IOleObject, pClsid: ptr CLSID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserClassID(self, pClsid)
proc GetUserType*(self: ptr IOleObject, dwFormOfType: DWORD, pszUserType: ptr LPOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetUserType(self, dwFormOfType, pszUserType)
proc SetExtent*(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetExtent(self, dwDrawAspect, psizel)
proc GetExtent*(self: ptr IOleObject, dwDrawAspect: DWORD, psizel: ptr SIZEL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExtent(self, dwDrawAspect, psizel)
proc Advise*(self: ptr IOleObject, pAdvSink: ptr IAdviseSink, pdwConnection: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pAdvSink, pdwConnection)
proc Unadvise*(self: ptr IOleObject, dwConnection: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwConnection)
proc EnumAdvise*(self: ptr IOleObject, ppenumAdvise: ptr ptr IEnumSTATDATA): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumAdvise(self, ppenumAdvise)
proc GetMiscStatus*(self: ptr IOleObject, dwAspect: DWORD, pdwStatus: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetMiscStatus(self, dwAspect, pdwStatus)
proc SetColorScheme*(self: ptr IOleObject, pLogpal: ptr LOGPALETTE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetColorScheme(self, pLogpal)
proc GetWindow*(self: ptr IOleWindow, phwnd: ptr HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindow(self, phwnd)
proc ContextSensitiveHelp*(self: ptr IOleWindow, fEnterMode: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ContextSensitiveHelp(self, fEnterMode)
proc GetBorder*(self: ptr IOleInPlaceUIWindow, lprectBorder: LPRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetBorder(self, lprectBorder)
proc RequestBorderSpace*(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestBorderSpace(self, pborderwidths)
proc SetBorderSpace*(self: ptr IOleInPlaceUIWindow, pborderwidths: LPCBORDERWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetBorderSpace(self, pborderwidths)
proc SetActiveObject*(self: ptr IOleInPlaceUIWindow, pActiveObject: ptr IOleInPlaceActiveObject, pszObjName: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActiveObject(self, pActiveObject, pszObjName)
proc TranslateAccelerator*(self: ptr IOleInPlaceActiveObject, lpmsg: LPMSG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpmsg)
proc OnFrameWindowActivate*(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFrameWindowActivate(self, fActivate)
proc OnDocWindowActivate*(self: ptr IOleInPlaceActiveObject, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDocWindowActivate(self, fActivate)
proc ResizeBorder*(self: ptr IOleInPlaceActiveObject, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fFrameWindow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fFrameWindow)
proc EnableModeless*(self: ptr IOleInPlaceActiveObject, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
proc InsertMenus*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, lpMenuWidths: LPOLEMENUGROUPWIDTHS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InsertMenus(self, hmenuShared, lpMenuWidths)
proc SetMenu*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU, holemenu: HOLEMENU, hwndActiveObject: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetMenu(self, hmenuShared, holemenu, hwndActiveObject)
proc RemoveMenus*(self: ptr IOleInPlaceFrame, hmenuShared: HMENU): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RemoveMenus(self, hmenuShared)
proc SetStatusText*(self: ptr IOleInPlaceFrame, pszStatusText: LPCOLESTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetStatusText(self, pszStatusText)
proc EnableModeless*(self: ptr IOleInPlaceFrame, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
proc TranslateAccelerator*(self: ptr IOleInPlaceFrame, lpmsg: LPMSG, wID: WORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpmsg, wID)
proc InPlaceDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InPlaceDeactivate(self)
proc UIDeactivate*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UIDeactivate(self)
proc SetObjectRects*(self: ptr IOleInPlaceObject, lprcPosRect: LPCRECT, lprcClipRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetObjectRects(self, lprcPosRect, lprcClipRect)
proc ReactivateAndUndo*(self: ptr IOleInPlaceObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ReactivateAndUndo(self)
proc CanInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.CanInPlaceActivate(self)
proc OnInPlaceActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceActivate(self)
proc OnUIActivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnUIActivate(self)
proc GetWindowContext*(self: ptr IOleInPlaceSite, ppFrame: ptr ptr IOleInPlaceFrame, ppDoc: ptr ptr IOleInPlaceUIWindow, lprcPosRect: LPRECT, lprcClipRect: LPRECT, lpFrameInfo: LPOLEINPLACEFRAMEINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetWindowContext(self, ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo)
proc Scroll*(self: ptr IOleInPlaceSite, scrollExtant: SIZE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Scroll(self, scrollExtant)
proc OnUIDeactivate*(self: ptr IOleInPlaceSite, fUndoable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnUIDeactivate(self, fUndoable)
proc OnInPlaceDeactivate*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceDeactivate(self)
proc DiscardUndoState*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DiscardUndoState(self)
proc DeactivateAndUndo*(self: ptr IOleInPlaceSite): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeactivateAndUndo(self)
proc OnPosRectChange*(self: ptr IOleInPlaceSite, lprcPosRect: LPCRECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnPosRectChange(self, lprcPosRect)
proc QueryContinueDrag*(self: ptr IDropSource, fEscapePressed: WINBOOL, grfKeyState: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryContinueDrag(self, fEscapePressed, grfKeyState)
proc GiveFeedback*(self: ptr IDropSource, dwEffect: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GiveFeedback(self, dwEffect)
proc DragEnter*(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragEnter(self, pDataObj, grfKeyState, pt, pdwEffect)
proc DragOver*(self: ptr IDropTarget, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragOver(self, grfKeyState, pt, pdwEffect)
proc DragLeave*(self: ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DragLeave(self)
proc Drop*(self: ptr IDropTarget, pDataObj: ptr IDataObject, grfKeyState: DWORD, pt: POINTL, pdwEffect: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Drop(self, pDataObj, grfKeyState, pt, pdwEffect)
proc Next*(self: ptr IEnumOLEVERB, celt: ULONG, rgelt: LPOLEVERB, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumOLEVERB, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumOLEVERB, ppenum: ptr ptr IEnumOLEVERB): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc Next*(self: ptr IEnumConnections, cConnections: ULONG, rgcd: LPCONNECTDATA, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cConnections, rgcd, pcFetched)
proc Skip*(self: ptr IEnumConnections, cConnections: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cConnections)
proc Reset*(self: ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumConnections, ppEnum: ptr ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
proc GetConnectionInterface*(self: ptr IConnectionPoint, pIID: ptr IID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConnectionInterface(self, pIID)
proc GetConnectionPointContainer*(self: ptr IConnectionPoint, ppCPC: ptr ptr IConnectionPointContainer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetConnectionPointContainer(self, ppCPC)
proc Advise*(self: ptr IConnectionPoint, pUnkSink: ptr IUnknown, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pUnkSink, pdwCookie)
proc Unadvise*(self: ptr IConnectionPoint, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
proc EnumConnections*(self: ptr IConnectionPoint, ppEnum: ptr ptr IEnumConnections): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumConnections(self, ppEnum)
proc Next*(self: ptr IEnumConnectionPoints, cConnections: ULONG, ppCP: ptr LPCONNECTIONPOINT, pcFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, cConnections, ppCP, pcFetched)
proc Skip*(self: ptr IEnumConnectionPoints, cConnections: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, cConnections)
proc Reset*(self: ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumConnectionPoints, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppEnum)
proc EnumConnectionPoints*(self: ptr IConnectionPointContainer, ppEnum: ptr ptr IEnumConnectionPoints): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumConnectionPoints(self, ppEnum)
proc FindConnectionPoint*(self: ptr IConnectionPointContainer, riid: REFIID, ppCP: ptr ptr IConnectionPoint): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FindConnectionPoint(self, riid, ppCP)
proc OnInPlaceActivateEx*(self: ptr IOleInPlaceSiteEx, pfNoRedraw: ptr WINBOOL, dwFlags: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceActivateEx(self, pfNoRedraw, dwFlags)
proc OnInPlaceDeactivateEx*(self: ptr IOleInPlaceSiteEx, fNoRedraw: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnInPlaceDeactivateEx(self, fNoRedraw)
proc RequestUIActivate*(self: ptr IOleInPlaceSiteEx): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RequestUIActivate(self)
proc SetSite*(self: ptr IObjectWithSite, pUnkSite: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetSite(self, pUnkSite)
proc GetSite*(self: ptr IObjectWithSite, riid: REFIID, ppvSite: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSite(self, riid, ppvSite)
proc QueryStatus*(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, cCmds: ULONG, prgCmds: ptr OLECMD, pCmdText: ptr OLECMDTEXT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryStatus(self, pguidCmdGroup, cCmds, prgCmds, pCmdText)
proc Exec*(self: ptr IOleCommandTarget, pguidCmdGroup: ptr GUID, nCmdID: DWORD, nCmdexecopt: DWORD, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Exec(self, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut)
proc GoBack*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoBack(self)
proc GoForward*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoForward(self)
proc GoHome*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoHome(self)
proc GoSearch*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GoSearch(self)
proc Navigate*(self: ptr IWebBrowser, URL: BSTR, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate(self, URL, Flags, TargetFrameName, PostData, Headers)
proc Refresh*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Refresh(self)
proc Refresh2*(self: ptr IWebBrowser, Level: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Refresh2(self, Level)
proc Stop*(self: ptr IWebBrowser): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Stop(self)
proc get_Application*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Application(self, ppDisp)
proc get_Parent*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Parent(self, ppDisp)
proc get_Container*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Container(self, ppDisp)
proc get_Document*(self: ptr IWebBrowser, ppDisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Document(self, ppDisp)
proc get_TopLevelContainer*(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TopLevelContainer(self, pBool)
proc get_Type*(self: ptr IWebBrowser, Type: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Type(self, Type)
proc get_Left*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Left(self, pl)
proc put_Left*(self: ptr IWebBrowser, Left: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Left(self, Left)
proc get_Top*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Top(self, pl)
proc put_Top*(self: ptr IWebBrowser, Top: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Top(self, Top)
proc get_Width*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Width(self, pl)
proc put_Width*(self: ptr IWebBrowser, Width: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Width(self, Width)
proc get_Height*(self: ptr IWebBrowser, pl: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Height(self, pl)
proc put_Height*(self: ptr IWebBrowser, Height: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Height(self, Height)
proc get_LocationName*(self: ptr IWebBrowser, LocationName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LocationName(self, LocationName)
proc get_LocationURL*(self: ptr IWebBrowser, LocationURL: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_LocationURL(self, LocationURL)
proc get_Busy*(self: ptr IWebBrowser, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Busy(self, pBool)
proc Quit*(self: ptr IWebBrowserApp): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Quit(self)
proc ClientToWindow*(self: ptr IWebBrowserApp, pcx: ptr int32, pcy: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClientToWindow(self, pcx, pcy)
proc PutProperty*(self: ptr IWebBrowserApp, Property: BSTR, vtValue: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.PutProperty(self, Property, vtValue)
proc GetProperty*(self: ptr IWebBrowserApp, Property: BSTR, pvtValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetProperty(self, Property, pvtValue)
proc get_Name*(self: ptr IWebBrowserApp, Name: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Name(self, Name)
proc get_HWND*(self: ptr IWebBrowserApp, pHWND: ptr SHANDLE_PTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_HWND(self, pHWND)
proc get_FullName*(self: ptr IWebBrowserApp, FullName: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullName(self, FullName)
proc get_Path*(self: ptr IWebBrowserApp, Path: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Path(self, Path)
proc get_Visible*(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Visible(self, pBool)
proc put_Visible*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Visible(self, Value)
proc get_StatusBar*(self: ptr IWebBrowserApp, pBool: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StatusBar(self, pBool)
proc put_StatusBar*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_StatusBar(self, Value)
proc get_StatusText*(self: ptr IWebBrowserApp, StatusText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_StatusText(self, StatusText)
proc put_StatusText*(self: ptr IWebBrowserApp, StatusText: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_StatusText(self, StatusText)
proc get_ToolBar*(self: ptr IWebBrowserApp, Value: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ToolBar(self, Value)
proc put_ToolBar*(self: ptr IWebBrowserApp, Value: int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ToolBar(self, Value)
proc get_MenuBar*(self: ptr IWebBrowserApp, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_MenuBar(self, Value)
proc put_MenuBar*(self: ptr IWebBrowserApp, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_MenuBar(self, Value)
proc get_FullScreen*(self: ptr IWebBrowserApp, pbFullScreen: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_FullScreen(self, pbFullScreen)
proc put_FullScreen*(self: ptr IWebBrowserApp, bFullScreen: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_FullScreen(self, bFullScreen)
proc Navigate2*(self: ptr IWebBrowser2, URL: ptr VARIANT, Flags: ptr VARIANT, TargetFrameName: ptr VARIANT, PostData: ptr VARIANT, Headers: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Navigate2(self, URL, Flags, TargetFrameName, PostData, Headers)
proc QueryStatusWB*(self: ptr IWebBrowser2, cmdID: OLECMDID, pcmdf: ptr OLECMDF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.QueryStatusWB(self, cmdID, pcmdf)
proc ExecWB*(self: ptr IWebBrowser2, cmdID: OLECMDID, cmdexecopt: OLECMDEXECOPT, pvaIn: ptr VARIANT, pvaOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ExecWB(self, cmdID, cmdexecopt, pvaIn, pvaOut)
proc ShowBrowserBar*(self: ptr IWebBrowser2, pvaClsid: ptr VARIANT, pvarShow: ptr VARIANT, pvarSize: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowBrowserBar(self, pvaClsid, pvarShow, pvarSize)
proc get_ReadyState*(self: ptr IWebBrowser2, plReadyState: ptr READYSTATE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ReadyState(self, plReadyState)
proc get_Offline*(self: ptr IWebBrowser2, pbOffline: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Offline(self, pbOffline)
proc put_Offline*(self: ptr IWebBrowser2, bOffline: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Offline(self, bOffline)
proc get_Silent*(self: ptr IWebBrowser2, pbSilent: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Silent(self, pbSilent)
proc put_Silent*(self: ptr IWebBrowser2, bSilent: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Silent(self, bSilent)
proc get_RegisterAsBrowser*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RegisterAsBrowser(self, pbRegister)
proc put_RegisterAsBrowser*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_RegisterAsBrowser(self, bRegister)
proc get_RegisterAsDropTarget*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_RegisterAsDropTarget(self, pbRegister)
proc put_RegisterAsDropTarget*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_RegisterAsDropTarget(self, bRegister)
proc get_TheaterMode*(self: ptr IWebBrowser2, pbRegister: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_TheaterMode(self, pbRegister)
proc put_TheaterMode*(self: ptr IWebBrowser2, bRegister: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_TheaterMode(self, bRegister)
proc get_AddressBar*(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_AddressBar(self, Value)
proc put_AddressBar*(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_AddressBar(self, Value)
proc get_Resizable*(self: ptr IWebBrowser2, Value: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Resizable(self, Value)
proc put_Resizable*(self: ptr IWebBrowser2, Value: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_Resizable(self, Value)
converter winimConverterIEnumUnknownToIUnknown*(x: ptr IEnumUnknown): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumStringToIUnknown*(x: ptr IEnumString): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterISequentialStreamToIUnknown*(x: ptr ISequentialStream): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIStreamToISequentialStream*(x: ptr IStream): ptr ISequentialStream = cast[ptr ISequentialStream](x)
converter winimConverterIStreamToIUnknown*(x: ptr IStream): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIBindCtxToIUnknown*(x: ptr IBindCtx): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumMonikerToIUnknown*(x: ptr IEnumMoniker): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIRunningObjectTableToIUnknown*(x: ptr IRunningObjectTable): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIPersistToIUnknown*(x: ptr IPersist): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIPersistStreamToIPersist*(x: ptr IPersistStream): ptr IPersist = cast[ptr IPersist](x)
converter winimConverterIPersistStreamToIUnknown*(x: ptr IPersistStream): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIMonikerToIPersistStream*(x: ptr IMoniker): ptr IPersistStream = cast[ptr IPersistStream](x)
converter winimConverterIMonikerToIPersist*(x: ptr IMoniker): ptr IPersist = cast[ptr IPersist](x)
converter winimConverterIMonikerToIUnknown*(x: ptr IMoniker): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumSTATSTGToIUnknown*(x: ptr IEnumSTATSTG): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIStorageToIUnknown*(x: ptr IStorage): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumFORMATETCToIUnknown*(x: ptr IEnumFORMATETC): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumSTATDATAToIUnknown*(x: ptr IEnumSTATDATA): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIAdviseSinkToIUnknown*(x: ptr IAdviseSink): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIDataObjectToIUnknown*(x: ptr IDataObject): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIDispatchToIUnknown*(x: ptr IDispatch): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITypeCompToIUnknown*(x: ptr ITypeComp): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITypeInfoToIUnknown*(x: ptr ITypeInfo): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITypeLibToIUnknown*(x: ptr ITypeLib): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIRecordInfoToIUnknown*(x: ptr IRecordInfo): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIParseDisplayNameToIUnknown*(x: ptr IParseDisplayName): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleContainerToIParseDisplayName*(x: ptr IOleContainer): ptr IParseDisplayName = cast[ptr IParseDisplayName](x)
converter winimConverterIOleContainerToIUnknown*(x: ptr IOleContainer): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleClientSiteToIUnknown*(x: ptr IOleClientSite): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleObjectToIUnknown*(x: ptr IOleObject): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleWindowToIUnknown*(x: ptr IOleWindow): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceUIWindowToIOleWindow*(x: ptr IOleInPlaceUIWindow): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceUIWindowToIUnknown*(x: ptr IOleInPlaceUIWindow): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceActiveObjectToIOleWindow*(x: ptr IOleInPlaceActiveObject): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceActiveObjectToIUnknown*(x: ptr IOleInPlaceActiveObject): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceFrameToIOleInPlaceUIWindow*(x: ptr IOleInPlaceFrame): ptr IOleInPlaceUIWindow = cast[ptr IOleInPlaceUIWindow](x)
converter winimConverterIOleInPlaceFrameToIOleWindow*(x: ptr IOleInPlaceFrame): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceFrameToIUnknown*(x: ptr IOleInPlaceFrame): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceObjectToIOleWindow*(x: ptr IOleInPlaceObject): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceObjectToIUnknown*(x: ptr IOleInPlaceObject): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceSiteToIOleWindow*(x: ptr IOleInPlaceSite): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceSiteToIUnknown*(x: ptr IOleInPlaceSite): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIDropSourceToIUnknown*(x: ptr IDropSource): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIDropTargetToIUnknown*(x: ptr IDropTarget): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumOLEVERBToIUnknown*(x: ptr IEnumOLEVERB): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumConnectionsToIUnknown*(x: ptr IEnumConnections): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIConnectionPointToIUnknown*(x: ptr IConnectionPoint): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumConnectionPointsToIUnknown*(x: ptr IEnumConnectionPoints): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIConnectionPointContainerToIUnknown*(x: ptr IConnectionPointContainer): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleInPlaceSiteExToIOleInPlaceSite*(x: ptr IOleInPlaceSiteEx): ptr IOleInPlaceSite = cast[ptr IOleInPlaceSite](x)
converter winimConverterIOleInPlaceSiteExToIOleWindow*(x: ptr IOleInPlaceSiteEx): ptr IOleWindow = cast[ptr IOleWindow](x)
converter winimConverterIOleInPlaceSiteExToIUnknown*(x: ptr IOleInPlaceSiteEx): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIObjectWithSiteToIUnknown*(x: ptr IObjectWithSite): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOleCommandTargetToIUnknown*(x: ptr IOleCommandTarget): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIWebBrowserToIDispatch*(x: ptr IWebBrowser): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIWebBrowserToIUnknown*(x: ptr IWebBrowser): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIWebBrowserAppToIWebBrowser*(x: ptr IWebBrowserApp): ptr IWebBrowser = cast[ptr IWebBrowser](x)
converter winimConverterIWebBrowserAppToIDispatch*(x: ptr IWebBrowserApp): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIWebBrowserAppToIUnknown*(x: ptr IWebBrowserApp): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIWebBrowser2ToIWebBrowserApp*(x: ptr IWebBrowser2): ptr IWebBrowserApp = cast[ptr IWebBrowserApp](x)
converter winimConverterIWebBrowser2ToIWebBrowser*(x: ptr IWebBrowser2): ptr IWebBrowser = cast[ptr IWebBrowser](x)
converter winimConverterIWebBrowser2ToIDispatch*(x: ptr IWebBrowser2): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIWebBrowser2ToIUnknown*(x: ptr IWebBrowser2): ptr IUnknown = cast[ptr IUnknown](x)
type
HIMAGELIST* = HANDLE
HPROPSHEETPAGE* = HANDLE
HTREEITEM* = HANDLE
TINITCOMMONCONTROLSEX* {.pure.} = object
dwSize*: DWORD
dwICC*: DWORD
NMMOUSE* {.pure.} = object
hdr*: NMHDR
dwItemSpec*: DWORD_PTR
dwItemData*: DWORD_PTR
pt*: POINT
dwHitInfo*: LPARAM
LPNMMOUSE* = ptr NMMOUSE
TNMCUSTOMDRAW* {.pure.} = object
hdr*: NMHDR
dwDrawStage*: DWORD
hdc*: HDC
rc*: RECT
dwItemSpec*: DWORD_PTR
uItemState*: UINT
lItemlParam*: LPARAM
IMAGEINFO* {.pure.} = object
hbmImage*: HBITMAP
hbmMask*: HBITMAP
Unused1*: int32
Unused2*: int32
rcImage*: RECT
HDITEMA* {.pure.} = object
mask*: UINT
cxy*: int32
pszText*: LPSTR
hbm*: HBITMAP
cchTextMax*: int32
fmt*: int32
lParam*: LPARAM
iImage*: int32
iOrder*: int32
`type`*: UINT
pvFilter*: pointer
state*: UINT
HDITEMW* {.pure.} = object
mask*: UINT
cxy*: int32
pszText*: LPWSTR
hbm*: HBITMAP
cchTextMax*: int32
fmt*: int32
lParam*: LPARAM
iImage*: int32
iOrder*: int32
`type`*: UINT
pvFilter*: pointer
state*: UINT
HDHITTESTINFO* {.pure.} = object
pt*: POINT
flags*: UINT
iItem*: int32
NMHEADERA* {.pure.} = object
hdr*: NMHDR
iItem*: int32
iButton*: int32
pitem*: ptr HDITEMA
NMHEADERW* {.pure.} = object
hdr*: NMHDR
iItem*: int32
iButton*: int32
pitem*: ptr HDITEMW
LPNMHEADERA* = ptr NMHEADERA
LPNMHEADERW* = ptr NMHEADERW
when winimCpu64:
type
TBBUTTON* {.pure.} = object
iBitmap*: int32
idCommand*: int32
fsState*: BYTE
fsStyle*: BYTE
bReserved*: array[6, BYTE]
dwData*: DWORD_PTR
iString*: INT_PTR
when winimCpu32:
type
TBBUTTON* {.pure.} = object
iBitmap*: int32
idCommand*: int32
fsState*: BYTE
fsStyle*: BYTE
bReserved*: array[2, BYTE]
dwData*: DWORD_PTR
iString*: INT_PTR
type
NMTBCUSTOMDRAW* {.pure.} = object
nmcd*: TNMCUSTOMDRAW
hbrMonoDither*: HBRUSH
hbrLines*: HBRUSH
hpenLines*: HPEN
clrText*: COLORREF
clrMark*: COLORREF
clrTextHighlight*: COLORREF
clrBtnFace*: COLORREF
clrBtnHighlight*: COLORREF
clrHighlightHotTrack*: COLORREF
rcText*: RECT
nStringBkMode*: int32
nHLStringBkMode*: int32
iListGap*: int32
LPNMTBCUSTOMDRAW* = ptr NMTBCUSTOMDRAW
TTBADDBITMAP* {.pure.} = object
hInst*: HINSTANCE
nID*: UINT_PTR
TBBUTTONINFOA* {.pure.} = object
cbSize*: UINT
dwMask*: DWORD
idCommand*: int32
iImage*: int32
fsState*: BYTE
fsStyle*: BYTE
cx*: WORD
lParam*: DWORD_PTR
pszText*: LPSTR
cchText*: int32
TBBUTTONINFOW* {.pure.} = object
cbSize*: UINT
dwMask*: DWORD
idCommand*: int32
iImage*: int32
fsState*: BYTE
fsStyle*: BYTE
cx*: WORD
lParam*: DWORD_PTR
pszText*: LPWSTR
cchText*: int32
NMTBHOTITEM* {.pure.} = object
hdr*: NMHDR
idOld*: int32
idNew*: int32
dwFlags*: DWORD
LPNMTBHOTITEM* = ptr NMTBHOTITEM
NMTOOLBARA* {.pure.} = object
hdr*: NMHDR
iItem*: int32
tbButton*: TBBUTTON
cchText*: int32
pszText*: LPSTR
rcButton*: RECT
NMTOOLBARW* {.pure.} = object
hdr*: NMHDR
iItem*: int32
tbButton*: TBBUTTON
cchText*: int32
pszText*: LPWSTR
rcButton*: RECT
LPNMTOOLBARA* = ptr NMTOOLBARA
LPNMTOOLBARW* = ptr NMTOOLBARW
when winimUnicode:
type
LPNMTOOLBAR* = LPNMTOOLBARW
when winimAnsi:
type
LPNMTOOLBAR* = LPNMTOOLBARA
type
REBARINFO* {.pure.} = object
cbSize*: UINT
fMask*: UINT
himl*: HIMAGELIST
REBARBANDINFOA* {.pure.} = object
cbSize*: UINT
fMask*: UINT
fStyle*: UINT
clrFore*: COLORREF
clrBack*: COLORREF
lpText*: LPSTR
cch*: UINT
iImage*: int32
hwndChild*: HWND
cxMinChild*: UINT
cyMinChild*: UINT
cx*: UINT
hbmBack*: HBITMAP
wID*: UINT
cyChild*: UINT
cyMaxChild*: UINT
cyIntegral*: UINT
cxIdeal*: UINT
lParam*: LPARAM
cxHeader*: UINT
rcChevronLocation*: RECT
uChevronState*: UINT
REBARBANDINFOW* {.pure.} = object
cbSize*: UINT
fMask*: UINT
fStyle*: UINT
clrFore*: COLORREF
clrBack*: COLORREF
lpText*: LPWSTR
cch*: UINT
iImage*: int32
hwndChild*: HWND
cxMinChild*: UINT
cyMinChild*: UINT
cx*: UINT
hbmBack*: HBITMAP
wID*: UINT
cyChild*: UINT
cyMaxChild*: UINT
cyIntegral*: UINT
cxIdeal*: UINT
lParam*: LPARAM
cxHeader*: UINT
rcChevronLocation*: RECT
uChevronState*: UINT
RBHITTESTINFO* {.pure.} = object
pt*: POINT
flags*: UINT
iBand*: int32
TTTOOLINFOA* {.pure.} = object
cbSize*: UINT
uFlags*: UINT
hwnd*: HWND
uId*: UINT_PTR
rect*: RECT
hinst*: HINSTANCE
lpszText*: LPSTR
lParam*: LPARAM
lpReserved*: pointer
TTTOOLINFOW* {.pure.} = object
cbSize*: UINT
uFlags*: UINT
hwnd*: HWND
uId*: UINT_PTR
rect*: RECT
hinst*: HINSTANCE
lpszText*: LPWSTR
lParam*: LPARAM
lpReserved*: pointer
NMTTDISPINFOW* {.pure.} = object
hdr*: NMHDR
lpszText*: LPWSTR
szText*: array[80, WCHAR]
hinst*: HINSTANCE
uFlags*: UINT
lParam*: LPARAM
NMTTDISPINFOA* {.pure.} = object
hdr*: NMHDR
lpszText*: LPSTR
szText*: array[80, char]
hinst*: HINSTANCE
uFlags*: UINT
lParam*: LPARAM
LPNMTTDISPINFOA* = ptr NMTTDISPINFOA
LPNMTTDISPINFOW* = ptr NMTTDISPINFOW
when winimUnicode:
type
LPNMTTDISPINFO* = LPNMTTDISPINFOW
when winimAnsi:
type
LPNMTTDISPINFO* = LPNMTTDISPINFOA
type
NMUPDOWN* {.pure.} = object
hdr*: NMHDR
iPos*: int32
iDelta*: int32
LPNMUPDOWN* = ptr NMUPDOWN
const
MAX_LINKID_TEXT* = 48
L_MAX_URL_LENGTH* = 2084
type
LITEM* {.pure.} = object
mask*: UINT
iLink*: int32
state*: UINT
stateMask*: UINT
szID*: array[MAX_LINKID_TEXT, WCHAR]
szUrl*: array[L_MAX_URL_LENGTH, WCHAR]
NMLINK* {.pure.} = object
hdr*: NMHDR
item*: LITEM
PNMLINK* = ptr NMLINK
LVITEMA* {.pure.} = object
mask*: UINT
iItem*: int32
iSubItem*: int32
state*: UINT
stateMask*: UINT
pszText*: LPSTR
cchTextMax*: int32
iImage*: int32
lParam*: LPARAM
iIndent*: int32
iGroupId*: int32
cColumns*: UINT
puColumns*: PUINT
piColFmt*: ptr int32
iGroup*: int32
LVITEMW* {.pure.} = object
mask*: UINT
iItem*: int32
iSubItem*: int32
state*: UINT
stateMask*: UINT
pszText*: LPWSTR
cchTextMax*: int32
iImage*: int32
lParam*: LPARAM
iIndent*: int32
iGroupId*: int32
cColumns*: UINT
puColumns*: PUINT
piColFmt*: ptr int32
iGroup*: int32
LVFINDINFOA* {.pure.} = object
flags*: UINT
psz*: LPCSTR
lParam*: LPARAM
pt*: POINT
vkDirection*: UINT
LVFINDINFOW* {.pure.} = object
flags*: UINT
psz*: LPCWSTR
lParam*: LPARAM
pt*: POINT
vkDirection*: UINT
LVHITTESTINFO* {.pure.} = object
pt*: POINT
flags*: UINT
iItem*: int32
iSubItem*: int32
iGroup*: int32
LVCOLUMNA* {.pure.} = object
mask*: UINT
fmt*: int32
cx*: int32
pszText*: LPSTR
cchTextMax*: int32
iSubItem*: int32
iImage*: int32
iOrder*: int32
cxMin*: int32
cxDefault*: int32
cxIdeal*: int32
LVCOLUMNW* {.pure.} = object
mask*: UINT
fmt*: int32
cx*: int32
pszText*: LPWSTR
cchTextMax*: int32
iSubItem*: int32
iImage*: int32
iOrder*: int32
cxMin*: int32
cxDefault*: int32
cxIdeal*: int32
NMLISTVIEW* {.pure.} = object
hdr*: NMHDR
iItem*: int32
iSubItem*: int32
uNewState*: UINT
uOldState*: UINT
uChanged*: UINT
ptAction*: POINT
lParam*: LPARAM
LPNMLISTVIEW* = ptr NMLISTVIEW
NMITEMACTIVATE* {.pure.} = object
hdr*: NMHDR
iItem*: int32
iSubItem*: int32
uNewState*: UINT
uOldState*: UINT
uChanged*: UINT
ptAction*: POINT
lParam*: LPARAM
uKeyFlags*: UINT
LPNMITEMACTIVATE* = ptr NMITEMACTIVATE
NMLVDISPINFOA* {.pure.} = object
hdr*: NMHDR
item*: LVITEMA
NMLVDISPINFOW* {.pure.} = object
hdr*: NMHDR
item*: LVITEMW
LPNMLVDISPINFOA* = ptr NMLVDISPINFOA
LPNMLVDISPINFOW* = ptr NMLVDISPINFOW
TVITEMA* {.pure.} = object
mask*: UINT
hItem*: HTREEITEM
state*: UINT
stateMask*: UINT
pszText*: LPSTR
cchTextMax*: int32
iImage*: int32
iSelectedImage*: int32
cChildren*: int32
lParam*: LPARAM
LPTVITEMA* = ptr TVITEMA
TVITEMW* {.pure.} = object
mask*: UINT
hItem*: HTREEITEM
state*: UINT
stateMask*: UINT
pszText*: LPWSTR
cchTextMax*: int32
iImage*: int32
iSelectedImage*: int32
cChildren*: int32
lParam*: LPARAM
LPTVITEMW* = ptr TVITEMW
TVITEMEXA* {.pure.} = object
mask*: UINT
hItem*: HTREEITEM
state*: UINT
stateMask*: UINT
pszText*: LPSTR
cchTextMax*: int32
iImage*: int32
iSelectedImage*: int32
cChildren*: int32
lParam*: LPARAM
iIntegral*: int32
uStateEx*: UINT
hwnd*: HWND
iExpandedImage*: int32
iReserved*: int32
TVITEMEXW* {.pure.} = object
mask*: UINT
hItem*: HTREEITEM
state*: UINT
stateMask*: UINT
pszText*: LPWSTR
cchTextMax*: int32
iImage*: int32
iSelectedImage*: int32
cChildren*: int32
lParam*: LPARAM
iIntegral*: int32
uStateEx*: UINT
hwnd*: HWND
iExpandedImage*: int32
iReserved*: int32
TVINSERTSTRUCTA_UNION1* {.pure, union.} = object
itemex*: TVITEMEXA
item*: TV_ITEMA
TVINSERTSTRUCTA* {.pure.} = object
hParent*: HTREEITEM
hInsertAfter*: HTREEITEM
union1*: TVINSERTSTRUCTA_UNION1
TVINSERTSTRUCTW_UNION1* {.pure, union.} = object
itemex*: TVITEMEXW
item*: TV_ITEMW
TVINSERTSTRUCTW* {.pure.} = object
hParent*: HTREEITEM
hInsertAfter*: HTREEITEM
union1*: TVINSERTSTRUCTW_UNION1
TVHITTESTINFO* {.pure.} = object
pt*: POINT
flags*: UINT
hItem*: HTREEITEM
LPTVHITTESTINFO* = ptr TVHITTESTINFO
PFNTVCOMPARE* = proc (lParam1: LPARAM, lParam2: LPARAM, lParamSort: LPARAM): int32 {.stdcall.}
TVSORTCB* {.pure.} = object
hParent*: HTREEITEM
lpfnCompare*: PFNTVCOMPARE
lParam*: LPARAM
LPTVSORTCB* = ptr TVSORTCB
NMTREEVIEWA* {.pure.} = object
hdr*: NMHDR
action*: UINT
itemOld*: TVITEMA
itemNew*: TVITEMA
ptDrag*: POINT
LPNMTREEVIEWA* = ptr NMTREEVIEWA
NMTREEVIEWW* {.pure.} = object
hdr*: NMHDR
action*: UINT
itemOld*: TVITEMW
itemNew*: TVITEMW
ptDrag*: POINT
LPNMTREEVIEWW* = ptr NMTREEVIEWW
NMTVDISPINFOA* {.pure.} = object
hdr*: NMHDR
item*: TVITEMA
NMTVDISPINFOW* {.pure.} = object
hdr*: NMHDR
item*: TVITEMW
LPNMTVDISPINFOA* = ptr NMTVDISPINFOA
LPNMTVDISPINFOW* = ptr NMTVDISPINFOW
TCITEMA* {.pure.} = object
mask*: UINT
dwState*: DWORD
dwStateMask*: DWORD
pszText*: LPSTR
cchTextMax*: int32
iImage*: int32
lParam*: LPARAM
TCITEMW* {.pure.} = object
mask*: UINT
dwState*: DWORD
dwStateMask*: DWORD
pszText*: LPWSTR
cchTextMax*: int32
iImage*: int32
lParam*: LPARAM
NMIPADDRESS* {.pure.} = object
hdr*: NMHDR
iField*: int32
iValue*: int32
LPNMIPADDRESS* = ptr NMIPADDRESS
BUTTON_IMAGELIST* {.pure.} = object
himl*: HIMAGELIST
margin*: RECT
uAlign*: UINT
NMBCHOTITEM* {.pure.} = object
hdr*: NMHDR
dwFlags*: DWORD
LPNMBCHOTITEM* = ptr NMBCHOTITEM
NMBCDROPDOWN* {.pure.} = object
hdr*: NMHDR
rcButton*: RECT
LPNMBCDROPDOWN* = ptr NMBCDROPDOWN
when winimUnicode:
type
TTTOOLINFO* = TTTOOLINFOW
when winimAnsi:
type
TTTOOLINFO* = TTTOOLINFOA
type
TOOLINFO* = TTTOOLINFO
const
ICC_LISTVIEW_CLASSES* = 0x1
ICC_BAR_CLASSES* = 0x4
ICC_DATE_CLASSES* = 0x100
ICC_COOL_CLASSES* = 0x400
ICC_INTERNET_CLASSES* = 0x800
ICC_LINK_CLASS* = 0x8000
LVM_FIRST* = 0x1000
TV_FIRST* = 0x1100
HDM_FIRST* = 0x1200
TCM_FIRST* = 0x1300
ECM_FIRST* = 0x1500
BCM_FIRST* = 0x1600
NM_FIRST* = 0-0
NM_CLICK* = NM_FIRST-2
NM_DBLCLK* = NM_FIRST-3
NM_RETURN* = NM_FIRST-4
NM_RCLICK* = NM_FIRST-5
NM_RDBLCLK* = NM_FIRST-6
NM_SETFOCUS* = NM_FIRST-7
NM_KILLFOCUS* = NM_FIRST-8
NM_CUSTOMDRAW* = NM_FIRST-12
LVN_FIRST* = 0-100
HDN_FIRST* = 0-300
TVN_FIRST* = 0-400
TTN_FIRST* = 0-520
TCN_FIRST* = 0-550
TBN_FIRST* = 0-700
UDN_FIRST* = 0-721
MCN_FIRST* = 0-746
DTN_FIRST2* = 0-753
RBN_FIRST* = 0-831
IPN_FIRST* = 0-860
BCN_FIRST* = 0-1250
CDRF_DODEFAULT* = 0x0
CDRF_SKIPDEFAULT* = 0x4
CDRF_NOTIFYITEMDRAW* = 0x20
CDDS_PREPAINT* = 0x1
CDDS_PREERASE* = 0x3
CDDS_ITEM* = 0x10000
CDDS_ITEMPREPAINT* = CDDS_ITEM or CDDS_PREPAINT
CDIS_SELECTED* = 0x1
CDIS_HOT* = 0x40
ILC_MASK* = 0x1
ILC_COLOR32* = 0x20
ILD_TRANSPARENT* = 0x1
HDI_WIDTH* = 0x1
HDM_HITTEST* = HDM_FIRST+6
HDN_ITEMCHANGINGA* = HDN_FIRST-0
HDN_ITEMCHANGINGW* = HDN_FIRST-20
HDN_BEGINTRACKA* = HDN_FIRST-6
HDN_BEGINTRACKW* = HDN_FIRST-26
HDN_ENDTRACKA* = HDN_FIRST-7
HDN_ENDTRACKW* = HDN_FIRST-27
HDN_BEGINDRAG* = HDN_FIRST-10
HDN_ENDDRAG* = HDN_FIRST-11
TOOLBARCLASSNAMEW* = "ToolbarWindow32"
TOOLBARCLASSNAMEA* = "ToolbarWindow32"
TBSTATE_CHECKED* = 0x1
TBSTATE_PRESSED* = 0x2
TBSTATE_ENABLED* = 0x4
TBSTATE_WRAP* = 0x20
TBSTYLE_BUTTON* = 0x0
TBSTYLE_SEP* = 0x1
TBSTYLE_CHECK* = 0x2
TBSTYLE_GROUP* = 0x4
TBSTYLE_CHECKGROUP* = TBSTYLE_GROUP or TBSTYLE_CHECK
TBSTYLE_DROPDOWN* = 0x8
TBSTYLE_AUTOSIZE* = 0x10
TBSTYLE_TOOLTIPS* = 0x100
TBSTYLE_FLAT* = 0x800
TBSTYLE_CUSTOMERASE* = 0x2000
TBSTYLE_TRANSPARENT* = 0x8000
TBSTYLE_EX_DRAWDDARROWS* = 0x1
BTNS_SEP* = TBSTYLE_SEP
BTNS_DROPDOWN* = TBSTYLE_DROPDOWN
BTNS_AUTOSIZE* = TBSTYLE_AUTOSIZE
BTNS_SHOWTEXT* = 0x40
BTNS_WHOLEDROPDOWN* = 0x80
TB_ENABLEBUTTON* = WM_USER+1
TB_SETSTATE* = WM_USER+17
TB_GETSTATE* = WM_USER+18
TB_ADDBITMAP* = WM_USER+19
TB_ADDBUTTONSA* = WM_USER+20
TB_INSERTBUTTONA* = WM_USER+21
TB_DELETEBUTTON* = WM_USER+22
TB_GETBUTTON* = WM_USER+23
TB_BUTTONCOUNT* = WM_USER+24
TB_GETITEMRECT* = WM_USER+29
TB_BUTTONSTRUCTSIZE* = WM_USER+30
TB_SETBITMAPSIZE* = WM_USER+32
TB_AUTOSIZE* = WM_USER+33
TB_GETSTYLE* = WM_USER+57
TB_GETBUTTONSIZE* = WM_USER+58
TB_SETHOTITEM* = WM_USER+72
TB_MAPACCELERATORA* = WM_USER+78
TB_SETEXTENDEDSTYLE* = WM_USER+84
TB_GETPADDING* = WM_USER+86
TB_SETPADDING* = WM_USER+87
TB_MAPACCELERATORW* = WM_USER+90
TBIF_IMAGE* = 0x1
TBIF_TEXT* = 0x2
TBIF_STATE* = 0x4
TBIF_STYLE* = 0x8
TBIF_LPARAM* = 0x10
TB_GETBUTTONINFOW* = WM_USER+63
TB_GETBUTTONINFOA* = WM_USER+65
TB_INSERTBUTTONW* = WM_USER+67
TB_ADDBUTTONSW* = WM_USER+68
TB_HITTEST* = WM_USER+69
TB_SETDRAWTEXTFLAGS* = WM_USER+70
TB_GETIDEALSIZE* = WM_USER+99
TBN_DROPDOWN* = TBN_FIRST-10
HICF_ENTERING* = 0x10
HICF_LEAVING* = 0x20
TBN_HOTITEMCHANGE* = TBN_FIRST-13
TBDDRET_DEFAULT* = 0
REBARCLASSNAMEW* = "ReBarWindow32"
REBARCLASSNAMEA* = "ReBarWindow32"
RBIM_IMAGELIST* = 0x1
RBS_VARHEIGHT* = 0x200
RBS_BANDBORDERS* = 0x400
RBS_AUTOSIZE* = 0x2000
RBS_DBLCLKTOGGLE* = 0x8000
RBBS_BREAK* = 0x1
RBBS_FIXEDSIZE* = 0x2
RBBS_CHILDEDGE* = 0x4
RBBS_HIDDEN* = 0x8
RBBS_GRIPPERALWAYS* = 0x80
RBBS_TOPALIGN* = 0x800
RBBIM_STYLE* = 0x1
RBBIM_TEXT* = 0x4
RBBIM_IMAGE* = 0x8
RBBIM_CHILD* = 0x10
RBBIM_CHILDSIZE* = 0x20
RBBIM_SIZE* = 0x40
RBBIM_ID* = 0x100
RB_INSERTBANDA* = WM_USER+1
RB_DELETEBAND* = WM_USER+2
RB_SETBARINFO* = WM_USER+4
RB_SETBANDINFOA* = WM_USER+6
RB_HITTEST* = WM_USER+8
RB_GETRECT* = WM_USER+9
RB_INSERTBANDW* = WM_USER+10
RB_SETBANDINFOW* = WM_USER+11
RB_GETBANDCOUNT* = WM_USER+12
RB_GETROWCOUNT* = WM_USER+13
RB_GETROWHEIGHT* = WM_USER+14
RB_IDTOINDEX* = WM_USER+16
RB_GETBARHEIGHT* = WM_USER+27
RB_GETBANDINFOW* = WM_USER+28
RB_GETBANDINFOA* = WM_USER+29
RB_MINIMIZEBAND* = WM_USER+30
RB_MAXIMIZEBAND* = WM_USER+31
RB_SHOWBAND* = WM_USER+35
RB_MOVEBAND* = WM_USER+39
RB_SETBANDWIDTH* = WM_USER+44
RBN_AUTOSIZE* = RBN_FIRST-3
RBN_BEGINDRAG* = RBN_FIRST-4
RBN_ENDDRAG* = RBN_FIRST-5
RBN_MINMAX* = RBN_FIRST-21
RBHT_NOWHERE* = 0x1
RBHT_CAPTION* = 0x2
RBHT_CLIENT* = 0x3
RBHT_GRABBER* = 0x4
RBHT_CHEVRON* = 0x8
RBHT_SPLITTER* = 0x10
TOOLTIPS_CLASSW* = "tooltips_class32"
TOOLTIPS_CLASSA* = "tooltips_class32"
TTS_ALWAYSTIP* = 0x1
TTS_NOPREFIX* = 0x2
TTS_BALLOON* = 0x40
TTF_IDISHWND* = 0x1
TTF_SUBCLASS* = 0x10
TTF_TRACK* = 0x20
TTDT_RESHOW* = 1
TTDT_AUTOPOP* = 2
TTDT_INITIAL* = 3
TTI_INFO* = 1
TTM_ACTIVATE* = WM_USER+1
TTM_SETDELAYTIME* = WM_USER+3
TTM_ADDTOOLA* = WM_USER+4
TTM_ADDTOOLW* = WM_USER+50
TTM_SETTOOLINFOA* = WM_USER+9
TTM_SETTOOLINFOW* = WM_USER+54
TTM_GETTEXTA* = WM_USER+11
TTM_GETTEXTW* = WM_USER+56
TTM_UPDATETIPTEXTA* = WM_USER+12
TTM_UPDATETIPTEXTW* = WM_USER+57
TTM_TRACKACTIVATE* = WM_USER+17
TTM_TRACKPOSITION* = WM_USER+18
TTM_SETMAXTIPWIDTH* = WM_USER+24
TTM_SETTITLEA* = WM_USER+32
TTM_SETTITLEW* = WM_USER+33
TTN_GETDISPINFOA* = TTN_FIRST-0
TTN_GETDISPINFOW* = TTN_FIRST-10
when winimUnicode:
const
TTN_GETDISPINFO* = TTN_GETDISPINFOW
when winimAnsi:
const
TTN_GETDISPINFO* = TTN_GETDISPINFOA
const
STATUSCLASSNAMEW* = "msctls_statusbar32"
STATUSCLASSNAMEA* = "msctls_statusbar32"
SB_SETTEXTA* = WM_USER+1
SB_SETTEXTW* = WM_USER+11
SB_GETTEXTA* = WM_USER+2
SB_GETTEXTW* = WM_USER+13
SB_GETTEXTLENGTHA* = WM_USER+3
SB_GETTEXTLENGTHW* = WM_USER+12
SB_SETPARTS* = WM_USER+4
SB_SETMINHEIGHT* = WM_USER+8
SB_SETICON* = WM_USER+15
TRACKBAR_CLASSA* = "msctls_trackbar32"
TRACKBAR_CLASSW* = "msctls_trackbar32"
TBS_AUTOTICKS* = 0x1
TBS_VERT* = 0x2
TBS_HORZ* = 0x0
TBS_TOP* = 0x4
TBS_BOTTOM* = 0x0
TBS_LEFT* = 0x4
TBS_RIGHT* = 0x0
TBS_NOTICKS* = 0x10
TBS_ENABLESELRANGE* = 0x20
TBS_FIXEDLENGTH* = 0x40
TBS_NOTHUMB* = 0x80
TBM_GETPOS* = WM_USER
TBM_SETTIC* = WM_USER+4
TBM_SETPOS* = WM_USER+5
TBM_SETRANGEMIN* = WM_USER+7
TBM_SETRANGEMAX* = WM_USER+8
TBM_CLEARTICS* = WM_USER+9
TBM_SETSEL* = WM_USER+10
TBM_GETSELSTART* = WM_USER+17
TBM_GETSELEND* = WM_USER+18
TBM_CLEARSEL* = WM_USER+19
TBM_SETTICFREQ* = WM_USER+20
TBM_SETPAGESIZE* = WM_USER+21
TBM_GETPAGESIZE* = WM_USER+22
TBM_SETLINESIZE* = WM_USER+23
TBM_GETLINESIZE* = WM_USER+24
TBM_SETTHUMBLENGTH* = WM_USER+27
TBM_GETTHUMBLENGTH* = WM_USER+28
UPDOWN_CLASSA* = "msctls_updown32"
UPDOWN_CLASSW* = "msctls_updown32"
UDS_WRAP* = 0x1
UDS_SETBUDDYINT* = 0x2
UDS_ALIGNRIGHT* = 0x4
UDS_ARROWKEYS* = 0x20
UDS_HORZ* = 0x40
UDS_HOTTRACK* = 0x100
UDM_SETBUDDY* = WM_USER+105
UDM_SETBASE* = WM_USER+109
UDM_GETBASE* = WM_USER+110
UDM_SETRANGE32* = WM_USER+111
UDM_GETRANGE32* = WM_USER+112
UDM_SETPOS32* = WM_USER+113
UDM_GETPOS32* = WM_USER+114
UDN_DELTAPOS* = UDN_FIRST-1
PROGRESS_CLASSA* = "msctls_progress32"
PROGRESS_CLASSW* = "msctls_progress32"
PBS_SMOOTH* = 0x1
PBS_VERTICAL* = 0x4
PBM_SETPOS* = WM_USER+2
PBM_STEPIT* = WM_USER+5
PBM_SETRANGE32* = WM_USER+6
PBM_GETRANGE* = WM_USER+7
PBM_GETPOS* = WM_USER+8
PBS_MARQUEE* = 0x8
PBM_SETMARQUEE* = WM_USER+10
CCS_TOP* = 0x1
CCS_BOTTOM* = 0x3
CCS_NORESIZE* = 0x4
CCS_NOPARENTALIGN* = 0x8
CCS_NODIVIDER* = 0x40
CCS_VERT* = 0x80
CCS_LEFT* = CCS_VERT or CCS_TOP
CCS_RIGHT* = CCS_VERT or CCS_BOTTOM
WC_LINK* = "SysLink"
WC_LISTVIEWA* = "SysListView32"
WC_LISTVIEWW* = "SysListView32"
LVS_ICON* = 0x0
LVS_REPORT* = 0x1
LVS_SMALLICON* = 0x2
LVS_LIST* = 0x3
LVS_SINGLESEL* = 0x4
LVS_SHOWSELALWAYS* = 0x8
LVS_SORTASCENDING* = 0x10
LVS_SORTDESCENDING* = 0x20
LVS_SHAREIMAGELISTS* = 0x40
LVS_AUTOARRANGE* = 0x100
LVS_EDITLABELS* = 0x200
LVS_ALIGNTOP* = 0x0
LVS_ALIGNLEFT* = 0x800
LVS_NOCOLUMNHEADER* = 0x4000
LVS_NOSORTHEADER* = 0x8000
LVM_GETBKCOLOR* = LVM_FIRST+0
LVM_SETBKCOLOR* = LVM_FIRST+1
LVSIL_NORMAL* = 0
LVSIL_SMALL* = 1
LVSIL_STATE* = 2
LVM_SETIMAGELIST* = LVM_FIRST+3
LVM_GETITEMCOUNT* = LVM_FIRST+4
LVIF_TEXT* = 0x1
LVIF_IMAGE* = 0x2
LVIF_PARAM* = 0x4
LVIF_STATE* = 0x8
LVIS_FOCUSED* = 0x1
LVIS_SELECTED* = 0x2
LVIS_CUT* = 0x4
LVIS_DROPHILITED* = 0x8
LVIS_STATEIMAGEMASK* = 0xF000
I_IMAGECALLBACK* = -1
I_IMAGENONE* = -2
LVM_GETITEMA* = LVM_FIRST+5
LVM_GETITEMW* = LVM_FIRST+75
LVM_SETITEMA* = LVM_FIRST+6
LVM_SETITEMW* = LVM_FIRST+76
LVM_INSERTITEMA* = LVM_FIRST+7
LVM_INSERTITEMW* = LVM_FIRST+77
LVM_DELETEITEM* = LVM_FIRST+8
LVM_DELETEALLITEMS* = LVM_FIRST+9
LVNI_ALL* = 0x0
LVNI_FOCUSED* = 0x1
LVNI_SELECTED* = 0x2
LVNI_CUT* = 0x4
LVNI_DROPHILITED* = 0x8
LVNI_PREVIOUS* = 0x20
LVNI_ABOVE* = 0x100
LVNI_BELOW* = 0x200
LVNI_TOLEFT* = 0x400
LVNI_TORIGHT* = 0x800
LVM_GETNEXTITEM* = LVM_FIRST+12
LVFI_PARAM* = 0x1
LVFI_STRING* = 0x2
LVFI_PARTIAL* = 0x8
LVM_FINDITEMA* = LVM_FIRST+13
LVM_FINDITEMW* = LVM_FIRST+83
LVIR_BOUNDS* = 0
LVIR_ICON* = 1
LVIR_LABEL* = 2
LVIR_SELECTBOUNDS* = 3
LVM_GETITEMRECT* = LVM_FIRST+14
LVM_GETITEMPOSITION* = LVM_FIRST+16
LVHT_NOWHERE* = 0x1
LVHT_ONITEMICON* = 0x2
LVHT_ONITEMLABEL* = 0x4
LVHT_ONITEMSTATEICON* = 0x8
LVHT_ABOVE* = 0x8
LVHT_BELOW* = 0x10
LVHT_TORIGHT* = 0x20
LVHT_TOLEFT* = 0x40
LVM_ENSUREVISIBLE* = LVM_FIRST+19
LVM_SCROLL* = LVM_FIRST+20
LVM_REDRAWITEMS* = LVM_FIRST+21
LVA_DEFAULT* = 0x0
LVA_ALIGNLEFT* = 0x1
LVA_ALIGNTOP* = 0x2
LVA_SNAPTOGRID* = 0x5
LVM_ARRANGE* = LVM_FIRST+22
LVM_EDITLABELA* = LVM_FIRST+23
LVM_EDITLABELW* = LVM_FIRST+118
LVM_GETEDITCONTROL* = LVM_FIRST+24
LVCF_FMT* = 0x1
LVCF_WIDTH* = 0x2
LVCF_TEXT* = 0x4
LVCF_IMAGE* = 0x10
LVCFMT_LEFT* = 0x0
LVCFMT_RIGHT* = 0x1
LVCFMT_CENTER* = 0x2
LVM_GETCOLUMNA* = LVM_FIRST+25
LVM_GETCOLUMNW* = LVM_FIRST+95
LVM_SETCOLUMNA* = LVM_FIRST+26
LVM_SETCOLUMNW* = LVM_FIRST+96
LVM_INSERTCOLUMNA* = LVM_FIRST+27
LVM_INSERTCOLUMNW* = LVM_FIRST+97
LVM_DELETECOLUMN* = LVM_FIRST+28
LVM_GETCOLUMNWIDTH* = LVM_FIRST+29
LVSCW_AUTOSIZE* = -1
LVSCW_AUTOSIZE_USEHEADER* = -2
LVM_SETCOLUMNWIDTH* = LVM_FIRST+30
LVM_GETVIEWRECT* = LVM_FIRST+34
LVM_GETTEXTCOLOR* = LVM_FIRST+35
LVM_SETTEXTCOLOR* = LVM_FIRST+36
LVM_SETTEXTBKCOLOR* = LVM_FIRST+38
LVM_GETTOPINDEX* = LVM_FIRST+39
LVM_GETCOUNTPERPAGE* = LVM_FIRST+40
LVM_SETITEMSTATE* = LVM_FIRST+43
LVM_GETITEMSTATE* = LVM_FIRST+44
LVM_SORTITEMS* = LVM_FIRST+48
LVM_SETITEMPOSITION32* = LVM_FIRST+49
LVM_GETSELECTEDCOUNT* = LVM_FIRST+50
LVM_GETITEMSPACING* = LVM_FIRST+51
LVM_SETICONSPACING* = LVM_FIRST+53
LVM_SETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST+54
LVM_GETEXTENDEDLISTVIEWSTYLE* = LVM_FIRST+55
LVS_EX_SUBITEMIMAGES* = 0x2
LVS_EX_CHECKBOXES* = 0x4
LVS_EX_HEADERDRAGDROP* = 0x10
LVS_EX_FULLROWSELECT* = 0x20
LVS_EX_LABELTIP* = 0x4000
LVM_GETSUBITEMRECT* = LVM_FIRST+56
LVM_SUBITEMHITTEST* = LVM_FIRST+57
LVM_SETCOLUMNORDERARRAY* = LVM_FIRST+58
LVM_GETCOLUMNORDERARRAY* = LVM_FIRST+59
LVM_APPROXIMATEVIEWRECT* = LVM_FIRST+64
LVM_SORTITEMSEX* = LVM_FIRST+81
LVM_SETVIEW* = LVM_FIRST+142
LVM_GETVIEW* = LVM_FIRST+143
LVN_ITEMCHANGED* = LVN_FIRST-1
LVN_INSERTITEM* = LVN_FIRST-2
LVN_DELETEITEM* = LVN_FIRST-3
LVN_DELETEALLITEMS* = LVN_FIRST-4
LVN_BEGINLABELEDITA* = LVN_FIRST-5
LVN_BEGINLABELEDITW* = LVN_FIRST-75
LVN_ENDLABELEDITA* = LVN_FIRST-6
LVN_ENDLABELEDITW* = LVN_FIRST-76
LVN_COLUMNCLICK* = LVN_FIRST-8
LVN_BEGINDRAG* = LVN_FIRST-9
LVN_BEGINRDRAG* = LVN_FIRST-11
LVN_ITEMACTIVATE* = LVN_FIRST-14
WC_TREEVIEWA* = "SysTreeView32"
WC_TREEVIEWW* = "SysTreeView32"
TVS_HASBUTTONS* = 0x1
TVS_HASLINES* = 0x2
TVS_LINESATROOT* = 0x4
TVS_EDITLABELS* = 0x8
TVS_SHOWSELALWAYS* = 0x20
TVS_CHECKBOXES* = 0x100
TVS_SINGLEEXPAND* = 0x400
TVS_FULLROWSELECT* = 0x1000
TVS_NOSCROLL* = 0x2000
TVS_NOHSCROLL* = 0x8000
TVIF_TEXT* = 0x1
TVIF_IMAGE* = 0x2
TVIF_PARAM* = 0x4
TVIF_STATE* = 0x8
TVIF_HANDLE* = 0x10
TVIF_SELECTEDIMAGE* = 0x20
TVIF_CHILDREN* = 0x40
TVIS_SELECTED* = 0x2
TVIS_CUT* = 0x4
TVIS_DROPHILITED* = 0x8
TVIS_BOLD* = 0x10
TVIS_EXPANDED* = 0x20
TVIS_STATEIMAGEMASK* = 0xF000
TVM_INSERTITEMA* = TV_FIRST+0
TVM_INSERTITEMW* = TV_FIRST+50
TVM_DELETEITEM* = TV_FIRST+1
TVM_EXPAND* = TV_FIRST+2
TVE_COLLAPSE* = 0x1
TVE_EXPAND* = 0x2
TVE_TOGGLE* = 0x3
TVE_COLLAPSERESET* = 0x8000
TVM_GETITEMRECT* = TV_FIRST+4
TVM_GETCOUNT* = TV_FIRST+5
TVM_GETINDENT* = TV_FIRST+6
TVM_SETINDENT* = TV_FIRST+7
TVSIL_NORMAL* = 0
TVSIL_STATE* = 2
TVM_SETIMAGELIST* = TV_FIRST+9
TVM_GETNEXTITEM* = TV_FIRST+10
TVGN_ROOT* = 0x0
TVGN_NEXT* = 0x1
TVGN_PREVIOUS* = 0x2
TVGN_PARENT* = 0x3
TVGN_CHILD* = 0x4
TVGN_FIRSTVISIBLE* = 0x5
TVGN_NEXTVISIBLE* = 0x6
TVGN_PREVIOUSVISIBLE* = 0x7
TVGN_DROPHILITE* = 0x8
TVGN_CARET* = 0x9
TVM_SELECTITEM* = TV_FIRST+11
TVM_GETITEMA* = TV_FIRST+12
TVM_GETITEMW* = TV_FIRST+62
TVM_SETITEMA* = TV_FIRST+13
TVM_SETITEMW* = TV_FIRST+63
TVM_EDITLABELA* = TV_FIRST+14
TVM_EDITLABELW* = TV_FIRST+65
TVM_GETEDITCONTROL* = TV_FIRST+15
TVM_HITTEST* = TV_FIRST+17
TVHT_NOWHERE* = 0x1
TVHT_ONITEMICON* = 0x2
TVHT_ONITEMLABEL* = 0x4
TVHT_ONITEMSTATEICON* = 0x40
TVHT_ONITEM* = TVHT_ONITEMICON or TVHT_ONITEMLABEL or TVHT_ONITEMSTATEICON
TVHT_ONITEMINDENT* = 0x8
TVHT_ONITEMBUTTON* = 0x10
TVHT_ONITEMRIGHT* = 0x20
TVHT_ABOVE* = 0x100
TVHT_BELOW* = 0x200
TVHT_TORIGHT* = 0x400
TVHT_TOLEFT* = 0x800
TVM_CREATEDRAGIMAGE* = TV_FIRST+18
TVM_SORTCHILDREN* = TV_FIRST+19
TVM_ENSUREVISIBLE* = TV_FIRST+20
TVM_SORTCHILDRENCB* = TV_FIRST+21
TVM_SETINSERTMARK* = TV_FIRST+26
TVM_SETBKCOLOR* = TV_FIRST+29
TVM_SETTEXTCOLOR* = TV_FIRST+30
TVN_SELCHANGINGA* = TVN_FIRST-1
TVN_SELCHANGINGW* = TVN_FIRST-50
TVN_SELCHANGEDA* = TVN_FIRST-2
TVN_SELCHANGEDW* = TVN_FIRST-51
TVN_ITEMEXPANDINGA* = TVN_FIRST-5
TVN_ITEMEXPANDINGW* = TVN_FIRST-54
TVN_ITEMEXPANDEDA* = TVN_FIRST-6
TVN_ITEMEXPANDEDW* = TVN_FIRST-55
TVN_BEGINDRAGA* = TVN_FIRST-7
TVN_BEGINDRAGW* = TVN_FIRST-56
TVN_BEGINRDRAGA* = TVN_FIRST-8
TVN_BEGINRDRAGW* = TVN_FIRST-57
TVN_DELETEITEMA* = TVN_FIRST-9
TVN_DELETEITEMW* = TVN_FIRST-58
TVN_BEGINLABELEDITA* = TVN_FIRST-10
TVN_BEGINLABELEDITW* = TVN_FIRST-59
TVN_ENDLABELEDITA* = TVN_FIRST-11
TVN_ENDLABELEDITW* = TVN_FIRST-60
WC_TABCONTROLA* = "SysTabControl32"
WC_TABCONTROLW* = "SysTabControl32"
TCS_FORCEICONLEFT* = 0x10
TCS_BUTTONS* = 0x100
TCS_MULTILINE* = 0x200
TCS_FIXEDWIDTH* = 0x400
TCS_FOCUSONBUTTONDOWN* = 0x1000
TCM_SETIMAGELIST* = TCM_FIRST+3
TCM_GETITEMCOUNT* = TCM_FIRST+4
TCIF_TEXT* = 0x1
TCIF_IMAGE* = 0x2
TCM_GETITEMA* = TCM_FIRST+5
TCM_GETITEMW* = TCM_FIRST+60
TCM_SETITEMA* = TCM_FIRST+6
TCM_SETITEMW* = TCM_FIRST+61
TCM_INSERTITEMA* = TCM_FIRST+7
TCM_INSERTITEMW* = TCM_FIRST+62
TCM_DELETEITEM* = TCM_FIRST+8
TCM_DELETEALLITEMS* = TCM_FIRST+9
TCM_GETCURSEL* = TCM_FIRST+11
TCM_SETCURSEL* = TCM_FIRST+12
TCM_ADJUSTRECT* = TCM_FIRST+40
TCM_SETPADDING* = TCM_FIRST+43
TCM_SETCURFOCUS* = TCM_FIRST+48
TCN_SELCHANGE* = TCN_FIRST-1
TCN_SELCHANGING* = TCN_FIRST-2
MONTHCAL_CLASSW* = "SysMonthCal32"
MONTHCAL_CLASSA* = "SysMonthCal32"
MCM_FIRST* = 0x1000
MCM_GETCURSEL* = MCM_FIRST+1
MCM_SETCURSEL* = MCM_FIRST+2
MCM_GETMAXSELCOUNT* = MCM_FIRST+3
MCM_SETMAXSELCOUNT* = MCM_FIRST+4
MCM_GETSELRANGE* = MCM_FIRST+5
MCM_SETSELRANGE* = MCM_FIRST+6
MCM_GETMINREQRECT* = MCM_FIRST+9
MCM_SETTODAY* = MCM_FIRST+12
MCM_GETTODAY* = MCM_FIRST+13
MCM_SETFIRSTDAYOFWEEK* = MCM_FIRST+15
MCM_GETRANGE* = MCM_FIRST+17
MCM_SETRANGE* = MCM_FIRST+18
MCM_GETMAXTODAYWIDTH* = MCM_FIRST+21
MCN_SELCHANGE* = MCN_FIRST-3
MCN_VIEWCHANGE* = MCN_FIRST-4
MCS_MULTISELECT* = 0x2
MCS_WEEKNUMBERS* = 0x4
MCS_NOTODAY* = 0x10
DATETIMEPICK_CLASSW* = "SysDateTimePick32"
DATETIMEPICK_CLASSA* = "SysDateTimePick32"
DTM_FIRST* = 0x1000
DTM_GETSYSTEMTIME* = DTM_FIRST+1
DTM_SETSYSTEMTIME* = DTM_FIRST+2
DTM_GETRANGE* = DTM_FIRST+3
DTM_SETRANGE* = DTM_FIRST+4
DTM_GETIDEALSIZE* = DTM_FIRST+15
DTS_UPDOWN* = 0x1
DTS_SHOWNONE* = 0x2
DTS_SHORTDATECENTURYFORMAT* = 0xc
DTS_TIMEFORMAT* = 0x9
DTN_DATETIMECHANGE* = DTN_FIRST2-6
GDTR_MIN* = 0x1
GDTR_MAX* = 0x2
GDT_VALID* = 0
IPM_CLEARADDRESS* = WM_USER+100
IPM_SETADDRESS* = WM_USER+101
IPM_GETADDRESS* = WM_USER+102
IPM_SETFOCUS* = WM_USER+104
WC_IPADDRESSW* = "SysIPAddress32"
WC_IPADDRESSA* = "SysIPAddress32"
IPN_FIELDCHANGED* = IPN_FIRST-0
WC_BUTTONA* = "Button"
WC_BUTTONW* = "Button"
BUTTON_IMAGELIST_ALIGN_LEFT* = 0
BUTTON_IMAGELIST_ALIGN_RIGHT* = 1
BUTTON_IMAGELIST_ALIGN_TOP* = 2
BUTTON_IMAGELIST_ALIGN_BOTTOM* = 3
BUTTON_IMAGELIST_ALIGN_CENTER* = 4
BCM_GETIDEALSIZE* = BCM_FIRST+0x1
BCM_SETIMAGELIST* = BCM_FIRST+0x2
BCN_HOTITEMCHANGE* = BCN_FIRST+0x1
BS_SPLITBUTTON* = 0xc
BCN_DROPDOWN* = BCN_FIRST+0x0002
WC_STATICA* = "Static"
WC_STATICW* = "Static"
WC_EDITA* = "Edit"
WC_EDITW* = "Edit"
WC_LISTBOXA* = "ListBox"
WC_LISTBOXW* = "ListBox"
WC_COMBOBOXA* = "ComboBox"
WC_COMBOBOXW* = "ComboBox"
WC_SCROLLBARA* = "ScrollBar"
WC_SCROLLBARW* = "ScrollBar"
LWS_RIGHT* = 0x20
LIF_ITEMINDEX* = 0x1
LIF_STATE* = 0x2
LIF_ITEMID* = 0x4
LIF_URL* = 0x8
LIS_FOCUSED* = 0x1
LIS_ENABLED* = 0x2
LIS_VISITED* = 0x4
LIS_HOTTRACK* = 0x8
LIS_DEFAULTCOLORS* = 0x10
LM_GETIDEALHEIGHT* = WM_USER+0x301
LM_SETITEM* = WM_USER+0x302
LM_GETITEM* = WM_USER+0x303
TVI_FIRST* = HTREEITEM(-0xffff)
TVI_LAST* = HTREEITEM(-0xfffe)
TVI_ROOT* = HTREEITEM(-0x10000)
LM_GETIDEALSIZE* = LM_GETIDEALHEIGHT
type
SUBCLASSPROC* = proc (hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, uIdSubclass: UINT_PTR, dwRefData: DWORD_PTR): LRESULT {.stdcall.}
proc InitCommonControlsEx*(P1: ptr TINITCOMMONCONTROLSEX): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Create*(cx: int32, cy: int32, flags: UINT, cInitial: int32, cGrow: int32): HIMAGELIST {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Destroy*(himl: HIMAGELIST): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_GetImageCount*(himl: HIMAGELIST): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Add*(himl: HIMAGELIST, hbmImage: HBITMAP, hbmMask: HBITMAP): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_ReplaceIcon*(himl: HIMAGELIST, i: int32, hicon: HICON): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Draw*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32, y: int32, fStyle: UINT): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Replace*(himl: HIMAGELIST, i: int32, hbmImage: HBITMAP, hbmMask: HBITMAP): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_AddMasked*(himl: HIMAGELIST, hbmImage: HBITMAP, crMask: COLORREF): int32 {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_Remove*(himl: HIMAGELIST, i: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_GetIcon*(himl: HIMAGELIST, i: int32, flags: UINT): HICON {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_BeginDrag*(himlTrack: HIMAGELIST, iTrack: int32, dxHotspot: int32, dyHotspot: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_EndDrag*(): void {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_DragEnter*(hwndLock: HWND, x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_DragMove*(x: int32, y: int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_DragShowNolock*(fShow: WINBOOL): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_GetIconSize*(himl: HIMAGELIST, cx: ptr int32, cy: ptr int32): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc ImageList_GetImageInfo*(himl: HIMAGELIST, i: int32, pImageInfo: ptr IMAGEINFO): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc SetWindowSubclass*(hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR, dwRefData: DWORD_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc RemoveWindowSubclass*(hWnd: HWND, pfnSubclass: SUBCLASSPROC, uIdSubclass: UINT_PTR): WINBOOL {.winapi, stdcall, dynlib: "comctl32", importc.}
proc DefSubclassProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT {.winapi, stdcall, dynlib: "comctl32", importc.}
template INDEXTOSTATEIMAGEMASK*(i: untyped): untyped = i shl 12
template MAKEIPADDRESS*(b1: BYTE, b2: BYTE, b3: BYTE, b4: BYTE): LPARAM = (b1.LPARAM shl 24) + (b2.LPARAM shl 16) + (b3.LPARAM shl 8) + (b4.LPARAM)
template FIRST_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 24)
template SECOND_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 16)
template THIRD_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x shr 8)
template FOURTH_IPADDRESS*(x: LPARAM): BYTE = cast[BYTE](x)
template ImageList_AddIcon*(himl: HIMAGELIST, hicon: HICON): int32 = ImageList_ReplaceIcon(himl, -1, hicon)
when winimUnicode:
const
LVM_EDITLABEL* = LVM_EDITLABELW
when winimAnsi:
const
LVM_EDITLABEL* = LVM_EDITLABELA
when winimUnicode:
type
LVFINDINFO* = LVFINDINFOW
when winimAnsi:
type
LVFINDINFO* = LVFINDINFOA
when winimUnicode:
const
LVM_FINDITEM* = LVM_FINDITEMW
when winimAnsi:
const
LVM_FINDITEM* = LVM_FINDITEMA
template ListView_GetCheckState*(hwnd: HWND, i: UINT): BOOL = discardable BOOL((SendMessage(hwnd, LVM_GETITEMSTATE, cast[WPARAM](i), LVIS_STATEIMAGEMASK) shr 12) - 1)
when winimUnicode:
const
LVM_GETCOLUMN* = LVM_GETCOLUMNW
when winimAnsi:
const
LVM_GETCOLUMN* = LVM_GETCOLUMNA
when winimUnicode:
const
LVM_GETITEM* = LVM_GETITEMW
when winimAnsi:
const
LVM_GETITEM* = LVM_GETITEMA
when winimUnicode:
const
LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNW
when winimAnsi:
const
LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNA
when winimUnicode:
const
LVM_INSERTITEM* = LVM_INSERTITEMW
when winimAnsi:
const
LVM_INSERTITEM* = LVM_INSERTITEMA
template ListView_SetItemState*(hwnd: HWND, i: int32, data: UINT, mask: UINT): void = (var lvi = LV_ITEM(stateMask: mask, state: data); SendMessage(hwnd, LVM_SETITEMSTATE, cast[WPARAM](i), cast[LPARAM](addr lvi)))
template ListView_SetCheckState*(hwnd: HWND, i: UINT, fCheck: BOOL) = ListView_SetItemState(hwnd, i, INDEXTOSTATEIMAGEMASK(if bool fCheck:2 else:1), LVIS_STATEIMAGEMASK)
when winimUnicode:
const
LVM_SETCOLUMN* = LVM_SETCOLUMNW
when winimAnsi:
const
LVM_SETCOLUMN* = LVM_SETCOLUMNA
when winimUnicode:
const
LVM_SETITEM* = LVM_SETITEMW
when winimAnsi:
const
LVM_SETITEM* = LVM_SETITEMA
when winimUnicode:
const
TCM_GETITEM* = TCM_GETITEMW
when winimAnsi:
const
TCM_GETITEM* = TCM_GETITEMA
when winimUnicode:
const
TCM_INSERTITEM* = TCM_INSERTITEMW
when winimAnsi:
const
TCM_INSERTITEM* = TCM_INSERTITEMA
when winimUnicode:
const
TCM_SETITEM* = TCM_SETITEMW
when winimAnsi:
const
TCM_SETITEM* = TCM_SETITEMA
template TreeView_CreateDragImage*(hwnd: HWND, hitem: HTREEITEM): HIMAGELIST = discardable HIMAGELIST SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, cast[LPARAM](hitem))
template TreeView_DeleteItem*(hwnd: HWND, hitem: HTREEITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](hitem))
when winimUnicode:
const
TVM_EDITLABEL* = TVM_EDITLABELW
when winimAnsi:
const
TVM_EDITLABEL* = TVM_EDITLABELA
template TreeView_EditLabel*(hwnd: HWND, hitem: HTREEITEM): HWND = discardable HWND SendMessage(hwnd, TVM_EDITLABEL, 0, cast[LPARAM](hitem))
template TreeView_EnsureVisible*(hwnd: HWND, hitem: HTREEITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, cast[LPARAM](hitem))
template TreeView_Expand*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL = discardable BOOL SendMessage(hwnd, TVM_EXPAND, cast[WPARAM](code), cast[LPARAM](hitem))
template TreeView_GetNextItem*(hwnd: HWND, hitem: HTREEITEM, code: UINT): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_GETNEXTITEM, cast[WPARAM](code), cast[LPARAM](hitem))
template TreeView_GetCount*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETCOUNT, 0, 0)
template TreeView_GetEditControl*(hwnd: HWND): HWND = discardable HWND SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0)
template TreeView_GetFirstVisible*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_FIRSTVISIBLE)
template TreeView_GetIndent*(hwnd: HWND): UINT = discardable UINT SendMessage(hwnd, TVM_GETINDENT, 0, 0)
when winimUnicode:
type
LPTVITEM* = LPTVITEMW
when winimAnsi:
type
LPTVITEM* = LPTVITEMA
when winimUnicode:
const
TVM_GETITEM* = TVM_GETITEMW
when winimAnsi:
const
TVM_GETITEM* = TVM_GETITEMA
template TreeView_GetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_GETITEM, 0, cast[LPARAM](pitem))
template TreeView_GetItemRect*(hwnd: HWND, hitem: HTREEITEM, prc: LPRECT, fItemRect: BOOL): BOOL = (cast[ptr HTREEITEM](prc)[] = hitem; discardable BOOL SendMessage(hwnd, TVM_GETITEMRECT, cast[WPARAM](fItemRect), cast[LPARAM](prc)))
template TreeView_GetRoot*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_ROOT)
template TreeView_GetSelection*(hwnd: HWND): HTREEITEM = TreeView_GetNextItem(hwnd, 0, TVGN_CARET)
template TreeView_HitTest*(hwnd: HWND, lpht: LPTVHITTESTINFO): HTREEITEM = discardable HTREEITEM SendMessage(hwnd, TVM_HITTEST, 0, cast[LPARAM](lpht))
when winimUnicode:
const
TVM_INSERTITEM* = TVM_INSERTITEMW
when winimAnsi:
const
TVM_INSERTITEM* = TVM_INSERTITEMA
template TreeView_Select*(hwnd: HWND, hitem: HTREEITEM, code: UINT): BOOL = discardable BOOL SendMessage(hwnd, TVM_SELECTITEM, cast[WPARAM](code), cast[LPARAM](hitem))
template TreeView_SelectDropTarget*(hwnd: HWND, hitem: HTREEITEM): BOOL = TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
template TreeView_SelectItem*(hwnd: HWND, hitem: HTREEITEM): BOOL = TreeView_Select(hwnd, hitem, TVGN_CARET)
template TreeView_SetBkColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETBKCOLOR, 0, cast[LPARAM](clr))
when winimUnicode:
type
TVITEM* = TVITEMW
when winimAnsi:
type
TVITEM* = TVITEMA
when winimUnicode:
const
TVM_SETITEM* = TVM_SETITEMW
when winimAnsi:
const
TVM_SETITEM* = TVM_SETITEMA
template TreeView_SetIndent*(hwnd: HWND, indent: INT): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETINDENT, cast[WPARAM](indent), 0)
template TreeView_SetInsertMark*(hwnd: HWND, hItem: HTREEITEM, fAfter: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETINSERTMARK, cast[WPARAM](fAfter), cast[LPARAM](hItem))
template TreeView_SetItem*(hwnd: HWND, pitem: LPTVITEM): BOOL = discardable BOOL SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](pitem))
template TreeView_SetTextColor*(hwnd: HWND, clr: COLORREF): COLORREF = discardable COLORREF SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, cast[LPARAM](clr))
template TreeView_SortChildren*(hwnd: HWND, hitem: HTREEITEM, recurse: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SORTCHILDREN, cast[WPARAM](recurse), cast[LPARAM](hitem))
template TreeView_SortChildrenCB*(hwnd: HWND, psort: LPTVSORTCB, recurse: BOOL): BOOL = discardable BOOL SendMessage(hwnd, TVM_SORTCHILDRENCB, cast[WPARAM](recurse), cast[LPARAM](psort))
proc `itemex=`*(self: var TVINSERTSTRUCTA, x: TVITEMEXA) {.inline.} = self.union1.itemex = x
proc itemex*(self: TVINSERTSTRUCTA): TVITEMEXA {.inline.} = self.union1.itemex
proc itemex*(self: var TVINSERTSTRUCTA): var TVITEMEXA {.inline.} = self.union1.itemex
proc `item=`*(self: var TVINSERTSTRUCTA, x: TV_ITEMA) {.inline.} = self.union1.item = x
proc item*(self: TVINSERTSTRUCTA): TV_ITEMA {.inline.} = self.union1.item
proc item*(self: var TVINSERTSTRUCTA): var TV_ITEMA {.inline.} = self.union1.item
proc `itemex=`*(self: var TVINSERTSTRUCTW, x: TVITEMEXW) {.inline.} = self.union1.itemex = x
proc itemex*(self: TVINSERTSTRUCTW): TVITEMEXW {.inline.} = self.union1.itemex
proc itemex*(self: var TVINSERTSTRUCTW): var TVITEMEXW {.inline.} = self.union1.itemex
proc `item=`*(self: var TVINSERTSTRUCTW, x: TV_ITEMW) {.inline.} = self.union1.item = x
proc item*(self: TVINSERTSTRUCTW): TV_ITEMW {.inline.} = self.union1.item
proc item*(self: var TVINSERTSTRUCTW): var TV_ITEMW {.inline.} = self.union1.item
when winimUnicode:
type
LPNMLVDISPINFO* = LPNMLVDISPINFOW
LPNMHEADER* = LPNMHEADERW
TBBUTTONINFO* = TBBUTTONINFOW
REBARBANDINFO* = REBARBANDINFOW
LVITEM* = LVITEMW
LVCOLUMN* = LVCOLUMNW
TVINSERTSTRUCT* = TVINSERTSTRUCTW
LPNMTREEVIEW* = LPNMTREEVIEWW
LPNMTVDISPINFO* = LPNMTVDISPINFOW
TCITEM* = TCITEMW
const
HDN_ITEMCHANGING* = HDN_ITEMCHANGINGW
HDN_BEGINTRACK* = HDN_BEGINTRACKW
HDN_ENDTRACK* = HDN_ENDTRACKW
TOOLBARCLASSNAME* = TOOLBARCLASSNAMEW
TB_MAPACCELERATOR* = TB_MAPACCELERATORW
TB_GETBUTTONINFO* = TB_GETBUTTONINFOW
TB_INSERTBUTTON* = TB_INSERTBUTTONW
TB_ADDBUTTONS* = TB_ADDBUTTONSW
REBARCLASSNAME* = REBARCLASSNAMEW
RB_INSERTBAND* = RB_INSERTBANDW
RB_SETBANDINFO* = RB_SETBANDINFOW
RB_GETBANDINFO* = RB_GETBANDINFOW
TOOLTIPS_CLASS* = TOOLTIPS_CLASSW
TTM_ADDTOOL* = TTM_ADDTOOLW
TTM_SETTOOLINFO* = TTM_SETTOOLINFOW
TTM_GETTEXT* = TTM_GETTEXTW
TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTW
TTM_SETTITLE* = TTM_SETTITLEW
STATUSCLASSNAME* = STATUSCLASSNAMEW
SB_GETTEXT* = SB_GETTEXTW
SB_SETTEXT* = SB_SETTEXTW
SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHW
TRACKBAR_CLASS* = TRACKBAR_CLASSW
UPDOWN_CLASS* = UPDOWN_CLASSW
PROGRESS_CLASS* = PROGRESS_CLASSW
WC_LISTVIEW* = WC_LISTVIEWW
LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITW
LVN_ENDLABELEDIT* = LVN_ENDLABELEDITW
WC_TREEVIEW* = WC_TREEVIEWW
TVN_SELCHANGING* = TVN_SELCHANGINGW
TVN_SELCHANGED* = TVN_SELCHANGEDW
TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGW
TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDW
TVN_BEGINDRAG* = TVN_BEGINDRAGW
TVN_BEGINRDRAG* = TVN_BEGINRDRAGW
TVN_DELETEITEM* = TVN_DELETEITEMW
TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITW
TVN_ENDLABELEDIT* = TVN_ENDLABELEDITW
WC_TABCONTROL* = WC_TABCONTROLW
MONTHCAL_CLASS* = MONTHCAL_CLASSW
DATETIMEPICK_CLASS* = DATETIMEPICK_CLASSW
WC_IPADDRESS* = WC_IPADDRESSW
WC_BUTTON* = WC_BUTTONW
WC_STATIC* = WC_STATICW
WC_EDIT* = WC_EDITW
WC_LISTBOX* = WC_LISTBOXW
WC_COMBOBOX* = WC_COMBOBOXW
WC_SCROLLBAR* = WC_SCROLLBARW
when winimAnsi:
type
LPNMLVDISPINFO* = LPNMLVDISPINFOA
LPNMHEADER* = LPNMHEADERA
TBBUTTONINFO* = TBBUTTONINFOA
REBARBANDINFO* = REBARBANDINFOA
LVITEM* = LVITEMA
LVCOLUMN* = LVCOLUMNA
TVINSERTSTRUCT* = TVINSERTSTRUCTA
LPNMTREEVIEW* = LPNMTREEVIEWA
LPNMTVDISPINFO* = LPNMTVDISPINFOA
TCITEM* = TCITEMA
const
HDN_ITEMCHANGING* = HDN_ITEMCHANGINGA
HDN_BEGINTRACK* = HDN_BEGINTRACKA
HDN_ENDTRACK* = HDN_ENDTRACKA
TOOLBARCLASSNAME* = TOOLBARCLASSNAMEA
TB_MAPACCELERATOR* = TB_MAPACCELERATORA
TB_GETBUTTONINFO* = TB_GETBUTTONINFOA
TB_INSERTBUTTON* = TB_INSERTBUTTONA
TB_ADDBUTTONS* = TB_ADDBUTTONSA
REBARCLASSNAME* = REBARCLASSNAMEA
RB_INSERTBAND* = RB_INSERTBANDA
RB_SETBANDINFO* = RB_SETBANDINFOA
RB_GETBANDINFO* = RB_GETBANDINFOA
TOOLTIPS_CLASS* = TOOLTIPS_CLASSA
TTM_ADDTOOL* = TTM_ADDTOOLA
TTM_SETTOOLINFO* = TTM_SETTOOLINFOA
TTM_GETTEXT* = TTM_GETTEXTA
TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTA
TTM_SETTITLE* = TTM_SETTITLEA
STATUSCLASSNAME* = STATUSCLASSNAMEA
SB_GETTEXT* = SB_GETTEXTA
SB_SETTEXT* = SB_SETTEXTA
SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHA
TRACKBAR_CLASS* = TRACKBAR_CLASSA
UPDOWN_CLASS* = UPDOWN_CLASSA
PROGRESS_CLASS* = PROGRESS_CLASSA
WC_LISTVIEW* = WC_LISTVIEWA
LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITA
LVN_ENDLABELEDIT* = LVN_ENDLABELEDITA
WC_TREEVIEW* = WC_TREEVIEWA
TVN_SELCHANGING* = TVN_SELCHANGINGA
TVN_SELCHANGED* = TVN_SELCHANGEDA
TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGA
TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDA
TVN_BEGINDRAG* = TVN_BEGINDRAGA
TVN_BEGINRDRAG* = TVN_BEGINRDRAGA
TVN_DELETEITEM* = TVN_DELETEITEMA
TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITA
TVN_ENDLABELEDIT* = TVN_ENDLABELEDITA
WC_TABCONTROL* = WC_TABCONTROLA
MONTHCAL_CLASS* = MONTHCAL_CLASSA
DATETIMEPICK_CLASS* = DATETIMEPICK_CLASSA
WC_IPADDRESS* = WC_IPADDRESSA
WC_BUTTON* = WC_BUTTONA
WC_STATIC* = WC_STATICA
WC_EDIT* = WC_EDITA
WC_LISTBOX* = WC_LISTBOXA
WC_COMBOBOX* = WC_COMBOBOXA
WC_SCROLLBAR* = WC_SCROLLBARA
type
LPOFNHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
OPENFILENAMEA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HINSTANCE
lpstrFilter*: LPCSTR
lpstrCustomFilter*: LPSTR
nMaxCustFilter*: DWORD
nFilterIndex*: DWORD
lpstrFile*: LPSTR
nMaxFile*: DWORD
lpstrFileTitle*: LPSTR
nMaxFileTitle*: DWORD
lpstrInitialDir*: LPCSTR
lpstrTitle*: LPCSTR
Flags*: DWORD
nFileOffset*: WORD
nFileExtension*: WORD
lpstrDefExt*: LPCSTR
lCustData*: LPARAM
lpfnHook*: LPOFNHOOKPROC
lpTemplateName*: LPCSTR
pvReserved*: pointer
dwReserved*: DWORD
FlagsEx*: DWORD
LPOPENFILENAMEA* = ptr OPENFILENAMEA
OPENFILENAMEW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HINSTANCE
lpstrFilter*: LPCWSTR
lpstrCustomFilter*: LPWSTR
nMaxCustFilter*: DWORD
nFilterIndex*: DWORD
lpstrFile*: LPWSTR
nMaxFile*: DWORD
lpstrFileTitle*: LPWSTR
nMaxFileTitle*: DWORD
lpstrInitialDir*: LPCWSTR
lpstrTitle*: LPCWSTR
Flags*: DWORD
nFileOffset*: WORD
nFileExtension*: WORD
lpstrDefExt*: LPCWSTR
lCustData*: LPARAM
lpfnHook*: LPOFNHOOKPROC
lpTemplateName*: LPCWSTR
pvReserved*: pointer
dwReserved*: DWORD
FlagsEx*: DWORD
LPOPENFILENAMEW* = ptr OPENFILENAMEW
LPCCHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
TCHOOSECOLORA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HWND
rgbResult*: COLORREF
lpCustColors*: ptr COLORREF
Flags*: DWORD
lCustData*: LPARAM
lpfnHook*: LPCCHOOKPROC
lpTemplateName*: LPCSTR
LPCHOOSECOLORA* = ptr TCHOOSECOLORA
TCHOOSECOLORW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HWND
rgbResult*: COLORREF
lpCustColors*: ptr COLORREF
Flags*: DWORD
lCustData*: LPARAM
lpfnHook*: LPCCHOOKPROC
lpTemplateName*: LPCWSTR
LPCHOOSECOLORW* = ptr TCHOOSECOLORW
LPFRHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
FINDREPLACEA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HINSTANCE
Flags*: DWORD
lpstrFindWhat*: LPSTR
lpstrReplaceWith*: LPSTR
wFindWhatLen*: WORD
wReplaceWithLen*: WORD
lCustData*: LPARAM
lpfnHook*: LPFRHOOKPROC
lpTemplateName*: LPCSTR
LPFINDREPLACEA* = ptr FINDREPLACEA
FINDREPLACEW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hInstance*: HINSTANCE
Flags*: DWORD
lpstrFindWhat*: LPWSTR
lpstrReplaceWith*: LPWSTR
wFindWhatLen*: WORD
wReplaceWithLen*: WORD
lCustData*: LPARAM
lpfnHook*: LPFRHOOKPROC
lpTemplateName*: LPCWSTR
LPFINDREPLACEW* = ptr FINDREPLACEW
LPCFHOOKPROC* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
TCHOOSEFONTA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDC*: HDC
lpLogFont*: LPLOGFONTA
iPointSize*: INT
Flags*: DWORD
rgbColors*: COLORREF
lCustData*: LPARAM
lpfnHook*: LPCFHOOKPROC
lpTemplateName*: LPCSTR
hInstance*: HINSTANCE
lpszStyle*: LPSTR
nFontType*: WORD
MISSING_ALIGNMENT*: WORD
nSizeMin*: INT
nSizeMax*: INT
LPCHOOSEFONTA* = ptr TCHOOSEFONTA
TCHOOSEFONTW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDC*: HDC
lpLogFont*: LPLOGFONTW
iPointSize*: INT
Flags*: DWORD
rgbColors*: COLORREF
lCustData*: LPARAM
lpfnHook*: LPCFHOOKPROC
lpTemplateName*: LPCWSTR
hInstance*: HINSTANCE
lpszStyle*: LPWSTR
nFontType*: WORD
MISSING_ALIGNMENT*: WORD
nSizeMin*: INT
nSizeMax*: INT
LPCHOOSEFONTW* = ptr TCHOOSEFONTW
PRINTPAGERANGE* {.pure.} = object
nFromPage*: DWORD
nToPage*: DWORD
LPPRINTPAGERANGE* = ptr PRINTPAGERANGE
TPRINTDLGEXA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDevMode*: HGLOBAL
hDevNames*: HGLOBAL
hDC*: HDC
Flags*: DWORD
Flags2*: DWORD
ExclusionFlags*: DWORD
nPageRanges*: DWORD
nMaxPageRanges*: DWORD
lpPageRanges*: LPPRINTPAGERANGE
nMinPage*: DWORD
nMaxPage*: DWORD
nCopies*: DWORD
hInstance*: HINSTANCE
lpPrintTemplateName*: LPCSTR
lpCallback*: LPUNKNOWN
nPropertyPages*: DWORD
lphPropertyPages*: ptr HPROPSHEETPAGE
nStartPage*: DWORD
dwResultAction*: DWORD
LPPRINTDLGEXA* = ptr TPRINTDLGEXA
TPRINTDLGEXW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDevMode*: HGLOBAL
hDevNames*: HGLOBAL
hDC*: HDC
Flags*: DWORD
Flags2*: DWORD
ExclusionFlags*: DWORD
nPageRanges*: DWORD
nMaxPageRanges*: DWORD
lpPageRanges*: LPPRINTPAGERANGE
nMinPage*: DWORD
nMaxPage*: DWORD
nCopies*: DWORD
hInstance*: HINSTANCE
lpPrintTemplateName*: LPCWSTR
lpCallback*: LPUNKNOWN
nPropertyPages*: DWORD
lphPropertyPages*: ptr HPROPSHEETPAGE
nStartPage*: DWORD
dwResultAction*: DWORD
LPPRINTDLGEXW* = ptr TPRINTDLGEXW
DEVNAMES* {.pure.} = object
wDriverOffset*: WORD
wDeviceOffset*: WORD
wOutputOffset*: WORD
wDefault*: WORD
LPPAGESETUPHOOK* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
LPPAGEPAINTHOOK* = proc (P1: HWND, P2: UINT, P3: WPARAM, P4: LPARAM): UINT_PTR {.stdcall.}
TPAGESETUPDLGA* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDevMode*: HGLOBAL
hDevNames*: HGLOBAL
Flags*: DWORD
ptPaperSize*: POINT
rtMinMargin*: RECT
rtMargin*: RECT
hInstance*: HINSTANCE
lCustData*: LPARAM
lpfnPageSetupHook*: LPPAGESETUPHOOK
lpfnPagePaintHook*: LPPAGEPAINTHOOK
lpPageSetupTemplateName*: LPCSTR
hPageSetupTemplate*: HGLOBAL
LPPAGESETUPDLGA* = ptr TPAGESETUPDLGA
TPAGESETUPDLGW* {.pure.} = object
lStructSize*: DWORD
hwndOwner*: HWND
hDevMode*: HGLOBAL
hDevNames*: HGLOBAL
Flags*: DWORD
ptPaperSize*: POINT
rtMinMargin*: RECT
rtMargin*: RECT
hInstance*: HINSTANCE
lCustData*: LPARAM
lpfnPageSetupHook*: LPPAGESETUPHOOK
lpfnPagePaintHook*: LPPAGEPAINTHOOK
lpPageSetupTemplateName*: LPCWSTR
hPageSetupTemplate*: HGLOBAL
LPPAGESETUPDLGW* = ptr TPAGESETUPDLGW
const
IID_IPrintDialogCallback* = DEFINE_GUID("5852a2c3-6530-11d1-b6a3-0000f8757bf9")
OFN_OVERWRITEPROMPT* = 0x2
OFN_NOCHANGEDIR* = 0x8
OFN_ENABLEHOOK* = 0x20
OFN_ALLOWMULTISELECT* = 0x200
OFN_FILEMUSTEXIST* = 0x1000
OFN_CREATEPROMPT* = 0x2000
OFN_EXPLORER* = 0x80000
OFN_NODEREFERENCELINKS* = 0x100000
CC_RGBINIT* = 0x1
CC_FULLOPEN* = 0x2
CC_SHOWHELP* = 0x8
CC_ENABLEHOOK* = 0x10
CC_ANYCOLOR* = 0x100
FR_DOWN* = 0x1
FR_WHOLEWORD* = 0x2
FR_MATCHCASE* = 0x4
FR_FINDNEXT* = 0x8
FR_REPLACE* = 0x10
FR_REPLACEALL* = 0x20
FR_DIALOGTERM* = 0x40
FR_SHOWHELP* = 0x80
FR_ENABLEHOOK* = 0x100
FR_NOUPDOWN* = 0x400
FR_NOMATCHCASE* = 0x800
FR_NOWHOLEWORD* = 0x1000
FR_HIDEUPDOWN* = 0x4000
FR_HIDEMATCHCASE* = 0x8000
FR_HIDEWHOLEWORD* = 0x10000
CF_SHOWHELP* = 0x4
CF_ENABLEHOOK* = 0x8
CF_INITTOLOGFONTSTRUCT* = 0x40
CF_EFFECTS* = 0x100
CF_APPLY* = 0x200
CF_ANSIONLY* = 0x400
CF_SCRIPTSONLY* = CF_ANSIONLY
CF_LIMITSIZE* = 0x2000
WM_CHOOSEFONT_GETLOGFONT* = WM_USER+1
FINDMSGSTRINGA* = "commdlg_FindReplace"
FINDMSGSTRINGW* = "commdlg_FindReplace"
PD_SELECTION* = 0x1
PD_PAGENUMS* = 0x2
PD_NOSELECTION* = 0x4
PD_NOPAGENUMS* = 0x8
PD_COLLATE* = 0x10
PD_PRINTTOFILE* = 0x20
PD_DISABLEPRINTTOFILE* = 0x80000
PD_CURRENTPAGE* = 0x400000
PD_NOCURRENTPAGE* = 0x800000
START_PAGE_GENERAL* = 0xffffffff'i32
PD_RESULT_PRINT* = 1
PD_RESULT_APPLY* = 2
PSD_MINMARGINS* = 0x1
PSD_MARGINS* = 0x2
PSD_INHUNDREDTHSOFMILLIMETERS* = 0x8
PSD_DISABLEMARGINS* = 0x10
PSD_DISABLEPRINTER* = 0x20
PSD_DISABLEORIENTATION* = 0x100
PSD_RETURNDEFAULT* = 0x400
PSD_DISABLEPAPER* = 0x200
PSD_SHOWHELP* = 0x800
PSD_ENABLEPAGESETUPHOOK* = 0x2000
type
IPrintDialogCallback* {.pure.} = object
lpVtbl*: ptr IPrintDialogCallbackVtbl
IPrintDialogCallbackVtbl* {.pure, inheritable.} = object of IUnknownVtbl
InitDone*: proc(self: ptr IPrintDialogCallback): HRESULT {.stdcall.}
SelectionChange*: proc(self: ptr IPrintDialogCallback): HRESULT {.stdcall.}
HandleMessage*: proc(self: ptr IPrintDialogCallback, hDlg: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pResult: ptr LRESULT): HRESULT {.stdcall.}
IPrintDialogServices* {.pure.} = object
lpVtbl*: ptr IPrintDialogServicesVtbl
IPrintDialogServicesVtbl* {.pure, inheritable.} = object of IUnknownVtbl
GetCurrentDevMode*: proc(self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT): HRESULT {.stdcall.}
GetCurrentPrinterName*: proc(self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT): HRESULT {.stdcall.}
GetCurrentPortName*: proc(self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT): HRESULT {.stdcall.}
proc InitDone*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.InitDone(self)
proc SelectionChange*(self: ptr IPrintDialogCallback): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SelectionChange(self)
proc HandleMessage*(self: ptr IPrintDialogCallback, hDlg: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, pResult: ptr LRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HandleMessage(self, hDlg, uMsg, wParam, lParam, pResult)
proc GetCurrentDevMode*(self: ptr IPrintDialogServices, pDevMode: LPDEVMODE, pcbSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentDevMode(self, pDevMode, pcbSize)
proc GetCurrentPrinterName*(self: ptr IPrintDialogServices, pPrinterName: LPTSTR, pcchSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPrinterName(self, pPrinterName, pcchSize)
proc GetCurrentPortName*(self: ptr IPrintDialogServices, pPortName: LPTSTR, pcchSize: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentPortName(self, pPortName, pcchSize)
converter winimConverterIPrintDialogCallbackToIUnknown*(x: ptr IPrintDialogCallback): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIPrintDialogServicesToIUnknown*(x: ptr IPrintDialogServices): ptr IUnknown = cast[ptr IUnknown](x)
when winimUnicode:
type
OPENFILENAME* = OPENFILENAMEW
TCHOOSECOLOR* = TCHOOSECOLORW
FINDREPLACE* = FINDREPLACEW
TCHOOSEFONT* = TCHOOSEFONTW
TPRINTDLGEX* = TPRINTDLGEXW
TPAGESETUPDLG* = TPAGESETUPDLGW
const
FINDMSGSTRING* = FINDMSGSTRINGW
proc GetOpenFileName*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameW".}
proc GetSaveFileName*(P1: LPOPENFILENAMEW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameW".}
proc ChooseColor*(P1: LPCHOOSECOLORW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorW".}
proc FindText*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextW".}
proc ReplaceText*(P1: LPFINDREPLACEW): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextW".}
proc ChooseFont*(P1: LPCHOOSEFONTW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontW".}
proc PrintDlgEx*(P1: LPPRINTDLGEXW): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExW".}
proc PageSetupDlg*(P1: LPPAGESETUPDLGW): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgW".}
when winimAnsi:
type
OPENFILENAME* = OPENFILENAMEA
TCHOOSECOLOR* = TCHOOSECOLORA
FINDREPLACE* = FINDREPLACEA
TCHOOSEFONT* = TCHOOSEFONTA
TPRINTDLGEX* = TPRINTDLGEXA
TPAGESETUPDLG* = TPAGESETUPDLGA
const
FINDMSGSTRING* = FINDMSGSTRINGA
proc GetOpenFileName*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetOpenFileNameA".}
proc GetSaveFileName*(P1: LPOPENFILENAMEA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "GetSaveFileNameA".}
proc ChooseColor*(P1: LPCHOOSECOLORA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseColorA".}
proc FindText*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "FindTextA".}
proc ReplaceText*(P1: LPFINDREPLACEA): HWND {.winapi, stdcall, dynlib: "comdlg32", importc: "ReplaceTextA".}
proc ChooseFont*(P1: LPCHOOSEFONTA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "ChooseFontA".}
proc PrintDlgEx*(P1: LPPRINTDLGEXA): HRESULT {.winapi, stdcall, dynlib: "comdlg32", importc: "PrintDlgExA".}
proc PageSetupDlg*(P1: LPPAGESETUPDLGA): WINBOOL {.winapi, stdcall, dynlib: "comdlg32", importc: "PageSetupDlgA".}
type
CHARRANGE* {.pure.} = object
cpMin*: LONG
cpMax*: LONG
const
MSFTEDIT_CLASS* = "RICHEDIT50W"
EM_EXLIMITTEXT* = WM_USER+53
EM_EXLINEFROMCHAR* = WM_USER+54
EM_SETBKGNDCOLOR* = WM_USER+67
EM_SETCHARFORMAT* = WM_USER+68
EM_SETEVENTMASK* = WM_USER+69
EM_SETPARAFORMAT* = WM_USER+71
EM_STREAMIN* = WM_USER+73
EM_STREAMOUT* = WM_USER+74
EM_GETTEXTRANGE* = WM_USER+75
EM_REDO* = WM_USER+84
EM_CANREDO* = WM_USER+85
EM_AUTOURLDETECT* = WM_USER+91
EM_GETTEXTLENGTHEX* = WM_USER+95
EM_SETTEXTEX* = WM_USER+97
EM_SETZOOM* = WM_USER+225
EN_REQUESTRESIZE* = 0x0701
EN_LINK* = 0x070b
ENM_CHANGE* = 0x00000001
ENM_UPDATE* = 0x00000002
ENM_REQUESTRESIZE* = 0x00040000
ENM_LINK* = 0x04000000
CFM_BOLD* = 0x00000001
CFM_ITALIC* = 0x00000002
CFM_UNDERLINE* = 0x00000004
CFM_STRIKEOUT* = 0x00000008
CFM_LINK* = 0x00000020
CFM_SIZE* = 0x80000000'i32
CFM_COLOR* = 0x40000000
CFM_FACE* = 0x20000000
CFM_CHARSET* = 0x08000000
CFE_UNDERLINE* = 0x00000004
CFE_PROTECTED* = 0x00000010
CFM_WEIGHT* = 0x00400000
CFM_BACKCOLOR* = 0x04000000
CFM_EFFECTS* = CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_COLOR or CFM_STRIKEOUT or CFE_PROTECTED or CFM_LINK
SCF_SELECTION* = 0x0001
SCF_DEFAULT* = 0x0000
SF_RTF* = 0x0002
SFF_SELECTION* = 0x8000
MAX_TAB_STOPS* = 32
PFM_STARTINDENT* = 0x00000001
PFM_RIGHTINDENT* = 0x00000002
PFM_OFFSET* = 0x00000004
PFM_ALIGNMENT* = 0x00000008
PFM_TABSTOPS* = 0x00000010
PFM_NUMBERING* = 0x00000020
PFM_SPACEBEFORE* = 0x00000040
PFM_SPACEAFTER* = 0x00000080
PFM_LINESPACING* = 0x00000100
PFN_BULLET* = 1
PFN_ARABIC* = 2
PFN_LCLETTER* = 3
PFN_UCLETTER* = 4
PFN_LCROMAN* = 5
PFN_UCROMAN* = 6
PFA_LEFT* = 1
PFA_RIGHT* = 2
PFA_CENTER* = 3
PFA_JUSTIFY* = 4
ST_SELECTION* = 2
GTL_DEFAULT* = 0
AURL_ENABLEEA* = 1
type
EDITSTREAMCALLBACK* = proc (dwCookie: DWORD_PTR, pbBuff: LPBYTE, cb: LONG, pcb: ptr LONG): DWORD {.stdcall.}
CHARFORMAT2W_UNION1* {.pure, union.} = object
dwReserved*: DWORD
dwCookie*: DWORD
CHARFORMAT2W* {.pure.} = object
cbSize*: UINT
dwMask*: DWORD
dwEffects*: DWORD
yHeight*: LONG
yOffset*: LONG
crTextColor*: COLORREF
bCharSet*: BYTE
bPitchAndFamily*: BYTE
szFaceName*: array[LF_FACESIZE, WCHAR]
wWeight*: WORD
sSpacing*: SHORT
crBackColor*: COLORREF
lcid*: LCID
union1*: CHARFORMAT2W_UNION1
sStyle*: SHORT
wKerning*: WORD
bUnderlineType*: BYTE
bAnimation*: BYTE
bRevAuthor*: BYTE
bUnderlineColor*: BYTE
CHARFORMAT2A_UNION1* {.pure, union.} = object
dwReserved*: DWORD
dwCookie*: DWORD
CHARFORMAT2A* {.pure.} = object
cbSize*: UINT
dwMask*: DWORD
dwEffects*: DWORD
yHeight*: LONG
yOffset*: LONG
crTextColor*: COLORREF
bCharSet*: BYTE
bPitchAndFamily*: BYTE
szFaceName*: array[LF_FACESIZE, char]
wWeight*: WORD
sSpacing*: SHORT
crBackColor*: COLORREF
lcid*: LCID
union1*: CHARFORMAT2A_UNION1
sStyle*: SHORT
wKerning*: WORD
bUnderlineType*: BYTE
bAnimation*: BYTE
bRevAuthor*: BYTE
bUnderlineColor*: BYTE
TEXTRANGEA* {.pure.} = object
chrg*: CHARRANGE
lpstrText*: LPSTR
TEXTRANGEW* {.pure.} = object
chrg*: CHARRANGE
lpstrText*: LPWSTR
EDITSTREAM* {.pure, packed.} = object
dwCookie*: DWORD_PTR
dwError*: DWORD
pfnCallback*: EDITSTREAMCALLBACK
PARAFORMAT2_UNION1* {.pure, union.} = object
wReserved*: WORD
wEffects*: WORD
PARAFORMAT2* {.pure.} = object
cbSize*: UINT
dwMask*: DWORD
wNumbering*: WORD
union1*: PARAFORMAT2_UNION1
dxStartIndent*: LONG
dxRightIndent*: LONG
dxOffset*: LONG
wAlignment*: WORD
cTabCount*: SHORT
rgxTabs*: array[MAX_TAB_STOPS, LONG]
dySpaceBefore*: LONG
dySpaceAfter*: LONG
dyLineSpacing*: LONG
sStyle*: SHORT
bLineSpacingRule*: BYTE
bOutlineLevel*: BYTE
wShadingWeight*: WORD
wShadingStyle*: WORD
wNumberingStart*: WORD
wNumberingStyle*: WORD
wNumberingTab*: WORD
wBorderSpace*: WORD
wBorderWidth*: WORD
wBorders*: WORD
REQRESIZE* {.pure.} = object
nmhdr*: NMHDR
rc*: RECT
TENLINK* {.pure, packed.} = object
nmhdr*: NMHDR
msg*: UINT
wParam*: WPARAM
lParam*: LPARAM
chrg*: CHARRANGE
SETTEXTEX* {.pure.} = object
flags*: DWORD
codepage*: UINT
GETTEXTLENGTHEX* {.pure.} = object
flags*: DWORD
codepage*: UINT
proc `dwReserved=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} = self.union1.dwReserved = x
proc dwReserved*(self: CHARFORMAT2W): DWORD {.inline.} = self.union1.dwReserved
proc dwReserved*(self: var CHARFORMAT2W): var DWORD {.inline.} = self.union1.dwReserved
proc `dwCookie=`*(self: var CHARFORMAT2W, x: DWORD) {.inline.} = self.union1.dwCookie = x
proc dwCookie*(self: CHARFORMAT2W): DWORD {.inline.} = self.union1.dwCookie
proc dwCookie*(self: var CHARFORMAT2W): var DWORD {.inline.} = self.union1.dwCookie
proc `dwReserved=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} = self.union1.dwReserved = x
proc dwReserved*(self: CHARFORMAT2A): DWORD {.inline.} = self.union1.dwReserved
proc dwReserved*(self: var CHARFORMAT2A): var DWORD {.inline.} = self.union1.dwReserved
proc `dwCookie=`*(self: var CHARFORMAT2A, x: DWORD) {.inline.} = self.union1.dwCookie = x
proc dwCookie*(self: CHARFORMAT2A): DWORD {.inline.} = self.union1.dwCookie
proc dwCookie*(self: var CHARFORMAT2A): var DWORD {.inline.} = self.union1.dwCookie
proc `wReserved=`*(self: var PARAFORMAT2, x: WORD) {.inline.} = self.union1.wReserved = x
proc wReserved*(self: PARAFORMAT2): WORD {.inline.} = self.union1.wReserved
proc wReserved*(self: var PARAFORMAT2): var WORD {.inline.} = self.union1.wReserved
proc `wEffects=`*(self: var PARAFORMAT2, x: WORD) {.inline.} = self.union1.wEffects = x
proc wEffects*(self: PARAFORMAT2): WORD {.inline.} = self.union1.wEffects
proc wEffects*(self: var PARAFORMAT2): var WORD {.inline.} = self.union1.wEffects
when winimUnicode:
type
CHARFORMAT2* = CHARFORMAT2W
TEXTRANGE* = TEXTRANGEW
when winimAnsi:
type
CHARFORMAT2* = CHARFORMAT2A
TEXTRANGE* = TEXTRANGEA
type
SIGDN* = int32
SIATTRIBFLAGS* = int32
THUMBBUTTONFLAGS* = int32
THUMBBUTTONMASK* = int32
TBPFLAG* = int32
FDE_OVERWRITE_RESPONSE* = int32
FDE_SHAREVIOLATION_RESPONSE* = int32
FDAP* = int32
HDROP* = HANDLE
SHCONTF* = DWORD
SFGAOF* = ULONG
SICHINTF* = DWORD
FILEOPENDIALOGOPTIONS* = DWORD
HTHEME* = HANDLE
NOTIFYICONDATAA_UNION1* {.pure, union.} = object
uTimeout*: UINT
uVersion*: UINT
NOTIFYICONDATAA* {.pure.} = object
cbSize*: DWORD
hWnd*: HWND
uID*: UINT
uFlags*: UINT
uCallbackMessage*: UINT
hIcon*: HICON
szTip*: array[128, CHAR]
dwState*: DWORD
dwStateMask*: DWORD
szInfo*: array[256, CHAR]
union1*: NOTIFYICONDATAA_UNION1
szInfoTitle*: array[64, CHAR]
dwInfoFlags*: DWORD
guidItem*: GUID
hBalloonIcon*: HICON
PNOTIFYICONDATAA* = ptr NOTIFYICONDATAA
NOTIFYICONDATAW_UNION1* {.pure, union.} = object
uTimeout*: UINT
uVersion*: UINT
NOTIFYICONDATAW* {.pure.} = object
cbSize*: DWORD
hWnd*: HWND
uID*: UINT
uFlags*: UINT
uCallbackMessage*: UINT
hIcon*: HICON
szTip*: array[128, WCHAR]
dwState*: DWORD
dwStateMask*: DWORD
szInfo*: array[256, WCHAR]
union1*: NOTIFYICONDATAW_UNION1
szInfoTitle*: array[64, WCHAR]
dwInfoFlags*: DWORD
guidItem*: GUID
hBalloonIcon*: HICON
PNOTIFYICONDATAW* = ptr NOTIFYICONDATAW
IAutoComplete* {.pure.} = object
lpVtbl*: ptr IAutoCompleteVtbl
IAutoCompleteVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Init*: proc(self: ptr IAutoComplete, hwndEdit: HWND, punkACL: ptr IUnknown, pwszRegKeyPath: LPCWSTR, pwszQuickComplete: LPCWSTR): HRESULT {.stdcall.}
Enable*: proc(self: ptr IAutoComplete, fEnable: WINBOOL): HRESULT {.stdcall.}
IAutoComplete2* {.pure.} = object
lpVtbl*: ptr IAutoComplete2Vtbl
IAutoComplete2Vtbl* {.pure, inheritable.} = object of IAutoCompleteVtbl
SetOptions*: proc(self: ptr IAutoComplete2, dwFlag: DWORD): HRESULT {.stdcall.}
GetOptions*: proc(self: ptr IAutoComplete2, pdwFlag: ptr DWORD): HRESULT {.stdcall.}
THUMBBUTTON* {.pure.} = object
dwMask*: THUMBBUTTONMASK
iId*: UINT
iBitmap*: UINT
hIcon*: HICON
szTip*: array[260, WCHAR]
dwFlags*: THUMBBUTTONFLAGS
LPTHUMBBUTTON* = ptr THUMBBUTTON
BFFCALLBACK* = proc (hwnd: HWND, uMsg: UINT, lParam: LPARAM, lpData: LPARAM): int32 {.stdcall.}
BROWSEINFOA* {.pure.} = object
hwndOwner*: HWND
pidlRoot*: PCIDLIST_ABSOLUTE
pszDisplayName*: LPSTR
lpszTitle*: LPCSTR
ulFlags*: UINT
lpfn*: BFFCALLBACK
lParam*: LPARAM
iImage*: int32
LPBROWSEINFOA* = ptr BROWSEINFOA
BROWSEINFOW* {.pure.} = object
hwndOwner*: HWND
pidlRoot*: PCIDLIST_ABSOLUTE
pszDisplayName*: LPWSTR
lpszTitle*: LPCWSTR
ulFlags*: UINT
lpfn*: BFFCALLBACK
lParam*: LPARAM
iImage*: int32
LPBROWSEINFOW* = ptr BROWSEINFOW
const
NIN_BALLOONTIMEOUT* = WM_USER+4
NIN_BALLOONUSERCLICK* = WM_USER+5
NIM_ADD* = 0x00000000
NIM_MODIFY* = 0x00000001
NIM_DELETE* = 0x00000002
NIM_SETVERSION* = 0x00000004
NIF_MESSAGE* = 0x00000001
NIF_ICON* = 0x00000002
NIF_TIP* = 0x00000004
NIF_INFO* = 0x00000010
NIIF_NONE* = 0x00000000
NIIF_INFO* = 0x00000001
NIIF_WARNING* = 0x00000002
NIIF_ERROR* = 0x00000003
IID_IAutoComplete* = DEFINE_GUID("00bb2762-6a77-11d0-a535-00c04fd7d062")
ACO_AUTOSUGGEST* = 0x1
IID_IAutoComplete2* = DEFINE_GUID("eac04bc0-3791-11d2-bb95-0060977b464c")
IID_IObjMgr* = DEFINE_GUID("00bb2761-6a77-11d0-a535-00c04fd7d062")
IID_IACList2* = DEFINE_GUID("470141a0-5186-11d2-bbb6-0060977b464c")
CLSID_AutoComplete* = DEFINE_GUID("00bb2763-6a77-11d0-a535-00c04fd7d062")
CLSID_ACLHistory* = DEFINE_GUID("00bb2764-6a77-11d0-a535-00c04fd7d062")
CLSID_ACListISF* = DEFINE_GUID("03c036f1-a186-11d0-824a-00aa005b4383")
CLSID_ACLMRU* = DEFINE_GUID("6756a641-de71-11d0-831b-00aa005b4383")
CLSID_ACLMulti* = DEFINE_GUID("00bb2765-6a77-11d0-a535-00c04fd7d062")
SIGDN_FILESYSPATH* = int32 0x80058000'i32
IID_IShellItem* = DEFINE_GUID("43826d1e-e718-42ee-bc55-a1e261c37bfe")
TBPF_NOPROGRESS* = 0x0
TBPF_INDETERMINATE* = 0x1
TBPF_NORMAL* = 0x2
TBPF_ERROR* = 0x4
TBPF_PAUSED* = 0x8
IID_ITaskbarList3* = DEFINE_GUID("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")
FOS_PICKFOLDERS* = 0x20
FOS_FORCEFILESYSTEM* = 0x40
IID_IFileOpenDialog* = DEFINE_GUID("d57c7288-d4ad-4768-be02-9d969532d960")
CLSID_TaskbarList* = DEFINE_GUID("56fdf344-fd6d-11d0-958a-006097c9a090")
CLSID_FileOpenDialog* = DEFINE_GUID("dc1c5a9c-e88a-4dde-a5a1-60f82a20aef7")
CSIDL_DESKTOP* = 0x0000
BIF_RETURNONLYFSDIRS* = 0x00000001
BIF_EDITBOX* = 0x00000010
BIF_NEWDIALOGSTYLE* = 0x00000040
BIF_USENEWUI* = BIF_NEWDIALOGSTYLE or BIF_EDITBOX
BIF_NONEWFOLDERBUTTON* = 0x00000200
BFFM_INITIALIZED* = 1
BFFM_SETSELECTIONA* = WM_USER+102
BFFM_SETSELECTIONW* = WM_USER+103
ACLO_FILESYSONLY* = 16
ACLO_FILESYSDIRS* = 32
type
DLLVERSIONINFO* {.pure.} = object
cbSize*: DWORD
dwMajorVersion*: DWORD
dwMinorVersion*: DWORD
dwBuildNumber*: DWORD
dwPlatformID*: DWORD
IShellItem* {.pure.} = object
lpVtbl*: ptr IShellItemVtbl
IShellItemVtbl* {.pure, inheritable.} = object of IUnknownVtbl
BindToHandler*: proc(self: ptr IShellItem, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
GetParent*: proc(self: ptr IShellItem, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
GetDisplayName*: proc(self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR): HRESULT {.stdcall.}
GetAttributes*: proc(self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.stdcall.}
Compare*: proc(self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32): HRESULT {.stdcall.}
IEnumShellItems* {.pure.} = object
lpVtbl*: ptr IEnumShellItemsVtbl
IEnumShellItemsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Next*: proc(self: ptr IEnumShellItems, celt: ULONG, rgelt: ptr ptr IShellItem, pceltFetched: ptr ULONG): HRESULT {.stdcall.}
Skip*: proc(self: ptr IEnumShellItems, celt: ULONG): HRESULT {.stdcall.}
Reset*: proc(self: ptr IEnumShellItems): HRESULT {.stdcall.}
Clone*: proc(self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems): HRESULT {.stdcall.}
IShellItemArray* {.pure.} = object
lpVtbl*: ptr IShellItemArrayVtbl
IShellItemArrayVtbl* {.pure, inheritable.} = object of IUnknownVtbl
BindToHandler*: proc(self: ptr IShellItemArray, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.stdcall.}
GetPropertyStore*: proc(self: ptr IShellItemArray, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
GetPropertyDescriptionList*: proc(self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.stdcall.}
GetAttributes*: proc(self: ptr IShellItemArray, AttribFlags: SIATTRIBFLAGS, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.stdcall.}
GetCount*: proc(self: ptr IShellItemArray, pdwNumItems: ptr DWORD): HRESULT {.stdcall.}
GetItemAt*: proc(self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
EnumItems*: proc(self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems): HRESULT {.stdcall.}
ITaskbarList* {.pure.} = object
lpVtbl*: ptr ITaskbarListVtbl
ITaskbarListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
HrInit*: proc(self: ptr ITaskbarList): HRESULT {.stdcall.}
AddTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
DeleteTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
ActivateTab*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
SetActiveAlt*: proc(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.stdcall.}
ITaskbarList2* {.pure.} = object
lpVtbl*: ptr ITaskbarList2Vtbl
ITaskbarList2Vtbl* {.pure, inheritable.} = object of ITaskbarListVtbl
MarkFullscreenWindow*: proc(self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL): HRESULT {.stdcall.}
ITaskbarList3* {.pure.} = object
lpVtbl*: ptr ITaskbarList3Vtbl
ITaskbarList3Vtbl* {.pure, inheritable.} = object of ITaskbarList2Vtbl
SetProgressValue*: proc(self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.stdcall.}
SetProgressState*: proc(self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG): HRESULT {.stdcall.}
RegisterTab*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND): HRESULT {.stdcall.}
UnregisterTab*: proc(self: ptr ITaskbarList3, hwndTab: HWND): HRESULT {.stdcall.}
SetTabOrder*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND): HRESULT {.stdcall.}
SetTabActive*: proc(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD): HRESULT {.stdcall.}
ThumbBarAddButtons*: proc(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.stdcall.}
ThumbBarUpdateButtons*: proc(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.stdcall.}
ThumbBarSetImageList*: proc(self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST): HRESULT {.stdcall.}
SetOverlayIcon*: proc(self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR): HRESULT {.stdcall.}
SetThumbnailTooltip*: proc(self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR): HRESULT {.stdcall.}
SetThumbnailClip*: proc(self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT): HRESULT {.stdcall.}
IModalWindow* {.pure.} = object
lpVtbl*: ptr IModalWindowVtbl
IModalWindowVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Show*: proc(self: ptr IModalWindow, hwndOwner: HWND): HRESULT {.stdcall.}
IShellItemFilter* {.pure.} = object
lpVtbl*: ptr IShellItemFilterVtbl
IShellItemFilterVtbl* {.pure, inheritable.} = object of IUnknownVtbl
IncludeItem*: proc(self: ptr IShellItemFilter, psi: ptr IShellItem): HRESULT {.stdcall.}
GetEnumFlagsForItem*: proc(self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF): HRESULT {.stdcall.}
IFileDialog* {.pure.} = object
lpVtbl*: ptr IFileDialogVtbl
IFileDialogVtbl* {.pure, inheritable.} = object of IModalWindowVtbl
SetFileTypes*: proc(self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC): HRESULT {.stdcall.}
SetFileTypeIndex*: proc(self: ptr IFileDialog, iFileType: UINT): HRESULT {.stdcall.}
GetFileTypeIndex*: proc(self: ptr IFileDialog, piFileType: ptr UINT): HRESULT {.stdcall.}
Advise*: proc(self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD): HRESULT {.stdcall.}
Unadvise*: proc(self: ptr IFileDialog, dwCookie: DWORD): HRESULT {.stdcall.}
SetOptions*: proc(self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
GetOptions*: proc(self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS): HRESULT {.stdcall.}
SetDefaultFolder*: proc(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
SetFolder*: proc(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.stdcall.}
GetFolder*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
GetCurrentSelection*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
SetFileName*: proc(self: ptr IFileDialog, pszName: LPCWSTR): HRESULT {.stdcall.}
GetFileName*: proc(self: ptr IFileDialog, pszName: ptr LPWSTR): HRESULT {.stdcall.}
SetTitle*: proc(self: ptr IFileDialog, pszTitle: LPCWSTR): HRESULT {.stdcall.}
SetOkButtonLabel*: proc(self: ptr IFileDialog, pszText: LPCWSTR): HRESULT {.stdcall.}
SetFileNameLabel*: proc(self: ptr IFileDialog, pszLabel: LPCWSTR): HRESULT {.stdcall.}
GetResult*: proc(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.stdcall.}
AddPlace*: proc(self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP): HRESULT {.stdcall.}
SetDefaultExtension*: proc(self: ptr IFileDialog, pszDefaultExtension: LPCWSTR): HRESULT {.stdcall.}
Close*: proc(self: ptr IFileDialog, hr: HRESULT): HRESULT {.stdcall.}
SetClientGuid*: proc(self: ptr IFileDialog, guid: REFGUID): HRESULT {.stdcall.}
ClearClientData*: proc(self: ptr IFileDialog): HRESULT {.stdcall.}
SetFilter*: proc(self: ptr IFileDialog, pFilter: ptr IShellItemFilter): HRESULT {.stdcall.}
IFileDialogEvents* {.pure.} = object
lpVtbl*: ptr IFileDialogEventsVtbl
IFileDialogEventsVtbl* {.pure, inheritable.} = object of IUnknownVtbl
OnFileOk*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
OnFolderChanging*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem): HRESULT {.stdcall.}
OnFolderChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
OnSelectionChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
OnShareViolation*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_SHAREVIOLATION_RESPONSE): HRESULT {.stdcall.}
OnTypeChange*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.stdcall.}
OnOverwrite*: proc(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_OVERWRITE_RESPONSE): HRESULT {.stdcall.}
IFileOpenDialog* {.pure.} = object
lpVtbl*: ptr IFileOpenDialogVtbl
IFileOpenDialogVtbl* {.pure, inheritable.} = object of IFileDialogVtbl
GetResults*: proc(self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray): HRESULT {.stdcall.}
GetSelectedItems*: proc(self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray): HRESULT {.stdcall.}
IObjMgr* {.pure.} = object
lpVtbl*: ptr IObjMgrVtbl
IObjMgrVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Append*: proc(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.stdcall.}
Remove*: proc(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.stdcall.}
IACList* {.pure.} = object
lpVtbl*: ptr IACListVtbl
IACListVtbl* {.pure, inheritable.} = object of IUnknownVtbl
Expand*: proc(self: ptr IACList, pszExpand: PCWSTR): HRESULT {.stdcall.}
IACList2* {.pure.} = object
lpVtbl*: ptr IACList2Vtbl
IACList2Vtbl* {.pure, inheritable.} = object of IACListVtbl
SetOptions*: proc(self: ptr IACList2, dwFlag: DWORD): HRESULT {.stdcall.}
GetOptions*: proc(self: ptr IACList2, pdwFlag: ptr DWORD): HRESULT {.stdcall.}
proc SHCreateItemFromParsingName*(pszPath: PCWSTR, pbc: ptr IBindCtx, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
proc ILFree*(pidl: PIDLIST_RELATIVE): void {.winapi, stdcall, dynlib: "shell32", importc.}
proc SHGetSpecialFolderLocation*(hwnd: HWND, csidl: int32, ppidl: ptr PIDLIST_ABSOLUTE): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
proc SHCreateDataObject*(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, pdtInner: ptr IDataObject, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
proc SHCreateStdEnumFmtEtc*(cfmt: UINT, afmt: ptr FORMATETC, ppenumFormatEtc: ptr ptr IEnumFORMATETC): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
proc SHDoDragDrop*(hwnd: HWND, pdata: ptr IDataObject, pdsrc: ptr IDropSource, dwEffect: DWORD, pdwEffect: ptr DWORD): HRESULT {.winapi, stdcall, dynlib: "shell32", importc.}
proc `uTimeout=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} = self.union1.uTimeout = x
proc uTimeout*(self: NOTIFYICONDATAA): UINT {.inline.} = self.union1.uTimeout
proc uTimeout*(self: var NOTIFYICONDATAA): var UINT {.inline.} = self.union1.uTimeout
proc `uVersion=`*(self: var NOTIFYICONDATAA, x: UINT) {.inline.} = self.union1.uVersion = x
proc uVersion*(self: NOTIFYICONDATAA): UINT {.inline.} = self.union1.uVersion
proc uVersion*(self: var NOTIFYICONDATAA): var UINT {.inline.} = self.union1.uVersion
proc `uTimeout=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} = self.union1.uTimeout = x
proc uTimeout*(self: NOTIFYICONDATAW): UINT {.inline.} = self.union1.uTimeout
proc uTimeout*(self: var NOTIFYICONDATAW): var UINT {.inline.} = self.union1.uTimeout
proc `uVersion=`*(self: var NOTIFYICONDATAW, x: UINT) {.inline.} = self.union1.uVersion = x
proc uVersion*(self: NOTIFYICONDATAW): UINT {.inline.} = self.union1.uVersion
proc uVersion*(self: var NOTIFYICONDATAW): var UINT {.inline.} = self.union1.uVersion
proc Init*(self: ptr IAutoComplete, hwndEdit: HWND, punkACL: ptr IUnknown, pwszRegKeyPath: LPCWSTR, pwszQuickComplete: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Init(self, hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
proc Enable*(self: ptr IAutoComplete, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Enable(self, fEnable)
proc SetOptions*(self: ptr IAutoComplete2, dwFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, dwFlag)
proc GetOptions*(self: ptr IAutoComplete2, pdwFlag: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pdwFlag)
proc BindToHandler*(self: ptr IShellItem, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppv)
proc GetParent*(self: ptr IShellItem, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetParent(self, ppsi)
proc GetDisplayName*(self: ptr IShellItem, sigdnName: SIGDN, ppszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDisplayName(self, sigdnName, ppszName)
proc GetAttributes*(self: ptr IShellItem, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributes(self, sfgaoMask, psfgaoAttribs)
proc Compare*(self: ptr IShellItem, psi: ptr IShellItem, hint: SICHINTF, piOrder: ptr int32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Compare(self, psi, hint, piOrder)
proc Next*(self: ptr IEnumShellItems, celt: ULONG, rgelt: ptr ptr IShellItem, pceltFetched: ptr ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Next(self, celt, rgelt, pceltFetched)
proc Skip*(self: ptr IEnumShellItems, celt: ULONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Skip(self, celt)
proc Reset*(self: ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Reset(self)
proc Clone*(self: ptr IEnumShellItems, ppenum: ptr ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Clone(self, ppenum)
proc BindToHandler*(self: ptr IShellItemArray, pbc: ptr IBindCtx, bhid: REFGUID, riid: REFIID, ppvOut: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.BindToHandler(self, pbc, bhid, riid, ppvOut)
proc GetPropertyStore*(self: ptr IShellItemArray, flags: GETPROPERTYSTOREFLAGS, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyStore(self, flags, riid, ppv)
proc GetPropertyDescriptionList*(self: ptr IShellItemArray, keyType: REFPROPERTYKEY, riid: REFIID, ppv: ptr pointer): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetPropertyDescriptionList(self, keyType, riid, ppv)
proc GetAttributes*(self: ptr IShellItemArray, AttribFlags: SIATTRIBFLAGS, sfgaoMask: SFGAOF, psfgaoAttribs: ptr SFGAOF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetAttributes(self, AttribFlags, sfgaoMask, psfgaoAttribs)
proc GetCount*(self: ptr IShellItemArray, pdwNumItems: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCount(self, pdwNumItems)
proc GetItemAt*(self: ptr IShellItemArray, dwIndex: DWORD, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetItemAt(self, dwIndex, ppsi)
proc EnumItems*(self: ptr IShellItemArray, ppenumShellItems: ptr ptr IEnumShellItems): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnumItems(self, ppenumShellItems)
proc HrInit*(self: ptr ITaskbarList): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HrInit(self)
proc AddTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddTab(self, hwnd)
proc DeleteTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.DeleteTab(self, hwnd)
proc ActivateTab*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ActivateTab(self, hwnd)
proc SetActiveAlt*(self: ptr ITaskbarList, hwnd: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetActiveAlt(self, hwnd)
proc MarkFullscreenWindow*(self: ptr ITaskbarList2, hwnd: HWND, fFullscreen: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.MarkFullscreenWindow(self, hwnd, fFullscreen)
proc SetProgressValue*(self: ptr ITaskbarList3, hwnd: HWND, ullCompleted: ULONGLONG, ullTotal: ULONGLONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressValue(self, hwnd, ullCompleted, ullTotal)
proc SetProgressState*(self: ptr ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetProgressState(self, hwnd, tbpFlags)
proc RegisterTab*(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.RegisterTab(self, hwndTab, hwndMDI)
proc UnregisterTab*(self: ptr ITaskbarList3, hwndTab: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UnregisterTab(self, hwndTab)
proc SetTabOrder*(self: ptr ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTabOrder(self, hwndTab, hwndInsertBefore)
proc SetTabActive*(self: ptr ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTabActive(self, hwndTab, hwndMDI, dwReserved)
proc ThumbBarAddButtons*(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarAddButtons(self, hwnd, cButtons, pButton)
proc ThumbBarUpdateButtons*(self: ptr ITaskbarList3, hwnd: HWND, cButtons: UINT, pButton: LPTHUMBBUTTON): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarUpdateButtons(self, hwnd, cButtons, pButton)
proc ThumbBarSetImageList*(self: ptr ITaskbarList3, hwnd: HWND, himl: HIMAGELIST): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ThumbBarSetImageList(self, hwnd, himl)
proc SetOverlayIcon*(self: ptr ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOverlayIcon(self, hwnd, hIcon, pszDescription)
proc SetThumbnailTooltip*(self: ptr ITaskbarList3, hwnd: HWND, pszTip: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnailTooltip(self, hwnd, pszTip)
proc SetThumbnailClip*(self: ptr ITaskbarList3, hwnd: HWND, prcClip: ptr RECT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetThumbnailClip(self, hwnd, prcClip)
proc Show*(self: ptr IModalWindow, hwndOwner: HWND): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Show(self, hwndOwner)
proc OnFileOk*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFileOk(self, pfd)
proc OnFolderChanging*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psiFolder: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFolderChanging(self, pfd, psiFolder)
proc OnFolderChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFolderChange(self, pfd)
proc OnSelectionChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnSelectionChange(self, pfd)
proc OnShareViolation*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_SHAREVIOLATION_RESPONSE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnShareViolation(self, pfd, psi, pResponse)
proc OnTypeChange*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnTypeChange(self, pfd)
proc OnOverwrite*(self: ptr IFileDialogEvents, pfd: ptr IFileDialog, psi: ptr IShellItem, pResponse: ptr FDE_OVERWRITE_RESPONSE): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnOverwrite(self, pfd, psi, pResponse)
proc SetFileTypes*(self: ptr IFileDialog, cFileTypes: UINT, rgFilterSpec: ptr COMDLG_FILTERSPEC): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileTypes(self, cFileTypes, rgFilterSpec)
proc SetFileTypeIndex*(self: ptr IFileDialog, iFileType: UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileTypeIndex(self, iFileType)
proc GetFileTypeIndex*(self: ptr IFileDialog, piFileType: ptr UINT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileTypeIndex(self, piFileType)
proc Advise*(self: ptr IFileDialog, pfde: ptr IFileDialogEvents, pdwCookie: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Advise(self, pfde, pdwCookie)
proc Unadvise*(self: ptr IFileDialog, dwCookie: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Unadvise(self, dwCookie)
proc SetOptions*(self: ptr IFileDialog, fos: FILEOPENDIALOGOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, fos)
proc GetOptions*(self: ptr IFileDialog, pfos: ptr FILEOPENDIALOGOPTIONS): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pfos)
proc SetDefaultFolder*(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultFolder(self, psi)
proc SetFolder*(self: ptr IFileDialog, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFolder(self, psi)
proc GetFolder*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFolder(self, ppsi)
proc GetCurrentSelection*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetCurrentSelection(self, ppsi)
proc SetFileName*(self: ptr IFileDialog, pszName: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileName(self, pszName)
proc GetFileName*(self: ptr IFileDialog, pszName: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetFileName(self, pszName)
proc SetTitle*(self: ptr IFileDialog, pszTitle: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetTitle(self, pszTitle)
proc SetOkButtonLabel*(self: ptr IFileDialog, pszText: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOkButtonLabel(self, pszText)
proc SetFileNameLabel*(self: ptr IFileDialog, pszLabel: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFileNameLabel(self, pszLabel)
proc GetResult*(self: ptr IFileDialog, ppsi: ptr ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResult(self, ppsi)
proc AddPlace*(self: ptr IFileDialog, psi: ptr IShellItem, fdap: FDAP): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.AddPlace(self, psi, fdap)
proc SetDefaultExtension*(self: ptr IFileDialog, pszDefaultExtension: LPCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetDefaultExtension(self, pszDefaultExtension)
proc Close*(self: ptr IFileDialog, hr: HRESULT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Close(self, hr)
proc SetClientGuid*(self: ptr IFileDialog, guid: REFGUID): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetClientGuid(self, guid)
proc ClearClientData*(self: ptr IFileDialog): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ClearClientData(self)
proc SetFilter*(self: ptr IFileDialog, pFilter: ptr IShellItemFilter): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetFilter(self, pFilter)
proc GetResults*(self: ptr IFileOpenDialog, ppenum: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetResults(self, ppenum)
proc GetSelectedItems*(self: ptr IFileOpenDialog, ppsai: ptr ptr IShellItemArray): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetSelectedItems(self, ppsai)
proc IncludeItem*(self: ptr IShellItemFilter, psi: ptr IShellItem): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.IncludeItem(self, psi)
proc GetEnumFlagsForItem*(self: ptr IShellItemFilter, psi: ptr IShellItem, pgrfFlags: ptr SHCONTF): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetEnumFlagsForItem(self, psi, pgrfFlags)
proc Append*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Append(self, punk)
proc Remove*(self: ptr IObjMgr, punk: ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Remove(self, punk)
proc Expand*(self: ptr IACList, pszExpand: PCWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.Expand(self, pszExpand)
proc SetOptions*(self: ptr IACList2, dwFlag: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.SetOptions(self, dwFlag)
proc GetOptions*(self: ptr IACList2, pdwFlag: ptr DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptions(self, pdwFlag)
converter winimConverterIAutoCompleteToIUnknown*(x: ptr IAutoComplete): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIAutoComplete2ToIAutoComplete*(x: ptr IAutoComplete2): ptr IAutoComplete = cast[ptr IAutoComplete](x)
converter winimConverterIAutoComplete2ToIUnknown*(x: ptr IAutoComplete2): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIShellItemToIUnknown*(x: ptr IShellItem): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIEnumShellItemsToIUnknown*(x: ptr IEnumShellItems): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIShellItemArrayToIUnknown*(x: ptr IShellItemArray): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITaskbarListToIUnknown*(x: ptr ITaskbarList): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITaskbarList2ToITaskbarList*(x: ptr ITaskbarList2): ptr ITaskbarList = cast[ptr ITaskbarList](x)
converter winimConverterITaskbarList2ToIUnknown*(x: ptr ITaskbarList2): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterITaskbarList3ToITaskbarList2*(x: ptr ITaskbarList3): ptr ITaskbarList2 = cast[ptr ITaskbarList2](x)
converter winimConverterITaskbarList3ToITaskbarList*(x: ptr ITaskbarList3): ptr ITaskbarList = cast[ptr ITaskbarList](x)
converter winimConverterITaskbarList3ToIUnknown*(x: ptr ITaskbarList3): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIModalWindowToIUnknown*(x: ptr IModalWindow): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIFileDialogEventsToIUnknown*(x: ptr IFileDialogEvents): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIFileDialogToIModalWindow*(x: ptr IFileDialog): ptr IModalWindow = cast[ptr IModalWindow](x)
converter winimConverterIFileDialogToIUnknown*(x: ptr IFileDialog): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIFileOpenDialogToIFileDialog*(x: ptr IFileOpenDialog): ptr IFileDialog = cast[ptr IFileDialog](x)
converter winimConverterIFileOpenDialogToIModalWindow*(x: ptr IFileOpenDialog): ptr IModalWindow = cast[ptr IModalWindow](x)
converter winimConverterIFileOpenDialogToIUnknown*(x: ptr IFileOpenDialog): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIShellItemFilterToIUnknown*(x: ptr IShellItemFilter): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIObjMgrToIUnknown*(x: ptr IObjMgr): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIACListToIUnknown*(x: ptr IACList): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIACList2ToIACList*(x: ptr IACList2): ptr IACList = cast[ptr IACList](x)
converter winimConverterIACList2ToIUnknown*(x: ptr IACList2): ptr IUnknown = cast[ptr IUnknown](x)
when winimUnicode:
type
NOTIFYICONDATA* = NOTIFYICONDATAW
BROWSEINFO* = BROWSEINFOW
const
BFFM_SETSELECTION* = BFFM_SETSELECTIONW
proc DragQueryFile*(hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileW".}
proc ShellExecute*(hwnd: HWND, lpOperation: LPCWSTR, lpFile: LPCWSTR, lpParameters: LPCWSTR, lpDirectory: LPCWSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteW".}
proc ExtractIconEx*(lpszFile: LPCWSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExW".}
proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNOTIFYICONDATAW): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}
proc PathFileExists*(pszPath: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsW".}
proc PathCompactPath*(hDC: HDC, pszPath: LPWSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathW".}
proc ILCreateFromPath*(pszPath: PCWSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathW".}
proc SHGetPathFromIDList*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListW".}
proc SHBrowseForFolder*(lpbi: LPBROWSEINFOW): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderW".}
when winimAnsi:
type
NOTIFYICONDATA* = NOTIFYICONDATAA
BROWSEINFO* = BROWSEINFOA
const
BFFM_SETSELECTION* = BFFM_SETSELECTIONA
proc DragQueryFile*(hDrop: HDROP, iFile: UINT, lpszFile: LPSTR, cch: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "DragQueryFileA".}
proc ShellExecute*(hwnd: HWND, lpOperation: LPCSTR, lpFile: LPCSTR, lpParameters: LPCSTR, lpDirectory: LPCSTR, nShowCmd: INT): HINSTANCE {.winapi, stdcall, dynlib: "shell32", importc: "ShellExecuteA".}
proc ExtractIconEx*(lpszFile: LPCSTR, nIconIndex: int32, phiconLarge: ptr HICON, phiconSmall: ptr HICON, nIcons: UINT): UINT {.winapi, stdcall, dynlib: "shell32", importc: "ExtractIconExA".}
proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNOTIFYICONDATAA): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}
proc PathFileExists*(pszPath: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathFileExistsA".}
proc PathCompactPath*(hDC: HDC, pszPath: LPSTR, dx: UINT): WINBOOL {.winapi, stdcall, dynlib: "shlwapi", importc: "PathCompactPathA".}
proc ILCreateFromPath*(pszPath: PCSTR): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "ILCreateFromPathA".}
proc SHGetPathFromIDList*(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR): WINBOOL {.winapi, stdcall, dynlib: "shell32", importc: "SHGetPathFromIDListA".}
proc SHBrowseForFolder*(lpbi: LPBROWSEINFOA): PIDLIST_ABSOLUTE {.winapi, stdcall, dynlib: "shell32", importc: "SHBrowseForFolderA".}
const
IID_IHTMLTxtRange* = DEFINE_GUID("3050f220-98b5-11cf-bb82-00aa00bdce0b")
IID_IHTMLDocument2* = DEFINE_GUID("332c4425-26cb-11d0-b483-00c04fd90119")
DOCHOSTUIFLAG_DIALOG* = 0x1
DOCHOSTUIFLAG_SCROLL_NO* = 0x8
DOCHOSTUIFLAG_THEME* = 0x40000
DOCHOSTUIFLAG_NO3DOUTERBORDER* = 0x200000
IID_IDocHostUIHandler* = DEFINE_GUID("bd3f23c0-d43e-11cf-893b-00aa00bdce1a")
type
IHTMLFramesCollection2* {.pure.} = object
lpVtbl*: ptr IHTMLFramesCollection2Vtbl
IHTMLFramesCollection2Vtbl* {.pure, inheritable.} = object of IDispatchVtbl
item*: proc(self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
get_length*: proc(self: ptr IHTMLFramesCollection2, p: ptr LONG): HRESULT {.stdcall.}
IHTMLImgElement* {.pure.} = object
lpVtbl*: ptr IHTMLImgElementVtbl
IHTMLImgElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_isMap*: proc(self: ptr IHTMLImgElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_isMap*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_useMap*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_useMap*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_mimeType*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_fileSize*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_fileCreatedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_fileModifiedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_fileUpdatedDate*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_protocol*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_href*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_nameProp*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_border*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
get_border*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_vspace*: proc(self: ptr IHTMLImgElement, v: LONG): HRESULT {.stdcall.}
get_vspace*: proc(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.stdcall.}
put_hspace*: proc(self: ptr IHTMLImgElement, v: LONG): HRESULT {.stdcall.}
get_hspace*: proc(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.stdcall.}
put_alt*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_alt*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_src*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_src*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_lowsrc*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_lowsrc*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_vrml*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_vrml*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_dynsrc*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_dynsrc*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_readyState*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
get_complete*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_loop*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
get_loop*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_align*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_align*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_onload*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
get_onload*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onerror*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
get_onerror*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onabort*: proc(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.stdcall.}
get_onabort*: proc(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_name*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_name*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
put_width*: proc(self: ptr IHTMLImgElement, v: LONG): HRESULT {.stdcall.}
get_width*: proc(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.stdcall.}
put_height*: proc(self: ptr IHTMLImgElement, v: LONG): HRESULT {.stdcall.}
get_height*: proc(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.stdcall.}
put_start*: proc(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.stdcall.}
get_start*: proc(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.stdcall.}
IHTMLImageElementFactory* {.pure.} = object
lpVtbl*: ptr IHTMLImageElementFactoryVtbl
IHTMLImageElementFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
create*: proc(self: ptr IHTMLImageElementFactory, width: VARIANT, height: VARIANT, a: ptr ptr IHTMLImgElement): HRESULT {.stdcall.}
IHTMLLocation* {.pure.} = object
lpVtbl*: ptr IHTMLLocationVtbl
IHTMLLocationVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_href*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_href*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_protocol*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_protocol*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_host*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_host*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_hostname*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_hostname*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_port*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_port*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_pathname*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_pathname*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_search*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_search*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
put_hash*: proc(self: ptr IHTMLLocation, v: BSTR): HRESULT {.stdcall.}
get_hash*: proc(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.stdcall.}
reload*: proc(self: ptr IHTMLLocation, flag: VARIANT_BOOL): HRESULT {.stdcall.}
replace*: proc(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.stdcall.}
assign*: proc(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.stdcall.}
toString*: proc(self: ptr IHTMLLocation, string: ptr BSTR): HRESULT {.stdcall.}
IOmHistory* {.pure.} = object
lpVtbl*: ptr IOmHistoryVtbl
IOmHistoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IOmHistory, p: ptr int16): HRESULT {.stdcall.}
back*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
forward*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
go*: proc(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.stdcall.}
IHTMLMimeTypesCollection* {.pure.} = object
lpVtbl*: ptr IHTMLMimeTypesCollectionVtbl
IHTMLMimeTypesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IHTMLMimeTypesCollection, p: ptr LONG): HRESULT {.stdcall.}
IHTMLPluginsCollection* {.pure.} = object
lpVtbl*: ptr IHTMLPluginsCollectionVtbl
IHTMLPluginsCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IHTMLPluginsCollection, p: ptr LONG): HRESULT {.stdcall.}
refresh*: proc(self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL): HRESULT {.stdcall.}
IHTMLOpsProfile* {.pure.} = object
lpVtbl*: ptr IHTMLOpsProfileVtbl
IHTMLOpsProfileVtbl* {.pure, inheritable.} = object of IDispatchVtbl
addRequest*: proc(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
clearRequest*: proc(self: ptr IHTMLOpsProfile): HRESULT {.stdcall.}
doRequest*: proc(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.stdcall.}
getAttribute*: proc(self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR): HRESULT {.stdcall.}
setAttribute*: proc(self: ptr IHTMLOpsProfile, name: BSTR, value: BSTR, prefs: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
commitChanges*: proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
addReadRequest*: proc(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
doReadRequest*: proc(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.stdcall.}
doWriteRequest*: proc(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IOmNavigator* {.pure.} = object
lpVtbl*: ptr IOmNavigatorVtbl
IOmNavigatorVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_appCodeName*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_appName*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_appVersion*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_userAgent*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
javaEnabled*: proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
taintEnabled*: proc(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_mimeTypes*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection): HRESULT {.stdcall.}
get_plugins*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection): HRESULT {.stdcall.}
get_cookieEnabled*: proc(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_opsProfile*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
toString*: proc(self: ptr IOmNavigator, string: ptr BSTR): HRESULT {.stdcall.}
get_cpuClass*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_systemLanguage*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_browserLanguage*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_userLanguage*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_platform*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_appMinorVersion*: proc(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.stdcall.}
get_connectionSpeed*: proc(self: ptr IOmNavigator, p: ptr LONG): HRESULT {.stdcall.}
get_onLine*: proc(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_userProfile*: proc(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.stdcall.}
IHTMLDocument* {.pure.} = object
lpVtbl*: ptr IHTMLDocumentVtbl
IHTMLDocumentVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_Script*: proc(self: ptr IHTMLDocument, p: ptr ptr IDispatch): HRESULT {.stdcall.}
IHTMLElementCollection* {.pure.} = object
lpVtbl*: ptr IHTMLElementCollectionVtbl
IHTMLElementCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
toString*: proc(self: ptr IHTMLElementCollection, String: ptr BSTR): HRESULT {.stdcall.}
put_length*: proc(self: ptr IHTMLElementCollection, v: LONG): HRESULT {.stdcall.}
get_length*: proc(self: ptr IHTMLElementCollection, p: ptr LONG): HRESULT {.stdcall.}
get_newEnum*: proc(self: ptr IHTMLElementCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
item*: proc(self: ptr IHTMLElementCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
tags*: proc(self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
IHTMLStyle* {.pure.} = object
lpVtbl*: ptr IHTMLStyleVtbl
IHTMLStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_fontFamily*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_fontFamily*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_fontStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontVariant*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_fontVariant*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontWeight*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_fontWeight*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontSize*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_fontSize*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_font*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_font*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_color*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_color*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_background*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_background*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_backgroundImage*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundImage*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundRepeat*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundRepeat*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundAttachment*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundAttachment*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundPosition*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundPosition*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundPositionX*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundPositionX*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_backgroundPositionY*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundPositionY*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_wordSpacing*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_wordSpacing*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_letterSpacing*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_letterSpacing*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_textDecoration*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_textDecoration*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textDecorationNone*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationNone*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationUnderline*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationUnderline*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationOverline*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationOverline*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationLineThrough*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationLineThrough*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationBlink*: proc(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationBlink*: proc(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_verticalAlign*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_verticalAlign*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_textTransform*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_textTransform*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textAlign*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_textAlign*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textIndent*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_textIndent*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_lineHeight*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_lineHeight*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginTop*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginTop*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginRight*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginRight*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginBottom*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginBottom*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginLeft*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginLeft*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_margin*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_margin*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_paddingTop*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingTop*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingRight*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingRight*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingBottom*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingBottom*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingLeft*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingLeft*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_padding*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_padding*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_border*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_border*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTop*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderTop*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderRight*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderRight*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderBottom*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderBottom*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderLeft*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderLeft*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderColor*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderColor*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderTopColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderRightColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderRightColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderBottomColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderBottomColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderLeftColor*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderLeftColor*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderWidth*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderWidth*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderTopWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderRightWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderRightWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderBottomWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderBottomWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderLeftWidth*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderLeftWidth*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderTopStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderRightStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderRightStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderBottomStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderBottomStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderLeftStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_borderLeftStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_width*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_width*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_height*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_height*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_styleFloat*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_styleFloat*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_clear*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_clear*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_display*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_display*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_visibility*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_visibility*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyleType*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyleType*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStylePosition*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_listStylePosition*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyleImage*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyleImage*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyle*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyle*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_whiteSpace*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_whiteSpace*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_top*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_top*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_left*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_left*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
get_position*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_zIndex*: proc(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.stdcall.}
get_zIndex*: proc(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_overflow*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_overflow*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_pageBreakBefore*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_pageBreakBefore*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_pageBreakAfter*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_pageBreakAfter*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_cssText*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_cssText*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_pixelTop*: proc(self: ptr IHTMLStyle, v: LONG): HRESULT {.stdcall.}
get_pixelTop*: proc(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.stdcall.}
put_pixelLeft*: proc(self: ptr IHTMLStyle, v: LONG): HRESULT {.stdcall.}
get_pixelLeft*: proc(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.stdcall.}
put_pixelWidth*: proc(self: ptr IHTMLStyle, v: LONG): HRESULT {.stdcall.}
get_pixelWidth*: proc(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.stdcall.}
put_pixelHeight*: proc(self: ptr IHTMLStyle, v: LONG): HRESULT {.stdcall.}
get_pixelHeight*: proc(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.stdcall.}
put_posTop*: proc(self: ptr IHTMLStyle, v: float32): HRESULT {.stdcall.}
get_posTop*: proc(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.stdcall.}
put_posLeft*: proc(self: ptr IHTMLStyle, v: float32): HRESULT {.stdcall.}
get_posLeft*: proc(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.stdcall.}
put_posWidth*: proc(self: ptr IHTMLStyle, v: float32): HRESULT {.stdcall.}
get_posWidth*: proc(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.stdcall.}
put_posHeight*: proc(self: ptr IHTMLStyle, v: float32): HRESULT {.stdcall.}
get_posHeight*: proc(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.stdcall.}
put_cursor*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_cursor*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_clip*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_clip*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_filter*: proc(self: ptr IHTMLStyle, v: BSTR): HRESULT {.stdcall.}
get_filter*: proc(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.stdcall.}
setAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
getAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
removeAttribute*: proc(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
toString*: proc(self: ptr IHTMLStyle, String: ptr BSTR): HRESULT {.stdcall.}
IHTMLFiltersCollection* {.pure.} = object
lpVtbl*: ptr IHTMLFiltersCollectionVtbl
IHTMLFiltersCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IHTMLFiltersCollection, p: ptr LONG): HRESULT {.stdcall.}
get_newEnum*: proc(self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
item*: proc(self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
IHTMLElement* {.pure.} = object
lpVtbl*: ptr IHTMLElementVtbl
IHTMLElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
setAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
getAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
removeAttribute*: proc(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_className*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_className*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_id*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_id*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
get_tagName*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
get_parentElement*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_style*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLStyle): HRESULT {.stdcall.}
put_onhelp*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onhelp*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onclick*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onclick*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondblclick*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_ondblclick*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeydown*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onkeydown*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeyup*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onkeyup*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeypress*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onkeypress*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseout*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onmouseout*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseover*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onmouseover*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmousemove*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onmousemove*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmousedown*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onmousedown*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseup*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onmouseup*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
get_document*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
put_title*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_title*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_language*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_language*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_onselectstart*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onselectstart*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
scrollIntoView*: proc(self: ptr IHTMLElement, varargStart: VARIANT): HRESULT {.stdcall.}
contains*: proc(self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_sourceIndex*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
get_recordNumber*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_lang*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_lang*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
get_offsetLeft*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
get_offsetTop*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
get_offsetWidth*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
get_offsetHeight*: proc(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.stdcall.}
get_offsetParent*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
put_innerHTML*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_innerHTML*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_innerText*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_innerText*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_outerHTML*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_outerHTML*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
put_outerText*: proc(self: ptr IHTMLElement, v: BSTR): HRESULT {.stdcall.}
get_outerText*: proc(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.stdcall.}
insertAdjacentHTML*: proc(self: ptr IHTMLElement, where: BSTR, html: BSTR): HRESULT {.stdcall.}
insertAdjacentText*: proc(self: ptr IHTMLElement, where: BSTR, text: BSTR): HRESULT {.stdcall.}
get_parentTextEdit*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_isTextEdit*: proc(self: ptr IHTMLElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
click*: proc(self: ptr IHTMLElement): HRESULT {.stdcall.}
get_filters*: proc(self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection): HRESULT {.stdcall.}
put_ondragstart*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_ondragstart*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
toString*: proc(self: ptr IHTMLElement, String: ptr BSTR): HRESULT {.stdcall.}
put_onbeforeupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onbeforeupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onafterupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onafterupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onerrorupdate*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onerrorupdate*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onrowexit*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onrowexit*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onrowenter*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onrowenter*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondatasetchanged*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_ondatasetchanged*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondataavailable*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_ondataavailable*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondatasetcomplete*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_ondatasetcomplete*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onfilterchange*: proc(self: ptr IHTMLElement, v: VARIANT): HRESULT {.stdcall.}
get_onfilterchange*: proc(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.stdcall.}
get_children*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
get_all*: proc(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
IHTMLSelectionObject* {.pure.} = object
lpVtbl*: ptr IHTMLSelectionObjectVtbl
IHTMLSelectionObjectVtbl* {.pure, inheritable.} = object of IDispatchVtbl
createRange*: proc(self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch): HRESULT {.stdcall.}
empty*: proc(self: ptr IHTMLSelectionObject): HRESULT {.stdcall.}
clear*: proc(self: ptr IHTMLSelectionObject): HRESULT {.stdcall.}
get_type*: proc(self: ptr IHTMLSelectionObject, p: ptr BSTR): HRESULT {.stdcall.}
IHTMLStyleSheetsCollection* {.pure.} = object
lpVtbl*: ptr IHTMLStyleSheetsCollectionVtbl
IHTMLStyleSheetsCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IHTMLStyleSheetsCollection, p: ptr LONG): HRESULT {.stdcall.}
get_newEnum*: proc(self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown): HRESULT {.stdcall.}
item*: proc(self: ptr IHTMLStyleSheetsCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.stdcall.}
IHTMLRuleStyle* {.pure.} = object
lpVtbl*: ptr IHTMLRuleStyleVtbl
IHTMLRuleStyleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_fontFamily*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_fontFamily*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_fontStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontVariant*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_fontVariant*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontWeight*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_fontWeight*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_fontSize*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_fontSize*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_font*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_font*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_color*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_color*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_background*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_background*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_backgroundImage*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundImage*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundRepeat*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundRepeat*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundAttachment*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundAttachment*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundPosition*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_backgroundPosition*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_backgroundPositionX*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundPositionX*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_backgroundPositionY*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_backgroundPositionY*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_wordSpacing*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_wordSpacing*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_letterSpacing*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_letterSpacing*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_textDecoration*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_textDecoration*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textDecorationNone*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationNone*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationUnderline*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationUnderline*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationOverline*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationOverline*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationLineThrough*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationLineThrough*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_textDecorationBlink*: proc(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_textDecorationBlink*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_verticalAlign*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_verticalAlign*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_textTransform*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_textTransform*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textAlign*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_textAlign*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_textIndent*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_textIndent*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_lineHeight*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_lineHeight*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginTop*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginTop*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginRight*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginRight*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginBottom*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginBottom*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_marginLeft*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_marginLeft*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_margin*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_margin*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_paddingTop*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingTop*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingRight*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingRight*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingBottom*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingBottom*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_paddingLeft*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_paddingLeft*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_padding*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_padding*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_border*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_border*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTop*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderTop*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderRight*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderRight*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderBottom*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderBottom*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderLeft*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderLeft*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderColor*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderColor*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderTopColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderRightColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderRightColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderBottomColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderBottomColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderLeftColor*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderLeftColor*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderWidth*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderTopWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderRightWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderRightWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderBottomWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderBottomWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderLeftWidth*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_borderLeftWidth*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_borderStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderTopStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderTopStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderRightStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderRightStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderBottomStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderBottomStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_borderLeftStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_borderLeftStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_width*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_width*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_height*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_height*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_styleFloat*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_styleFloat*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_clear*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_clear*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_display*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_display*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_visibility*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_visibility*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyleType*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyleType*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStylePosition*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_listStylePosition*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyleImage*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyleImage*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_listStyle*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_listStyle*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_whiteSpace*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_whiteSpace*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_top*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_top*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_left*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_left*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
get_position*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_zIndex*: proc(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.stdcall.}
get_zIndex*: proc(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.stdcall.}
put_overflow*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_overflow*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_pageBreakBefore*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_pageBreakBefore*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_pageBreakAfter*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_pageBreakAfter*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_cssText*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_cssText*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_cursor*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_cursor*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_clip*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_clip*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
put_filter*: proc(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.stdcall.}
get_filter*: proc(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.stdcall.}
setAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.stdcall.}
getAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.stdcall.}
removeAttribute*: proc(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IHTMLStyleSheetRule* {.pure.} = object
lpVtbl*: ptr IHTMLStyleSheetRuleVtbl
IHTMLStyleSheetRuleVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_selectorText*: proc(self: ptr IHTMLStyleSheetRule, v: BSTR): HRESULT {.stdcall.}
get_selectorText*: proc(self: ptr IHTMLStyleSheetRule, p: ptr BSTR): HRESULT {.stdcall.}
get_style*: proc(self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.stdcall.}
get_readOnly*: proc(self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IHTMLStyleSheetRulesCollection* {.pure.} = object
lpVtbl*: ptr IHTMLStyleSheetRulesCollectionVtbl
IHTMLStyleSheetRulesCollectionVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_length*: proc(self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG): HRESULT {.stdcall.}
item*: proc(self: ptr IHTMLStyleSheetRulesCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.stdcall.}
IHTMLStyleSheet* {.pure.} = object
lpVtbl*: ptr IHTMLStyleSheetVtbl
IHTMLStyleSheetVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_title*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
get_title*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
get_parentStyleSheet*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
get_owningElement*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
put_disabled*: proc(self: ptr IHTMLStyleSheet, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_disabled*: proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_readOnly*: proc(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_imports*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.stdcall.}
put_href*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
get_href*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
get_type*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
get_id*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
addImport*: proc(self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG): HRESULT {.stdcall.}
addRule*: proc(self: ptr IHTMLStyleSheet, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.stdcall.}
removeImport*: proc(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.stdcall.}
removeRule*: proc(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.stdcall.}
put_media*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
get_media*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
put_cssText*: proc(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.stdcall.}
get_cssText*: proc(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.stdcall.}
get_rules*: proc(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.stdcall.}
IHTMLDocument2* {.pure.} = object
lpVtbl*: ptr IHTMLDocument2Vtbl
IHTMLDocument2Vtbl* {.pure, inheritable.} = object of IHTMLDocumentVtbl
get_all*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_body*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_activeElement*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_images*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_applets*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_links*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_forms*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_anchors*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
put_title*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_title*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_scripts*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
put_designMode*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_designMode*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_selection*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject): HRESULT {.stdcall.}
get_readyState*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_frames*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.stdcall.}
get_embeds*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
get_plugins*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.stdcall.}
put_alinkColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_alinkColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_bgColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_bgColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_fgColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_fgColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_linkColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_linkColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_vlinkColor*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_vlinkColor*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
get_referrer*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_location*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
get_lastModified*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
put_URL*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_URL*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
put_domain*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_domain*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
put_cookie*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_cookie*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
put_expando*: proc(self: ptr IHTMLDocument2, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_expando*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_charset*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_charset*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
put_defaultCharset*: proc(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.stdcall.}
get_defaultCharset*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_mimeType*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_fileSize*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_fileCreatedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_fileModifiedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_fileUpdatedDate*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_security*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_protocol*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
get_nameProp*: proc(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.stdcall.}
write*: proc(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.stdcall.}
writeln*: proc(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.stdcall.}
open*: proc(self: ptr IHTMLDocument2, url: BSTR, name: VARIANT, features: VARIANT, replace: VARIANT, pomWindowResult: ptr ptr IDispatch): HRESULT {.stdcall.}
close*: proc(self: ptr IHTMLDocument2): HRESULT {.stdcall.}
clear*: proc(self: ptr IHTMLDocument2): HRESULT {.stdcall.}
queryCommandSupported*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandEnabled*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandState*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandIndeterm*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandText*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.stdcall.}
queryCommandValue*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.stdcall.}
execCommand*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
execCommandShowHelp*: proc(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
createElement*: proc(self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.stdcall.}
put_onhelp*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onhelp*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onclick*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onclick*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondblclick*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_ondblclick*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeyup*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onkeyup*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeydown*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onkeydown*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onkeypress*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onkeypress*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseup*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onmouseup*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmousedown*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onmousedown*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmousemove*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onmousemove*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseout*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onmouseout*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onmouseover*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onmouseover*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onreadystatechange*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onreadystatechange*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onafterupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onafterupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onrowexit*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onrowexit*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onrowenter*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onrowenter*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_ondragstart*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_ondragstart*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onselectstart*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onselectstart*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
elementFromPoint*: proc(self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_parentWindow*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
get_styleSheets*: proc(self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.stdcall.}
put_onbeforeupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onbeforeupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onerrorupdate*: proc(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.stdcall.}
get_onerrorupdate*: proc(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.stdcall.}
toString*: proc(self: ptr IHTMLDocument2, String: ptr BSTR): HRESULT {.stdcall.}
createStyleSheet*: proc(self: ptr IHTMLDocument2, bstrHref: BSTR, lIndex: LONG, ppnewStyleSheet: ptr ptr IHTMLStyleSheet): HRESULT {.stdcall.}
IHTMLEventObj* {.pure.} = object
lpVtbl*: ptr IHTMLEventObjVtbl
IHTMLEventObjVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_srcElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_altKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_ctrlKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_shiftKey*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_returnValue*: proc(self: ptr IHTMLEventObj, v: VARIANT): HRESULT {.stdcall.}
get_returnValue*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT): HRESULT {.stdcall.}
put_cancelBubble*: proc(self: ptr IHTMLEventObj, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_cancelBubble*: proc(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
get_fromElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
get_toElement*: proc(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.stdcall.}
put_keyCode*: proc(self: ptr IHTMLEventObj, v: LONG): HRESULT {.stdcall.}
get_keyCode*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_button*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_type*: proc(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.stdcall.}
get_qualifier*: proc(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.stdcall.}
get_reason*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_x*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_y*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_clientX*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_clientY*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_offsetX*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_offsetY*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_screenX*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_screenY*: proc(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.stdcall.}
get_srcFilter*: proc(self: ptr IHTMLEventObj, p: ptr ptr IDispatch): HRESULT {.stdcall.}
IHTMLScreen* {.pure.} = object
lpVtbl*: ptr IHTMLScreenVtbl
IHTMLScreenVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_colorDepth*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
put_bufferDepth*: proc(self: ptr IHTMLScreen, v: LONG): HRESULT {.stdcall.}
get_bufferDepth*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
get_width*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
get_height*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
put_updateInterval*: proc(self: ptr IHTMLScreen, v: LONG): HRESULT {.stdcall.}
get_updateInterval*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
get_availHeight*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
get_availWidth*: proc(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.stdcall.}
get_fontSmoothingEnabled*: proc(self: ptr IHTMLScreen, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IHTMLFormElement* {.pure.} = object
lpVtbl*: ptr IHTMLFormElementVtbl
IHTMLFormElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_action*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_action*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
put_dir*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_dir*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
put_encoding*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_encoding*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
put_method*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_method*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
get_elements*: proc(self: ptr IHTMLFormElement, p: ptr ptr IDispatch): HRESULT {.stdcall.}
put_target*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_target*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
put_name*: proc(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.stdcall.}
get_name*: proc(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.stdcall.}
put_onsubmit*: proc(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.stdcall.}
get_onsubmit*: proc(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.stdcall.}
put_onreset*: proc(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.stdcall.}
get_onreset*: proc(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.stdcall.}
submit*: proc(self: ptr IHTMLFormElement): HRESULT {.stdcall.}
reset*: proc(self: ptr IHTMLFormElement): HRESULT {.stdcall.}
put_length*: proc(self: ptr IHTMLFormElement, v: LONG): HRESULT {.stdcall.}
get_length*: proc(self: ptr IHTMLFormElement, p: ptr LONG): HRESULT {.stdcall.}
get_newEnum*: proc(self: ptr IHTMLFormElement, p: ptr ptr IUnknown): HRESULT {.stdcall.}
item*: proc(self: ptr IHTMLFormElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
tags*: proc(self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.stdcall.}
IHTMLOptionElement* {.pure.} = object
lpVtbl*: ptr IHTMLOptionElementVtbl
IHTMLOptionElementVtbl* {.pure, inheritable.} = object of IDispatchVtbl
put_selected*: proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_selected*: proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_value*: proc(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.stdcall.}
get_value*: proc(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.stdcall.}
put_defaultSelected*: proc(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.stdcall.}
get_defaultSelected*: proc(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
put_index*: proc(self: ptr IHTMLOptionElement, v: LONG): HRESULT {.stdcall.}
get_index*: proc(self: ptr IHTMLOptionElement, p: ptr LONG): HRESULT {.stdcall.}
put_text*: proc(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.stdcall.}
get_text*: proc(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.stdcall.}
get_form*: proc(self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement): HRESULT {.stdcall.}
IHTMLOptionElementFactory* {.pure.} = object
lpVtbl*: ptr IHTMLOptionElementFactoryVtbl
IHTMLOptionElementFactoryVtbl* {.pure, inheritable.} = object of IDispatchVtbl
create*: proc(self: ptr IHTMLOptionElementFactory, text: VARIANT, value: VARIANT, defaultselected: VARIANT, selected: VARIANT, a: ptr ptr IHTMLOptionElement): HRESULT {.stdcall.}
IHTMLWindow2* {.pure.} = object
lpVtbl*: ptr IHTMLWindow2Vtbl
IHTMLWindow2Vtbl* {.pure, inheritable.} = object of IHTMLFramesCollection2Vtbl
get_frames*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.stdcall.}
put_defaultStatus*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
get_defaultStatus*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
put_status*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
get_status*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
setTimeout*: proc(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
clearTimeout*: proc(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.stdcall.}
alert*: proc(self: ptr IHTMLWindow2, message: BSTR): HRESULT {.stdcall.}
confirm*: proc(self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL): HRESULT {.stdcall.}
prompt*: proc(self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT): HRESULT {.stdcall.}
get_Image*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory): HRESULT {.stdcall.}
get_location*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation): HRESULT {.stdcall.}
get_history*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmHistory): HRESULT {.stdcall.}
close*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
put_opener*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_opener*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
get_navigator*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
put_name*: proc(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.stdcall.}
get_name*: proc(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.stdcall.}
get_parent*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
open*: proc(self: ptr IHTMLWindow2, url: BSTR, name: BSTR, features: BSTR, replace: VARIANT_BOOL, pomWindowResult: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
get_self*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
get_top*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
get_window*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.stdcall.}
navigate*: proc(self: ptr IHTMLWindow2, url: BSTR): HRESULT {.stdcall.}
put_onfocus*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onfocus*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onblur*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onblur*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onbeforeunload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onbeforeunload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onunload*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onunload*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onhelp*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onhelp*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onerror*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onerror*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onresize*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onresize*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
put_onscroll*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_onscroll*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
get_document*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2): HRESULT {.stdcall.}
get_event*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj): HRESULT {.stdcall.}
get_newEnum*: proc(self: ptr IHTMLWindow2, p: ptr ptr IUnknown): HRESULT {.stdcall.}
showModalDialog*: proc(self: ptr IHTMLWindow2, dialog: BSTR, varArgIn: ptr VARIANT, varOptions: ptr VARIANT, varArgOut: ptr VARIANT): HRESULT {.stdcall.}
showHelp*: proc(self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR): HRESULT {.stdcall.}
get_screen*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen): HRESULT {.stdcall.}
get_Option*: proc(self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory): HRESULT {.stdcall.}
focus*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
get_closed*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT_BOOL): HRESULT {.stdcall.}
blur*: proc(self: ptr IHTMLWindow2): HRESULT {.stdcall.}
scroll*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
get_clientInformation*: proc(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.stdcall.}
setInterval*: proc(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.stdcall.}
clearInterval*: proc(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.stdcall.}
put_offscreenBuffering*: proc(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.stdcall.}
get_offscreenBuffering*: proc(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.stdcall.}
execScript*: proc(self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT): HRESULT {.stdcall.}
toString*: proc(self: ptr IHTMLWindow2, String: ptr BSTR): HRESULT {.stdcall.}
scrollBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
scrollTo*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
moveTo*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
moveBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
resizeTo*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
resizeBy*: proc(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.stdcall.}
get_external*: proc(self: ptr IHTMLWindow2, p: ptr ptr IDispatch): HRESULT {.stdcall.}
DOCHOSTUIINFO* {.pure.} = object
cbSize*: ULONG
dwFlags*: DWORD
dwDoubleClick*: DWORD
pchHostCss*: ptr OLECHAR
pchHostNS*: ptr OLECHAR
IHTMLTxtRange* {.pure.} = object
lpVtbl*: ptr IHTMLTxtRangeVtbl
IHTMLTxtRangeVtbl* {.pure, inheritable.} = object of IDispatchVtbl
get_htmlText*: proc(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.stdcall.}
put_text*: proc(self: ptr IHTMLTxtRange, v: BSTR): HRESULT {.stdcall.}
get_text*: proc(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.stdcall.}
parentElement*: proc(self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement): HRESULT {.stdcall.}
duplicate*: proc(self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange): HRESULT {.stdcall.}
inRange*: proc(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL): HRESULT {.stdcall.}
isEqual*: proc(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL): HRESULT {.stdcall.}
scrollIntoView*: proc(self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL): HRESULT {.stdcall.}
collapse*: proc(self: ptr IHTMLTxtRange, Start: VARIANT_BOOL): HRESULT {.stdcall.}
expand*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
move*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
moveStart*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
moveEnd*: proc(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.stdcall.}
select*: proc(self: ptr IHTMLTxtRange): HRESULT {.stdcall.}
pasteHTML*: proc(self: ptr IHTMLTxtRange, html: BSTR): HRESULT {.stdcall.}
moveToElementText*: proc(self: ptr IHTMLTxtRange, element: ptr IHTMLElement): HRESULT {.stdcall.}
setEndPoint*: proc(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange): HRESULT {.stdcall.}
compareEndPoints*: proc(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG): HRESULT {.stdcall.}
findText*: proc(self: ptr IHTMLTxtRange, String: BSTR, count: LONG, Flags: LONG, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
moveToPoint*: proc(self: ptr IHTMLTxtRange, x: LONG, y: LONG): HRESULT {.stdcall.}
getBookmark*: proc(self: ptr IHTMLTxtRange, Boolmark: ptr BSTR): HRESULT {.stdcall.}
moveToBookmark*: proc(self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandSupported*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandEnabled*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandState*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandIndeterm*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
queryCommandText*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.stdcall.}
queryCommandValue*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.stdcall.}
execCommand*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
execCommandShowHelp*: proc(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.stdcall.}
IDocHostUIHandler* {.pure.} = object
lpVtbl*: ptr IDocHostUIHandlerVtbl
IDocHostUIHandlerVtbl* {.pure, inheritable.} = object of IUnknownVtbl
ShowContextMenu*: proc(self: ptr IDocHostUIHandler, dwID: DWORD, ppt: ptr POINT, pcmdtReserved: ptr IUnknown, pdispReserved: ptr IDispatch): HRESULT {.stdcall.}
GetHostInfo*: proc(self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO): HRESULT {.stdcall.}
ShowUI*: proc(self: ptr IDocHostUIHandler, dwID: DWORD, pActiveObject: ptr IOleInPlaceActiveObject, pCommandTarget: ptr IOleCommandTarget, pFrame: ptr IOleInPlaceFrame, pDoc: ptr IOleInPlaceUIWindow): HRESULT {.stdcall.}
HideUI*: proc(self: ptr IDocHostUIHandler): HRESULT {.stdcall.}
UpdateUI*: proc(self: ptr IDocHostUIHandler): HRESULT {.stdcall.}
EnableModeless*: proc(self: ptr IDocHostUIHandler, fEnable: WINBOOL): HRESULT {.stdcall.}
OnDocWindowActivate*: proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
OnFrameWindowActivate*: proc(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.stdcall.}
ResizeBorder*: proc(self: ptr IDocHostUIHandler, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fRameWindow: WINBOOL): HRESULT {.stdcall.}
TranslateAccelerator*: proc(self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD): HRESULT {.stdcall.}
GetOptionKeyPath*: proc(self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.stdcall.}
GetDropTarget*: proc(self: ptr IDocHostUIHandler, pDropTarget: ptr IDropTarget, ppDropTarget: ptr ptr IDropTarget): HRESULT {.stdcall.}
GetExternal*: proc(self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch): HRESULT {.stdcall.}
TranslateUrl*: proc(self: ptr IDocHostUIHandler, dwTranslate: DWORD, pchURLIn: LPWSTR, ppchURLOut: ptr LPWSTR): HRESULT {.stdcall.}
FilterDataObject*: proc(self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject): HRESULT {.stdcall.}
proc get_length*(self: ptr IHTMLFiltersCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_newEnum*(self: ptr IHTMLFiltersCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
proc item*(self: ptr IHTMLFiltersCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
proc put_fontFamily*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFamily(self, v)
proc get_fontFamily*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
proc put_fontStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStyle(self, v)
proc get_fontStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
proc put_fontVariant*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontVariant(self, v)
proc get_fontVariant*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
proc put_fontWeight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontWeight(self, v)
proc get_fontWeight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
proc put_fontSize*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSize(self, v)
proc get_fontSize*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
proc put_font*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
proc get_font*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
proc put_color*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
proc get_color*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
proc put_background*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
proc get_background*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
proc put_backgroundColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundColor(self, v)
proc get_backgroundColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
proc put_backgroundImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundImage(self, v)
proc get_backgroundImage*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
proc put_backgroundRepeat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundRepeat(self, v)
proc get_backgroundRepeat*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
proc put_backgroundAttachment*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundAttachment(self, v)
proc get_backgroundAttachment*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
proc put_backgroundPosition*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPosition(self, v)
proc get_backgroundPosition*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPosition(self, p)
proc put_backgroundPositionX*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionX(self, v)
proc get_backgroundPositionX*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
proc put_backgroundPositionY*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionY(self, v)
proc get_backgroundPositionY*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
proc put_wordSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordSpacing(self, v)
proc get_wordSpacing*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
proc put_letterSpacing*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_letterSpacing(self, v)
proc get_letterSpacing*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
proc put_textDecoration*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
proc get_textDecoration*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
proc put_textDecorationNone*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationNone(self, v)
proc get_textDecorationNone*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationNone(self, p)
proc put_textDecorationUnderline*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationUnderline(self, v)
proc get_textDecorationUnderline*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationUnderline(self, p)
proc put_textDecorationOverline*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationOverline(self, v)
proc get_textDecorationOverline*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationOverline(self, p)
proc put_textDecorationLineThrough*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationLineThrough(self, v)
proc get_textDecorationLineThrough*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationLineThrough(self, p)
proc put_textDecorationBlink*(self: ptr IHTMLStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationBlink(self, v)
proc get_textDecorationBlink*(self: ptr IHTMLStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationBlink(self, p)
proc put_verticalAlign*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_verticalAlign(self, v)
proc get_verticalAlign*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
proc put_textTransform*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textTransform(self, v)
proc get_textTransform*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
proc put_textAlign*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
proc get_textAlign*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
proc put_textIndent*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textIndent(self, v)
proc get_textIndent*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
proc put_lineHeight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineHeight(self, v)
proc get_lineHeight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
proc put_marginTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
proc get_marginTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
proc put_marginRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
proc get_marginRight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
proc put_marginBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
proc get_marginBottom*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
proc put_marginLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
proc get_marginLeft*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
proc put_margin*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_margin(self, v)
proc get_margin*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
proc put_paddingTop*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingTop(self, v)
proc get_paddingTop*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
proc put_paddingRight*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingRight(self, v)
proc get_paddingRight*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
proc put_paddingBottom*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingBottom(self, v)
proc get_paddingBottom*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
proc put_paddingLeft*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingLeft(self, v)
proc get_paddingLeft*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
proc put_padding*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_padding(self, v)
proc get_padding*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
proc put_border*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
proc get_border*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
proc put_borderTop*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTop(self, v)
proc get_borderTop*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTop(self, p)
proc put_borderRight*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRight(self, v)
proc get_borderRight*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRight(self, p)
proc put_borderBottom*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottom(self, v)
proc get_borderBottom*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottom(self, p)
proc put_borderLeft*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeft(self, v)
proc get_borderLeft*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeft(self, p)
proc put_borderColor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
proc get_borderColor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
proc put_borderTopColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopColor(self, v)
proc get_borderTopColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
proc put_borderRightColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightColor(self, v)
proc get_borderRightColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
proc put_borderBottomColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomColor(self, v)
proc get_borderBottomColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
proc put_borderLeftColor*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftColor(self, v)
proc get_borderLeftColor*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
proc put_borderWidth*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderWidth(self, v)
proc get_borderWidth*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
proc put_borderTopWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopWidth(self, v)
proc get_borderTopWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
proc put_borderRightWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightWidth(self, v)
proc get_borderRightWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
proc put_borderBottomWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomWidth(self, v)
proc get_borderBottomWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
proc put_borderLeftWidth*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftWidth(self, v)
proc get_borderLeftWidth*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
proc put_borderStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
proc get_borderStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
proc put_borderTopStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopStyle(self, v)
proc get_borderTopStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
proc put_borderRightStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightStyle(self, v)
proc get_borderRightStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
proc put_borderBottomStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomStyle(self, v)
proc get_borderBottomStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
proc put_borderLeftStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftStyle(self, v)
proc get_borderLeftStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
proc put_width*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
proc get_width*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
proc put_height*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
proc get_height*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
proc put_styleFloat*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_styleFloat(self, v)
proc get_styleFloat*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
proc put_clear*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
proc get_clear*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
proc put_display*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_display(self, v)
proc get_display*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
proc put_visibility*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_visibility(self, v)
proc get_visibility*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
proc put_listStyleType*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleType(self, v)
proc get_listStyleType*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
proc put_listStylePosition*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStylePosition(self, v)
proc get_listStylePosition*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
proc put_listStyleImage*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleImage(self, v)
proc get_listStyleImage*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
proc put_listStyle*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyle(self, v)
proc get_listStyle*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyle(self, p)
proc put_whiteSpace*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_whiteSpace(self, v)
proc get_whiteSpace*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
proc put_top*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
proc get_top*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
proc put_left*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
proc get_left*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
proc get_position*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
proc put_zIndex*(self: ptr IHTMLStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zIndex(self, v)
proc get_zIndex*(self: ptr IHTMLStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
proc put_overflow*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflow(self, v)
proc get_overflow*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
proc put_pageBreakBefore*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakBefore(self, v)
proc get_pageBreakBefore*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
proc put_pageBreakAfter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakAfter(self, v)
proc get_pageBreakAfter*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
proc put_cssText*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
proc get_cssText*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
proc put_pixelTop*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelTop(self, v)
proc get_pixelTop*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelTop(self, p)
proc put_pixelLeft*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelLeft(self, v)
proc get_pixelLeft*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelLeft(self, p)
proc put_pixelWidth*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelWidth(self, v)
proc get_pixelWidth*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelWidth(self, p)
proc put_pixelHeight*(self: ptr IHTMLStyle, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pixelHeight(self, v)
proc get_pixelHeight*(self: ptr IHTMLStyle, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pixelHeight(self, p)
proc put_posTop*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posTop(self, v)
proc get_posTop*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posTop(self, p)
proc put_posLeft*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posLeft(self, v)
proc get_posLeft*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posLeft(self, p)
proc put_posWidth*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posWidth(self, v)
proc get_posWidth*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posWidth(self, p)
proc put_posHeight*(self: ptr IHTMLStyle, v: float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_posHeight(self, v)
proc get_posHeight*(self: ptr IHTMLStyle, p: ptr float32): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_posHeight(self, p)
proc put_cursor*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cursor(self, v)
proc get_cursor*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
proc put_clip*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clip(self, v)
proc get_clip*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clip(self, p)
proc put_filter*(self: ptr IHTMLStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_filter(self, v)
proc get_filter*(self: ptr IHTMLStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
proc setAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
proc getAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
proc removeAttribute*(self: ptr IHTMLStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
proc toString*(self: ptr IHTMLStyle, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
proc put_fontFamily*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontFamily(self, v)
proc get_fontFamily*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontFamily(self, p)
proc put_fontStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontStyle(self, v)
proc get_fontStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontStyle(self, p)
proc put_fontVariant*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontVariant(self, v)
proc get_fontVariant*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontVariant(self, p)
proc put_fontWeight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontWeight(self, v)
proc get_fontWeight*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontWeight(self, p)
proc put_fontSize*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fontSize(self, v)
proc get_fontSize*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSize(self, p)
proc put_font*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_font(self, v)
proc get_font*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_font(self, p)
proc put_color*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_color(self, v)
proc get_color*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_color(self, p)
proc put_background*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_background(self, v)
proc get_background*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_background(self, p)
proc put_backgroundColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundColor(self, v)
proc get_backgroundColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundColor(self, p)
proc put_backgroundImage*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundImage(self, v)
proc get_backgroundImage*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundImage(self, p)
proc put_backgroundRepeat*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundRepeat(self, v)
proc get_backgroundRepeat*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundRepeat(self, p)
proc put_backgroundAttachment*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundAttachment(self, v)
proc get_backgroundAttachment*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundAttachment(self, p)
proc put_backgroundPosition*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPosition(self, v)
proc get_backgroundPosition*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPosition(self, p)
proc put_backgroundPositionX*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionX(self, v)
proc get_backgroundPositionX*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionX(self, p)
proc put_backgroundPositionY*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_backgroundPositionY(self, v)
proc get_backgroundPositionY*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_backgroundPositionY(self, p)
proc put_wordSpacing*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_wordSpacing(self, v)
proc get_wordSpacing*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_wordSpacing(self, p)
proc put_letterSpacing*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_letterSpacing(self, v)
proc get_letterSpacing*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_letterSpacing(self, p)
proc put_textDecoration*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecoration(self, v)
proc get_textDecoration*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecoration(self, p)
proc put_textDecorationNone*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationNone(self, v)
proc get_textDecorationNone*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationNone(self, p)
proc put_textDecorationUnderline*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationUnderline(self, v)
proc get_textDecorationUnderline*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationUnderline(self, p)
proc put_textDecorationOverline*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationOverline(self, v)
proc get_textDecorationOverline*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationOverline(self, p)
proc put_textDecorationLineThrough*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationLineThrough(self, v)
proc get_textDecorationLineThrough*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationLineThrough(self, p)
proc put_textDecorationBlink*(self: ptr IHTMLRuleStyle, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textDecorationBlink(self, v)
proc get_textDecorationBlink*(self: ptr IHTMLRuleStyle, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textDecorationBlink(self, p)
proc put_verticalAlign*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_verticalAlign(self, v)
proc get_verticalAlign*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_verticalAlign(self, p)
proc put_textTransform*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textTransform(self, v)
proc get_textTransform*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textTransform(self, p)
proc put_textAlign*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textAlign(self, v)
proc get_textAlign*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textAlign(self, p)
proc put_textIndent*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_textIndent(self, v)
proc get_textIndent*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_textIndent(self, p)
proc put_lineHeight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lineHeight(self, v)
proc get_lineHeight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lineHeight(self, p)
proc put_marginTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginTop(self, v)
proc get_marginTop*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginTop(self, p)
proc put_marginRight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginRight(self, v)
proc get_marginRight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginRight(self, p)
proc put_marginBottom*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginBottom(self, v)
proc get_marginBottom*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginBottom(self, p)
proc put_marginLeft*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_marginLeft(self, v)
proc get_marginLeft*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_marginLeft(self, p)
proc put_margin*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_margin(self, v)
proc get_margin*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_margin(self, p)
proc put_paddingTop*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingTop(self, v)
proc get_paddingTop*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingTop(self, p)
proc put_paddingRight*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingRight(self, v)
proc get_paddingRight*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingRight(self, p)
proc put_paddingBottom*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingBottom(self, v)
proc get_paddingBottom*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingBottom(self, p)
proc put_paddingLeft*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_paddingLeft(self, v)
proc get_paddingLeft*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_paddingLeft(self, p)
proc put_padding*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_padding(self, v)
proc get_padding*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_padding(self, p)
proc put_border*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
proc get_border*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
proc put_borderTop*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTop(self, v)
proc get_borderTop*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTop(self, p)
proc put_borderRight*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRight(self, v)
proc get_borderRight*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRight(self, p)
proc put_borderBottom*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottom(self, v)
proc get_borderBottom*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottom(self, p)
proc put_borderLeft*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeft(self, v)
proc get_borderLeft*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeft(self, p)
proc put_borderColor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderColor(self, v)
proc get_borderColor*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderColor(self, p)
proc put_borderTopColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopColor(self, v)
proc get_borderTopColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopColor(self, p)
proc put_borderRightColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightColor(self, v)
proc get_borderRightColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightColor(self, p)
proc put_borderBottomColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomColor(self, v)
proc get_borderBottomColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomColor(self, p)
proc put_borderLeftColor*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftColor(self, v)
proc get_borderLeftColor*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftColor(self, p)
proc put_borderWidth*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderWidth(self, v)
proc get_borderWidth*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderWidth(self, p)
proc put_borderTopWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopWidth(self, v)
proc get_borderTopWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopWidth(self, p)
proc put_borderRightWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightWidth(self, v)
proc get_borderRightWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightWidth(self, p)
proc put_borderBottomWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomWidth(self, v)
proc get_borderBottomWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomWidth(self, p)
proc put_borderLeftWidth*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftWidth(self, v)
proc get_borderLeftWidth*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftWidth(self, p)
proc put_borderStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderStyle(self, v)
proc get_borderStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderStyle(self, p)
proc put_borderTopStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderTopStyle(self, v)
proc get_borderTopStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderTopStyle(self, p)
proc put_borderRightStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderRightStyle(self, v)
proc get_borderRightStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderRightStyle(self, p)
proc put_borderBottomStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderBottomStyle(self, v)
proc get_borderBottomStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderBottomStyle(self, p)
proc put_borderLeftStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_borderLeftStyle(self, v)
proc get_borderLeftStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_borderLeftStyle(self, p)
proc put_width*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
proc get_width*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
proc put_height*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
proc get_height*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
proc put_styleFloat*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_styleFloat(self, v)
proc get_styleFloat*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleFloat(self, p)
proc put_clear*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clear(self, v)
proc get_clear*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clear(self, p)
proc put_display*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_display(self, v)
proc get_display*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_display(self, p)
proc put_visibility*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_visibility(self, v)
proc get_visibility*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_visibility(self, p)
proc put_listStyleType*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleType(self, v)
proc get_listStyleType*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleType(self, p)
proc put_listStylePosition*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStylePosition(self, v)
proc get_listStylePosition*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStylePosition(self, p)
proc put_listStyleImage*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyleImage(self, v)
proc get_listStyleImage*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyleImage(self, p)
proc put_listStyle*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_listStyle(self, v)
proc get_listStyle*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_listStyle(self, p)
proc put_whiteSpace*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_whiteSpace(self, v)
proc get_whiteSpace*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_whiteSpace(self, p)
proc put_top*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_top(self, v)
proc get_top*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
proc put_left*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_left(self, v)
proc get_left*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_left(self, p)
proc get_position*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_position(self, p)
proc put_zIndex*(self: ptr IHTMLRuleStyle, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_zIndex(self, v)
proc get_zIndex*(self: ptr IHTMLRuleStyle, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_zIndex(self, p)
proc put_overflow*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_overflow(self, v)
proc get_overflow*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_overflow(self, p)
proc put_pageBreakBefore*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakBefore(self, v)
proc get_pageBreakBefore*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakBefore(self, p)
proc put_pageBreakAfter*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pageBreakAfter(self, v)
proc get_pageBreakAfter*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pageBreakAfter(self, p)
proc put_cssText*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
proc get_cssText*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
proc put_cursor*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cursor(self, v)
proc get_cursor*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cursor(self, p)
proc put_clip*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_clip(self, v)
proc get_clip*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clip(self, p)
proc put_filter*(self: ptr IHTMLRuleStyle, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_filter(self, v)
proc get_filter*(self: ptr IHTMLRuleStyle, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filter(self, p)
proc setAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
proc getAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
proc removeAttribute*(self: ptr IHTMLRuleStyle, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
proc setAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, AttributeValue: VARIANT, lFlags: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, strAttributeName, AttributeValue, lFlags)
proc getAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, AttributeValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, strAttributeName, lFlags, AttributeValue)
proc removeAttribute*(self: ptr IHTMLElement, strAttributeName: BSTR, lFlags: LONG, pfSuccess: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeAttribute(self, strAttributeName, lFlags, pfSuccess)
proc put_className*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_className(self, v)
proc get_className*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_className(self, p)
proc put_id*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_id(self, v)
proc get_id*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_id(self, p)
proc get_tagName*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_tagName(self, p)
proc get_parentElement*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentElement(self, p)
proc get_style*(self: ptr IHTMLElement, p: ptr ptr IHTMLStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
proc put_onhelp*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
proc get_onhelp*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
proc put_onclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onclick(self, v)
proc get_onclick*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onclick(self, p)
proc put_ondblclick*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondblclick(self, v)
proc get_ondblclick*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondblclick(self, p)
proc put_onkeydown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeydown(self, v)
proc get_onkeydown*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeydown(self, p)
proc put_onkeyup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeyup(self, v)
proc get_onkeyup*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeyup(self, p)
proc put_onkeypress*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeypress(self, v)
proc get_onkeypress*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeypress(self, p)
proc put_onmouseout*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseout(self, v)
proc get_onmouseout*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseout(self, p)
proc put_onmouseover*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseover(self, v)
proc get_onmouseover*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseover(self, p)
proc put_onmousemove*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousemove(self, v)
proc get_onmousemove*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousemove(self, p)
proc put_onmousedown*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousedown(self, v)
proc get_onmousedown*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousedown(self, p)
proc put_onmouseup*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseup(self, v)
proc get_onmouseup*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseup(self, p)
proc get_document*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
proc put_title*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
proc get_title*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
proc put_language*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_language(self, v)
proc get_language*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_language(self, p)
proc put_onselectstart*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselectstart(self, v)
proc get_onselectstart*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselectstart(self, p)
proc scrollIntoView*(self: ptr IHTMLElement, varargStart: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollIntoView(self, varargStart)
proc contains*(self: ptr IHTMLElement, pChild: ptr IHTMLElement, pfResult: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.contains(self, pChild, pfResult)
proc get_sourceIndex*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_sourceIndex(self, p)
proc get_recordNumber*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_recordNumber(self, p)
proc put_lang*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lang(self, v)
proc get_lang*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lang(self, p)
proc get_offsetLeft*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetLeft(self, p)
proc get_offsetTop*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetTop(self, p)
proc get_offsetWidth*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetWidth(self, p)
proc get_offsetHeight*(self: ptr IHTMLElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetHeight(self, p)
proc get_offsetParent*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetParent(self, p)
proc put_innerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_innerHTML(self, v)
proc get_innerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerHTML(self, p)
proc put_innerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_innerText(self, v)
proc get_innerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_innerText(self, p)
proc put_outerHTML*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outerHTML(self, v)
proc get_outerHTML*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerHTML(self, p)
proc put_outerText*(self: ptr IHTMLElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_outerText(self, v)
proc get_outerText*(self: ptr IHTMLElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_outerText(self, p)
proc insertAdjacentHTML*(self: ptr IHTMLElement, where: BSTR, html: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertAdjacentHTML(self, where, html)
proc insertAdjacentText*(self: ptr IHTMLElement, where: BSTR, text: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.insertAdjacentText(self, where, text)
proc get_parentTextEdit*(self: ptr IHTMLElement, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentTextEdit(self, p)
proc get_isTextEdit*(self: ptr IHTMLElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isTextEdit(self, p)
proc click*(self: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.click(self)
proc get_filters*(self: ptr IHTMLElement, p: ptr ptr IHTMLFiltersCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_filters(self, p)
proc put_ondragstart*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragstart(self, v)
proc get_ondragstart*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragstart(self, p)
proc toString*(self: ptr IHTMLElement, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
proc put_onbeforeupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeupdate(self, v)
proc get_onbeforeupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeupdate(self, p)
proc put_onafterupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterupdate(self, v)
proc get_onafterupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterupdate(self, p)
proc put_onerrorupdate*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerrorupdate(self, v)
proc get_onerrorupdate*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerrorupdate(self, p)
proc put_onrowexit*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowexit(self, v)
proc get_onrowexit*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowexit(self, p)
proc put_onrowenter*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowenter(self, v)
proc get_onrowenter*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowenter(self, p)
proc put_ondatasetchanged*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetchanged(self, v)
proc get_ondatasetchanged*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetchanged(self, p)
proc put_ondataavailable*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondataavailable(self, v)
proc get_ondataavailable*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondataavailable(self, p)
proc put_ondatasetcomplete*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondatasetcomplete(self, v)
proc get_ondatasetcomplete*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondatasetcomplete(self, p)
proc put_onfilterchange*(self: ptr IHTMLElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfilterchange(self, v)
proc get_onfilterchange*(self: ptr IHTMLElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfilterchange(self, p)
proc get_children*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_children(self, p)
proc get_all*(self: ptr IHTMLElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_all(self, p)
proc put_selectorText*(self: ptr IHTMLStyleSheetRule, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selectorText(self, v)
proc get_selectorText*(self: ptr IHTMLStyleSheetRule, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selectorText(self, p)
proc get_style*(self: ptr IHTMLStyleSheetRule, p: ptr ptr IHTMLRuleStyle): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_style(self, p)
proc get_readOnly*(self: ptr IHTMLStyleSheetRule, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
proc get_length*(self: ptr IHTMLStyleSheetRulesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc item*(self: ptr IHTMLStyleSheetRulesCollection, index: LONG, ppHTMLStyleSheetRule: ptr ptr IHTMLStyleSheetRule): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, index, ppHTMLStyleSheetRule)
proc put_title*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
proc get_title*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
proc get_parentStyleSheet*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentStyleSheet(self, p)
proc get_owningElement*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_owningElement(self, p)
proc put_disabled*(self: ptr IHTMLStyleSheet, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_disabled(self, v)
proc get_disabled*(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_disabled(self, p)
proc get_readOnly*(self: ptr IHTMLStyleSheet, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readOnly(self, p)
proc get_imports*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_imports(self, p)
proc put_href*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
proc get_href*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
proc get_type*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
proc get_id*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_id(self, p)
proc addImport*(self: ptr IHTMLStyleSheet, bstrURL: BSTR, lIndex: LONG, plIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addImport(self, bstrURL, lIndex, plIndex)
proc addRule*(self: ptr IHTMLStyleSheet, bstrSelector: BSTR, bstrStyle: BSTR, lIndex: LONG, plNewIndex: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addRule(self, bstrSelector, bstrStyle, lIndex, plNewIndex)
proc removeImport*(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeImport(self, lIndex)
proc removeRule*(self: ptr IHTMLStyleSheet, lIndex: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.removeRule(self, lIndex)
proc put_media*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_media(self, v)
proc get_media*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_media(self, p)
proc put_cssText*(self: ptr IHTMLStyleSheet, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cssText(self, v)
proc get_cssText*(self: ptr IHTMLStyleSheet, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cssText(self, p)
proc get_rules*(self: ptr IHTMLStyleSheet, p: ptr ptr IHTMLStyleSheetRulesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_rules(self, p)
proc get_length*(self: ptr IHTMLStyleSheetsCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_newEnum*(self: ptr IHTMLStyleSheetsCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
proc item*(self: ptr IHTMLStyleSheetsCollection, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
proc get_htmlText*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_htmlText(self, p)
proc put_text*(self: ptr IHTMLTxtRange, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
proc get_text*(self: ptr IHTMLTxtRange, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
proc parentElement*(self: ptr IHTMLTxtRange, parent: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.parentElement(self, parent)
proc duplicate*(self: ptr IHTMLTxtRange, Duplicate: ptr ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.duplicate(self, Duplicate)
proc inRange*(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, InRange: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.inRange(self, Range, InRange)
proc isEqual*(self: ptr IHTMLTxtRange, Range: ptr IHTMLTxtRange, IsEqual: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.isEqual(self, Range, IsEqual)
proc scrollIntoView*(self: ptr IHTMLTxtRange, fStart: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollIntoView(self, fStart)
proc collapse*(self: ptr IHTMLTxtRange, Start: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.collapse(self, Start)
proc expand*(self: ptr IHTMLTxtRange, Unit: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.expand(self, Unit, Success)
proc move*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.move(self, Unit, Count, ActualCount)
proc moveStart*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveStart(self, Unit, Count, ActualCount)
proc moveEnd*(self: ptr IHTMLTxtRange, Unit: BSTR, Count: LONG, ActualCount: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveEnd(self, Unit, Count, ActualCount)
proc select*(self: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.select(self)
proc pasteHTML*(self: ptr IHTMLTxtRange, html: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.pasteHTML(self, html)
proc moveToElementText*(self: ptr IHTMLTxtRange, element: ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToElementText(self, element)
proc setEndPoint*(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setEndPoint(self, how, SourceRange)
proc compareEndPoints*(self: ptr IHTMLTxtRange, how: BSTR, SourceRange: ptr IHTMLTxtRange, ret: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.compareEndPoints(self, how, SourceRange, ret)
proc findText*(self: ptr IHTMLTxtRange, String: BSTR, count: LONG, Flags: LONG, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.findText(self, String, count, Flags, Success)
proc moveToPoint*(self: ptr IHTMLTxtRange, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToPoint(self, x, y)
proc getBookmark*(self: ptr IHTMLTxtRange, Boolmark: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getBookmark(self, Boolmark)
proc moveToBookmark*(self: ptr IHTMLTxtRange, Bookmark: BSTR, Success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveToBookmark(self, Bookmark, Success)
proc queryCommandSupported*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
proc queryCommandEnabled*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
proc queryCommandState*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandState(self, cmdID, pfRet)
proc queryCommandIndeterm*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
proc queryCommandText*(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
proc queryCommandValue*(self: ptr IHTMLTxtRange, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
proc execCommand*(self: ptr IHTMLTxtRange, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
proc execCommandShowHelp*(self: ptr IHTMLTxtRange, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
proc put_action*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_action(self, v)
proc get_action*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_action(self, p)
proc put_dir*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dir(self, v)
proc get_dir*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dir(self, p)
proc put_encoding*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_encoding(self, v)
proc get_encoding*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_encoding(self, p)
proc put_method*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_method(self, v)
proc get_method*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_method(self, p)
proc get_elements*(self: ptr IHTMLFormElement, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_elements(self, p)
proc put_target*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_target(self, v)
proc get_target*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_target(self, p)
proc put_name*(self: ptr IHTMLFormElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
proc get_name*(self: ptr IHTMLFormElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
proc put_onsubmit*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onsubmit(self, v)
proc get_onsubmit*(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onsubmit(self, p)
proc put_onreset*(self: ptr IHTMLFormElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreset(self, v)
proc get_onreset*(self: ptr IHTMLFormElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreset(self, p)
proc submit*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.submit(self)
proc reset*(self: ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reset(self)
proc put_length*(self: ptr IHTMLFormElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
proc get_length*(self: ptr IHTMLFormElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_newEnum*(self: ptr IHTMLFormElement, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
proc item*(self: ptr IHTMLFormElement, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
proc tags*(self: ptr IHTMLFormElement, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
proc put_isMap*(self: ptr IHTMLImgElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_isMap(self, v)
proc get_isMap*(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_isMap(self, p)
proc put_useMap*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_useMap(self, v)
proc get_useMap*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_useMap(self, p)
proc get_mimeType*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
proc get_fileSize*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
proc get_fileCreatedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileCreatedDate(self, p)
proc get_fileModifiedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
proc get_fileUpdatedDate*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
proc get_protocol*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
proc get_href*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
proc get_nameProp*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nameProp(self, p)
proc put_border*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_border(self, v)
proc get_border*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_border(self, p)
proc put_vspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vspace(self, v)
proc get_vspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vspace(self, p)
proc put_hspace*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hspace(self, v)
proc get_hspace*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hspace(self, p)
proc put_alt*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alt(self, v)
proc get_alt*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alt(self, p)
proc put_src*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_src(self, v)
proc get_src*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_src(self, p)
proc put_lowsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_lowsrc(self, v)
proc get_lowsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lowsrc(self, p)
proc put_vrml*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vrml(self, v)
proc get_vrml*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vrml(self, p)
proc put_dynsrc*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_dynsrc(self, v)
proc get_dynsrc*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_dynsrc(self, p)
proc get_readyState*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
proc get_complete*(self: ptr IHTMLImgElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_complete(self, p)
proc put_loop*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_loop(self, v)
proc get_loop*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_loop(self, p)
proc put_align*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_align(self, v)
proc get_align*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_align(self, p)
proc put_onload*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
proc get_onload*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
proc put_onerror*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
proc get_onerror*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
proc put_onabort*(self: ptr IHTMLImgElement, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onabort(self, v)
proc get_onabort*(self: ptr IHTMLImgElement, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onabort(self, p)
proc put_name*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
proc get_name*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
proc put_width*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_width(self, v)
proc get_width*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
proc put_height*(self: ptr IHTMLImgElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_height(self, v)
proc get_height*(self: ptr IHTMLImgElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
proc put_start*(self: ptr IHTMLImgElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_start(self, v)
proc get_start*(self: ptr IHTMLImgElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_start(self, p)
proc create*(self: ptr IHTMLImageElementFactory, width: VARIANT, height: VARIANT, a: ptr ptr IHTMLImgElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, width, height, a)
proc toString*(self: ptr IHTMLElementCollection, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
proc put_length*(self: ptr IHTMLElementCollection, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_length(self, v)
proc get_length*(self: ptr IHTMLElementCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_newEnum*(self: ptr IHTMLElementCollection, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
proc item*(self: ptr IHTMLElementCollection, name: VARIANT, index: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, name, index, pdisp)
proc tags*(self: ptr IHTMLElementCollection, tagName: VARIANT, pdisp: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.tags(self, tagName, pdisp)
proc createRange*(self: ptr IHTMLSelectionObject, range: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createRange(self, range)
proc empty*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.empty(self)
proc clear*(self: ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
proc get_type*(self: ptr IHTMLSelectionObject, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
proc put_selected*(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_selected(self, v)
proc get_selected*(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selected(self, p)
proc put_value*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_value(self, v)
proc get_value*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_value(self, p)
proc put_defaultSelected*(self: ptr IHTMLOptionElement, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultSelected(self, v)
proc get_defaultSelected*(self: ptr IHTMLOptionElement, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultSelected(self, p)
proc put_index*(self: ptr IHTMLOptionElement, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_index(self, v)
proc get_index*(self: ptr IHTMLOptionElement, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_index(self, p)
proc put_text*(self: ptr IHTMLOptionElement, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_text(self, v)
proc get_text*(self: ptr IHTMLOptionElement, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_text(self, p)
proc get_form*(self: ptr IHTMLOptionElement, p: ptr ptr IHTMLFormElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_form(self, p)
proc create*(self: ptr IHTMLOptionElementFactory, text: VARIANT, value: VARIANT, defaultselected: VARIANT, selected: VARIANT, a: ptr ptr IHTMLOptionElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.create(self, text, value, defaultselected, selected, a)
proc get_length*(self: ptr IOmHistory, p: ptr int16): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc back*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.back(self, pvargdistance)
proc forward*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.forward(self, pvargdistance)
proc go*(self: ptr IOmHistory, pvargdistance: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.go(self, pvargdistance)
proc get_length*(self: ptr IHTMLMimeTypesCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_length*(self: ptr IHTMLPluginsCollection, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc refresh*(self: ptr IHTMLPluginsCollection, reload: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.refresh(self, reload)
proc addRequest*(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addRequest(self, name, reserved, success)
proc clearRequest*(self: ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearRequest(self)
proc doRequest*(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doRequest(self, usage, fname, domain, path, expire, reserved)
proc getAttribute*(self: ptr IHTMLOpsProfile, name: BSTR, value: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.getAttribute(self, name, value)
proc setAttribute*(self: ptr IHTMLOpsProfile, name: BSTR, value: BSTR, prefs: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setAttribute(self, name, value, prefs, success)
proc commitChanges*(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.commitChanges(self, success)
proc addReadRequest*(self: ptr IHTMLOpsProfile, name: BSTR, reserved: VARIANT, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.addReadRequest(self, name, reserved, success)
proc doReadRequest*(self: ptr IHTMLOpsProfile, usage: VARIANT, fname: VARIANT, domain: VARIANT, path: VARIANT, expire: VARIANT, reserved: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doReadRequest(self, usage, fname, domain, path, expire, reserved)
proc doWriteRequest*(self: ptr IHTMLOpsProfile, success: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.doWriteRequest(self, success)
proc get_appCodeName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appCodeName(self, p)
proc get_appName*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appName(self, p)
proc get_appVersion*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appVersion(self, p)
proc get_userAgent*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userAgent(self, p)
proc javaEnabled*(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.javaEnabled(self, enabled)
proc taintEnabled*(self: ptr IOmNavigator, enabled: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.taintEnabled(self, enabled)
proc get_mimeTypes*(self: ptr IOmNavigator, p: ptr ptr IHTMLMimeTypesCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeTypes(self, p)
proc get_plugins*(self: ptr IOmNavigator, p: ptr ptr IHTMLPluginsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_plugins(self, p)
proc get_cookieEnabled*(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cookieEnabled(self, p)
proc get_opsProfile*(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_opsProfile(self, p)
proc toString*(self: ptr IOmNavigator, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
proc get_cpuClass*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cpuClass(self, p)
proc get_systemLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_systemLanguage(self, p)
proc get_browserLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_browserLanguage(self, p)
proc get_userLanguage*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userLanguage(self, p)
proc get_platform*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_platform(self, p)
proc get_appMinorVersion*(self: ptr IOmNavigator, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_appMinorVersion(self, p)
proc get_connectionSpeed*(self: ptr IOmNavigator, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_connectionSpeed(self, p)
proc get_onLine*(self: ptr IOmNavigator, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onLine(self, p)
proc get_userProfile*(self: ptr IOmNavigator, p: ptr ptr IHTMLOpsProfile): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_userProfile(self, p)
proc put_href*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_href(self, v)
proc get_href*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_href(self, p)
proc put_protocol*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_protocol(self, v)
proc get_protocol*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
proc put_host*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_host(self, v)
proc get_host*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_host(self, p)
proc put_hostname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hostname(self, v)
proc get_hostname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hostname(self, p)
proc put_port*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_port(self, v)
proc get_port*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_port(self, p)
proc put_pathname*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_pathname(self, v)
proc get_pathname*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_pathname(self, p)
proc put_search*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_search(self, v)
proc get_search*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_search(self, p)
proc put_hash*(self: ptr IHTMLLocation, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_hash(self, v)
proc get_hash*(self: ptr IHTMLLocation, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_hash(self, p)
proc reload*(self: ptr IHTMLLocation, flag: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.reload(self, flag)
proc replace*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.replace(self, bstr)
proc assign*(self: ptr IHTMLLocation, bstr: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.assign(self, bstr)
proc toString*(self: ptr IHTMLLocation, string: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, string)
proc get_srcElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcElement(self, p)
proc get_altKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_altKey(self, p)
proc get_ctrlKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ctrlKey(self, p)
proc get_shiftKey*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_shiftKey(self, p)
proc put_returnValue*(self: ptr IHTMLEventObj, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_returnValue(self, v)
proc get_returnValue*(self: ptr IHTMLEventObj, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_returnValue(self, p)
proc put_cancelBubble*(self: ptr IHTMLEventObj, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cancelBubble(self, v)
proc get_cancelBubble*(self: ptr IHTMLEventObj, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cancelBubble(self, p)
proc get_fromElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fromElement(self, p)
proc get_toElement*(self: ptr IHTMLEventObj, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_toElement(self, p)
proc put_keyCode*(self: ptr IHTMLEventObj, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_keyCode(self, v)
proc get_keyCode*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_keyCode(self, p)
proc get_button*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_button(self, p)
proc get_type*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_type(self, p)
proc get_qualifier*(self: ptr IHTMLEventObj, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_qualifier(self, p)
proc get_reason*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_reason(self, p)
proc get_x*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_x(self, p)
proc get_y*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_y(self, p)
proc get_clientX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientX(self, p)
proc get_clientY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientY(self, p)
proc get_offsetX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetX(self, p)
proc get_offsetY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offsetY(self, p)
proc get_screenX*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenX(self, p)
proc get_screenY*(self: ptr IHTMLEventObj, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screenY(self, p)
proc get_srcFilter*(self: ptr IHTMLEventObj, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_srcFilter(self, p)
proc item*(self: ptr IHTMLFramesCollection2, pvarIndex: ptr VARIANT, pvarResult: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.item(self, pvarIndex, pvarResult)
proc get_length*(self: ptr IHTMLFramesCollection2, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_length(self, p)
proc get_colorDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_colorDepth(self, p)
proc put_bufferDepth*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bufferDepth(self, v)
proc get_bufferDepth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bufferDepth(self, p)
proc get_width*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_width(self, p)
proc get_height*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_height(self, p)
proc put_updateInterval*(self: ptr IHTMLScreen, v: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_updateInterval(self, v)
proc get_updateInterval*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_updateInterval(self, p)
proc get_availHeight*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availHeight(self, p)
proc get_availWidth*(self: ptr IHTMLScreen, p: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_availWidth(self, p)
proc get_fontSmoothingEnabled*(self: ptr IHTMLScreen, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fontSmoothingEnabled(self, p)
proc get_frames*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frames(self, p)
proc put_defaultStatus*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultStatus(self, v)
proc get_defaultStatus*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultStatus(self, p)
proc put_status*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_status(self, v)
proc get_status*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_status(self, p)
proc setTimeout*(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setTimeout(self, expression, msec, language, timerID)
proc clearTimeout*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearTimeout(self, timerID)
proc alert*(self: ptr IHTMLWindow2, message: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.alert(self, message)
proc confirm*(self: ptr IHTMLWindow2, message: BSTR, confirmed: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.confirm(self, message, confirmed)
proc prompt*(self: ptr IHTMLWindow2, message: BSTR, defstr: BSTR, textdata: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.prompt(self, message, defstr, textdata)
proc get_Image*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLImageElementFactory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Image(self, p)
proc get_location*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLLocation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_location(self, p)
proc get_history*(self: ptr IHTMLWindow2, p: ptr ptr IOmHistory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_history(self, p)
proc close*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.close(self)
proc put_opener*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_opener(self, v)
proc get_opener*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_opener(self, p)
proc get_navigator*(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_navigator(self, p)
proc put_name*(self: ptr IHTMLWindow2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_name(self, v)
proc get_name*(self: ptr IHTMLWindow2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_name(self, p)
proc get_parent*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parent(self, p)
proc open*(self: ptr IHTMLWindow2, url: BSTR, name: BSTR, features: BSTR, replace: VARIANT_BOOL, pomWindowResult: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
proc get_self*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_self(self, p)
proc get_top*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_top(self, p)
proc get_window*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_window(self, p)
proc navigate*(self: ptr IHTMLWindow2, url: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.navigate(self, url)
proc put_onfocus*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onfocus(self, v)
proc get_onfocus*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onfocus(self, p)
proc put_onblur*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onblur(self, v)
proc get_onblur*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onblur(self, p)
proc put_onload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onload(self, v)
proc get_onload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onload(self, p)
proc put_onbeforeunload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeunload(self, v)
proc get_onbeforeunload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeunload(self, p)
proc put_onunload*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onunload(self, v)
proc get_onunload*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onunload(self, p)
proc put_onhelp*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
proc get_onhelp*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
proc put_onerror*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerror(self, v)
proc get_onerror*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerror(self, p)
proc put_onresize*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onresize(self, v)
proc get_onresize*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onresize(self, p)
proc put_onscroll*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onscroll(self, v)
proc get_onscroll*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onscroll(self, p)
proc get_document*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_document(self, p)
proc get_event*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLEventObj): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_event(self, p)
proc get_newEnum*(self: ptr IHTMLWindow2, p: ptr ptr IUnknown): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_newEnum(self, p)
proc showModalDialog*(self: ptr IHTMLWindow2, dialog: BSTR, varArgIn: ptr VARIANT, varOptions: ptr VARIANT, varArgOut: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showModalDialog(self, dialog, varArgIn, varOptions, varArgOut)
proc showHelp*(self: ptr IHTMLWindow2, helpURL: BSTR, helpArg: VARIANT, features: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.showHelp(self, helpURL, helpArg, features)
proc get_screen*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLScreen): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_screen(self, p)
proc get_Option*(self: ptr IHTMLWindow2, p: ptr ptr IHTMLOptionElementFactory): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Option(self, p)
proc focus*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.focus(self)
proc get_closed*(self: ptr IHTMLWindow2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_closed(self, p)
proc blur*(self: ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.blur(self)
proc scroll*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scroll(self, x, y)
proc get_clientInformation*(self: ptr IHTMLWindow2, p: ptr ptr IOmNavigator): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_clientInformation(self, p)
proc setInterval*(self: ptr IHTMLWindow2, expression: BSTR, msec: LONG, language: ptr VARIANT, timerID: ptr LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.setInterval(self, expression, msec, language, timerID)
proc clearInterval*(self: ptr IHTMLWindow2, timerID: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clearInterval(self, timerID)
proc put_offscreenBuffering*(self: ptr IHTMLWindow2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_offscreenBuffering(self, v)
proc get_offscreenBuffering*(self: ptr IHTMLWindow2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_offscreenBuffering(self, p)
proc execScript*(self: ptr IHTMLWindow2, code: BSTR, language: BSTR, pvarRet: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execScript(self, code, language, pvarRet)
proc toString*(self: ptr IHTMLWindow2, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
proc scrollBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollBy(self, x, y)
proc scrollTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.scrollTo(self, x, y)
proc moveTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveTo(self, x, y)
proc moveBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.moveBy(self, x, y)
proc resizeTo*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeTo(self, x, y)
proc resizeBy*(self: ptr IHTMLWindow2, x: LONG, y: LONG): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.resizeBy(self, x, y)
proc get_external*(self: ptr IHTMLWindow2, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_external(self, p)
proc get_Script*(self: ptr IHTMLDocument, p: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_Script(self, p)
proc get_all*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_all(self, p)
proc get_body*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_body(self, p)
proc get_activeElement*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_activeElement(self, p)
proc get_images*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_images(self, p)
proc get_applets*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_applets(self, p)
proc get_links*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_links(self, p)
proc get_forms*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_forms(self, p)
proc get_anchors*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_anchors(self, p)
proc put_title*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_title(self, v)
proc get_title*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_title(self, p)
proc get_scripts*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_scripts(self, p)
proc put_designMode*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_designMode(self, v)
proc get_designMode*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_designMode(self, p)
proc get_selection*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLSelectionObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_selection(self, p)
proc get_readyState*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_readyState(self, p)
proc get_frames*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLFramesCollection2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_frames(self, p)
proc get_embeds*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_embeds(self, p)
proc get_plugins*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLElementCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_plugins(self, p)
proc put_alinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_alinkColor(self, v)
proc get_alinkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_alinkColor(self, p)
proc put_bgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_bgColor(self, v)
proc get_bgColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_bgColor(self, p)
proc put_fgColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_fgColor(self, v)
proc get_fgColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fgColor(self, p)
proc put_linkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_linkColor(self, v)
proc get_linkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_linkColor(self, p)
proc put_vlinkColor*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_vlinkColor(self, v)
proc get_vlinkColor*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_vlinkColor(self, p)
proc get_referrer*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_referrer(self, p)
proc get_location*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLLocation): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_location(self, p)
proc get_lastModified*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_lastModified(self, p)
proc put_URL*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_URL(self, v)
proc get_URL*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_URL(self, p)
proc put_domain*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_domain(self, v)
proc get_domain*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_domain(self, p)
proc put_cookie*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_cookie(self, v)
proc get_cookie*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_cookie(self, p)
proc put_expando*(self: ptr IHTMLDocument2, v: VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_expando(self, v)
proc get_expando*(self: ptr IHTMLDocument2, p: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_expando(self, p)
proc put_charset*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_charset(self, v)
proc get_charset*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_charset(self, p)
proc put_defaultCharset*(self: ptr IHTMLDocument2, v: BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_defaultCharset(self, v)
proc get_defaultCharset*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_defaultCharset(self, p)
proc get_mimeType*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_mimeType(self, p)
proc get_fileSize*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileSize(self, p)
proc get_fileCreatedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileCreatedDate(self, p)
proc get_fileModifiedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileModifiedDate(self, p)
proc get_fileUpdatedDate*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_fileUpdatedDate(self, p)
proc get_security*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_security(self, p)
proc get_protocol*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_protocol(self, p)
proc get_nameProp*(self: ptr IHTMLDocument2, p: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_nameProp(self, p)
proc write*(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.write(self, psarray)
proc writeln*(self: ptr IHTMLDocument2, psarray: ptr SAFEARRAY): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.writeln(self, psarray)
proc open*(self: ptr IHTMLDocument2, url: BSTR, name: VARIANT, features: VARIANT, replace: VARIANT, pomWindowResult: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.open(self, url, name, features, replace, pomWindowResult)
proc close*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.close(self)
proc clear*(self: ptr IHTMLDocument2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.clear(self)
proc queryCommandSupported*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandSupported(self, cmdID, pfRet)
proc queryCommandEnabled*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandEnabled(self, cmdID, pfRet)
proc queryCommandState*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandState(self, cmdID, pfRet)
proc queryCommandIndeterm*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandIndeterm(self, cmdID, pfRet)
proc queryCommandText*(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdText: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandText(self, cmdID, pcmdText)
proc queryCommandValue*(self: ptr IHTMLDocument2, cmdID: BSTR, pcmdValue: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.queryCommandValue(self, cmdID, pcmdValue)
proc execCommand*(self: ptr IHTMLDocument2, cmdID: BSTR, showUI: VARIANT_BOOL, value: VARIANT, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommand(self, cmdID, showUI, value, pfRet)
proc execCommandShowHelp*(self: ptr IHTMLDocument2, cmdID: BSTR, pfRet: ptr VARIANT_BOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.execCommandShowHelp(self, cmdID, pfRet)
proc createElement*(self: ptr IHTMLDocument2, eTag: BSTR, newElem: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createElement(self, eTag, newElem)
proc put_onhelp*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onhelp(self, v)
proc get_onhelp*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onhelp(self, p)
proc put_onclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onclick(self, v)
proc get_onclick*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onclick(self, p)
proc put_ondblclick*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondblclick(self, v)
proc get_ondblclick*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondblclick(self, p)
proc put_onkeyup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeyup(self, v)
proc get_onkeyup*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeyup(self, p)
proc put_onkeydown*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeydown(self, v)
proc get_onkeydown*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeydown(self, p)
proc put_onkeypress*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onkeypress(self, v)
proc get_onkeypress*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onkeypress(self, p)
proc put_onmouseup*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseup(self, v)
proc get_onmouseup*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseup(self, p)
proc put_onmousedown*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousedown(self, v)
proc get_onmousedown*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousedown(self, p)
proc put_onmousemove*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmousemove(self, v)
proc get_onmousemove*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmousemove(self, p)
proc put_onmouseout*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseout(self, v)
proc get_onmouseout*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseout(self, p)
proc put_onmouseover*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onmouseover(self, v)
proc get_onmouseover*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onmouseover(self, p)
proc put_onreadystatechange*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onreadystatechange(self, v)
proc get_onreadystatechange*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onreadystatechange(self, p)
proc put_onafterupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onafterupdate(self, v)
proc get_onafterupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onafterupdate(self, p)
proc put_onrowexit*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowexit(self, v)
proc get_onrowexit*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowexit(self, p)
proc put_onrowenter*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onrowenter(self, v)
proc get_onrowenter*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onrowenter(self, p)
proc put_ondragstart*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_ondragstart(self, v)
proc get_ondragstart*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_ondragstart(self, p)
proc put_onselectstart*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onselectstart(self, v)
proc get_onselectstart*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onselectstart(self, p)
proc elementFromPoint*(self: ptr IHTMLDocument2, x: LONG, y: LONG, elementHit: ptr ptr IHTMLElement): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.elementFromPoint(self, x, y, elementHit)
proc get_parentWindow*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLWindow2): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_parentWindow(self, p)
proc get_styleSheets*(self: ptr IHTMLDocument2, p: ptr ptr IHTMLStyleSheetsCollection): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_styleSheets(self, p)
proc put_onbeforeupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onbeforeupdate(self, v)
proc get_onbeforeupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onbeforeupdate(self, p)
proc put_onerrorupdate*(self: ptr IHTMLDocument2, v: VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.put_onerrorupdate(self, v)
proc get_onerrorupdate*(self: ptr IHTMLDocument2, p: ptr VARIANT): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.get_onerrorupdate(self, p)
proc toString*(self: ptr IHTMLDocument2, String: ptr BSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.toString(self, String)
proc createStyleSheet*(self: ptr IHTMLDocument2, bstrHref: BSTR, lIndex: LONG, ppnewStyleSheet: ptr ptr IHTMLStyleSheet): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.createStyleSheet(self, bstrHref, lIndex, ppnewStyleSheet)
proc ShowContextMenu*(self: ptr IDocHostUIHandler, dwID: DWORD, ppt: ptr POINT, pcmdtReserved: ptr IUnknown, pdispReserved: ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowContextMenu(self, dwID, ppt, pcmdtReserved, pdispReserved)
proc GetHostInfo*(self: ptr IDocHostUIHandler, pInfo: ptr DOCHOSTUIINFO): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetHostInfo(self, pInfo)
proc ShowUI*(self: ptr IDocHostUIHandler, dwID: DWORD, pActiveObject: ptr IOleInPlaceActiveObject, pCommandTarget: ptr IOleCommandTarget, pFrame: ptr IOleInPlaceFrame, pDoc: ptr IOleInPlaceUIWindow): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ShowUI(self, dwID, pActiveObject, pCommandTarget, pFrame, pDoc)
proc HideUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.HideUI(self)
proc UpdateUI*(self: ptr IDocHostUIHandler): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.UpdateUI(self)
proc EnableModeless*(self: ptr IDocHostUIHandler, fEnable: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.EnableModeless(self, fEnable)
proc OnDocWindowActivate*(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnDocWindowActivate(self, fActivate)
proc OnFrameWindowActivate*(self: ptr IDocHostUIHandler, fActivate: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.OnFrameWindowActivate(self, fActivate)
proc ResizeBorder*(self: ptr IDocHostUIHandler, prcBorder: LPCRECT, pUIWindow: ptr IOleInPlaceUIWindow, fRameWindow: WINBOOL): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.ResizeBorder(self, prcBorder, pUIWindow, fRameWindow)
proc TranslateAccelerator*(self: ptr IDocHostUIHandler, lpMsg: LPMSG, pguidCmdGroup: ptr GUID, nCmdID: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateAccelerator(self, lpMsg, pguidCmdGroup, nCmdID)
proc GetOptionKeyPath*(self: ptr IDocHostUIHandler, pchKey: ptr LPOLESTR, dw: DWORD): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetOptionKeyPath(self, pchKey, dw)
proc GetDropTarget*(self: ptr IDocHostUIHandler, pDropTarget: ptr IDropTarget, ppDropTarget: ptr ptr IDropTarget): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetDropTarget(self, pDropTarget, ppDropTarget)
proc GetExternal*(self: ptr IDocHostUIHandler, ppDispatch: ptr ptr IDispatch): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.GetExternal(self, ppDispatch)
proc TranslateUrl*(self: ptr IDocHostUIHandler, dwTranslate: DWORD, pchURLIn: LPWSTR, ppchURLOut: ptr LPWSTR): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.TranslateUrl(self, dwTranslate, pchURLIn, ppchURLOut)
proc FilterDataObject*(self: ptr IDocHostUIHandler, pDO: ptr IDataObject, ppDORet: ptr ptr IDataObject): HRESULT {.winapi, inline.} = {.gcsafe.}: self.lpVtbl.FilterDataObject(self, pDO, ppDORet)
converter winimConverterIHTMLFiltersCollectionToIDispatch*(x: ptr IHTMLFiltersCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLFiltersCollectionToIUnknown*(x: ptr IHTMLFiltersCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLStyleToIDispatch*(x: ptr IHTMLStyle): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLStyleToIUnknown*(x: ptr IHTMLStyle): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLRuleStyleToIDispatch*(x: ptr IHTMLRuleStyle): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLRuleStyleToIUnknown*(x: ptr IHTMLRuleStyle): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLElementToIDispatch*(x: ptr IHTMLElement): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLElementToIUnknown*(x: ptr IHTMLElement): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLStyleSheetRuleToIDispatch*(x: ptr IHTMLStyleSheetRule): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLStyleSheetRuleToIUnknown*(x: ptr IHTMLStyleSheetRule): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLStyleSheetRulesCollectionToIDispatch*(x: ptr IHTMLStyleSheetRulesCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLStyleSheetRulesCollectionToIUnknown*(x: ptr IHTMLStyleSheetRulesCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLStyleSheetToIDispatch*(x: ptr IHTMLStyleSheet): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLStyleSheetToIUnknown*(x: ptr IHTMLStyleSheet): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLStyleSheetsCollectionToIDispatch*(x: ptr IHTMLStyleSheetsCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLStyleSheetsCollectionToIUnknown*(x: ptr IHTMLStyleSheetsCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLTxtRangeToIDispatch*(x: ptr IHTMLTxtRange): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLTxtRangeToIUnknown*(x: ptr IHTMLTxtRange): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLFormElementToIDispatch*(x: ptr IHTMLFormElement): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLFormElementToIUnknown*(x: ptr IHTMLFormElement): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLImgElementToIDispatch*(x: ptr IHTMLImgElement): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLImgElementToIUnknown*(x: ptr IHTMLImgElement): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLImageElementFactoryToIDispatch*(x: ptr IHTMLImageElementFactory): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLImageElementFactoryToIUnknown*(x: ptr IHTMLImageElementFactory): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLElementCollectionToIDispatch*(x: ptr IHTMLElementCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLElementCollectionToIUnknown*(x: ptr IHTMLElementCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLSelectionObjectToIDispatch*(x: ptr IHTMLSelectionObject): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLSelectionObjectToIUnknown*(x: ptr IHTMLSelectionObject): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLOptionElementToIDispatch*(x: ptr IHTMLOptionElement): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLOptionElementToIUnknown*(x: ptr IHTMLOptionElement): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLOptionElementFactoryToIDispatch*(x: ptr IHTMLOptionElementFactory): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLOptionElementFactoryToIUnknown*(x: ptr IHTMLOptionElementFactory): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOmHistoryToIDispatch*(x: ptr IOmHistory): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIOmHistoryToIUnknown*(x: ptr IOmHistory): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLMimeTypesCollectionToIDispatch*(x: ptr IHTMLMimeTypesCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLMimeTypesCollectionToIUnknown*(x: ptr IHTMLMimeTypesCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLPluginsCollectionToIDispatch*(x: ptr IHTMLPluginsCollection): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLPluginsCollectionToIUnknown*(x: ptr IHTMLPluginsCollection): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLOpsProfileToIDispatch*(x: ptr IHTMLOpsProfile): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLOpsProfileToIUnknown*(x: ptr IHTMLOpsProfile): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIOmNavigatorToIDispatch*(x: ptr IOmNavigator): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIOmNavigatorToIUnknown*(x: ptr IOmNavigator): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLLocationToIDispatch*(x: ptr IHTMLLocation): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLLocationToIUnknown*(x: ptr IHTMLLocation): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLEventObjToIDispatch*(x: ptr IHTMLEventObj): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLEventObjToIUnknown*(x: ptr IHTMLEventObj): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLFramesCollection2ToIDispatch*(x: ptr IHTMLFramesCollection2): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLFramesCollection2ToIUnknown*(x: ptr IHTMLFramesCollection2): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLScreenToIDispatch*(x: ptr IHTMLScreen): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLScreenToIUnknown*(x: ptr IHTMLScreen): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLWindow2ToIHTMLFramesCollection2*(x: ptr IHTMLWindow2): ptr IHTMLFramesCollection2 = cast[ptr IHTMLFramesCollection2](x)
converter winimConverterIHTMLWindow2ToIDispatch*(x: ptr IHTMLWindow2): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLWindow2ToIUnknown*(x: ptr IHTMLWindow2): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLDocumentToIDispatch*(x: ptr IHTMLDocument): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLDocumentToIUnknown*(x: ptr IHTMLDocument): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIHTMLDocument2ToIHTMLDocument*(x: ptr IHTMLDocument2): ptr IHTMLDocument = cast[ptr IHTMLDocument](x)
converter winimConverterIHTMLDocument2ToIDispatch*(x: ptr IHTMLDocument2): ptr IDispatch = cast[ptr IDispatch](x)
converter winimConverterIHTMLDocument2ToIUnknown*(x: ptr IHTMLDocument2): ptr IUnknown = cast[ptr IUnknown](x)
converter winimConverterIDocHostUIHandlerToIUnknown*(x: ptr IDocHostUIHandler): ptr IUnknown = cast[ptr IUnknown](x)
const
unknown* = 0
requestSize* = 0
type
PRINTER_INFO_1A* {.pure.} = object
Flags*: DWORD
pDescription*: LPSTR
pName*: LPSTR
pComment*: LPSTR
PRINTER_INFO_1W* {.pure.} = object
Flags*: DWORD
pDescription*: LPWSTR
pName*: LPWSTR
pComment*: LPWSTR
PRINTER_DEFAULTSA* {.pure.} = object
pDatatype*: LPSTR
pDevMode*: LPDEVMODEA
DesiredAccess*: ACCESS_MASK
LPPRINTER_DEFAULTSA* = ptr PRINTER_DEFAULTSA
PRINTER_DEFAULTSW* {.pure.} = object
pDatatype*: LPWSTR
pDevMode*: LPDEVMODEW
DesiredAccess*: ACCESS_MASK
LPPRINTER_DEFAULTSW* = ptr PRINTER_DEFAULTSW
const
PRINTER_ENUM_LOCAL* = 0x00000002
PRINTER_ENUM_CONNECTIONS* = 0x00000004
proc ClosePrinter*(hPrinter: HANDLE): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc.}
when winimUnicode:
type
PRINTER_INFO_1* = PRINTER_INFO_1W
proc EnumPrinters*(Flags: DWORD, Name: LPWSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersW".}
proc OpenPrinter*(pPrinterName: LPWSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSW): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterW".}
proc DocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPWSTR, pDevModeOutput: PDEVMODEW, pDevModeInput: PDEVMODEW, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesW".}
proc GetDefaultPrinter*(pszBuffer: LPWSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterW".}
proc SetDefaultPrinter*(pszPrinter: LPCWSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterW".}
when winimAnsi:
type
PRINTER_INFO_1* = PRINTER_INFO_1A
proc EnumPrinters*(Flags: DWORD, Name: LPSTR, Level: DWORD, pPrinterEnum: LPBYTE, cbBuf: DWORD, pcbNeeded: LPDWORD, pcReturned: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "EnumPrintersA".}
proc OpenPrinter*(pPrinterName: LPSTR, phPrinter: LPHANDLE, pDefault: LPPRINTER_DEFAULTSA): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "OpenPrinterA".}
proc DocumentProperties*(hWnd: HWND, hPrinter: HANDLE, pDeviceName: LPSTR, pDevModeOutput: PDEVMODEA, pDevModeInput: PDEVMODEA, fMode: DWORD): LONG {.winapi, stdcall, dynlib: "winspool.drv", importc: "DocumentPropertiesA".}
proc GetDefaultPrinter*(pszBuffer: LPSTR, pcchBuffer: LPDWORD): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "GetDefaultPrinterA".}
proc SetDefaultPrinter*(pszPrinter: LPCSTR): WINBOOL {.winapi, stdcall, dynlib: "winspool.drv", importc: "SetDefaultPrinterA".}
const
BP_CHECKBOX* = 3
CBS_UNCHECKEDNORMAL* = 1
CBS_UNCHECKEDHOT* = 2
CBS_UNCHECKEDDISABLED* = 4
CBS_CHECKEDNORMAL* = 5
CBS_CHECKEDHOT* = 6
CBS_CHECKEDDISABLED* = 8
CP_DROPDOWNBUTTON* = 1
CP_BORDER* = 4
CP_READONLY* = 5
CP_DROPDOWNBUTTONRIGHT* = 6
CBRO_NORMAL* = 1
CBRO_HOT* = 2
CBRO_PRESSED* = 3
CBRO_DISABLED* = 4
TABP_BODY* = 10
type
THEMESIZE* = int32
const
TS_DRAW* = 2
proc OpenThemeData*(hwnd: HWND, pszClassList: LPCWSTR): HTHEME {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc CloseThemeData*(hTheme: HTHEME): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc DrawThemeBackground*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pRect: ptr RECT, pClipRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc DrawThemeText*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, pszText: LPCWSTR, iCharCount: int32, dwTextFlags: DWORD, dwTextFlags2: DWORD, pRect: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc GetThemePartSize*(hTheme: HTHEME, hdc: HDC, iPartId: int32, iStateId: int32, prc: ptr RECT, eSize: THEMESIZE, psz: ptr SIZE): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc SetWindowTheme*(hwnd: HWND, pszSubAppName: LPCWSTR, pszSubIdList: LPCWSTR): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc GetThemeSysColor*(hTheme: HTHEME, iColorId: int32): COLORREF {.winapi, stdcall, dynlib: "uxtheme", importc.}
proc DrawThemeParentBackground*(hwnd: HWND, hdc: HDC, prc: ptr RECT): HRESULT {.winapi, stdcall, dynlib: "uxtheme", importc.}
type
InterpolationMode* = int32
GpMatrixOrder* = int32
GpStatus* = int32
DebugEventProc* = pointer
RotateFlipType* = int32
ARGB* = DWORD
REAL* = float32
PixelFormat* = INT
const
encoderParameterValueTypeLong* = 4
interpolationModeDefault* = 0
interpolationModeLowQuality* = 1
interpolationModeHighQuality* = 2
interpolationModeNearestNeighbor* = 5
interpolationModeHighQualityBilinear* = 6
interpolationModeHighQualityBicubic* = 7
matrixOrderPrepend* = 0
Ok* = 0
imageLockModeRead* = 1
rotateNoneFlipNone* = 0
rotate90FlipNone* = 1
rotate180FlipNone* = 2
rotate270FlipNone* = 3
rotateNoneFlipX* = 4
rotate90FlipX* = 5
rotate180FlipX* = 6
rotate270FlipX* = 7
rotate180FlipXY* = 0
rotate270FlipXY* = 1
rotateNoneFlipXY* = 2
rotate90FlipXY* = 3
rotate180FlipY* = 4
rotate270FlipY* = 5
rotateNoneFlipY* = 6
rotate90FlipY* = 7
pixelFormatIndexed* = INT 0x00010000
pixelFormatGDI* = INT 0x00020000
pixelFormatAlpha* = INT 0x00040000
pixelFormatPAlpha* = INT 0x00080000
pixelFormatExtended* = INT 0x00100000
pixelFormatCanonical* = INT 0x00200000
pixelFormat1bppIndexed* = INT(1 or (1 shl 8) or pixelFormatIndexed or pixelFormatGDI)
pixelFormat4bppIndexed* = INT(2 or (4 shl 8) or pixelFormatIndexed or pixelFormatGDI)
pixelFormat8bppIndexed* = INT(3 or (8 shl 8) or pixelFormatIndexed or pixelFormatGDI)
pixelFormat16bppGrayScale* = INT(4 or (16 shl 8) or pixelFormatExtended)
pixelFormat16bppRGB555* = INT(5 or (16 shl 8) or pixelFormatGDI)
pixelFormat16bppRGB565* = INT(6 or (16 shl 8) or pixelFormatGDI)
pixelFormat16bppARGB1555* = INT(7 or (16 shl 8) or pixelFormatAlpha or pixelFormatGDI)
pixelFormat24bppRGB* = INT(8 or (24 shl 8) or pixelFormatGDI)
pixelFormat32bppRGB* = INT(9 or (32 shl 8) or pixelFormatGDI)
pixelFormat32bppARGB* = INT(10 or (32 shl 8) or pixelFormatAlpha or pixelFormatGDI or pixelFormatCanonical)
pixelFormat32bppPARGB* = INT(11 or (32 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatGDI)
pixelFormat48bppRGB* = INT(12 or (48 shl 8) or pixelFormatExtended)
pixelFormat64bppARGB* = INT(13 or (64 shl 8) or pixelFormatAlpha or pixelFormatCanonical or pixelFormatExtended)
pixelFormat64bppPARGB* = INT(14 or (64 shl 8) or pixelFormatAlpha or pixelFormatPAlpha or pixelFormatExtended)
EncoderQuality* = DEFINE_GUID(0x1D5BE4B5'i32, 0xFA4A, 0x452D, [0x9C'u8,0xDD,0x5D,0xB3,0x51,0x05,0xE7,0xEB])
BlurEffectGuid* = DEFINE_GUID(0x633C80A4'i32, 0x1843, 0x482B, [0x9E'u8,0xF2,0xBE,0x28,0x34,0xC5,0xFD,0xD4])
BrightnessContrastEffectGuid* = DEFINE_GUID(0xD3A1DBE1'i32, 0x8EC4, 0x4C17, [0x9F'u8,0x4C,0xEA,0x97,0xAD,0x1C,0x34,0x3D])
ColorBalanceEffectGuid* = DEFINE_GUID(0x537E597D'i32, 0x251E, 0x48DA, [0x96'u8,0x64,0x29,0xCA,0x49,0x6B,0x70,0xF8])
HueSaturationLightnessEffectGuid* = DEFINE_GUID(0x8B2DD6C3'i32, 0xEB07, 0x4D87, [0xA5'u8,0xF0,0x71,0x08,0xE2,0x6A,0x9C,0x5F])
LevelsEffectGuid* = DEFINE_GUID(0x99C354EC'i32, 0x2A31, 0x4F3A, [0x8C'u8,0x34,0x17,0xA8,0x03,0xB3,0x3A,0x25])
SharpenEffectGuid* = DEFINE_GUID(0x63CBF3EE'i32, 0xC526, 0x402C, [0x8F'u8,0x71,0x62,0xC5,0x40,0xBF,0x51,0x42])
TintEffectGuid* = DEFINE_GUID(0x1077AF00'i32, 0x2848, 0x4441, [0x94'u8,0x89,0x44,0xAD,0x4C,0x2D,0x7A,0x2C])
type
NotificationHookProc* = proc (token: ptr ULONG_PTR): GpStatus {.stdcall.}
NotificationUnhookProc* = proc (token: ULONG_PTR): VOID {.stdcall.}
GpRect* {.pure.} = object
X*: INT
Y*: INT
Width*: INT
Height*: INT
BitmapData* {.pure.} = object
Width*: UINT
Height*: UINT
Stride*: INT
PixelFormat*: INT
Scan0*: pointer
Reserved*: UINT_PTR
EncoderParameter* {.pure.} = object
Guid*: GUID
NumberOfValues*: ULONG
Type*: ULONG
Value*: pointer
EncoderParameters* {.pure.} = object
Count*: UINT
Parameter*: array[1, EncoderParameter]
ImageCodecInfo* {.pure.} = object
Clsid*: CLSID
FormatID*: GUID
CodecName*: ptr WCHAR
DllName*: ptr WCHAR
FormatDescription*: ptr WCHAR
FilenameExtension*: ptr WCHAR
MimeType*: ptr WCHAR
Flags*: DWORD
Version*: DWORD
SigCount*: DWORD
SigSize*: DWORD
SigPattern*: ptr BYTE
SigMask*: ptr BYTE
GdiplusStartupInput* {.pure.} = object
GdiplusVersion*: UINT32
DebugEventCallback*: DebugEventProc
SuppressBackgroundThread*: BOOL
SuppressExternalCodecs*: BOOL
GdiplusStartupOutput* {.pure.} = object
NotificationHook*: NotificationHookProc
NotificationUnhook*: NotificationUnhookProc
Color* {.pure.} = object
Value*: ARGB
BlurParams* {.pure.} = object
radius*: REAL
expandEdge*: BOOL
BrightnessContrastParams* {.pure.} = object
brightnessLevel*: INT
contrastLevel*: INT
ColorBalanceParams* {.pure.} = object
cyanRed*: INT
magentaGreen*: INT
yellowBlue*: INT
HueSaturationLightnessParams* {.pure.} = object
hueLevel*: INT
saturationLevel*: INT
lightnessLevel*: INT
LevelsParams* {.pure.} = object
highlight*: INT
midtone*: INT
shadow*: INT
SharpenParams* {.pure.} = object
radius*: REAL
amount*: REAL
TintParams* {.pure.} = object
hue*: INT
amount*: INT
CGpEffect* {.pure.} = object
GpBitmap* {.pure.} = object
GpGraphics* {.pure.} = object
GpImage* {.pure.} = object
proc GdiplusStartup*(token: ptr ULONG_PTR, input: ptr GdiplusStartupInput, output: ptr GdiplusStartupOutput): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateBitmapFromStream*(stream: ptr IStream, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateBitmapFromFile*(filename: ptr WCHAR, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateBitmapFromScan0*(width: INT, height: INT, stride: INT, format: PixelFormat, scan0: ptr BYTE, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateBitmapFromHBITMAP*(hbm: HBITMAP, hpal: HPALETTE, bitmap: ptr ptr GpBitmap): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateHBITMAPFromBitmap*(bitmap: ptr GpBitmap, hbmReturn: ptr HBITMAP, background: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapLockBits*(bitmap: ptr GpBitmap, rect: ptr GpRect, flags: UINT, format: PixelFormat, lockedBitmapData: ptr BitmapData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapUnlockBits*(bitmap: ptr GpBitmap, lockedBitmapData: ptr BitmapData): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapGetPixel*(bitmap: ptr GpBitmap, x: INT, y: INT, color: ptr ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapSetPixel*(bitmap: ptr GpBitmap, x: INT, y: INT, color: ARGB): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapApplyEffect*(bitmap: ptr GpBitmap, effect: ptr CGpEffect, roi: ptr RECT, useAuxData: BOOL, auxData: ptr pointer, auxDataSize: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipBitmapCreateApplyEffect*(inputBitmaps: ptr ptr GpBitmap, numInputs: INT, effect: ptr CGpEffect, roi: ptr RECT, outputRect: ptr RECT, outputBitmap: ptr ptr GpBitmap, useAuxData: BOOL, auxData: ptr pointer, auxDataSize: ptr INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCreateEffect*(guid: GUID, effect: ptr ptr CGpEffect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipDeleteEffect*(effect: ptr CGpEffect): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipSetEffectParameters*(effect: ptr CGpEffect, params: pointer, size: UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipDeleteGraphics*(graphics: ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipSetInterpolationMode*(graphics: ptr GpGraphics, interpolationMode: InterpolationMode): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipTranslateWorldTransform*(graphics: ptr GpGraphics, dx: REAL, dy: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipRotateWorldTransform*(graphics: ptr GpGraphics, angle: REAL, order: GpMatrixOrder): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipDrawImageRectI*(graphics: ptr GpGraphics, image: ptr GpImage, x: INT, y: INT, width: INT, height: INT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipCloneImage*(image: ptr GpImage, cloneImage: ptr ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipDisposeImage*(image: ptr GpImage): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipSaveImageToFile*(image: ptr GpImage, filename: ptr WCHAR, clsidEncoder: ptr CLSID, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipSaveImageToStream*(image: ptr GpImage, stream: ptr IStream, clsidEncoder: ptr CLSID, encoderParams: ptr EncoderParameters): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageGraphicsContext*(image: ptr GpImage, graphics: ptr ptr GpGraphics): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageWidth*(image: ptr GpImage, width: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageHeight*(image: ptr GpImage, height: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipImageRotateFlip*(image: ptr GpImage, rfType: RotateFlipType): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageDecodersSize*(numDecoders: ptr UINT, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageDecoders*(numDecoders: UINT, size: UINT, decoders: ptr ImageCodecInfo): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageEncodersSize*(numEncoders: ptr UINT, size: ptr UINT): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
proc GdipGetImageEncoders*(numEncoders: UINT, size: UINT, encoders: ptr ImageCodecInfo): GpStatus {.winapi, stdcall, dynlib: "gdiplus", importc.}
import winim/[ lean
, winstr
]
# if a win32 window does a bad
# this will call into M$ land
# and get the associated err code's reason
proc why*(err: DWORD): auto =
var
theDWord: lean.DWORD = FORMAT_MESSAGE_ALLOCATE_BUFFER or
FORMAT_MESSAGE_FROM_SYSTEM or
FORMAT_MESSAGE_IGNORE_INSERTS
theOtherdWord: lean.DWORD = cast [lean.DWORD](MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
messageBuffer: LPSTR
size = FormatMessageA( theDWord
, nil
, err
, theOtherDWord
, cast[LPSTR](addr messageBuffer)
, 0
, nil)
result = messageBuffer
proc ctNewWString(s: static[string]): wstring =
# copy from widestrs.nim, use WCHAR instead of Utf16Char
const
UNI_REPLACEMENT_CHAR = WCHAR(0xFFFD'u16)
UNI_MAX_BMP = 0x0000FFFF
UNI_MAX_UTF16 = 0x0010FFFF
halfShift = 10
halfBase = 0x0010000
halfMask = 0x3FF
UNI_SUR_HIGH_START = 0xD800
UNI_SUR_LOW_START = 0xDC00
UNI_SUR_LOW_END = 0xDFFF
UNI_REPL = 0xFFFD
template ones(n: untyped): untyped = ((1 shl n)-1)
template fastRuneAt(s: cstring, i, L: int, result: untyped, doInc = true) =
if ord(s[i]) <= 127:
result = ord(s[i])
when doInc: inc(i)
elif ord(s[i]) shr 5 == 0b110:
if i <= L - 2:
result = (ord(s[i]) and (ones(5))) shl 6 or (ord(s[i+1]) and ones(6))
when doInc: inc(i, 2)
else:
result = UNI_REPL
when doInc: inc(i)
elif ord(s[i]) shr 4 == 0b1110:
if i <= L - 3:
result = (ord(s[i]) and ones(4)) shl 12 or
(ord(s[i+1]) and ones(6)) shl 6 or
(ord(s[i+2]) and ones(6))
when doInc: inc(i, 3)
else:
result = UNI_REPL
when doInc: inc(i)
elif ord(s[i]) shr 3 == 0b11110:
if i <= L - 4:
result = (ord(s[i]) and ones(3)) shl 18 or
(ord(s[i+1]) and ones(6)) shl 12 or
(ord(s[i+2]) and ones(6)) shl 6 or
(ord(s[i+3]) and ones(6))
when doInc: inc(i, 4)
else:
result = UNI_REPL
when doInc: inc(i)
else:
result = 0xFFFD
when doInc: inc(i)
iterator runes(s: cstring, L: int): int =
var
i = 0
ret: int
while i < L:
fastRuneAt(s, i, L, ret, true)
yield ret
iterator WCHARs(source: cstring, L: int): WCHAR =
for ch in runes(source, L):
if ch <=% UNI_MAX_BMP:
if ch >=% UNI_SUR_HIGH_START and ch <=% UNI_SUR_LOW_END:
yield UNI_REPLACEMENT_CHAR
else:
yield WCHAR(ch)
elif ch >% UNI_MAX_UTF16:
yield UNI_REPLACEMENT_CHAR
else:
let ch = ch -% halfBase
yield WCHAR((ch shr halfShift) +% UNI_SUR_HIGH_START)
yield WCHAR((ch and halfMask) +% UNI_SUR_LOW_START)
var ret: string
for u in WCHARs(s, s.len):
ret.add char(u and 0xFF)
ret.add char(u shr 8)
ret.add "\0\0"
result = wstring ret
# no const to avoid Error: "VM does not support cast from tyCstring to tyPtr"
template L_no_const*(x: string): wstring =
## Generate const wstring from `static[string]` at compile-time.
var thing = ctNewWString(x)
thing
{.experimental: "codeReordering".}
import winim
import tables
, lists
const
windoww_main_loop_break* = -1
window_loop_continue* = 1
window_unregister_message* = 32786
type
Margins* = object
up*: int
down*: int
left*: int
right*: int
Win32_Point* = object
x*: int
y*: int
Win32_Command_ID* = distinct int
Win32_Event_Object = ref object of RootObj
Win32_Event* = ref object of Win32_Event_Object
window*: Win32_Window
mOrigin*: HWND
mMsg*: UINT
command_id*: Win32_Command_ID
w_param*: WPARAM
l_param*: LPARAM
userData*: int
skip*: bool
propagationLevel*: int
l_result*: LRESULT
key_status*: array[256, int8] # use int8 so that we can test if it < 0
mouse_Position*: Win32_Point
client_Position*: Win32_Point
# Event handler with event object as parameter.
Win32_Event_Proc* = proc (event: Win32_Event)
# Event handler without parameter.
Win32_Event_Neat_Proc* = proc ()
Win32_Message_Loop_Hook_Proc* = proc (msg: var MSG
, modal_hwnd: HWND
): int
## Hook procedure to the message loop. *modalHwnd* is not 0 if it is a modal
## window message loop instead of main loop. Returns > 0 to continue(skip) the loop,
## and returns < 0 to break(exit) the loop.
##
Win32_Hook_Proc* = proc ( self: Win32_Window
, message: UINT
, wParam: WPARAM
, lParam: LPARAM
): bool
Win32_Event_Connection* = object
message: UINT
id*: Win32_Command_ID
handler*: Win32_Event_Proc
neat_handler*: Win32_Event_Neat_Proc
user_data*: int
is_undeletable*: bool
Win32_Drop_Target* = object
lpVtbl*: ptr IDropTargetVtbl
vtbl*: IDropTargetVtbl
self*: Win32_Window
effect*: DWORD
Win32_Draggable_Info* = ref object
is_enabled*: bool
is_in_client*: bool
is_dragging*: bool
start_mouse_position*: Win32_Point
start_position*: Win32_Point
connection*: array[3,Win32_Event_Connection] # move, up, down
Direction* = object
up*: int
down*: int
left*: int
right*: int
Win32_Sizing_Info* = ref object
border*: Direction
dragging*: bool
ready*: tuple[up, down, left, right: bool]
offset*: Direction
connection*: array[3,Win32_Event_Connection] # move, up, down
Win32_Accelerator_Table* = ref object of RootObj
handle*: HACCEL
accels*: seq[ACCEL]
was_modified*: bool
Win32_Status_Bar* = ref object of Win32_Window
filed_Numbers*: int
widths*: array[256, int32]
help_index*: int
size_connection*: Win32_Event_Connection
Win32_Gdi_Object* = ref object of RootObj
handle*: HANDLE
is_deletable*: bool
Win32_Brush* = ref object of Win32_Gdi_Object
color*: int32
style*: DWORD
Win32_Pen* = ref object of Win32_Gdi_Object
color*: int32
style*: DWORD
width*: int
Win32_Bitmap* = ref object of Win32_Gdi_Object
width*: int
height*: int
depth*: int
Win32_Icon* = ref object of Win32_Gdi_Object
width*: int
height*: int
Win32_Size* = object
width*: int
height*: int
Win32_Cursor* = ref object of Win32_Gdi_Object
width*: int
height*: int
hotspot*: Win32_Point
has_icon_resource*: bool
Win32_Font* = ref object of Win32_Gdi_Object
point_size*: float
family*: int
weight*: int
is_italic*: bool
underline*: bool
strikeout*: bool
face_name*: string
encoding*: int
Win32_Menu_Item_Kind* = enum
Normal
Separator
Check
Radio
Sub_Menu
Win32_Menu_Base* = ref object of RootObj
h_menu*: HMENU
Win32_Menu_Item* = ref object of RootObj
id*: Win32_Command_ID
menu_item_kind*: Win32_Menu_Item_Kind
text*: string
help_string*: string
bitmap*: Win32_Bitmap
submenu*: Win32_Menu
data*: int
Win32_Menu* = ref object of Win32_Menu_Base
bitmap*: Win32_Bitmap
item_list*: seq[Win32_Menu_Item]
is_deletable*: bool
Win32_Toolbar_Tool* = ref object of RootObj
bitmap*: Win32_Bitmap
short_help*: string
long_help*: string
menu*: Win32_Menu
Win32_Toolbar* = ref object of Win32_Window
tools*: seq[Win32_Toolbar_Tool]
size_connection*: Win32_Event_Connection
command_connection*: Win32_Event_Connection
Win32_Image_List* = ref object of RootObj
handle*: HIMAGELIST
Win32_Rebar* = ref object of Win32_Control
controls*: seq[Win32_Control]
image_list*: Win32_Image_List
size_connection*: Win32_Event_Connection
dragging*: bool
can_min_max*: bool
can_drag*: bool
Win32_Control* = ref object of Win32_Window_Object
Win32_Window_Object = object of RootObj
hwnd*: HWND
parent_window*: Win32_Window
sub_windows*: seq[Win32_Window]
data*: int
class_name*: string
is_registered*: bool
system_connection_table*: Table[UINT, DoublyLinkedList[Win32_Event_Connection]]
connection_table*: Table[UINT, DoublyLinkedList[Win32_Event_Connection]]
margins*: Margins
status_bar*: Win32_Status_Bar
toolbars*: seq[Win32_Toolbar]
rebar*: Win32_Rebar
font*: Win32_Font
background_color*: int32
foreground_color*: int32
background_brush*: Win32_Brush
cursor*: Win32_Cursor
overrided_cursor*: Win32_Cursor
accelerator_table*: Win32_Accelerator_Table
popup_menu*: Win32_Menu
save_focus_hwnd*: HWND
is_focusable*: bool
mouse_In_window*: bool
max_size*: Win32_Size
min_size*: Win32_Size
dummy_parent*: HWND
tip_hwnd*: HWND
sizing_info*: Win32_Sizing_Info
draggable_info*: Win32_Draggable_Info
drop_target*: ref Win32_Drop_Target
hook_proc*: Win32_Hook_Proc
Win32_Window* = ref object of Win32_Window_Object
import winim/[ utils
]
, winim/inc/[ windef
, winuser
]
, winimx
import the_types
proc get_accelerator_handle*(the_table: Win32_Accelerator_Table
): HACCEL =
# Used internally, generate the accelerator table on the fly.
# To avoid recursive module dependencies problem, move this from
# wAcceleratorTable.nim to here.
if the_table.was_modified:
if the_table.handle != 0:
winimx.DestroyAcceleratorTable the_table.handle
if the_table.accels.len != 0:
the_table.handle = CreateAcceleratorTable( addr the_table.accels[0]
, int32 the_table.accels.len
)
else:
the_table.handle = 0
the_table.was_modified = false
result = the_table.handle
import winim/[ lean
]
import winim/inc/[ windef
]
, ../../portal/[ portalObj
, keyboard
]
, utils
proc WindowProc*( hwnd: HWND
, message: UINT
, wParam: WPARAM
, lParam: LPARAM
): LRESULT {.stdcall.} =
var
hdc: HDC
bOpened: bool
a_portal: ptr Portal = cast[ptr Portal] ( (GetWindowLongPtr(hwnd, GWLP_USERDATA) ))
case message
of WM_NULL:
echo "WM_NULL"
of WM_CREATE:
echo "created window!"
echo repr lParam
SetWindowLongPtr( hwnd, GWLP_USERDATA, cast[LONG_PTR]( lParam) )
SetWindowPos(hwnd, hwnd, 0, 0, 0, 0, SWP_NOSIZE)
of WM_DESTROY:
PostQuitMessage(0)
return 0
of WM_MOVE:
echo "WM_MOVE"
of WM_SIZE:
echo "WM_SIZE"
of WM_ACTIVATE:
echo "WM_ACTIVATE"
of WM_SETFOCUS:
echo "WM_SET_FOCUS"
of WM_ENABLE:
echo "WM_ENABLE"
of WM_SETREDRAW:
echo "WM_SET_REDRAW"
of WM_SETTEXT:
echo "WM_SET_TEXT"
of WM_GETTEXT:
echo "WM_GET_TEXT"
of WM_GET_TEXTLENGTH:
echo "WM_WM_GET_TEXT_LENGTH"
of WM_PAINT:
var
ps: PAINTSTRUCT
hdc = BeginPaint(hwnd, ps)
defer: EndPaint(hwnd, ps)
var rect: RECT
GetClientRect(hwnd, rect)
#DrawText(hdc, "Hello, Windows!", -1, rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER)
return 0
of WM_CLOSE:
var new_portal = a_portal
assert a_portal != nil
discard DestroyWindow(hwnd)
assert a_portal != nil
assert a_portal[].relays != nil
echo repr new_portal.relays
# a_portal.relays.window_closed_relay(a_portal)
of WM_CHAR: discard
of WM_KEYUP , WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSKEYUP:
var
virtual_key_code: WORD = LOWORD(wParam)
key_flags: WORD = HIWORD(lParam)
scan_code: WORD = LOBYTE(keyFlags)
is_extended_key: bool = (keyFlags and KF_EXTENDED) == KF_EXTENDED # true if scancode has 0xE0 prefix
wasKeyDown: bool = (keyFlags and KF_REPEAT) == KF_REPEAT # previous key-state flag, 1 on autorepeat
repeatCount: uint16 = LOWORD(lParam) # repeat count, > 0 if several keydown messages was combined into one message
isKeyReleased: bool = (keyFlags and KF_UP) == KF_UP # transition-state flag, 1 on keyup
if is_extended_key:
scan_code = MAKEWORD(scanCode, 0xE0)
# if we want to distinguish these keys:
case virtual_key_code
# converts to VK_LSHIFT or VK_RSHIFT
# converts to VK_LCONTROL or VK_RCONTROL
# converts to VK_LMENU or VK_RMENU
of VK_SHIFT, VK_CONTROL, VK_MENU:
virtual_key_code = LOWORD( MapVirtualKey( UINT(scan_code)
, UINT(MAPVK_VSC_TO_VK_EX))
)
else: discard
echo virtual_key_code, " <> ", scan_code
of WM_INPUTLANGCHANGE:
# determine the thread that'll receive this event
var
window = GetForegroundWindow()
thread = GetWindowThreadProcessId( window
, nil
)
# get keyboard layout for the thread
hkl: HKL = GetKeyboardLayout(thread)
the_actual_layout_name: LPWSTR = ""
layout_name_bool = GetKeyboardLayoutName(the_actual_layout_name)
LoadKeyboardLayout( $the_actual_layout_name
, KLF_ACTIVATE
)
ActivateKeyboardLayout( hkl
, KLF_ACTIVATE
)
echo "now using: ", $the_actual_layout_name
#[ of WM_QUERYENDSESSION: echo " WM_QUERYENDSESSION"
of WM_QUIT: echo " WM_QUIT"
of WM_QUERYOPEN: echo " WM_QUERYOPEN"
#of WM_ERASEBKGND: echo " WM_ERASEBKGND"
of WM_SYSCOLORCHANGE: echo " WM_SYSCOLORCHANGE"
of WM_ENDSESSION: echo " WM_ENDSESSION"
of WM_SHOWWINDOW: echo " WM_SHOWWINDOW"
#of WM_CTLCOLOR: echo " WM_CTLCOLOR"
of WM_WININICHANGE: echo " WM_WININICHANGE"
of WM_DEVMODECHANGE: echo " WM_DEVMODECHANGE"
of WM_ACTIVATEAPP: echo " WM_ACTIVATEAPP"
of WM_FONTCHANGE: echo " WM_FONTCHANGE"
of WM_TIMECHANGE: echo " WM_TIMECHANGE"
of WM_CANCELMODE: echo " WM_CANCELMODE"
#of WM_SETCURSOR: echo " WM_SETCURSOR"
of WM_MOUSEACTIVATE: echo " WM_MOUSEACTIVATE"
of WM_CHILDACTIVATE: echo " WM_CHILDACTIVATE"
of WM_QUEUESYNC: echo " WM_QUEUESYNC"
#of WM_GETMINMAXINFO: echo " WM_GETMINMAXINFO"
of WM_PAINTICON: echo " WM_PAINTICON"
of WM_ICONERASEBKGND: echo " WM_ICONERASEBKGND"
of WM_NEXTDLGCTL: echo " WM_NEXTDLGCTL"
of WM_SPOOLERSTATUS: echo " WM_SPOOLERSTATUS"
of WM_DRAWITEM: echo " WM_DRAWITEM"
of WM_MEASUREITEM: echo " WM_MEASUREITEM"
of WM_DELETEITEM: echo " WM_DELETEITEM"
of WM_VKEYTOITEM: echo " WM_VKEYTOITEM"
of WM_CHARTOITEM: echo " WM_CHARTOITEM"
of WM_SETFONT: echo " WM_SETFONT"
of WM_GETFONT: echo " WM_GETFONT"
of WM_SETHOTKEY: echo " WM_SETHOTKEY"
of WM_GETHOTKEY: echo " WM_GETHOTKEY"
of WM_QUERYDRAGICON: echo " WM_QUERYDRAGICON"
of WM_COMPAREITEM: echo " WM_COMPAREITEM"
of WM_GETOBJECT: echo " WM_GETOBJECT"
of WM_COMPACTING: echo " WM_COMPACTING"
of WM_COMMNOTIFY: echo " WM_COMMNOTIFY"
of WM_WINDOWPOSCHANGING: echo " WM_WINDOWPOSCHANGING"
of WM_WINDOWPOSCHANGED: echo " WM_WINDOWPOSCHANGED"
of WM_POWER: echo " WM_POWER"
#of WM_COPYGLOBALDATA: echo " WM_COPYGLOBALDATA"
of WM_COPYDATA: echo " WM_COPYDATA"
of WM_CANCELJOURNAL: echo " WM_CANCELJOURNAL"
of WM_NOTIFY: echo " WM_NOTIFY"
of WM_INPUTLANGCHANGEREQUEST: echo " WM_INPUTLANGCHANGEREQUEST"
of WM_TCARD: echo " WM_TCARD"
of WM_HELP: echo " WM_HELP"
of WM_USERCHANGED: echo " WM_USERCHANGED"
of WM_NOTIFYFORMAT: echo " WM_NOTIFYFORMAT"
of WM_CONTEXTMENU: echo " WM_CONTEXTMENU"
of WM_STYLECHANGING: echo " WM_STYLECHANGING"
of WM_STYLECHANGED: echo " WM_STYLECHANGED"
of WM_DISPLAYCHANGE: echo " WM_DISPLAYCHANGE"
#of WM_GETICON: echo " WM_GETICON"
#of WM_SETICON: echo " WM_SETICON"
#of WM_NCCREATE: echo " WM_NCCREATE"
#of WM_NCDESTROY: echo " WM_NCDESTROY"
of WM_NCCALCSIZE: echo " WM_NCCALCSIZE"
#of WM_NCHITTEST: echo " WM_NCHITTEST"
of WM_NCPAINT: echo " WM_NCPAINT"
of WM_NCACTIVATE: echo " WM_NCACTIVATE"
of WM_GETDLGCODE: echo " WM_GETDLGCODE"
of WM_SYNCPAINT: echo " WM_SYNCPAINT"
of WM_NCMOUSEMOVE: echo " WM_NCMOUSEMOVE"
of WM_NCLBUTTONDOWN: echo " WM_NCLBUTTONDOWN"
of WM_NCLBUTTONUP: echo " WM_NCLBUTTONUP"
of WM_NCLBUTTONDBLCLK: echo " WM_NCLBUTTONDBLCLK"
of WM_NCRBUTTONDOWN: echo " WM_NCRBUTTONDOWN"
of WM_NCRBUTTONUP: echo " WM_NCRBUTTONUP"
of WM_NCRBUTTONDBLCLK: echo " WM_NCRBUTTONDBLCLK"
of WM_NCMBUTTONDOWN: echo " WM_NCMBUTTONDOWN"
of WM_NCMBUTTONUP: echo " WM_NCMBUTTONUP"
of WM_NCMBUTTONDBLCLK: echo " WM_NCMBUTTONDBLCLK"
of WM_NCXBUTTONDOWN: echo " WM_NCXBUTTONDOWN"
of WM_NCXBUTTONUP: echo " WM_NCXBUTTONUP"
of WM_NCXBUTTONDBLCLK: echo " WM_NCXBUTTONDBLCLK"
of EM_GETSEL: echo " EM_GETSEL"
of EM_SETSEL: echo " EM_SETSEL"
of EM_GETRECT: echo " EM_GETRECT"
of EM_SETRECT: echo " EM_SETRECT"
of EM_SETRECTNP: echo " EM_SETRECTNP"
of EM_SCROLL: echo " EM_SCROLL"
of EM_LINESCROLL: echo " EM_LINESCROLL"
of EM_SCROLLCARET: echo " EM_SCROLLCARET"
of EM_GETMODIFY: echo " EM_GETMODIFY"
of EM_SETMODIFY: echo " EM_SETMODIFY"
of EM_GETLINECOUNT: echo " EM_GETLINECOUNT"
of EM_LINEINDEX: echo " EM_LINEINDEX"
of EM_SETHANDLE: echo " EM_SETHANDLE"
of EM_GETHANDLE: echo " EM_GETHANDLE"
of EM_GETTHUMB: echo " EM_GETTHUMB"
of EM_LINELENGTH: echo " EM_LINELENGTH"
of EM_REPLACESEL: echo " EM_REPLACESEL"
#of EM_SETFONT: echo " EM_SETFONT"
of EM_GETLINE: echo " EM_GETLINE"
of EM_LIMITTEXT: echo " EM_LIMITTEXT"
#of EM_SETLIMITTEXT: echo " EM_SETLIMITTEXT"
of EM_CANUNDO: echo " EM_CANUNDO"
of EM_UNDO: echo " EM_UNDO"
of EM_FMTLINES: echo " EM_FMTLINES"
of EM_LINEFROMCHAR: echo " EM_LINEFROMCHAR"
#of EM_SETWORDBREAK: echo " EM_SETWORDBREAK"
of EM_SETTABSTOPS: echo " EM_SETTABSTOPS"
of EM_SETPASSWORDCHAR: echo " EM_SETPASSWORDCHAR"
of EM_EMPTYUNDOBUFFER: echo " EM_EMPTYUNDOBUFFER"
of EM_GETFIRSTVISIBLELINE: echo " EM_GETFIRSTVISIBLELINE"
of EM_SETREADONLY: echo " EM_SETREADONLY"
of EM_SETWORDBREAKPROC: echo " EM_SETWORDBREAKPROC"
of EM_GETWORDBREAKPROC: echo " EM_GETWORDBREAKPROC"
of EM_GETPASSWORDCHAR: echo " EM_GETPASSWORDCHAR"
of EM_SETMARGINS: echo " EM_SETMARGINS"
of EM_GETMARGINS: echo " EM_GETMARGINS"
of EM_GETLIMITTEXT: echo " EM_GETLIMITTEXT"
of EM_POSFROMCHAR: echo " EM_POSFROMCHAR"
of EM_CHARFROMPOS: echo " EM_CHARFROMPOS"
of EM_SETIMESTATUS: echo " EM_SETIMESTATUS"
of EM_GETIMESTATUS: echo " EM_GETIMESTATUS"
of SBM_SETPOS: echo " SBM_SETPOS"
of SBM_GETPOS: echo " SBM_GETPOS"
of SBM_SETRANGE: echo " SBM_SETRANGE"
of SBM_GETRANGE: echo " SBM_GETRANGE"
of SBM_ENABLE_ARROWS: echo " SBM_ENABLE_ARROWS"
of SBM_SETRANGEREDRAW: echo " SBM_SETRANGEREDRAW"
of SBM_SETSCROLLINFO: echo " SBM_SETSCROLLINFO"
of SBM_GETSCROLLINFO: echo " SBM_GETSCROLLINFO"
of SBM_GETSCROLLBARINFO: echo " SBM_GETSCROLLBARINFO"
of BM_GETCHECK: echo " BM_GETCHECK"
of BM_SETCHECK: echo " BM_SETCHECK"
of BM_GETSTATE: echo " BM_GETSTATE"
of BM_SETSTATE: echo " BM_SETSTATE"
of BM_SETSTYLE: echo " BM_SETSTYLE"
of BM_CLICK: echo " BM_CLICK"
of BM_GETIMAGE: echo " BM_GETIMAGE"
of BM_SETIMAGE: echo " BM_SETIMAGE"
of BM_SETDONTCLICK: echo " BM_SETDONTCLICK"
of WM_INPUT: echo " WM_INPUT"
#of WM_KEYFIRST: echo " WM_KEYFIRST"
of WM_DEADCHAR: echo " WM_DEADCHAR"
of WM_SYSCHAR: echo " WM_SYSCHAR"
of WM_SYSDEADCHAR: echo " WM_SYSDEADCHAR"
of WM_UNICHAR: echo " WM_UNICHAR"
#of WM_WNT_CONVERTREQUESTEX: echo " WM_WNT_CONVERTREQUESTEX"
#of WM_CONVERTREQUEST: echo " WM_CONVERTREQUEST"
#of WM_CONVERTRESULT: echo " WM_CONVERTRESULT"
#of WM_INTERIM: echo " WM_INTERIM"
of WM_IME_STARTCOMPOSITION: echo " WM_IME_STARTCOMPOSITION"
of WM_IME_ENDCOMPOSITION: echo " WM_IME_ENDCOMPOSITION"
of WM_IME_COMPOSITION: echo " WM_IME_COMPOSITION"
of WM_INITDIALOG: echo " WM_INITDIALOG"
of WM_COMMAND: echo " WM_COMMAND"
of WM_SYSCOMMAND: echo " WM_SYSCOMMAND"
of WM_TIMER: echo " WM_TIMER"
of WM_HSCROLL: echo " WM_HSCROLL"
of WM_VSCROLL: echo " WM_VSCROLL"
of WM_INITMENU: echo " WM_INITMENU"
of WM_INITMENUPOPUP: echo " WM_INITMENUPOPUP"
#of WM_SYSTIMER: echo " WM_SYSTIMER"
of WM_MENUSELECT: echo " WM_MENUSELECT"
of WM_MENUCHAR: echo " WM_MENUCHAR"
of WM_ENTERIDLE: echo " WM_ENTERIDLE"
of WM_MENURBUTTONUP: echo " WM_MENURBUTTONUP"
of WM_MENUDRAG: echo " WM_MENUDRAG"
of WM_MENUGETOBJECT: echo " WM_MENUGETOBJECT"
of WM_UNINITMENUPOPUP: echo " WM_UNINITMENUPOPUP"
of WM_MENUCOMMAND: echo " WM_MENUCOMMAND"
of WM_CHANGEUISTATE: echo " WM_CHANGEUISTATE"
of WM_UPDATEUISTATE: echo " WM_UPDATEUISTATE"
of WM_QUERYUISTATE: echo " WM_QUERYUISTATE"
#of WM_LBTRACKPOINT: echo " WM_LBTRACKPOINT"
of WM_CTLCOLORMSGBOX: echo " WM_CTLCOLORMSGBOX"
of WM_CTLCOLOREDIT: echo " WM_CTLCOLOREDIT"
of WM_CTLCOLORLISTBOX: echo " WM_CTLCOLORLISTBOX"
of WM_CTLCOLORBTN: echo " WM_CTLCOLORBTN"
of WM_CTLCOLORDLG: echo " WM_CTLCOLORDLG"
of WM_CTLCOLORSCROLLBAR: echo " WM_CTLCOLORSCROLLBAR"
of WM_CTLCOLORSTATIC: echo " WM_CTLCOLORSTATIC"
of CB_GETEDITSEL: echo " CB_GETEDITSEL"
of CB_LIMITTEXT: echo " CB_LIMITTEXT"
of CB_SETEDITSEL: echo " CB_SETEDITSEL"
of CB_ADDSTRING: echo " CB_ADDSTRING"
of CB_DELETESTRING: echo " CB_DELETESTRING"
of CB_DIR: echo " CB_DIR"
of CB_GETCOUNT: echo " CB_GETCOUNT"
of CB_GETCURSEL: echo " CB_GETCURSEL"
of CB_GETLBTEXT: echo " CB_GETLBTEXT"
of CB_GETLBTEXTLEN: echo " CB_GETLBTEXTLEN"
of CB_INSERTSTRING: echo " CB_INSERTSTRING"
of CB_RESETCONTENT: echo " CB_RESETCONTENT"
of CB_FINDSTRING: echo " CB_FINDSTRING"
of CB_SELECTSTRING: echo " CB_SELECTSTRING"
of CB_SETCURSEL: echo " CB_SETCURSEL"
of CB_SHOWDROPDOWN: echo " CB_SHOWDROPDOWN"
of CB_GETITEMDATA: echo " CB_GETITEMDATA"
of CB_SETITEMDATA: echo " CB_SETITEMDATA"
of CB_GETDROPPEDCONTROLRECT: echo " CB_GETDROPPEDCONTROLRECT"
of CB_SETITEMHEIGHT: echo " CB_SETITEMHEIGHT"
of CB_GETITEMHEIGHT: echo " CB_GETITEMHEIGHT"
of CB_SETEXTENDEDUI: echo " CB_SETEXTENDEDUI"
of CB_GETEXTENDEDUI: echo " CB_GETEXTENDEDUI"
of CB_GETDROPPEDSTATE: echo " CB_GETDROPPEDSTATE"
of CB_FINDSTRINGEXACT: echo " CB_FINDSTRINGEXACT"
of CB_SETLOCALE: echo " CB_SETLOCALE"
of CB_GETLOCALE: echo " CB_GETLOCALE"
of CB_GETTOPINDEX: echo " CB_GETTOPINDEX"
of CB_SETTOPINDEX: echo " CB_SETTOPINDEX"
of CB_GETHORIZONTALEXTENT: echo " CB_GETHORIZONTALEXTENT"
of CB_SETHORIZONTALEXTENT: echo " CB_SETHORIZONTALEXTENT"
of CB_GETDROPPEDWIDTH: echo " CB_GETDROPPEDWIDTH"
of CB_SETDROPPEDWIDTH: echo " CB_SETDROPPEDWIDTH"
of CB_INITSTORAGE: echo " CB_INITSTORAGE"
of CB_MULTIPLEADDSTRING: echo " CB_MULTIPLEADDSTRING"
of CB_GETCOMBOBOXINFO: echo " CB_GETCOMBOBOXINFO"
of CB_MSGMAX: echo " CB_MSGMAX"
#of WM_MOUSEFIRST: echo " WM_MOUSEFIRST"
of WM_LBUTTONDOWN: echo " WM_LBUTTONDOWN"
of WM_LBUTTONUP: echo " WM_LBUTTONUP"
of WM_LBUTTONDBLCLK: echo " WM_LBUTTONDBLCLK"
of WM_RBUTTONDOWN: echo " WM_RBUTTONDOWN"
of WM_RBUTTONUP: echo " WM_RBUTTONUP"
of WM_RBUTTONDBLCLK: echo " WM_RBUTTONDBLCLK"
of WM_MBUTTONDOWN: echo " WM_MBUTTONDOWN"
of WM_MBUTTONUP: echo " WM_MBUTTONUP"
of WM_MBUTTONDBLCLK: echo " WM_MBUTTONDBLCLK"
of WM_MOUSELAST: echo " WM_MOUSELAST"
of WM_MOUSEWHEEL: echo " WM_MOUSEWHEEL"
of WM_XBUTTONDOWN: echo " WM_XBUTTONDOWN"
of WM_XBUTTONUP: echo " WM_XBUTTONUP"
of WM_XBUTTONDBLCLK: echo " WM_XBUTTONDBLCLK"
#of WM_MOUSEHWHEEL: echo " WM_MOUSEHWHEEL"
of WM_PARENTNOTIFY: echo " WM_PARENTNOTIFY"
of WM_ENTERMENULOOP: echo " WM_ENTERMENULOOP"
of WM_EXITMENULOOP: echo " WM_EXITMENULOOP"
of WM_NEXTMENU: echo " WM_NEXTMENU"
of WM_SIZING: echo " WM_SIZING"
of WM_CAPTURECHANGED: echo " WM_CAPTURECHANGED"
of WM_MOVING: echo " WM_MOVING"
of WM_POWERBROADCAST: echo " WM_POWERBROADCAST"
of WM_DEVICECHANGE: echo " WM_DEVICECHANGE"
of WM_MDICREATE: echo " WM_MDICREATE"
of WM_MDIDESTROY: echo " WM_MDIDESTROY"
of WM_MDIACTIVATE: echo " WM_MDIACTIVATE"
of WM_MDIRESTORE: echo " WM_MDIRESTORE"
of WM_MDINEXT: echo " WM_MDINEXT"
of WM_MDIMAXIMIZE: echo " WM_MDIMAXIMIZE"
of WM_MDITILE: echo " WM_MDITILE"
of WM_MDICASCADE: echo " WM_MDICASCADE"
of WM_MDIICONARRANGE: echo " WM_MDIICONARRANGE"
of WM_MDIGETACTIVE: echo " WM_MDIGETACTIVE"
of WM_MDISETMENU: echo " WM_MDISETMENU"
of WM_ENTERSIZEMOVE: echo " WM_ENTERSIZEMOVE"
of WM_EXITSIZEMOVE: echo " WM_EXITSIZEMOVE"
of WM_DROPFILES: echo " WM_DROPFILES"
of WM_MDIREFRESHMENU: echo " WM_MDIREFRESHMENU"
#of WM_IME_REPORT: echo " WM_IME_REPORT"
of WM_IME_SETCONTEXT: echo " WM_IME_SETCONTEXT"
of WM_IME_NOTIFY: echo " WM_IME_NOTIFY"
of WM_IME_CONTROL: echo " WM_IME_CONTROL"
of WM_IME_COMPOSITIONFULL: echo " WM_IME_COMPOSITIONFULL"
of WM_IME_SELECT: echo " WM_IME_SELECT"
of WM_IME_CHAR: echo " WM_IME_CHAR"
of WM_IME_REQUEST: echo " WM_IME_REQUEST"
of WM_IMEKEYDOWN: echo " WM_IMEKEYDOWN"
#of WM_IME_KEYDOWN: echo " WM_IME_KEYDOWN"
of WM_IMEKEYUP: echo " WM_IMEKEYUP"
#of WM_IME_KEYUP: echo " WM_IME_KEYUP"
of WM_NCMOUSEHOVER: echo " WM_NCMOUSEHOVER"
of WM_MOUSEHOVER: echo " WM_MOUSEHOVER"
of WM_NCMOUSELEAVE: echo " WM_NCMOUSELEAVE"
of WM_MOUSELEAVE: echo " WM_MOUSELEAVE"
of WM_CUT: echo " WM_CUT"
of WM_COPY: echo " WM_COPY"
of WM_PASTE: echo " WM_PASTE"
of WM_CLEAR: echo " WM_CLEAR"
of WM_UNDO: echo " WM_UNDO"
of WM_RENDERFORMAT: echo " WM_RENDERFORMAT"
of WM_RENDERALLFORMATS: echo " WM_RENDERALLFORMATS"
of WM_DESTROYCLIPBOARD: echo " WM_DESTROYCLIPBOARD"
of WM_DRAWCLIPBOARD: echo " WM_DRAWCLIPBOARD"
of WM_PAINTCLIPBOARD: echo " WM_PAINTCLIPBOARD"
of WM_VSCROLLCLIPBOARD: echo " WM_VSCROLLCLIPBOARD"
of WM_SIZECLIPBOARD: echo " WM_SIZECLIPBOARD"
of WM_ASKCBFORMATNAME: echo " WM_ASKCBFORMATNAME"
of WM_CHANGECBCHAIN: echo " WM_CHANGECBCHAIN"
of WM_HSCROLLCLIPBOARD: echo " WM_HSCROLLCLIPBOARD"
of WM_QUERYNEWPALETTE: echo " WM_QUERYNEWPALETTE"
of WM_PALETTEISCHANGING: echo " WM_PALETTEISCHANGING"
of WM_PALETTECHANGED: echo " WM_PALETTECHANGED"
of WM_HOTKEY: echo " WM_HOTKEY"
of WM_PRINT: echo " WM_PRINT"
of WM_PRINTCLIENT: echo " WM_PRINTCLIENT"
of WM_APPCOMMAND: echo " WM_APPCOMMAND"
of WM_HANDHELDFIRST: echo " WM_HANDHELDFIRST"
of WM_HANDHELDLAST: echo " WM_HANDHELDLAST"
of WM_AFXFIRST: echo " WM_AFXFIRST"
of WM_AFXLAST: echo " WM_AFXLAST"
of WM_PENWINFIRST: echo " WM_PENWINFIRST"
of DM_GETDEFID: echo " DM_GETDEFID"
of DM_SETDEFID: echo " DM_SETDEFID"
of DM_REPOSITION: echo " DM_REPOSITION"
]#
else:
return DefWindowProc( hwnd
, message
, wParam
, lParam
)
#***********************************************************
#Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
#and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
#
# All Rights Reserved
#
#Permission to use, copy, modify, and distribute this software and its
#documentation for any purpose and without fee is hereby granted,
#provided that the above copyright notice appear in all copies and that
#both that copyright notice and this permission notice appear in
#supporting documentation, and that the names of Digital or MIT not be
#used in advertising or publicity pertaining to distribution of the
#software without specific, written prior permission.
#
#DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
#DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
#SOFTWARE.
#
#******************************************************************
# $XFree86: xc/include/extensions/Xvlib.h,v 1.3 1999/12/11 19:28:48 mvojkovi Exp $
#*
#** File:
#**
#** Xvlib.h --- Xv library public header file
#**
#** Author:
#**
#** David Carver (Digital Workstation Engineering/Project Athena)
#**
#** Revisions:
#**
#** 26.06.91 Carver
#** - changed XvFreeAdaptors to XvFreeAdaptorInfo
#** - changed XvFreeEncodings to XvFreeEncodingInfo
#**
#** 11.06.91 Carver
#** - changed SetPortControl to SetPortAttribute
#** - changed GetPortControl to GetPortAttribute
#** - changed QueryBestSize
#**
#** 05.15.91 Carver
#** - version 2.0 upgrade
#**
#** 01.24.91 Carver
#** - version 1.4 upgrade
#**
#*
import
x, xlib, xshm, xv
const
libXv* = "libXv.so"
type
PXvRational* = ptr XvRational
XvRational*{.final.} = object
numerator*: cint
denominator*: cint
PXvAttribute* = ptr XvAttribute
XvAttribute*{.final.} = object
flags*: cint # XvGettable, XvSettable
min_value*: cint
max_value*: cint
name*: cstring
PPXvEncodingInfo* = ptr PXvEncodingInfo
PXvEncodingInfo* = ptr XvEncodingInfo
XvEncodingInfo*{.final.} = object
encoding_id*: XvEncodingID
name*: cstring
width*: culong
height*: culong
rate*: XvRational
num_encodings*: culong
PXvFormat* = ptr XvFormat
XvFormat*{.final.} = object
depth*: cchar
visual_id*: culong
PPXvAdaptorInfo* = ptr PXvAdaptorInfo
PXvAdaptorInfo* = ptr XvAdaptorInfo
XvAdaptorInfo*{.final.} = object
base_id*: XvPortID
num_ports*: culong
thetype*: cchar
name*: cstring
num_formats*: culong
formats*: PXvFormat
num_adaptors*: culong
PXvVideoNotifyEvent* = ptr XvVideoNotifyEvent
XvVideoNotifyEvent*{.final.} = object
theType*: cint
serial*: culong # # of last request processed by server
send_event*: XBool # true if this came from a SendEvent request
display*: PDisplay # Display the event was read from
drawable*: Drawable # drawable
reason*: culong # what generated this event
port_id*: XvPortID # what port
time*: Time # milliseconds
PXvPortNotifyEvent* = ptr XvPortNotifyEvent
XvPortNotifyEvent*{.final.} = object
theType*: cint
serial*: culong # # of last request processed by server
send_event*: XBool # true if this came from a SendEvent request
display*: PDisplay # Display the event was read from
port_id*: XvPortID # what port
time*: Time # milliseconds
attribute*: Atom # atom that identifies attribute
value*: clong # value of attribute
PXvEvent* = ptr XvEvent
XvEvent*{.final.} = object
pad*: array[0..23, clong] # case longint of
# 0 : (
# theType : cint;
# );
# 1 : (
# xvvideo : XvVideoNotifyEvent;
# );
# 2 : (
# xvport : XvPortNotifyEvent;
# );
# 3 : (
#
# );
PXvImageFormatValues* = ptr XvImageFormatValues
XvImageFormatValues*{.final.} = object
id*: cint # Unique descriptor for the format
theType*: cint # XvRGB, XvYUV
byte_order*: cint # LSBFirst, MSBFirst
guid*: array[0..15, cchar] # Globally Unique IDentifier
bits_per_pixel*: cint
format*: cint # XvPacked, XvPlanar
num_planes*: cint # for RGB formats only
depth*: cint
red_mask*: cuint
green_mask*: cuint
blue_mask*: cuint # for YUV formats only
y_sample_bits*: cuint
u_sample_bits*: cuint
v_sample_bits*: cuint
horz_y_period*: cuint
horz_u_period*: cuint
horz_v_period*: cuint
vert_y_period*: cuint
vert_u_period*: cuint
vert_v_period*: cuint
component_order*: array[0..31, char] # eg. UYVY
scanline_order*: cint # XvTopToBottom, XvBottomToTop
PXvImage* = ptr XvImage
XvImage*{.final.} = object
id*: cint
width*, height*: cint
data_size*: cint # bytes
num_planes*: cint
pitches*: cint # bytes
offsets*: cint # bytes
data*: pointer
obdata*: XPointer
{.deprecated: [TXvRational: XvRational].}
{.deprecated: [TXvAttribute: XvAttribute].}
{.deprecated: [TXvEncodingInfo: XvEncodingInfo].}
{.deprecated: [TXvFormat: XvFormat].}
{.deprecated: [TXvAdaptorInfo: XvAdaptorInfo].}
{.deprecated: [TXvVideoNotifyEvent: XvVideoNotifyEvent].}
{.deprecated: [TXvPortNotifyEvent: XvPortNotifyEvent].}
{.deprecated: [TXvEvent: XvEvent].}
{.deprecated: [TXvImageFormatValues: XvImageFormatValues].}
{.deprecated: [TXvImage: XvImage].}
proc XvQueryExtension*(display: PDisplay, p_version, p_revision, p_requestBase,
p_eventBase, p_errorBase: cuint): cint{.cdecl, dynlib: libXv, importc.}
proc XvQueryAdaptors*(display: PDisplay, window: Window, p_nAdaptors: cuint,
p_pAdaptors: PPXvAdaptorInfo): cint{.cdecl, dynlib: libXv,
importc.}
proc XvQueryEncodings*(display: PDisplay, port: XvPortID, p_nEncoding: cuint,
p_pEncoding: PPXvEncodingInfo): cint{.cdecl,
dynlib: libXv, importc.}
proc XvPutVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
cdecl, dynlib: libXv, importc.}
proc XvPutStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
cdecl, dynlib: libXv, importc.}
proc XvGetVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
cdecl, dynlib: libXv, importc.}
proc XvGetStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC,
vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
cdecl, dynlib: libXv, importc.}
proc XvStopVideo*(display: PDisplay, port: XvPortID, drawable: Drawable): cint{.
cdecl, dynlib: libXv, importc.}
proc XvGrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{.cdecl,
dynlib: libXv, importc.}
proc XvUngrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{.
cdecl, dynlib: libXv, importc.}
proc XvSelectVideoNotify*(display: PDisplay, drawable: Drawable, onoff: XBool): cint{.
cdecl, dynlib: libXv, importc.}
proc XvSelectPortNotify*(display: PDisplay, port: XvPortID, onoff: XBool): cint{.
cdecl, dynlib: libXv, importc.}
proc XvSetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom,
value: cint): cint{.cdecl, dynlib: libXv, importc.}
proc XvGetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom,
p_value: cint): cint{.cdecl, dynlib: libXv, importc.}
proc XvQueryBestSize*(display: PDisplay, port: XvPortID, motion: XBool,
vid_w, vid_h, drw_w, drw_h: cuint,
p_actual_width, p_actual_height: cuint): cint{.cdecl,
dynlib: libXv, importc.}
proc XvQueryPortAttributes*(display: PDisplay, port: XvPortID, number: cint): PXvAttribute{.
cdecl, dynlib: libXv, importc.}
proc XvFreeAdaptorInfo*(adaptors: PXvAdaptorInfo){.cdecl, dynlib: libXv, importc.}
proc XvFreeEncodingInfo*(encodings: PXvEncodingInfo){.cdecl, dynlib: libXv,
importc.}
proc XvListImageFormats*(display: PDisplay, port_id: XvPortID,
count_return: cint): PXvImageFormatValues{.cdecl,
dynlib: libXv, importc.}
proc XvCreateImage*(display: PDisplay, port: XvPortID, id: cint, data: pointer,
width, height: cint): PXvImage{.cdecl, dynlib: libXv,
importc.}
proc XvPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC,
image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint,
dest_x, dest_y: cint, dest_w, dest_h: cuint): cint{.cdecl,
dynlib: libXv, importc.}
proc XvShmPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC,
image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint,
dest_x, dest_y: cint, dest_w, dest_h: cuint,
send_event: XBool): cint{.cdecl, dynlib: libXv, importc.}
proc XvShmCreateImage*(display: PDisplay, port: XvPortID, id: cint,
data: pointer, width, height: cint,
shminfo: PXShmSegmentInfo): PXvImage{.cdecl,
dynlib: libXv, importc.}
# implementation
#***********************************************************
#Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
#and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
#
# All Rights Reserved
#
#Permission to use, copy, modify, and distribute this software and its
#documentation for any purpose and without fee is hereby granted,
#provided that the above copyright notice appear in all copies and that
#both that copyright notice and this permission notice appear in
#supporting documentation, and that the names of Digital or MIT not be
#used in advertising or publicity pertaining to distribution of the
#software without specific, written prior permission.
#
#DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
#DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
#SOFTWARE.
#
#******************************************************************
# $XFree86: xc/include/extensions/Xv.h,v 1.3 1999/05/23 06:33:22 dawes Exp $
import
x
const
XvName* = "libXVideo.so"
XvVersion* = 2
XvRevision* = 2 # Symbols
type
XvPortID* = XID
XvEncodingID* = XID
{.deprecated: [TXvPortID: XvPortID].}
{.deprecated: [TXvEncodingID: XvEncodingID].}
const
XvNone* = 0
XvInput* = 0
XvOutput* = 1
XvInputMask* = 1 shl XvInput
XvOutputMask* = 1 shl XvOutput
XvVideoMask* = 0x00000004
XvStillMask* = 0x00000008
XvImageMask* = 0x00000010 # These two are not client viewable
XvPixmapMask* = 0x00010000
XvWindowMask* = 0x00020000
XvGettable* = 0x00000001
XvSettable* = 0x00000002
XvRGB* = 0
XvYUV* = 1
XvPacked* = 0
XvPlanar* = 1
XvTopToBottom* = 0
XvBottomToTop* = 1 # Events
XvVideoNotify* = 0
XvPortNotify* = 1
XvNumEvents* = 2 # Video Notify Reasons
XvStarted* = 0
XvStopped* = 1
XvBusy* = 2
XvPreempted* = 3
XvHardError* = 4
XvLastReason* = 4
XvNumReasons* = XvLastReason + 1
XvStartedMask* = 1 shl XvStarted
XvStoppedMask* = 1 shl XvStopped
XvBusyMask* = 1 shl XvBusy
XvPreemptedMask* = 1 shl XvPreempted
XvHardErrorMask* = 1 shl XvHardError
XvAnyReasonMask* = (1 shl XvNumReasons) - 1
XvNoReasonMask* = 0 # Errors
XvBadPort* = 0
XvBadEncoding* = 1
XvBadControl* = 2
XvNumErrors* = 3 # Status
XvBadExtension* = 1
XvAlreadyGrabbed* = 2
XvInvalidTime* = 3
XvBadReply* = 4
XvBadAlloc* = 5
# implementation
import
x, xlib, keysym
#const
# libX11* = "libX11.so"
#
# Automatically converted by H2Pas 0.99.15 from xutil.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xutil.h
#
const
NoValue* = 0x00000000
XValue* = 0x00000001
YValue* = 0x00000002
WidthValue* = 0x00000004
HeightValue* = 0x00000008
AllValues* = 0x0000000F
XNegative* = 0x00000010
YNegative* = 0x00000020
type
CPoint*{.final.} = object
x*: cint
y*: cint
PXSizeHints* = ptr XSizeHints
XSizeHints*{.final.} = object
flags*: clong
x*, y*: cint
width*, height*: cint
min_width*, min_height*: cint
max_width*, max_height*: cint
width_inc*, height_inc*: cint
min_aspect*, max_aspect*: CPoint
base_width*, base_height*: cint
win_gravity*: cint
{.deprecated: [TCPoint: CPoint].}
{.deprecated: [TXSizeHints: XSizeHints].}
const
USPosition* = 1 shl 0
USSize* = 1 shl 1
PPosition* = 1 shl 2
PSize* = 1 shl 3
PMinSize* = 1 shl 4
PMaxSize* = 1 shl 5
PResizeInc* = 1 shl 6
PAspect* = 1 shl 7
PBaseSize* = 1 shl 8
PWinGravity* = 1 shl 9
PAllHints* = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or
PAspect
type
PXWMHints* = ptr XWMHints
XWMHints*{.final.} = object
flags*: clong
input*: XBool
initial_state*: cint
icon_pixmap*: Pixmap
icon_window*: Window
icon_x*, icon_y*: cint
icon_mask*: Pixmap
window_group*: XID
{.deprecated: [TXWMHints: XWMHints].}
const
InputHint* = 1 shl 0
StateHint* = 1 shl 1
IconPixmapHint* = 1 shl 2
IconWindowHint* = 1 shl 3
IconPositionHint* = 1 shl 4
IconMaskHint* = 1 shl 5
WindowGroupHint* = 1 shl 6
AllHints* = InputHint or StateHint or IconPixmapHint or IconWindowHint or
IconPositionHint or IconMaskHint or WindowGroupHint
XUrgencyHint* = 1 shl 8
WithdrawnState* = 0
NormalState* = 1
IconicState* = 3
DontCareState* = 0
ZoomState* = 2
InactiveState* = 4
type
PXTextProperty* = ptr XTextProperty
XTextProperty*{.final.} = object
value*: Pcuchar
encoding*: Atom
format*: cint
nitems*: culong
{.deprecated: [TXTextProperty: XTextProperty].}
const
XNoMemory* = - 1
XLocaleNotSupported* = - 2
XConverterNotFound* = - 3
type
PXICCEncodingStyle* = ptr XICCEncodingStyle
XICCEncodingStyle* = enum
XStringStyle, XCompoundTextStyle, XTextStyle, XStdICCTextStyle,
XUTF8StringStyle
PPXIconSize* = ptr PXIconSize
PXIconSize* = ptr XIconSize
XIconSize*{.final.} = object
min_width*, min_height*: cint
max_width*, max_height*: cint
width_inc*, height_inc*: cint
PXClassHint* = ptr XClassHint
XClassHint*{.final.} = object
res_name*: cstring
res_class*: cstring
{.deprecated: [TXICCEncodingStyle: XICCEncodingStyle].}
{.deprecated: [TXIconSize: XIconSize].}
{.deprecated: [TXClassHint: XClassHint].}
type
PXComposeStatus* = ptr XComposeStatus
XComposeStatus*{.final.} = object
compose_ptr*: XPointer
chars_matched*: cint
{.deprecated: [TXComposeStatus: XComposeStatus].}
type
PXRegion* = ptr XRegion
XRegion*{.final.} = object
PRegion* = ptr Region
Region* = PXRegion
{.deprecated: [TXRegion: XRegion].}
{.deprecated: [TRegion: Region].}
const
RectangleOut* = 0
RectangleIn* = 1
RectanglePart* = 2
type
PXVisualInfo* = ptr XVisualInfo
XVisualInfo*{.final.} = object
visual*: PVisual
visualid*: VisualID
screen*: cint
depth*: cint
class*: cint
red_mask*: culong
green_mask*: culong
blue_mask*: culong
colormap_size*: cint
bits_per_rgb*: cint
{.deprecated: [TXVisualInfo: XVisualInfo].}
const
VisualNoMask* = 0x00000000
VisualIDMask* = 0x00000001
VisualScreenMask* = 0x00000002
VisualDepthMask* = 0x00000004
VisualClassMask* = 0x00000008
VisualRedMaskMask* = 0x00000010
VisualGreenMaskMask* = 0x00000020
VisualBlueMaskMask* = 0x00000040
VisualColormapSizeMask* = 0x00000080
VisualBitsPerRGBMask* = 0x00000100
VisualAllMask* = 0x000001FF
type
PPXStandardColormap* = ptr PXStandardColormap
PXStandardColormap* = ptr XStandardColormap
XStandardColormap*{.final.} = object
colormap*: Colormap
red_max*: culong
red_mult*: culong
green_max*: culong
green_mult*: culong
blue_max*: culong
blue_mult*: culong
base_pixel*: culong
visualid*: VisualID
killid*: XID
{.deprecated: [TXStandardColormap: XStandardColormap].}
const
BitmapSuccess* = 0
BitmapOpenFailed* = 1
BitmapFileInvalid* = 2
BitmapNoMemory* = 3
XCSUCCESS* = 0
XCNOMEM* = 1
XCNOENT* = 2
ReleaseByFreeingColormap*: XID = XID(1)
type
PXContext* = ptr XContext
XContext* = cint
{.deprecated: [TXContext: XContext].}
proc XAllocClassHint*(): PXClassHint{.cdecl, dynlib: libX11, importc.}
proc XAllocIconSize*(): PXIconSize{.cdecl, dynlib: libX11, importc.}
proc XAllocSizeHints*(): PXSizeHints{.cdecl, dynlib: libX11, importc.}
proc XAllocStandardColormap*(): PXStandardColormap{.cdecl, dynlib: libX11,
importc.}
proc XAllocWMHints*(): PXWMHints{.cdecl, dynlib: libX11, importc.}
proc XClipBox*(para1: Region, para2: PXRectangle): cint{.cdecl, dynlib: libX11,
importc.}
proc XCreateRegion*(): Region{.cdecl, dynlib: libX11, importc.}
proc XDefaultString*(): cstring{.cdecl, dynlib: libX11, importc.}
proc XDeleteContext*(para1: PDisplay, para2: XID, para3: XContext): cint{.
cdecl, dynlib: libX11, importc.}
proc XDestroyRegion*(para1: Region): cint{.cdecl, dynlib: libX11, importc.}
proc XEmptyRegion*(para1: Region): cint{.cdecl, dynlib: libX11, importc.}
proc XEqualRegion*(para1: Region, para2: Region): cint{.cdecl, dynlib: libX11,
importc.}
proc XFindContext*(para1: PDisplay, para2: XID, para3: XContext,
para4: PXPointer): cint{.cdecl, dynlib: libX11, importc.}
proc XGetClassHint*(para1: PDisplay, para2: Window, para3: PXClassHint): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetIconSizes*(para1: PDisplay, para2: Window, para3: PPXIconSize,
para4: Pcint): Status{.cdecl, dynlib: libX11, importc.}
proc XGetNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetRGBColormaps*(para1: PDisplay, para2: Window,
para3: PPXStandardColormap, para4: Pcint, para5: Atom): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
para4: Atom): Status{.cdecl, dynlib: libX11, importc.}
proc XGetStandardColormap*(para1: PDisplay, para2: Window,
para3: PXStandardColormap, para4: Atom): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetTextProperty*(para1: PDisplay, para2: Window, para3: PXTextProperty,
para4: Atom): Status{.cdecl, dynlib: libX11, importc.}
proc XGetVisualInfo*(para1: PDisplay, para2: clong, para3: PXVisualInfo,
para4: Pcint): PXVisualInfo{.cdecl, dynlib: libX11, importc.}
proc XGetWMClientMachine*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetWMHints*(para1: PDisplay, para2: Window): PXWMHints{.cdecl,
dynlib: libX11, importc.}
proc XGetWMIconName*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetWMName*(para1: PDisplay, para2: Window, para3: PXTextProperty): Status{.
cdecl, dynlib: libX11, importc.}
proc XGetWMNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
para4: ptr int): Status{.cdecl, dynlib: libX11, importc.}
proc XGetWMSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
para4: ptr int, para5: Atom): Status{.cdecl,
dynlib: libX11, importc.}
proc XGetZoomHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): Status{.
cdecl, dynlib: libX11, importc.}
proc XIntersectRegion*(para1: Region, para2: Region, para3: Region): cint{.
cdecl, dynlib: libX11, importc.}
proc XConvertCase*(para1: KeySym, para2: PKeySym, para3: PKeySym){.cdecl,
dynlib: libX11, importc.}
proc XLookupString*(para1: PXKeyEvent, para2: cstring, para3: cint,
para4: PKeySym, para5: PXComposeStatus): cint{.cdecl,
dynlib: libX11, importc.}
proc XMatchVisualInfo*(para1: PDisplay, para2: cint, para3: cint, para4: cint,
para5: PXVisualInfo): Status{.cdecl, dynlib: libX11,
importc.}
proc XOffsetRegion*(para1: Region, para2: cint, para3: cint): cint{.cdecl,
dynlib: libX11, importc.}
proc XPointInRegion*(para1: Region, para2: cint, para3: cint): XBool{.cdecl,
dynlib: libX11, importc.}
proc XPolygonRegion*(para1: PXPoint, para2: cint, para3: cint): Region{.cdecl,
dynlib: libX11, importc.}
proc XRectInRegion*(para1: Region, para2: cint, para3: cint, para4: cuint,
para5: cuint): cint{.cdecl, dynlib: libX11, importc.}
proc XSaveContext*(para1: PDisplay, para2: XID, para3: XContext,
para4: cstring): cint{.cdecl, dynlib: libX11, importc.}
proc XSetClassHint*(para1: PDisplay, para2: Window, para3: PXClassHint): cint{.
cdecl, dynlib: libX11, importc.}
proc XSetIconSizes*(para1: PDisplay, para2: Window, para3: PXIconSize,
para4: cint): cint{.cdecl, dynlib: libX11, importc.}
proc XSetNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): cint{.
cdecl, dynlib: libX11, importc.}
proc XSetRGBColormaps*(para1: PDisplay, para2: Window,
para3: PXStandardColormap, para4: cint, para5: Atom){.
cdecl, dynlib: libX11, importc.}
proc XSetSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
para4: Atom): cint{.cdecl, dynlib: libX11, importc.}
proc XSetStandardProperties*(para1: PDisplay, para2: Window, para3: cstring,
para4: cstring, para5: Pixmap, para6: PPchar,
para7: cint, para8: PXSizeHints): cint{.cdecl,
dynlib: libX11, importc.}
proc XSetTextProperty*(para1: PDisplay, para2: Window, para3: PXTextProperty,
para4: Atom){.cdecl, dynlib: libX11, importc.}
proc XSetWMClientMachine*(para1: PDisplay, para2: Window, para3: PXTextProperty){.
cdecl, dynlib: libX11, importc.}
proc XSetWMHints*(para1: PDisplay, para2: Window, para3: PXWMHints): cint{.
cdecl, dynlib: libX11, importc.}
proc XSetWMIconName*(para1: PDisplay, para2: Window, para3: PXTextProperty){.
cdecl, dynlib: libX11, importc.}
proc XSetWMName*(para1: PDisplay, para2: Window, para3: PXTextProperty){.cdecl,
dynlib: libX11, importc.}
proc XSetWMNormalHints*(para1: PDisplay, para2: Window, para3: PXSizeHints){.
cdecl, dynlib: libX11, importc.}
proc XSetWMProperties*(para1: PDisplay, para2: Window, para3: PXTextProperty,
para4: PXTextProperty, para5: PPchar, para6: cint,
para7: PXSizeHints, para8: PXWMHints, para9: PXClassHint){.
cdecl, dynlib: libX11, importc.}
proc XmbSetWMProperties*(para1: PDisplay, para2: Window, para3: cstring,
para4: cstring, para5: PPchar, para6: cint,
para7: PXSizeHints, para8: PXWMHints,
para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
proc Xutf8SetWMProperties*(para1: PDisplay, para2: Window, para3: cstring,
para4: cstring, para5: PPchar, para6: cint,
para7: PXSizeHints, para8: PXWMHints,
para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
proc XSetWMSizeHints*(para1: PDisplay, para2: Window, para3: PXSizeHints,
para4: Atom){.cdecl, dynlib: libX11, importc.}
proc XSetRegion*(para1: PDisplay, para2: GC, para3: Region): cint{.cdecl,
dynlib: libX11, importc.}
proc XSetStandardColormap*(para1: PDisplay, para2: Window,
para3: PXStandardColormap, para4: Atom){.cdecl,
dynlib: libX11, importc.}
proc XSetZoomHints*(para1: PDisplay, para2: Window, para3: PXSizeHints): cint{.
cdecl, dynlib: libX11, importc.}
proc XShrinkRegion*(para1: Region, para2: cint, para3: cint): cint{.cdecl,
dynlib: libX11, importc.}
proc XStringListToTextProperty*(para1: PPchar, para2: cint,
para3: PXTextProperty): Status{.cdecl,
dynlib: libX11, importc.}
proc XSubtractRegion*(para1: Region, para2: Region, para3: Region): cint{.
cdecl, dynlib: libX11, importc.}
proc XmbTextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint,
para4: XICCEncodingStyle, para5: PXTextProperty): cint{.
cdecl, dynlib: libX11, importc.}
proc XwcTextListToTextProperty*(para1: PDisplay, para2: ptr ptr int16, para3: cint,
para4: XICCEncodingStyle, para5: PXTextProperty): cint{.
cdecl, dynlib: libX11, importc.}
proc Xutf8TextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint,
para4: XICCEncodingStyle,
para5: PXTextProperty): cint{.cdecl,
dynlib: libX11, importc.}
proc XwcFreeStringList*(para1: ptr ptr int16){.cdecl, dynlib: libX11, importc.}
proc XTextPropertyToStringList*(para1: PXTextProperty, para2: PPPchar,
para3: Pcint): Status{.cdecl, dynlib: libX11,
importc.}
proc XmbTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
para3: PPPchar, para4: Pcint): cint{.cdecl,
dynlib: libX11, importc.}
proc XwcTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
para3: ptr ptr ptr int16, para4: Pcint): cint{.cdecl,
dynlib: libX11, importc.}
proc Xutf8TextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty,
para3: PPPchar, para4: Pcint): cint{.cdecl,
dynlib: libX11, importc.}
proc XUnionRectWithRegion*(para1: PXRectangle, para2: Region, para3: Region): cint{.
cdecl, dynlib: libX11, importc.}
proc XUnionRegion*(para1: Region, para2: Region, para3: Region): cint{.cdecl,
dynlib: libX11, importc.}
proc XWMGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring,
para5: cuint, para6: PXSizeHints, para7: Pcint, para8: Pcint,
para9: Pcint, para10: Pcint, para11: Pcint): cint{.cdecl,
dynlib: libX11, importc.}
proc XXorRegion*(para1: Region, para2: Region, para3: Region): cint{.cdecl,
dynlib: libX11, importc.}
#when defined(MACROS):
proc XDestroyImage*(ximage: PXImage): cint
proc XGetPixel*(ximage: PXImage, x, y: cint): culong
proc XPutPixel*(ximage: PXImage, x, y: cint, pixel: culong): cint
proc XSubImage*(ximage: PXImage, x, y: cint, width, height: cuint): PXImage
proc XAddPixel*(ximage: PXImage, value: clong): cint
proc IsKeypadKey*(keysym: KeySym): bool
proc IsPrivateKeypadKey*(keysym: KeySym): bool
proc IsCursorKey*(keysym: KeySym): bool
proc IsPFKey*(keysym: KeySym): bool
proc IsFunctionKey*(keysym: KeySym): bool
proc IsMiscFunctionKey*(keysym: KeySym): bool
proc IsModifierKey*(keysym: KeySym): bool
#function XUniqueContext : XContext;
#function XStringToContext(_string : Pchar) : XContext;
# implementation
#when defined(MACROS):
proc XDestroyImage(ximage: PXImage): cint =
ximage.f.destroy_image(ximage)
proc XGetPixel(ximage: PXImage, x, y: cint): culong =
ximage.f.get_pixel(ximage, x, y)
proc XPutPixel(ximage: PXImage, x, y: cint, pixel: culong): cint =
ximage.f.put_pixel(ximage, x, y, pixel)
proc XSubImage(ximage: PXImage, x, y: cint, width, height: cuint): PXImage =
ximage.f.sub_image(ximage, x, y, width, height)
proc XAddPixel(ximage: PXImage, value: clong): cint =
ximage.f.add_pixel(ximage, value)
proc IsKeypadKey(keysym: KeySym): bool =
(keysym >= XK_KP_Space) and (keysym <= XK_KP_Equal)
proc IsPrivateKeypadKey(keysym: KeySym): bool =
(keysym >= 0x11000000.KeySym) and (keysym <= 0x1100FFFF.KeySym)
proc IsCursorKey(keysym: KeySym): bool =
(keysym >= XK_Home) and (keysym < XK_Select)
proc IsPFKey(keysym: KeySym): bool =
(keysym >= XK_KP_F1) and (keysym <= XK_KP_F4)
proc IsFunctionKey(keysym: KeySym): bool =
(keysym >= XK_F1) and (keysym <= XK_F35)
proc IsMiscFunctionKey(keysym: KeySym): bool =
(keysym >= XK_Select) and (keysym <= XK_Break)
proc IsModifierKey(keysym: KeySym): bool =
((keysym >= XK_Shift_L) and (keysym <= XK_Hyper_R)) or
(keysym == XK_Mode_switch) or (keysym == XK_Num_Lock)
import x, xlib, xinput
const
libXtst = "libXtst.so(.6|)"
recordName* = "RECORD"
recordMajorVersion* = 1
recordMinorVersion* = 13
recordLowestMajorVersion* = 1
recordLowestMinorVersion* = 12
xRecordBadContext* = 0
recordNumErrors* = xRecordBadContext + 1
recordNumEvents* = 0
xRecordFromServerTime* = 0x01
xRecordFromClientTime* = 0x02
xRecordFromClientSequence* = 0x04
xRecordCurrentClients* = 1
xRecordFutureClients* = 2
xRecordAllClients* = 3
XRecordFromServer* = 0
XRecordFromClient* = 1
XRecordClientStarted* = 2
XRecordClientDied* = 3
XRecordStartOfData* = 4
XRecordEndOfData* = 5
type
PXRecordClientSpec* = ptr XRecordClientSpec
XRecordClientSpec* = culong
PXRecordContext* = ptr XRecordContext
XRecordContext* = culong
PXRecordRange8* = ptr XRecordRange8
XRecordRange8* {.final.} = object
first*: char
last*: char
PXRecordRange16* = ptr XRecordRange16
XRecordRange16* {.final.} = object
first*: cushort
last*: cushort
PXRecordExtRange* = ptr XRecordExtRange
XRecordExtRange* {.final.} = object
ext_major*: XRecordRange8
ext_minor*: XRecordRange16
PXRecordRange* = ptr XRecordRange
XRecordRange* {.final.} = object
core_requests*: XRecordRange8 ## core X requests
core_replies*: XRecordRange8 ## core X replies
ext_requests*: XRecordExtRange ## extension requests
ext_replies*: XRecordExtRange ## extension replies
delivered_events*: XRecordRange8 ## delivered core and ext events
device_events*: XRecordRange8 ## all core and ext device events
errors*: XRecordRange8 ## core X and ext errors
client_started*: XBool ## connection setup reply
client_died*: XBool ## notice of client disconnect
PXRecordClientInfo* = ptr XRecordClientInfo
XRecordClientInfo* {.final.} = object
client*: XRecordClientSpec
nranges*: culong
ranges*: ptr UncheckedArray[XRecordRange]
PXRecordState* = ptr XRecordState
XRecordState* {.final.} = object
enabled*: XBool
datum_flags*: cint
nclients*: culong
client_info*: ptr UncheckedArray[XRecordClientInfo]
PXRecordInterceptData* = ptr XRecordInterceptData
XRecordInterceptData* {.final.} = object
id_base*: XID
server_time*: Time
client_seq*: culong
category*: cint
client_swapped*: XBool
data*: cstring
data_len*: culong ## in 4-byte units
XRecordInterceptProc* = proc (a1: XPointer, a2: PXRecordInterceptData)
{.deprecated: [TXRecordClientSpec: XRecordClientSpec].}
{.deprecated: [TXRecordContext: XRecordContext].}
{.deprecated: [TXRecordRange8: XRecordRange8].}
{.deprecated: [TXRecordRange16: XRecordRange16].}
{.deprecated: [TXRecordExtRange: XRecordExtRange].}
{.deprecated: [TXRecordRange: XRecordRange].}
{.deprecated: [TXRecordClientInfo: XRecordClientInfo].}
{.deprecated: [TXRecordState: XRecordState].}
{.deprecated: [TXRecordInterceptData: XRecordInterceptData].}
{.deprecated: [TXRecordInterceptProc: XRecordInterceptProc].}
{.push cdecl, importc, dynlib: libXtst.}
proc XRecordIdBaseMask*(dpy: PDisplay): XID
proc XRecordQueryVersion*(a1: PDisplay, a2, a3: ptr cint): Status
proc XRecordCreateContext*(a1: PDisplay,
a2: cint, a3: PXRecordClientSpec,
a4: cint, a5: ptr UncheckedArray[XRecordRange],
a6: cint): XRecordContext
proc XRecordAllocRange*: PXRecordRange
proc XRecordRegisterClients*(a1: PDisplay,
a2: XRecordContext,
a3: cint, a4: PXRecordClientSpec,
a5: cint, a6: ptr UncheckedArray[XRecordRange],
a7: cint): Status
proc XRecordUnregisterClients*(a1: PDisplay,
a2: XRecordContext,
a3: PXRecordClientSpec,
a4: cint): Status
proc XRecordGetContext*(a1: PDisplay,
a2: XRecordContext,
a3: ptr UncheckedArray[XRecordState]): Status
proc XRecordFreeState*(a1: PXRecordState)
proc XRecordEnableContext*(a1: PDisplay,
a2: XRecordContext,
a3: XRecordInterceptProc,
a4: XPointer): Status
proc XRecordEnableContextAsync*(a1: PDisplay, a2: XRecordContext,
a3: XRecordInterceptProc,
a4: XPointer): Status
proc XRecordProcessReplies*(a1: PDisplay)
proc XRecordFreeData*(a1: PXRecordInterceptData)
proc XRecordDisableContext*(a1: PDisplay, a2: XRecordContext): Status
proc XRecordFreeContext*(a1: PDisplay, a2: XRecordContext): Status
proc XTestQueryExtension*(a1: PDisplay, a2, a3, a4, a5: ptr cint): XBool
proc XTestCompareCursorWithWindow*(a1: PDisplay, a2: Window, a3: Cursor): XBool
proc XTestCompareCurrentCursorWithWindow*(a1: PDisplay, a2: Window): XBool
proc XTestFakeKeyEvent*(a1: PDisplay, a2: cuint, a3: XBool, a4: culong): cint
proc XTestFakeButtonEvent*(a1: PDisplay, a2: cuint, a3: XBool, a4: culong): cint
proc XTestFakeMotionEvent*(a1: PDisplay, a2, a3, a4: cint, a5: culong): cint
proc XTestFakeRelativeMotionEvent*(a1: PDisplay, a2, a3: cint, a4: culong): cint
proc XTestFakeDeviceKeyEvent*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool,
a5: ptr cint, a6: cint, a7: culong): cint
proc XTestFakeDeviceButtonEvent*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: XBool,
a5: ptr cint, a6: cint, a7: culong): cint
proc XTestFakeProximityEvent*(a1: PDisplay, a2: PXDevice, a3: XBool, a4: ptr cint,
a5: cint, a6: culong): cint
proc XTestFakeDeviceMotionEvent*(a1: PDisplay, a2: PXDevice, a3: XBool, a4: cint,
a5: ptr cint, a6: cint, a7: culong): cint
proc XTestGrabControl*(a1: PDisplay, a2: XBool): cint
proc XTestSetGContextOfGC*(a1: GC, a2: GContext)
proc XTestSetVisualIDOfVisual*(a1: PVisual, a2: VisualID)
proc XTestDiscard*(a1: PDisplay): Status
{.pop.}
import
x, xlib
const
libXext* = "libXext.so(.6|)"
#
# Automatically converted by H2Pas 0.99.15 from xshm.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xshm.h
#
const
constX_ShmQueryVersion* = 0
constX_ShmAttach* = 1
constX_ShmDetach* = 2
constX_ShmPutImage* = 3
constX_ShmGetImage* = 4
constX_ShmCreatePixmap* = 5
ShmCompletion* = 0
ShmNumberEvents* = ShmCompletion + 1
BadShmSeg* = 0
ShmNumberErrors* = BadShmSeg + 1
type
PShmSeg* = ptr ShmSeg
ShmSeg* = culong
PXShmCompletionEvent* = ptr XShmCompletionEvent
XShmCompletionEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
drawable*: Drawable
major_code*: cint
minor_code*: cint
shmseg*: ShmSeg
offset*: culong
PXShmSegmentInfo* = ptr XShmSegmentInfo
XShmSegmentInfo*{.final.} = object
shmseg*: ShmSeg
shmid*: cint
shmaddr*: cstring
readOnly*: XBool
{.deprecated: [TShmSeg: ShmSeg].}
{.deprecated: [TXShmCompletionEvent: XShmCompletionEvent].}
{.deprecated: [TXShmSegmentInfo: XShmSegmentInfo].}
proc XShmQueryExtension*(para1: PDisplay): XBool{.cdecl, dynlib: libXext, importc.}
proc XShmGetEventBase*(para1: PDisplay): cint{.cdecl, dynlib: libXext, importc.}
proc XShmQueryVersion*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: PBool): XBool{.
cdecl, dynlib: libXext, importc.}
proc XShmPixmapFormat*(para1: PDisplay): cint{.cdecl, dynlib: libXext, importc.}
proc XShmAttach*(para1: PDisplay, para2: PXShmSegmentInfo): Status{.cdecl,
dynlib: libXext, importc.}
proc XShmDetach*(para1: PDisplay, para2: PXShmSegmentInfo): Status{.cdecl,
dynlib: libXext, importc.}
proc XShmPutImage*(para1: PDisplay, para2: Drawable, para3: GC,
para4: PXImage, para5: cint, para6: cint, para7: cint,
para8: cint, para9: cuint, para10: cuint, para11: XBool): Status{.
cdecl, dynlib: libXext, importc.}
proc XShmGetImage*(para1: PDisplay, para2: Drawable, para3: PXImage,
para4: cint, para5: cint, para6: culong): Status{.cdecl,
dynlib: libXext, importc.}
proc XShmCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint,
para4: cint, para5: cstring, para6: PXShmSegmentInfo,
para7: cuint, para8: cuint): PXImage{.cdecl,
dynlib: libXext, importc.}
proc XShmCreatePixmap*(para1: PDisplay, para2: Drawable, para3: cstring,
para4: PXShmSegmentInfo, para5: cuint, para6: cuint,
para7: cuint): Pixmap{.cdecl, dynlib: libXext, importc.}
# implementation
import
x, xlib
#const
# libX11* = "libX11.so"
#
# Automatically converted by H2Pas 0.99.15 from xresource.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xresource.h
#
proc Xpermalloc*(para1: int32): cstring{.cdecl, dynlib: libX11, importc.}
type
PXrmQuark* = ptr XrmQuark
XrmQuark* = int32
XrmQuarkList* = PXrmQuark
PXrmQuarkList* = ptr XrmQuarkList
{.deprecated: [TXrmQuark: XrmQuark].}
{.deprecated: [TXrmQuarkList: XrmQuarkList].}
proc NULLQUARK*(): XrmQuark
type
PXrmString* = ptr XrmString
XrmString* = ptr char
{.deprecated: [TXrmString: XrmString].}
proc NULLSTRING*(): XrmString
proc XrmStringToQuark*(para1: cstring): XrmQuark{.cdecl, dynlib: libX11,
importc.}
proc XrmPermStringToQuark*(para1: cstring): XrmQuark{.cdecl, dynlib: libX11,
importc.}
proc XrmQuarkToString*(para1: XrmQuark): XrmString{.cdecl, dynlib: libX11,
importc.}
proc XrmUniqueQuark*(): XrmQuark{.cdecl, dynlib: libX11, importc.}
#when defined(MACROS):
proc XrmStringsEqual*(a1, a2: cstring): bool
type
PXrmBinding* = ptr XrmBinding
XrmBinding* = enum
XrmBindTightly, XrmBindLoosely
XrmBindingList* = PXrmBinding
PXrmBindingList* = ptr XrmBindingList
{.deprecated: [TXrmBinding: XrmBinding].}
{.deprecated: [TXrmBindingList: XrmBindingList].}
proc XrmStringToQuarkList*(para1: cstring, para2: XrmQuarkList){.cdecl,
dynlib: libX11, importc.}
proc XrmStringToBindingQuarkList*(para1: cstring, para2: XrmBindingList,
para3: XrmQuarkList){.cdecl, dynlib: libX11,
importc.}
type
PXrmName* = ptr XrmName
XrmName* = XrmQuark
PXrmNameList* = ptr XrmNameList
XrmNameList* = XrmQuarkList
{.deprecated: [TXrmName: XrmName].}
{.deprecated: [TXrmNameList: XrmNameList].}
#when defined(MACROS):
proc XrmNameToString*(name: int32): XrmString
proc XrmStringToName*(str: cstring): int32
proc XrmStringToNameList*(str: cstring, name: PXrmQuark)
type
PXrmClass* = ptr XrmClass
XrmClass* = XrmQuark
PXrmClassList* = ptr XrmClassList
XrmClassList* = XrmQuarkList
{.deprecated: [TXrmClass: XrmClass].}
{.deprecated: [TXrmClassList: XrmClassList].}
#when defined(MACROS):
proc XrmClassToString*(c_class: int32): XrmString
proc XrmStringToClass*(c_class: cstring): int32
proc XrmStringToClassList*(str: cstring, c_class: PXrmQuark)
type
PXrmRepresentation* = ptr XrmRepresentation
XrmRepresentation* = XrmQuark
{.deprecated: [TXrmRepresentation: XrmRepresentation].}
#when defined(MACROS):
proc XrmStringToRepresentation*(str: cstring): int32
proc XrmRepresentationToString*(thetype: int32): XrmString
type
PXrmValue* = ptr XrmValue
XrmValue*{.final.} = object
size*: int32
address*: XPointer
PXrmValuePtr* = ptr XrmValuePtr
XrmValuePtr* = PXrmValue
PXrmHashBucketRec* = ptr XrmHashBucketRec
XrmHashBucketRec*{.final.} = object
PXrmHashBucket* = ptr XrmHashBucket
XrmHashBucket* = PXrmHashBucketRec
PXrmHashTable* = ptr XrmHashTable
XrmHashTable* = ptr XrmHashBucket
PXrmDatabase* = ptr XrmDatabase
XrmDatabase* = PXrmHashBucketRec
{.deprecated: [TXrmValue: XrmValue].}
{.deprecated: [TXrmValuePtr: XrmValuePtr].}
{.deprecated: [TXrmHashBucketRec: XrmHashBucketRec].}
{.deprecated: [TXrmHashBucket: XrmHashBucket].}
{.deprecated: [TXrmHashTable: XrmHashTable].}
{.deprecated: [TXrmDatabase: XrmDatabase].}
proc XrmDestroyDatabase*(para1: XrmDatabase){.cdecl, dynlib: libX11, importc.}
proc XrmQPutResource*(para1: PXrmDatabase, para2: XrmBindingList,
para3: XrmQuarkList, para4: XrmRepresentation,
para5: PXrmValue){.cdecl, dynlib: libX11, importc.}
proc XrmPutResource*(para1: PXrmDatabase, para2: cstring, para3: cstring,
para4: PXrmValue){.cdecl, dynlib: libX11, importc.}
proc XrmQPutStringResource*(para1: PXrmDatabase, para2: XrmBindingList,
para3: XrmQuarkList, para4: cstring){.cdecl,
dynlib: libX11, importc.}
proc XrmPutStringResource*(para1: PXrmDatabase, para2: cstring, para3: cstring){.
cdecl, dynlib: libX11, importc.}
proc XrmPutLineResource*(para1: PXrmDatabase, para2: cstring){.cdecl,
dynlib: libX11, importc.}
proc XrmQGetResource*(para1: XrmDatabase, para2: XrmNameList,
para3: XrmClassList, para4: PXrmRepresentation,
para5: PXrmValue): XBool{.cdecl, dynlib: libX11, importc.}
proc XrmGetResource*(para1: XrmDatabase, para2: cstring, para3: cstring,
para4: PPchar, para5: PXrmValue): XBool{.cdecl,
dynlib: libX11, importc.}
# There is no definition of XrmSearchList
#function XrmQGetSearchList(para1:XrmDatabase; para2:XrmNameList; para3:XrmClassList; para4:XrmSearchList; para5:longint):XBool;cdecl;external libX11;
#function XrmQGetSearchResource(para1:XrmSearchList; para2:XrmName; para3:XrmClass; para4:PXrmRepresentation; para5:PXrmValue):XBool;cdecl;external libX11;
proc XrmSetDatabase*(para1: PDisplay, para2: XrmDatabase){.cdecl,
dynlib: libX11, importc.}
proc XrmGetDatabase*(para1: PDisplay): XrmDatabase{.cdecl, dynlib: libX11,
importc.}
proc XrmGetFileDatabase*(para1: cstring): XrmDatabase{.cdecl, dynlib: libX11,
importc.}
proc XrmCombineFileDatabase*(para1: cstring, para2: PXrmDatabase, para3: XBool): Status{.
cdecl, dynlib: libX11, importc.}
proc XrmGetStringDatabase*(para1: cstring): XrmDatabase{.cdecl, dynlib: libX11,
importc.}
proc XrmPutFileDatabase*(para1: XrmDatabase, para2: cstring){.cdecl,
dynlib: libX11, importc.}
proc XrmMergeDatabases*(para1: XrmDatabase, para2: PXrmDatabase){.cdecl,
dynlib: libX11, importc.}
proc XrmCombineDatabase*(para1: XrmDatabase, para2: PXrmDatabase, para3: XBool){.
cdecl, dynlib: libX11, importc.}
const
XrmEnumAllLevels* = 0
XrmEnumOneLevel* = 1
type
funcbool* = proc (): XBool {.cdecl.}
proc XrmEnumerateDatabase*(para1: XrmDatabase, para2: XrmNameList,
para3: XrmClassList, para4: int32, para5: funcbool,
para6: XPointer): XBool{.cdecl, dynlib: libX11,
importc.}
proc XrmLocaleOfDatabase*(para1: XrmDatabase): cstring{.cdecl, dynlib: libX11,
importc.}
type
PXrmOptionKind* = ptr XrmOptionKind
XrmOptionKind* = enum
XrmoptionNoArg, XrmoptionIsArg, XrmoptionStickyArg, XrmoptionSepArg,
XrmoptionResArg, XrmoptionSkipArg, XrmoptionSkipLine, XrmoptionSkipNArgs
PXrmOptionDescRec* = ptr XrmOptionDescRec
XrmOptionDescRec*{.final.} = object
option*: cstring
specifier*: cstring
argKind*: XrmOptionKind
value*: XPointer
XrmOptionDescList* = PXrmOptionDescRec
PXrmOptionDescList* = ptr XrmOptionDescList
{.deprecated: [TXrmOptionKind: XrmOptionKind].}
{.deprecated: [TXrmOptionDescRec: XrmOptionDescRec].}
{.deprecated: [TPXrmOptionDescList: PXrmOptionDescList].}
proc XrmParseCommand*(para1: PXrmDatabase, para2: XrmOptionDescList,
para3: int32, para4: cstring, para5: ptr int32,
para6: PPchar){.cdecl, dynlib: libX11, importc.}
# implementation
proc NULLQUARK(): XrmQuark =
result = XrmQuark(0)
proc NULLSTRING(): XrmString =
result = nil
#when defined(MACROS):
proc XrmStringsEqual(a1, a2: cstring): bool =
#result = (strcomp(a1, a2)) == 0
$a1 == $a2
proc XrmNameToString(name: int32): XrmString =
result = XrmQuarkToString(name)
proc XrmStringToName(str: cstring): int32 =
result = XrmStringToQuark(str)
proc XrmStringToNameList(str: cstring, name: PXrmQuark) =
XrmStringToQuarkList(str, name)
proc XrmClassToString(c_class: int32): XrmString =
result = XrmQuarkToString(c_class)
proc XrmStringToClass(c_class: cstring): int32 =
result = XrmStringToQuark(c_class)
proc XrmStringToClassList(str: cstring, c_class: PXrmQuark) =
XrmStringToQuarkList(str, c_class)
proc XrmStringToRepresentation(str: cstring): int32 =
result = XrmStringToQuark(str)
proc XrmRepresentationToString(thetype: int32): XrmString =
result = XrmQuarkToString(thetype)
import
x, xlib
when defined(use_pkg_config) or defined(use_pkg_config_static):
{.pragma: libxrender, cdecl, importc.}
when defined(use_pkg_config):
{.passl: gorge("pkg-config xrender --libs").}
else:
{.passl: gorge("pkg-config xrender --static --libs").}
else:
when defined(macosx):
const
libXrender* = "libXrender.dylib"
else:
const
libXrender* = "libXrender.so"
{.pragma: libxrender, dynlib: libXrender, cdecl, importc.}
#const
# libXrender* = "libXrender.so"
#
# Automatically converted by H2Pas 0.99.15 from xrender.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xrender.h
#
type
PGlyph* = ptr Glyph
Glyph* = int32
PGlyphSet* = ptr GlyphSet
GlyphSet* = int32
PPicture* = ptr Picture
Picture* = int32
PPictFormat* = ptr PictFormat
PictFormat* = int32
{.deprecated: [TGlyph: Glyph].}
{.deprecated: [TGlyphSet: GlyphSet].}
{.deprecated: [TPicture: Picture].}
{.deprecated: [TPictFormat: PictFormat].}
const
RENDER_NAME* = "RENDER"
RENDER_MAJOR* = 0
RENDER_MINOR* = 0
constX_RenderQueryVersion* = 0
X_RenderQueryPictFormats* = 1
X_RenderQueryPictIndexValues* = 2
X_RenderQueryDithers* = 3
constX_RenderCreatePicture* = 4
constX_RenderChangePicture* = 5
X_RenderSetPictureClipRectangles* = 6
constX_RenderFreePicture* = 7
constX_RenderComposite* = 8
X_RenderScale* = 9
X_RenderTrapezoids* = 10
X_RenderTriangles* = 11
X_RenderTriStrip* = 12
X_RenderTriFan* = 13
X_RenderColorTrapezoids* = 14
X_RenderColorTriangles* = 15
X_RenderTransform* = 16
constX_RenderCreateGlyphSet* = 17
constX_RenderReferenceGlyphSet* = 18
constX_RenderFreeGlyphSet* = 19
constX_RenderAddGlyphs* = 20
constX_RenderAddGlyphsFromPicture* = 21
constX_RenderFreeGlyphs* = 22
constX_RenderCompositeGlyphs8* = 23
constX_RenderCompositeGlyphs16* = 24
constX_RenderCompositeGlyphs32* = 25
BadPictFormat* = 0
BadPicture* = 1
BadPictOp* = 2
BadGlyphSet* = 3
BadGlyph* = 4
RenderNumberErrors* = BadGlyph + 1
PictTypeIndexed* = 0
PictTypeDirect* = 1
PictOpClear* = 0
PictOpSrc* = 1
PictOpDst* = 2
PictOpOver* = 3
PictOpOverReverse* = 4
PictOpIn* = 5
PictOpInReverse* = 6
PictOpOut* = 7
PictOpOutReverse* = 8
PictOpAtop* = 9
PictOpAtopReverse* = 10
PictOpXor* = 11
PictOpAdd* = 12
PictOpSaturate* = 13
PictOpMaximum* = 13
PolyEdgeSharp* = 0
PolyEdgeSmooth* = 1
PolyModePrecise* = 0
PolyModeImprecise* = 1
CPRepeat* = 1 shl 0
CPAlphaMap* = 1 shl 1
CPAlphaXOrigin* = 1 shl 2
CPAlphaYOrigin* = 1 shl 3
CPClipXOrigin* = 1 shl 4
CPClipYOrigin* = 1 shl 5
CPClipMask* = 1 shl 6
CPGraphicsExposure* = 1 shl 7
CPSubwindowMode* = 1 shl 8
CPPolyEdge* = 1 shl 9
CPPolyMode* = 1 shl 10
CPDither* = 1 shl 11
CPLastBit* = 11
type
PXRenderDirectFormat* = ptr XRenderDirectFormat
XRenderDirectFormat*{.final.} = object
red*: int16
redMask*: int16
green*: int16
greenMask*: int16
blue*: int16
blueMask*: int16
alpha*: int16
alphaMask*: int16
PXRenderPictFormat* = ptr XRenderPictFormat
XRenderPictFormat*{.final.} = object
id*: PictFormat
thetype*: int32
depth*: int32
direct*: XRenderDirectFormat
colormap*: Colormap
{.deprecated: [TXRenderDirectFormat: XRenderDirectFormat].}
{.deprecated: [TXRenderPictFormat: XRenderPictFormat].}
const
PictFormatID* = 1 shl 0
PictFormatType* = 1 shl 1
PictFormatDepth* = 1 shl 2
PictFormatRed* = 1 shl 3
PictFormatRedMask* = 1 shl 4
PictFormatGreen* = 1 shl 5
PictFormatGreenMask* = 1 shl 6
PictFormatBlue* = 1 shl 7
PictFormatBlueMask* = 1 shl 8
PictFormatAlpha* = 1 shl 9
PictFormatAlphaMask* = 1 shl 10
PictFormatColormap* = 1 shl 11
type
PXRenderVisual* = ptr XRenderVisual
XRenderVisual*{.final.} = object
visual*: PVisual
format*: PXRenderPictFormat
PXRenderDepth* = ptr XRenderDepth
XRenderDepth*{.final.} = object
depth*: int32
nvisuals*: int32
visuals*: PXRenderVisual
PXRenderScreen* = ptr XRenderScreen
XRenderScreen*{.final.} = object
depths*: PXRenderDepth
ndepths*: int32
fallback*: PXRenderPictFormat
PXRenderInfo* = ptr XRenderInfo
XRenderInfo*{.final.} = object
format*: PXRenderPictFormat
nformat*: int32
screen*: PXRenderScreen
nscreen*: int32
depth*: PXRenderDepth
ndepth*: int32
visual*: PXRenderVisual
nvisual*: int32
PXRenderPictureAttributes* = ptr XRenderPictureAttributes
XRenderPictureAttributes*{.final.} = object
repeat*: XBool
alpha_map*: Picture
alpha_x_origin*: int32
alpha_y_origin*: int32
clip_x_origin*: int32
clip_y_origin*: int32
clip_mask*: Pixmap
graphics_exposures*: XBool
subwindow_mode*: int32
poly_edge*: int32
poly_mode*: int32
dither*: Atom
PXGlyphInfo* = ptr XGlyphInfo
XGlyphInfo*{.final.} = object
width*: int16
height*: int16
x*: int16
y*: int16
xOff*: int16
yOff*: int16
PXRenderColor* = ptr XRenderColor
XRenderColor* = object
red*: cushort
green*: cushort
blue*: cushort
alpha*: cushort
{.deprecated: [TXRenderVisual: XRenderVisual].}
{.deprecated: [TXRenderDepth: XRenderDepth].}
{.deprecated: [TXRenderScreen: XRenderScreen].}
{.deprecated: [TXRenderInfo: XRenderInfo].}
{.deprecated: [TXRenderPictureAttributes: XRenderPictureAttributes].}
{.deprecated: [TXGlyphInfo: XGlyphInfo].}
proc XRenderQueryExtension*(dpy: PDisplay, event_basep: ptr int32,
error_basep: ptr int32): XBool{.libxrender.}
proc XRenderQueryVersion*(dpy: PDisplay, major_versionp: ptr int32,
minor_versionp: ptr int32): Status{.libxrender.}
proc XRenderQueryFormats*(dpy: PDisplay): Status{.libxrender.}
proc XRenderFindVisualFormat*(dpy: PDisplay, visual: PVisual): PXRenderPictFormat{.
libxrender.}
proc XRenderFindFormat*(dpy: PDisplay, mask: int32,
`template`: PXRenderPictFormat, count: int32): PXRenderPictFormat{.
libxrender.}
proc XRenderCreatePicture*(dpy: PDisplay, drawable: Drawable,
format: PXRenderPictFormat, valuemask: int32,
attributes: PXRenderPictureAttributes): Picture{.
libxrender.}
proc XRenderChangePicture*(dpy: PDisplay, picture: Picture, valuemask: int32,
attributes: PXRenderPictureAttributes){.libxrender.}
proc XRenderFreePicture*(dpy: PDisplay, picture: Picture){.libxrender.}
proc XRenderComposite*(dpy: PDisplay, op: int32, src: Picture, mask: Picture,
dst: Picture, src_x: int32, src_y: int32, mask_x: int32,
mask_y: int32, dst_x: int32, dst_y: int32, width: int32,
height: int32){.libxrender.}
proc XRenderCreateGlyphSet*(dpy: PDisplay, format: PXRenderPictFormat): GlyphSet{.
libxrender.}
proc XRenderReferenceGlyphSet*(dpy: PDisplay, existing: GlyphSet): GlyphSet{.
libxrender.}
proc XRenderFreeGlyphSet*(dpy: PDisplay, glyphset: GlyphSet){.libxrender.}
proc XRenderAddGlyphs*(dpy: PDisplay, glyphset: GlyphSet, gids: PGlyph,
glyphs: PXGlyphInfo, nglyphs: int32, images: cstring,
nbyte_images: int32){.libxrender.}
proc XRenderFreeGlyphs*(dpy: PDisplay, glyphset: GlyphSet, gids: PGlyph,
nglyphs: int32){.libxrender.}
proc XRenderCompositeString8*(dpy: PDisplay, op: int32, src: Picture,
dst: Picture, maskFormat: PXRenderPictFormat,
glyphset: GlyphSet, xSrc: int32, ySrc: int32,
xDst: int32, yDst: int32, str: cstring,
nchar: int32){.libxrender.}
# implementation
import x
, xlib
const
libXrandr* = "libXrandr.so(.2|)"
RR_HSyncPositive* = 0x00000001
RR_HSyncNegative* = 0x00000002
RR_VSyncPositive* = 0x00000004
RR_VSyncNegative* = 0x00000008
RR_Interlace* = 0x00000010
RR_DoubleScan* = 0x00000020
RR_CSync* = 0x00000040
RR_CSyncPositive* = 0x00000080
RR_CSyncNegative* = 0x00000100
RR_HSkewPresent* = 0x00000200
RR_BCast* = 0x00000400
RR_PixelMultiplex* = 0x00000800
RR_DoubleClock* = 0x00001000
RR_ClockDivideBy2* = 0x00002000
RR_Connected* = 0
RR_Disconnected* = 1
RR_UnknownConnection* = 2
type
PRotation* = ptr Rotation
Rotation* = cushort
PSizeID* = ptr SizeID
SizeID* = cushort
PSubpixelOrder* = ptr SubpixelOrder
SubpixelOrder* = cushort
PRRCrtc* = ptr RRCrtc
RRCrtc* = XID
PRROutput* = ptr RROutput
RROutput* = XID
PRRMode* = ptr RRMode
RRMode* = XID
PXRRModeFlags* = ptr XRRModeFlags
XRRModeFlags* = culong
PConnection* = ptr Connection
Connection* = cushort
{.deprecated: [TRotation: Rotation].}
{.deprecated: [TSizeID: SizeID].}
{.deprecated: [TSubpixelOrder: SubpixelOrder].}
{.deprecated: [TRRCrtc: RRCrtc].}
{.deprecated: [TRROutput: RROutput].}
{.deprecated: [TRRMode: RRMode].}
{.deprecated: [TXRRModeFlags: XRRModeFlags].}
{.deprecated: [TConnection: Connection].}
const
RANDR_NAME* = "RANDR"
RANDR_MAJOR* = 1
RANDR_MINOR* = 1
RRNumberErrors* = 0
RRNumberEvents* = 1
constX_RRQueryVersion* = 0 # we skip 1 to make old clients fail pretty immediately
X_RROldGetScreenInfo* = 1
X_RR1_0SetScreenConfig* = 2 # V1.0 apps share the same set screen config request id
constX_RRSetScreenConfig* = 2
X_RROldScreenChangeSelectInput* = 3 # 3 used to be ScreenChangeSelectInput: deprecated
constX_RRSelectInput* = 4
constX_RRGetScreenInfo* = 5 # used in XRRSelectInput
RRScreenChangeNotifyMask* = 1 shl 0
RRScreenChangeNotify* = 0 # used in the rotation field: rotation and reflection in 0.1 proto.
RR_Rotate_0* = 1
RR_Rotate_90* = 2
RR_Rotate_180* = 4
RR_Rotate_270* = 8 # new in 1.0 protocol, to allow reflection of screen
RR_Reflect_X* = 16
RR_Reflect_Y* = 32
RRSetConfigSuccess* = 0
RRSetConfigInvalidConfigTime* = 1
RRSetConfigInvalidTime* = 2
RRSetConfigFailed* = 3
type
PXRRScreenSize* = ptr XRRScreenSize
XRRScreenSize*{.bycopy.} = object #
# Events.
#
width*, height*: cint
mwidth*, mheight*: cint
XRRScreenChangeNotifyEvent*{.bycopy.} = object # internal representation is private to the library
typ*: cint # event base
serial*: culong # # of last request processed by server
send_event*: XBool # true if this came from a SendEvent request
display*: PDisplay # Display the event was read from
window*: Window # window which selected for this event
root*: Window # Root window for changed screen
timestamp*: Time # when the screen change occurred
config_timestamp*: Time # when the last configuration change
size_index*: SizeID
subpixel_order*: SubpixelOrder
rotation*: Rotation
width*: cint
height*: cint
mwidth*: cint
mheight*: cint
PXRRScreenConfiguration* = ptr XRRScreenConfiguration
XRRScreenConfiguration* {.bycopy.} = object
PXRRModeInfo* = ptr XRRModeInfo
XRRModeInfo* {.bycopy.} = object
id*: RRMode
width*, height*: cuint
dotClock*: culong
hSyncStart*: cuint
hSyncEnd*: cuint
hTotal*: cuint
hSkew*: cuint
vSyncStart*: cuint
vSyncEnd*: cuint
vTotal*: cuint
name*: cstring
nameLength*: cuint
modeFlags*: XRRModeFlags
PXRRScreenResources* = ptr XRRScreenResources
XRRScreenResources* {.bycopy.} = object
timestamp*, configTimestamp*: Time
ncrtc*: cint
crtcs*: ptr RRCrtc
noutput*: cint
outputs*: ptr RROutput
nmode*: cint
modes*: ptr XRRModeInfo
PXRROutputInfo* = ptr XRROutputInfo
XRROutputInfo* {.bycopy.} = object
timestamp*: Time
crtc*: RRCrtc
name*: cstring
nameLen*: cint
mmWidth*, mmHeight*: culong
connection*: Connection
subpixelOrder*: SubpixelOrder
ncrtc*: cint
crtcs*: ptr UncheckedArray[RRCrtc]
nclone*: cint
clones*: ptr UncheckedArray[RROutput]
nmode*: cint
npreferred*: cint
modes*: ptr UncheckedArray[RRMode]
PXRRPropertyInfo* = ptr XRRPropertyInfo
XRRPropertyInfo* {.bycopy.} = object
pending, range, immutable: bool
numValues: cint
values: ptr UncheckedArray[clong]
XRRCrtcInfo* {.bycopy.} = object
timestamp*: Time
x*, y*: int
width*, height*: cuint
mode*: RRMode
rotation*: Rotation
noutput*: int
outputs*: ptr UncheckedArray[RROutput]
rotations*: Rotation
npossible*: int
possible*: ptr UncheckedArray[RROutput]
RandrFormat* = enum
randrFormat16bit = 16, randrFormat32bit = 32
{.deprecated: [TXRRScreenSize: XRRScreenSize].}
{.deprecated: [TXRRScreenChangeNotifyEvent: XRRScreenChangeNotifyEvent].}
{.deprecated: [TXRRScreenConfiguration: XRRScreenConfiguration].}
{.deprecated: [TXRRModeInfo: XRRModeInfo].}
{.deprecated: [TXRRScreenResources: XRRScreenResources].}
{.deprecated: [TXRROutputInfo: XRROutputInfo].}
{.deprecated: [TXRRPropertyInfo: XRRPropertyInfo].}
proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): XBool{.
cdecl, importc.}
proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint,
minor_versionp: Pcint): Status{.cdecl,
importc.}
proc XRRQueryOutputProperty*(dpy: PDisplay, output: RROutput, property: Atom):
PXRRPropertyInfo {.cdecl, importc.}
proc XRRChangeOutputProperty*(dpy: PDisplay, output: RROutput,
property, kind: Atom, format, mode: cint, data: ptr char, nelements: cint) {.
cdecl, importc.}
proc XRRGetScreenInfo*(dpy: PDisplay, draw: Drawable): PXRRScreenConfiguration{.
cdecl, importc.}
proc XRRFreeScreenConfigInfo*(config: PXRRScreenConfiguration){.cdecl,
dynlib: libXrandr, importc.}
#
# Note that screen configuration changes are only permitted if the client can
# prove it has up to date configuration information. We are trying to
# insist that it become possible for screens to change dynamically, so
# we want to ensure the client knows what it is talking about when requesting
# changes.
#
proc XRRSetScreenConfig*(dpy: PDisplay, config: PXRRScreenConfiguration,
draw: Drawable, size_index: cint, rotation: Rotation,
timestamp: Time): Status{.cdecl,
importc.}
# added in v1.1, sorry for the lame name
proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration,
draw: Drawable, size_index: cint,
rotation: Rotation, rate: cshort,
timestamp: Time): Status{.cdecl,
dynlib: libXrandr, importc.}
proc XRRConfigRotations*(config: PXRRScreenConfiguration,
current_rotation: PRotation): Rotation{.cdecl,
dynlib: libXrandr, importc.}
proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): Time{.
cdecl, importc.}
proc XRRConfigSizes*(config: PXRRScreenConfiguration, nsizes: Pcint): PXRRScreenSize{.
cdecl, importc.}
proc XRRConfigRates*(config: PXRRScreenConfiguration, sizeID: cint,
nrates: Pcint): ptr int16{.cdecl, importc.}
proc XRRConfigCurrentConfiguration*(config: PXRRScreenConfiguration,
rotation: PRotation): SizeID{.cdecl,
dynlib: libXrandr, importc.}
proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl,
dynlib: libXrandr, importc.}
proc XRRRootToScreen*(dpy: PDisplay, root: Window): cint{.cdecl,
dynlib: libXrandr, importc.}
#
# returns the screen configuration for the specified screen: does a lazy
# evalution to delay getting the information, and caches the result.
# These routines should be used in preference to XRRGetScreenInfo
# to avoid unneeded round trips to the X server. These are new
# in protocol version 0.1.
#
proc XRRScreenConfig*(dpy: PDisplay, screen: cint): PXRRScreenConfiguration{.
cdecl, importc.}
proc XRRConfig*(screen: PScreen): PXRRScreenConfiguration{.cdecl,
dynlib: libXrandr, importc.}
proc XRRSelectInput*(dpy: PDisplay, window: Window, mask: cint){.cdecl,
dynlib: libXrandr, importc.}
#
# the following are always safe to call, even if RandR is not implemented
# on a screen
#
proc XRRRotations*(dpy: PDisplay, screen: cint, current_rotation: PRotation): Rotation{.cdecl, importc.}
proc XRRSizes*(dpy: PDisplay, screen: cint, nsizes: Pcint): PXRRScreenSize{.cdecl, importc.}
proc XRRRates*(dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint): ptr int16{.cdecl, importc.}
proc XRRTimes*(dpy: PDisplay, screen: cint, config_timestamp: PTime): Time{.cdecl, importc.}
proc XRRUpdateConfiguration*(event: PXEvent): cint{.cdecl, importc.}
proc XRRGetScreenResourcesCurrent*(dpy: PDisplay, win: Window): PXRRScreenResources {.cdecl, importc.}
proc XRRFreeScreenResources*(res: PXRRScreenResources) {.cdecl, importc.}
proc XRRGetOutputInfo*(dpy: PDisplay, res: PXRRScreenResources, ret: RROutput): PXRROutputInfo {.cdecl, importc.}
proc XRRFreeOutputInfo*(info: PXRROutputInfo) {.cdecl, importc.}
# added
proc XRRGetCrtcInfo*(dpy: ptr Display
, resources: ptr XRRScreenResources
, crtc: RRCrtc
): ptr XRRCrtcInfo {.importc, cdecl.}
import
x
include "x11pragma.nim"
type
cunsigned* = cint
Pcint* = ptr cint
PPcint* = ptr Pcint
PPcuchar* = ptr ptr char
PWideChar* = ptr int16
PPChar* = ptr cstring
PPPChar* = ptr ptr cstring
Pculong* = ptr culong
Pcuchar* = cstring
Pcuint* = ptr cuint
Pcushort* = ptr uint16
# Automatically converted by H2Pas 0.99.15 from xlib.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xlib.h
const
XlibSpecificationRelease* = 6
type
PXPointer* = ptr XPointer
XPointer* = ptr char
PBool* = ptr XBool
XBool* = cint
PStatus* = ptr Status
Status* = cint
{.deprecated: [TXPointer: XPointer].}
{.deprecated: [TXBool: XBool].}
{.deprecated: [TStatus: Status].}
const
QueuedAlready* = 0
QueuedAfterReading* = 1
QueuedAfterFlush* = 2
type
PPXExtData* = ptr PXExtData
PXExtData* = ptr XExtData
XExtData*{.final.} = object
number*: cint
next*: PXExtData
free_private*: proc (extension: PXExtData): cint{.cdecl.}
private_data*: XPointer
PXExtCodes* = ptr XExtCodes
XExtCodes*{.final.} = object
extension*: cint
major_opcode*: cint
first_event*: cint
first_error*: cint
PXPixmapFormatValues* = ptr XPixmapFormatValues
XPixmapFormatValues*{.final.} = object
depth*: cint
bits_per_pixel*: cint
scanline_pad*: cint
PXGCValues* = ptr XGCValues
XGCValues*{.final.} = object
function*: cint
plane_mask*: culong
foreground*: culong
background*: culong
line_width*: cint
line_style*: cint
cap_style*: cint
join_style*: cint
fill_style*: cint
fill_rule*: cint
arc_mode*: cint
tile*: Pixmap
stipple*: Pixmap
ts_x_origin*: cint
ts_y_origin*: cint
font*: Font
subwindow_mode*: cint
graphics_exposures*: XBool
clip_x_origin*: cint
clip_y_origin*: cint
clip_mask*: Pixmap
dash_offset*: cint
dashes*: cchar
PXGC* = ptr XGC
XGC*{.final.} = object
GC* = PXGC
PGC* = ptr GC
PVisual* = ptr Visual
Visual*{.final.} = object
ext_data*: PXExtData
visualid*: VisualID
c_class*: cint
red_mask*, green_mask*, blue_mask*: culong
bits_per_rgb*: cint
map_entries*: cint
PDepth* = ptr Depth
Depth*{.final.} = object
depth*: cint
nvisuals*: cint
visuals*: PVisual
PXDisplay* = ptr XDisplay
XDisplay*{.final.} = object
PScreen* = ptr Screen
Screen*{.final.} = object
ext_data*: PXExtData
display*: PXDisplay
root*: Window
width*, height*: cint
mwidth*, mheight*: cint
ndepths*: cint
depths*: PDepth
root_depth*: cint
root_visual*: PVisual
default_gc*: GC
cmap*: Colormap
white_pixel*: culong
black_pixel*: culong
max_maps*, min_maps*: cint
backing_store*: cint
save_unders*: XBool
root_input_mask*: clong
PScreenFormat* = ptr ScreenFormat
ScreenFormat*{.final.} = object
ext_data*: PXExtData
depth*: cint
bits_per_pixel*: cint
scanline_pad*: cint
PXSetWindowAttributes* = ptr XSetWindowAttributes
XSetWindowAttributes*{.final.} = object
background_pixmap*: Pixmap
background_pixel*: culong
border_pixmap*: Pixmap
border_pixel*: culong
bit_gravity*: cint
win_gravity*: cint
backing_store*: cint
backing_planes*: culong
backing_pixel*: culong
save_under*: XBool
event_mask*: clong
do_not_propagate_mask*: clong
override_redirect*: XBool
colormap*: Colormap
cursor*: Cursor
PXWindowAttributes* = ptr XWindowAttributes
XWindowAttributes*{.final.} = object
x*, y*: cint
width*, height*: cint
border_width*: cint
depth*: cint
visual*: PVisual
root*: Window
c_class*: cint
bit_gravity*: cint
win_gravity*: cint
backing_store*: cint
backing_planes*: culong
backing_pixel*: culong
save_under*: XBool
colormap*: Colormap
map_installed*: XBool
map_state*: cint
all_event_masks*: clong
your_event_mask*: clong
do_not_propagate_mask*: clong
override_redirect*: XBool
screen*: PScreen
PXHostAddress* = ptr XHostAddress
XHostAddress*{.final.} = object
family*: cint
len*: cint
address*: cstring
PXServerInterpretedAddress* = ptr XServerInterpretedAddress
XServerInterpretedAddress*{.final.} = object
typelength*: cint
valuelength*: cint
theType*: cstring
value*: cstring
PXImage* = ptr XImage
F*{.final.} = object
create_image*: proc (para1: PXDisplay, para2: PVisual, para3: cuint,
para4: cint, para5: cint, para6: cstring, para7: cuint,
para8: cuint, para9: cint, para10: cint): PXImage{.
cdecl.}
destroy_image*: proc (para1: PXImage): cint{.cdecl.}
get_pixel*: proc (para1: PXImage, para2: cint, para3: cint): culong{.cdecl.}
put_pixel*: proc (para1: PXImage, para2: cint, para3: cint, para4: culong): cint{.
cdecl.}
sub_image*: proc (para1: PXImage, para2: cint, para3: cint, para4: cuint,
para5: cuint): PXImage{.cdecl.}
add_pixel*: proc (para1: PXImage, para2: clong): cint{.cdecl.}
XImage*{.final.} = object
width*, height*: cint
xoffset*: cint
format*: cint
data*: cstring
byte_order*: cint
bitmap_unit*: cint
bitmap_bit_order*: cint
bitmap_pad*: cint
depth*: cint
bytes_per_line*: cint
bits_per_pixel*: cint
red_mask*: culong
green_mask*: culong
blue_mask*: culong
obdata*: XPointer
f*: F
PXWindowChanges* = ptr XWindowChanges
XWindowChanges*{.final.} = object
x*, y*: cint
width*, height*: cint
border_width*: cint
sibling*: Window
stack_mode*: cint
PXColor* = ptr XColor
XColor*{.final.} = object
pixel*: culong
red*, green*, blue*: cushort
flags*: cchar
pad*: cchar
PXSegment* = ptr XSegment
XSegment*{.final.} = object
x1*, y1*, x2*, y2*: cshort
PXPoint* = ptr XPoint
XPoint*{.final.} = object
x*, y*: cshort
PXRectangle* = ptr XRectangle
XRectangle*{.final.} = object
x*, y*: cshort
width*, height*: cushort
PXArc* = ptr XArc
XArc*{.final.} = object
x*, y*: cshort
width*, height*: cushort
angle1*, angle2*: cshort
PXKeyboardControl* = ptr XKeyboardControl
XKeyboardControl*{.final.} = object
key_click_percent*: cint
bell_percent*: cint
bell_pitch*: cint
bell_duration*: cint
led*: cint
led_mode*: cint
key*: cint
auto_repeat_mode*: cint
PXKeyboardState* = ptr XKeyboardState
XKeyboardState*{.final.} = object
key_click_percent*: cint
bell_percent*: cint
bell_pitch*, bell_duration*: cuint
led_mask*: culong
global_auto_repeat*: cint
auto_repeats*: array[0..31, cchar]
PXTimeCoord* = ptr XTimeCoord
XTimeCoord*{.final.} = object
time*: Time
x*, y*: cshort
PXModifierKeymap* = ptr XModifierKeymap
XModifierKeymap*{.final.} = object
max_keypermod*: cint
modifiermap*: PKeyCode
PDisplay* = ptr Display
Display* = XDisplay
PXPrivate* = ptr Private
Private*{.final.} = object
PXrmHashBucketRec* = ptr XrmHashBucketRec
XrmHashBucketRec*{.final.} = object
PXPrivDisplay* = ptr XPrivDisplay
XPrivDisplay*{.final.} = object
ext_data*: PXExtData
private1*: PXPrivate
fd*: cint
private2*: cint
proto_major_version*: cint
proto_minor_version*: cint
vendor*: cstring
private3*: XID
private4*: XID
private5*: XID
private6*: cint
resource_alloc*: proc (para1: PXDisplay): XID{.cdecl.}
byte_order*: cint
bitmap_unit*: cint
bitmap_pad*: cint
bitmap_bit_order*: cint
nformats*: cint
pixmap_format*: PScreenFormat
private8*: cint
release*: cint
private9*, private10*: PXPrivate
qlen*: cint
last_request_read*: culong
request*: culong
private11*: XPointer
private12*: XPointer
private13*: XPointer
private14*: XPointer
max_request_size*: cunsigned
db*: PXrmHashBucketRec
private15*: proc (para1: PXDisplay): cint{.cdecl.}
display_name*: cstring
default_screen*: cint
nscreens*: cint
screens*: PScreen
motion_buffer*: culong
private16*: culong
min_keycode*: cint
max_keycode*: cint
private17*: XPointer
private18*: XPointer
private19*: cint
xdefaults*: cstring
PXKeyEvent* = ptr XKeyEvent
XKeyEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
root*: Window
subwindow*: Window
time*: Time
x*, y*: cint
x_root*, y_root*: cint
state*: cuint
keycode*: cuint
same_screen*: XBool
PXKeyPressedEvent* = ptr XKeyPressedEvent
XKeyPressedEvent* = XKeyEvent
PXKeyReleasedEvent* = ptr XKeyReleasedEvent
XKeyReleasedEvent* = XKeyEvent
PXButtonEvent* = ptr XButtonEvent
XButtonEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
root*: Window
subwindow*: Window
time*: Time
x*, y*: cint
x_root*, y_root*: cint
state*: cuint
button*: cuint
same_screen*: XBool
PXButtonPressedEvent* = ptr XButtonPressedEvent
XButtonPressedEvent* = XButtonEvent
PXButtonReleasedEvent* = ptr XButtonReleasedEvent
XButtonReleasedEvent* = XButtonEvent
PXMotionEvent* = ptr XMotionEvent
XMotionEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
root*: Window
subwindow*: Window
time*: Time
x*, y*: cint
x_root*, y_root*: cint
state*: cuint
is_hint*: cchar
same_screen*: XBool
PXPointerMovedEvent* = ptr XPointerMovedEvent
XPointerMovedEvent* = XMotionEvent
PXCrossingEvent* = ptr XCrossingEvent
XCrossingEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
root*: Window
subwindow*: Window
time*: Time
x*, y*: cint
x_root*, y_root*: cint
mode*: cint
detail*: cint
same_screen*: XBool
focus*: XBool
state*: cuint
PXEnterWindowEvent* = ptr XEnterWindowEvent
XEnterWindowEvent* = XCrossingEvent
PXLeaveWindowEvent* = ptr XLeaveWindowEvent
XLeaveWindowEvent* = XCrossingEvent
PXFocusChangeEvent* = ptr XFocusChangeEvent
XFocusChangeEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
mode*: cint
detail*: cint
PXFocusInEvent* = ptr XFocusInEvent
XFocusInEvent* = XFocusChangeEvent
PXFocusOutEvent* = ptr XFocusOutEvent
XFocusOutEvent* = XFocusChangeEvent
PXKeymapEvent* = ptr XKeymapEvent
XKeymapEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
key_vector*: array[0..31, cchar]
PXExposeEvent* = ptr XExposeEvent
XExposeEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
x*, y*: cint
width*, height*: cint
count*: cint
PXGraphicsExposeEvent* = ptr XGraphicsExposeEvent
XGraphicsExposeEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
drawable*: Drawable
x*, y*: cint
width*, height*: cint
count*: cint
major_code*: cint
minor_code*: cint
PXNoExposeEvent* = ptr XNoExposeEvent
XNoExposeEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
drawable*: Drawable
major_code*: cint
minor_code*: cint
PXVisibilityEvent* = ptr XVisibilityEvent
XVisibilityEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
state*: cint
PXCreateWindowEvent* = ptr XCreateWindowEvent
XCreateWindowEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
parent*: Window
window*: Window
x*, y*: cint
width*, height*: cint
border_width*: cint
override_redirect*: XBool
PXDestroyWindowEvent* = ptr XDestroyWindowEvent
XDestroyWindowEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
PXUnmapEvent* = ptr XUnmapEvent
XUnmapEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
from_configure*: XBool
PXMapEvent* = ptr XMapEvent
XMapEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
override_redirect*: XBool
PXMapRequestEvent* = ptr XMapRequestEvent
XMapRequestEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
parent*: Window
window*: Window
PXReparentEvent* = ptr XReparentEvent
XReparentEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
parent*: Window
x*, y*: cint
override_redirect*: XBool
PXConfigureEvent* = ptr XConfigureEvent
XConfigureEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
x*, y*: cint
width*, height*: cint
border_width*: cint
above*: Window
override_redirect*: XBool
PXGravityEvent* = ptr XGravityEvent
XGravityEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
x*, y*: cint
PXResizeRequestEvent* = ptr XResizeRequestEvent
XResizeRequestEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
width*, height*: cint
PXConfigureRequestEvent* = ptr XConfigureRequestEvent
XConfigureRequestEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
parent*: Window
window*: Window
x*, y*: cint
width*, height*: cint
border_width*: cint
above*: Window
detail*: cint
value_mask*: culong
PXCirculateEvent* = ptr XCirculateEvent
XCirculateEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
event*: Window
window*: Window
place*: cint
PXCirculateRequestEvent* = ptr XCirculateRequestEvent
XCirculateRequestEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
parent*: Window
window*: Window
place*: cint
PXPropertyEvent* = ptr XPropertyEvent
XPropertyEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
atom*: Atom
time*: Time
state*: cint
PXSelectionClearEvent* = ptr XSelectionClearEvent
XSelectionClearEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
selection*: Atom
time*: Time
PXSelectionRequestEvent* = ptr XSelectionRequestEvent
XSelectionRequestEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
owner*: Window
requestor*: Window
selection*: Atom
target*: Atom
property*: Atom
time*: Time
PXSelectionEvent* = ptr XSelectionEvent
XSelectionEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
requestor*: Window
selection*: Atom
target*: Atom
property*: Atom
time*: Time
PXColormapEvent* = ptr XColormapEvent
XColormapEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
colormap*: Colormap
c_new*: XBool
state*: cint
PXClientMessageEvent* = ptr XClientMessageEvent
XClientMessageData* {.union.} = object
b*: array[20, cchar]
s*: array[10, cshort]
l*: array[5, clong]
XClientMessageEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
message_type*: Atom
format*: cint
data*: XClientMessageData
PXMappingEvent* = ptr XMappingEvent
XMappingEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
request*: cint
first_keycode*: cint
count*: cint
PXErrorEvent* = ptr XErrorEvent
XErrorEvent*{.final.} = object
theType*: cint
display*: PDisplay
resourceid*: XID
serial*: culong
error_code*: char
request_code*: char
minor_code*: char
PXAnyEvent* = ptr XAnyEvent
XAnyEvent*{.final.} = object
theType*: cint
serial*: culong
send_event*: XBool
display*: PDisplay
window*: Window
PXGenericEvent* = ptr XGenericEvent
XGenericEvent*{.final.} = object
theType*: cint ## of event. Always GenericEvent
serial*: culong ## # of last request processed
send_event*: XBool ## true if from SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## major opcode of extension that caused the event
evtype*: cint ## actual event type.
PXGenericEventCookie* = ptr XGenericEventCookie
XGenericEventCookie*{.final.} = object
theType*: cint ## of event. Always GenericEvent
serial*: culong ## # of last request processed
send_event*: XBool ## true if from SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## major opcode of extension that caused the event
evtype*: cint ## actual event type.
cookie*: cuint
data*: pointer
PXEvent* = ptr XEvent
XEvent*{.final, union.} = object
theType*: cint
xany*: XAnyEvent
xkey*: XKeyEvent
xbutton*: XButtonEvent
xmotion*: XMotionEvent
xcrossing*: XCrossingEvent
xfocus*: XFocusChangeEvent
xexpose*: XExposeEvent
xgraphicsexpose*: XGraphicsExposeEvent
xnoexpose*: XNoExposeEvent
xvisibility*: XVisibilityEvent
xcreatewindow*: XCreateWindowEvent
xdestroywindow*: XDestroyWindowEvent
xunmap*: XUnmapEvent
xmap*: XMapEvent
xmaprequest*: XMapRequestEvent
xreparent*: XReparentEvent
xconfigure*: XConfigureEvent
xgravity*: XGravityEvent
xresizerequest*: XResizeRequestEvent
xconfigurerequest*: XConfigureRequestEvent
xcirculate*: XCirculateEvent
xcirculaterequest*: XCirculateRequestEvent
xproperty*: XPropertyEvent
xselectionclear*: XSelectionClearEvent
xselectionrequest*: XSelectionRequestEvent
xselection*: XSelectionEvent
xcolormap*: XColormapEvent
xclient*: XClientMessageEvent
xmapping*: XMappingEvent
xerror*: XErrorEvent
xkeymap*: XKeymapEvent
xgeneric*: XGenericEvent
xcookie*: XGenericEventCookie
pad: array[0..23, clong]
{.deprecated: [TXExtData: XExtData].}
{.deprecated: [TXExtCodes: XExtCodes].}
{.deprecated: [TXPixmapFormatValues: XPixmapFormatValues].}
{.deprecated: [TXGCValues: XGCValues].}
{.deprecated: [TXGC: XGC].}
{.deprecated: [TGC: GC].}
{.deprecated: [TVisual: Visual].}
{.deprecated: [TDepth: Depth].}
{.deprecated: [TXDisplay: XDisplay].}
{.deprecated: [TScreen: Screen].}
{.deprecated: [TScreenFormat: ScreenFormat].}
{.deprecated: [TXSetWindowAttributes: XSetWindowAttributes].}
{.deprecated: [TXWindowAttributes: XWindowAttributes].}
{.deprecated: [TXHostAddress: XHostAddress].}
{.deprecated: [TXServerInterpretedAddress: XServerInterpretedAddress].}
{.deprecated: [TF: F].}
{.deprecated: [TXImage: XImage].}
{.deprecated: [TXWindowChanges: XWindowChanges].}
{.deprecated: [TXColor: XColor].}
{.deprecated: [TXSegment: XSegment].}
{.deprecated: [TXPoint: XPoint].}
{.deprecated: [TXRectangle: XRectangle].}
{.deprecated: [TXArc: XArc].}
{.deprecated: [TXKeyboardControl: XKeyboardControl].}
{.deprecated: [TXKeyboardState: XKeyboardState].}
{.deprecated: [TXTimeCoord: XTimeCoord].}
{.deprecated: [TXModifierKeymap: XModifierKeymap].}
{.deprecated: [TDisplay: Display].}
{.deprecated: [TPrivate: Private].}
{.deprecated: [TXrmHashBucketRec: XrmHashBucketRec].}
{.deprecated: [TXPrivDisplay: XPrivDisplay].}
{.deprecated: [TXKeyEvent: XKeyEvent].}
{.deprecated: [TXKeyPressedEvent: XKeyPressedEvent].}
{.deprecated: [TXKeyReleasedEvent: XKeyReleasedEvent].}
{.deprecated: [TXButtonEvent: XButtonEvent].}
{.deprecated: [TXButtonPressedEvent: XButtonPressedEvent].}
{.deprecated: [TXButtonReleasedEvent: XButtonReleasedEvent].}
{.deprecated: [TXMotionEvent: XMotionEvent].}
{.deprecated: [TXPointerMovedEvent: XPointerMovedEvent].}
{.deprecated: [TXCrossingEvent: XCrossingEvent].}
{.deprecated: [TXEnterWindowEvent: XEnterWindowEvent].}
{.deprecated: [TXLeaveWindowEvent: XLeaveWindowEvent].}
{.deprecated: [TXFocusChangeEvent: XFocusChangeEvent].}
{.deprecated: [TXFocusInEvent: XFocusInEvent].}
{.deprecated: [TXFocusOutEvent: XFocusOutEvent].}
{.deprecated: [TXKeymapEvent: XKeymapEvent].}
{.deprecated: [TXExposeEvent: XExposeEvent].}
{.deprecated: [TXGraphicsExposeEvent: XGraphicsExposeEvent].}
{.deprecated: [TXNoExposeEvent: XNoExposeEvent].}
{.deprecated: [TXVisibilityEvent: XVisibilityEvent].}
{.deprecated: [TXCreateWindowEvent: XCreateWindowEvent].}
{.deprecated: [TXDestroyWindowEvent: XDestroyWindowEvent].}
{.deprecated: [TXUnmapEvent: XUnmapEvent].}
{.deprecated: [TXMapEvent: XMapEvent].}
{.deprecated: [TXMapRequestEvent: XMapRequestEvent].}
{.deprecated: [TXReparentEvent: XReparentEvent].}
{.deprecated: [TXConfigureEvent: XConfigureEvent].}
{.deprecated: [TXGravityEvent: XGravityEvent].}
{.deprecated: [TXResizeRequestEvent: XResizeRequestEvent].}
{.deprecated: [TXConfigureRequestEvent: XConfigureRequestEvent].}
{.deprecated: [TXCirculateEvent: XCirculateEvent].}
{.deprecated: [TXCirculateRequestEvent: XCirculateRequestEvent].}
{.deprecated: [TXPropertyEvent: XPropertyEvent].}
{.deprecated: [TXSelectionClearEvent: XSelectionClearEvent].}
{.deprecated: [TXSelectionRequestEvent: XSelectionRequestEvent].}
{.deprecated: [TXSelectionEvent: XSelectionEvent].}
{.deprecated: [TXColormapEvent: XColormapEvent].}
{.deprecated: [TXClientMessageData: XClientMessageData].}
{.deprecated: [TXClientMessageEvent: XClientMessageEvent].}
{.deprecated: [TXMappingEvent: XMappingEvent].}
{.deprecated: [TXErrorEvent: XErrorEvent].}
{.deprecated: [TXAnyEvent: XAnyEvent].}
{.deprecated: [TXEvent: XEvent].}
type
PXCharStruct* = ptr XCharStruct
XCharStruct*{.final.} = object
lbearing*: cshort
rbearing*: cshort
width*: cshort
ascent*: cshort
descent*: cshort
attributes*: cushort
PXFontProp* = ptr XFontProp
XFontProp*{.final.} = object
name*: Atom
card32*: culong
PPPXFontStruct* = ptr PPXFontStruct
PPXFontStruct* = ptr PXFontStruct
PXFontStruct* = ptr XFontStruct
XFontStruct*{.final.} = object
ext_data*: PXExtData
fid*: Font
direction*: cunsigned
min_char_or_byte2*: cunsigned
max_char_or_byte2*: cunsigned
min_byte1*: cunsigned
max_byte1*: cunsigned
all_chars_exist*: XBool
default_char*: cunsigned
n_properties*: cint
properties*: PXFontProp
min_bounds*: XCharStruct
max_bounds*: XCharStruct
per_char*: PXCharStruct
ascent*: cint
descent*: cint
PXTextItem* = ptr XTextItem
XTextItem*{.final.} = object
chars*: cstring
nchars*: cint
delta*: cint
font*: Font
PXChar2b* = ptr XChar2b
XChar2b*{.final.} = object
byte1*: char
byte2*: char
PXTextItem16* = ptr XTextItem16
XTextItem16*{.final.} = object
chars*: PXChar2b
nchars*: cint
delta*: cint
font*: Font
PXEDataObject* = ptr XEDataObject
XEDataObject*{.final.} = object
display*: PDisplay # case longint of
# 0 : ( display : PDisplay );
# 1 : ( gc : GC );
# 2 : ( visual : PVisual );
# 3 : ( screen : PScreen );
# 4 : ( pixmap_format : PScreenFormat );
# 5 : ( font : PXFontStruct );
PXFontSetExtents* = ptr XFontSetExtents
XFontSetExtents*{.final.} = object
max_ink_extent*: XRectangle
max_logical_extent*: XRectangle
PXOM* = ptr XOM
XOM*{.final.} = object
PXOC* = ptr XOC
XOC*{.final.} = object
PXFontSet* = ptr XFontSet
XFontSet* = PXOC
PXmbTextItem* = ptr XmbTextItem
XmbTextItem*{.final.} = object
chars*: cstring
nchars*: cint
delta*: cint
font_set*: XFontSet
PXwcTextItem* = ptr XwcTextItem
XwcTextItem*{.final.} = object
chars*: PWideChar #wchar_t*
nchars*: cint
delta*: cint
font_set*: XFontSet
{.deprecated: [TXCharStruct: XCharStruct].}
{.deprecated: [TXFontProp: XFontProp].}
{.deprecated: [TXFontStruct: XFontStruct].}
{.deprecated: [TXTextItem: XTextItem].}
{.deprecated: [TXChar2b: XChar2b].}
{.deprecated: [TXTextItem16: XTextItem16].}
{.deprecated: [TXEDataObject: XEDataObject].}
{.deprecated: [TXFontSetExtents: XFontSetExtents].}
{.deprecated: [TXOM: XOM].}
{.deprecated: [TXOC: XOC].}
{.deprecated: [TXFontSet: XFontSet].}
{.deprecated: [TXmbTextItem: XmbTextItem].}
{.deprecated: [TXwcTextItem: XwcTextItem].}
const
XNRequiredCharSet* = "requiredCharSet"
XNQueryOrientation* = "queryOrientation"
XNBaseFontName* = "baseFontName"
XNOMAutomatic* = "omAutomatic"
XNMissingCharSet* = "missingCharSet"
XNDefaultString* = "defaultString"
XNOrientation* = "orientation"
XNDirectionalDependentDrawing* = "directionalDependentDrawing"
XNContextualDrawing* = "contextualDrawing"
XNFontInfo* = "fontInfo"
type
PXOMCharSetList* = ptr XOMCharSetList
XOMCharSetList*{.final.} = object
charset_count*: cint
charset_list*: PPChar
PXOrientation* = ptr XOrientation
XOrientation* = enum
XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR,
XOMOrientation_TTB_RTL, XOMOrientation_Context
PXOMOrientation* = ptr XOMOrientation
XOMOrientation*{.final.} = object
num_orientation*: cint
orientation*: PXOrientation
PXOMFontInfo* = ptr XOMFontInfo
XOMFontInfo*{.final.} = object
num_font*: cint
font_struct_list*: ptr PXFontStruct
font_name_list*: PPChar
XIM*{.final.} = ptr object
XIC*{.final.} = ptr object
XIMProc* = proc (para1: XIM, para2: XPointer, para3: XPointer){.cdecl.}
XICProc* = proc (para1: XIC, para2: XPointer, para3: XPointer): XBool{.
cdecl.}
XIDProc* = proc (para1: PDisplay, para2: XPointer, para3: XPointer){.cdecl.}
PXIMStyle* = ptr XIMStyle
XIMStyle* = culong
PXIMStyles* = ptr XIMStyles
XIMStyles*{.final.} = object
count_styles*: cushort
supported_styles*: PXIMStyle
{.deprecated: [TXOMCharSetList: XOMCharSetList].}
{.deprecated: [TXOrientation: XOrientation].}
{.deprecated: [TXOMOrientation: XOMOrientation].}
{.deprecated: [TXOMFontInfo: XOMFontInfo].}
{.deprecated: [TXIM: XIM].}
{.deprecated: [TXIC: XIC].}
{.deprecated: [TXIMProc: XIMProc].}
{.deprecated: [TXICProc: XICProc].}
{.deprecated: [TXIDProc: XIDProc].}
{.deprecated: [TXIMStyle: XIMStyle].}
{.deprecated: [TXIMStyles: XIMStyles].}
const
XIMPreeditArea* = 0x00000001
XIMPreeditCallbacks* = 0x00000002
XIMPreeditPosition* = 0x00000004
XIMPreeditNothing* = 0x00000008
XIMPreeditNone* = 0x00000010
XIMStatusArea* = 0x00000100
XIMStatusCallbacks* = 0x00000200
XIMStatusNothing* = 0x00000400
XIMStatusNone* = 0x00000800
XNVaNestedList* = "XNVaNestedList"
XNQueryInputStyle* = "queryInputStyle"
XNClientWindow* = "clientWindow"
XNInputStyle* = "inputStyle"
XNFocusWindow* = "focusWindow"
XNResourceName* = "resourceName"
XNResourceClass* = "resourceClass"
XNGeometryCallback* = "geometryCallback"
XNDestroyCallback* = "destroyCallback"
XNFilterEvents* = "filterEvents"
XNPreeditStartCallback* = "preeditStartCallback"
XNPreeditDoneCallback* = "preeditDoneCallback"
XNPreeditDrawCallback* = "preeditDrawCallback"
XNPreeditCaretCallback* = "preeditCaretCallback"
XNPreeditStateNotifyCallback* = "preeditStateNotifyCallback"
XNPreeditAttributes* = "preeditAttributes"
XNStatusStartCallback* = "statusStartCallback"
XNStatusDoneCallback* = "statusDoneCallback"
XNStatusDrawCallback* = "statusDrawCallback"
XNStatusAttributes* = "statusAttributes"
XNArea* = "area"
XNAreaNeeded* = "areaNeeded"
XNSpotLocation* = "spotLocation"
XNColormap* = "colorMap"
XNStdColormap* = "stdColorMap"
XNForeground* = "foreground"
XNBackground* = "background"
XNBackgroundPixmap* = "backgroundPixmap"
XNFontSet* = "fontSet"
XNLineSpace* = "lineSpace"
XNCursor* = "cursor"
XNQueryIMValuesList* = "queryIMValuesList"
XNQueryICValuesList* = "queryICValuesList"
XNVisiblePosition* = "visiblePosition"
XNR6PreeditCallback* = "r6PreeditCallback"
XNStringConversionCallback* = "stringConversionCallback"
XNStringConversion* = "stringConversion"
XNResetState* = "resetState"
XNHotKey* = "hotKey"
XNHotKeyState* = "hotKeyState"
XNPreeditState* = "preeditState"
XNSeparatorofNestedList* = "separatorofNestedList"
XBufferOverflow* = - (1)
XLookupNone* = 1
XLookupChars* = 2
XLookupKeySymVal* = 3
XLookupBoth* = 4
type
PXVaNestedList* = ptr XVaNestedList
XVaNestedList* = pointer
PXIMCallback* = ptr XIMCallback
XIMCallback*{.final.} = object
client_data*: XPointer
callback*: XIMProc
PXICCallback* = ptr XICCallback
XICCallback*{.final.} = object
client_data*: XPointer
callback*: XICProc
PXIMFeedback* = ptr XIMFeedback
XIMFeedback* = culong
{.deprecated: [TXVaNestedList: XVaNestedList].}
{.deprecated: [TXIMCallback: XIMCallback].}
{.deprecated: [TXICCallback: XICCallback].}
{.deprecated: [TXIMFeedback: XIMFeedback].}
const
XIMReverse* = 1
XIMUnderline* = 1 shl 1
XIMHighlight* = 1 shl 2
XIMPrimary* = 1 shl 5
XIMSecondary* = 1 shl 6
XIMTertiary* = 1 shl 7
XIMVisibleToForward* = 1 shl 8
XIMVisibleToBackword* = 1 shl 9
XIMVisibleToCenter* = 1 shl 10
type
PXIMText* = ptr XIMText
XIMText*{.final.} = object
len*: cushort
feedback*: PXIMFeedback
encoding_is_wchar*: XBool
multi_byte*: cstring
PXIMPreeditState* = ptr XIMPreeditState
XIMPreeditState* = culong
{.deprecated: [TXIMText: XIMText].}
{.deprecated: [TXIMPreeditState: XIMPreeditState].}
const
XIMPreeditUnKnown* = 0
XIMPreeditEnable* = 1
XIMPreeditDisable* = 1 shl 1
type
PXIMPreeditStateNotifyCallbackStruct* = ptr XIMPreeditStateNotifyCallbackStruct
XIMPreeditStateNotifyCallbackStruct*{.final.} = object
state*: XIMPreeditState
PXIMResetState* = ptr XIMResetState
XIMResetState* = culong
{.deprecated: [TXIMPreeditStateNotifyCallbackStruct: XIMPreeditStateNotifyCallbackStruct].}
{.deprecated: [TXIMResetState: XIMResetState].}
const
XIMInitialState* = 1
XIMPreserveState* = 1 shl 1
type
PXIMStringConversionFeedback* = ptr XIMStringConversionFeedback
XIMStringConversionFeedback* = culong
{.deprecated: [TXIMStringConversionFeedback: XIMStringConversionFeedback].}
const
XIMStringConversionLeftEdge* = 0x00000001
XIMStringConversionRightEdge* = 0x00000002
XIMStringConversionTopEdge* = 0x00000004
XIMStringConversionBottomEdge* = 0x00000008
XIMStringConversionConcealed* = 0x00000010
XIMStringConversionWrapped* = 0x00000020
type
PXIMStringConversionText* = ptr XIMStringConversionText
XIMStringConversionText*{.final.} = object
len*: cushort
feedback*: PXIMStringConversionFeedback
encoding_is_wchar*: XBool
mbs*: cstring
PXIMStringConversionPosition* = ptr XIMStringConversionPosition
XIMStringConversionPosition* = cushort
PXIMStringConversionType* = ptr XIMStringConversionType
XIMStringConversionType* = cushort
{.deprecated: [TXIMStringConversionText: XIMStringConversionText].}
{.deprecated: [TXIMStringConversionPosition: XIMStringConversionPosition].}
{.deprecated: [TXIMStringConversionType: XIMStringConversionType].}
const
XIMStringConversionBuffer* = 0x00000001
XIMStringConversionLine* = 0x00000002
XIMStringConversionWord* = 0x00000003
XIMStringConversionChar* = 0x00000004
type
PXIMStringConversionOperation* = ptr XIMStringConversionOperation
XIMStringConversionOperation* = cushort
{.deprecated: [TXIMStringConversionOperation: XIMStringConversionOperation].}
const
XIMStringConversionSubstitution* = 0x00000001
XIMStringConversionRetrieval* = 0x00000002
type
PXIMCaretDirection* = ptr XIMCaretDirection
XIMCaretDirection* = enum
XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord,
XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart,
XIMLineEnd, XIMAbsolutePosition, XIMDontChange
PXIMStringConversionCallbackStruct* = ptr XIMStringConversionCallbackStruct
XIMStringConversionCallbackStruct*{.final.} = object
position*: XIMStringConversionPosition
direction*: XIMCaretDirection
operation*: XIMStringConversionOperation
factor*: cushort
text*: PXIMStringConversionText
PXIMPreeditDrawCallbackStruct* = ptr XIMPreeditDrawCallbackStruct
XIMPreeditDrawCallbackStruct*{.final.} = object
caret*: cint
chg_first*: cint
chg_length*: cint
text*: PXIMText
PXIMCaretStyle* = ptr XIMCaretStyle
XIMCaretStyle* = enum
XIMIsInvisible, XIMIsPrimary, XIMIsSecondary
PXIMPreeditCaretCallbackStruct* = ptr XIMPreeditCaretCallbackStruct
XIMPreeditCaretCallbackStruct*{.final.} = object
position*: cint
direction*: XIMCaretDirection
style*: XIMCaretStyle
PXIMStatusDataType* = ptr XIMStatusDataType
XIMStatusDataType* = enum
XIMTextType, XIMBitmapType
PXIMStatusDrawCallbackStruct* = ptr XIMStatusDrawCallbackStruct
XIMStatusDrawCallbackStruct*{.final.} = object
theType*: XIMStatusDataType
bitmap*: Pixmap
PXIMHotKeyTrigger* = ptr XIMHotKeyTrigger
XIMHotKeyTrigger*{.final.} = object
keysym*: KeySym
modifier*: cint
modifier_mask*: cint
PXIMHotKeyTriggers* = ptr XIMHotKeyTriggers
XIMHotKeyTriggers*{.final.} = object
num_hot_key*: cint
key*: PXIMHotKeyTrigger
PXIMHotKeyState* = ptr XIMHotKeyState
XIMHotKeyState* = culong
{.deprecated: [TXIMCaretDirection: XIMCaretDirection].}
{.deprecated: [TXIMStringConversionCallbackStruct: XIMStringConversionCallbackStruct].}
{.deprecated: [TXIMPreeditDrawCallbackStruct: XIMPreeditDrawCallbackStruct].}
{.deprecated: [TXIMCaretStyle: XIMCaretStyle].}
{.deprecated: [TXIMPreeditCaretCallbackStruct: XIMPreeditCaretCallbackStruct].}
{.deprecated: [TXIMStatusDataType: XIMStatusDataType].}
{.deprecated: [TXIMStatusDrawCallbackStruct: XIMStatusDrawCallbackStruct].}
{.deprecated: [TXIMHotKeyTrigger: XIMHotKeyTrigger].}
{.deprecated: [TXIMHotKeyTriggers: XIMHotKeyTriggers].}
{.deprecated: [TXIMHotKeyState: XIMHotKeyState].}
const
XIMHotKeyStateON* = 0x00000001
XIMHotKeyStateOFF* = 0x00000002
type
PXIMValuesList* = ptr XIMValuesList
XIMValuesList*{.final.} = object
count_values*: cushort
supported_values*: PPChar
{.deprecated: [TXIMValuesList: XIMValuesList].}
type
funcdisp* = proc (display: PDisplay): cint{.cdecl.}
funcifevent* = proc (display: PDisplay, event: PXEvent, p: XPointer): XBool{.
cdecl.}
chararr32* = array[0..31, char]
const
AllPlanes*: culong = not culong(0)
proc XLoadQueryFont*(para1: PDisplay, para2: cstring): PXFontStruct{.libx11.}
proc XQueryFont*(para1: PDisplay, para2: XID): PXFontStruct{.libx11.}
proc XGetMotionEvents*(para1: PDisplay, para2: Window, para3: Time,
para4: Time, para5: Pcint): PXTimeCoord{.libx11.}
proc XDeleteModifiermapEntry*(para1: PXModifierKeymap, para2: KeyCode,
para3: cint): PXModifierKeymap{.libx11.}
proc XGetModifierMapping*(para1: PDisplay): PXModifierKeymap{.libx11.}
proc XInsertModifiermapEntry*(para1: PXModifierKeymap, para2: KeyCode,
para3: cint): PXModifierKeymap{.libx11.}
proc XNewModifiermap*(para1: cint): PXModifierKeymap{.libx11.}
proc XCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint, para4: cint,
para5: cint, para6: cstring, para7: cuint, para8: cuint,
para9: cint, para10: cint): PXImage{.libx11.}
proc XInitImage*(para1: PXImage): Status{.libx11.}
proc XGetImage*(para1: PDisplay, para2: Drawable, para3: cint, para4: cint,
para5: cuint, para6: cuint, para7: culong, para8: cint): PXImage{.
libx11.}
proc XGetSubImage*(para1: PDisplay, para2: Drawable, para3: cint, para4: cint,
para5: cuint, para6: cuint, para7: culong, para8: cint,
para9: PXImage, para10: cint, para11: cint): PXImage{.libx11.}
proc XOpenDisplay*(para1: cstring): PDisplay{.libx11.}
proc XrmInitialize*(){.libx11.}
proc XFetchBytes*(para1: PDisplay, para2: Pcint): cstring{.libx11.}
proc XFetchBuffer*(para1: PDisplay, para2: Pcint, para3: cint): cstring{.libx11.}
proc XGetAtomName*(para1: PDisplay, para2: Atom): cstring{.libx11.}
proc XGetAtomNames*(para1: PDisplay, para2: PAtom, para3: cint, para4: PPchar): Status{.
libx11.}
proc XGetDefault*(para1: PDisplay, para2: cstring, para3: cstring): cstring{.
libx11.}
proc XDisplayName*(para1: cstring): cstring{.libx11.}
proc XKeysymToString*(para1: KeySym): cstring{.libx11.}
proc XSynchronize*(para1: PDisplay, para2: XBool): funcdisp{.libx11.}
proc XSetAfterFunction*(para1: PDisplay, para2: funcdisp): funcdisp{.libx11.}
proc XInternAtom*(para1: PDisplay, para2: cstring, para3: XBool): Atom{.libx11.}
proc XInternAtoms*(para1: PDisplay, para2: PPchar, para3: cint, para4: XBool,
para5: PAtom): Status{.libx11.}
proc XCopyColormapAndFree*(para1: PDisplay, para2: Colormap): Colormap{.libx11.}
proc XCreateColormap*(para1: PDisplay, para2: Window, para3: PVisual,
para4: cint): Colormap{.libx11.}
proc XCreatePixmapCursor*(para1: PDisplay, para2: Pixmap, para3: Pixmap,
para4: PXColor, para5: PXColor, para6: cuint,
para7: cuint): Cursor{.libx11.}
proc XCreateGlyphCursor*(para1: PDisplay, para2: Font, para3: Font,
para4: cuint, para5: cuint, para6: PXColor,
para7: PXColor): Cursor{.libx11.}
proc XCreateFontCursor*(para1: PDisplay, para2: cuint): Cursor{.libx11.}
proc XLoadFont*(para1: PDisplay, para2: cstring): Font{.libx11.}
proc XCreateGC*(para1: PDisplay, para2: Drawable, para3: culong,
para4: PXGCValues): GC{.libx11.}
proc XGContextFromGC*(para1: GC): GContext{.libx11.}
proc XFlushGC*(para1: PDisplay, para2: GC){.libx11.}
proc XCreatePixmap*(para1: PDisplay, para2: Drawable, para3: cuint,
para4: cuint, para5: cuint): Pixmap{.libx11.}
proc XCreateBitmapFromData*(para1: PDisplay, para2: Drawable, para3: cstring,
para4: cuint, para5: cuint): Pixmap{.libx11.}
proc XCreatePixmapFromBitmapData*(para1: PDisplay, para2: Drawable,
para3: cstring, para4: cuint, para5: cuint,
para6: culong, para7: culong, para8: cuint): Pixmap{.
libx11.}
proc XCreateSimpleWindow*(para1: PDisplay, para2: Window, para3: cint,
para4: cint, para5: cuint, para6: cuint, para7: cuint,
para8: culong, para9: culong): Window{.libx11.}
proc XGetSelectionOwner*(para1: PDisplay, para2: Atom): Window{.libx11.}
proc XCreateWindow*(para1: PDisplay, para2: Window, para3: cint, para4: cint,
para5: cuint, para6: cuint, para7: cuint, para8: cint,
para9: cuint, para10: PVisual, para11: culong,
para12: PXSetWindowAttributes): Window{.libx11.}
proc XListInstalledColormaps*(para1: PDisplay, para2: Window, para3: Pcint): PColormap{.
libx11.}
proc XListFonts*(para1: PDisplay, para2: cstring, para3: cint, para4: Pcint): PPChar{.
libx11.}
proc XListFontsWithInfo*(para1: PDisplay, para2: cstring, para3: cint,
para4: Pcint, para5: PPXFontStruct): PPChar{.libx11.}
proc XGetFontPath*(para1: PDisplay, para2: Pcint): PPChar{.libx11.}
proc XListExtensions*(para1: PDisplay, para2: Pcint): PPChar{.libx11.}
proc XListProperties*(para1: PDisplay, para2: Window, para3: Pcint): PAtom{.
libx11.}
proc XListHosts*(para1: PDisplay, para2: Pcint, para3: PBool): PXHostAddress{.
libx11.}
proc XKeycodeToKeysym*(para1: PDisplay, para2: KeyCode, para3: cint): KeySym{.
libx11.}
proc XLookupKeysym*(para1: PXKeyEvent, para2: cint): KeySym{.libx11.}
proc XGetKeyboardMapping*(para1: PDisplay, para2: KeyCode, para3: cint,
para4: Pcint): PKeySym{.libx11.}
proc XStringToKeysym*(para1: cstring): KeySym{.libx11.}
proc XMaxRequestSize*(para1: PDisplay): clong{.libx11.}
proc XExtendedMaxRequestSize*(para1: PDisplay): clong{.libx11.}
proc XResourceManagerString*(para1: PDisplay): cstring{.libx11.}
proc XScreenResourceString*(para1: PScreen): cstring{.libx11.}
proc XDisplayMotionBufferSize*(para1: PDisplay): culong{.libx11.}
proc XVisualIDFromVisual*(para1: PVisual): VisualID{.libx11.}
proc XInitThreads*(): Status{.libx11.}
proc XLockDisplay*(para1: PDisplay){.libx11.}
proc XUnlockDisplay*(para1: PDisplay){.libx11.}
proc XInitExtension*(para1: PDisplay, para2: cstring): PXExtCodes{.libx11.}
proc XAddExtension*(para1: PDisplay): PXExtCodes{.libx11.}
proc XFindOnExtensionList*(para1: PPXExtData, para2: cint): PXExtData{.libx11.}
proc XEHeadOfExtensionList*(para1: XEDataObject): PPXExtData{.libx11.}
proc XRootWindow*(para1: PDisplay, para2: cint): Window{.libx11.}
proc XDefaultRootWindow*(para1: PDisplay): Window{.libx11.}
proc XRootWindowOfScreen*(para1: PScreen): Window{.libx11.}
proc XDefaultVisual*(para1: PDisplay, para2: cint): PVisual{.libx11.}
proc XDefaultVisualOfScreen*(para1: PScreen): PVisual{.libx11.}
proc XDefaultGC*(para1: PDisplay, para2: cint): GC{.libx11.}
proc XDefaultGCOfScreen*(para1: PScreen): GC{.libx11.}
proc XBlackPixel*(para1: PDisplay, para2: cint): culong{.libx11.}
proc XWhitePixel*(para1: PDisplay, para2: cint): culong{.libx11.}
proc XAllPlanes*(): culong{.libx11.}
proc XBlackPixelOfScreen*(para1: PScreen): culong{.libx11.}
proc XWhitePixelOfScreen*(para1: PScreen): culong{.libx11.}
proc XNextRequest*(para1: PDisplay): culong{.libx11.}
proc XLastKnownRequestProcessed*(para1: PDisplay): culong{.libx11.}
proc XServerVendor*(para1: PDisplay): cstring{.libx11.}
proc XDisplayString*(para1: PDisplay): cstring{.libx11.}
proc XDefaultColormap*(para1: PDisplay, para2: cint): Colormap{.libx11.}
proc XDefaultColormapOfScreen*(para1: PScreen): Colormap{.libx11.}
proc XDisplayOfScreen*(para1: PScreen): PDisplay{.libx11.}
proc XScreenOfDisplay*(para1: PDisplay, para2: cint): PScreen{.libx11.}
proc XDefaultScreenOfDisplay*(para1: PDisplay): PScreen{.libx11.}
proc XEventMaskOfScreen*(para1: PScreen): clong{.libx11.}
proc XScreenNumberOfScreen*(para1: PScreen): cint{.libx11.}
type
XErrorHandler* = proc (para1: PDisplay, para2: PXErrorEvent): cint{.cdecl.}
{.deprecated: [TXErrorHandler: XErrorHandler].}
proc XSetErrorHandler*(para1: XErrorHandler): XErrorHandler{.libx11.}
type
XIOErrorHandler* = proc (para1: PDisplay): cint{.cdecl.}
{.deprecated: [TXIOErrorHandler: XIOErrorHandler].}
proc XSetIOErrorHandler*(para1: XIOErrorHandler): XIOErrorHandler{.libx11.}
proc XListPixmapFormats*(para1: PDisplay, para2: Pcint): PXPixmapFormatValues{.
libx11.}
proc XListDepths*(para1: PDisplay, para2: cint, para3: Pcint): Pcint{.libx11.}
proc XReconfigureWMWindow*(para1: PDisplay, para2: Window, para3: cint,
para4: cuint, para5: PXWindowChanges): Status{.
libx11.}
proc XGetWMProtocols*(para1: PDisplay, para2: Window, para3: PPAtom,
para4: Pcint): Status{.libx11.}
proc XSetWMProtocols*(para1: PDisplay, para2: Window, para3: PAtom, para4: cint): Status{.
libx11.}
proc XIconifyWindow*(para1: PDisplay, para2: Window, para3: cint): Status{.
libx11.}
proc XWithdrawWindow*(para1: PDisplay, para2: Window, para3: cint): Status{.
libx11.}
proc XGetCommand*(para1: PDisplay, para2: Window, para3: PPPchar, para4: Pcint): Status{.
libx11.}
proc XGetWMColormapWindows*(para1: PDisplay, para2: Window, para3: PPWindow,
para4: Pcint): Status{.libx11.}
proc XSetWMColormapWindows*(para1: PDisplay, para2: Window, para3: PWindow,
para4: cint): Status{.libx11.}
proc XFreeStringList*(para1: PPchar){.libx11.}
proc XSetTransientForHint*(para1: PDisplay, para2: Window, para3: Window): cint{.
libx11.}
proc XActivateScreenSaver*(para1: PDisplay): cint{.libx11.}
proc XAddHost*(para1: PDisplay, para2: PXHostAddress): cint{.libx11.}
proc XAddHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
libx11.}
proc XAddToExtensionList*(para1: PPXExtData, para2: PXExtData): cint{.libx11.}
proc XAddToSaveSet*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XAllocColor*(para1: PDisplay, para2: Colormap, para3: PXColor): Status{.
libx11.}
proc XAllocColorCells*(para1: PDisplay, para2: Colormap, para3: XBool,
para4: Pculong, para5: cuint, para6: Pculong,
para7: cuint): Status{.libx11.}
proc XAllocColorPlanes*(para1: PDisplay, para2: Colormap, para3: XBool,
para4: Pculong, para5: cint, para6: cint, para7: cint,
para8: cint, para9: Pculong, para10: Pculong,
para11: Pculong): Status{.libx11.}
proc XAllocNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: PXColor, para5: PXColor): Status{.libx11.}
proc XAllowEvents*(para1: PDisplay, para2: cint, para3: Time): cint{.libx11.}
proc XAutoRepeatOff*(para1: PDisplay): cint{.libx11.}
proc XAutoRepeatOn*(para1: PDisplay): cint{.libx11.}
proc XBell*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XBitmapBitOrder*(para1: PDisplay): cint{.libx11.}
proc XBitmapPad*(para1: PDisplay): cint{.libx11.}
proc XBitmapUnit*(para1: PDisplay): cint{.libx11.}
proc XCellsOfScreen*(para1: PScreen): cint{.libx11.}
proc XChangeActivePointerGrab*(para1: PDisplay, para2: cuint, para3: Cursor,
para4: Time): cint{.libx11.}
proc XChangeGC*(para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues): cint{.
libx11.}
proc XChangeKeyboardControl*(para1: PDisplay, para2: culong,
para3: PXKeyboardControl): cint{.libx11.}
proc XChangeKeyboardMapping*(para1: PDisplay, para2: cint, para3: cint,
para4: PKeySym, para5: cint): cint{.libx11.}
proc XChangePointerControl*(para1: PDisplay, para2: XBool, para3: XBool,
para4: cint, para5: cint, para6: cint): cint{.libx11.}
proc XChangeProperty*(para1: PDisplay, para2: Window, para3: Atom,
para4: Atom, para5: cint, para6: cint, para7: Pcuchar,
para8: cint): cint{.libx11.}
proc XChangeSaveSet*(para1: PDisplay, para2: Window, para3: cint): cint{.libx11.}
proc XChangeWindowAttributes*(para1: PDisplay, para2: Window, para3: culong,
para4: PXSetWindowAttributes): cint{.libx11.}
proc XCheckIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
para4: XPointer): XBool{.libx11.}
proc XCheckMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): XBool{.
libx11.}
proc XCheckTypedEvent*(para1: PDisplay, para2: cint, para3: PXEvent): XBool{.
libx11.}
proc XCheckTypedWindowEvent*(para1: PDisplay, para2: Window, para3: cint,
para4: PXEvent): XBool{.libx11.}
proc XCheckWindowEvent*(para1: PDisplay, para2: Window, para3: clong,
para4: PXEvent): XBool{.libx11.}
proc XCirculateSubwindows*(para1: PDisplay, para2: Window, para3: cint): cint{.
libx11.}
proc XCirculateSubwindowsDown*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XCirculateSubwindowsUp*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XClearArea*(para1: PDisplay, para2: Window, para3: cint, para4: cint,
para5: cuint, para6: cuint, para7: XBool): cint{.libx11.}
proc XClearWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XCloseDisplay*(para1: PDisplay): cint{.libx11.}
proc XConfigureWindow*(para1: PDisplay, para2: Window, para3: cuint,
para4: PXWindowChanges): cint{.libx11.}
proc XConnectionNumber*(para1: PDisplay): cint{.libx11.}
proc XConvertSelection*(para1: PDisplay, para2: Atom, para3: Atom,
para4: Atom, para5: Window, para6: Time): cint{.
libx11.}
proc XCopyArea*(para1: PDisplay, para2: Drawable, para3: Drawable, para4: GC,
para5: cint, para6: cint, para7: cuint, para8: cuint,
para9: cint, para10: cint): cint{.libx11.}
proc XCopyGC*(para1: PDisplay, para2: GC, para3: culong, para4: GC): cint{.
libx11.}
proc XCopyPlane*(para1: PDisplay, para2: Drawable, para3: Drawable,
para4: GC, para5: cint, para6: cint, para7: cuint,
para8: cuint, para9: cint, para10: cint, para11: culong): cint{.
libx11.}
proc XDefaultDepth*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDefaultDepthOfScreen*(para1: PScreen): cint{.libx11.}
proc XDefaultScreen*(para1: PDisplay): cint{.libx11.}
proc XDefineCursor*(para1: PDisplay, para2: Window, para3: Cursor): cint{.
libx11.}
proc XDeleteProperty*(para1: PDisplay, para2: Window, para3: Atom): cint{.
libx11.}
proc XDestroyWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XDestroySubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XDoesBackingStore*(para1: PScreen): cint{.libx11.}
proc XDoesSaveUnders*(para1: PScreen): XBool{.libx11.}
proc XDisableAccessControl*(para1: PDisplay): cint{.libx11.}
proc XDisplayCells*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDisplayHeight*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDisplayHeightMM*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDisplayKeycodes*(para1: PDisplay, para2: Pcint, para3: Pcint): cint{.
libx11.}
proc XDisplayPlanes*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDisplayWidth*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDisplayWidthMM*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XDrawArc*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
libx11.}
proc XDrawArcs*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc,
para5: cint): cint{.libx11.}
proc XDrawImageString*(para1: PDisplay, para2: Drawable, para3: GC,
para4: cint, para5: cint, para6: cstring, para7: cint): cint{.
libx11.}
proc XDrawImageString16*(para1: PDisplay, para2: Drawable, para3: GC,
para4: cint, para5: cint, para6: PXChar2b, para7: cint): cint{.
libx11.}
proc XDrawLine*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cint, para7: cint): cint{.libx11.}
proc XDrawLines*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint,
para5: cint, para6: cint): cint{.libx11.}
proc XDrawPoint*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint): cint{.libx11.}
proc XDrawPoints*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXPoint,
para5: cint, para6: cint): cint{.libx11.}
proc XDrawRectangle*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cuint, para7: cuint): cint{.libx11.}
proc XDrawRectangles*(para1: PDisplay, para2: Drawable, para3: GC,
para4: PXRectangle, para5: cint): cint{.libx11.}
proc XDrawSegments*(para1: PDisplay, para2: Drawable, para3: GC,
para4: PXSegment, para5: cint): cint{.libx11.}
proc XDrawString*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cstring, para7: cint): cint{.libx11.}
proc XDrawString16*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXChar2b, para7: cint): cint{.libx11.}
proc XDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXTextItem, para7: cint): cint{.libx11.}
proc XDrawText16*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXTextItem16, para7: cint): cint{.libx11.}
proc XEnableAccessControl*(para1: PDisplay): cint{.libx11.}
proc XEventsQueued*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XFetchName*(para1: PDisplay, para2: Window, para3: PPchar): Status{.
libx11.}
proc XFillArc*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
libx11.}
proc XFillArcs*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXArc,
para5: cint): cint{.libx11.}
proc XFillPolygon*(para1: PDisplay, para2: Drawable, para3: GC,
para4: PXPoint, para5: cint, para6: cint, para7: cint): cint{.
libx11.}
proc XFillRectangle*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: cuint, para7: cuint): cint{.libx11.}
proc XFillRectangles*(para1: PDisplay, para2: Drawable, para3: GC,
para4: PXRectangle, para5: cint): cint{.libx11.}
proc XFlush*(para1: PDisplay): cint{.libx11.}
proc XForceScreenSaver*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XFree*(para1: pointer): cint{.libx11.}
proc XFreeColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
proc XFreeColors*(para1: PDisplay, para2: Colormap, para3: Pculong,
para4: cint, para5: culong): cint{.libx11.}
proc XFreeCursor*(para1: PDisplay, para2: Cursor): cint{.libx11.}
proc XFreeExtensionList*(para1: PPchar): cint{.libx11.}
proc XFreeFont*(para1: PDisplay, para2: PXFontStruct): cint{.libx11.}
proc XFreeFontInfo*(para1: PPchar, para2: PXFontStruct, para3: cint): cint{.
libx11.}
proc XFreeFontNames*(para1: PPchar): cint{.libx11.}
proc XFreeFontPath*(para1: PPchar): cint{.libx11.}
proc XFreeGC*(para1: PDisplay, para2: GC): cint{.libx11.}
proc XFreeModifiermap*(para1: PXModifierKeymap): cint{.libx11.}
proc XFreePixmap*(para1: PDisplay, para2: Pixmap): cint{.libx11.}
proc XGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring,
para5: cuint, para6: cuint, para7: cuint, para8: cint,
para9: cint, para10: Pcint, para11: Pcint, para12: Pcint,
para13: Pcint): cint{.libx11.}
proc XGetErrorDatabaseText*(para1: PDisplay, para2: cstring, para3: cstring,
para4: cstring, para5: cstring, para6: cint): cint{.
libx11.}
proc XGetErrorText*(para1: PDisplay, para2: cint, para3: cstring, para4: cint): cint{.
libx11.}
proc XGetFontProperty*(para1: PXFontStruct, para2: Atom, para3: Pculong): XBool{.
libx11.}
proc XGetGCValues*(para1: PDisplay, para2: GC, para3: culong, para4: PXGCValues): Status{.
libx11.}
proc XGetGeometry*(para1: PDisplay, para2: Drawable, para3: PWindow,
para4: Pcint, para5: Pcint, para6: Pcuint, para7: Pcuint,
para8: Pcuint, para9: Pcuint): Status{.libx11.}
proc XGetIconName*(para1: PDisplay, para2: Window, para3: PPchar): Status{.
libx11.}
proc XGetInputFocus*(para1: PDisplay, para2: PWindow, para3: Pcint): cint{.
libx11.}
proc XGetKeyboardControl*(para1: PDisplay, para2: PXKeyboardState): cint{.libx11.}
proc XGetPointerControl*(para1: PDisplay, para2: Pcint, para3: Pcint,
para4: Pcint): cint{.libx11.}
proc XGetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
libx11.}
proc XGetScreenSaver*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: Pcint,
para5: Pcint): cint{.libx11.}
proc XGetTransientForHint*(para1: PDisplay, para2: Window, para3: PWindow): Status{.
libx11.}
proc XGetWindowProperty*(para1: PDisplay, para2: Window, para3: Atom,
para4: clong, para5: clong, para6: XBool, para7: Atom,
para8: PAtom, para9: Pcint, para10: Pculong,
para11: Pculong, para12: PPcuchar): cint{.libx11.}
proc XGetWindowAttributes*(para1: PDisplay, para2: Window,
para3: PXWindowAttributes): Status{.libx11.}
proc XGrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: Window,
para5: XBool, para6: cuint, para7: cint, para8: cint,
para9: Window, para10: Cursor): cint{.libx11.}
proc XGrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: Window,
para5: XBool, para6: cint, para7: cint): cint{.libx11.}
proc XGrabKeyboard*(para1: PDisplay, para2: Window, para3: XBool, para4: cint,
para5: cint, para6: Time): cint{.libx11.}
proc XGrabPointer*(para1: PDisplay, para2: Window, para3: XBool, para4: cuint,
para5: cint, para6: cint, para7: Window, para8: Cursor,
para9: Time): cint{.libx11.}
proc XGrabServer*(para1: PDisplay): cint{.libx11.}
proc XHeightMMOfScreen*(para1: PScreen): cint{.libx11.}
proc XHeightOfScreen*(para1: PScreen): cint{.libx11.}
proc XIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
para4: XPointer): cint{.libx11.}
proc XImageByteOrder*(para1: PDisplay): cint{.libx11.}
proc XInstallColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
proc XKeysymToKeycode*(para1: PDisplay, para2: KeySym): KeyCode{.libx11.}
proc XKillClient*(para1: PDisplay, para2: XID): cint{.libx11.}
proc XLookupColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: PXColor, para5: PXColor): Status{.libx11.}
proc XLowerWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XMapRaised*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XMapSubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XMapWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): cint{.libx11.}
proc XMaxCmapsOfScreen*(para1: PScreen): cint{.libx11.}
proc XMinCmapsOfScreen*(para1: PScreen): cint{.libx11.}
proc XMoveResizeWindow*(para1: PDisplay, para2: Window, para3: cint,
para4: cint, para5: cuint, para6: cuint): cint{.libx11.}
proc XMoveWindow*(para1: PDisplay, para2: Window, para3: cint, para4: cint): cint{.
libx11.}
proc XNextEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
proc XNoOp*(para1: PDisplay): cint{.libx11.}
proc XParseColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: PXColor): Status{.libx11.}
proc XParseGeometry*(para1: cstring, para2: Pcint, para3: Pcint, para4: Pcuint,
para5: Pcuint): cint{.libx11.}
proc XPeekEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
proc XPeekIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent,
para4: XPointer): cint{.libx11.}
proc XPending*(para1: PDisplay): cint{.libx11.}
proc XPlanesOfScreen*(para1: PScreen): cint{.libx11.}
proc XProtocolRevision*(para1: PDisplay): cint{.libx11.}
proc XProtocolVersion*(para1: PDisplay): cint{.libx11.}
proc XPutBackEvent*(para1: PDisplay, para2: PXEvent): cint{.libx11.}
proc XPutImage*(para1: PDisplay, para2: Drawable, para3: GC, para4: PXImage,
para5: cint, para6: cint, para7: cint, para8: cint,
para9: cuint, para10: cuint): cint{.libx11.}
proc XQLength*(para1: PDisplay): cint{.libx11.}
proc XQueryBestCursor*(para1: PDisplay, para2: Drawable, para3: cuint,
para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
libx11.}
proc XQueryBestSize*(para1: PDisplay, para2: cint, para3: Drawable,
para4: cuint, para5: cuint, para6: Pcuint, para7: Pcuint): Status{.
libx11.}
proc XQueryBestStipple*(para1: PDisplay, para2: Drawable, para3: cuint,
para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
libx11.}
proc XQueryBestTile*(para1: PDisplay, para2: Drawable, para3: cuint,
para4: cuint, para5: Pcuint, para6: Pcuint): Status{.
libx11.}
proc XQueryColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint{.
libx11.}
proc XQueryColors*(para1: PDisplay, para2: Colormap, para3: PXColor,
para4: cint): cint{.libx11.}
proc XQueryExtension*(para1: PDisplay, para2: cstring, para3: Pcint,
para4: Pcint, para5: Pcint): XBool{.libx11.}
#?
proc XQueryKeymap*(para1: PDisplay, para2: chararr32): cint{.libx11.}
proc XQueryPointer*(para1: PDisplay, para2: Window, para3: PWindow,
para4: PWindow, para5: Pcint, para6: Pcint, para7: Pcint,
para8: Pcint, para9: Pcuint): XBool{.libx11.}
proc XQueryTextExtents*(para1: PDisplay, para2: XID, para3: cstring,
para4: cint, para5: Pcint, para6: Pcint, para7: Pcint,
para8: PXCharStruct): cint{.libx11.}
proc XQueryTextExtents16*(para1: PDisplay, para2: XID, para3: PXChar2b,
para4: cint, para5: Pcint, para6: Pcint, para7: Pcint,
para8: PXCharStruct): cint{.libx11.}
proc XQueryTree*(para1: PDisplay, para2: Window, para3: PWindow,
para4: PWindow, para5: PPWindow, para6: Pcuint): Status{.
libx11.}
proc XRaiseWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XReadBitmapFile*(para1: PDisplay, para2: Drawable, para3: cstring,
para4: Pcuint, para5: Pcuint, para6: PPixmap,
para7: Pcint, para8: Pcint): cint{.libx11.}
proc XReadBitmapFileData*(para1: cstring, para2: Pcuint, para3: Pcuint,
para4: PPcuchar, para5: Pcint, para6: Pcint): cint{.
libx11.}
proc XRebindKeysym*(para1: PDisplay, para2: KeySym, para3: PKeySym,
para4: cint, para5: Pcuchar, para6: cint): cint{.libx11.}
proc XRecolorCursor*(para1: PDisplay, para2: Cursor, para3: PXColor,
para4: PXColor): cint{.libx11.}
proc XRefreshKeyboardMapping*(para1: PXMappingEvent): cint{.libx11.}
proc XRemoveFromSaveSet*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XRemoveHost*(para1: PDisplay, para2: PXHostAddress): cint{.libx11.}
proc XRemoveHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
libx11.}
proc XReparentWindow*(para1: PDisplay, para2: Window, para3: Window,
para4: cint, para5: cint): cint{.libx11.}
proc XResetScreenSaver*(para1: PDisplay): cint{.libx11.}
proc XResizeWindow*(para1: PDisplay, para2: Window, para3: cuint, para4: cuint): cint{.
libx11.}
proc XRestackWindows*(para1: PDisplay, para2: PWindow, para3: cint): cint{.
libx11.}
proc XRotateBuffers*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XRotateWindowProperties*(para1: PDisplay, para2: Window, para3: PAtom,
para4: cint, para5: cint): cint{.libx11.}
proc XScreenCount*(para1: PDisplay): cint{.libx11.}
proc XSelectInput*(para1: PDisplay, para2: Window, para3: clong): cint{.libx11.}
proc XSendEvent*(para1: PDisplay, para2: Window, para3: XBool, para4: clong,
para5: PXEvent): Status{.libx11.}
proc XSetAccessControl*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XSetArcMode*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
proc XSetBackground*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
proc XSetClipMask*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
proc XSetClipOrigin*(para1: PDisplay, para2: GC, para3: cint, para4: cint): cint{.
libx11.}
proc XSetClipRectangles*(para1: PDisplay, para2: GC, para3: cint, para4: cint,
para5: PXRectangle, para6: cint, para7: cint): cint{.
libx11.}
proc XSetCloseDownMode*(para1: PDisplay, para2: cint): cint{.libx11.}
proc XSetCommand*(para1: PDisplay, para2: Window, para3: PPchar, para4: cint): cint{.
libx11.}
proc XSetDashes*(para1: PDisplay, para2: GC, para3: cint, para4: cstring,
para5: cint): cint{.libx11.}
proc XSetFillRule*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
proc XSetFillStyle*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
proc XSetFont*(para1: PDisplay, para2: GC, para3: Font): cint{.libx11.}
proc XSetFontPath*(para1: PDisplay, para2: PPchar, para3: cint): cint{.libx11.}
proc XSetForeground*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
proc XSetFunction*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
proc XSetGraphicsExposures*(para1: PDisplay, para2: GC, para3: XBool): cint{.
libx11.}
proc XSetIconName*(para1: PDisplay, para2: Window, para3: cstring): cint{.
libx11.}
proc XSetInputFocus*(para1: PDisplay, para2: Window, para3: cint, para4: Time): cint{.
libx11.}
proc XSetLineAttributes*(para1: PDisplay, para2: GC, para3: cuint, para4: cint,
para5: cint, para6: cint): cint{.libx11.}
proc XSetModifierMapping*(para1: PDisplay, para2: PXModifierKeymap): cint{.
libx11.}
proc XSetPlaneMask*(para1: PDisplay, para2: GC, para3: culong): cint{.libx11.}
proc XSetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
libx11.}
proc XSetScreenSaver*(para1: PDisplay, para2: cint, para3: cint, para4: cint,
para5: cint): cint{.libx11.}
proc XSetSelectionOwner*(para1: PDisplay, para2: Atom, para3: Window,
para4: Time): cint{.libx11.}
proc XSetState*(para1: PDisplay, para2: GC, para3: culong, para4: culong,
para5: cint, para6: culong): cint{.libx11.}
proc XSetStipple*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
proc XSetSubwindowMode*(para1: PDisplay, para2: GC, para3: cint): cint{.libx11.}
proc XSetTSOrigin*(para1: PDisplay, para2: GC, para3: cint, para4: cint): cint{.
libx11.}
proc XSetTile*(para1: PDisplay, para2: GC, para3: Pixmap): cint{.libx11.}
proc XSetWindowBackground*(para1: PDisplay, para2: Window, para3: culong): cint{.
libx11.}
proc XSetWindowBackgroundPixmap*(para1: PDisplay, para2: Window, para3: Pixmap): cint{.
libx11.}
proc XSetWindowBorder*(para1: PDisplay, para2: Window, para3: culong): cint{.
libx11.}
proc XSetWindowBorderPixmap*(para1: PDisplay, para2: Window, para3: Pixmap): cint{.
libx11.}
proc XSetWindowBorderWidth*(para1: PDisplay, para2: Window, para3: cuint): cint{.
libx11.}
proc XSetWindowColormap*(para1: PDisplay, para2: Window, para3: Colormap): cint{.
libx11.}
proc XStoreBuffer*(para1: PDisplay, para2: cstring, para3: cint, para4: cint): cint{.
libx11.}
proc XStoreBytes*(para1: PDisplay, para2: cstring, para3: cint): cint{.libx11.}
proc XStoreColor*(para1: PDisplay, para2: Colormap, para3: PXColor): cint{.
libx11.}
proc XStoreColors*(para1: PDisplay, para2: Colormap, para3: PXColor,
para4: cint): cint{.libx11.}
proc XStoreName*(para1: PDisplay, para2: Window, para3: cstring): cint{.libx11.}
proc XStoreNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: culong, para5: cint): cint{.libx11.}
proc XSync*(para1: PDisplay, para2: XBool): cint{.libx11.}
proc XTextExtents*(para1: PXFontStruct, para2: cstring, para3: cint,
para4: Pcint, para5: Pcint, para6: Pcint, para7: PXCharStruct): cint{.
libx11.}
proc XTextExtents16*(para1: PXFontStruct, para2: PXChar2b, para3: cint,
para4: Pcint, para5: Pcint, para6: Pcint,
para7: PXCharStruct): cint{.libx11.}
proc XTextWidth*(para1: PXFontStruct, para2: cstring, para3: cint): cint{.libx11.}
proc XTextWidth16*(para1: PXFontStruct, para2: PXChar2b, para3: cint): cint{.
libx11.}
proc XTranslateCoordinates*(para1: PDisplay, para2: Window, para3: Window,
para4: cint, para5: cint, para6: Pcint,
para7: Pcint, para8: PWindow): XBool{.libx11.}
proc XUndefineCursor*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XUngrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: Window): cint{.
libx11.}
proc XUngrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: Window): cint{.
libx11.}
proc XUngrabKeyboard*(para1: PDisplay, para2: Time): cint{.libx11.}
proc XUngrabPointer*(para1: PDisplay, para2: Time): cint{.libx11.}
proc XUngrabServer*(para1: PDisplay): cint{.libx11.}
proc XUninstallColormap*(para1: PDisplay, para2: Colormap): cint{.libx11.}
proc XUnloadFont*(para1: PDisplay, para2: Font): cint{.libx11.}
proc XUnmapSubwindows*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XUnmapWindow*(para1: PDisplay, para2: Window): cint{.libx11.}
proc XVendorRelease*(para1: PDisplay): cint{.libx11.}
proc XWarpPointer*(para1: PDisplay, para2: Window, para3: Window, para4: cint,
para5: cint, para6: cuint, para7: cuint, para8: cint,
para9: cint): cint{.libx11.}
proc XWidthMMOfScreen*(para1: PScreen): cint{.libx11.}
proc XWidthOfScreen*(para1: PScreen): cint{.libx11.}
proc XWindowEvent*(para1: PDisplay, para2: Window, para3: clong, para4: PXEvent): cint{.
libx11.}
proc XWriteBitmapFile*(para1: PDisplay, para2: cstring, para3: Pixmap,
para4: cuint, para5: cuint, para6: cint, para7: cint): cint{.
libx11.}
proc XSupportsLocale*(): XBool{.libx11.}
proc XSetLocaleModifiers*(para1: cstring): cstring{.libx11.}
proc XOpenOM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring,
para4: cstring): XOM{.libx11.}
proc XCloseOM*(para1: XOM): Status{.libx11.}
proc XSetOMValues*(para1: XOM): cstring{.varargs, libx11.}
proc XGetOMValues*(para1: XOM): cstring{.varargs, libx11.}
proc XDisplayOfOM*(para1: XOM): PDisplay{.libx11.}
proc XLocaleOfOM*(para1: XOM): cstring{.libx11.}
proc XCreateOC*(para1: XOM): XOC{.varargs, libx11.}
proc XDestroyOC*(para1: XOC){.libx11.}
proc XOMOfOC*(para1: XOC): XOM{.libx11.}
proc XSetOCValues*(para1: XOC): cstring{.varargs, libx11.}
proc XGetOCValues*(para1: XOC): cstring{.varargs, libx11.}
proc XCreateFontSet*(para1: PDisplay, para2: cstring, para3: PPPchar,
para4: Pcint, para5: PPchar): XFontSet{.libx11.}
proc XFreeFontSet*(para1: PDisplay, para2: XFontSet){.libx11.}
proc XFontsOfFontSet*(para1: XFontSet, para2: PPPXFontStruct, para3: PPPchar): cint{.
libx11.}
proc XBaseFontNameListOfFontSet*(para1: XFontSet): cstring{.libx11.}
proc XLocaleOfFontSet*(para1: XFontSet): cstring{.libx11.}
proc XContextDependentDrawing*(para1: XFontSet): XBool{.libx11.}
proc XDirectionalDependentDrawing*(para1: XFontSet): XBool{.libx11.}
proc XContextualDrawing*(para1: XFontSet): XBool{.libx11.}
proc XExtentsOfFontSet*(para1: XFontSet): PXFontSetExtents{.libx11.}
proc XmbTextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint{.
libx11.}
proc XwcTextEscapement*(para1: XFontSet, para2: PWideChar, para3: cint): cint{.
libx11.}
proc Xutf8TextEscapement*(para1: XFontSet, para2: cstring, para3: cint): cint{.
libx11.}
proc XmbTextExtents*(para1: XFontSet, para2: cstring, para3: cint,
para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
proc XwcTextExtents*(para1: XFontSet, para2: PWideChar, para3: cint,
para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
proc Xutf8TextExtents*(para1: XFontSet, para2: cstring, para3: cint,
para4: PXRectangle, para5: PXRectangle): cint{.libx11.}
proc XmbTextPerCharExtents*(para1: XFontSet, para2: cstring, para3: cint,
para4: PXRectangle, para5: PXRectangle, para6: cint,
para7: Pcint, para8: PXRectangle, para9: PXRectangle): Status{.
libx11.}
proc XwcTextPerCharExtents*(para1: XFontSet, para2: PWideChar, para3: cint,
para4: PXRectangle, para5: PXRectangle, para6: cint,
para7: Pcint, para8: PXRectangle, para9: PXRectangle): Status{.
libx11.}
proc Xutf8TextPerCharExtents*(para1: XFontSet, para2: cstring, para3: cint,
para4: PXRectangle, para5: PXRectangle,
para6: cint, para7: Pcint, para8: PXRectangle,
para9: PXRectangle): Status{.libx11.}
proc XmbDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXmbTextItem, para7: cint){.libx11.}
proc XwcDrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXwcTextItem, para7: cint){.libx11.}
proc Xutf8DrawText*(para1: PDisplay, para2: Drawable, para3: GC, para4: cint,
para5: cint, para6: PXmbTextItem, para7: cint){.libx11.}
proc XmbDrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: cstring,
para8: cint){.libx11.}
proc XwcDrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: PWideChar,
para8: cint){.libx11.}
proc Xutf8DrawString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: cstring,
para8: cint){.libx11.}
proc XmbDrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: cstring,
para8: cint){.libx11.}
proc XwcDrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: PWideChar,
para8: cint){.libx11.}
proc Xutf8DrawImageString*(para1: PDisplay, para2: Drawable, para3: XFontSet,
para4: GC, para5: cint, para6: cint, para7: cstring,
para8: cint){.libx11.}
proc XOpenIM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring,
para4: cstring): XIM{.libx11.}
proc XCloseIM*(para1: XIM): Status{.libx11.}
proc XGetIMValues*(para1: XIM): cstring{.varargs, libx11.}
proc XSetIMValues*(para1: XIM): cstring{.varargs, libx11.}
proc XDisplayOfIM*(para1: XIM): PDisplay{.libx11.}
proc XLocaleOfIM*(para1: XIM): cstring{.libx11.}
proc XCreateIC*(para1: XIM): XIC{.varargs, libx11.}
proc XDestroyIC*(para1: XIC){.libx11.}
proc XSetICFocus*(para1: XIC){.libx11.}
proc XUnsetICFocus*(para1: XIC){.libx11.}
proc XwcResetIC*(para1: XIC): PWideChar{.libx11.}
proc XmbResetIC*(para1: XIC): cstring{.libx11.}
proc Xutf8ResetIC*(para1: XIC): cstring{.libx11.}
proc XSetICValues*(para1: XIC): cstring{.varargs, libx11.}
proc XGetICValues*(para1: XIC): cstring{.varargs, libx11.}
proc XIMOfIC*(para1: XIC): XIM{.libx11.}
proc XFilterEvent*(para1: PXEvent, para2: Window): XBool{.libx11.}
proc XmbLookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: cstring,
para4: cint, para5: PKeySym, para6: PStatus): cint{.libx11.}
proc XwcLookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: PWideChar,
para4: cint, para5: PKeySym, para6: PStatus): cint{.libx11.}
proc Xutf8LookupString*(para1: XIC, para2: PXKeyPressedEvent, para3: cstring,
para4: cint, para5: PKeySym, para6: PStatus): cint{.
libx11.}
proc XVaCreateNestedList*(unused: cint): XVaNestedList{.varargs, libx11.}
proc XRegisterIMInstantiateCallback*(para1: PDisplay, para2: PXrmHashBucketRec,
para3: cstring, para4: cstring,
para5: XIDProc, para6: XPointer): XBool{.
libx11.}
proc XUnregisterIMInstantiateCallback*(para1: PDisplay,
para2: PXrmHashBucketRec, para3: cstring,
para4: cstring, para5: XIDProc,
para6: XPointer): XBool{.libx11.}
type
XConnectionWatchProc* = proc (para1: PDisplay, para2: XPointer, para3: cint,
para4: XBool, para5: PXPointer){.cdecl.}
{.deprecated: [TXConnectionWatchProc: XConnectionWatchProc].}
proc XInternalConnectionNumbers*(para1: PDisplay, para2: PPcint, para3: Pcint): Status{.
libx11.}
proc XProcessInternalConnection*(para1: PDisplay, para2: cint){.libx11.}
proc XAddConnectionWatch*(para1: PDisplay, para2: XConnectionWatchProc,
para3: XPointer): Status{.libx11.}
proc XRemoveConnectionWatch*(para1: PDisplay, para2: XConnectionWatchProc,
para3: XPointer){.libx11.}
proc XSetAuthorization*(para1: cstring, para2: cint, para3: cstring, para4: cint){.
libx11.}
#
# _Xmbtowc?
# _Xwctomb?
#
proc XGetEventData*(para1: PDisplay, para2: PXGenericEventCookie): XBool {.libX11.}
proc XFreeEventData*(para1: PDisplay, para2: PXGenericEventCookie) {.libX11.}
#when defined(MACROS):
proc ConnectionNumber*(dpy: PDisplay): cint
proc RootWindow*(dpy: PDisplay, scr: cint): Window
proc DefaultScreen*(dpy: PDisplay): cint
proc DefaultRootWindow*(dpy: PDisplay): Window
proc DefaultVisual*(dpy: PDisplay, scr: cint): PVisual
proc DefaultGC*(dpy: PDisplay, scr: cint): GC
proc BlackPixel*(dpy: PDisplay, scr: cint): culong
proc WhitePixel*(dpy: PDisplay, scr: cint): culong
proc QLength*(dpy: PDisplay): cint
proc DisplayWidth*(dpy: PDisplay, scr: cint): cint
proc DisplayHeight*(dpy: PDisplay, scr: cint): cint
proc DisplayWidthMM*(dpy: PDisplay, scr: cint): cint
proc DisplayHeightMM*(dpy: PDisplay, scr: cint): cint
proc DisplayPlanes*(dpy: PDisplay, scr: cint): cint
proc DisplayCells*(dpy: PDisplay, scr: cint): cint
proc ScreenCount*(dpy: PDisplay): cint
proc ServerVendor*(dpy: PDisplay): cstring
proc ProtocolVersion*(dpy: PDisplay): cint
proc ProtocolRevision*(dpy: PDisplay): cint
proc VendorRelease*(dpy: PDisplay): cint
proc DisplayString*(dpy: PDisplay): cstring
proc DefaultDepth*(dpy: PDisplay, scr: cint): cint
proc DefaultColormap*(dpy: PDisplay, scr: cint): Colormap
proc BitmapUnit*(dpy: PDisplay): cint
proc BitmapBitOrder*(dpy: PDisplay): cint
proc BitmapPad*(dpy: PDisplay): cint
proc ImageByteOrder*(dpy: PDisplay): cint
proc NextRequest*(dpy: PDisplay): culong
proc LastKnownRequestProcessed*(dpy: PDisplay): culong
proc ScreenOfDisplay*(dpy: PDisplay, scr: cint): PScreen
proc DefaultScreenOfDisplay*(dpy: PDisplay): PScreen
proc DisplayOfScreen*(s: PScreen): PDisplay
proc RootWindowOfScreen*(s: PScreen): Window
proc BlackPixelOfScreen*(s: PScreen): culong
proc WhitePixelOfScreen*(s: PScreen): culong
proc DefaultColormapOfScreen*(s: PScreen): Colormap
proc DefaultDepthOfScreen*(s: PScreen): cint
proc DefaultGCOfScreen*(s: PScreen): GC
proc DefaultVisualOfScreen*(s: PScreen): PVisual
proc WidthOfScreen*(s: PScreen): cint
proc HeightOfScreen*(s: PScreen): cint
proc WidthMMOfScreen*(s: PScreen): cint
proc HeightMMOfScreen*(s: PScreen): cint
proc PlanesOfScreen*(s: PScreen): cint
proc CellsOfScreen*(s: PScreen): cint
proc MinCmapsOfScreen*(s: PScreen): cint
proc MaxCmapsOfScreen*(s: PScreen): cint
proc DoesSaveUnders*(s: PScreen): XBool
proc DoesBackingStore*(s: PScreen): cint
proc EventMaskOfScreen*(s: PScreen): clong
proc XAllocID*(dpy: PDisplay): XID
# implementation
#when defined(MACROS):
template privDisp : untyped = cast[PXPrivDisplay](dpy)
proc ConnectionNumber(dpy: PDisplay): cint =
privDisp.fd
proc RootWindow(dpy: PDisplay, scr: cint): Window =
ScreenOfDisplay(dpy, scr).root
proc DefaultScreen(dpy: PDisplay): cint =
privDisp.default_screen
proc DefaultRootWindow(dpy: PDisplay): Window =
ScreenOfDisplay(dpy, DefaultScreen(dpy)).root
proc DefaultVisual(dpy: PDisplay, scr: cint): PVisual =
ScreenOfDisplay(dpy, scr).root_visual
proc DefaultGC(dpy: PDisplay, scr: cint): GC =
ScreenOfDisplay(dpy, scr).default_gc
proc BlackPixel(dpy: PDisplay, scr: cint): culong =
ScreenOfDisplay(dpy, scr).black_pixel
proc WhitePixel(dpy: PDisplay, scr: cint): culong =
ScreenOfDisplay(dpy, scr).white_pixel
proc QLength(dpy: PDisplay): cint =
privDisp.qlen
proc DisplayWidth(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).width
proc DisplayHeight(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).height
proc DisplayWidthMM(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).mwidth
proc DisplayHeightMM(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).mheight
proc DisplayPlanes(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).root_depth
proc DisplayCells(dpy: PDisplay, scr: cint): cint =
DefaultVisual(dpy, scr).map_entries
proc ScreenCount(dpy: PDisplay): cint =
privDisp.nscreens
proc ServerVendor(dpy: PDisplay): cstring =
privDisp.vendor
proc ProtocolVersion(dpy: PDisplay): cint =
privDisp.proto_major_version
proc ProtocolRevision(dpy: PDisplay): cint =
privDisp.proto_minor_version
proc VendorRelease(dpy: PDisplay): cint =
privDisp.release
proc DisplayString(dpy: PDisplay): cstring =
privDisp.display_name
proc DefaultDepth(dpy: PDisplay, scr: cint): cint =
ScreenOfDisplay(dpy, scr).root_depth
proc DefaultColormap(dpy: PDisplay, scr: cint): Colormap =
ScreenOfDisplay(dpy, scr).cmap
proc BitmapUnit(dpy: PDisplay): cint =
privDisp.bitmap_unit
proc BitmapBitOrder(dpy: PDisplay): cint =
privDisp.bitmap_bit_order
proc BitmapPad(dpy: PDisplay): cint =
privDisp.bitmap_pad
proc ImageByteOrder(dpy: PDisplay): cint =
privDisp.byte_order
proc NextRequest(dpy: PDisplay): culong =
privDisp.request + 1.culong
proc LastKnownRequestProcessed(dpy: PDisplay): culong =
privDisp.last_request_read
# from fowltek/pointer_arithm, required for ScreenOfDisplay()
proc offset[A] (some: ptr A; b: int): ptr A =
cast[ptr A](cast[int](some) + (b * sizeof(A)))
proc ScreenOfDisplay(dpy: PDisplay, scr: cint): PScreen =
#addr(((privDisp.screens)[scr]))
privDisp.screens.offset(scr.int)
proc DefaultScreenOfDisplay(dpy: PDisplay): PScreen =
ScreenOfDisplay(dpy, DefaultScreen(dpy))
proc DisplayOfScreen(s: PScreen): PDisplay =
s.display
proc RootWindowOfScreen(s: PScreen): Window =
s.root
proc BlackPixelOfScreen(s: PScreen): culong =
s.black_pixel
proc WhitePixelOfScreen(s: PScreen): culong =
s.white_pixel
proc DefaultColormapOfScreen(s: PScreen): Colormap =
s.cmap
proc DefaultDepthOfScreen(s: PScreen): cint =
s.root_depth
proc DefaultGCOfScreen(s: PScreen): GC =
s.default_gc
proc DefaultVisualOfScreen(s: PScreen): PVisual =
s.root_visual
proc WidthOfScreen(s: PScreen): cint =
s.width
proc HeightOfScreen(s: PScreen): cint =
s.height
proc WidthMMOfScreen(s: PScreen): cint =
s.mwidth
proc HeightMMOfScreen(s: PScreen): cint =
s.mheight
proc PlanesOfScreen(s: PScreen): cint =
s.root_depth
proc CellsOfScreen(s: PScreen): cint =
DefaultVisualOfScreen(s).map_entries
proc MinCmapsOfScreen(s: PScreen): cint =
s.min_maps
proc MaxCmapsOfScreen(s: PScreen): cint =
s.max_maps
proc DoesSaveUnders(s: PScreen): XBool =
s.save_unders
proc DoesBackingStore(s: PScreen): cint =
s.backing_store
proc EventMaskOfScreen(s: PScreen): clong =
s.root_input_mask
proc XAllocID(dpy: PDisplay): XID =
privDisp.resource_alloc(dpy)
import
x, xlib, xkb
#, bitops
include "x11pragma.nim"
type
PXkbAnyEvent* = ptr XkbAnyEvent
XkbAnyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds;
xkb_type*: int16 # XKB event minor code
device*: int16 # device ID
{.deprecated: [TXkbAnyEvent: XkbAnyEvent].}
type
PXkbNewKeyboardNotifyEvent* = ptr XkbNewKeyboardNotifyEvent
XkbNewKeyboardNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbNewKeyboardNotify
device*: int16 # device ID
old_device*: int16 # device ID of previous keyboard
min_key_code*: int16 # minimum key code
max_key_code*: int16 # maximum key code
old_min_key_code*: int16 # min key code of previous kbd
old_max_key_code*: int16 # max key code of previous kbd
changed*: int16 # changed aspects of the keyboard
req_major*: int8 # major and minor opcode of req
req_minor*: int8 # that caused change, if applicable
{.deprecated: [TXkbNewKeyboardNotifyEvent: XkbNewKeyboardNotifyEvent].}
type
PXkbMapNotifyEvent* = ptr XkbMapNotifyEvent
XkbMapNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbMapNotify
device*: int16 # device ID
changed*: int16 # fields which have been changed
flags*: int16 # reserved
first_type*: int16 # first changed key type
num_types*: int16 # number of changed key types
min_key_code*: KeyCode
max_key_code*: KeyCode
first_key_sym*: KeyCode
first_key_act*: KeyCode
first_key_behavior*: KeyCode
first_key_explicit*: KeyCode
first_modmap_key*: KeyCode
first_vmodmap_key*: KeyCode
num_key_syms*: int16
num_key_acts*: int16
num_key_behaviors*: int16
num_key_explicit*: int16
num_modmap_keys*: int16
num_vmodmap_keys*: int16
vmods*: int16 # mask of changed virtual mods
{.deprecated: [TXkbMapNotifyEvent: XkbMapNotifyEvent].}
type
PXkbStateNotifyEvent* = ptr XkbStateNotifyEvent
XkbStateNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbStateNotify
device*: int16 # device ID
changed*: int16 # mask of changed state components
group*: int16 # keyboard group
base_group*: int16 # base keyboard group
latched_group*: int16 # latched keyboard group
locked_group*: int16 # locked keyboard group
mods*: int16 # modifier state
base_mods*: int16 # base modifier state
latched_mods*: int16 # latched modifiers
locked_mods*: int16 # locked modifiers
compat_state*: int16 # compatibility state
grab_mods*: int8 # mods used for grabs
compat_grab_mods*: int8 # grab mods for non-XKB clients
lookup_mods*: int8 # mods sent to clients
compat_lookup_mods*: int8 # mods sent to non-XKB clients
ptr_buttons*: int16 # pointer button state
keycode*: KeyCode # keycode that caused the change
event_type*: int8 # KeyPress or KeyRelease
req_major*: int8 # Major opcode of request
req_minor*: int8 # Minor opcode of request
{.deprecated: [TXkbStateNotifyEvent: XkbStateNotifyEvent].}
type
PXkbControlsNotifyEvent* = ptr XkbControlsNotifyEvent
XkbControlsNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbControlsNotify
device*: int16 # device ID
changed_ctrls*: int16 # controls with changed sub-values
enabled_ctrls*: int16 # controls currently enabled
enabled_ctrl_changes*: int16 # controls just {en,dis}abled
num_groups*: int16 # total groups on keyboard
keycode*: KeyCode # key that caused change or 0
event_type*: int8 # type of event that caused change
req_major*: int8 # if keycode==0, major and minor
req_minor*: int8 # opcode of req that caused change
{.deprecated: [TXkbControlsNotifyEvent: XkbControlsNotifyEvent].}
type
PXkbIndicatorNotifyEvent* = ptr XkbIndicatorNotifyEvent
XkbIndicatorNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbIndicatorNotify
device*: int16 # device
changed*: int16 # indicators with new state or map
state*: int16 # current state of all indicators
{.deprecated: [TXkbIndicatorNotifyEvent: XkbIndicatorNotifyEvent].}
type
PXkbNamesNotifyEvent* = ptr XkbNamesNotifyEvent
XkbNamesNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbNamesNotify
device*: int16 # device ID
changed*: int32 # names that have changed
first_type*: int16 # first key type with new name
num_types*: int16 # number of key types with new names
first_lvl*: int16 # first key type new new level names
num_lvls*: int16 # # of key types w/new level names
num_aliases*: int16 # total number of key aliases
num_radio_groups*: int16 # total number of radio groups
changed_vmods*: int16 # virtual modifiers with new names
changed_groups*: int16 # groups with new names
changed_indicators*: int16 # indicators with new names
first_key*: int16 # first key with new name
num_keys*: int16 # number of keys with new names
{.deprecated: [TXkbNamesNotifyEvent: XkbNamesNotifyEvent].}
type
PXkbCompatMapNotifyEvent* = ptr XkbCompatMapNotifyEvent
XkbCompatMapNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbCompatMapNotify
device*: int16 # device ID
changed_groups*: int16 # groups with new compat maps
first_si*: int16 # first new symbol interp
num_si*: int16 # number of new symbol interps
num_total_si*: int16 # total # of symbol interps
{.deprecated: [TXkbCompatMapNotifyEvent: XkbCompatMapNotifyEvent].}
type
PXkbBellNotifyEvent* = ptr XkbBellNotifyEvent
XkbBellNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbBellNotify
device*: int16 # device ID
percent*: int16 # requested volume as a % of maximum
pitch*: int16 # requested pitch in Hz
duration*: int16 # requested duration in useconds
bell_class*: int16 # (input extension) feedback class
bell_id*: int16 # (input extension) ID of feedback
name*: Atom # "name" of requested bell
window*: Window # window associated with event
event_only*: bool # "event only" requested
{.deprecated: [TXkbBellNotifyEvent: XkbBellNotifyEvent].}
type
PXkbActionMessageEvent* = ptr XkbActionMessageEvent
XkbActionMessageEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbActionMessage
device*: int16 # device ID
keycode*: KeyCode # key that generated the event
press*: bool # true if act caused by key press
key_event_follows*: bool # true if key event also generated
group*: int16 # effective group
mods*: int16 # effective mods
message*: array[0..XkbActionMessageLength, char] # message -- leave space for NUL
{.deprecated: [TXkbActionMessageEvent: XkbActionMessageEvent].}
type
PXkbAccessXNotifyEvent* = ptr XkbAccessXNotifyEvent
XkbAccessXNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbAccessXNotify
device*: int16 # device ID
detail*: int16 # XkbAXN_*
keycode*: int16 # key of event
sk_delay*: int16 # current slow keys delay
debounce_delay*: int16 # current debounce delay
{.deprecated: [TXkbAccessXNotifyEvent: XkbAccessXNotifyEvent].}
type
PXkbExtensionDeviceNotifyEvent* = ptr XkbExtensionDeviceNotifyEvent
XkbExtensionDeviceNotifyEvent*{.final.} = object
theType*: int16 # XkbAnyEvent
serial*: int32 # of last req processed by server
send_event*: bool # is this `from` a SendEvent request?
display*: PDisplay # Display the event was read `from`
time*: Time # milliseconds
xkb_type*: int16 # XkbExtensionDeviceNotify
device*: int16 # device ID
reason*: int16 # reason for the event
supported*: int16 # mask of supported features
unsupported*: int16 # mask of unsupported features
# that some app tried to use
first_btn*: int16 # first button that changed
num_btns*: int16 # range of buttons changed
leds_defined*: int16 # indicators with names or maps
led_state*: int16 # current state of the indicators
led_class*: int16 # feedback class for led changes
led_id*: int16 # feedback id for led changes
{.deprecated: [TXkbExtensionDeviceNotifyEvent: XkbExtensionDeviceNotifyEvent].}
type
PXkbEvent* = ptr XkbEvent
XkbEvent*{.final.} = object
theType*: int16
any*: XkbAnyEvent
new_kbd*: XkbNewKeyboardNotifyEvent
map*: XkbMapNotifyEvent
state*: XkbStateNotifyEvent
ctrls*: XkbControlsNotifyEvent
indicators*: XkbIndicatorNotifyEvent
names*: XkbNamesNotifyEvent
compat*: XkbCompatMapNotifyEvent
bell*: XkbBellNotifyEvent
message*: XkbActionMessageEvent
accessx*: XkbAccessXNotifyEvent
device*: XkbExtensionDeviceNotifyEvent
core*: XEvent
{.deprecated: [TXkbEvent: XkbEvent].}
type
PXkbKbdDpyStatePtr* = ptr XkbKbdDpyStateRec
XkbKbdDpyStateRec*{.final.} = object # XkbOpenDisplay error codes
{.deprecated: [TXkbKbdDpyStateRec: XkbKbdDpyStateRec].}
const
XkbOD_Success* = 0
XkbOD_BadLibraryVersion* = 1
XkbOD_ConnectionRefused* = 2
XkbOD_NonXkbServer* = 3
XkbOD_BadServerVersion* = 4 # Values for XlibFlags
const
XkbLC_ForceLatin1Lookup* = 1 shl 0
XkbLC_ConsumeLookupMods* = 1 shl 1
XkbLC_AlwaysConsumeShiftAndLock* = 1 shl 2
XkbLC_IgnoreNewKeyboards* = 1 shl 3
XkbLC_ControlFallback* = 1 shl 4
XkbLC_ConsumeKeysOnComposeFail* = 1 shl 29
XkbLC_ComposeLED* = 1 shl 30
XkbLC_BeepOnComposeFail* = 1 shl 31
XkbLC_AllComposeControls* = 0xC0000000
XkbLC_AllControls* = 0xC000001F
proc XkbIgnoreExtension*(ignore: bool): bool{.libx11c,
importc: "XkbIgnoreExtension".}
proc XkbOpenDisplay*(name: cstring, ev_rtrn, err_rtrn, major_rtrn, minor_rtrn,
reason: ptr int16): PDisplay{.libx11c, importc: "XkbOpenDisplay".}
proc XkbQueryExtension*(dpy: PDisplay, opcodeReturn, eventBaseReturn,
errorBaseReturn, majorRtrn, minorRtrn: ptr int16): bool{.
libx11c, importc: "XkbQueryExtension".}
proc XkbUseExtension*(dpy: PDisplay, major_rtrn, minor_rtrn: ptr int16): bool{.
libx11c, importc: "XkbUseExtension".}
proc XkbLibraryVersion*(libMajorRtrn, libMinorRtrn: ptr int16): bool{.libx11c, importc: "XkbLibraryVersion".}
proc XkbSetXlibControls*(dpy: PDisplay, affect, values: int16): int16{.libx11c, importc: "XkbSetXlibControls".}
proc XkbGetXlibControls*(dpy: PDisplay): int16{.libx11c,
importc: "XkbGetXlibControls".}
type
XkbInternAtomFunc* = proc (dpy: PDisplay, name: cstring, only_if_exists: bool): Atom{.
cdecl.}
type
XkbGetAtomNameFunc* = proc (dpy: PDisplay, atom: Atom): cstring{.cdecl.}
proc XkbSetAtomFuncs*(getAtom: XkbInternAtomFunc, getName: XkbGetAtomNameFunc){.
libx11c, importc: "XkbSetAtomFuncs".}
proc XkbKeycodeToKeysym*(dpy: PDisplay, kc: KeyCode, group, level: int16): KeySym{.
libx11c, importc: "XkbKeycodeToKeysym".}
proc XkbKeysymToModifiers*(dpy: PDisplay, ks: KeySym): int16{.libx11c, importc: "XkbKeysymToModifiers".}
proc XkbLookupKeySym*(dpy: PDisplay, keycode: KeyCode,
modifiers, modifiers_return: int16, keysym_return: PKeySym): bool{.
libx11c, importc: "XkbLookupKeySym".}
proc XkbLookupKeyBinding*(dpy: PDisplay, sym_rtrn: KeySym, mods: int16,
buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
libx11c, importc: "XkbLookupKeyBinding".}
proc XkbTranslateKeyCode*(xkb: PXkbDescPtr, keycode: KeyCode,
modifiers, modifiers_return: int16,
keysym_return: PKeySym): bool{.libx11c,
importc: "XkbTranslateKeyCode".}
proc XkbTranslateKeySym*(dpy: PDisplay, sym_return: KeySym, modifiers: int16,
buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
libx11c, importc: "XkbTranslateKeySym".}
proc XkbSetAutoRepeatRate*(dpy: PDisplay, deviceSpec, delay, interval: int16): bool{.
libx11c, importc: "XkbSetAutoRepeatRate".}
proc XkbGetAutoRepeatRate*(dpy: PDisplay, deviceSpec: int16,
delayRtrn, intervalRtrn: PWord): bool{.libx11c, importc: "XkbGetAutoRepeatRate".}
proc XkbChangeEnabledControls*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
libx11c, importc: "XkbChangeEnabledControls".}
proc XkbDeviceBell*(dpy: PDisplay, win: Window,
deviceSpec, bellClass, bellID, percent: int16, name: Atom): bool{.
libx11c, importc: "XkbDeviceBell".}
proc XkbForceDeviceBell*(dpy: PDisplay,
deviceSpec, bellClass, bellID, percent: int16): bool{.
libx11c, importc: "XkbForceDeviceBell".}
proc XkbDeviceBellEvent*(dpy: PDisplay, win: Window,
deviceSpec, bellClass, bellID, percent: int16,
name: Atom): bool{.libx11c,
importc: "XkbDeviceBellEvent".}
proc XkbBell*(dpy: PDisplay, win: Window, percent: int16, name: Atom): bool{.
libx11c, importc: "XkbBell".}
proc XkbForceBell*(dpy: PDisplay, percent: int16): bool{.libx11c,
importc: "XkbForceBell".}
proc XkbBellEvent*(dpy: PDisplay, win: Window, percent: int16, name: Atom): bool{.
libx11c, importc: "XkbBellEvent".}
proc XkbSelectEvents*(dpy: PDisplay, deviceID, affect, values: int16): bool{.
libx11c, importc: "XkbSelectEvents".}
proc XkbSelectEventDetails*(dpy: PDisplay, deviceID, eventType: int16,
affect, details: int32): bool{.libx11c, importc: "XkbSelectEventDetails".}
proc XkbNoteMapChanges*(old: PXkbMapChangesPtr, new: PXkbMapNotifyEvent,
wanted: int16){.libx11c,
importc: "XkbNoteMapChanges".}
proc XkbNoteNameChanges*(old: PXkbNameChangesPtr, new: PXkbNamesNotifyEvent,
wanted: int16){.libx11c,
importc: "XkbNoteNameChanges".}
proc XkbGetIndicatorState*(dpy: PDisplay, deviceSpec: int16, pStateRtrn: PWord): Status{.
libx11c, importc: "XkbGetIndicatorState".}
proc XkbGetDeviceIndicatorState*(dpy: PDisplay,
deviceSpec, ledClass, ledID: int16,
pStateRtrn: PWord): Status{.libx11c, importc: "XkbGetDeviceIndicatorState".}
proc XkbGetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetIndicatorMap".}
proc XkbSetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
libx11c, importc: "XkbSetIndicatorMap".}
proc XkbNoteIndicatorMapChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
proc XkbNoteIndicatorStateChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
proc XkbGetIndicatorMapChanges*(d: PDisplay, x: PXkbDescPtr,
c: PXkbIndicatorChangesPtr): Status
proc XkbChangeIndicatorMaps*(d: PDisplay, x: PXkbDescPtr,
c: PXkbIndicatorChangesPtr): bool
proc XkbGetNamedIndicator*(dpy: PDisplay, name: Atom, pNdxRtrn: ptr int16,
pStateRtrn: ptr bool, pMapRtrn: PXkbIndicatorMapPtr,
pRealRtrn: ptr bool): bool{.libx11c,
importc: "XkbGetNamedIndicator".}
proc XkbGetNamedDeviceIndicator*(dpy: PDisplay,
deviceSpec, ledClass, ledID: int16,
name: Atom, pNdxRtrn: ptr int16,
pStateRtrn: ptr bool,
pMapRtrn: PXkbIndicatorMapPtr,
pRealRtrn: ptr bool): bool{.libx11c, importc: "XkbGetNamedDeviceIndicator".}
proc XkbSetNamedIndicator*(dpy: PDisplay, name: Atom,
changeState, state, createNewMap: bool,
pMap: PXkbIndicatorMapPtr): bool{.libx11c, importc: "XkbSetNamedIndicator".}
proc XkbSetNamedDeviceIndicator*(dpy: PDisplay,
deviceSpec, ledClass, ledID: int16,
name: Atom,
changeState, state, createNewMap: bool,
pMap: PXkbIndicatorMapPtr): bool{.libx11c, importc: "XkbSetNamedDeviceIndicator".}
proc XkbLockModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
libx11c, importc: "XkbLockModifiers".}
proc XkbLatchModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
libx11c, importc: "XkbLatchModifiers".}
proc XkbLockGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.libx11c, importc: "XkbLockGroup".}
proc XkbLatchGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.libx11c, importc: "XkbLatchGroup".}
proc XkbSetServerInternalMods*(dpy: PDisplay, deviceSpec, affectReal,
realValues, affectVirtual, virtualValues: int16): bool{.libx11c, importc: "XkbSetServerInternalMods".}
proc XkbSetIgnoreLockMods*(dpy: PDisplay, deviceSpec, affectReal, realValues,
affectVirtual, virtualValues: int16): bool{.libx11c,
importc: "XkbSetIgnoreLockMods".}
proc XkbVirtualModsToReal*(dpy: PDisplay, virtual_mask: int16, mask_rtrn: PWord): bool{.
libx11c, importc: "XkbVirtualModsToReal".}
proc XkbComputeEffectiveMap*(xkb: PXkbDescPtr, theType: PXkbKeyTypePtr,
map_rtrn: PByte): bool{.libx11c,
importc: "XkbComputeEffectiveMap".}
proc XkbInitCanonicalKeyTypes*(xkb: PXkbDescPtr, which: int16, keypadVMod: int16): Status{.
libx11c, importc: "XkbInitCanonicalKeyTypes".}
proc XkbAllocKeyboard*(): PXkbDescPtr{.libx11c,
importc: "XkbAllocKeyboard".}
proc XkbFreeKeyboard*(xkb: PXkbDescPtr, which: int16, freeDesc: bool){.libx11c, importc: "XkbFreeKeyboard".}
proc XkbAllocClientMap*(xkb: PXkbDescPtr, which, nTypes: int16): Status{.libx11c, importc: "XkbAllocClientMap".}
proc XkbAllocServerMap*(xkb: PXkbDescPtr, which, nActions: int16): Status{.
libx11c, importc: "XkbAllocServerMap".}
proc XkbFreeClientMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.libx11c, importc: "XkbFreeClientMap".}
proc XkbFreeServerMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.libx11c, importc: "XkbFreeServerMap".}
proc XkbAddKeyType*(xkb: PXkbDescPtr, name: Atom, map_count: int16,
want_preserve: bool, num_lvls: int16): PXkbKeyTypePtr{.
libx11c, importc: "XkbAddKeyType".}
proc XkbAllocIndicatorMaps*(xkb: PXkbDescPtr): Status{.libx11c,
importc: "XkbAllocIndicatorMaps".}
proc XkbFreeIndicatorMaps*(xkb: PXkbDescPtr){.libx11c,
importc: "XkbFreeIndicatorMaps".}
proc XkbGetMap*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.libx11c, importc: "XkbGetMap".}
proc XkbGetUpdatedMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetUpdatedMap".}
proc XkbGetMapChanges*(dpy: PDisplay, xkb: PXkbDescPtr,
changes: PXkbMapChangesPtr): Status{.libx11c, importc: "XkbGetMapChanges".}
proc XkbRefreshKeyboardMapping*(event: PXkbMapNotifyEvent): Status{.libx11c, importc: "XkbRefreshKeyboardMapping".}
proc XkbGetKeyTypes*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetKeyTypes".}
proc XkbGetKeySyms*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetKeySyms".}
proc XkbGetKeyActions*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetKeyActions".}
proc XkbGetKeyBehaviors*(dpy: PDisplay, firstKey, nKeys: int16,
desc: PXkbDescPtr): Status{.libx11c,
importc: "XkbGetKeyBehaviors".}
proc XkbGetVirtualMods*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetVirtualMods".}
proc XkbGetKeyExplicitComponents*(dpy: PDisplay, firstKey, nKeys: int16,
desc: PXkbDescPtr): Status{.libx11c, importc: "XkbGetKeyExplicitComponents".}
proc XkbGetKeyModifierMap*(dpy: PDisplay, firstKey, nKeys: int16,
desc: PXkbDescPtr): Status{.libx11c,
importc: "XkbGetKeyModifierMap".}
proc XkbAllocControls*(xkb: PXkbDescPtr, which: int16): Status{.libx11c, importc: "XkbAllocControls".}
proc XkbFreeControls*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeControls".}
# should which be int32 like it originally was?
proc XkbGetControls*(dpy: PDisplay, which: int64, desc: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetControls".}
proc XkbSetControls*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
libx11c, importc: "XkbSetControls".}
proc XkbNoteControlsChanges*(old: PXkbControlsChangesPtr,
new: PXkbControlsNotifyEvent, wanted: int16){.
libx11c, importc: "XkbNoteControlsChanges".}
proc XkbGetControlsChanges*(d: PDisplay, x: PXkbDescPtr,
c: PXkbControlsChangesPtr): Status
proc XkbChangeControls*(d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr): bool
proc XkbAllocCompatMap*(xkb: PXkbDescPtr, which, nInterpret: int16): Status{.
libx11c, importc: "XkbAllocCompatMap".}
proc XkbFreeCompatMap*(xkib: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeCompatMap".}
proc XkbGetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr): Status{.
libx11c, importc: "XkbGetCompatMap".}
proc XkbSetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr,
updateActions: bool): bool{.libx11c,
importc: "XkbSetCompatMap".}
proc XkbAddSymInterpret*(xkb: PXkbDescPtr, si: PXkbSymInterpretPtr,
updateMap: bool, changes: PXkbChangesPtr): PXkbSymInterpretPtr{.
libx11c, importc: "XkbAddSymInterpret".}
proc XkbAllocNames*(xkb: PXkbDescPtr, which: int16, nTotalRG, nTotalAliases: int16): Status{.libx11c, importc: "XkbAllocNames".}
proc XkbGetNames*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): Status{.libx11c, importc: "XkbGetNames".}
proc XkbSetNames*(dpy: PDisplay, which, firstType, nTypes: int16, desc: PXkbDescPtr): bool{.libx11c,importc: "XkbSetNames".}
proc XkbChangeNames*(dpy: PDisplay, xkb: PXkbDescPtr,changes: PXkbNameChangesPtr): bool{.libx11c, importc: "XkbChangeNames".}
proc XkbFreeNames*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.libx11c, importc: "XkbFreeNames".}
proc XkbGetState*(dpy: PDisplay, deviceSpec: int16, rtrnState: PXkbStatePtr): Status{.
libx11c, importc: "XkbGetState".}
proc XkbSetMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): bool{.libx11c, importc: "XkbSetMap".}
proc XkbChangeMap*(dpy: PDisplay, desc: PXkbDescPtr, changes: PXkbMapChangesPtr): bool{.
libx11c, importc: "XkbChangeMap".}
proc XkbSetDetectableAutoRepeat*(dpy: PDisplay, detectable: bool,
supported: ptr bool): bool{.libx11c, importc: "XkbSetDetectableAutoRepeat".}
proc XkbGetDetectableAutoRepeat*(dpy: PDisplay, supported: ptr bool): bool{.
libx11c, importc: "XkbGetDetectableAutoRepeat".}
proc XkbSetAutoResetControls*(dpy: PDisplay, changes: int16,
auto_ctrls, auto_values: PWord): bool{.libx11c, importc: "XkbSetAutoResetControls".}
proc XkbGetAutoResetControls*(dpy: PDisplay, auto_ctrls, auto_ctrl_values: PWord): bool{.
libx11c, importc: "XkbGetAutoResetControls".}
proc XkbSetPerClientControls*(dpy: PDisplay, change: int16, values: PWord): bool{.
libx11c, importc: "XkbSetPerClientControls".}
proc XkbGetPerClientControls*(dpy: PDisplay, ctrls: PWord): bool{.libx11c, importc: "XkbGetPerClientControls".}
proc XkbCopyKeyType*(`from`, into: PXkbKeyTypePtr): Status{.libx11c, importc: "XkbCopyKeyType".}
proc XkbCopyKeyTypes*(`from`, into: PXkbKeyTypePtr, num_types: int16): Status{.
libx11c, importc: "XkbCopyKeyTypes".}
proc XkbResizeKeyType*(xkb: PXkbDescPtr, type_ndx, map_count: int16,
want_preserve: bool, new_num_lvls: int16): Status{.
libx11c, importc: "XkbResizeKeyType".}
proc XkbResizeKeySyms*(desc: PXkbDescPtr, forKey, symsNeeded: int16): PKeySym{.
libx11c, importc: "XkbResizeKeySyms".}
proc XkbResizeKeyActions*(desc: PXkbDescPtr, forKey, actsNeeded: int16): PXkbAction{.
libx11c, importc: "XkbResizeKeyActions".}
proc XkbChangeTypesOfKey*(xkb: PXkbDescPtr, key, num_groups: int16,
groups: int16, newTypes: ptr int16,
pChanges: PXkbMapChangesPtr): Status{.libx11c, importc: "XkbChangeTypesOfKey".}
proc XkbListComponents*(dpy: PDisplay, deviceSpec: int16,
ptrns: PXkbComponentNamesPtr, max_inout: ptr int16): PXkbComponentListPtr{.
libx11c, importc: "XkbListComponents".}
proc XkbFreeComponentList*(list: PXkbComponentListPtr){.libx11c,
importc: "XkbFreeComponentList".}
proc XkbGetKeyboard*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.
libx11c, importc: "XkbGetKeyboard".}
proc XkbGetKeyboardByName*(dpy: PDisplay, deviceSpec: int16,
names: PXkbComponentNamesPtr, want, need: int16,
load: bool): PXkbDescPtr{.libx11c,
importc: "XkbGetKeyboardByName".}
proc XkbKeyTypesForCoreSymbols*(xkb: PXkbDescPtr,
map_width: int16, # keyboard device
core_syms: PKeySym, # always mapWidth symbols
protected: int16, # explicit key types
types_inout: ptr int16, # always four type indices
xkb_syms_rtrn: PKeySym): int16{.libx11c, importc: "XkbKeyTypesForCoreSymbols".}
# must have enough space
proc XkbApplyCompatMapToKey*(xkb: PXkbDescPtr,
key: KeyCode, # key to be updated
changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbApplyCompatMapToKey".}
# resulting changes to map
proc XkbUpdateMapFromCore*(xkb: PXkbDescPtr,
first_key: KeyCode, # first changed key
num_keys,
map_width: int16,
core_keysyms: PKeySym, # symbols `from` core keymap
changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbUpdateMapFromCore".}
proc XkbAddDeviceLedInfo*(devi: PXkbDeviceInfoPtr, ledClass, ledId: int16): PXkbDeviceLedInfoPtr{.
libx11c, importc: "XkbAddDeviceLedInfo".}
proc XkbResizeDeviceButtonActions*(devi: PXkbDeviceInfoPtr, newTotal: int16): Status{.
libx11c, importc: "XkbResizeDeviceButtonActions".}
proc XkbAllocDeviceInfo*(deviceSpec, nButtons, szLeds: int16): PXkbDeviceInfoPtr{.
libx11c, importc: "XkbAllocDeviceInfo".}
proc XkbFreeDeviceInfo*(devi: PXkbDeviceInfoPtr, which: int16, freeDevI: bool){.
libx11c, importc: "XkbFreeDeviceInfo".}
proc XkbNoteDeviceChanges*(old: PXkbDeviceChangesPtr,
new: PXkbExtensionDeviceNotifyEvent, wanted: int16){.
libx11c, importc: "XkbNoteDeviceChanges".}
proc XkbGetDeviceInfo*(dpy: PDisplay, which, deviceSpec, ledClass, ledID: int16): PXkbDeviceInfoPtr{.
libx11c, importc: "XkbGetDeviceInfo".}
proc XkbGetDeviceInfoChanges*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
changes: PXkbDeviceChangesPtr): Status{.libx11c, importc: "XkbGetDeviceInfoChanges".}
proc XkbGetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
all: bool, first, nBtns: int16): Status{.libx11c, importc: "XkbGetDeviceButtonActions".}
proc XkbGetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
ledClass, ledId, which: int16): Status{.libx11c, importc: "XkbGetDeviceLedInfo".}
proc XkbSetDeviceInfo*(dpy: PDisplay, which: int16, devi: PXkbDeviceInfoPtr): bool{.
libx11c, importc: "XkbSetDeviceInfo".}
proc XkbChangeDeviceInfo*(dpy: PDisplay, desc: PXkbDeviceInfoPtr,
changes: PXkbDeviceChangesPtr): bool{.libx11c, importc: "XkbChangeDeviceInfo".}
proc XkbSetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
ledClass, ledID, which: int16): bool{.libx11c, importc: "XkbSetDeviceLedInfo".}
proc XkbSetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr,
first, nBtns: int16): bool{.libx11c, importc: "XkbSetDeviceButtonActions".}
proc XkbToControl*(c: int8): int8{.libx11c,
importc: "XkbToControl".}
proc XkbSetDebuggingFlags*(dpy: PDisplay, mask, flags: int16, msg: cstring,
ctrls_mask, ctrls, rtrn_flags, rtrn_ctrls: int16): bool{.
libx11c, importc: "XkbSetDebuggingFlags".}
proc XkbApplyVirtualModChanges*(xkb: PXkbDescPtr, changed: int16,
changes: PXkbChangesPtr): bool{.libx11c, importc: "XkbApplyVirtualModChanges".}
# implementation
proc XkbNoteIndicatorMapChanges(o, n: PXkbIndicatorChangesPtr, w: int16) =
# XkbNoteIndicatorMapChanges(o,n,w) ((o)->map_changes|=((n)->map_changes&(w)))
o.map_changes = o.map_changes or (n.map_changes and w)
proc XkbNoteIndicatorStateChanges(o, n: PXkbIndicatorChangesPtr, w: int16) =
# XkbNoteIndicatorStateChanges(o,n,w) ((o)->state_changes|=((n)->state_changes&(w)))
o.state_changes = o.state_changes or (n.state_changes and (w))
proc XkbGetIndicatorMapChanges(d: PDisplay, x: PXkbDescPtr,
c: PXkbIndicatorChangesPtr): Status =
# XkbGetIndicatorMapChanges(d,x,c) (XkbGetIndicatorMap((d),(c)->map_changes,x)
result = XkbGetIndicatorMap(d, c.map_changes, x)
proc XkbChangeIndicatorMaps(d: PDisplay, x: PXkbDescPtr,
c: PXkbIndicatorChangesPtr): bool =
# XkbChangeIndicatorMaps(d,x,c) (XkbSetIndicatorMap((d),(c)->map_changes,x))
result = XkbSetIndicatorMap(d, c.map_changes, x)
proc XkbGetControlsChanges(d: PDisplay, x: PXkbDescPtr,
c: PXkbControlsChangesPtr): Status =
# XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
result = XkbGetControls(d, c.changed_ctrls, x)
proc XkbChangeControls(d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr): bool =
# XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
result = XkbSetControls(d, c.changed_ctrls, x)
from xlib import Display
type
XkbRF_VarDefsRec* {.bycopy.} = object
model*: cstring
layout*: cstring
variant*: cstring
options*: cstring
sz_extra*: cushort
num_extra*: cushort
extra_names*: cstring
extra_values*: cstringArray
XkbRF_VarDefsPtr* = ptr XkbRF_VarDefsRec
XkbRF_VarDescRec* {.bycopy.} = object
name*: cstring
desc*: cstring
XkbRF_VarDescPtr* = ptr XkbRF_VarDescRec
XkbRF_DescribeVarsRec* {.bycopy.} = object
sz_desc*: cint
num_desc*: cint
desc*: XkbRF_VarDescPtr
XkbRF_DescribeVarsPtr* = ptr XkbRF_DescribeVarsRec
XkbRF_RuleRec* {.bycopy.} = object
number*: cint
layout_num*: cint
variant_num*: cint
model*: cstring
layout*: cstring
variant*: cstring
option*: cstring
keycodes*: cstring
symbols*: cstring
types*: cstring
compat*: cstring
geometry*: cstring
keymap*: cstring
flags*: cuint
XkbRF_RulePtr* = ptr XkbRF_RuleRec
XkbRF_GroupRec* {.bycopy.} = object
number*: cint
name*: cstring
words*: cstring
XkbRF_GroupPtr* = ptr XkbRF_GroupRec
const
XkbRF_PendingMatch* = 2
XkbRF_Option* = 4
XkbRF_Append* = 8
XkbRF_Normal* = 16
XkbRF_Invalid* = 32
XKB_RF_NAMES_PROP_ATOM* = "_XKB_RULES_NAMES"
XKB_RF_NAMES_PROP_MAXLEN* = 1024
type
XkbRF_RulesRec* {.bycopy.} = object
models*: XkbRF_DescribeVarsRec
layouts*: XkbRF_DescribeVarsRec
variants*: XkbRF_DescribeVarsRec
options*: XkbRF_DescribeVarsRec
sz_extra*: cushort
num_extra*: cushort
extra_names*: cstringArray
extra*: XkbRF_DescribeVarsPtr
sz_rules*: cushort
num_rules*: cushort
rules*: XkbRF_RulePtr
sz_groups*: cushort
num_groups*: cushort
groups*: XkbRF_GroupPtr
XkbRF_RulesPtr* = ptr XkbRF_RulesRec
proc XkbRF_GetNamesProp*( a1: ptr Display
, a2: cstringArray
, a3: XkbRF_VarDefsPtr): bool {.importc, cdecl.}
proc XkbRF_SetNamesProp*( a1: ptr Display
, a2: cstring
, a3: XkbRF_VarDefsPtr): bool {.importc, cdecl.}
proc XkbRF_AddRule*(a1: XkbRF_RulesPtr): XkbRF_RulePtr {.importc, cdecl.}
proc XkbRF_AddGroup*(rules: XkbRF_RulesPtr): XkbRF_GroupPtr {.importc, cdecl.}
proc XkbRF_LoadRules*( a1: ptr FILE
, a2: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_LoadRulesByName*(a1: cstring; a2: cstring; a3: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_AddVarDesc*(a1: XkbRF_DescribeVarsPtr): XkbRF_VarDescPtr {.importc, cdecl.}
proc XkbRF_AddVarDescCopy*( a1: XkbRF_DescribeVarsPtr
, a2: XkbRF_VarDescPtr
): XkbRF_VarDescPtr {.importc, cdecl.}
proc XkbRF_AddVarToDescribe*( a1: XkbRF_RulesPtr
, a2: cstring
): XkbRF_DescribeVarsPtr {.importc, cdecl.}
proc XkbRF_LoadDescriptions*(a1: ptr FILE;
a2: XkbRF_RulesPtr
): bool {.importc, cdecl.}
proc XkbRF_LoadDescriptionsByName*(a1: cstring; a2: cstring; a3: XkbRF_RulesPtr): bool {.importc, cdecl.}
proc XkbRF_Load*(a1: cstring; a2: cstring; a3: bool;
a4: bool): XkbRF_RulesPtr {.importc, cdecl.}
proc XkbRF_Create*(a1: cint; a2: cint): XkbRF_RulesPtr {.importc, cdecl.}
proc XkbRF_Free*( a1: XkbRF_RulesPtr
, a2: bool) {.importc, cdecl.}
{.experimental: "codeReordering".}
import xcb
#, bitops
type
xkb_mod_index_t* = uint32
xkb_mod_mask_t* = uint32
xkb_led_mask_t* = uint32
xkb_keycode_t* = uint32
xkb_layout_index_t* = uint32
xkb_level_index_t* = uint32
xkb_keysym_t* = uint32
xkb_layout_mask_t* = uint32
const
XKB_MAX_GROUPS* = 4
#Don't allow more modifiers than we can hold in xkb_mod_mask_t.
XKB_MAX_MODS* = sizeof(uint32) * 8
# Don't allow more leds than we can hold in xkb_led_mask_t.
XKB_MAX_LEDS* = sizeof(uint32) * 8
MOD_REAL_MASK_ALL* = uint32 0x000000ff
type
xkb_explicit_components* = enum
EXPLICIT_INTERP = (1 shl 0)
xkb_range_exceed_type* = enum
RANGE_WRAP = 0
mod_type* = enum
MOD_REAL = (1 shl 0),
MOD_VIRT = (1 shl 1),
MOD_BOTH = (MOD_REAL.ord or MOD_VIRT.ord)
xkb_x11_setup_xkb_extension_flags* = enum XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS
xkb_keymap_format* = enum
# The current/classic XKB text format, as generated by xkbcomp -xkb.
XKB_KEYMAP_FORMAT_TEXT_V1 = 1
xkb_action_type* = enum
ACTION_TYPE_NONE = 0,
ACTION_TYPE_MOD_SET,
ACTION_TYPE_MOD_LATCH,
ACTION_TYPE_MOD_LOCK,
ACTION_TYPE_GROUP_SET,
ACTION_TYPE_GROUP_LATCH,
ACTION_TYPE_GROUP_LOCK,
ACTION_TYPE_PTR_MOVE,
ACTION_TYPE_PTR_BUTTON,
ACTION_TYPE_PTR_LOCK,
ACTION_TYPE_PTR_DEFAULT,
ACTION_TYPE_TERMINATE,
ACTION_TYPE_SWITCH_VT,
ACTION_TYPE_CTRL_SET,
ACTION_TYPE_CTRL_LOCK,
ACTION_TYPE_PRIVATE,
ACTION_TYPE_NUM_ENTRIES
xkb_action_controls* = enum
CONTROL_REPEAT = (1 shl 0),
CONTROL_SLOW = (1 shl 1),
CONTROL_DEBOUNCE = (1 shl 2),
CONTROL_STICKY = (1 shl 3),
CONTROL_MOUSEKEYS = (1 shl 4),
CONTROL_MOUSEKEYS_ACCEL = (1 shl 5),
CONTROL_AX = (1 shl 6),
CONTROL_AX_TIMEOUT = (1 shl 7),
CONTROL_AX_FEEDBACK = (1 shl 8),
CONTROL_BELL = (1 shl 9),
CONTROL_IGNORE_GROUP_LOCK = (1 shl 10),
CONTROL_ALL = CONTROL_REPEAT.ord or
CONTROL_SLOW.ord or
CONTROL_DEBOUNCE.ord or
CONTROL_STICKY.ord or
CONTROL_MOUSEKEYS.ord or
CONTROL_MOUSEKEYS_ACCEL.ord or
CONTROL_AX.ord or
CONTROL_AX_TIMEOUT.ord or
CONTROL_AX_FEEDBACK.ord or
CONTROL_BELL.ord or
CONTROL_IGNORE_GROUP_LOCK.ord
xkb_rule_names* {.bycopy.} = object
str0*: cstring
str1*: cstring
str2*: cstring
str3*: cstring
str4*: cstring
AtomTable* {.bycopy.} = object
xkb_atom_t* = uint32
DArr*[T] {.bycopy.} = object
item*: ptr T
size*: cuint
alloc*: cuint
xkb_keymap_compile_flags* = enum
# Do not apply any flags.
XKB_KEYMAP_COMPILE_NO_FLAGS = 0
xkb_context_flags* = enum
XKB_CONTEXT_NO_FLAGS = 0, # Do not apply any context flags.
XKB_CONTEXT_NO_DEFAULT_INCLUDES = (1 shl 0), # Create this context with an empty include path.
# Don't take RMLVO names from the environment. @since 0.3.0
XKB_CONTEXT_NO_ENVIRONMENT_NAMES = (1 shl 1)
# Modifier and layout types for state objects. This enum is bitmaskable,
# e.g. (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LATCHED) is valid to
# exclude locked modifiers.
# In XKB, the DEPRESSED components are also known as 'base'.
xkb_state_component* = enum
# Depressed modifiers, i.e. a key is physically holding them.
XKB_STATE_MODS_DEPRESSED = (1 shl 0),
# Latched modifiers, i.e. will be unset after the next non-modifier key press.
XKB_STATE_MODS_LATCHED = (1 shl 1),
# Locked modifiers, i.e. will be unset after the key provoking the lock has been pressed again.
XKB_STATE_MODS_LOCKED = (1 shl 2),
# Effective modifiers, i.e. currently active and affect key
# processing (derived from the other state components).
# Use this unless you explicitly care how the state came about.
XKB_STATE_MODS_EFFECTIVE = (1 shl 3),
# Depressed layout, i.e. a key is physically holding it.
XKB_STATE_LAYOUT_DEPRESSED = (1 shl 4),
# Latched layout, i.e. will be unset after the next non-modifier key press.
XKB_STATE_LAYOUT_LATCHED = (1 shl 5),
# Locked layout, i.e. will be unset after the key provoking the lock has been pressed again.
XKB_STATE_LAYOUT_LOCKED = (1 shl 6),
# Effective layout, i.e. currently active and affects key processing
# (derived from the other state components).
# Use this unless you explicitly care how the state came about.
XKB_STATE_LAYOUT_EFFECTIVE = (1 shl 7),
# LEDs (derived from the other state components).
XKB_STATE_LEDS = (1 shl 8)
xkb_log_level* = enum
XKB_LOG_LEVEL_CRITICAL = 10, # Log critical internal errors only.
XKB_LOG_LEVEL_ERROR = 20, # Log all errors.
XKB_LOG_LEVEL_WARNING = 30, # Log warnings and errors.
XKB_LOG_LEVEL_INFO = 40, # Log information, warnings, and errors.
XKB_LOG_LEVEL_DEBUG = 50 # Log everything.
xkb_group* {.bycopy.} = object
out_of_range_group_number*: xkb_layout_index_t
num_groups*: xkb_layout_index_t
groups*: ptr xkb_group
xkb_key* {.bycopy.} = object
keycode*: xkb_keycode_t
name*: xkb_atom_t
explicit*: xkb_explicit_components
modmap*: xkb_mod_mask_t
vmodmap*: xkb_mod_mask_t
repeats*: bool
out_of_range_group_action*: xkb_range_exceed_type
out_of_range_group_number*: xkb_layout_index_t
num_groups*: xkb_layout_index_t
groups*: ptr xkb_group
xkb_context* {.bycopy.} = object
refcnt*: int
log_verbosity*: int
logLevel*: xkb_log_level
userData*: pointer
x11_atom_cache*: pointer # Used and allocated by xkbcommon-x11, free()d with the context.
text_next*: csize_t
use_environment_names*: uint # 1
text_buffer*: cstring #$[2048, char]
names_dflt*: xkb_rule_names
includes*: DArr[ptr char]
failedIncludes*: DArr[ptr char]
atom_table*: ptr AtomTable
## Buffer for the *Text() functions.
# ATTR_PRINTF(3, 0) void (*log_fn)(struct xkb_context *ctx,
# enum xkb_log_level level,
# const char *fmt, va_list args);
xkb_key_alias* {.bycopy.} = object
real: xkb_atom_t
alias: xkb_atom_t
xkb_action_flags* {.bycopy.} = enum
ACTION_LOCK_CLEAR = (1 shl 0)
ACTION_LATCH_TO_LOCK = (1 shl 1),
ACTION_LOCK_NO_LOCK = (1 shl 2),
ACTION_LOCK_NO_UNLOCK = (1 shl 3),
ACTION_MODS_LOOKUP_MODMAP = (1 shl 4),
ACTION_ABSOLUTE_SWITCH = (1 shl 5),
ACTION_ABSOLUTE_X = (1 shl 6),
ACTION_ABSOLUTE_Y = (1 shl 7),
ACTION_ACCEL = (1 shl 8),
ACTION_SAME_SCREEN = (1 shl 9)
xkb_compose_state_flags* = enum
XKB_COMPOSE_STATE_NO_FLAGS = 0
xkb_mods* {.bycopy.} = object
# original real+virtual mods in definition
modMask*: xkb_mod_mask_t
actType*: xkb_action_type
flags*: xkb_action_flags
#mods: xkb_mods
xkb_key_type_entry* {.bycopy.} = object
level*: xkb_level_index_t
mods*: xkb_mods
preserve*: xkb_mods
num_entries*: cuint
entries*: ptr xkb_key_type_entry
xkb_key_type* {.bycopy.} = object
name*: xkb_atom_t
mods*: xkb_mods
num_levels*: xkb_level_index_t
num_level_names*: cuint
level_names*: ptr xkb_atom_t
num_entries*: cuint
entries*: ptr xkb_key_type_entry
xkb_match_operation* = enum
MATCH_NONE
MATCH_ANY_OR_NONE
MATCH_ANY
MATCH_ALL
MATCH_EXACTLY
xkb_key_direction* = enum XKB_KEY_UP XKB_KEY_DOWN
xkb_compose_compile_flags* = enum
XKB_COMPOSE_COMPILE_NO_FLAGS = 0
xkb_mod_action* {.bycopy.} = object
actType*: xkb_action_type
flags*: xkb_action_flags
mods*: xkb_mods
xkb_group_action* {.bycopy.} = object
actType*: xkb_action_type
flags8: xkb_action_flags
group*: int32
xkb_controls_action* {.bycopy.} = object
actType*: xkb_action_type
flags*: xkb_action_flags
ctrls*: xkb_action_controls
xkb_pointer_default_action* {.bycopy.} = object
actType*: xkb_action_type
flags*: xkb_action_flags
value*: int8
xkb_switch_screen_action* {.bycopy.} = object
actType*: xkb_action_type
flags*: xkb_action_flags
screen*: int8
xkb_pointer_action* {.bycopy.} = object
actType: xkb_action_type
flags: xkb_action_flags
x: int16
y: int16
xkb_pointer_button_action* {.bycopy.} = object
actType*: xkb_action_type
flags*: xkb_action_flags
count*: uint8
button*: uint8
xkb_private_action* {.bycopy.} = object
actType: xkb_action_type
data: array[7,uint8]
xkb_action* {.bycopy, union.} = object
actType: xkb_action_type
mods: xkb_mod_action
group: xkb_group_action
ctrls: xkb_controls_action
dflt: xkb_pointer_default_action
screen: xkb_switch_screen_action
ptrAction: xkb_pointer_action
btn: xkb_pointer_button_action
priv: xkb_private_action
xkb_sym_interpret* {.bycopy.} = object
sym*: xkb_keysym_t
match*: xkb_match_operation
mods*: xkb_mod_mask_t
virtual_mod*: xkb_mod_index_t
action*: xkb_action # union:
level_one_only*: bool
repeat*: bool
xkb_mod* {.bycopy.} = object
name*: xkb_atom_t
modType*: mod_type
mapping*: xkb_mod_mask_t
xkb_mod_set* {.bycopy.} = object
mods: array[XKB_MAX_MODS, xkb_mod]
num_mods: cuint
xkb_led* {.bycopy.} = object
name*: xkb_atom_t
which_groups*: xkb_state_component
groups*: xkb_layout_mask_t
which_mods*: xkb_state_component
mods*: xkb_mods
ctrls*: xkb_action_controls
xkb_keymap* {.bycopy.} = object
ctx*: ptr xkb_context
refcnt*: cint
flags*: xkb_keymap_compile_flags
format*: xkb_keymap_format
enabled_ctrls*: xkb_action_controls
min_key_code*: xkb_keycode_t
max_key_code*: xkb_keycode_t
keys*: ptr xkb_key
# aliases in no particular order
num_key_aliases: cuint
key_aliases: ptr xkb_key_alias
types: ptr xkb_key_type
num_types: cuint
num_sym_interprets: cuint
sym_interprets: ptr xkb_sym_interpret
mods: xkb_mod_set
# Number of groups in the key with the most groups.
num_groups: xkb_layout_index_t
# Not all groups must have names.
num_group_names: xkb_layout_index_t
group_names: ptr xkb_atom_t
leds: array[XKB_MAX_LEDS, xkb_led]
num_leds*: cuint
keycodes_section_name: ptr char
symbols_section_name: ptr char
types_section_name: ptr char
compat_section_name: ptr char
xkb_filter* {.bycopy.} = object
action*: xkb_action # union in C
key*: ptr xkb_key # declared const struct xkb_key * key in C
priv*: uint32
#[
bool (*func)(struct xkb_state *state,
struct xkb_filter *filter,
const struct xkb_key *key,
enum xkb_key_direction direction);
]#
fnptr: proc( state: ptr xkb_state
, filter: ptr xkb_filter
, key: ptr xkb_key
, direction: xkb_key_direction
): ptr bool
refcnt*: cint
state_components* {.bycopy.} = object
# These may be negative, because of -1 group actions. */
base_group*: int32 # depressed
latched_group*: int32
locked_group*: int32
group*: xkb_layout_index_t # effective
base_mods*: xkb_mod_mask_t # depressed
latched_mods*: xkb_mod_mask_t
locked_mods*: xkb_mod_mask_t
mods*: xkb_mod_mask_t # effective
leds*: xkb_led_mask_t
xkb_state* {.bycopy.} = object
# Before updating the state, we keep a copy of just this struct. This
# allows us to report which components of the state have changed.
components*: state_components
# At each event, we accumulate all the needed modifications to the base
# modifiers, and apply them at the end. These keep track of this state.
set_mods*: xkb_mod_mask_t
clear_mods*: xkb_mod_mask_t
# We mustn't clear a base modifier if there's another depressed key
# which affects it, e.g. given this sequence
# < Left Shift down, Right Shift down, Left Shift Up >
# the modifier should still be set. This keeps the count.
mod_key_count*: array[XKB_MAX_MODS, int16]
refcnt*: cint
filters*: DArr[xkb_filter]
keymap*: ptr xkb_keymap
# Opaque Compose table object.
# The compose table holds the definitions of the Compose sequences, as
# gathered from Compose files. It is immutable.
xkb_compose_table* {.bycopy.} = object
xkb_compose_state* {.bycopy.} = object
refcnt: cint
flags: xkb_compose_state_flags
table: ptr xkb_compose_table
# Offsets into xkb_compose_table::nodes.
# They maintain the current and previous position in the trie; see
# xkb_compose_state_feed().
# This is also sufficient for inferring the current status; see
# xkb_compose_state_get_status().
prev_context: uint16
context: uint16
proc xkb_x11_setup_xkb_extension*( connection: ptr xcb_connection_t
, major_xkb_version: uint16
, minor_xkb_version: uint16
, flags: xkb_x11_setup_xkb_extension_flags
, major_xkb_version_out: ptr uint16
, minor_xkb_version_out: ptr uint16
, base_event_out: ptr uint8
, base_error_out: ptr uint8
): int {.importc, cdecl.}
proc atom_table_free*(table: ptr AtomTable): void {.importc, cdecl.}
proc atom_intern*( table: ptr AtomTable
, str: ptr cstring
, len: csize_t
, add: bool
): xkb_atom_t {.importc, cdecl.}
proc atom_text*( table: ptr AtomTable
, atom: xkb_atom_t
): ptr cstring {.importc, cdecl.}
proc xkb_context_new*(flags: xkb_context_flags): ptr xkb_context {.importc, cdecl.}
proc xkb_keymap_unref*(keymap: ptr xkb_keymap): void {.importc, cdecl.}
proc xkb_x11_get_core_keyboard_device_id*(connection: ptr xcb_connection_t): int32 {.importc, cdecl.}
proc xkb_x11_keymap_new_from_device*( context: ptr xkb_context
, connection: ptr xcb_connection_t
, device_id: int32
, flags: xkb_keymap_compile_flags
): ptr xkb_keymap {.importc, cdecl.}
proc xkb_x11_state_new_from_device*( keymap: ptr xkb_keymap
, connection: ptr xcb_connection_t
, device_id: int32
): ptr xkb_state {.importc, cdecl.}
#[ Release a reference on a keybaord state object, and possibly free it.
@param state The state. If it is NULL, this function does nothing.
@memberof xkb_state
]#
proc xkb_state_unref*( state: ptr xkb_state ): void {.importc, cdecl.}
proc xkb_compose_state_unref*( state: ptr xkb_compose_state ): void {.importc, cdecl.}
proc xkb_compose_table_unref*( table: ptr xkb_compose_table ): void {.importc, cdecl.}
proc xkb_compose_table_new_from_locale*( ctx: ptr xkb_context
, locale: cstring
, flags: xkb_compose_compile_flags
): ptr xkb_compose_table {.importc, cdecl.}
proc xkb_compose_state_new*( table: ptr xkb_compose_table
, flags: xkb_compose_state_flags
): ptr xkb_compose_state {.importc, cdecl.}
proc xkb_state_key_get_one_sym*( state: ptr xkb_state
, kc: xkb_keycode_t
): xkb_keysym_t {.importc, cdecl.}
proc xkb_keymap_layout_get_name*( keymap: ptr xkb_keymap
, idx: xkb_layout_index_t
): cstring {.importc, cdecl.}
proc xkb_state_get_keymap*(state: ptr xkb_state): ptr xkb_keymap {.importc, cdecl.}
proc xkb_state_layout_index_is_active*( state: ptr xkb_state
, idx: xkb_layout_index_t
, stateType: xkb_state_component
): int {.importc, cdecl.}
proc xkb_keymap_num_layouts*( keymap: ptr xkb_keymap ): xkb_layout_index_t {.importc, cdecl.}
proc xkb_state_serialize_layout*( state: ptr xkb_state
, stateType: xkb_state_component
): xkb_layout_index_t {.importc, cdecl.}
import
x, xlib
include "x11pragma.nim"
proc XkbcharToInt*(v: int8): int16
proc XkbIntTo2chars*(i: int16, h, L: var int8)
proc Xkb2charsToInt*(h, L: int8): int16
#
# Common data structures and access macros
#
type
PWord* = ptr array[0..64_000, int16]
xkb_keysym_t* = uint32
PByte* = ptr byte
PXkbStatePtr* = ptr XkbStateRec
XkbStateRec*{.final.} = object
group*: int8
locked_group*: int8
base_group*: int16
latched_group*: int16
mods*: int8
base_mods*: int8
latched_mods*: int8
locked_mods*: int8
compat_state*: int8
grab_mods*: int8
compat_grab_mods*: int8
lookup_mods*: int8
compat_lookup_mods*: int8
ptr_buttons*: int16
{.deprecated: [TXkbStateRec: XkbStateRec].}
proc XkbModLocks*(s: PXkbStatePtr): int8
proc XkbStateMods*(s: PXkbStatePtr): int16
proc XkbGroupLock*(s: PXkbStatePtr): int8
proc XkbStateGroup*(s: PXkbStatePtr): int16
proc XkbStateFieldFromRec*(s: PXkbStatePtr): int
proc XkbGrabStateFromRec*(s: PXkbStatePtr): int
type
PXkbModsPtr* = ptr XkbModsRec
XkbModsRec*{.final.} = object
mask*: int8 # effective mods
real_mods*: int8
vmods*: int16
{.deprecated: [TXkbModsRec: XkbModsRec].}
type
PXkbKTMapEntryPtr* = ptr XkbKTMapEntryRec
XkbKTMapEntryRec*{.final.} = object
active*: bool
level*: int8
mods*: XkbModsRec
{.deprecated: [TXkbKTMapEntryRec: XkbKTMapEntryRec].}
type
PXkbKeyTypePtr* = ptr XkbKeyTypeRec
XkbKeyTypeRec*{.final.} = object
mods*: XkbModsRec
num_levels*: int8
map_count*: int8
map*: PXkbKTMapEntryPtr
preserve*: PXkbModsPtr
name*: Atom
level_names*: Atom
{.deprecated: [TXkbKeyTypeRec: XkbKeyTypeRec].}
proc XkbNumGroups*(g: int16): int16
proc XkbOutOfRangeGroupInfo*(g: int16): int16
proc XkbOutOfRangeGroupAction*(g: int16): int16
proc XkbOutOfRangeGroupNumber*(g: int16): int16
proc XkbSetGroupInfo*(g, w, n: int16): int16
proc XkbSetNumGroups*(g, n: int16): int16
#
# Structures and access macros used primarily by the server
#
type
PXkbBehavior* = ptr XkbBehavior
XkbBehavior*{.final.} = object
theType*: int8
data*: int8
{.deprecated: [TXkbBehavior: XkbBehavior].}
type
PXkbModAction* = ptr XkbModAction
XkbModAction*{.final.} = object
theType*: int8
flags*: int8
mask*: int8
real_mods*: int8
vmods1*: int8
vmods2*: int8
{.deprecated: [TXkbModAction: XkbModAction].}
proc XkbModActionVMods*(a: PXkbModAction): int16
proc XkbSetModActionVMods*(a: PXkbModAction, v: int8)
type
PXkbGroupAction* = ptr XkbGroupAction
XkbGroupAction*{.final.} = object
theType*: int8
flags*: int8
group_XXX*: int8
{.deprecated: [TXkbGroupAction: XkbGroupAction].}
proc XkbSAGroup*(a: PXkbGroupAction): int8
proc XkbSASetGroupProc*(a: PXkbGroupAction, g: int8)
type
PXkbISOAction* = ptr XkbISOAction
XkbISOAction*{.final.} = object
theType*: int8
flags*: int8
mask*: int8
real_mods*: int8
group_XXX*: int8
affect*: int8
vmods1*: int8
vmods2*: int8
{.deprecated: [TXkbISOAction: XkbISOAction].}
type
PXkbPtrAction* = ptr XkbPtrAction
XkbPtrAction*{.final.} = object
theType*: int8
flags*: int8
high_XXX*: int8
low_XXX*: int8
high_YYY*: int8
low_YYY*: int8
{.deprecated: [TXkbPtrAction: XkbPtrAction].}
proc XkbPtrActionX*(a: PXkbPtrAction): int16
proc XkbPtrActionY*(a: PXkbPtrAction): int16
proc XkbSetPtrActionX*(a: PXkbPtrAction, x: int8)
proc XkbSetPtrActionY*(a: PXkbPtrAction, y: int8)
type
PXkbPtrBtnAction* = ptr XkbPtrBtnAction
XkbPtrBtnAction*{.final.} = object
theType*: int8
flags*: int8
count*: int8
button*: int8
{.deprecated: [TXkbPtrBtnAction: XkbPtrBtnAction].}
type
PXkbPtrDfltAction* = ptr XkbPtrDfltAction
XkbPtrDfltAction*{.final.} = object
theType*: int8
flags*: int8
affect*: int8
valueXXX*: int8
{.deprecated: [TXkbPtrDfltAction: XkbPtrDfltAction].}
proc XkbSAPtrDfltValue*(a: PXkbPtrDfltAction): int8
proc XkbSASetPtrDfltValue*(a: PXkbPtrDfltAction, c: pointer)
type
PXkbSwitchScreenAction* = ptr XkbSwitchScreenAction
XkbSwitchScreenAction*{.final.} = object
theType*: int8
flags*: int8
screenXXX*: int8
{.deprecated: [TXkbSwitchScreenAction: XkbSwitchScreenAction].}
proc XkbSAScreen*(a: PXkbSwitchScreenAction): int8
proc XkbSASetScreen*(a: PXkbSwitchScreenAction, s: pointer)
type
PXkbCtrlsAction* = ptr XkbCtrlsAction
XkbCtrlsAction*{.final.} = object
theType*: int8
flags*: int8
ctrls3*: int8
ctrls2*: int8
ctrls1*: int8
ctrls0*: int8
{.deprecated: [TXkbCtrlsAction: XkbCtrlsAction].}
proc XkbActionSetCtrls*(a: PXkbCtrlsAction, c: int8)
proc XkbActionCtrls*(a: PXkbCtrlsAction): int16
type
PXkbMessageAction* = ptr XkbMessageAction
XkbMessageAction*{.final.} = object
theType*: int8
flags*: int8
message*: array[0..5, char]
{.deprecated: [TXkbMessageAction: XkbMessageAction].}
type
PXkbRedirectKeyAction* = ptr XkbRedirectKeyAction
XkbRedirectKeyAction*{.final.} = object
theType*: int8
new_key*: int8
mods_mask*: int8
mods*: int8
vmods_mask0*: int8
vmods_mask1*: int8
vmods0*: int8
vmods1*: int8
{.deprecated: [TXkbRedirectKeyAction: XkbRedirectKeyAction].}
proc XkbSARedirectVMods*(a: PXkbRedirectKeyAction): int16
proc XkbSARedirectSetVMods*(a: PXkbRedirectKeyAction, m: int8)
proc XkbSARedirectVModsMask*(a: PXkbRedirectKeyAction): int16
proc XkbSARedirectSetVModsMask*(a: PXkbRedirectKeyAction, m: int8)
type
PXkbDeviceBtnAction* = ptr XkbDeviceBtnAction
XkbDeviceBtnAction*{.final.} = object
theType*: int8
flags*: int8
count*: int8
button*: int8
device*: int8
{.deprecated: [TXkbDeviceBtnAction: XkbDeviceBtnAction].}
type
PXkbDeviceValuatorAction* = ptr XkbDeviceValuatorAction
XkbDeviceValuatorAction*{.final.} = object #
# Macros to classify key actions
#
theType*: int8
device*: int8
v1_what*: int8
v1_ndx*: int8
v1_value*: int8
v2_what*: int8
v2_ndx*: int8
v2_value*: int8
{.deprecated: [TXkbDeviceValuatorAction: XkbDeviceValuatorAction].}
const
XkbAnyActionDataSize* = 7
type
PXkbAnyAction* = ptr XkbAnyAction
XkbAnyAction*{.final.} = object
theType*: int8
data*: array[0..XkbAnyActionDataSize - 1, int8]
{.deprecated: [TXkbAnyAction: XkbAnyAction].}
proc XkbIsModAction*(a: PXkbAnyAction): bool
proc XkbIsGroupAction*(a: PXkbAnyAction): bool
proc XkbIsPtrAction*(a: PXkbAnyAction): bool
type
PXkbAction* = ptr XkbAction
XkbAction*{.final.} = object #
# XKB request codes, used in:
# - xkbReqType field of all requests
# - requestMinor field of some events
#
any*: XkbAnyAction
mods*: XkbModAction
group*: XkbGroupAction
iso*: XkbISOAction
thePtr*: XkbPtrAction
btn*: XkbPtrBtnAction
dflt*: XkbPtrDfltAction
screen*: XkbSwitchScreenAction
ctrls*: XkbCtrlsAction
msg*: XkbMessageAction
redirect*: XkbRedirectKeyAction
devbtn*: XkbDeviceBtnAction
devval*: XkbDeviceValuatorAction
theType*: int8
{.deprecated: [TXkbAction: XkbAction].}
const
X_kbUseExtension* = 0
X_kbSelectEvents* = 1
X_kbBell* = 3
X_kbGetState* = 4
X_kbLatchLockState* = 5
X_kbGetControls* = 6
X_kbSetControls* = 7
X_kbGetMap* = 8
X_kbSetMap* = 9
X_kbGetCompatMap* = 10
X_kbSetCompatMap* = 11
X_kbGetIndicatorState* = 12
X_kbGetIndicatorMap* = 13
X_kbSetIndicatorMap* = 14
X_kbGetNamedIndicator* = 15
X_kbSetNamedIndicator* = 16
X_kbGetNames* = 17
X_kbSetNames* = 18
X_kbGetGeometry* = 19
X_kbSetGeometry* = 20
X_kbPerClientFlags* = 21
X_kbListComponents* = 22
X_kbGetKbdByName* = 23
X_kbGetDeviceInfo* = 24
X_kbSetDeviceInfo* = 25
X_kbSetDebuggingFlags* = 101 #
# In the X sense, XKB reports only one event.
# The type field of all XKB events is XkbEventCode
#
const
XkbEventCode* = 0
XkbNumberEvents* = XkbEventCode + 1 #
# XKB has a minor event code so it can use one X event code for
# multiple purposes.
# - reported in the xkbType field of all XKB events.
# - XkbSelectEventDetails: Indicates the event for which event details
# are being changed
#
const
XkbNewKeyboardNotify* = 0
XkbMapNotify* = 1
XkbStateNotify* = 2
XkbControlsNotify* = 3
XkbIndicatorStateNotify* = 4
XkbIndicatorMapNotify* = 5
XkbNamesNotify* = 6
XkbCompatMapNotify* = 7
XkbBellNotify* = 8
XkbActionMessage* = 9
XkbAccessXNotify* = 10
XkbExtensionDeviceNotify* = 11 #
# Event Mask:
# - XkbSelectEvents: Specifies event interest.
#
const
XkbNewKeyboardNotifyMask* = int(1) shl 0
XkbMapNotifyMask* = int(1) shl 1
XkbStateNotifyMask* = int(1) shl 2
XkbControlsNotifyMask* = int(1) shl 3
XkbIndicatorStateNotifyMask* = int(1) shl 4
XkbIndicatorMapNotifyMask* = int(1) shl 5
XkbNamesNotifyMask* = int(1) shl 6
XkbCompatMapNotifyMask* = int(1) shl 7
XkbBellNotifyMask* = int(1) shl 8
XkbActionMessageMask* = int(1) shl 9
XkbAccessXNotifyMask* = int(1) shl 10
XkbExtensionDeviceNotifyMask* = int(1) shl 11
XkbAllEventsMask* = 0x00000FFF #
# NewKeyboardNotify event details:
#
const
XkbNKN_KeycodesMask* = int(1) shl 0
XkbNKN_GeometryMask* = int(1) shl 1
XkbNKN_DeviceIDMask* = int(1) shl 2
XkbAllNewKeyboardEventsMask* = 0x00000007 #
# AccessXNotify event types:
# - The 'what' field of AccessXNotify events reports the
# reason that the event was generated.
#
const
XkbAXN_SKPress* = 0
XkbAXN_SKAccept* = 1
XkbAXN_SKReject* = 2
XkbAXN_SKRelease* = 3
XkbAXN_BKAccept* = 4
XkbAXN_BKReject* = 5
XkbAXN_AXKWarning* = 6 #
# AccessXNotify details:
# - Used as an event detail mask to limit the conditions under which
# AccessXNotify events are reported
#
const
XkbAXN_SKPressMask* = int(1) shl 0
XkbAXN_SKAcceptMask* = int(1) shl 1
XkbAXN_SKRejectMask* = int(1) shl 2
XkbAXN_SKReleaseMask* = int(1) shl 3
XkbAXN_BKAcceptMask* = int(1) shl 4
XkbAXN_BKRejectMask* = int(1) shl 5
XkbAXN_AXKWarningMask* = int(1) shl 6
XkbAllAccessXEventsMask* = 0x0000000F #
# State detail mask:
# - The 'changed' field of StateNotify events reports which of
# the keyboard state components have changed.
# - Used as an event detail mask to limit the conditions under
# which StateNotify events are reported.
#
const
XkbModifierStateMask* = int(1) shl 0
XkbModifierBaseMask* = int(1) shl 1
XkbModifierLatchMask* = int(1) shl 2
XkbModifierLockMask* = int(1) shl 3
XkbGroupStateMask* = int(1) shl 4
XkbGroupBaseMask* = int(1) shl 5
XkbGroupLatchMask* = int(1) shl 6
XkbGroupLockMask* = int(1) shl 7
XkbCompatStateMask* = int(1) shl 8
XkbGrabModsMask* = int(1) shl 9
XkbCompatGrabModsMask* = int(1) shl 10
XkbLookupModsMask* = int(1) shl 11
XkbCompatLookupModsMask* = int(1) shl 12
XkbPointerButtonMask* = int(1) shl 13
XkbAllStateComponentsMask* = 0x00003FFF #
# Controls detail masks:
# The controls specified in XkbAllControlsMask:
# - The 'changed' field of ControlsNotify events reports which of
# the keyboard controls have changed.
# - The 'changeControls' field of the SetControls request specifies
# the controls for which values are to be changed.
# - Used as an event detail mask to limit the conditions under
# which ControlsNotify events are reported.
#
# The controls specified in the XkbAllBooleanCtrlsMask:
# - The 'enabledControls' field of ControlsNotify events reports the
# current status of the boolean controls.
# - The 'enabledControlsChanges' field of ControlsNotify events reports
# any boolean controls that have been turned on or off.
# - The 'affectEnabledControls' and 'enabledControls' fields of the
# kbSetControls request change the set of enabled controls.
# - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
# an XkbControlsRec specify the controls to be changed if the keyboard
# times out and the values to which they should be changed.
# - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
# request specifies the specify the controls to be reset when the
# client exits and the values to which they should be reset.
# - The 'ctrls' field of an indicator map specifies the controls
# that drive the indicator.
# - Specifies the boolean controls affected by the SetControls and
# LockControls key actions.
#
const
XkbRepeatKeysMask* = int(1) shl 0
XkbSlowKeysMask* = int(1) shl 1
XkbBounceKeysMask* = int(1) shl 2
XkbStickyKeysMask* = int(1) shl 3
XkbMouseKeysMask* = int(1) shl 4
XkbMouseKeysAccelMask* = int(1) shl 5
XkbAccessXKeysMask* = int(1) shl 6
XkbAccessXTimeoutMask* = int(1) shl 7
XkbAccessXFeedbackMask* = int(1) shl 8
XkbAudibleBellMask* = int(1) shl 9
XkbOverlay1Mask* = int(1) shl 10
XkbOverlay2Mask* = int(1) shl 11
XkbIgnoreGroupLockMask* = int(1) shl 12
XkbGroupsWrapMask* = int(1) shl 27
XkbInternalModsMask* = int(1) shl 28
XkbIgnoreLockModsMask* = int(1) shl 29
XkbPerKeyRepeatMask* = int(1) shl 30
XkbControlsEnabledMask* = int(1) shl 31
XkbAccessXOptionsMask* = XkbStickyKeysMask or XkbAccessXFeedbackMask
XkbAllBooleanCtrlsMask* = 0x00001FFF
XkbAllControlsMask* = 0xF8001FFF #
# Compatibility Map Compontents:
# - Specifies the components to be allocated in XkbAllocCompatMap.
#
const
XkbSymInterpMask* = 1 shl 0
XkbGroupCompatMask* = 1 shl 1
XkbAllCompatMask* = 0x00000003 #
# Assorted constants and limits.
#
const
XkbAllIndicatorsMask* = 0xFFFFFFFF #
# Map components masks:
# Those in AllMapComponentsMask:
# - Specifies the individual fields to be loaded or changed for the
# GetMap and SetMap requests.
# Those in ClientInfoMask:
# - Specifies the components to be allocated by XkbAllocClientMap.
# Those in ServerInfoMask:
# - Specifies the components to be allocated by XkbAllocServerMap.
#
const
XkbKeyTypesMask* = 1 shl 0
XkbKeySymsMask* = 1 shl 1
XkbModifierMapMask* = 1 shl 2
XkbExplicitComponentsMask* = 1 shl 3
XkbKeyActionsMask* = 1 shl 4
XkbKeyBehaviorsMask* = 1 shl 5
XkbVirtualModsMask* = 1 shl 6
XkbVirtualModMapMask* = 1 shl 7
XkbAllClientInfoMask* = XkbKeyTypesMask or XkbKeySymsMask or
XkbModifierMapMask
XkbAllServerInfoMask* = XkbExplicitComponentsMask or XkbKeyActionsMask or
XkbKeyBehaviorsMask or XkbVirtualModsMask or XkbVirtualModMapMask
XkbAllMapComponentsMask* = XkbAllClientInfoMask or XkbAllServerInfoMask #
# Names component mask:
# - Specifies the names to be loaded or changed for the GetNames and
# SetNames requests.
# - Specifies the names that have changed in a NamesNotify event.
# - Specifies the names components to be allocated by XkbAllocNames.
const
XkbKeycodesNameMask* = 1 shl 0
XkbGeometryNameMask* = 1 shl 1
XkbSymbolsNameMask* = 1 shl 2
XkbPhysSymbolsNameMask* = 1 shl 3
XkbTypesNameMask* = 1 shl 4
XkbCompatNameMask* = 1 shl 5
XkbKeyTypeNamesMask* = 1 shl 6
XkbKTLevelNamesMask* = 1 shl 7
XkbIndicatorNamesMask* = 1 shl 8
XkbKeyNamesMask* = 1 shl 9
XkbKeyAliasesMask* = 1 shl 10
XkbVirtualModNamesMask* = 1 shl 11
XkbGroupNamesMask* = 1 shl 12
XkbRGNamesMask* = 1 shl 13
XkbComponentNamesMask* = 0x0000003F
XkbAllNamesMask* = 0x00003FFF #
# Miscellaneous event details:
# - event detail masks for assorted events that don't reall
# have any details.
const
XkbAllStateEventsMask* = XkbAllStateComponentsMask
XkbAllMapEventsMask* = XkbAllMapComponentsMask
XkbAllControlEventsMask* = XkbAllControlsMask
XkbAllIndicatorEventsMask* = XkbAllIndicatorsMask
XkbAllNameEventsMask* = XkbAllNamesMask
XkbAllCompatMapEventsMask* = XkbAllCompatMask
XkbAllBellEventsMask* = int(1) shl 0
XkbAllActionMessagesMask* = int(1) shl 0 #
# XKB reports one error: BadKeyboard
# A further reason for the error is encoded into to most significant
# byte of the resourceID for the error:
# XkbErr_BadDevice - the device in question was not found
# XkbErr_BadClass - the device was found but it doesn't belong to
# the appropriate class.
# XkbErr_BadId - the device was found and belongs to the right
# class, but not feedback with a matching id was
# found.
# The low byte of the resourceID for this error contains the device
# id, class specifier or feedback id that failed.
#
const
XkbKeyboard* = 0
XkbNumberErrors* = 1
XkbErr_BadDevice* = 0x000000FF
XkbErr_BadClass* = 0x000000FE
XkbErr_BadId* = 0x000000FD #
# Keyboard Components Mask:
# - Specifies the components that follow a GetKeyboardByNameReply
#
const
XkbClientMapMask* = int(1) shl 0
XkbServerMapMask* = int(1) shl 1
XkbCompatMapMask* = int(1) shl 2
XkbIndicatorMapMask* = int(1) shl 3
XkbNamesMask* = int(1) shl 4
XkbGeometryMask* = int(1) shl 5
XkbControlsMask* = int(1) shl 6
XkbAllComponentsMask* = 0x0000007F #
# AccessX Options Mask
# - The 'accessXOptions' field of an XkbControlsRec specifies the
# AccessX options that are currently in effect.
# - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
# fields of an XkbControlsRec specify the Access X options to be
# changed if the keyboard times out and the values to which they
# should be changed.
#
const
XkbAX_SKPressFBMask* = int(1) shl 0
XkbAX_SKAcceptFBMask* = int(1) shl 1
XkbAX_FeatureFBMask* = int(1) shl 2
XkbAX_SlowWarnFBMask* = int(1) shl 3
XkbAX_IndicatorFBMask* = int(1) shl 4
XkbAX_StickyKeysFBMask* = int(1) shl 5
XkbAX_TwoKeysMask* = int(1) shl 6
XkbAX_LatchToLockMask* = int(1) shl 7
XkbAX_SKReleaseFBMask* = int(1) shl 8
XkbAX_SKRejectFBMask* = int(1) shl 9
XkbAX_BKRejectFBMask* = int(1) shl 10
XkbAX_DumbBellFBMask* = int(1) shl 11
XkbAX_FBOptionsMask* = 0x00000F3F
XkbAX_SKOptionsMask* = 0x000000C0
XkbAX_AllOptionsMask* = 0x00000FFF #
# XkbUseCoreKbd is used to specify the core keyboard without having
# to look up its X input extension identifier.
# XkbUseCorePtr is used to specify the core pointer without having
# to look up its X input extension identifier.
# XkbDfltXIClass is used to specify "don't care" any place that the
# XKB protocol is looking for an X Input Extension
# device class.
# XkbDfltXIId is used to specify "don't care" any place that the
# XKB protocol is looking for an X Input Extension
# feedback identifier.
# XkbAllXIClasses is used to get information about all device indicators,
# whether they're part of the indicator feedback class
# or the keyboard feedback class.
# XkbAllXIIds is used to get information about all device indicator
# feedbacks without having to list them.
# XkbXINone is used to indicate that no class or id has been specified.
# XkbLegalXILedClass(c) True if 'c' specifies a legal class with LEDs
# XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
# XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
# XkbExplicitXIClass(c) True if 'c' explicitly specifies a device class
# XkbExplicitXIId(c) True if 'i' explicitly specifies a device id
# XkbSingleXIClass(c) True if 'c' specifies exactly one device class,
# including the default.
# XkbSingleXIId(i) True if 'i' specifies exactly one device
# identifier, including the default.
#
const
XkbUseCoreKbd* = 0x00000100
XkbUseCorePtr* = 0x00000200
XkbDfltXIClass* = 0x00000300
XkbDfltXIId* = 0x00000400
XkbAllXIClasses* = 0x00000500
XkbAllXIIds* = 0x00000600
XkbXINone* = 0x0000FF00
proc XkbLegalXILedClass*(c: int): bool
proc XkbLegalXIBellClass*(c: int): bool
proc XkbExplicitXIDevice*(c: int): bool
proc XkbExplicitXIClass*(c: int): bool
proc XkbExplicitXIId*(c: int): bool
proc XkbSingleXIClass*(c: int): bool
proc XkbSingleXIId*(c: int): bool
const
XkbNoModifier* = 0x000000FF
XkbNoShiftLevel* = 0x000000FF
XkbNoShape* = 0x000000FF
XkbNoIndicator* = 0x000000FF
XkbNoModifierMask* = 0
XkbAllModifiersMask* = 0x000000FF
XkbAllVirtualModsMask* = 0x0000FFFF
XkbNumKbdGroups* = 4
XkbMaxKbdGroup* = XkbNumKbdGroups - 1
XkbMaxMouseKeysBtn* = 4 #
# Group Index and Mask:
# - Indices into the kt_index array of a key type.
# - Mask specifies types to be changed for XkbChangeTypesOfKey
#
const
XkbGroup1Index* = 0
XkbGroup2Index* = 1
XkbGroup3Index* = 2
XkbGroup4Index* = 3
XkbAnyGroup* = 254
XkbAllGroups* = 255
XkbGroup1Mask* = 1 shl 0
XkbGroup2Mask* = 1 shl 1
XkbGroup3Mask* = 1 shl 2
XkbGroup4Mask* = 1 shl 3
XkbAnyGroupMask* = 1 shl 7
XkbAllGroupsMask* = 0x0000000F #
# BuildCoreState: Given a keyboard group and a modifier state,
# construct the value to be reported an event.
# GroupForCoreState: Given the state reported in an event,
# determine the keyboard group.
# IsLegalGroup: Returns TRUE if 'g' is a valid group index.
#
proc XkbBuildCoreState*(m, g: int): int
proc XkbGroupForCoreState*(s: int): int
proc XkbIsLegalGroup*(g: int): bool
#
# GroupsWrap values:
# - The 'groupsWrap' field of an XkbControlsRec specifies the
# treatment of out of range groups.
# - Bits 6 and 7 of the group info field of a key symbol map
# specify the interpretation of out of range groups for the
# corresponding key.
#
const
XkbWrapIntoRange* = 0x00000000
XkbClampIntoRange* = 0x00000040
XkbRedirectIntoRange* = 0x00000080 #
# Action flags: Reported in the 'flags' field of most key actions.
# Interpretation depends on the type of the action; not all actions
# accept all flags.
#
# Option Used for Actions
# ------ ----------------
# ClearLocks SetMods, LatchMods, SetGroup, LatchGroup
# LatchToLock SetMods, LatchMods, SetGroup, LatchGroup
# LockNoLock LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
# LockNoUnlock LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
# UseModMapMods SetMods, LatchMods, LockMods, ISOLock
# GroupAbsolute SetGroup, LatchGroup, LockGroup, ISOLock
# UseDfltButton PtrBtn, LockPtrBtn
# NoAcceleration MovePtr
# MoveAbsoluteX MovePtr
# MoveAbsoluteY MovePtr
# ISODfltIsGroup ISOLock
# ISONoAffectMods ISOLock
# ISONoAffectGroup ISOLock
# ISONoAffectPtr ISOLock
# ISONoAffectCtrls ISOLock
# MessageOnPress ActionMessage
# MessageOnRelease ActionMessage
# MessageGenKeyEvent ActionMessage
# AffectDfltBtn SetPtrDflt
# DfltBtnAbsolute SetPtrDflt
# SwitchApplication SwitchScreen
# SwitchAbsolute SwitchScreen
#
const
XkbSA_ClearLocks* = int(1) shl 0
XkbSA_LatchToLock* = int(1) shl 1
XkbSA_LockNoLock* = int(1) shl 0
XkbSA_LockNoUnlock* = int(1) shl 1
XkbSA_UseModMapMods* = int(1) shl 2
XkbSA_GroupAbsolute* = int(1) shl 2
XkbSA_UseDfltButton* = 0
XkbSA_NoAcceleration* = int(1) shl 0
XkbSA_MoveAbsoluteX* = int(1) shl 1
XkbSA_MoveAbsoluteY* = int(1) shl 2
XkbSA_ISODfltIsGroup* = int(1) shl 7
XkbSA_ISONoAffectMods* = int(1) shl 6
XkbSA_ISONoAffectGroup* = int(1) shl 5
XkbSA_ISONoAffectPtr* = int(1) shl 4
XkbSA_ISONoAffectCtrls* = int(1) shl 3
XkbSA_ISOAffectMask* = 0x00000078
XkbSA_MessageOnPress* = int(1) shl 0
XkbSA_MessageOnRelease* = int(1) shl 1
XkbSA_MessageGenKeyEvent* = int(1) shl 2
XkbSA_AffectDfltBtn* = 1
XkbSA_DfltBtnAbsolute* = int(1) shl 2
XkbSA_SwitchApplication* = int(1) shl 0
XkbSA_SwitchAbsolute* = int(1) shl 2 #
# The following values apply to the SA_DeviceValuator
# action only. Valuator operations specify the action
# to be taken. Values specified in the action are
# multiplied by 2^scale before they are applied.
#
const
XkbSA_IgnoreVal* = 0x00000000
XkbSA_SetValMin* = 0x00000010
XkbSA_SetValCenter* = 0x00000020
XkbSA_SetValMax* = 0x00000030
XkbSA_SetValRelative* = 0x00000040
XkbSA_SetValAbsolute* = 0x00000050
XkbSA_ValOpMask* = 0x00000070
XkbSA_ValScaleMask* = 0x00000007
proc XkbSA_ValOp*(a: int): int
proc XkbSA_ValScale*(a: int): int
#
# Action types: specifies the type of a key action. Reported in the
# type field of all key actions.
#
const
XkbSA_NoAction* = 0x00000000
XkbSA_SetMods* = 0x00000001
XkbSA_LatchMods* = 0x00000002
XkbSA_LockMods* = 0x00000003
XkbSA_SetGroup* = 0x00000004
XkbSA_LatchGroup* = 0x00000005
XkbSA_LockGroup* = 0x00000006
XkbSA_MovePtr* = 0x00000007
XkbSA_PtrBtn* = 0x00000008
XkbSA_LockPtrBtn* = 0x00000009
XkbSA_SetPtrDflt* = 0x0000000A
XkbSA_ISOLock* = 0x0000000B
XkbSA_Terminate* = 0x0000000C
XkbSA_SwitchScreen* = 0x0000000D
XkbSA_SetControls* = 0x0000000E
XkbSA_LockControls* = 0x0000000F
XkbSA_ActionMessage* = 0x00000010
XkbSA_RedirectKey* = 0x00000011
XkbSA_DeviceBtn* = 0x00000012
XkbSA_LockDeviceBtn* = 0x00000013
XkbSA_DeviceValuator* = 0x00000014
XkbSA_LastAction* = XkbSA_DeviceValuator
XkbSA_NumActions* = XkbSA_LastAction + 1
const
XkbSA_XFree86Private* = 0x00000086
#
# Specifies the key actions that clear latched groups or modifiers.
#
const ##define XkbSA_BreakLatch \
# ((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\
# (1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
# (1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
# (1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
#
XkbSA_BreakLatch* = (1 shl XkbSA_PtrBtn) or (1 shl XkbSA_LockPtrBtn) or
(1 shl XkbSA_Terminate) or (1 shl XkbSA_SwitchScreen) or
(1 shl XkbSA_SetControls) or (1 shl XkbSA_LockControls) or
(1 shl XkbSA_ActionMessage) or (1 shl XkbSA_RedirectKey) or
(1 shl XkbSA_DeviceBtn) or (1 shl XkbSA_LockDeviceBtn) #
# Key Behavior Qualifier:
# KB_Permanent indicates that the behavior describes an unalterable
# characteristic of the keyboard, not an XKB software-simulation of
# the listed behavior.
# Key Behavior Types:
# Specifies the behavior of the underlying key.
#
const
XkbKB_Permanent* = 0x00000080
XkbKB_OpMask* = 0x0000007F
XkbKB_Default* = 0x00000000
XkbKB_Lock* = 0x00000001
XkbKB_RadioGroup* = 0x00000002
XkbKB_Overlay1* = 0x00000003
XkbKB_Overlay2* = 0x00000004
XkbKB_RGAllowNone* = 0x00000080 #
# Various macros which describe the range of legal keycodes.
#
const
XkbMinLegalKeyCode* = 8
XkbMaxLegalKeyCode* = 255
XkbMaxKeyCount* = XkbMaxLegalKeyCode - XkbMinLegalKeyCode + 1
XkbPerKeyBitArraySize* = (XkbMaxLegalKeyCode + 1) div 8
proc XkbIsLegalKeycode*(k: int): bool
type
PXkbControlsPtr* = ptr XkbControlsRec
XkbControlsRec*{.final.} = object
mk_dflt_btn*: int8
num_groups*: int8
groups_wrap*: int8
internal*: XkbModsRec
ignore_lock*: XkbModsRec
enabled_ctrls*: int16
repeat_delay*: int16
repeat_interval*: int16
slow_keys_delay*: int16
debounce_delay*: int16
mk_delay*: int16
mk_interval*: int16
mk_time_to_max*: int16
mk_max_speed*: int16
mk_curve*: int16
ax_options*: int16
ax_timeout*: int16
axt_opts_mask*: int16
axt_opts_values*: int16
axt_ctrls_mask*: int16
axt_ctrls_values*: int16
per_key_repeat*: array[0..XkbPerKeyBitArraySize - 1, int8]
{.deprecated: [TXkbControlsRec: XkbControlsRec].}
proc XkbAX_AnyFeedback*(c: PXkbControlsPtr): int16
proc XkbAX_NeedOption*(c: PXkbControlsPtr, w: int16): int16
proc XkbAX_NeedFeedback*(c: PXkbControlsPtr, w: int16): bool
#
# Assorted constants and limits.
#
const
XkbNumModifiers* = 8
XkbNumVirtualMods* = 16
XkbNumIndicators* = 32
XkbMaxRadioGroups* = 32
XkbAllRadioGroupsMask* = 0xFFFFFFFF
XkbMaxShiftLevel* = 63
XkbMaxSymsPerKey* = XkbMaxShiftLevel * XkbNumKbdGroups
XkbRGMaxMembers* = 12
XkbActionMessageLength* = 6
XkbKeyNameLength* = 4
XkbMaxRedirectCount* = 8
XkbGeomPtsPerMM* = 10
XkbGeomMaxColors* = 32
XkbGeomMaxLabelColors* = 3
XkbGeomMaxPriority* = 255
type
PXkbServerMapPtr* = ptr XkbServerMapRec
XkbServerMapRec*{.final.} = object
num_acts*: int16
size_acts*: int16
acts*: ptr array[0..0xfff, XkbAction]
behaviors*: PXkbBehavior
key_acts*: PWord
explicit*: PByte
vmods*: array[0..XkbNumVirtualMods - 1, int8]
vmodmap*: PWord
{.deprecated: [TXkbServerMapRec: XkbServerMapRec].}
proc XkbSMKeyActionsPtr*(m: PXkbServerMapPtr, k: int16): PXkbAction
#
# Structures and access macros used primarily by clients
#
type
PXkbSymMapPtr* = ptr XkbSymMapRec
XkbSymMapRec*{.final.} = object
kt_index*: array[0..XkbNumKbdGroups - 1, int8]
group_info*: int8
width*: int8
offset*: int8
{.deprecated: [TXkbSymMapRec: XkbSymMapRec].}
type
PXkbClientMapPtr* = ptr XkbClientMapRec
XkbClientMapRec*{.final.} = object
size_types*: int8
num_types*: int8
types*: ptr array[0..0xffff, XkbKeyTypeRec]
size_syms*: int16
num_syms*: int16
syms*: ptr array[0..0xffff, KeySym]
key_sym_map*: ptr array[0..0xffff, XkbSymMapRec]
modmap*: PByte
{.deprecated: [TXkbClientMapRec: XkbClientMapRec].}
proc XkbCMKeyGroupInfo*(m: PXkbClientMapPtr, k: int16): int8
proc XkbCMKeyNumGroups*(m: PXkbClientMapPtr, k: int16): int8
proc XkbCMKeyGroupWidth*(m: PXkbClientMapPtr, k: int16, g: int8): int8
proc XkbCMKeyGroupsWidth*(m: PXkbClientMapPtr, k: int16): int8
proc XkbCMKeyTypeIndex*(m: PXkbClientMapPtr, k: int16, g: int8): int8
proc XkbCMKeyType*(m: PXkbClientMapPtr, k: int16, g: int8): PXkbKeyTypePtr
proc XkbCMKeyNumSyms*(m: PXkbClientMapPtr, k: int16): int16
proc XkbCMKeySymsOffset*(m: PXkbClientMapPtr, k: int16): int8
#
# Compatibility structures and access macros
#
type
PXkbSymInterpretPtr* = ptr XkbSymInterpretRec
XkbSymInterpretRec*{.final.} = object
sym*: KeySym
flags*: int8
match*: int8
mods*: int8
virtual_mod*: int8
act*: XkbAnyAction
{.deprecated: [TXkbSymInterpretRec: XkbSymInterpretRec].}
type
PXkbCompatMapPtr* = ptr XkbCompatMapRec
XkbCompatMapRec*{.final.} = object
sym_interpret*: PXkbSymInterpretPtr
groups*: array[0..XkbNumKbdGroups - 1, XkbModsRec]
num_si*: int16
size_si*: int16
{.deprecated: [TXkbCompatMapRec: XkbCompatMapRec].}
type
PXkbIndicatorMapPtr* = ptr XkbIndicatorMapRec
XkbIndicatorMapRec*{.final.} = object
flags*: int8
which_groups*: int8
groups*: int8
which_mods*: int8
mods*: XkbModsRec
ctrls*: int16
{.deprecated: [TXkbIndicatorMapRec: XkbIndicatorMapRec].}
proc XkbIM_IsAuto*(i: PXkbIndicatorMapPtr): bool
proc XkbIM_InUse*(i: PXkbIndicatorMapPtr): bool
type
PXkbIndicatorPtr* = ptr XkbIndicatorRec
XkbIndicatorRec*{.final.} = object
phys_indicators*: int32
maps*: array[0..XkbNumIndicators - 1, XkbIndicatorMapRec]
{.deprecated: [TXkbIndicatorRec: XkbIndicatorRec].}
type
PXkbKeyNamePtr* = ptr XkbKeyNameRec
XkbKeyNameRec*{.final.} = object
name*: array[0..XkbKeyNameLength - 1, char]
{.deprecated: [TXkbKeyNameRec: XkbKeyNameRec].}
type
PXkbKeyAliasPtr* = ptr XkbKeyAliasRec
XkbKeyAliasRec*{.final.} = object #
# Names for everything
#
real*: array[0..XkbKeyNameLength - 1, char]
alias*: array[0..XkbKeyNameLength - 1, char]
{.deprecated: [TXkbKeyAliasRec: XkbKeyAliasRec].}
type
PXkbNamesPtr* = ptr XkbNamesRec
XkbNamesRec*{.final.} = object #
# Key Type index and mask for the four standard key types.
keycodes*: Atom
geometry*: Atom
symbols*: Atom
types*: Atom
compat*: Atom
vmods*: array[0..XkbNumVirtualMods - 1, Atom]
indicators*: array[0..XkbNumIndicators - 1, Atom]
groups*: array[0..XkbNumKbdGroups - 1, Atom]
keys*: PXkbKeyNamePtr
key_aliases*: PXkbKeyAliasPtr
radio_groups*: PAtom
phys_symbols*: Atom
num_keys*: int8
num_key_aliases*: int8
num_rg*: int16
{.deprecated: [TXkbNamesRec: XkbNamesRec].}
const
XkbOneLevelIndex* = 0
XkbTwoLevelIndex* = 1
XkbAlphabeticIndex* = 2
XkbKeypadIndex* = 3
XkbLastRequiredType* = XkbKeypadIndex
XkbNumRequiredTypes* = XkbLastRequiredType + 1
XkbMaxKeyTypes* = 255
XkbOneLevelMask* = 1 shl 0
XkbTwoLevelMask* = 1 shl 1
XkbAlphabeticMask* = 1 shl 2
XkbKeypadMask* = 1 shl 3
XkbAllRequiredTypes* = 0x0000000F
proc XkbShiftLevel*(n: int8): int8
proc XkbShiftLevelMask*(n: int8): int8
#
# Extension name and version information
#
const
XkbName* = "XKEYBOARD"
XkbMajorVersion* = 1
XkbMinorVersion* = 0 #
# Explicit map components:
# - Used in the 'explicit' field of an XkbServerMap. Specifies
# the keyboard components that should _not_ be updated automatically
# in response to core protocol keyboard mapping requests.
#
const
XkbExplicitKeyTypesMask* = 0x0000000F
XkbExplicitKeyType1Mask* = 1 shl 0
XkbExplicitKeyType2Mask* = 1 shl 1
XkbExplicitKeyType3Mask* = 1 shl 2
XkbExplicitKeyType4Mask* = 1 shl 3
XkbExplicitInterpretMask* = 1 shl 4
XkbExplicitAutoRepeatMask* = 1 shl 5
XkbExplicitBehaviorMask* = 1 shl 6
XkbExplicitVModMapMask* = 1 shl 7
XkbAllExplicitMask* = 0x000000FF #
# Symbol interpretations flags:
# - Used in the flags field of a symbol interpretation
#
const
XkbSI_AutoRepeat* = 1 shl 0
XkbSI_LockingKey* = 1 shl 1 #
# Symbol interpretations match specification:
# - Used in the match field of a symbol interpretation to specify
# the conditions under which an interpretation is used.
#
const
XkbSI_LevelOneOnly* = 0x00000080
XkbSI_OpMask* = 0x0000007F
XkbSI_NoneOf* = 0
XkbSI_AnyOfOrNone* = 1
XkbSI_AnyOf* = 2
XkbSI_AllOf* = 3
XkbSI_Exactly* = 4 #
# Indicator map flags:
# - Used in the flags field of an indicator map to indicate the
# conditions under which and indicator can be changed and the
# effects of changing the indicator.
#
const
XkbIM_NoExplicit* = int(1) shl 7
XkbIM_NoAutomatic* = int(1) shl 6
XkbIM_LEDDrivesKB* = int(1) shl 5 #
# Indicator map component specifications:
# - Used by the 'which_groups' and 'which_mods' fields of an indicator
# map to specify which keyboard components should be used to drive
# the indicator.
#
const
XkbIM_UseBase* = int(1) shl 0
XkbIM_UseLatched* = int(1) shl 1
XkbIM_UseLocked* = int(1) shl 2
XkbIM_UseEffective* = int(1) shl 3
XkbIM_UseCompat* = int(1) shl 4
XkbIM_UseNone* = 0
XkbIM_UseAnyGroup* = XkbIM_UseBase or XkbIM_UseLatched or XkbIM_UseLocked or
XkbIM_UseEffective
XkbIM_UseAnyMods* = XkbIM_UseAnyGroup or XkbIM_UseCompat #
# GetByName components:
# - Specifies desired or necessary components to GetKbdByName request.
# - Reports the components that were found in a GetKbdByNameReply
#
const
XkbGBN_TypesMask* = int(1) shl 0
XkbGBN_CompatMapMask* = int(1) shl 1
XkbGBN_ClientSymbolsMask* = int(1) shl 2
XkbGBN_ServerSymbolsMask* = int(1) shl 3
XkbGBN_SymbolsMask* = XkbGBN_ClientSymbolsMask or XkbGBN_ServerSymbolsMask
XkbGBN_IndicatorMapMask* = int(1) shl 4
XkbGBN_KeyNamesMask* = int(1) shl 5
XkbGBN_GeometryMask* = int(1) shl 6
XkbGBN_OtherNamesMask* = int(1) shl 7
XkbGBN_AllComponentsMask* = 0x000000FF #
# ListComponents flags
#
const
XkbLC_Hidden* = int(1) shl 0
XkbLC_Default* = int(1) shl 1
XkbLC_Partial* = int(1) shl 2
XkbLC_AlphanumericKeys* = int(1) shl 8
XkbLC_ModifierKeys* = int(1) shl 9
XkbLC_KeypadKeys* = int(1) shl 10
XkbLC_FunctionKeys* = int(1) shl 11
XkbLC_AlternateGroup* = int(1) shl 12 #
# X Input Extension Interactions
# - Specifies the possible interactions between XKB and the X input
# extension
# - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
# XKB information about an extension device.
# - Reports the list of supported optional features in the reply to
# XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
# XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
# events to indicate an attempt to use an unsupported feature.
#
const
XkbXI_KeyboardsMask* = int(1) shl 0
XkbXI_ButtonActionsMask* = int(1) shl 1
XkbXI_IndicatorNamesMask* = int(1) shl 2
XkbXI_IndicatorMapsMask* = int(1) shl 3
XkbXI_IndicatorStateMask* = int(1) shl 4
XkbXI_UnsupportedFeatureMask* = int(1) shl 15
XkbXI_AllFeaturesMask* = 0x0000001F
XkbXI_AllDeviceFeaturesMask* = 0x0000001E
XkbXI_IndicatorsMask* = 0x0000001C
XkbAllExtensionDeviceEventsMask* = 0x0000801F #
# Per-Client Flags:
# - Specifies flags to be changed by the PerClientFlags request.
#
const
XkbPCF_DetectableAutoRepeatMask* = int(1) shl 0
XkbPCF_GrabsUseXKBStateMask* = int(1) shl 1
XkbPCF_AutoResetControlsMask* = int(1) shl 2
XkbPCF_LookupStateWhenGrabbed* = int(1) shl 3
XkbPCF_SendEventUsesXKBState* = int(1) shl 4
XkbPCF_AllFlagsMask* = 0x0000001F #
# Debugging flags and controls
#
const
XkbDF_DisableLocks* = 1 shl 0
type
PXkbPropertyPtr* = ptr XkbPropertyRec
XkbPropertyRec*{.final.} = object
name*: cstring
value*: cstring
{.deprecated: [TXkbPropertyRec: XkbPropertyRec].}
type
PXkbColorPtr* = ptr XkbColorRec
XkbColorRec*{.final.} = object
pixel*: int16
spec*: cstring
{.deprecated: [TXkbColorRec: XkbColorRec].}
type
PXkbPointPtr* = ptr XkbPointRec
XkbPointRec*{.final.} = object
x*: int16
y*: int16
{.deprecated: [TXkbPointRec: XkbPointRec].}
type
PXkbBoundsPtr* = ptr XkbBoundsRec
XkbBoundsRec*{.final.} = object
x1*: int16
y1*: int16
x2*: int16
y2*: int16
{.deprecated: [TXkbBoundsRec: XkbBoundsRec].}
proc XkbBoundsWidth*(b: PXkbBoundsPtr): int16
proc XkbBoundsHeight*(b: PXkbBoundsPtr): int16
type
PXkbOutlinePtr* = ptr XkbOutlineRec
XkbOutlineRec*{.final.} = object
num_points*: int16
sz_points*: int16
corner_radius*: int16
points*: PXkbPointPtr
{.deprecated: [TXkbOutlineRec: XkbOutlineRec].}
type
PXkbShapePtr* = ptr XkbShapeRec
XkbShapeRec*{.final.} = object
name*: Atom
num_outlines*: int16
sz_outlines*: int16
outlines*: ptr array[0..0xffff, XkbOutlineRec]
approx*: ptr array[0..0xffff, XkbOutlineRec]
primary*: ptr array[0..0xffff, XkbOutlineRec]
bounds*: XkbBoundsRec
{.deprecated: [TXkbShapeRec: XkbShapeRec].}
proc XkbOutlineIndex*(s: PXkbShapePtr, o: PXkbOutlinePtr): int32
type
PXkbShapeDoodadPtr* = ptr XkbShapeDoodadRec
XkbShapeDoodadRec*{.final.} = object
name*: Atom
theType*: int8
priority*: int8
top*: int16
left*: int16
angle*: int16
color_ndx*: int16
shape_ndx*: int16
{.deprecated: [TXkbShapeDoodadRec: XkbShapeDoodadRec].}
type
PXkbTextDoodadPtr* = ptr XkbTextDoodadRec
XkbTextDoodadRec*{.final.} = object
name*: Atom
theType*: int8
priority*: int8
top*: int16
left*: int16
angle*: int16
width*: int16
height*: int16
color_ndx*: int16
text*: cstring
font*: cstring
{.deprecated: [TXkbTextDoodadRec: XkbTextDoodadRec].}
type
PXkbIndicatorDoodadPtr* = ptr XkbIndicatorDoodadRec
XkbIndicatorDoodadRec*{.final.} = object
name*: Atom
theType*: int8
priority*: int8
top*: int16
left*: int16
angle*: int16
shape_ndx*: int16
on_color_ndx*: int16
off_color_ndx*: int16
{.deprecated: [TXkbIndicatorDoodadRec: XkbIndicatorDoodadRec].}
type
PXkbLogoDoodadPtr* = ptr XkbLogoDoodadRec
XkbLogoDoodadRec*{.final.} = object
name*: Atom
theType*: int8
priority*: int8
top*: int16
left*: int16
angle*: int16
color_ndx*: int16
shape_ndx*: int16
logo_name*: cstring
{.deprecated: [TXkbLogoDoodadRec: XkbLogoDoodadRec].}
type
PXkbAnyDoodadPtr* = ptr XkbAnyDoodadRec
XkbAnyDoodadRec*{.final.} = object
name*: Atom
theType*: int8
priority*: int8
top*: int16
left*: int16
angle*: int16
{.deprecated: [TXkbAnyDoodadRec: XkbAnyDoodadRec].}
type
PXkbDoodadPtr* = ptr XkbDoodadRec
XkbDoodadRec*{.final.} = object
any*: XkbAnyDoodadRec
shape*: XkbShapeDoodadRec
text*: XkbTextDoodadRec
indicator*: XkbIndicatorDoodadRec
logo*: XkbLogoDoodadRec
{.deprecated: [TXkbDoodadRec: XkbDoodadRec].}
const
XkbUnknownDoodad* = 0
XkbOutlineDoodad* = 1
XkbSolidDoodad* = 2
XkbTextDoodad* = 3
XkbIndicatorDoodad* = 4
XkbLogoDoodad* = 5
type
PXkbKeyPtr* = ptr XkbKeyRec
XkbKeyRec*{.final.} = object
name*: XkbKeyNameRec
gap*: int16
shape_ndx*: int8
color_ndx*: int8
{.deprecated: [TXkbKeyRec: XkbKeyRec].}
type
PXkbRowPtr* = ptr XkbRowRec
XkbRowRec*{.final.} = object
top*: int16
left*: int16
num_keys*: int16
sz_keys*: int16
vertical*: int16
Keys*: PXkbKeyPtr
bounds*: XkbBoundsRec
{.deprecated: [TXkbRowRec: XkbRowRec].}
type
PXkbOverlayPtr* = ptr XkbOverlayRec #forward for XkbSectionRec use.
#Do not add more "type"
PXkbSectionPtr* = ptr XkbSectionRec
XkbSectionRec*{.final.} = object #Do not add more "type"
name*: Atom
priority*: int8
top*: int16
left*: int16
width*: int16
height*: int16
angle*: int16
num_rows*: int16
num_doodads*: int16
num_overlays*: int16
rows*: PXkbRowPtr
doodads*: PXkbDoodadPtr
bounds*: XkbBoundsRec
overlays*: PXkbOverlayPtr
PXkbOverlayKeyPtr* = ptr XkbOverlayKeyRec
XkbOverlayKeyRec*{.final.} = object #Do not add more "type"
over*: XkbKeyNameRec
under*: XkbKeyNameRec
PXkbOverlayRowPtr* = ptr XkbOverlayRowRec
XkbOverlayRowRec*{.final.} = object #Do not add more "type"
row_under*: int16
num_keys*: int16
sz_keys*: int16
keys*: PXkbOverlayKeyPtr
XkbOverlayRec*{.final.} = object
name*: Atom
section_under*: PXkbSectionPtr
num_rows*: int16
sz_rows*: int16
rows*: PXkbOverlayRowPtr
bounds*: PXkbBoundsPtr
{.deprecated: [TXkbSectionRec: XkbSectionRec].}
{.deprecated: [TXkbOverlayKeyRec: XkbOverlayKeyRec].}
{.deprecated: [TXkbOverlayRowRec: XkbOverlayRowRec].}
{.deprecated: [TXkbOverlayRec: XkbOverlayRec].}
type
PXkbGeometryRec* = ptr XkbGeometryRec
PXkbGeometryPtr* = PXkbGeometryRec
XkbGeometryRec*{.final.} = object
name*: Atom
width_mm*: int16
height_mm*: int16
label_font*: cstring
label_color*: PXkbColorPtr
base_color*: PXkbColorPtr
sz_properties*: int16
sz_colors*: int16
sz_shapes*: int16
sz_sections*: int16
sz_doodads*: int16
sz_key_aliases*: int16
num_properties*: int16
num_colors*: int16
num_shapes*: int16
num_sections*: int16
num_doodads*: int16
num_key_aliases*: int16
properties*: ptr array[0..0xffff, XkbPropertyRec]
colors*: ptr array[0..0xffff, XkbColorRec]
shapes*: ptr array[0..0xffff, XkbShapeRec]
sections*: ptr array[0..0xffff, XkbSectionRec]
key_aliases*: ptr array[0..0xffff, XkbKeyAliasRec]
{.deprecated: [TXkbGeometryRec: XkbGeometryRec].}
const
XkbGeomPropertiesMask* = 1 shl 0
XkbGeomColorsMask* = 1 shl 1
XkbGeomShapesMask* = 1 shl 2
XkbGeomSectionsMask* = 1 shl 3
XkbGeomDoodadsMask* = 1 shl 4
XkbGeomKeyAliasesMask* = 1 shl 5
XkbGeomAllMask* = 0x0000003F
type
PXkbGeometrySizesPtr* = ptr XkbGeometrySizesRec
XkbGeometrySizesRec*{.final.} = object #
# Tie it all together into one big keyboard description
#
which*: int16
num_properties*: int16
num_colors*: int16
num_shapes*: int16
num_sections*: int16
num_doodads*: int16
num_key_aliases*: int16
{.deprecated: [TXkbGeometrySizesRec: XkbGeometrySizesRec].}
type
PXkbDescPtr* = ptr XkbDescRec
XkbDescRec*{.final.} = object
dpy*: PDisplay
flags*: int16
device_spec*: int16
min_key_code*: KeyCode
max_key_code*: KeyCode
ctrls*: PXkbControlsPtr
server*: PXkbServerMapPtr
map*: PXkbClientMapPtr
indicators*: PXkbIndicatorPtr
names*: PXkbNamesPtr
compat*: PXkbCompatMapPtr
geom*: PXkbGeometryPtr
{.deprecated: [TXkbDescRec: XkbDescRec].}
proc XkbKeyKeyTypeIndex*(d: PXkbDescPtr, k: int16, g: int8): int8
proc XkbKeyKeyType*(d: PXkbDescPtr, k: int16, g: int8): PXkbKeyTypePtr
proc XkbKeyGroupWidth*(d: PXkbDescPtr, k: int16, g: int8): int8
proc XkbKeyGroupsWidth*(d: PXkbDescPtr, k: int16): int8
proc XkbKeyGroupInfo*(d: PXkbDescPtr, k: int16): int8
proc XkbKeyNumGroups*(d: PXkbDescPtr, k: int16): int8
proc XkbKeyNumSyms*(d: PXkbDescPtr, k: int16): int16
proc XkbKeySym*(d: PXkbDescPtr, k: int16, n: int16): KeySym
proc XkbKeySymEntry*(d: PXkbDescPtr, k: int16, sl: int16, g: int8): KeySym
proc XkbKeyAction*(d: PXkbDescPtr, k: int16, n: int16): PXkbAction
proc XkbKeyActionEntry*(d: PXkbDescPtr, k: int16, sl: int16, g: int8): int8
proc XkbKeyHasActions*(d: PXkbDescPtr, k: int16): bool
proc XkbKeyNumActions*(d: PXkbDescPtr, k: int16): int16
proc XkbKeyActionsPtr*(d: PXkbDescPtr, k: int16): PXkbAction
proc XkbKeycodeInRange*(d: PXkbDescPtr, k: int16): bool
proc XkbNumKeys*(d: PXkbDescPtr): int8
#
# The following structures can be used to track changes
# to a keyboard device
#
type
PXkbMapChangesPtr* = ptr XkbMapChangesRec
XkbMapChangesRec*{.final.} = object
changed*: int16
min_key_code*: KeyCode
max_key_code*: KeyCode
first_type*: int8
num_types*: int8
first_key_sym*: KeyCode
num_key_syms*: int8
first_key_act*: KeyCode
num_key_acts*: int8
first_key_behavior*: KeyCode
num_key_behaviors*: int8
first_key_explicit*: KeyCode
num_key_explicit*: int8
first_modmap_key*: KeyCode
num_modmap_keys*: int8
first_vmodmap_key*: KeyCode
num_vmodmap_keys*: int8
pad*: int8
vmods*: int16
{.deprecated: [TXkbMapChangesRec: XkbMapChangesRec].}
type
PXkbControlsChangesPtr* = ptr XkbControlsChangesRec
XkbControlsChangesRec*{.final.} = object
changed_ctrls*: int16
enabled_ctrls_changes*: int16
num_groups_changed*: bool
{.deprecated: [TXkbControlsChangesRec: XkbControlsChangesRec].}
type
PXkbIndicatorChangesPtr* = ptr XkbIndicatorChangesRec
XkbIndicatorChangesRec*{.final.} = object
state_changes*: int16
map_changes*: int16
{.deprecated: [TXkbIndicatorChangesRec: XkbIndicatorChangesRec].}
type
PXkbNameChangesPtr* = ptr XkbNameChangesRec
XkbNameChangesRec*{.final.} = object
changed*: int16
first_type*: int8
num_types*: int8
first_lvl*: int8
num_lvls*: int8
num_aliases*: int8
num_rg*: int8
first_key*: int8
num_keys*: int8
changed_vmods*: int16
changed_indicators*: int32
changed_groups*: int8
{.deprecated: [TXkbNameChangesRec: XkbNameChangesRec].}
type
PXkbCompatChangesPtr* = ptr XkbCompatChangesRec
XkbCompatChangesRec*{.final.} = object
changed_groups*: int8
first_si*: int16
num_si*: int16
{.deprecated: [TXkbCompatChangesRec: XkbCompatChangesRec].}
type
PXkbChangesPtr* = ptr XkbChangesRec
XkbChangesRec*{.final.} = object #
# These data structures are used to construct a keymap from
# a set of components or to list components in the server
# database.
#
device_spec*: int16
state_changes*: int16
map*: XkbMapChangesRec
ctrls*: XkbControlsChangesRec
indicators*: XkbIndicatorChangesRec
names*: XkbNameChangesRec
compat*: XkbCompatChangesRec
{.deprecated: [TXkbChangesRec: XkbChangesRec].}
type
PXkbComponentNamesPtr* = ptr XkbComponentNamesRec
XkbComponentNamesRec*{.final.} = object
keymap*: ptr int16
keycodes*: ptr int16
types*: ptr int16
compat*: ptr int16
symbols*: ptr int16
geometry*: ptr int16
{.deprecated: [TXkbComponentNamesRec: XkbComponentNamesRec].}
type
PXkbComponentNamePtr* = ptr XkbComponentNameRec
XkbComponentNameRec*{.final.} = object
flags*: int16
name*: cstring
{.deprecated: [TXkbComponentNameRec: XkbComponentNameRec].}
type
PXkbComponentListPtr* = ptr XkbComponentListRec
XkbComponentListRec*{.final.} = object #
# The following data structures describe and track changes to a
# non-keyboard extension device
#
num_keymaps*: int16
num_keycodes*: int16
num_types*: int16
num_compat*: int16
num_symbols*: int16
num_geometry*: int16
keymaps*: PXkbComponentNamePtr
keycodes*: PXkbComponentNamePtr
types*: PXkbComponentNamePtr
compat*: PXkbComponentNamePtr
symbols*: PXkbComponentNamePtr
geometry*: PXkbComponentNamePtr
{.deprecated: [TXkbComponentListRec: XkbComponentListRec].}
type
PXkbDeviceLedInfoPtr* = ptr XkbDeviceLedInfoRec
XkbDeviceLedInfoRec*{.final.} = object
led_class*: int16
led_id*: int16
phys_indicators*: int16
maps_present*: int16
names_present*: int16
state*: int16
names*: array[0..XkbNumIndicators - 1, Atom]
maps*: array[0..XkbNumIndicators - 1, XkbIndicatorMapRec]
{.deprecated: [TXkbDeviceLedInfoRec: XkbDeviceLedInfoRec].}
type
PXkbDeviceInfoPtr* = ptr XkbDeviceInfoRec
XkbDeviceInfoRec*{.final.} = object
name*: cstring
theType*: Atom
device_spec*: int16
has_own_state*: bool
supported*: int16
unsupported*: int16
num_btns*: int16
btn_acts*: PXkbAction
sz_leds*: int16
num_leds*: int16
dflt_kbd_fb*: int16
dflt_led_fb*: int16
leds*: PXkbDeviceLedInfoPtr
{.deprecated: [TXkbDeviceInfoRec: XkbDeviceInfoRec].}
proc XkbXI_DevHasBtnActs*(d: PXkbDeviceInfoPtr): bool
proc XkbXI_LegalDevBtn*(d: PXkbDeviceInfoPtr, b: int16): bool
proc XkbXI_DevHasLeds*(d: PXkbDeviceInfoPtr): bool
type
PXkbDeviceLedChangesPtr* = ptr XkbDeviceLedChangesRec
XkbDeviceLedChangesRec*{.final.} = object
led_class*: int16
led_id*: int16
defined*: int16 #names or maps changed
next*: PXkbDeviceLedChangesPtr
type
PXkbDeviceChangesPtr* = ptr XkbDeviceChangesRec
XkbDeviceChangesRec*{.final.} = object
changed*: int16
first_btn*: int16
num_btns*: int16
leds*: XkbDeviceLedChangesRec
{.deprecated: [TXkbDeviceChangesRec: XkbDeviceChangesRec].}
proc XkbShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr
proc XkbShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbShapePtr
proc XkbSetShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
c: PXkbColorPtr)
proc XkbSetShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
s: PXkbShapePtr)
proc XkbTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr
proc XkbSetTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr,
c: PXkbColorPtr)
proc XkbIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr
proc XkbIndicatorDoodadOnColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
proc XkbIndicatorDoodadOffColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
proc XkbSetIndicatorDoodadOnColor*(g: PXkbGeometryPtr,
d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
proc XkbSetIndicatorDoodadOffColor*(g: PXkbGeometryPtr,
d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
proc XkbSetIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
s: PXkbShapeDoodadPtr)
proc XkbLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr
proc XkbLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbShapeDoodadPtr
proc XkbSetLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
c: PXkbColorPtr)
proc XkbSetLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
s: PXkbShapeDoodadPtr)
proc XkbKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr
proc XkbKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbColorPtr
proc XkbSetKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr)
proc XkbSetKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr)
proc XkbGeomColorIndex*(g: PXkbGeometryPtr, c: PXkbColorPtr): int32
proc XkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring, value: cstring): PXkbPropertyPtr{.
libx11c, importc: "XkbAddGeomProperty".}
proc XkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
libx11c, importc: "XkbAddGeomKeyAlias".}
proc XkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
libx11c, importc: "XkbAddGeomColor".}
proc XkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
libx11c, importc: "XkbAddGeomOutline".}
proc XkbAddGeomShape*(geom: PXkbGeometryPtr, name: Atom, sz_outlines: int16): PXkbShapePtr{.
libx11c, importc: "XkbAddGeomShape".}
proc XkbAddGeomKey*(row: PXkbRowPtr): PXkbKeyPtr{.libx11c,
importc: "XkbAddGeomKey".}
proc XkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.libx11c, importc: "XkbAddGeomRow".}
proc XkbAddGeomSection*(geom: PXkbGeometryPtr, name: Atom, sz_rows: int16,
sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
libx11c, importc: "XkbAddGeomSection".}
proc XkbAddGeomOverlay*(section: PXkbSectionPtr, name: Atom, sz_rows: int16): PXkbOverlayPtr{.
libx11c, importc: "XkbAddGeomOverlay".}
proc XkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16,
sz_keys: int16): PXkbOverlayRowPtr{.libx11c, importc: "XkbAddGeomOverlayRow".}
proc XkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
over: cstring, under: cstring): PXkbOverlayKeyPtr{.
libx11c, importc: "XkbAddGeomOverlayKey".}
proc XkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
name: Atom): PXkbDoodadPtr{.libx11c,
importc: "XkbAddGeomDoodad".}
proc XkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomKeyAliases".}
proc XkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomColors".}
proc XkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16, freeAll: bool){.
libx11c, importc: "XkbFreeGeomDoodads".}
proc XkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomProperties".}
proc XkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomOverlayKeys".}
proc XkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayRows".}
proc XkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomOverlays".}
proc XkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16, freeAll: bool){.
libx11c, importc: "XkbFreeGeomKeys".}
proc XkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomRows".}
proc XkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomSections".}
proc XkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomPoints".}
proc XkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomOutlines".}
proc XkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomShapes".}
proc XkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
libx11c, importc: "XkbFreeGeometry".}
proc XkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): Status{.libx11c, importc: "XkbAllocGeomProps".}
proc XkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): Status{.
libx11c, importc: "XkbAllocGeomKeyAliases".}
proc XkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): Status{.libx11c, importc: "XkbAllocGeomColors".}
proc XkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): Status{.libx11c, importc: "XkbAllocGeomShapes".}
proc XkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): Status{.
libx11c, importc: "XkbAllocGeomSections".}
proc XkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlays".}
proc XkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlayRows".}
proc XkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlayKeys".}
proc XkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): Status{.
libx11c, importc: "XkbAllocGeomDoodads".}
proc XkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): Status{.
libx11c, importc: "XkbAllocGeomSectionDoodads".}
proc XkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): Status{.libx11c, importc: "XkbAllocGeomOutlines".}
proc XkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): Status{.libx11c, importc: "XkbAllocGeomRows".}
proc XkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): Status{.libx11c, importc: "XkbAllocGeomPoints".}
proc XkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): Status{.libx11c, importc: "XkbAllocGeomKeys".}
proc XkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): Status{.
libx11c, importc: "XkbAllocGeometry".}
proc XkbSetGeometryProc*(dpy: PDisplay, deviceSpec: int16, geom: PXkbGeometryPtr): Status{.
libx11c, importc: "XkbSetGeometry".}
proc XkbComputeShapeTop*(shape: PXkbShapePtr, bounds: PXkbBoundsPtr): bool{.
libx11c, importc: "XkbComputeShapeTop".}
proc XkbComputeShapeBounds*(shape: PXkbShapePtr): bool{.libx11c,
importc: "XkbComputeShapeBounds".}
proc XkbComputeRowBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
row: PXkbRowPtr): bool{.libx11c,
importc: "XkbComputeRowBounds".}
proc XkbComputeSectionBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr): bool{.
libx11c, importc: "XkbComputeSectionBounds".}
proc XkbFindOverlayForKey*(geom: PXkbGeometryPtr, wanted: PXkbSectionPtr,
under: cstring): cstring{.libx11c,
importc: "XkbFindOverlayForKey".}
proc XkbGetGeometryProc*(dpy: PDisplay, xkb: PXkbDescPtr): Status{.libx11c, importc: "XkbGetGeometry".}
proc XkbGetNamedGeometry*(dpy: PDisplay, xkb: PXkbDescPtr, name: Atom): Status{.
libx11c, importc: "XkbGetNamedGeometry".}
when defined(XKB_IN_SERVER):
proc SrvXkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring,
float: cstring): PXkbKeyAliasPtr{.libx11c, importc: "XkbAddGeomKeyAlias".}
proc SrvXkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
libx11c, importc: "XkbAddGeomColor".}
proc SrvXkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr,
name: Atom): PXkbDoodadPtr{.libx11c,
importc: "XkbAddGeomDoodad".}
proc SrvXkbAddGeomKey*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
libx11c, importc: "XkbAddGeomKeyAlias".}
proc SrvXkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
libx11c, importc: "XkbAddGeomOutline".}
proc SrvXkbAddGeomOverlay*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
over: cstring, under: cstring): PXkbOverlayKeyPtr{.
libx11c, importc: "XkbAddGeomOverlayKey".}
proc SrvXkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16,
sz_keys: int16): PXkbOverlayRowPtr{.libx11c, importc: "XkbAddGeomOverlayRow".}
proc SrvXkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr,
over: cstring, under: cstring): PXkbOverlayKeyPtr{.
libx11c, importc: "XkbAddGeomOverlayKey".}
proc SrvXkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring,
value: cstring): PXkbPropertyPtr{.libx11c, importc: "XkbAddGeomProperty".}
proc SrvXkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.
libx11c, importc: "XkbAddGeomRow".}
proc SrvXkbAddGeomSection*(geom: PXkbGeometryPtr, name: Atom, sz_rows: int16,
sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
libx11c, importc: "XkbAddGeomSection".}
proc SrvXkbAddGeomShape*(geom: PXkbGeometryPtr, name: Atom,
sz_outlines: int16): PXkbShapePtr{.libx11c, importc: "XkbAddGeomShape".}
proc SrvXkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): Status{.
libx11c, importc: "XkbAllocGeomKeyAliases".}
proc SrvXkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): Status{.
libx11c, importc: "XkbAllocGeomColors".}
proc SrvXkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): Status{.
libx11c, importc: "XkbAllocGeomDoodads".}
proc SrvXkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): Status{.libx11c, importc: "XkbAllocGeomKeys".}
proc SrvXkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): Status{.
libx11c, importc: "XkbAllocGeomOutlines".}
proc SrvXkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): Status{.libx11c, importc: "XkbAllocGeomPoints".}
proc SrvXkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): Status{.
libx11c, importc: "XkbAllocGeomProps".}
proc SrvXkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): Status{.
libx11c, importc: "XkbAllocGeomRows".}
proc SrvXkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): Status{.
libx11c, importc: "XkbAllocGeomSectionDoodads".}
proc SrvXkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): Status{.
libx11c, importc: "XkbAllocGeomSections".}
proc SrvXkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlays".}
proc SrvXkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlayRows".}
proc SrvXkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): Status{.
libx11c, importc: "XkbAllocGeomOverlayKeys".}
proc SrvXkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): Status{.
libx11c, importc: "XkbAllocGeomShapes".}
proc SrvXkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): Status{.
libx11c, importc: "XkbAllocGeometry".}
proc SrvXkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomKeyAliases".}
proc SrvXkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomColors".}
proc SrvXkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomDoodads".}
proc SrvXkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomProperties".}
proc SrvXkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayKeys".}
proc SrvXkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlayRows".}
proc SrvXkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomOverlays".}
proc SrvXkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomKeys".}
proc SrvXkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomRows".}
proc SrvXkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomSections".}
proc SrvXkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16,
count: int16, freeAll: bool){.libx11c, importc: "XkbFreeGeomPoints".}
proc SrvXkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomOutlines".}
proc SrvXkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16,
freeAll: bool){.libx11c,
importc: "XkbFreeGeomShapes".}
proc SrvXkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
libx11c, importc: "XkbFreeGeometry".}
# implementation
import #************************************ xkb ************************************
xi
proc XkbLegalXILedClass(c: int): bool =
##define XkbLegalXILedClass(c) (((c)==KbdFeedbackClass)||((c)==LedFeedbackClass)||
# ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
result = (c == KbdFeedbackClass) or (c == LedFeedbackClass) or
(c == XkbDfltXIClass) or (c == XkbAllXIClasses)
proc XkbLegalXIBellClass(c: int): bool =
##define XkbLegalXIBellClass(c) (((c)==KbdFeedbackClass)||((c)==BellFeedbackClass)||
# ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
result = (c == KbdFeedbackClass) or (c == BellFeedbackClass) or
(c == XkbDfltXIClass) or (c == XkbAllXIClasses)
proc XkbExplicitXIDevice(c: int): bool =
##define XkbExplicitXIDevice(c) (((c)&(~0xff))==0)
result = (c and (not 0x000000FF)) == 0
proc XkbExplicitXIClass(c: int): bool =
##define XkbExplicitXIClass(c) (((c)&(~0xff))==0)
result = (c and (not 0x000000FF)) == 0
proc XkbExplicitXIId(c: int): bool =
##define XkbExplicitXIId(c) (((c)&(~0xff))==0)
result = (c and (not 0x000000FF)) == 0
proc XkbSingleXIClass(c: int): bool =
##define XkbSingleXIClass(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIClass))
result = ((c and (not 0x000000FF)) == 0) or (c == XkbDfltXIClass)
proc XkbSingleXIId(c: int): bool =
##define XkbSingleXIId(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIId))
result = ((c and (not 0x000000FF)) == 0) or (c == XkbDfltXIId)
proc XkbBuildCoreState(m, g: int): int =
##define XkbBuildCoreState(m,g) ((((g)&0x3)<<13)|((m)&0xff))
result = ((g and 0x00000003) shl 13) or (m and 0x000000FF)
proc XkbGroupForCoreState(s: int): int =
##define XkbGroupForCoreState(s) (((s)>>13)&0x3)
result = (s shr 13) and 0x00000003
proc XkbIsLegalGroup(g: int): bool =
##define XkbIsLegalGroup(g) (((g)>=0)&&((g)<XkbNumKbdGroups))
result = (g >= 0) and (g < XkbNumKbdGroups)
proc XkbSA_ValOp(a: int): int =
##define XkbSA_ValOp(a) ((a)&XkbSA_ValOpMask)
result = a and XkbSA_ValOpMask
proc XkbSA_ValScale(a: int): int =
##define XkbSA_ValScale(a) ((a)&XkbSA_ValScaleMask)
result = a and XkbSA_ValScaleMask
proc XkbIsModAction(a: PXkbAnyAction): bool =
##define XkbIsModAction(a) (((a)->type>=Xkb_SASetMods)&&((a)->type<=XkbSA_LockMods))
result = ((a.theType) >= XkbSA_SetMods) and ((a.theType) <= XkbSA_LockMods)
proc XkbIsGroupAction(a: PXkbAnyAction): bool =
##define XkbIsGroupAction(a) (((a)->type>=XkbSA_SetGroup)&&((a)->type<=XkbSA_LockGroup))
result = ((a.theType) >= XkbSA_SetGroup) or ((a.theType) <= XkbSA_LockGroup)
proc XkbIsPtrAction(a: PXkbAnyAction): bool =
##define XkbIsPtrAction(a) (((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))
result = ((a.theType) >= XkbSA_MovePtr) and
((a.theType) <= XkbSA_SetPtrDflt)
proc XkbIsLegalKeycode(k: int): bool =
##define XkbIsLegalKeycode(k) (((k)>=XkbMinLegalKeyCode)&&((k)<=XkbMaxLegalKeyCode))
result = (k >= XkbMinLegalKeyCode) and (k <= XkbMaxLegalKeyCode)
proc XkbShiftLevel(n: int8): int8 =
##define XkbShiftLevel(n) ((n)-1)
result = n - 1'i8
proc XkbShiftLevelMask(n: int8): int8 =
##define XkbShiftLevelMask(n) (1<<((n)-1))
result = 1'i8 shl (n - 1'i8)
proc XkbcharToInt(v: int8): int16 =
##define XkbcharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
if ((v and 0x80'i8) != 0'i8): result = v or (not 0xFF'i16)
else: result = int16(v and 0x7F'i8)
proc XkbIntTo2chars(i: int16, h, L: var int8) =
##define XkbIntTo2chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
h = int8((i shr 8'i16) and 0x00FF'i16)
L = int8(i and 0xFF'i16)
proc Xkb2charsToInt(h, L: int8): int16 =
when defined(cpu64):
##define Xkb2charsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)): (int)(((h)<<8)|(l)&0x7fff))
if (h and 0x80'i8) != 0'i8:
result = int16(((h) shl 8) or (L) or not 0x0000FFFF)
else:
result = int16(((h) shl 8) or (L) and 0x00007FFF)
else:
##define Xkb2charsToInt(h,l) ((short)(((h)<<8)|(l)))
result = int16((h) shl 8 or (L))
proc XkbModLocks(s: PXkbStatePtr): int8 =
##define XkbModLocks(s) ((s)->locked_mods)
result = s.locked_mods
proc XkbStateMods(s: PXkbStatePtr): int16 =
##define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
result = s.base_mods or s.latched_mods or XkbModLocks(s)
proc XkbGroupLock(s: PXkbStatePtr): int8 =
##define XkbGroupLock(s) ((s)->locked_group)
result = s.locked_group
proc XkbStateGroup(s: PXkbStatePtr): int16 =
##define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
result = s.base_group + (s.latched_group) + XkbGroupLock(s)
proc XkbStateFieldFromRec(s: PXkbStatePtr): int =
##define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
result = XkbBuildCoreState(s.lookup_mods, s.group)
proc XkbGrabStateFromRec(s: PXkbStatePtr): int =
##define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
result = XkbBuildCoreState(s.grab_mods, s.group)
proc XkbNumGroups(g: int16): int16 =
##define XkbNumGroups(g) ((g)&0x0f)
result = g and 0x0000000F'i16
proc XkbOutOfRangeGroupInfo(g: int16): int16 =
##define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)
result = g and 0x000000F0'i16
proc XkbOutOfRangeGroupAction(g: int16): int16 =
##define XkbOutOfRangeGroupAction(g) ((g)&0xc0)
result = g and 0x000000C0'i16
proc XkbOutOfRangeGroupNumber(g: int16): int16 =
##define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)
result = (g and 0x00000030'i16) shr 4'i16
proc XkbSetGroupInfo(g, w, n: int16): int16 =
##define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
result = (w and 0x000000C0'i16) or
((n and 3'i16) shl 4'i16) or (g and 0x0000000F'i16)
proc XkbSetNumGroups(g, n: int16): int16 =
##define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
result = (g and 0x000000F0'i16) or (n and 0x0000000F'i16)
proc XkbModActionVMods(a: PXkbModAction): int16 =
##define XkbModActionVMods(a) ((short)(((a)->vmods1<<8)|((a)->vmods2)))
result = int16(((a.vmods1) shl 8) or (a.vmods2))
proc XkbSetModActionVMods(a: PXkbModAction, v: int8) =
##define XkbSetModActionVMods(a,v) (((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
a.vmods1 = int8(((v) shr 8) and 0x000000FF)
a.vmods2 = int8((v) and 0x000000FF)
proc XkbSAGroup(a: PXkbGroupAction): int8 =
##define XkbSAGroup(a) (XkbcharToInt((a)->group_XXX))
result = int8(XkbcharToInt(a.group_XXX))
proc XkbSASetGroupProc(a: PXkbGroupAction, g: int8) =
##define XkbSASetGroup(a,g) ((a)->group_XXX=(g))
a.group_XXX = g
proc XkbPtrActionX(a: PXkbPtrAction): int16 =
##define XkbPtrActionX(a) (Xkb2charsToInt((a)->high_XXX,(a)->low_XXX))
result = int16(Xkb2charsToInt(a.high_XXX, a.low_XXX))
proc XkbPtrActionY(a: PXkbPtrAction): int16 =
##define XkbPtrActionY(a) (Xkb2charsToInt((a)->high_YYY,(a)->low_YYY))
result = int16(Xkb2charsToInt(a.high_YYY, a.low_YYY))
proc XkbSetPtrActionX(a: PXkbPtrAction, x: int8) =
##define XkbSetPtrActionX(a,x) (XkbIntTo2chars(x,(a)->high_XXX,(a)->low_XXX))
XkbIntTo2chars(x, a.high_XXX, a.low_XXX)
proc XkbSetPtrActionY(a: PXkbPtrAction, y: int8) =
##define XkbSetPtrActionY(a,y) (XkbIntTo2chars(y,(a)->high_YYY,(a)->low_YYY))
XkbIntTo2chars(y, a.high_YYY, a.low_YYY)
proc XkbSAPtrDfltValue(a: PXkbPtrDfltAction): int8 =
##define XkbSAPtrDfltValue(a) (XkbcharToInt((a)->valueXXX))
result = int8(XkbcharToInt(a.valueXXX))
proc XkbSASetPtrDfltValue(a: PXkbPtrDfltAction, c: pointer) =
##define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))
a.valueXXX = int8(cast[int](c))
proc XkbSAScreen(a: PXkbSwitchScreenAction): int8 =
##define XkbSAScreen(a) (XkbcharToInt((a)->screenXXX))
result = int8(XkbcharToInt(a.screenXXX))
proc XkbSASetScreen(a: PXkbSwitchScreenAction, s: pointer) =
##define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))
a.screenXXX = int8(cast[int](s))
proc XkbActionSetCtrls(a: PXkbCtrlsAction, c: int8) =
##define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),((a)->ctrls2=(((c)>>16)&0xff)),
# ((a)->ctrls1=(((c)>>8)&0xff)),((a)->ctrls0=((c)&0xff)))
a.ctrls3 = int8(((c) shr 24) and 0x000000FF)
a.ctrls2 = int8(((c) shr 16) and 0x000000FF)
a.ctrls1 = int8(((c) shr 8) and 0x000000FF)
a.ctrls0 = int8((c) and 0x000000FF)
proc XkbActionCtrls(a: PXkbCtrlsAction): int16 =
##define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|(((unsigned int)(a)->ctrls2)<<16)|
# (((unsigned int)(a)->ctrls1)<<8)|((unsigned int)((a)->ctrls0)))
result = int16(((a.ctrls3) shl 24) or ((a.ctrls2) shl 16) or
((a.ctrls1) shl 8) or (a.ctrls0))
proc XkbSARedirectVMods(a: PXkbRedirectKeyAction): int16 =
##define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|((unsigned int)(a)->vmods0))
result = int16(((a.vmods1) shl 8) or (a.vmods0))
proc XkbSARedirectSetVMods(a: PXkbRedirectKeyAction, m: int8) =
##define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))
a.vmods_mask1 = int8(((m) shr 8) and 0x000000FF)
a.vmods_mask0 = int8((m) or 0x000000FF)
proc XkbSARedirectVModsMask(a: PXkbRedirectKeyAction): int16 =
##define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|
# ((unsigned int)(a)->vmods_mask0))
result = int16(((a.vmods_mask1) shl 8) or (a.vmods_mask0))
proc XkbSARedirectSetVModsMask(a: PXkbRedirectKeyAction, m: int8) =
##define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))
a.vmods_mask1 = int8((m) shr 8 and 0x000000FF)
a.vmods_mask0 = int8((m) and 0x000000FF)
proc XkbAX_AnyFeedback(c: PXkbControlsPtr): int16 =
##define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)
result = int16((c.enabled_ctrls) and XkbAccessXFeedbackMask)
proc XkbAX_NeedOption(c: PXkbControlsPtr, w: int16): int16 =
##define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))
result = int16((c.ax_options) and (w))
proc XkbAX_NeedFeedback(c: PXkbControlsPtr, w: int16): bool =
##define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
result = (XkbAX_AnyFeedback(c) > 0'i16) and (XkbAX_NeedOption(c, w) > 0'i16)
proc XkbSMKeyActionsPtr(m: PXkbServerMapPtr, k: int16): PXkbAction =
##define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
result = addr(m.acts[(m.key_acts[(k)])])
proc XkbCMKeyGroupInfo(m: PXkbClientMapPtr, k: int16): int8 =
##define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)
result = m.key_sym_map[(k)].group_info
proc XkbCMKeyNumGroups(m: PXkbClientMapPtr, k: int16): int8 =
##define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))
result = int8(XkbNumGroups(m.key_sym_map[(k)].group_info))
proc XkbCMKeyGroupWidth(m: PXkbClientMapPtr, k: int16, g: int8): int8 =
##define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
result = XkbCMKeyType(m, k, g).num_levels
proc XkbCMKeyGroupsWidth(m: PXkbClientMapPtr, k: int16): int8 =
##define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
result = m.key_sym_map[(k)].width
proc XkbCMKeyTypeIndex(m: PXkbClientMapPtr, k: int16, g: int8): int8 =
##define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
result = m.key_sym_map[(k)].kt_index[(g) and 0x00000003]
proc XkbCMKeyType(m: PXkbClientMapPtr, k: int16, g: int8): PXkbKeyTypePtr =
##define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
result = addr(m.types[(XkbCMKeyTypeIndex(m, k, g))])
proc XkbCMKeyNumSyms(m: PXkbClientMapPtr, k: int16): int16 =
##define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
result = int16((XkbCMKeyGroupsWidth(m, k)) or (XkbCMKeyNumGroups(m, k)))
proc XkbCMKeySymsOffset(m: PXkbClientMapPtr, k: int16): int8 =
##define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)
result = m.key_sym_map[(k)].offset
proc XkbCMKeySymsPtr*(m: PXkbClientMapPtr, k: int16): PKeySym =
##define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])
result = addr(m.syms[(XkbCMKeySymsOffset(m, k))])
proc XkbIM_IsAuto(i: PXkbIndicatorMapPtr): bool =
##define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&(((i)->which_groups&&(i)->groups)||
# ((i)->which_mods&&(i)->mods.mask)|| ((i)->ctrls)))
result = (((i.flags) and XkbIM_NoAutomatic) == 0) and
(((i.which_groups > 0'i8) and (i.groups > 0'i8)) or
((i.which_mods > 0'i8) and (i.mods.mask > 0'i8)) or (i.ctrls > 0'i8))
proc XkbIM_InUse(i: PXkbIndicatorMapPtr): bool =
##define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||((i)->which_mods)||((i)->ctrls))
result = (i.flags > 0'i8) or (i.which_groups > 0'i8) or (i.which_mods > 0'i8) or
(i.ctrls > 0'i8)
proc XkbKeyKeyTypeIndex(d: PXkbDescPtr, k: int16, g: int8): int8 =
##define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g))
result = XkbCMKeyTypeIndex(d.map, k, g)
proc XkbKeyKeyType(d: PXkbDescPtr, k: int16, g: int8): PXkbKeyTypePtr =
##define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))
result = XkbCMKeyType(d.map, k, g)
proc XkbKeyGroupWidth(d: PXkbDescPtr, k: int16, g: int8): int8 =
##define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))
result = XkbCMKeyGroupWidth(d.map, k, g)
proc XkbKeyGroupsWidth(d: PXkbDescPtr, k: int16): int8 =
##define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))
result = XkbCMKeyGroupsWidth(d.map, k)
proc XkbKeyGroupInfo(d: PXkbDescPtr, k: int16): int8 =
##define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))
result = XkbCMKeyGroupInfo(d.map, k)
proc XkbKeyNumGroups(d: PXkbDescPtr, k: int16): int8 =
##define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))
result = XkbCMKeyNumGroups(d.map, k)
proc XkbKeyNumSyms(d: PXkbDescPtr, k: int16): int16 =
##define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))
result = XkbCMKeyNumSyms(d.map, k)
proc XkbKeySymsPtr*(d: PXkbDescPtr, k: int16): PKeySym =
##define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))
result = XkbCMKeySymsPtr(d.map, k)
proc XkbKeySym(d: PXkbDescPtr, k: int16, n: int16): KeySym =
##define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
result = cast[ptr array[0..0xffff, KeySym]](XkbKeySymsPtr(d, k))[(n)] # XXX: this seems strange!
proc XkbKeySymEntry(d: PXkbDescPtr, k: int16, sl: int16, g: int8): KeySym =
##define XkbKeySymEntry(d,k,sl,g) (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
result = XkbKeySym(d, k, int16((XkbKeyGroupsWidth(d, k)) * (g) + (sl)))
proc XkbKeyAction(d: PXkbDescPtr, k: int16, n: int16): PXkbAction =
##define XkbKeyAction(d,k,n) (XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
#if (XkbKeyHasActions(d, k)):
# result = XkbKeyActionsPtr(d, k)[(n)] #Buggy !!!
assert(false)
result = nil
proc XkbKeyActionEntry(d: PXkbDescPtr, k: int16, sl: int16, g: int8): int8 =
##define XkbKeyActionEntry(d,k,sl,g) (XkbKeyHasActions(d,k) ?
# XkbKeyAction(d, k, ((XkbKeyGroupsWidth(d, k) * (g))+(sl))):NULL)
if XkbKeyHasActions(d, k):
result = XkbKeyGroupsWidth(d, k) *% g +% int8(sl)
else:
result = 0'i8
proc XkbKeyHasActions(d: PXkbDescPtr, k: int16): bool =
##define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)
result = d.server.key_acts[(k)] != 0'i16
proc XkbKeyNumActions(d: PXkbDescPtr, k: int16): int16 =
##define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
if (XkbKeyHasActions(d, k)): result = XkbKeyNumSyms(d, k)
else: result = 1'i16
proc XkbKeyActionsPtr(d: PXkbDescPtr, k: int16): PXkbAction =
##define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
result = XkbSMKeyActionsPtr(d.server, k)
proc XkbKeycodeInRange(d: PXkbDescPtr, k: int16): bool =
##define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&& ((k)<=(d)->max_key_code))
result = (char(int8(k)) >= d.min_key_code) and (char(int8(k)) <= d.max_key_code)
proc XkbNumKeys(d: PXkbDescPtr): int8 =
##define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)
result = int8(ord(d.max_key_code) - ord(d.min_key_code) + 1)
proc XkbXI_DevHasBtnActs(d: PXkbDeviceInfoPtr): bool =
##define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))
result = (d.num_btns > 0'i16) and (not (d.btn_acts == nil))
proc XkbXI_LegalDevBtn(d: PXkbDeviceInfoPtr, b: int16): bool =
##define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
result = XkbXI_DevHasBtnActs(d) and (b <% d.num_btns)
proc XkbXI_DevHasLeds(d: PXkbDeviceInfoPtr): bool =
##define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))
result = (d.num_leds > 0'i16) and (not (d.leds == nil))
proc XkbBoundsWidth(b: PXkbBoundsPtr): int16 =
##define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
result = (b.x2) - b.x1
proc XkbBoundsHeight(b: PXkbBoundsPtr): int16 =
##define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
result = (b.y2) - b.y1
proc XkbOutlineIndex(s: PXkbShapePtr, o: PXkbOutlinePtr): int32 =
##define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
result = int32((cast[ByteAddress](o) - cast[ByteAddress](addr(s.outlines[0]))) div sizeof(PXkbOutlinePtr))
proc XkbShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr =
##define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
result = addr((g.colors[(d.color_ndx)]))
proc XkbShapeDoodadShape(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbShapePtr =
##define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
result = addr(g.shapes[(d.shape_ndx)])
proc XkbSetShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
c: PXkbColorPtr) =
##define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
d.color_ndx = int16((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbSetShapeDoodadShape(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr,
s: PXkbShapePtr) =
##define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
d.shape_ndx = int16((cast[ByteAddress](s) - cast[ByteAddress](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
proc XkbTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr =
##define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
result = addr(g.colors[(d.color_ndx)])
proc XkbSetTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr,
c: PXkbColorPtr) =
##define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
d.color_ndx = int16((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr =
##define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
result = cast[PXkbShapeDoodadPtr](addr(g.shapes[(d.shape_ndx)]))
proc XkbIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr =
##define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
result = addr(g.colors[(d.on_color_ndx)])
proc XkbIndicatorDoodadOffColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr =
##define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
result = addr(g.colors[(d.off_color_ndx)])
proc XkbSetIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
c: PXkbColorPtr) =
##define XkbSetIndicatorDoodadOnColor(g,d,c) ((d)->on_color_ndx= (c)-&(g)->colors[0])
d.on_color_ndx = int16((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbSetIndicatorDoodadOffColor(g: PXkbGeometryPtr,
d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr) =
##define XkbSetIndicatorDoodadOffColor(g,d,c) ((d)->off_color_ndx= (c)-&(g)->colors[0])
d.off_color_ndx = int16((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbSetIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr,
s: PXkbShapeDoodadPtr) =
##define XkbSetIndicatorDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
d.shape_ndx = int16((cast[ByteAddress](s) - (cast[ByteAddress](addr(g.shapes[0])))) div sizeof(XkbShapeRec))
proc XkbLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr =
##define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
result = addr(g.colors[(d.color_ndx)])
proc XkbLogoDoodadShape(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbShapeDoodadPtr =
##define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
result = cast[PXkbShapeDoodadPtr](addr(g.shapes[(d.shape_ndx)]))
proc XkbSetLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
c: PXkbColorPtr) =
##define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
d.color_ndx = int16((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbSetLogoDoodadShape(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr,
s: PXkbShapeDoodadPtr) =
##define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
d.shape_ndx = int16((cast[ByteAddress](s) - cast[ByteAddress](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
proc XkbKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr =
##define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
result = cast[PXkbShapeDoodadPtr](addr(g.shapes[(k.shape_ndx)]))
proc XkbKeyColor(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbColorPtr =
##define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
result = addr(g.colors[(k.color_ndx)])
proc XkbSetKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr) =
##define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
k.shape_ndx = int8((cast[ByteAddress](s) - cast[ByteAddress](addr(g.shapes[0]))) div sizeof(XkbShapeRec))
proc XkbSetKeyColor(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr) =
##define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
k.color_ndx = int8((cast[ByteAddress](c) - cast[ByteAddress](addr(g.colors[0]))) div sizeof(XkbColorRec))
proc XkbGeomColorIndex(g: PXkbGeometryPtr, c: PXkbColorPtr): int32 =
##define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
result = int16((cast[ByteAddress](c) - (cast[ByteAddress](addr(g.colors[0])))) div sizeof(XkbColorRec))
proc xkb_keysym_get_name*( keysym: xkb_keysym_t
, buffer: cstring
, size: csize_t
): int {.importc, cdecl.}
# *****************************************
# Generated from <X11/extensions/XInput2.h>
# *****************************************
import x, xlib, xi2
# <X11/extensions/xfixes.h>
type PointerBarrier* = XID
type
PXIAddMasterInfo* = ptr XIAddMasterInfo
XIAddMasterInfo* {.final.} = object
`type`*: cint
name*: cstring
send_core*: XBool
enable*: XBool
PXIRemoveMasterInfo* = ptr XIRemoveMasterInfo
XIRemoveMasterInfo* {.final.} = object
`type`*: cint
deviceid*: cint
return_mode*: cint ## AttachToMaster, Floating
return_pointer*: cint
return_keyboard*: cint
PXIAttachSlaveInfo* = ptr XIAttachSlaveInfo
XIAttachSlaveInfo* {.final.} = object
`type`*: cint
deviceid*: cint
new_master*: cint
PXIDetachSlaveInfo* = ptr XIDetachSlaveInfo
XIDetachSlaveInfo* {.final.} = object
`type`*: cint
deviceid*: cint
PXIAnyHierarchyChangeInfo* = ptr XIAnyHierarchyChangeInfo
XIAnyHierarchyChangeInfo* {.final, union.} = object
`type`*: cint ## must be first element
add*: XIAddMasterInfo
remove*: XIRemoveMasterInfo
attach*: XIAttachSlaveInfo
detach*: XIDetachSlaveInfo
PXIModifierState* = ptr XIModifierState
XIModifierState* {.final.} = object
base*: cint
latched*: cint
locked*: cint
effective*: cint
PXIGroupState* = ptr XIGroupState
XIGroupState* = XIModifierState
PXIButtonState* = ptr XIButtonState
XIButtonState* {.final.} = object
mask_len*: cint
mask*: ptr char
PXIValuatorState* = ptr XIValuatorState
XIValuatorState* {.final.} = object
mask_len*: cint
mask*: ptr char
values*: ptr cdouble
PXIEventMask* = ptr XIEventMask
XIEventMask* {.final.} = object
deviceid*: cint
mask_len*: cint
mask*: ptr char
PXIAnyClassInfo* = ptr XIAnyClassInfo
XIAnyClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
PXIButtonClassInfo* = ptr XIButtonClassInfo
XIButtonClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
num_buttons*: cint
labels*: PAtom
state*: XIButtonState
PXIKeyClassInfo* = ptr XIKeyClassInfo
XIKeyClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
num_keycodes*: cint
keycodes*: ptr cint
PXIValuatorClassInfo* = ptr XIValuatorClassInfo
XIValuatorClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
number*: cint
label*: Atom
min*: cdouble
max*: cdouble
value*: cdouble
resolution*: cint
mode*: cint
## new in XI 2.1
type
PXIScrollClassInfo* = ptr XIScrollClassInfo
XIScrollClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
number*: cint
scroll_type*: cint
increment*: cdouble
flags*: cint
PXITouchClassInfo* = ptr XITouchClassInfo
XITouchClassInfo* {.final.} = object
`type`*: cint
sourceid*: cint
mode*: cint
num_touches*: cint
PXIDeviceInfo* = ptr XIDeviceInfo
XIDeviceInfo* {.final.} = object
deviceid*: cint
name*: cstring
use*: cint
attachment*: cint
enabled*: XBool
num_classes*: cint
classes*: ptr ptr XIAnyClassInfo
PXIGrabModifiers* = ptr XIGrabModifiers
XIGrabModifiers* {.final.} = object
modifiers*: cint
status*: cint
BarrierEventID* = cuint
# ------------------------------------------------------------
PXIBarrierReleasePointerInfo* = ptr XIBarrierReleasePointerInfo
XIBarrierReleasePointerInfo* {.final.} = object
deviceid*: cint
barrier*: PointerBarrier
eventid*: BarrierEventID
##
## Generic XI2 event. All XI2 events have the same header.
##
type
PXIEvent* = ptr XIEvent
XIEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint
time*: Time
PXIHierarchyInfo* = ptr XIHierarchyInfo
XIHierarchyInfo* {.final.} = object
deviceid*: cint
attachment*: cint
use*: cint
enabled*: XBool
flags*: cint
##
## Notifies the client that the device hierarchy has been changed. The client
## is expected to re-query the server for the device hierarchy.
##
type
PXIHierarchyEvent* = ptr XIHierarchyEvent
XIHierarchyEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint ## XI_HierarchyChanged
time*: Time
flags*: cint
num_info*: cint
info*: ptr XIHierarchyInfo
##
## Notifies the client that the classes have been changed. This happens when
## the slave device that sends through the master changes.
##
type
PXIDeviceChangedEvent* = ptr XIDeviceChangedEvent
XIDeviceChangedEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint ## XI_DeviceChanged
time*: Time
deviceid*: cint ## id of the device that changed
sourceid*: cint ## Source for the new classes.
reason*: cint ## Reason for the change
num_classes*: cint
classes*: ptr ptr XIAnyClassInfo ## same as in XIDeviceInfo
PXIDeviceEvent* = ptr XIDeviceEvent
XIDeviceEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint
time*: Time
deviceid*: cint
sourceid*: cint
detail*: cint
root*: Window
event*: Window
child*: Window
root_x*: cdouble
root_y*: cdouble
event_x*: cdouble
event_y*: cdouble
flags*: cint
buttons*: XIButtonState
valuators*: XIValuatorState
mods*: XIModifierState
group*: XIGroupState
PXIRawEvent* = ptr XIRawEvent
XIRawEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint ## XI_RawKeyPress, XI_RawKeyRelease, etc.
time*: Time
deviceid*: cint
sourceid*: cint ## Bug: Always 0. https://bugs.freedesktop.org//show_bug.cgi?id=34240
detail*: cint
flags*: cint
valuators*: XIValuatorState
raw_values*: ptr cdouble
PXIEnterEvent* = ptr XIEnterEvent
XIEnterEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint
time*: Time
deviceid*: cint
sourceid*: cint
detail*: cint
root*: Window
event*: Window
child*: Window
root_x*: cdouble
root_y*: cdouble
event_x*: cdouble
event_y*: cdouble
mode*: cint
focus*: XBool
same_screen*: XBool
buttons*: XIButtonState
mods*: XIModifierState
group*: XIGroupState
PXILeaveEvent* = PXIEnterEvent
PXIFocusInEvent* = PXIEnterEvent
PXIFocusOutEvent* = PXIEnterEvent
# ----------------------------------
XILeaveEvent* = XIEnterEvent
XIFocusInEvent* = XIEnterEvent
XIFocusOutEvent* = XIEnterEvent
PXIPropertyEvent* = ptr XIPropertyEvent
XIPropertyEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint ## XI_PropertyEvent
time*: Time
deviceid*: cint ## id of the device that changed
property*: Atom
what*: cint
PXITouchOwnershipEvent* = ptr XITouchOwnershipEvent
XITouchOwnershipEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint
time*: Time
deviceid*: cint
sourceid*: cint
touchid*: cuint
root*: Window
event*: Window
child*: Window
flags*: cint
PXIBarrierEvent* = ptr XIBarrierEvent
XIBarrierEvent* {.final.} = object
`type`*: cint ## GenericEvent
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
extension*: cint ## XI extension offset
evtype*: cint
time*: Time
deviceid*: cint
sourceid*: cint
event*: Window
root*: Window
root_x*: cdouble
root_y*: cdouble
dx*: cdouble
dy*: cdouble
dtime*: cint
flags*: cint
barrier*: PointerBarrier
eventid*: BarrierEventID
##
## XI2 Procs, uses same shared object as XI
##
{.push cdecl, importc, dynlib: libXi.}
proc XIQueryPointer*(display: PDisplay; deviceid: cint; win: Window;
root: PWindow; child: PWindow; root_x: ptr cdouble;
root_y: ptr cdouble; win_x: ptr cdouble; win_y: ptr cdouble;
buttons: PXIButtonState; mods: PXIModifierState;
group: PXIGroupState): XBool
proc XIWarpPointer*(display: PDisplay; deviceid: cint; src_win: Window;
dst_win: Window; src_x: cdouble; src_y: cdouble; src_width: cuint;
src_height: cuint; dst_x: cdouble; dst_y: cdouble): XBool
proc XIDefineCursor*(display: PDisplay; deviceid: cint; win: Window; cursor: Cursor): Status
proc XIUndefineCursor*(display: PDisplay; deviceid: cint; win: Window): Status
proc XIChangeHierarchy*(display: PDisplay; changes: PXIAnyHierarchyChangeInfo;
num_changes: cint): Status
proc XISetClientPointer*(dpy: PDisplay; win: Window; deviceid: cint): Status
proc XIGetClientPointer*(dpy: PDisplay; win: Window; deviceid: ptr cint): XBool
proc XISelectEvents*(dpy: PDisplay; win: Window; masks: PXIEventMask;
num_masks: cint): cint
proc XIGetSelectedEvents*(dpy: PDisplay; win: Window; num_masks_return: ptr cint): PXIEventMask
proc XIQueryVersion*(dpy: PDisplay; major_version_inout: ptr cint;
minor_version_inout: ptr cint): Status
proc XIQueryDevice*(dpy: PDisplay; deviceid: cint; ndevices_return: ptr cint): PXIDeviceInfo
proc XISetFocus*(dpy: PDisplay; deviceid: cint; focus: Window; time: Time): Status
proc XIGetFocus*(dpy: PDisplay; deviceid: cint; focus_return: PWindow): Status
proc XIGrabDevice*(dpy: PDisplay; deviceid: cint; grab_window: Window; time: Time;
cursor: Cursor; grab_mode: cint; paired_device_mode: cint;
owner_events: XBool; mask: PXIEventMask): Status
proc XIUngrabDevice*(dpy: PDisplay; deviceid: cint; time: Time): Status
proc XIAllowEvents*(display: PDisplay; deviceid: cint; event_mode: cint; time: Time): Status
proc XIAllowTouchEvents*(display: PDisplay; deviceid: cint; touchid: cuint;
grab_window: Window; event_mode: cint): Status
proc XIGrabButton*(display: PDisplay; deviceid: cint; button: cint;
grab_window: Window; cursor: Cursor; grab_mode: cint;
paired_device_mode: cint; owner_events: cint;
mask: PXIEventMask; num_modifiers: cint;
modifiers_inout: PXIGrabModifiers): cint
proc XIGrabKeycode*(display: PDisplay; deviceid: cint; keycode: cint;
grab_window: Window; grab_mode: cint; paired_device_mode: cint;
owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
modifiers_inout: PXIGrabModifiers): cint
proc XIGrabEnter*(display: PDisplay; deviceid: cint; grab_window: Window;
cursor: Cursor; grab_mode: cint; paired_device_mode: cint;
owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
modifiers_inout: PXIGrabModifiers): cint
proc XIGrabFocusIn*(display: PDisplay; deviceid: cint; grab_window: Window;
grab_mode: cint; paired_device_mode: cint; owner_events: cint;
mask: PXIEventMask; num_modifiers: cint;
modifiers_inout: PXIGrabModifiers): cint
proc XIGrabTouchBegin*(display: PDisplay; deviceid: cint; grab_window: Window;
owner_events: cint; mask: PXIEventMask; num_modifiers: cint;
modifiers_inout: PXIGrabModifiers): cint
proc XIUngrabButton*(display: PDisplay; deviceid: cint; button: cint;
grab_window: Window; num_modifiers: cint;
modifiers: PXIGrabModifiers): Status
proc XIUngrabKeycode*(display: PDisplay; deviceid: cint; keycode: cint;
grab_window: Window; num_modifiers: cint;
modifiers: PXIGrabModifiers): Status
proc XIUngrabEnter*(display: PDisplay; deviceid: cint; grab_window: Window;
num_modifiers: cint; modifiers: PXIGrabModifiers): Status
proc XIUngrabFocusIn*(display: PDisplay; deviceid: cint; grab_window: Window;
num_modifiers: cint; modifiers: PXIGrabModifiers): Status
proc XIUngrabTouchBegin*(display: PDisplay; deviceid: cint; grab_window: Window;
num_modifiers: cint; modifiers: PXIGrabModifiers): Status
proc XIListProperties*(display: PDisplay; deviceid: cint;
num_props_return: ptr cint): PAtom
proc XIChangeProperty*(display: PDisplay; deviceid: cint; property: Atom;
`type`: Atom; format: cint; mode: cint; data: ptr char;
num_items: cint)
proc XIDeleteProperty*(display: PDisplay; deviceid: cint; property: Atom)
proc XIGetProperty*(display: PDisplay; deviceid: cint; property: Atom; offset: clong;
length: clong; delete_property: XBool; `type`: Atom;
type_return: PAtom; format_return: ptr cint;
num_items_return: ptr culong; bytes_after_return: ptr culong;
data: ptr ptr char): Status
proc XIBarrierReleasePointers*(display: PDisplay;
barriers: PXIBarrierReleasePointerInfo;
num_barriers: cint)
proc XIBarrierReleasePointer*(display: PDisplay; deviceid: cint;
barrier: PointerBarrier; eventid: BarrierEventID)
proc XIFreeDeviceInfo*(info: PXIDeviceInfo)
{.pop.}
import x, xlib, xi
const xNeedWidePrototypes {.booldefine.} = defined(posix)
const
deviceKeyPress* = 0
deviceKeyRelease* = 1
deviceButtonPress* = 0
deviceButtonRelease* = 1
deviceMotionNotify* = 0
deviceFocusIn* = 0
deviceFocusOut* = 1
proximityIn* = 0
proximityOut* = 1
deviceStateNotify* = 0
deviceMappingNotify* = 1
changeDeviceNotify* = 2
propertyNotify* = 6
template FindTypeAndClass*(d, `type`, class, classid, offset: untyped) =
var i: cint
var ip: PXInputClassInfo
`type` = 0
class = 0
i = 0
ip = (cast[PXDevice](d)).classes
while i < (cast[PXDevice](d)).num_classes:
if ip.input_class == classid:
`type` = ip.event_type_base + offset
class = (cast[PXDevice](d)).device_id shl 8 or `type`
inc(i)
inc(ip)
template DeviceKeyPress*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, KeyClass, deviceKeyPress)
template DeviceKeyRelease*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, KeyClass, deviceKeyRelease)
template DeviceButtonPress*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, ButtonClass, deviceButtonPress)
template DeviceButtonRelease*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, ButtonClass, deviceButtonRelease)
template DeviceMotionNotify*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, ValuatorClass, deviceMotionNotify)
template DeviceFocusIn*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, FocusClass, deviceFocusIn)
template DeviceFocusOut*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, FocusClass, deviceFocusOut)
template ProximityIn*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, ProximityClass, proximityIn)
template ProximityOut*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, ProximityClass, proximityOut)
template DeviceStateNotify*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, OtherClass, deviceStateNotify)
template DeviceMappingNotify*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, OtherClass, deviceMappingNotify)
template ChangeDeviceNotify*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, OtherClass, changeDeviceNotify)
template DevicePropertyNotify*(d, `type`, class: untyped): untyped =
FindTypeAndClass(d, `type`, class, OtherClass, propertyNotify)
template DevicePointerMotionHint*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or devicePointerMotionHint
template DeviceButton1Motion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButton1Motion
template DeviceButton2Motion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButton2Motion
template DeviceButton3Motion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButton3Motion
template DeviceButton4Motion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButton4Motion
template DeviceButton5Motion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButton5Motion
template DeviceButtonMotion*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButtonMotion
template DeviceOwnerGrabButton*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceOwnerGrabButton
template DeviceButtonPressGrab*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or deviceButtonGrab
template NoExtensionEvent*(d, `type`, class: untyped) =
class = (cast[PXDevice](d)).device_id shl 8 or noExtensionEvent
template DevicePresence*(dpy, `type`, class: untyped) =
`type` = XiGetDevicePresenceNotifyEvent(dpy)
class = (0x00010000 or devicePresence)
## Errors
template BadDevice*(dpy, error: untyped): untyped =
xibaddevice(dpy, addr(error))
template BadClass*(dpy, error: untyped): untyped =
xibadclass(dpy, addr(error))
template BadEvent*(dpy, error: untyped): untyped =
xibadevent(dpy, addr(error))
template BadMode*(dpy, error: untyped): untyped =
xibadmode(dpy, addr(error))
template DeviceBusy*(dpy, error: untyped): untyped =
xidevicebusy(dpy, addr(error))
type
PXDeviceKeyEvent* = ptr XDeviceKeyEvent
XDeviceKeyEvent* {.final.} = object
## DeviceKey events. These events are sent by input devices that
## support input class Keys.
## The location of the X pointer is reported in the coordinate
## fields of the x,y and x_root,y_root fields.
`type`*: cint ## of event
serial*: culong ## # of last request processed
send_event*: XBool ## true if from SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## "event" window reported relative to
deviceid*: XID
root*: Window ## root window event occured on
subwindow*: Window ## child window
time*: Time ## milliseconds
x*: cint
y*: cint ## x, y coordinates in event window
x_root*: cint ## coordinates relative to root
y_root*: cint ## coordinates relative to root
state*: cuint ## key or button mask
keycode*: cuint ## detail
same_screen*: XBool ## same screen flag
device_state*: cuint ## device key or button mask
axes_count*: char
first_axis*: char
axis_data*: array[6, cint]
PXDeviceKeyPressedEvent* = PXDeviceKeyEvent
XDeviceKeyPressedEvent* = XDeviceKeyEvent
PXDeviceKeyReleasedEvent* = PXDeviceKeyEvent
XDeviceKeyReleasedEvent* = XDeviceKeyEvent
PXDeviceButtonEvent* = ptr XDeviceButtonEvent
XDeviceButtonEvent* {.final.} = object
## DeviceButton events. These events are sent by extension devices
## that support input class Buttons.
`type`*: cint ## of event
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## "event" window reported relative to
deviceid*: XID
root*: Window ## root window that the event occured on
subwindow*: Window ## child window
time*: Time ## milliseconds
x*: cint
y*: cint ## x, y coordinates in event window
x_root*: cint ## coordinates relative to root
y_root*: cint ## coordinates relative to root
state*: cuint ## key or button mask
button*: cuint ## detail
same_screen*: XBool ## same screen flag
device_state*: cuint ## device key or button mask
axes_count*: char
first_axis*: char
axis_data*: array[6, cint]
PXDeviceButtonPressedEvent* = PXDeviceButtonEvent
XDeviceButtonPressedEvent* = XDeviceButtonEvent
PXDeviceButtonReleasedEvent* = PXDeviceButtonEvent
XDeviceButtonReleasedEvent* = XDeviceButtonEvent
PXDeviceMotionEvent* = ptr XDeviceMotionEvent
XDeviceMotionEvent* {.final.} = object
## DeviceMotionNotify event. These events are sent by extension devices
## that support input class Valuators.
`type`*: cint ## of event
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## "event" window reported relative to
deviceid*: XID
root*: Window ## root window that the event occured on
subwindow*: Window ## child window
time*: Time ## milliseconds
x*: cint
y*: cint ## x, y coordinates in event window
x_root*: cint ## coordinates relative to root
y_root*: cint ## coordinates relative to root
state*: cuint ## key or button mask
is_hint*: char ## detail
same_screen*: XBool ## same screen flag
device_state*: cuint ## device key or button mask
axes_count*: char
first_axis*: char
axis_data*: array[6, cint]
PXDeviceFocusChangeEvent* = ptr XDeviceFocusChangeEvent
XDeviceFocusChangeEvent* {.final.} = object
## DeviceFocusChange events. These events are sent when the focus
## of an extension device that can be focused is changed.
`type`*: cint ## of event
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## "event" window reported relative to
deviceid*: XID
mode*: cint ## NotifyNormal, NotifyGrab, NotifyUngrab
detail*: cint ##
## NotifyAncestor, NotifyVirtual, NotifyInferior,
## NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
## NotifyPointerRoot, NotifyDetailNone
##
time*: Time
PXDeviceFocusInEvent* = PXDeviceFocusChangeEvent
XDeviceFocusInEvent* = XDeviceFocusChangeEvent
PXDeviceFocusOutEvent* = PXDeviceFocusChangeEvent
XDeviceFocusOutEvent* = XDeviceFocusChangeEvent
PXProximityNotifyEvent* = ptr XProximityNotifyEvent
XProximityNotifyEvent* {.final.} = object
## ProximityNotify events. These events are sent by those absolute
## positioning devices that are capable of generating proximity information.
`type`*: cint ## ProximityIn or ProximityOut
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window
deviceid*: XID
root*: Window
subwindow*: Window
time*: Time
x*: cint
y*: cint
x_root*: cint
y_root*: cint
state*: cuint
same_screen*: XBool
device_state*: cuint ## device key or button mask
axes_count*: char
first_axis*: char
axis_data*: array[6, cint]
PXProximityInEvent* = PXProximityNotifyEvent
XProximityInEvent* = XProximityNotifyEvent
PXProximityOutEvent* = PXProximityNotifyEvent
XProximityOutEvent* = XProximityNotifyEvent
PXInputClass* = ptr XInputClass
XInputClass* {.final.} = object
class*: char
length*: char
PXDeviceStateNotifyEvent* = ptr XDeviceStateNotifyEvent
XDeviceStateNotifyEvent* {.final.} = object
## DeviceStateNotify events are generated on EnterWindow and FocusIn
## for those clients who have selected DeviceState.
`type`*: cint
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window
deviceid*: XID
time*: Time
num_classes*: cint
data*: array[64, char]
PXValuatorStatus* = ptr XValuatorStatus
XValuatorStatus* {.final.} = object
class*: char
length*: char
num_valuators*: char
mode*: char
valuators*: array[6, cint]
PXKeyStatus* = ptr XKeyStatus
XKeyStatus* {.final.} = object
class*: char
length*: char
num_keys*: cshort
keys*: array[32, char]
PXButtonStatus* = ptr XButtonStatus
XButtonStatus* {.final.} = object
class*: char
length*: char
num_buttons*: cshort
buttons*: array[32, char]
PXDeviceMappingEvent* = ptr XDeviceMappingEvent
XDeviceMappingEvent* {.final.} = object
## DeviceMappingNotify event. This event is sent when the key mapping,
## modifier mapping, or button mapping of an extension device is changed.
`type`*: cint
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## unused
deviceid*: XID
time*: Time
request*: cint ## one of MappingModifier, MappingKeyboard,
## MappingPointer
first_keycode*: cint ## first keycode
count*: cint ## defines range of change w. first_keycode
PXChangeDeviceNotifyEvent* = ptr XChangeDeviceNotifyEvent
XChangeDeviceNotifyEvent* {.final.} = object
## ChangeDeviceNotify event. This event is sent when an
## XChangeKeyboard or XChangePointer request is made.
`type`*: cint
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## unused
deviceid*: XID
time*: Time
request*: cint ## NewPointer or NewKeyboard
PXDevicePresenceNotifyEvent* = ptr XDevicePresenceNotifyEvent
XDevicePresenceNotifyEvent* {.final.} = object
## DevicePresenceNotify event. This event is sent when the list of
## input devices changes, in which case devchange will be false, and
## no information about the change will be contained in the event;
## the client should use XListInputDevices() to learn what has changed.
##
## If devchange is true, an attribute that the server believes is
## important has changed on a device, and the client should use
## XGetDeviceControl to examine the device. If control is non-zero,
## then that control has changed meaningfully.
`type`*: cint
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## unused
time*: Time
devchange*: XBool
deviceid*: XID
control*: XID
PXDevicePropertyNotifyEvent* = ptr XDevicePropertyNotifyEvent
XDevicePropertyNotifyEvent* {.final.} = object
`type`*: cint
serial*: culong ## # of last request processed by server
send_event*: XBool ## true if this came from a SendEvent request
display*: PDisplay ## Display the event was read from
window*: Window ## unused
time*: Time
deviceid*: XID ## id of the device that changed
atom*: Atom ## the property that changed
state*: cint ## PropertyNewValue or PropertyDeleted
PXFeedbackState* = ptr XFeedbackState
XFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
PXKbdFeedbackState* = ptr XKbdFeedbackState
XKbdFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
click*: cint
percent*: cint
pitch*: cint
duration*: cint
led_mask*: cint
global_auto_repeat*: cint
auto_repeats*: array[32, char]
PXPtrFeedbackState* = ptr XPtrFeedbackState
XPtrFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
accelNum*: cint
accelDenom*: cint
threshold*: cint
PXIntegerFeedbackState* = ptr XIntegerFeedbackState
XIntegerFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
resolution*: cint
minVal*: cint
maxVal*: cint
PXStringFeedbackState* = ptr XStringFeedbackState
XStringFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
max_symbols*: cint
num_syms_supported*: cint
syms_supported*: PKeySym
PXBellFeedbackState* = ptr XBellFeedbackState
XBellFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
percent*: cint
pitch*: cint
duration*: cint
PXLedFeedbackState* = ptr XLedFeedbackState
XLedFeedbackState* {.final.} = object
class*: XID
length*: cint
id*: XID
led_values*: cint
led_mask*: cint
PXFeedbackControl* = ptr XFeedbackControl
XFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
PXPtrFeedbackControl* = ptr XPtrFeedbackControl
XPtrFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
accelNum*: cint
accelDenom*: cint
threshold*: cint
PXKbdFeedbackControl* = ptr XKbdFeedbackControl
XKbdFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
click*: cint
percent*: cint
pitch*: cint
duration*: cint
led_mask*: cint
led_value*: cint
key*: cint
auto_repeat_mode*: cint
PXStringFeedbackControl* = ptr XStringFeedbackControl
XStringFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
num_keysyms*: cint
syms_to_display*: PKeySym
PXIntegerFeedbackControl* = ptr XIntegerFeedbackControl
XIntegerFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
int_to_display*: cint
PXBellFeedbackControl* = ptr XBellFeedbackControl
XBellFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
percent*: cint
pitch*: cint
duration*: cint
PXLedFeedbackControl* = ptr XLedFeedbackControl
XLedFeedbackControl* {.final.} = object
class*: XID
length*: cint
id*: XID
led_mask*: cint
led_values*: cint
PXDeviceControl* = ptr XDeviceControl
XDeviceControl* {.final.} = object
control*: XID
length*: cint
PXDeviceResolutionControl* = ptr XDeviceResolutionControl
XDeviceResolutionControl* {.final.} = object
control*: XID
length*: cint
first_valuator*: cint
num_valuators*: cint
resolutions*: ptr cint
PXDeviceResolutionState* = ptr XDeviceResolutionState
XDeviceResolutionState* {.final.} = object
control*: XID
length*: cint
num_valuators*: cint
resolutions*: ptr cint
min_resolutions*: ptr cint
max_resolutions*: ptr cint
PXDeviceAbsCalibControl* = ptr XDeviceAbsCalibControl
XDeviceAbsCalibControl* {.final.} = object
control*: XID
length*: cint
min_x*: cint
max_x*: cint
min_y*: cint
max_y*: cint
flip_x*: cint
flip_y*: cint
rotation*: cint
button_threshold*: cint
PXDeviceAbsCalibState* = PXDeviceAbsCalibControl
XDeviceAbsCalibState* = XDeviceAbsCalibControl
PXDeviceAbsAreaControl* = ptr XDeviceAbsAreaControl
XDeviceAbsAreaControl* {.final.} = object
control*: XID
length*: cint
offset_x*: cint
offset_y*: cint
width*: cint
height*: cint
screen*: cint
following*: XID
PXDeviceAbsAreaState* = PXDeviceAbsAreaControl
XDeviceAbsAreaState* = XDeviceAbsAreaControl
PXDeviceCoreControl* = ptr XDeviceCoreControl
XDeviceCoreControl* {.final.} = object
control*: XID
length*: cint
status*: cint
PXDeviceCoreState* = ptr XDeviceCoreState
XDeviceCoreState* {.final.} = object
control*: XID
length*: cint
status*: cint
iscore*: cint
PXDeviceEnableControl* = ptr XDeviceEnableControl
XDeviceEnableControl* {.final.} = object
control*: XID
length*: cint
enable*: cint
PXDeviceEnableState* = PXDeviceEnableControl
XDeviceEnableState* = XDeviceEnableControl
PXAnyClassInfo* = ptr XAnyClassInfo
XAnyClassInfo* {.final.} = object
class*: XID
length*: cint
PXDeviceInfo* = ptr XDeviceInfo
XDeviceInfo* {.final.} = object
id*: XID
`type`*: Atom
name*: cstring
num_classes*: cint
use*: cint
inputclassinfo*: PXAnyClassInfo
PXKeyInfo* = ptr XKeyInfo
XKeyInfo* {.final.} = object
class*: XID
length*: cint
min_keycode*: cushort
max_keycode*: cushort
num_keys*: cushort
PXButtonInfo* = ptr XButtonInfo
XButtonInfo* {.final.} = object
class*: XID
length*: cint
num_buttons*: cshort
PXAxisInfo* = ptr XAxisInfo
XAxisInfo* {.final.} = object
resolution*: cint
min_value*: cint
max_value*: cint
PXValuatorInfo* = ptr XValuatorInfo
XValuatorInfo* {.final.} = object
class*: XID
length*: cint
num_axes*: char
mode*: char
motion_buffer*: culong
axes*: PXAxisInfo
PXInputClassInfo* = ptr XInputClassInfo
XInputClassInfo* {.final.} = object
input_class*: char
event_type_base*: char
PXDevice* = ptr XDevice
XDevice* {.final.} = object
device_id*: XID
num_classes*: cint
classes*: PXInputClassInfo
PXEventList* = ptr XEventList
XEventList* {.final.} = object
event_type*: XEventClass
device*: XID
PXDeviceTimeCoord* = ptr XDeviceTimeCoord
XDeviceTimeCoord* {.final.} = object
time*: Time
data*: ptr cint
PXDeviceState* = ptr XDeviceState
XDeviceState* {.final.} = object
device_id*: XID
num_classes*: cint
data*: PXInputClass
PXValuatorState* = ptr XValuatorState
XValuatorState* {.final.} = object
class*: char
length*: char
num_valuators*: char
mode*: char
valuators*: ptr cint
PXKeyState* = ptr XKeyState
XKeyState* {.final.} = object
class*: char
length*: char
num_keys*: cshort
keys*: array[32, char]
PXButtonState* = ptr XButtonState
XButtonState* {.final.} = object
class*: char
length*: char
num_buttons*: cshort
buttons*: array[32, char]
{.deprecated: [TXDeviceKeyEvent: XDeviceKeyEvent].}
{.deprecated: [TXDeviceKeyPressedEvent: XDeviceKeyPressedEvent].}
{.deprecated: [TXDeviceKeyReleasedEvent: XDeviceKeyReleasedEvent].}
{.deprecated: [TXDeviceButtonEvent: XDeviceButtonEvent].}
{.deprecated: [TXDeviceButtonPressedEvent: XDeviceButtonPressedEvent].}
{.deprecated: [TXDeviceButtonReleasedEvent: XDeviceButtonReleasedEvent].}
{.deprecated: [TXDeviceMotionEvent: XDeviceMotionEvent].}
{.deprecated: [TXDeviceFocusChangeEvent: XDeviceFocusChangeEvent].}
{.deprecated: [TXDeviceFocusInEvent: XDeviceFocusInEvent].}
{.deprecated: [TXDeviceFocusOutEvent: XDeviceFocusOutEvent].}
{.deprecated: [TXProximityNotifyEvent: XProximityNotifyEvent].}
{.deprecated: [TXProximityInEvent: XProximityInEvent].}
{.deprecated: [TXProximityOutEvent: XProximityOutEvent].}
{.deprecated: [TXInputClass: XInputClass].}
{.deprecated: [TXDeviceStateNotifyEvent: XDeviceStateNotifyEvent].}
{.deprecated: [TXValuatorStatus: XValuatorStatus].}
{.deprecated: [TXKeyStatus: XKeyStatus].}
{.deprecated: [TXButtonStatus: XButtonStatus].}
{.deprecated: [TXDeviceMappingEvent: XDeviceMappingEvent].}
{.deprecated: [TXChangeDeviceNotifyEvent: XChangeDeviceNotifyEvent].}
{.deprecated: [TXDevicePresenceNotifyEvent: XDevicePresenceNotifyEvent].}
{.deprecated: [TXDevicePropertyNotifyEvent: XDevicePropertyNotifyEvent].}
{.deprecated: [TXFeedbackState: XFeedbackState].}
{.deprecated: [TXKbdFeedbackState: XKbdFeedbackState].}
{.deprecated: [TXPtrFeedbackState: XPtrFeedbackState].}
{.deprecated: [TXIntegerFeedbackState: XIntegerFeedbackState].}
{.deprecated: [TXStringFeedbackState: XStringFeedbackState].}
{.deprecated: [TXBellFeedbackState: XBellFeedbackState].}
{.deprecated: [TXLedFeedbackState: XLedFeedbackState].}
{.deprecated: [TXFeedbackControl: XFeedbackControl].}
{.deprecated: [TXPtrFeedbackControl: XPtrFeedbackControl].}
{.deprecated: [TXKbdFeedbackControl: XKbdFeedbackControl].}
{.deprecated: [TXStringFeedbackControl: XStringFeedbackControl].}
{.deprecated: [TXIntegerFeedbackControl: XIntegerFeedbackControl].}
{.deprecated: [TXBellFeedbackControl: XBellFeedbackControl].}
{.deprecated: [TXLedFeedbackControl: XLedFeedbackControl].}
{.deprecated: [TXDeviceControl: XDeviceControl].}
{.deprecated: [TXDeviceResolutionControl: XDeviceResolutionControl].}
{.deprecated: [TXDeviceResolutionState: XDeviceResolutionState].}
{.deprecated: [TXDeviceAbsCalibControl: XDeviceAbsCalibControl].}
{.deprecated: [TXDeviceAbsCalibState: XDeviceAbsCalibState].}
{.deprecated: [TXDeviceAbsAreaControl: XDeviceAbsAreaControl].}
{.deprecated: [TXDeviceAbsAreaState: XDeviceAbsAreaState].}
{.deprecated: [TXDeviceCoreControl: XDeviceCoreControl].}
{.deprecated: [TXDeviceCoreState: XDeviceCoreState].}
{.deprecated: [TXDeviceEnableControl: XDeviceEnableControl].}
{.deprecated: [TXDeviceEnableState: XDeviceEnableState].}
{.deprecated: [TXAnyClassInfo: XAnyClassInfo].}
{.deprecated: [TXDeviceInfo: XDeviceInfo].}
{.deprecated: [TXKeyInfo: XKeyInfo].}
{.deprecated: [TXButtonInfo: XButtonInfo].}
{.deprecated: [TXAxisInfo: XAxisInfo].}
{.deprecated: [TXValuatorInfo: XValuatorInfo].}
{.deprecated: [TXInputClassInfo: XInputClassInfo].}
{.deprecated: [TXDevice: XDevice].}
{.deprecated: [TXEventList: XEventList].}
{.deprecated: [TXDeviceTimeCoord: XDeviceTimeCoord].}
{.deprecated: [TXDeviceState: XDeviceState].}
{.deprecated: [TXValuatorState: XValuatorState].}
{.deprecated: [TXKeyState: XKeyState].}
{.deprecated: [TXButtonState: XButtonState].}
{.push cdecl, importc, dynlib: libXi.}
proc XChangeKeyboardDevice*(a1: PDisplay, a2: PXDevice): cint
proc XChangePointerDevice*(a1: PDisplay, a2: PXDevice, a3, a4: cint): cint
proc XGrabDevice*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint,
a6: ptr UncheckedArray[XEventClass], a7, a8: cint, a9: Time): cint
proc XUngrabDevice*(a1: PDisplay, a2: PXDevice, a3: Time): cint
proc XGrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3, a4: cuint,
a5: PXDevice, a6: Window, a7: XBool, a8: cuint,
a9: ptr UncheckedArray[XEventClass], a10, a11: cint): cint
proc XUngrabDeviceKey*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
a5: PXDevice, a6: Window): cint
proc XGrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
a5: PXDevice, a6: Window, a7: XBool, a8: cuint,
a9: ptr UncheckedArray[XEventClass], a10: cint, a11: cint): cint
proc XUngrabDeviceButton*(a1: PDisplay, a2: PXDevice, a3: cuint, a4: cuint,
a5: PXDevice, a6: Window): cint
proc XAllowDeviceEvents*(a1: PDisplay, a2: PXDevice, a3: cint, a4: Time): cint
proc XGetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: PWindow, a4: ptr cint,
a5: ptr Time): cint
proc XSetDeviceFocus*(a1: PDisplay, a2: PXDevice, a3: Window, a4: cint, a5: Time): cint
proc XGetFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PXFeedbackState
proc XFreeFeedbackList*(a1: PXFeedbackState)
proc XChangeFeedbackControl*(a1: PDisplay, a2: PXDevice, a3: culong,
a4: PXFeedbackControl): cint
proc XDeviceBell*(a1: PDisplay, a2: PXDevice, a3, a4: XID, a5: cint): cint
proc XGetDeviceKeyMapping*(a1: PDisplay, a2: PXDevice,
a3: (when xNeedWidePrototypes: cuint else: KeyCode),
a4: cint, a5: ptr cint): PKeySym
proc XChangeDeviceKeyMapping*(a1: PDisplay, a2: PXDevice, a3: cint, a4: cint,
a5: PKeySym, a6: cint): cint
proc XGetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice): PXModifierKeymap
proc XSetDeviceModifierMapping*(a1: PDisplay, a2: PXDevice,
a3: PXModifierKeymap): cint
proc XSetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cint): cint
proc XGetDeviceButtonMapping*(a1: PDisplay, a2: PXDevice, a3: cstring, a4: cuint): cint
proc XQueryDeviceState*(a1: PDisplay, a2: PXDevice): PXDeviceState
proc XFreeDeviceState*(a1: PXDeviceState)
proc XGetExtensionVersion*(a1: PDisplay, a2: cstring): PXExtensionVersion
proc XListInputDevices*(a1: PDisplay, a2: ptr cint): PXDeviceInfo
proc XFreeDeviceList*(a1: PXDeviceInfo)
proc XOpenDevice*(a1: PDisplay, a2: XID): PXDevice
proc XCloseDevice*(a1: PDisplay, a2: PXDevice): cint
proc XSetDeviceMode*(a1: PDisplay, a2: PXDevice, a3: cint): cint
proc XSetDeviceValuators*(a1: PDisplay, a2: PXDevice, a3: ptr cint, a4: cint, a5: cint): cint
proc XGetDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint): PXDeviceControl
proc XChangeDeviceControl*(a1: PDisplay, a2: PXDevice, a3: cint,
a4: PXDeviceControl): cint
proc XSelectExtensionEvent*(a1: PDisplay, a2: Window, a3: ptr UncheckedArray[XEventClass], a4: cint): cint
proc XGetSelectedExtensionEvents*(a1: PDisplay, a2: Window, a3: ptr cint,
a4: ptr ptr UncheckedArray[XEventClass], a5: ptr cint,
a6: ptr ptr UncheckedArray[XEventClass]): cint
proc XChangeDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: cint,
a4: ptr UncheckedArray[XEventClass], a5: cint): cint
proc XGetDeviceDontPropagateList*(a1: PDisplay, a2: Window, a3: ptr cint): ptr UncheckedArray[XEventClass]
proc XSendExtensionEvent*(a1: PDisplay, a2: PXDevice, a3: Window, a4: XBool, a5: cint,
a6: ptr UncheckedArray[XEventClass], a7: PXEvent): Status
proc XGetDeviceMotionEvents*(a1: PDisplay, a2: PXDevice, a3, a4: Time,
a5, a6, a7: ptr cint): PXDeviceTimeCoord
proc XFreeDeviceMotionEvents*(a1: PXDeviceTimeCoord)
proc XFreeDeviceControl*(a1: PXDeviceControl)
proc XListDeviceProperties*(a1: PDisplay, a2: PXDevice, a3: ptr cint): PAtom
proc XChangeDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4: Atom, a5: cint,
a6: cint, a7: cstring, a8: cint)
proc XDeleteDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom)
proc XGetDeviceProperty*(a1: PDisplay, a2: PXDevice, a3: Atom, a4, a5: clong,
a6: XBool, a7: Atom, a8: PAtom, a9: ptr cint, a10: ptr culong,
a11: ptr culong, a12: ptr cstring): Status
{.pop.}
# Converted from X11/Xinerama.h
import
xlib
const
xineramaLib = "libXinerama.so"
type
PXineramaScreenInfo* = ptr XineramaScreenInfo
XineramaScreenInfo*{.final.} = object
screen_number*: cint
x_org*: int16
y_org*: int16
width*: int16
height*: int16
{.deprecated: [TXineramaScreenInfo: XineramaScreenInfo].}
proc XineramaQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): XBool{.
cdecl, dynlib: xineramaLib, importc.}
proc XineramaQueryVersion*(dpy: PDisplay, major: Pcint, minor: Pcint): Status{.
cdecl, dynlib: xineramaLib, importc.}
proc XineramaIsActive*(dpy: PDisplay): XBool{.cdecl, dynlib: xineramaLib, importc.}
proc XineramaQueryScreens*(dpy: PDisplay, number: Pcint): PXineramaScreenInfo{.
cdecl, dynlib: xineramaLib, importc.}
# *************************************
# Generated from <X11/extensions/XI2.h>
# *************************************
from xi import libXi
export libXi
const
XInput_2_0* = 7
## DO NOT ADD TO THIS LIST. These are libXi-specific defines.
## See commit libXi-1.4.2-21-ge8531dd
const
XI_2_Major* = 2
XI_2_Minor* = 3
## Property event flags
const
XIPropertyDeleted* = 0
XIPropertyCreated* = 1
XIPropertyModified* = 2
## Property modes
const
XIPropModeReplace* = 0
XIPropModePrepend* = 1
XIPropModeAppend* = 2
## Special property type used for XIGetProperty
const
XIAnyPropertyType* = 0
## Enter/Leave and Focus In/Out modes
const
XINotifyNormal* = 0
XINotifyGrab* = 1
XINotifyUngrab* = 2
XINotifyWhileGrabbed* = 3
XINotifyPassiveGrab* = 4
XINotifyPassiveUngrab* = 5
## Enter/Leave and focus In/out detail
const
XINotifyAncestor* = 0
XINotifyVirtual* = 1
XINotifyInferior* = 2
XINotifyNonlinear* = 3
XINotifyNonlinearVirtual* = 4
XINotifyPointer* = 5
XINotifyPointerRoot* = 6
XINotifyDetailNone* = 7
## Grab modes
const
XIGrabModeSync* = 0
XIGrabModeAsync* = 1
XIGrabModeTouch* = 2
## Grab reply status codes
const
XIGrabSuccess* = 0
XIAlreadyGrabbed* = 1
XIGrabInvalidTime* = 2
XIGrabNotViewable* = 3
XIGrabFrozen* = 4
## Grab owner events values
const
XIOwnerEvents* = true
XINoOwnerEvents* = false
## Passive grab types
const
XIGrabtypeButton* = 0
XIGrabtypeKeycode* = 1
XIGrabtypeEnter* = 2
XIGrabtypeFocusIn* = 3
XIGrabtypeTouchBegin* = 4
## Passive grab modifier
const
XIAnyModifier* = (1 shl 31)
XIAnyButton* = 0
XIAnyKeycode* = 0
## XIAllowEvents event-modes
const
XIAsyncDevice* = 0
XISyncDevice* = 1
XIReplayDevice* = 2
XIAsyncPairedDevice* = 3
XIAsyncPair* = 4
XISyncPair* = 5
XIAcceptTouch* = 6
XIRejectTouch* = 7
## DeviceChangedEvent change reasons
const
XISlaveSwitch* = 1
XIDeviceChange* = 2
## Hierarchy flags
const
XIMasterAdded* = (1 shl 0)
XIMasterRemoved* = (1 shl 1)
XISlaveAdded* = (1 shl 2)
XISlaveRemoved* = (1 shl 3)
XISlaveAttached* = (1 shl 4)
XISlaveDetached* = (1 shl 5)
XIDeviceEnabled* = (1 shl 6)
XIDeviceDisabled* = (1 shl 7)
## ChangeHierarchy constants
const
XIAddMaster* = 1
XIRemoveMaster* = 2
XIAttachSlave* = 3
XIDetachSlave* = 4
XIAttachToMaster* = 1
XIFloating* = 2
## Valuator modes
const
XIModeRelative* = 0
XIModeAbsolute* = 1
## Device types
const
XIMasterPointer* = 1
XIMasterKeyboard* = 2
XISlavePointer* = 3
XISlaveKeyboard* = 4
XIFloatingSlave* = 5
## Device classes: classes that are not identical to Xi 1.x classes must be
## numbered starting from 8.
const
XIKeyClass* = 0
XIButtonClass* = 1
XIValuatorClass* = 2
XIScrollClass* = 3
XITouchClass* = 8
## Scroll class types
const
XIScrollTypeVertical* = 1
XIScrollTypeHorizontal* = 2
## Scroll class flags
const
XIScrollFlagNoEmulation* = (1 shl 0)
XIScrollFlagPreferred* = (1 shl 1)
## Device event flags (common)
## Device event flags (key events only)
const
XIKeyRepeat* = (1 shl 16)
## Device event flags (pointer events only)
const
XIPointerEmulated* = (1 shl 16)
## Device event flags (touch events only)
const
XITouchPendingEnd* = (1 shl 16)
XITouchEmulatingPointer* = (1 shl 17)
## Barrier event flags
const
XIBarrierPointerReleased* = (1 shl 0)
XIBarrierDeviceIsGrabbed* = (1 shl 1)
## Touch modes
const
XIDirectTouch* = 1
XIDependentTouch* = 2
## XI2 event mask macros
type XIMask = ptr UncheckedArray[uint8]
template XISetMask*(mask: pointer, event: untyped): untyped =
((cast[XIMask]((mask)))[(event) shr 3] = (cast[XIMask]((mask)))[
(event) shr 3] or (1 shl ((event) and 7)))
template XIClearMask*(mask: pointer, event: untyped): untyped =
((cast[XIMask]((mask)))[(event) shr 3] = (cast[XIMask]((mask)))[
(event) shr 3] and not (1 shl ((event) and 7)))
template XIMaskIsSet*(mask: pointer, event: untyped): untyped =
((cast[XIMask]((mask)))[(event) shr 3].int and (1 shl ((event) and 7)))
template XIMaskLen*(event: untyped): untyped =
(((event) shr 3) + 1)
## Fake device ID's for event selection
const
XIAllDevices* = 0
XIAllMasterDevices* = 1
## Event types
const
XI_DeviceChanged* = 1
XI_KeyPress* = 2
XI_KeyRelease* = 3
XI_ButtonPress* = 4
XI_ButtonRelease* = 5
XI_Motion* = 6
XI_Enter* = 7
XI_Leave* = 8
XI_FocusIn* = 9
XI_FocusOut* = 10
XI_HierarchyChanged* = 11
XI_PropertyEvent* = 12
XI_RawKeyPress* = 13
XI_RawKeyRelease* = 14
XI_RawButtonPress* = 15
XI_RawButtonRelease* = 16
XI_RawMotion* = 17
XI_TouchBegin* = 18
XI_TouchUpdate* = 19
XI_TouchEnd* = 20
XI_TouchOwnership* = 21
XI_RawTouchBegin* = 22
XI_RawTouchUpdate* = 23
XI_RawTouchEnd* = 24
XI_BarrierHit* = 25
XI_BarrierLeave* = 26
XI_LASTEVENT* = XI_BarrierLeave
## NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value
## as XI_LASTEVENT if the server is supposed to handle masks etc. for this
## type of event.
## Event masks.
## Note: the protocol spec defines a mask to be of (1 << type). Clients are
## free to create masks by bitshifting instead of using these defines.
##
const
XI_DeviceChangedMask* = (1 shl XI_DeviceChanged)
XI_KeyPressMask* = (1 shl XI_KeyPress)
XI_KeyReleaseMask* = (1 shl XI_KeyRelease)
XI_ButtonPressMask* = (1 shl XI_ButtonPress)
XI_ButtonReleaseMask* = (1 shl XI_ButtonRelease)
XI_MotionMask* = (1 shl XI_Motion)
XI_EnterMask* = (1 shl XI_Enter)
XI_LeaveMask* = (1 shl XI_Leave)
XI_FocusInMask* = (1 shl XI_FocusIn)
XI_FocusOutMask* = (1 shl XI_FocusOut)
XI_HierarchyChangedMask* = (1 shl XI_HierarchyChanged)
XI_PropertyEventMask* = (1 shl XI_PropertyEvent)
XI_RawKeyPressMask* = (1 shl XI_RawKeyPress)
XI_RawKeyReleaseMask* = (1 shl XI_RawKeyRelease)
XI_RawButtonPressMask* = (1 shl XI_RawButtonPress)
XI_RawButtonReleaseMask* = (1 shl XI_RawButtonRelease)
XI_RawMotionMask* = (1 shl XI_RawMotion)
XI_TouchBeginMask* = (1 shl XI_TouchBegin)
XI_TouchEndMask* = (1 shl XI_TouchEnd)
XI_TouchOwnershipChangedMask* = (1 shl XI_TouchOwnership)
XI_TouchUpdateMask* = (1 shl XI_TouchUpdate)
XI_RawTouchBeginMask* = (1 shl XI_RawTouchBegin)
XI_RawTouchEndMask* = (1 shl XI_RawTouchEnd)
XI_RawTouchUpdateMask* = (1 shl XI_RawTouchUpdate)
XI_BarrierHitMask* = (1 shl XI_BarrierHit)
XI_BarrierLeaveMask* = (1 shl XI_BarrierLeave)
#
# $Xorg: XI.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $
#
#************************************************************
#
#Copyright 1989, 1998 The Open Group
#
#Permission to use, copy, modify, distribute, and sell this software and its
#documentation for any purpose is hereby granted without fee, provided that
#the above copyright notice appear in all copies and that both that
#copyright notice and this permission notice appear in supporting
#documentation.
#
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
#AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
#Except as contained in this notice, the name of The Open Group shall not be
#used in advertising or otherwise to promote the sale, use or other dealings
#in this Software without prior written authorization from The Open Group.
#
#Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
#
# All Rights Reserved
#
#Permission to use, copy, modify, and distribute this software and its
#documentation for any purpose and without fee is hereby granted,
#provided that the above copyright notice appear in all copies and that
#both that copyright notice and this permission notice appear in
#supporting documentation, and that the name of Hewlett-Packard not be
#used in advertising or publicity pertaining to distribution of the
#software without specific, written prior permission.
#
#HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
#HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
#SOFTWARE.
#
#********************************************************/
# $XFree86: xc/include/extensions/XI.h,v 1.5 2001/12/14 19:53:28 dawes Exp $
#
# Definitions used by the server, library and client
#
# Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
#
#Histroy:
# 2004/10/15 - Fixed a bug of accessing second based records by removing "paced record" and chnaged it to
# "reocrd" only.
# 2004/10/07 - Removed the "uses X;" line. The unit does not need it.
# 2004/10/03 - Conversion from C header to Pascal unit.
#
const
libXi* = "libXi.so(|.6)"
const
sz_xGetExtensionVersionReq* = 8
sz_xGetExtensionVersionReply* = 32
sz_xListInputDevicesReq* = 4
sz_xListInputDevicesReply* = 32
sz_xOpenDeviceReq* = 8
sz_xOpenDeviceReply* = 32
sz_xCloseDeviceReq* = 8
sz_xSetDeviceModeReq* = 8
sz_xSetDeviceModeReply* = 32
sz_xSelectExtensionEventReq* = 12
sz_xGetSelectedExtensionEventsReq* = 8
sz_xGetSelectedExtensionEventsReply* = 32
sz_xChangeDeviceDontPropagateListReq* = 12
sz_xGetDeviceDontPropagateListReq* = 8
sz_xGetDeviceDontPropagateListReply* = 32
sz_xGetDeviceMotionEventsReq* = 16
sz_xGetDeviceMotionEventsReply* = 32
sz_xChangeKeyboardDeviceReq* = 8
sz_xChangeKeyboardDeviceReply* = 32
sz_xChangePointerDeviceReq* = 8
sz_xChangePointerDeviceReply* = 32
sz_xGrabDeviceReq* = 20
sz_xGrabDeviceReply* = 32
sz_xUngrabDeviceReq* = 12
sz_xGrabDeviceKeyReq* = 20
sz_xGrabDeviceKeyReply* = 32
sz_xUngrabDeviceKeyReq* = 16
sz_xGrabDeviceButtonReq* = 20
sz_xGrabDeviceButtonReply* = 32
sz_xUngrabDeviceButtonReq* = 16
sz_xAllowDeviceEventsReq* = 12
sz_xGetDeviceFocusReq* = 8
sz_xGetDeviceFocusReply* = 32
sz_xSetDeviceFocusReq* = 16
sz_xGetFeedbackControlReq* = 8
sz_xGetFeedbackControlReply* = 32
sz_xChangeFeedbackControlReq* = 12
sz_xGetDeviceKeyMappingReq* = 8
sz_xGetDeviceKeyMappingReply* = 32
sz_xChangeDeviceKeyMappingReq* = 8
sz_xGetDeviceModifierMappingReq* = 8
sz_xSetDeviceModifierMappingReq* = 8
sz_xSetDeviceModifierMappingReply* = 32
sz_xGetDeviceButtonMappingReq* = 8
sz_xGetDeviceButtonMappingReply* = 32
sz_xSetDeviceButtonMappingReq* = 8
sz_xSetDeviceButtonMappingReply* = 32
sz_xQueryDeviceStateReq* = 8
sz_xQueryDeviceStateReply* = 32
sz_xSendExtensionEventReq* = 16
sz_xDeviceBellReq* = 8
sz_xSetDeviceValuatorsReq* = 8
sz_xSetDeviceValuatorsReply* = 32
sz_xGetDeviceControlReq* = 8
sz_xGetDeviceControlReply* = 32
sz_xChangeDeviceControlReq* = 8
sz_xChangeDeviceControlReply* = 32
const
INAME* = "XInputExtension"
const
XI_KEYBOARD* = "KEYBOARD"
XI_MOUSE* = "MOUSE"
XI_TABLET* = "TABLET"
XI_TOUCHSCREEN* = "TOUCHSCREEN"
XI_TOUCHPAD* = "TOUCHPAD"
XI_BARCODE* = "BARCODE"
XI_BUTTONBOX* = "BUTTONBOX"
XI_KNOB_BOX* = "KNOB_BOX"
XI_ONE_KNOB* = "ONE_KNOB"
XI_NINE_KNOB* = "NINE_KNOB"
XI_TRACKBALL* = "TRACKBALL"
XI_QUADRATURE* = "QUADRATURE"
XI_ID_MODULE* = "ID_MODULE"
XI_SPACEBALL* = "SPACEBALL"
XI_DATAGLOVE* = "DATAGLOVE"
XI_EYETRACKER* = "EYETRACKER"
XI_CURSORKEYS* = "CURSORKEYS"
XI_FOOTMOUSE* = "FOOTMOUSE"
const
Dont_Check* = 0
XInput_Initial_Release* = 1
XInput_Add_XDeviceBell* = 2
XInput_Add_XSetDeviceValuators* = 3
XInput_Add_XChangeDeviceControl* = 4
const
XI_Absent* = 0
XI_Present* = 1
const
XI_Initial_Release_Major* = 1
XI_Initial_Release_Minor* = 0
const
XI_Add_XDeviceBell_Major* = 1
XI_Add_XDeviceBell_Minor* = 1
const
XI_Add_XSetDeviceValuators_Major* = 1
XI_Add_XSetDeviceValuators_Minor* = 2
const
XI_Add_XChangeDeviceControl_Major* = 1
XI_Add_XChangeDeviceControl_Minor* = 3
const
DEVICE_RESOLUTION* = 1
const
NoSuchExtension* = 1
const
COUNT* = 0
CREATE* = 1
const
NewPointer* = 0
NewKeyboard* = 1
const
XPOINTER* = 0
XKEYBOARD* = 1
const
UseXKeyboard* = 0x000000FF
const
IsXPointer* = 0
IsXKeyboard* = 1
IsXExtensionDevice* = 2
const
AsyncThisDevice* = 0
SyncThisDevice* = 1
ReplayThisDevice* = 2
AsyncOtherDevices* = 3
AsyncAll* = 4
SyncAll* = 5
const
FollowKeyboard* = 3
RevertToFollowKeyboard* = 3
const
DvAccelNum* = int(1) shl 0
DvAccelDenom* = int(1) shl 1
DvThreshold* = int(1) shl 2
const
DvKeyClickPercent* = int(1) shl 0
DvPercent* = int(1) shl 1
DvPitch* = int(1) shl 2
DvDuration* = int(1) shl 3
DvLed* = int(1) shl 4
DvLedMode* = int(1) shl 5
DvKey* = int(1) shl 6
DvAutoRepeatMode* = 1 shl 7
const
DvString* = int(1) shl 0
const
DvInteger* = int(1) shl 0
const
DeviceMode* = int(1) shl 0
Relative* = 0
Absolute* = 1 # Merged from Metrolink tree for XINPUT stuff
TS_Raw* = 57
TS_Scaled* = 58
SendCoreEvents* = 59
DontSendCoreEvents* = 60 # End of merged section
const
ProximityState* = int(1) shl 1
InProximity* = int(0) shl 1
OutOfProximity* = int(1) shl 1
const
AddToList* = 0
DeleteFromList* = 1
const
KeyClass* = 0
ButtonClass* = 1
ValuatorClass* = 2
FeedbackClass* = 3
ProximityClass* = 4
FocusClass* = 5
OtherClass* = 6
const
KbdFeedbackClass* = 0
PtrFeedbackClass* = 1
StringFeedbackClass* = 2
IntegerFeedbackClass* = 3
LedFeedbackClass* = 4
BellFeedbackClass* = 5
const
devicePointerMotionHint* = 0
deviceButton1Motion* = 1
deviceButton2Motion* = 2
deviceButton3Motion* = 3
deviceButton4Motion* = 4
deviceButton5Motion* = 5
deviceButtonMotion* = 6
deviceButtonGrab* = 7
deviceOwnerGrabButton* = 8
noExtensionEvent* = 9
const
XI_BadDevice* = 0
XI_BadEvent* = 1
XI_BadMode* = 2
XI_DeviceBusy* = 3
XI_BadClass* = 4 # Make XEventClass be a CARD32 for 64 bit servers. Don't affect client
# definition of XEventClass since that would be a library interface change.
# See the top of X.h for more _XSERVER64 magic.
#
when defined(XSERVER64):
type
XEventClass* = CARD32
else:
type
XEventClass* = int32
#******************************************************************
# *
# * Extension version structure.
# *
#
type
PXExtensionVersion* = ptr XExtensionVersion
XExtensionVersion*{.final.} = object
present*: int16
major_version*: int16
minor_version*: int16
{.deprecated: [TXExtensionVersion: XExtensionVersion].}
# implementation
# Converted from X11/Xft/Xft.h
import
x,
xlib,
xrender,
xutil
const
xftLib = "libXft.so"
# Defined in the FreeType library
type
FT_UInt* = cuint
PFT_UInt* = ptr FT_UInt
FT_Face* = object
PFT_Face* = ptr FT_Face
# Defined in the fontconfig library
type
FcEndian* = enum
FcEndianBig, FcEndianLittle
FcResult* = enum
FcResultMatch, FcResultNoMatch, FcResultTypeMismatch,
FcResultNoId, FcResultOutOfMemory
PFcResult* = ptr FcResult
FcBool* = cint
FcCharSet* = object
PFcCharSet* = ptr FcCharSet
FcPattern* = object
PFcPattern* = ptr FcPattern
FcFontSet* = object
nfont*: cint
sfont*: cint
fonts*: ptr PFcPattern
PFcFontSet* = ptr FcFontSet
FcChar8* = char
PFcChar8* = ptr FcChar8
FcChar16* = cushort
PFcChar16* = ptr FcChar16
FcChar32* = cuint
PFcChar32* = ptr FcChar32
type
XftFontInfo* = object
PXftFontInfo* = ptr XftFontInfo
XftFont* = object
ascent*: cint
descent*: cint
height*: cint
max_advance_width*: cint
charset*: PFcCharSet
pattern*: PFcPattern
PXftFont* = ptr XftFont
XftDraw* = object
PXftDraw* = ptr XftDraw
XftColor* = object
pixel*: culong
color*: XRenderColor
PXftColor* = ptr XftColor
XftCharSpec* = object
ucs4*: FcChar32
x*: cshort
y*: cshort
PXftCharSpec* = ptr XftCharSpec
XftCharFontSpec* = object
font*: PXftFont
ucs4*: FcChar32
x*: cshort
y*: cshort
PXftCharFontSpec* = ptr XftCharFontSpec
XftGlyphSpec* = object
glyph*: FT_UInt
x*: cshort
y*: cshort
PXftGlyphSpec* = ptr XftGlyphSpec
XftGlyphFontSpec* = object
font*: PXftFont
glyph*: FT_UInt
x*: cshort
y*: cshort
PXftGlyphFontSpec = ptr XftGlyphFontSpec
# xftcolor.c
proc XftColorAllocName*(
display: PDisplay,
visual: PVisual,
cmap: Colormap,
name: cstring,
result: PXftColor
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftColorAllocValue*(
display: PDisplay,
visual: PVisual,
cmap: Colormap,
color: PXRenderColor,
result: PXftColor
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftColorFree*(
display: PDisplay,
visual: PVisual,
cmap: Colormap,
color: PXftColor
) {.cdecl, dynlib: xftLib, importc.}
# xftdpy.c
proc XftDefaultHasRender*(
display: PDisplay
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftDefaultSet*(
display: PDisplay,
defaults: PFcPattern
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftDefaultSubstitute*(
display: PDisplay,
screen: cint,
pattern: PFcPattern
) {.cdecl, dynlib: xftLib, importc.}
# xftdraw.c
proc XftDrawCreate*(
display: PDisplay,
drawable: Drawable,
visual: PVisual,
colormap: Colormap
): PXftDraw {.cdecl, dynlib: xftLib, importc.}
proc XftDrawCreateBitmap*(
display: PDisplay,
bitmap: Pixmap
): PXftDraw {.cdecl, dynlib: xftLib, importc.}
proc XftDrawCreateAlpha*(
display: PDisplay,
pixmap: Pixmap,
depth: cint
): PXftDraw {.cdecl, dynlib: xftLib, importc.}
proc XftDrawChange*(
draw: PXftDraw,
drawable: Drawable
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawDisplay*(
draw: PXftDraw
): PDisplay {.cdecl, dynlib: xftLib, importc.}
proc XftDrawDrawable*(
draw: PXftDraw
): Drawable {.cdecl, dynlib: xftLib, importc.}
proc XftDrawColormap*(
draw: PXftDraw
): Colormap {.cdecl, dynlib: xftLib, importc.}
proc XftDrawVisual*(
draw: PXftDraw
): PVisual {.cdecl, dynlib: xftLib, importc.}
proc XftDrawDestroy*(
draw: PXftDraw
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawPicture*(
draw: PXftDraw
): Picture {.cdecl, dynlib: xftLib, importc.}
proc XftDrawSrcPicture*(
draw: PXftDraw,
color: PXftColor
): Picture {.cdecl, dynlib: xftLib, importc.}
proc XftDrawGlyphs*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
glyphs: PFt_UInt,
nglyphs: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawString8*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawString16*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
str: PFcChar16,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawString32*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
str: PFcChar32,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawStringUtf8*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawStringUtf16*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawCharSpec*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
chars: PXftCharSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawCharFontSpec*(
draw: PXftDraw,
color: PXftColor,
chars: PXftCharFontSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawGlyphSpec*(
draw: PXftDraw,
color: PXftColor,
pub: PXftFont,
glyphs: PXftGlyphSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawGlyphFontSpec*(
draw: PXftDraw,
color: PXftColor,
glyphs: PXftGlyphFontSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawRect*(
draw: PXftDraw,
color: PXftColor,
x: cint,
y: cint,
width: cuint,
height: cuint
) {.cdecl, dynlib: xftLib, importc.}
proc XftDrawSetClip*(
draw: PXftDraw,
r: Region
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftDrawSetClipRectangles*(
draw: PXftDraw,
xOrigin: cint,
yOrigin: cint,
rects: PXRectangle,
n: cint
): XBool {.cdecl, dynlib: xftLib, importc.}
proc XftDrawSetSubwindowMode*(
draw: PXftDraw,
mode: cint
) {.cdecl, dynlib: xftLib, importc.}
# xftextent.c
proc XftGlyphExtents*(
display: PDisplay,
pub: PXftFont,
glyphs: PFT_UInt,
nglyphs: cint,
extends: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextExtents8*(
display: PDisplay,
pub: PXftFont,
str: PFcChar8,
len: cint,
extents: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextExtents16*(
display: PDisplay,
pub: PXftFont,
str: PFcChar16,
len: cint,
extents: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextExtents32*(
display: PDisplay,
pub: PXftFont,
str: PFcChar32,
len: cint,
extents: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextExtentsUtf8*(
display: PDisplay,
pub: PXftFont,
str: PFcChar8,
len: cint,
extents: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextExtentsUtf16*(
display: PDisplay,
pub: PXftFont,
str: PFcChar8,
endian: FcEndian,
len: cint,
extents: PXGlyphInfo
) {.cdecl, dynlib: xftLib, importc.}
# xftfont.c
proc XftFontMatch*(
display: PDisplay,
screen: cint,
pattern: PFcPattern,
result: PFcResult
): PFcPattern {.cdecl, dynlib: xftLib, importc.}
# Expects display to be nil as an argument
proc XftFontOpen*(
display: PDisplay,
screen: cint
): PXftFont {.cdecl, dynlib: xftLib, importc, varargs.}
proc XftFontOpenName*(
display: PDisplay,
screen: cint,
name: cstring
): PXftFont {.cdecl, dynlib: xftLib, importc.}
proc XftFontOpenXlfd*(
display: PDisplay,
screen: cint,
xlfd: cstring
): PXftFont {.cdecl, dynlib: xftLib, importc.}
# xftfreetype.c
proc XftLockFace*(
pub: PXftFont
): FT_Face {.cdecl, dynlib: xftLib, importc.}
proc XftUnlockFace*(
pub: PXftFont
) {.cdecl, dynlib: xftLib, importc.}
proc XftFontInfoCreate*(
display: PDisplay,
pattern: PFcPattern
): PXftFontInfo {.cdecl, dynlib: xftLib, importc.}
proc XftFontInfoDestroy*(
display: PDisplay,
fi: PXftFontInfo
) {.cdecl, dynlib: xftLib, importc.}
proc XftFontInfoHash*(
fi: PXftFontInfo
): PFcChar32 {.cdecl, dynlib: xftLib, importc.}
proc XftFontInfoEqual*(
a: PXftFontInfo,
b: PXftFontInfo
): FcBool {.cdecl, dynlib: xftLib, importc.}
proc XftFontOpenInfo*(
display: PDisplay,
pattern: PFcPattern,
fi: PXftFontInfo
): PXftFont {.cdecl, dynlib: xftLib, importc.}
proc XftFontOpenPattern*(
display: PDisplay,
pattern: PFcPattern
): PXftFont {.cdecl, dynlib: xftLib, importc.}
proc XftFontCopy*(
display: PDisplay,
pub: PXftFont
): PXftFont {.cdecl, dynlib: xftLib, importc.}
proc XftFontClose*(
display: PDisplay,
pub: PXftFont
) {.cdecl, dynlib: xftLib, importc.}
proc XftInitFtLibrary*(): FcBool {.cdecl, dynlib: xftLib, importc.}
# xftglyphs.c
proc XftFontLoadGlyphs*(
display: PDisplay,
pub: PXftFont,
need_bitmaps: FcBool,
glyphs: PFT_UInt,
nglyph: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftFontUnloadGlyphs*(
display: PDisplay,
pub: PXftFont,
glyphs: PFT_UInt,
nglyph: cint
) {.cdecl, dynlib: xftLib, importc.}
const XFT_NMISSING* = 256
proc XftFontCheckGlyph*(
display: PDisplay,
pub: PXftFont,
need_bitmaps: FcBool,
glyph: FT_UInt,
missing: PFT_UInt,
nmissing: cint
): FcBool {.cdecl, dynlib: xftLib, importc.}
proc XftCharExists*(
display: PDisplay,
pub: PXftFont,
ucs4: FcChar32
): FcBool {.cdecl, dynlib: xftLib, importc.}
proc XftCharIndex*(
display: PDisplay,
pub: PXftFont,
ucs4: FcChar32
): FT_UInt {.cdecl, dynlib: xftLib, importc.}
# xftinit.c
proc XftInit*(
config: cstring
): FcBool {.cdecl, dynlib: xftLib, importc.}
proc XftGetVersion*(): cint {.cdecl, dynlib: xftLib, importc.}
# xftlist.c
# Expects display to be nil as an argument
proc XftListFonts*(
display: PDisplay,
screen: cint
): PFcFontSet {.cdecl, dynlib: xftLib, importc, varargs.}
# xftname.c
proc XftNameParse*(
name: cstring
): PFcPattern {.cdecl, dynlib: xftLib, importc.}
# xftrender.c
proc XftGlyphRender*(display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
glyphs: PFT_UInt,
nglyphs: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftGlyphSpecRender*(display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
glyphs: PXftGlyphSpec,
nglyphs: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftCharSpecRender*(display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
chars: PXftCharSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftGlyphFontSpecRender*(display: PDisplay,
op: cint,
src: Picture,
dst: Picture,
srcx: cint,
srcy: cint,
glyphs: PXftGlyphFontSpec,
nglyphs: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftCharFontSpecRender*(display: PDisplay,
op: cint,
src: Picture,
dst: Picture,
srcx: cint,
srcy: cint,
chars: PXftCharFontSpec,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender8*(display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender16*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar16,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender16BE*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender16LE*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender32*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar32,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender32BE*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRender32LE*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRenderUtf8*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
proc XftTextRenderUtf16*(
display: PDisplay,
op: cint,
src: Picture,
pub: PXftFont,
dst: Picture,
srcx: cint,
srcy: cint,
x: cint,
y: cint,
str: PFcChar8,
endian: FcEndian,
len: cint
) {.cdecl, dynlib: xftLib, importc.}
# xftxlfd.c
proc XftXlfdParse8*(
xlfd_orig: cstring,
ignore_scalable: XBool,
complete: XBool
): PFcPattern {.cdecl, dynlib: xftLib, importc.}
import xlib, x
#fixes
const
#/* There's only one cursor event so far */
XFixesDisplayCursorNotify* = 0
XFixesCursorNotify* = 1
XFixesDisplayCursorNotifyMask* = (1 shl 0) # 1L (?)
XFixesNumberEvents* = 2
XFIXES_MINOR* = 0
XFIXES_REVISION* = 1
XFIXES_MAJOR* = 6
XFIXES_VERSION* = 60001# ((XFIXES_MAJOR * 10000) + (XFIXES_MINOR * 100) + (XFIXES_REVISION))
type
XFixesSelectionNotifyEvent* {.bycopy.} = object
typee*: int
serial*: culong
send_event*: bool
display*: ptr Display
window*: Window
subtype*: int
owner*: Window
selection*: Atom
timestamp*: Time
selection_timestamp*: Time
XFixesCursorNotifyEvent* {.bycopy.} = object
typee*: int
serial*: culong
send_event*: bool
display*: ptr Display
window*: Window
subtype*: int
cursor_serial*: culong
timestamp*: Time
cursor_name*: Atom
XFixesCursorImage* {.bycopy.} = object
x*: cshort
y*: cshort
width*: cushort
height*: cushort
xhot*: cushort
yhot*: cushort
cursor_serial*: culong
pixels*: ptr culong
#if XFIXES_MAJOR >= 2
atom*: Atom # /* Version >= 2 only */
name*: cstring # /* Version >= 2 only */
#if XFIXES_MAJOR >= 2 ||||| XID == XserverRegion == culong
XFixesCursorImageAndName* {.bycopy.} = object
x*: cshort
y*: cshort
width*: cushort
height*: cushort
xhot*: cushort
yhot*: cushort
cursor_serial*: culong
pixels*: ptr culong
atom*: Atom
name*: cstring
#endif
#_XFUNCPROTOBEGIN
proc XFixesQueryExtension* ( dpy: ptr Display
, event_base_return: ptr int
, error_base_return1: ptr int
): bool {.importc, cdecl.}
proc XFixesSelectCursorInput* ( dpy: ptr Display
, win: Window
, eventMask: culong
): void {.importc, cdecl.}
#[
Status XFixesQueryVersion (Display *dpy,
int *major_version_return,
int *minor_version_return);
int XFixesVersion (void);
void
XFixesChangeSaveSet (Display *dpy,
Window win,
int mode,
int target,
int map);
void
XFixesSelectSelectionInput (Display *dpy,
Window win,
Atom selection,
unsigned long eventMask);
;
XFixesCursorImage *
XFixesGetCursorImage (Display *dpy);
#if XFIXES_MAJOR >= 2
/* Version 2 functions */
culong
XFixesCreateRegion (Display *dpy, XRectangle *rectangles, int nrectangles);
culong
XFixesCreateRegionFromBitmap (Display *dpy, Pixmap bitmap);
culong
XFixesCreateRegionFromWindow (Display *dpy, Window window, int kind);
culong
XFixesCreateRegionFromGC (Display *dpy, GC gc);
culong
XFixesCreateRegionFromPicture (Display *dpy, XID picture);
void
XFixesDestroyRegion (Display *dpy, culong region);
void
XFixesSetRegion (Display *dpy, culong region,
XRectangle *rectangles, int nrectangles);
void
XFixesCopyRegion (Display *dpy, culong dst, culong src);
void
XFixesUnionRegion (Display *dpy, culong dst,
culong src1, culong src2);
void
XFixesIntersectRegion (Display *dpy, culong dst,
culong src1, culong src2);
void
XFixesSubtractRegion (Display *dpy, culong dst,
culong src1, culong src2);
void
XFixesInvertRegion (Display *dpy, culong dst,
XRectangle *rect, culong src);
void
XFixesTranslateRegion (Display *dpy, culong region, int dx, int dy);
void
XFixesRegionExtents (Display *dpy, culong dst, culong src);
XRectangle *
XFixesFetchRegion (Display *dpy, culong region, int *nrectanglesRet);
XRectangle *
XFixesFetchRegionAndBounds (Display *dpy, culong region,
int *nrectanglesRet,
XRectangle *bounds);
void
XFixesSetGCClipRegion (Display *dpy, GC gc,
int clip_x_origin, int clip_y_origin,
culong region);
void
XFixesSetWindowShapeRegion (Display *dpy, Window win, int shape_kind,
int x_off, int y_off, culong region);
void
XFixesSetPictureClipRegion (Display *dpy, XID picture,
int clip_x_origin, int clip_y_origin,
culong region);
void
XFixesSetCursorName (Display *dpy, Cursor cursor, const char *name);
const char *
XFixesGetCursorName (Display *dpy, Cursor cursor, Atom *atom);
void
XFixesChangeCursor (Display *dpy, Cursor source, Cursor destination);
void
XFixesChangeCursorByName (Display *dpy, Cursor source, const char *name);
#endif /* XFIXES_MAJOR >= 2 */
#if XFIXES_MAJOR >= 3
void
XFixesExpandRegion (Display *dpy, culong dst, culong src,
unsigned left, unsigned right,
unsigned top, unsigned bottom);
#endif /* XFIXES_MAJOR >= 3 */
#if XFIXES_MAJOR >= 4
/* Version 4.0 externs */
void
XFixesHideCursor (Display *dpy, Window win);
void
XFixesShowCursor (Display *dpy, Window win);
#endif /* XFIXES_MAJOR >= 4 */
#if XFIXES_MAJOR >= 5
typedef XID PointerBarrier;
PointerBarrier
XFixesCreatePointerBarrier(Display *dpy, Window w, int x1, int y1,
int x2, int y2, int directions,
int num_devices, int *devices);
void
XFixesDestroyPointerBarrier(Display *dpy, PointerBarrier b);
#endif /* XFIXES_MAJOR >= 5 */
#if XFIXES_MAJOR >= 6
void
XFixesSetClientDisconnectMode(Display *dpy, int disconnect_mode);
int
XFixesGetClientDisconnectMode(Display *dpy);
#endif /* XFIXES_MAJOR >= 6 */
_XFUNCPROTOEND
#endif /* _XFIXES_H_ */
#/
#[
#proto
#include <X11/Xmd.h>
#include <X11/extensions/xfixeswire.h>
#include <X11/extensions/shapeconst.h>
#define Window CARD32
#define Drawable CARD32
#define Font CARD32
#define Pixmap CARD32
#define Cursor CARD32
#define Colormap CARD32
#define GContext CARD32
#define Atom CARD32
#define VisualID CARD32
#define Time CARD32
#define KeyCode CARD8
#define KeySym CARD32
#define Picture CARD32
/*************** Version 1 ******************/
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
} xXFixesReq;
/*
* requests and replies
*/
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
CARD32 majorVersion;
CARD32 minorVersion;
} xXFixesQueryVersionReq;
#define sz_xXFixesQueryVersionReq 12
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
CARD16 sequenceNumber;
CARD32 length;
CARD32 majorVersion;
CARD32 minorVersion;
CARD32 pad2;
CARD32 pad3;
CARD32 pad4;
CARD32 pad5;
} xXFixesQueryVersionReply;
#define sz_xXFixesQueryVersionReply 32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
BYTE mode; /* SetModeInsert/SetModeDelete*/
BYTE target; /* SaveSetNearest/SaveSetRoot*/
BYTE map; /* SaveSetMap/SaveSetUnmap */
BYTE pad1;
Window window;
} xXFixesChangeSaveSetReq;
#define sz_xXFixesChangeSaveSetReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Window window;
Atom selection;
CARD32 eventMask;
} xXFixesSelectSelectionInputReq;
#define sz_xXFixesSelectSelectionInputReq 16
typedef struct {
CARD8 type;
CARD8 subtype;
CARD16 sequenceNumber;
Window window;
Window owner;
Atom selection;
Time timestamp;
Time selectionTimestamp;
CARD32 pad2;
CARD32 pad3;
} xXFixesSelectionNotifyEvent;
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Window window;
CARD32 eventMask;
} xXFixesSelectCursorInputReq;
#define sz_xXFixesSelectCursorInputReq 12
typedef struct {
CARD8 type;
CARD8 subtype;
CARD16 sequenceNumber;
Window window;
CARD32 cursorSerial;
Time timestamp;
Atom name; /* Version 2 */
CARD32 pad1;
CARD32 pad2;
CARD32 pad3;
} xXFixesCursorNotifyEvent;
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
} xXFixesGetCursorImageReq;
#define sz_xXFixesGetCursorImageReq 4
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
CARD16 sequenceNumber;
CARD32 length;
INT16 x;
INT16 y;
CARD16 width;
CARD16 height;
CARD16 xhot;
CARD16 yhot;
CARD32 cursorSerial;
CARD32 pad2;
CARD32 pad3;
} xXFixesGetCursorImageReply;
#define sz_xXFixesGetCursorImageReply 32
/*************** Version 2 ******************/
#define Region CARD32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
/* LISTofRECTANGLE */
} xXFixesCreateRegionReq;
#define sz_xXFixesCreateRegionReq 8
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
Pixmap bitmap;
} xXFixesCreateRegionFromBitmapReq;
#define sz_xXFixesCreateRegionFromBitmapReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
Window window;
CARD8 kind;
CARD8 pad1;
CARD16 pad2;
} xXFixesCreateRegionFromWindowReq;
#define sz_xXFixesCreateRegionFromWindowReq 16
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
GContext gc;
} xXFixesCreateRegionFromGCReq;
#define sz_xXFixesCreateRegionFromGCReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
Picture picture;
} xXFixesCreateRegionFromPictureReq;
#define sz_xXFixesCreateRegionFromPictureReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
} xXFixesDestroyRegionReq;
#define sz_xXFixesDestroyRegionReq 8
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
/* LISTofRECTANGLE */
} xXFixesSetRegionReq;
#define sz_xXFixesSetRegionReq 8
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region source;
Region destination;
} xXFixesCopyRegionReq;
#define sz_xXFixesCopyRegionReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region source1;
Region source2;
Region destination;
} xXFixesCombineRegionReq,
xXFixesUnionRegionReq,
xXFixesIntersectRegionReq,
xXFixesSubtractRegionReq;
#define sz_xXFixesCombineRegionReq 16
#define sz_xXFixesUnionRegionReq sz_xXFixesCombineRegionReq
#define sz_xXFixesIntersectRegionReq sz_xXFixesCombineRegionReq
#define sz_xXFixesSubtractRegionReq sz_xXFixesCombineRegionReq
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region source;
INT16 x, y;
CARD16 width, height;
Region destination;
} xXFixesInvertRegionReq;
#define sz_xXFixesInvertRegionReq 20
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
INT16 dx, dy;
} xXFixesTranslateRegionReq;
#define sz_xXFixesTranslateRegionReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region source;
Region destination;
} xXFixesRegionExtentsReq;
#define sz_xXFixesRegionExtentsReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region region;
} xXFixesFetchRegionReq;
#define sz_xXFixesFetchRegionReq 8
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
CARD16 sequenceNumber;
CARD32 length;
INT16 x, y;
CARD16 width, height;
CARD32 pad2;
CARD32 pad3;
CARD32 pad4;
CARD32 pad5;
} xXFixesFetchRegionReply;
#define sz_xXFixesFetchRegionReply 32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
GContext gc;
Region region;
INT16 xOrigin, yOrigin;
} xXFixesSetGCClipRegionReq;
#define sz_xXFixesSetGCClipRegionReq 16
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Window dest;
BYTE destKind;
CARD8 pad1;
CARD16 pad2;
INT16 xOff, yOff;
Region region;
} xXFixesSetWindowShapeRegionReq;
#define sz_xXFixesSetWindowShapeRegionReq 20
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Picture picture;
Region region;
INT16 xOrigin, yOrigin;
} xXFixesSetPictureClipRegionReq;
#define sz_xXFixesSetPictureClipRegionReq 16
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Cursor cursor;
CARD16 nbytes;
CARD16 pad;
} xXFixesSetCursorNameReq;
#define sz_xXFixesSetCursorNameReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Cursor cursor;
} xXFixesGetCursorNameReq;
#define sz_xXFixesGetCursorNameReq 8
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
CARD16 sequenceNumber;
CARD32 length;
Atom atom;
CARD16 nbytes;
CARD16 pad2;
CARD32 pad3;
CARD32 pad4;
CARD32 pad5;
CARD32 pad6;
} xXFixesGetCursorNameReply;
#define sz_xXFixesGetCursorNameReply 32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
} xXFixesGetCursorImageAndNameReq;
#define sz_xXFixesGetCursorImageAndNameReq 4
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
CARD16 sequenceNumber;
CARD32 length;
INT16 x;
INT16 y;
CARD16 width;
CARD16 height;
CARD16 xhot;
CARD16 yhot;
CARD32 cursorSerial;
Atom cursorName;
CARD16 nbytes;
CARD16 pad;
} xXFixesGetCursorImageAndNameReply;
#define sz_xXFixesGetCursorImageAndNameReply 32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Cursor source;
Cursor destination;
} xXFixesChangeCursorReq;
#define sz_xXFixesChangeCursorReq 12
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Cursor source;
CARD16 nbytes;
CARD16 pad;
} xXFixesChangeCursorByNameReq;
#define sz_xXFixesChangeCursorByNameReq 12
/*************** Version 3 ******************/
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Region source;
Region destination;
CARD16 left;
CARD16 right;
CARD16 top;
CARD16 bottom;
} xXFixesExpandRegionReq;
#define sz_xXFixesExpandRegionReq 20
/*************** Version 4.0 ******************/
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Window window;
} xXFixesHideCursorReq;
#define sz_xXFixesHideCursorReq sizeof(xXFixesHideCursorReq)
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Window window;
} xXFixesShowCursorReq;
#define sz_xXFixesShowCursorReq sizeof(xXFixesShowCursorReq)
/*************** Version 5.0 ******************/
#define Barrier CARD32
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Barrier barrier;
Window window;
INT16 x1;
INT16 y1;
INT16 x2;
INT16 y2;
CARD32 directions;
CARD16 pad;
CARD16 num_devices;
/* array of CARD16 devices */
} xXFixesCreatePointerBarrierReq;
#define sz_xXFixesCreatePointerBarrierReq 28
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
Barrier barrier;
} xXFixesDestroyPointerBarrierReq;
#define sz_xXFixesDestroyPointerBarrierReq 8
/*************** Version 6.0 ******************/
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
CARD32 disconnect_mode;
} xXFixesSetClientDisconnectModeReq;
#define sz_xXFixesSetClientDisconnectModeReq 8
typedef struct {
CARD8 reqType;
CARD8 xfixesReqType;
CARD16 length;
} xXFixesGetClientDisconnectModeReq;
#define sz_xXFixesGetClientDisconnectModeReq 4
typedef struct {
BYTE type; /* X_Reply */
CARD8 pad0;
CARD16 sequenceNumber;
CARD32 length;
CARD32 disconnect_mode;
CARD32 pad1;
CARD32 pad2;
CARD32 pad3;
CARD32 pad4;
CARD32 pad5;
} xXFixesGetClientDisconnectModeReply;
#define sz_xXFixesGetClientDisconnectModeReply 32
#undef Barrier
#undef Region
#undef Picture
#undef Window
#undef Drawable
#undef Font
#undef Pixmap
#undef Cursor
#undef Colormap
#undef GContext
#undef Atom
#undef VisualID
#undef Time
#undef KeyCode
#undef KeySym
#endif /* _XFIXESPROTO_H_ */
#]/
#[fixesWire
#define XFIXES_NAME "XFIXES"
#define XFIXES_MAJOR 6
#define XFIXES_MINOR 0
/*************** Version 1 ******************/
#define X_XFixesQueryVersion 0
#define X_XFixesChangeSaveSet 1
#define X_XFixesSelectSelectionInput 2
#define X_XFixesSelectCursorInput 3
#define X_XFixesGetCursorImage 4
/*************** Version 2 ******************/
#define X_XFixesCreateRegion 5
#define X_XFixesCreateRegionFromBitmap 6
#define X_XFixesCreateRegionFromWindow 7
#define X_XFixesCreateRegionFromGC 8
#define X_XFixesCreateRegionFromPicture 9
#define X_XFixesDestroyRegion 10
#define X_XFixesSetRegion 11
#define X_XFixesCopyRegion 12
#define X_XFixesUnionRegion 13
#define X_XFixesIntersectRegion 14
#define X_XFixesSubtractRegion 15
#define X_XFixesInvertRegion 16
#define X_XFixesTranslateRegion 17
#define X_XFixesRegionExtents 18
#define X_XFixesFetchRegion 19
#define X_XFixesSetGCClipRegion 20
#define X_XFixesSetWindowShapeRegion 21
#define X_XFixesSetPictureClipRegion 22
#define X_XFixesSetCursorName 23
#define X_XFixesGetCursorName 24
#define X_XFixesGetCursorImageAndName 25
#define X_XFixesChangeCursor 26
#define X_XFixesChangeCursorByName 27
/*************** Version 3 ******************/
#define X_XFixesExpandRegion 28
/*************** Version 4 ******************/
#define X_XFixesHideCursor 29
#define X_XFixesShowCursor 30
/*************** Version 5 ******************/
#define X_XFixesCreatePointerBarrier 31
#define X_XFixesDestroyPointerBarrier 32
/*************** Version 6 ******************/
#define X_XFixesSetClientDisconnectMode 33
#define X_XFixesGetClientDisconnectMode 34
#define XFixesNumberRequests (X_XFixesGetClientDisconnectMode+1)
/* Selection events share one event number */
#define XFixesSelectionNotify 0
/* Within the selection, the 'subtype' field distinguishes */
#define XFixesSetSelectionOwnerNotify 0
#define XFixesSelectionWindowDestroyNotify 1
#define XFixesSelectionClientCloseNotify 2
#define XFixesSetSelectionOwnerNotifyMask (1L << 0)
#define XFixesSelectionWindowDestroyNotifyMask (1L << 1)
#define XFixesSelectionClientCloseNotifyMask (1L << 2)
/* errors */
#define BadRegion 0
#define BadBarrier 1
#define XFixesNumberErrors (BadBarrier+1)
#define SaveSetNearest 0
#define SaveSetRoot 1
#define SaveSetMap 0
#define SaveSetUnmap 1
/*************** Version 2 ******************/
#define WindowRegionBounding 0
#define WindowRegionClip 1
/*************** Version 5 ******************/
#define BarrierPositiveX (1L << 0)
#define BarrierPositiveY (1L << 1)
#define BarrierNegativeX (1L << 2)
#define BarrierNegativeY (1L << 3)
/*************** Version 6 ******************/
/* The default server behaviour */
#define XFixesClientDisconnectFlagDefault 0
/* The server may disconnect this client to shut down */
#define XFixesClientDisconnectFlagTerminate (1L << 0)
#endif /* _XFIXESWIRE_H_ */
#
# shapeConst
#define SHAPENAME "SHAPE"
#define SHAPE_MAJOR_VERSION 1 /* current version numbers */
#define SHAPE_MINOR_VERSION 1
#define ShapeSet 0
#define ShapeUnion 1
#define ShapeIntersect 2
#define ShapeSubtract 3
#define ShapeInvert 4
#define ShapeBounding 0
#define ShapeClip 1
#define ShapeInput 2
#define ShapeNotifyMask (1L << 0)
#define ShapeNotify 0
#define ShapeNumberEvents (ShapeNotify + 1)
]#
]#
]#
# $XFree86: xc/include/extensions/xf86vmode.h,v 3.30 2001/05/07 20:09:50 mvojkovi Exp $
#
#
#Copyright 1995 Kaleb S. KEITHLEY
#
#Permission is hereby granted, free of charge, to any person obtaining
#a copy of this software and associated documentation files (the
#"Software"), to deal in the Software without restriction, including
#without limitation the rights to use, copy, modify, merge, publish,
#distribute, sublicense, and/or sell copies of the Software, and to
#permit persons to whom the Software is furnished to do so, subject to
#the following conditions:
#
#The above copyright notice and this permission notice shall be
#included in all copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
#IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES
#OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
#ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
#OTHER DEALINGS IN THE SOFTWARE.
#
#Except as contained in this notice, the name of Kaleb S. KEITHLEY
#shall not be used in advertising or otherwise to promote the sale, use
#or other dealings in this Software without prior written authorization
#from Kaleb S. KEITHLEY
#
#
# $Xorg: xf86vmode.h,v 1.3 2000/08/18 04:05:46 coskrey Exp $
# THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION
import
x, xlib
const
libXxf86vm* = "libXxf86vm.so"
type
PINT32* = ptr int32
const
X_XF86VidModeQueryVersion* = 0
X_XF86VidModeGetModeLine* = 1
X_XF86VidModeModModeLine* = 2
X_XF86VidModeSwitchMode* = 3
X_XF86VidModeGetMonitor* = 4
X_XF86VidModeLockModeSwitch* = 5
X_XF86VidModeGetAllModeLines* = 6
X_XF86VidModeAddModeLine* = 7
X_XF86VidModeDeleteModeLine* = 8
X_XF86VidModeValidateModeLine* = 9
X_XF86VidModeSwitchToMode* = 10
X_XF86VidModeGetViewPort* = 11
X_XF86VidModeSetViewPort* = 12 # new for version 2.x of this extension
X_XF86VidModeGetDotClocks* = 13
X_XF86VidModeSetClientVersion* = 14
X_XF86VidModeSetGamma* = 15
X_XF86VidModeGetGamma* = 16
X_XF86VidModeGetGammaRamp* = 17
X_XF86VidModeSetGammaRamp* = 18
X_XF86VidModeGetGammaRampSize* = 19
X_XF86VidModeGetPermissions* = 20
CLKFLAG_PROGRAMABLE* = 1
when defined(XF86VIDMODE_EVENTS):
const
XF86VidModeNotify* = 0
XF86VidModeNumberEvents* = (XF86VidModeNotify + 1)
XF86VidModeNotifyMask* = 0x00000001
XF86VidModeNonEvent* = 0
XF86VidModeModeChange* = 1
else:
const
XF86VidModeNumberEvents* = 0
const
XF86VidModeBadClock* = 0
XF86VidModeBadHTimings* = 1
XF86VidModeBadVTimings* = 2
XF86VidModeModeUnsuitable* = 3
XF86VidModeExtensionDisabled* = 4
XF86VidModeClientNotLocal* = 5
XF86VidModeZoomLocked* = 6
XF86VidModeNumberErrors* = (XF86VidModeZoomLocked + 1)
XF86VM_READ_PERMISSION* = 1
XF86VM_WRITE_PERMISSION* = 2
type
PXF86VidModeModeLine* = ptr XF86VidModeModeLine
XF86VidModeModeLine*{.final.} = object
hdisplay*: cushort
hsyncstart*: cushort
hsyncend*: cushort
htotal*: cushort
hskew*: cushort
vdisplay*: cushort
vsyncstart*: cushort
vsyncend*: cushort
vtotal*: cushort
flags*: cuint
privsize*: cint
c_private*: PINT32
PPPXF86VidModeModeInfo* = ptr PPXF86VidModeModeInfo
PPXF86VidModeModeInfo* = ptr PXF86VidModeModeInfo
PXF86VidModeModeInfo* = ptr XF86VidModeModeInfo
XF86VidModeModeInfo*{.final.} = object
dotclock*: cuint
hdisplay*: cushort
hsyncstart*: cushort
hsyncend*: cushort
htotal*: cushort
hskew*: cushort
vdisplay*: cushort
vsyncstart*: cushort
vsyncend*: cushort
vtotal*: cushort
flags*: cuint
privsize*: cint
c_private*: PINT32
PXF86VidModeSyncRange* = ptr XF86VidModeSyncRange
XF86VidModeSyncRange*{.final.} = object
hi*: cfloat
lo*: cfloat
PXF86VidModeMonitor* = ptr XF86VidModeMonitor
XF86VidModeMonitor*{.final.} = object
vendor*: cstring
model*: cstring
EMPTY*: cfloat
nhsync*: char
hsync*: PXF86VidModeSyncRange
nvsync*: char
vsync*: PXF86VidModeSyncRange
PXF86VidModeNotifyEvent* = ptr XF86VidModeNotifyEvent
XF86VidModeNotifyEvent*{.final.} = object
theType*: cint # of event
serial*: culong # # of last request processed by server
send_event*: XBool # true if this came from a SendEvent req
display*: PDisplay # Display the event was read from
root*: Window # root window of event screen
state*: cint # What happened
kind*: cint # What happened
forced*: XBool # extents of new region
time*: Time # event timestamp
PXF86VidModeGamma* = ptr XF86VidModeGamma
XF86VidModeGamma*{.final.} = object
red*: cfloat # Red Gamma value
green*: cfloat # Green Gamma value
blue*: cfloat # Blue Gamma value
{.deprecated: [TXF86VidModeModeLine: XF86VidModeModeLine].}
{.deprecated: [TXF86VidModeModeInfo: XF86VidModeModeInfo].}
{.deprecated: [TXF86VidModeSyncRange: XF86VidModeSyncRange].}
{.deprecated: [TXF86VidModeMonitor: XF86VidModeMonitor].}
{.deprecated: [TXF86VidModeNotifyEvent: XF86VidModeNotifyEvent].}
{.deprecated: [TXF86VidModeGamma: XF86VidModeGamma].}
when defined(MACROS):
proc XF86VidModeSelectNextMode*(disp: PDisplay, scr: cint): XBool
proc XF86VidModeSelectPrevMode*(disp: PDisplay, scr: cint): XBool
proc XF86VidModeQueryVersion*(dpy: PDisplay, majorVersion: Pcint,
minorVersion: Pcint): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeQueryExtension*(dpy: PDisplay, event_base: Pcint,
error_base: Pcint): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeSetClientVersion*(dpy: PDisplay): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeGetModeLine*(dpy: PDisplay, screen: cint, dotclock: Pcint,
modeline: PXF86VidModeModeLine): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeGetAllModeLines*(dpy: PDisplay, screen: cint, modecount: Pcint,
modelinesPtr: PPPXF86VidModeModeInfo): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeAddModeLine*(dpy: PDisplay, screen: cint,
new_modeline: PXF86VidModeModeInfo,
after_modeline: PXF86VidModeModeInfo): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeDeleteModeLine*(dpy: PDisplay, screen: cint,
modeline: PXF86VidModeModeInfo): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeModModeLine*(dpy: PDisplay, screen: cint,
modeline: PXF86VidModeModeLine): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeValidateModeLine*(dpy: PDisplay, screen: cint,
modeline: PXF86VidModeModeInfo): Status{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeSwitchMode*(dpy: PDisplay, screen: cint, zoom: cint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeSwitchToMode*(dpy: PDisplay, screen: cint,
modeline: PXF86VidModeModeInfo): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeLockModeSwitch*(dpy: PDisplay, screen: cint, lock: cint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeGetMonitor*(dpy: PDisplay, screen: cint,
monitor: PXF86VidModeMonitor): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeGetViewPort*(dpy: PDisplay, screen: cint, x_return: Pcint,
y_return: Pcint): XBool{.cdecl, dynlib: libXxf86vm,
importc.}
proc XF86VidModeSetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeGetDotClocks*(dpy: PDisplay, screen: cint, flags_return: Pcint,
number_of_clocks_return: Pcint,
max_dot_clock_return: Pcint, clocks_return: PPcint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeGetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeSetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeSetGammaRamp*(dpy: PDisplay, screen: cint, size: cint,
red_array: Pcushort, green_array: Pcushort,
blue_array: Pcushort): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeGetGammaRamp*(dpy: PDisplay, screen: cint, size: cint,
red_array: Pcushort, green_array: Pcushort,
blue_array: Pcushort): XBool{.cdecl,
dynlib: libXxf86vm, importc.}
proc XF86VidModeGetGammaRampSize*(dpy: PDisplay, screen: cint, size: Pcint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
proc XF86VidModeGetPermissions*(dpy: PDisplay, screen: cint, permissions: Pcint): XBool{.
cdecl, dynlib: libXxf86vm, importc.}
# implementation
#when defined(MACROS):
proc XF86VidModeSelectNextMode(disp: PDisplay, scr: cint): XBool =
XF86VidModeSwitchMode(disp, scr, 1)
proc XF86VidModeSelectPrevMode(disp: PDisplay, scr: cint): XBool =
XF86VidModeSwitchMode(disp, scr, - 1)
#
# Copyright (c) 1999 XFree86 Inc
#
# $XFree86: xc/include/extensions/xf86dga.h,v 3.20 1999/10/13 04:20:48 dawes Exp $
import
x, xlib
const
libXxf86dga* = "libXxf86dga.so"
#type
# cfloat* = float32
# $XFree86: xc/include/extensions/xf86dga1.h,v 1.2 1999/04/17 07:05:41 dawes Exp $
#
#
#Copyright (c) 1995 Jon Tombs
#Copyright (c) 1995 XFree86 Inc
#
#
#************************************************************************
#
# THIS IS THE OLD DGA API AND IS OBSOLETE. PLEASE DO NOT USE IT ANYMORE
#
#************************************************************************
type
PPcchar* = ptr ptr cstring
const
X_XF86DGAQueryVersion* = 0
X_XF86DGAGetVideoLL* = 1
X_XF86DGADirectVideo* = 2
X_XF86DGAGetViewPortSize* = 3
X_XF86DGASetViewPort* = 4
X_XF86DGAGetVidPage* = 5
X_XF86DGASetVidPage* = 6
X_XF86DGAInstallColormap* = 7
X_XF86DGAQueryDirectVideo* = 8
X_XF86DGAViewPortChanged* = 9
XF86DGADirectPresent* = 0x00000001
XF86DGADirectGraphics* = 0x00000002
XF86DGADirectMouse* = 0x00000004
XF86DGADirectKeyb* = 0x00000008
XF86DGAHasColormap* = 0x00000100
XF86DGADirectColormap* = 0x00000200
proc XF86DGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint,
minorVersion: Pcint): XBool{.cdecl,
dynlib: libXxf86dga, importc.}
proc XF86DGAQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): XBool{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVideoLL*(dpy: PDisplay, screen: cint, base_addr: Pcint,
width: Pcint, bank_size: Pcint, ram_size: Pcint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVideo*(dpy: PDisplay, screen: cint, base_addr: PPcchar,
width: Pcint, bank_size: Pcint, ram_size: Pcint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGADirectVideo*(dpy: PDisplay, screen: cint, enable: cint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGADirectVideoLL*(dpy: PDisplay, screen: cint, enable: cint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetViewPortSize*(dpy: PDisplay, screen: cint, width: Pcint,
height: Pcint): Status{.cdecl,
dynlib: libXxf86dga, importc.}
proc XF86DGASetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVidPage*(dpy: PDisplay, screen: cint, vid_page: Pcint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGASetVidPage*(dpy: PDisplay, screen: cint, vid_page: cint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAInstallColormap*(dpy: PDisplay, screen: cint, Colormap: Colormap): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAForkApp*(screen: cint): cint{.cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAQueryDirectVideo*(dpy: PDisplay, screen: cint, flags: Pcint): Status{.
cdecl, dynlib: libXxf86dga, importc.}
proc XF86DGAViewPortChanged*(dpy: PDisplay, screen: cint, n: cint): XBool{.
cdecl, dynlib: libXxf86dga, importc.}
const
X_XDGAQueryVersion* = 0 # 1 through 9 are in xf86dga1.pp
# 10 and 11 are reserved to avoid conflicts with rogue DGA extensions
X_XDGAQueryModes* = 12
X_XDGASetMode* = 13
X_XDGASetViewport* = 14
X_XDGAInstallColormap* = 15
X_XDGASelectInput* = 16
X_XDGAFillRectangle* = 17
X_XDGACopyArea* = 18
X_XDGACopyTransparentArea* = 19
X_XDGAGetViewportStatus* = 20
X_XDGASync* = 21
X_XDGAOpenFramebuffer* = 22
X_XDGACloseFramebuffer* = 23
X_XDGASetClientVersion* = 24
X_XDGAChangePixmapMode* = 25
X_XDGACreateColormap* = 26
XDGAConcurrentAccess* = 0x00000001
XDGASolidFillRect* = 0x00000002
XDGABlitRect* = 0x00000004
XDGABlitTransRect* = 0x00000008
XDGAPixmap* = 0x00000010
XDGAInterlaced* = 0x00010000
XDGADoublescan* = 0x00020000
XDGAFlipImmediate* = 0x00000001
XDGAFlipRetrace* = 0x00000002
XDGANeedRoot* = 0x00000001
XF86DGANumberEvents* = 7
XDGAPixmapModeLarge* = 0
XDGAPixmapModeSmall* = 1
XF86DGAClientNotLocal* = 0
XF86DGANoDirectVideoMode* = 1
XF86DGAScreenNotActive* = 2
XF86DGADirectNotActivated* = 3
XF86DGAOperationNotSupported* = 4
XF86DGANumberErrors* = (XF86DGAOperationNotSupported + 1)
type
PXDGAMode* = ptr XDGAMode
XDGAMode*{.final.} = object
num*: cint # A unique identifier for the mode (num > 0)
name*: cstring # name of mode given in the XF86Config
verticalRefresh*: cfloat
flags*: cint # DGA_CONCURRENT_ACCESS, etc...
imageWidth*: cint # linear accessible portion (pixels)
imageHeight*: cint
pixmapWidth*: cint # Xlib accessible portion (pixels)
pixmapHeight*: cint # both fields ignored if no concurrent access
bytesPerScanline*: cint
byteOrder*: cint # MSBFirst, LSBFirst
depth*: cint
bitsPerPixel*: cint
redMask*: culong
greenMask*: culong
blueMask*: culong
visualClass*: cshort
viewportWidth*: cint
viewportHeight*: cint
xViewportStep*: cint # viewport position granularity
yViewportStep*: cint
maxViewportX*: cint # max viewport origin
maxViewportY*: cint
viewportFlags*: cint # types of page flipping possible
reserved1*: cint
reserved2*: cint
PXDGADevice* = ptr XDGADevice
XDGADevice*{.final.} = object
mode*: XDGAMode
data*: Pcuchar
pixmap*: Pixmap
PXDGAButtonEvent* = ptr XDGAButtonEvent
XDGAButtonEvent*{.final.} = object
theType*: cint
serial*: culong
display*: PDisplay
screen*: cint
time*: Time
state*: cuint
button*: cuint
PXDGAKeyEvent* = ptr XDGAKeyEvent
XDGAKeyEvent*{.final.} = object
theType*: cint
serial*: culong
display*: PDisplay
screen*: cint
time*: Time
state*: cuint
keycode*: cuint
PXDGAMotionEvent* = ptr XDGAMotionEvent
XDGAMotionEvent*{.final.} = object
theType*: cint
serial*: culong
display*: PDisplay
screen*: cint
time*: Time
state*: cuint
dx*: cint
dy*: cint
PXDGAEvent* = ptr XDGAEvent
XDGAEvent*{.final.} = object
pad*: array[0..23, clong] # sorry you have to cast if you want access
# Case LongInt Of
# 0 : (_type : cint);
# 1 : (xbutton : XDGAButtonEvent);
# 2 : (xkey : XDGAKeyEvent);
# 3 : (xmotion : XDGAMotionEvent);
# 4 : (pad : Array[0..23] Of clong);
{.deprecated: [TXDGAMode: XDGAMode].}
{.deprecated: [TXDGADevice: XDGADevice].}
{.deprecated: [TXDGAButtonEvent: XDGAButtonEvent].}
{.deprecated: [TXDGAKeyEvent: XDGAKeyEvent].}
{.deprecated: [TXDGAMotionEvent: XDGAMotionEvent].}
{.deprecated: [TXDGAEvent: XDGAEvent].}
proc XDGAQueryExtension*(dpy: PDisplay, eventBase: Pcint, erroBase: Pcint): XBool{.
cdecl, dynlib: libXxf86dga, importc.}
proc XDGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint): XBool{.
cdecl, dynlib: libXxf86dga, importc.}
proc XDGAQueryModes*(dpy: PDisplay, screen: cint, num: Pcint): PXDGAMode{.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGASetMode*(dpy: PDisplay, screen: cint, mode: cint): PXDGADevice{.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGAOpenFramebuffer*(dpy: PDisplay, screen: cint): XBool{.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGACloseFramebuffer*(dpy: PDisplay, screen: cint){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGASetViewport*(dpy: PDisplay, screen: cint, x: cint, y: cint, flags: cint){.
cdecl, dynlib: libXxf86dga, importc.}
proc XDGAInstallColormap*(dpy: PDisplay, screen: cint, cmap: Colormap){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGACreateColormap*(dpy: PDisplay, screen: cint, device: PXDGADevice,
alloc: cint): Colormap{.cdecl, dynlib: libXxf86dga,
importc.}
proc XDGASelectInput*(dpy: PDisplay, screen: cint, event_mask: clong){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGAFillRectangle*(dpy: PDisplay, screen: cint, x: cint, y: cint,
width: cuint, height: cuint, color: culong){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGACopyArea*(dpy: PDisplay, screen: cint, srcx: cint, srcy: cint,
width: cuint, height: cuint, dstx: cint, dsty: cint){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGACopyTransparentArea*(dpy: PDisplay, screen: cint, srcx: cint,
srcy: cint, width: cuint, height: cuint,
dstx: cint, dsty: cint, key: culong){.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGAGetViewportStatus*(dpy: PDisplay, screen: cint): cint{.cdecl,
dynlib: libXxf86dga, importc.}
proc XDGASync*(dpy: PDisplay, screen: cint){.cdecl, dynlib: libXxf86dga, importc.}
proc XDGASetClientVersion*(dpy: PDisplay): XBool{.cdecl, dynlib: libXxf86dga,
importc.}
proc XDGAChangePixmapMode*(dpy: PDisplay, screen: cint, x: Pcint, y: Pcint,
mode: cint){.cdecl, dynlib: libXxf86dga, importc.}
proc XDGAKeyEventToXKeyEvent*(dk: PXDGAKeyEvent, xk: PXKeyEvent){.cdecl,
dynlib: libXxf86dga, importc.}
# implementation
import xlib
const
COMPOSITE_NAME* = "Composite"
COMPOSITE_MAJOR* = 0
COMPOSITE_MINOR* = 4
CompositeRedirectAutomatic* = 0
CompositeRedirectManual* = 1
X_CompositeQueryVersion* = 0
X_CompositeRedirectWindow* = 1
X_CompositeRedirectSubwindows* = 2
X_CompositeUnredirectWindow* = 3
X_CompositeUnredirectSubwindows* = 4
X_CompositeCreateRegionFromBorderClip* = 5
X_CompositeNameWindowPixmap* = 6
X_CompositeGetOverlayWindow* = 7
X_CompositeReleaseOverlayWindow* = 8
CompositeNumberRequests* = 9 #(X_CompositeReleaseOverlayWindow + 1)
CompositeNumberEvents* = 0
XCOMPOSITE_MAJOR* = 0#COMPOSITE_MAJOR
XCOMPOSITE_MINOR* = 4#COMPOSITE_MINOR
XCOMPOSITE_REVISION* = 2
XCOMPOSITE_VERSION* = ((XCOMPOSITE_MAJOR * 10000) + (XCOMPOSITE_MINOR * 100) + (XCOMPOSITE_REVISION))
#int XCompositeVersion (void);
proc XCompositeQueryExtension*( dpy: ptr Display
, event_base_return: ptr int
, error_base_return: ptr int
): bool {.importc, cdecl.}
# Status XCompositeQueryVersion (Display *dpy,
# int *major_version_return,
# int *minor_version_return);
# void
# XCompositeRedirectWindow (Display *dpy, Window window, int update);
# void
# XCompositeRedirectSubwindows (Display *dpy, Window window, int update);
# void
# XCompositeUnredirectWindow (Display *dpy, Window window, int update);
# void
# XCompositeUnredirectSubwindows (Display *dpy, Window window, int update);
# XserverRegion
# XCompositeCreateRegionFromBorderClip (Display *dpy, Window window);
# Pixmap
# XCompositeNameWindowPixmap (Display *dpy, Window window);
# Window
# XCompositeGetOverlayWindow (Display *dpy, Window window);
# void
# XCompositeReleaseOverlayWindow (Display *dpy, Window window);
import
x, xlib
#const
# libX11* = "X11"
#
# Automatically converted by H2Pas 0.99.15 from xcms.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# xcms.h
#
const
XcmsFailure* = 0
XcmsSuccess* = 1
XcmsSuccessWithCompression* = 2
type
PXcmsColorFormat* = ptr XcmsColorFormat
XcmsColorFormat* = int32
{.deprecated: [TXcmsColorFormat: XcmsColorFormat].}
proc XcmsUndefinedFormat*(): XcmsColorFormat
proc XcmsCIEXYZFormat*(): XcmsColorFormat
proc XcmsCIEuvYFormat*(): XcmsColorFormat
proc XcmsCIExyYFormat*(): XcmsColorFormat
proc XcmsCIELabFormat*(): XcmsColorFormat
proc XcmsCIELuvFormat*(): XcmsColorFormat
proc XcmsTekHVCFormat*(): XcmsColorFormat
proc XcmsRGBFormat*(): XcmsColorFormat
proc XcmsRGBiFormat*(): XcmsColorFormat
const
XcmsInitNone* = 0x00000000
XcmsInitSuccess* = 0x00000001
XcmsInitFailure* = 0x000000FF
type
PXcmsFloat* = ptr XcmsFloat
XcmsFloat* = float64
PXcmsRGB* = ptr XcmsRGB
XcmsRGB*{.final.} = object
red*: int16
green*: int16
blue*: int16
PXcmsRGBi* = ptr XcmsRGBi
XcmsRGBi*{.final.} = object
red*: XcmsFloat
green*: XcmsFloat
blue*: XcmsFloat
PXcmsCIEXYZ* = ptr XcmsCIEXYZ
XcmsCIEXYZ*{.final.} = object
X*: XcmsFloat
Y*: XcmsFloat
Z*: XcmsFloat
PXcmsCIEuvY* = ptr XcmsCIEuvY
XcmsCIEuvY*{.final.} = object
u_prime*: XcmsFloat
v_prime*: XcmsFloat
Y*: XcmsFloat
PXcmsCIExyY* = ptr XcmsCIExyY
XcmsCIExyY*{.final.} = object
x*: XcmsFloat
y*: XcmsFloat
theY*: XcmsFloat
PXcmsCIELab* = ptr XcmsCIELab
XcmsCIELab*{.final.} = object
L_star*: XcmsFloat
a_star*: XcmsFloat
b_star*: XcmsFloat
PXcmsCIELuv* = ptr XcmsCIELuv
XcmsCIELuv*{.final.} = object
L_star*: XcmsFloat
u_star*: XcmsFloat
v_star*: XcmsFloat
PXcmsTekHVC* = ptr XcmsTekHVC
XcmsTekHVC*{.final.} = object
H*: XcmsFloat
V*: XcmsFloat
C*: XcmsFloat
PXcmsPad* = ptr XcmsPad
XcmsPad*{.final.} = object
pad0*: XcmsFloat
pad1*: XcmsFloat
pad2*: XcmsFloat
pad3*: XcmsFloat
PXcmsColor* = ptr XcmsColor
XcmsColor*{.final.} = object # spec : record
# case longint of
# 0 : ( RGB : XcmsRGB );
# 1 : ( RGBi : XcmsRGBi );
# 2 : ( CIEXYZ : XcmsCIEXYZ );
# 3 : ( CIEuvY : XcmsCIEuvY );
# 4 : ( CIExyY : XcmsCIExyY );
# 5 : ( CIELab : XcmsCIELab );
# 6 : ( CIELuv : XcmsCIELuv );
# 7 : ( TekHVC : XcmsTekHVC );
# 8 : ( Pad : XcmsPad );
# end;
pad*: XcmsPad
pixel*: int32
format*: XcmsColorFormat
PXcmsPerScrnInfo* = ptr XcmsPerScrnInfo
XcmsPerScrnInfo*{.final.} = object
screenWhitePt*: XcmsColor
functionSet*: XPointer
screenData*: XPointer
state*: int8
pad*: array[0..2, char]
PXcmsCCC* = ptr XcmsCCC
XcmsCompressionProc* = proc (para1: PXcmsCCC, para2: PXcmsColor,
para3: int32, para4: int32, para5: PBool): Status{.
cdecl.}
XcmsWhiteAdjustProc* = proc (para1: PXcmsCCC, para2: PXcmsColor,
para3: PXcmsColor, para4: XcmsColorFormat,
para5: PXcmsColor, para6: int32, para7: PBool): Status{.
cdecl.}
XcmsCCC*{.final.} = object
dpy*: PDisplay
screenNumber*: int32
visual*: PVisual
clientWhitePt*: XcmsColor
gamutCompProc*: XcmsCompressionProc
gamutCompClientData*: XPointer
whitePtAdjProc*: XcmsWhiteAdjustProc
whitePtAdjClientData*: XPointer
pPerScrnInfo*: PXcmsPerScrnInfo
PXcmsCCCRec* = ptr XcmsCCCRec
XcmsCCCRec* = XcmsCCC
XcmsScreenInitProc* = proc (para1: PDisplay, para2: int32,
para3: PXcmsPerScrnInfo): Status{.cdecl.}
XcmsScreenFreeProc* = proc (para1: XPointer){.cdecl.}
XcmsConversionProc* = proc (){.cdecl.}
PXcmsFuncListPtr* = ptr XcmsFuncListPtr
XcmsFuncListPtr* = XcmsConversionProc
XcmsParseStringProc* = proc (para1: cstring, para2: PXcmsColor): int32{.cdecl.}
PXcmsColorSpace* = ptr XcmsColorSpace
XcmsColorSpace*{.final.} = object
prefix*: cstring
id*: XcmsColorFormat
parseString*: XcmsParseStringProc
to_CIEXYZ*: XcmsFuncListPtr
from_CIEXYZ*: XcmsFuncListPtr
inverse_flag*: int32
PXcmsFunctionSet* = ptr XcmsFunctionSet
XcmsFunctionSet*{.final.} = object # error
# extern Status XcmsAddColorSpace (
# in declaration at line 323
DDColorSpaces*: ptr PXcmsColorSpace
screenInitProc*: XcmsScreenInitProc
screenFreeProc*: XcmsScreenFreeProc
{.deprecated: [TXcmsRGB: XcmsRGB].}
{.deprecated: [TXcmsRGBi: XcmsRGBi].}
{.deprecated: [TXcmsCIEXYZ: XcmsCIEXYZ].}
{.deprecated: [TXcmsCIEuvY: XcmsCIEuvY].}
{.deprecated: [TXcmsCIExyY: XcmsCIExyY].}
{.deprecated: [TXcmsCIELab: XcmsCIELab].}
{.deprecated: [TXcmsCIELuv: XcmsCIELuv].}
{.deprecated: [TXcmsTekHVC: XcmsTekHVC].}
{.deprecated: [TXcmsPad: XcmsPad].}
{.deprecated: [TXcmsColor: XcmsColor].}
{.deprecated: [TXcmsPerScrnInfo: XcmsPerScrnInfo].}
{.deprecated: [TXcmsCompressionProc: XcmsCompressionProc].}
{.deprecated: [TXcmsWhiteAdjustProc: XcmsWhiteAdjustProc].}
{.deprecated: [TXcmsCCC: XcmsCCC].}
{.deprecated: [TXcmsCCCRec: XcmsCCCRec].}
{.deprecated: [TXcmsScreenInitProc: XcmsScreenInitProc].}
{.deprecated: [TXcmsScreenFreeProc: XcmsScreenFreeProc].}
{.deprecated: [TXcmsConversionProc: XcmsConversionProc].}
{.deprecated: [TXcmsFuncListPtr: XcmsFuncListPtr].}
{.deprecated: [TXcmsParseStringProc: XcmsParseStringProc].}
{.deprecated: [TXcmsColorSpace: XcmsColorSpace].}
{.deprecated: [TXcmsFunctionSet: XcmsFunctionSet].}
proc XcmsAddFunctionSet*(para1: PXcmsFunctionSet): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsAllocColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
para4: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsAllocNamedColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: PXcmsColor, para5: PXcmsColor,
para6: XcmsColorFormat): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCCCOfColormap*(para1: PDisplay, para2: Colormap): XcmsCCC{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELabClipab*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELabClipL*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELabClipLab*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELabQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELabQueryMaxL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELabQueryMaxLC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsCIELabQueryMinL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELabToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIELabWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
para3: PXcmsColor, para4: XcmsColorFormat,
para5: PXcmsColor, para6: int32, para7: PBool): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsCIELuvClipL*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELuvClipLuv*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELuvClipuv*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCIELuvQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELuvQueryMaxL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELuvQueryMaxLC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsCIELuvQueryMinL*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsCIELuvToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIELuvWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
para3: PXcmsColor, para4: XcmsColorFormat,
para5: PXcmsColor, para6: int32, para7: PBool): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsCIEXYZToCIELab*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEXYZToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEXYZToCIExyY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEXYZToRGBi*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEuvYToCIELuv*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEuvYToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIEuvYToTekHVC*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsCIExyYToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsClientWhitePointOfCCC*(para1: XcmsCCC): PXcmsColor{.cdecl,
dynlib: libX11, importc.}
proc XcmsConvertColors*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: XcmsColorFormat, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsCreateCCC*(para1: PDisplay, para2: int32, para3: PVisual,
para4: PXcmsColor, para5: XcmsCompressionProc,
para6: XPointer, para7: XcmsWhiteAdjustProc,
para8: XPointer): XcmsCCC{.cdecl, dynlib: libX11, importc.}
proc XcmsDefaultCCC*(para1: PDisplay, para2: int32): XcmsCCC{.cdecl,
dynlib: libX11, importc.}
proc XcmsDisplayOfCCC*(para1: XcmsCCC): PDisplay{.cdecl, dynlib: libX11,
importc.}
proc XcmsFormatOfPrefix*(para1: cstring): XcmsColorFormat{.cdecl,
dynlib: libX11, importc.}
proc XcmsFreeCCC*(para1: XcmsCCC){.cdecl, dynlib: libX11, importc.}
proc XcmsLookupColor*(para1: PDisplay, para2: Colormap, para3: cstring,
para4: PXcmsColor, para5: PXcmsColor,
para6: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsPrefixOfFormat*(para1: XcmsColorFormat): cstring{.cdecl,
dynlib: libX11, importc.}
proc XcmsQueryBlack*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsQueryBlue*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsQueryColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
para4: XcmsColorFormat): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsQueryColors*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
para4: int32, para5: XcmsColorFormat): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsQueryGreen*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsQueryRed*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsQueryWhite*(para1: XcmsCCC, para2: XcmsColorFormat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsRGBiToCIEXYZ*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsRGBiToRGB*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsRGBToRGBi*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: PBool): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsScreenNumberOfCCC*(para1: XcmsCCC): int32{.cdecl, dynlib: libX11,
importc.}
proc XcmsScreenWhitePointOfCCC*(para1: XcmsCCC): PXcmsColor{.cdecl,
dynlib: libX11, importc.}
proc XcmsSetCCCOfColormap*(para1: PDisplay, para2: Colormap, para3: XcmsCCC): XcmsCCC{.
cdecl, dynlib: libX11, importc.}
proc XcmsSetCompressionProc*(para1: XcmsCCC, para2: XcmsCompressionProc,
para3: XPointer): XcmsCompressionProc{.cdecl,
dynlib: libX11, importc.}
proc XcmsSetWhiteAdjustProc*(para1: XcmsCCC, para2: XcmsWhiteAdjustProc,
para3: XPointer): XcmsWhiteAdjustProc{.cdecl,
dynlib: libX11, importc.}
proc XcmsSetWhitePoint*(para1: XcmsCCC, para2: PXcmsColor): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsStoreColor*(para1: PDisplay, para2: Colormap, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsStoreColors*(para1: PDisplay, para2: Colormap, para3: PXcmsColor,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsTekHVCClipC*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsTekHVCClipV*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsTekHVCClipVC*(para1: XcmsCCC, para2: PXcmsColor, para3: int32,
para4: int32, para5: PBool): Status{.cdecl,
dynlib: libX11, importc.}
proc XcmsTekHVCQueryMaxC*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsTekHVCQueryMaxV*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsTekHVCQueryMaxVC*(para1: XcmsCCC, para2: XcmsFloat, para3: PXcmsColor): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsTekHVCQueryMaxVSamples*(para1: XcmsCCC, para2: XcmsFloat,
para3: PXcmsColor, para4: int32): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsTekHVCQueryMinV*(para1: XcmsCCC, para2: XcmsFloat, para3: XcmsFloat,
para4: PXcmsColor): Status{.cdecl, dynlib: libX11,
importc.}
proc XcmsTekHVCToCIEuvY*(para1: XcmsCCC, para2: PXcmsColor, para3: PXcmsColor,
para4: int32): Status{.cdecl, dynlib: libX11, importc.}
proc XcmsTekHVCWhiteShiftColors*(para1: XcmsCCC, para2: PXcmsColor,
para3: PXcmsColor, para4: XcmsColorFormat,
para5: PXcmsColor, para6: int32, para7: PBool): Status{.
cdecl, dynlib: libX11, importc.}
proc XcmsVisualOfCCC*(para1: XcmsCCC): PVisual{.cdecl, dynlib: libX11, importc.}
# implementation
proc XcmsUndefinedFormat(): XcmsColorFormat =
result = 0x00000000'i32
proc XcmsCIEXYZFormat(): XcmsColorFormat =
result = 0x00000001'i32
proc XcmsCIEuvYFormat(): XcmsColorFormat =
result = 0x00000002'i32
proc XcmsCIExyYFormat(): XcmsColorFormat =
result = 0x00000003'i32
proc XcmsCIELabFormat(): XcmsColorFormat =
result = 0x00000004'i32
proc XcmsCIELuvFormat(): XcmsColorFormat =
result = 0x00000005'i32
proc XcmsTekHVCFormat(): XcmsColorFormat =
result = 0x00000006'i32
proc XcmsRGBFormat(): XcmsColorFormat =
result = 0x80000000'i32
proc XcmsRGBiFormat(): XcmsColorFormat =
result = 0x80000001'i32
#when defined(MACROS):
proc DisplayOfCCC(ccc: XcmsCCC): PDisplay =
result = ccc.dpy
proc ScreenNumberOfCCC(ccc: XcmsCCC): int32 =
result = ccc.screenNumber
proc VisualOfCCC(ccc: XcmsCCC): PVisual =
result = ccc.visual
proc ClientWhitePointOfCCC(ccc: var XcmsCCC): ptr XcmsColor =
result = addr(ccc.clientWhitePt)
proc ScreenWhitePointOfCCC(ccc: var XcmsCCC): ptr XcmsColor =
result = addr(ccc.pPerScrnInfo.screenWhitePt)
proc FunctionSetOfCCC(ccc: XcmsCCC): Xpointer =
result = ccc.pPerScrnInfo.functionSet
# {.deadCodeElim: on.}
# type
# xcb_extension_t* {.bycopy.} = object
# name*: cstring
# global_id*: cint
# const
# XCB_BIGREQUESTS_MAJOR_VERSION* = 0
# XCB_BIGREQUESTS_MINOR_VERSION* = 0
# var xcb_big_requests_id*: xcb_extension_t
# ## *
# ## @brief xcb_big_requests_enable_cookie_t
# ##
# type
# xcb_big_requests_enable_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_big_requests_enable.
# const
# XCB_BIG_REQUESTS_ENABLE* = 0
# ## *
# ## @brief xcb_big_requests_enable_request_t
# ##
# type
# xcb_big_requests_enable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_big_requests_enable_reply_t
# ##
# type
# xcb_big_requests_enable_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# maximum_request_length*: uint32
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# #proc xcb_big_requests_enable*(c: ptr xcb_connection_t): xcb_big_requests_enable_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# #proc xcb_big_requests_enable_unchecked*(c: ptr xcb_connection_t): xcb_big_requests_enable_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_big_requests_enable_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# # proc xcb_big_requests_enable_reply*(c: ptr xcb_connection_t; cookie: xcb_big_requests_enable_cookie_t; ## *<
# # e: ptr ptr xcb_generic_error_t): ptr xcb_big_requests_enable_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from composite.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Composite_API XCB Composite API
# ## @brief Composite XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto, xfixes
# const
# XCB_COMPOSITE_MAJOR_VERSION* = 0
# XCB_COMPOSITE_MINOR_VERSION* = 4
# var xcb_composite_id*: xcb_extension_t
# type
# xcb_composite_redirect_t* = enum
# XCB_COMPOSITE_REDIRECT_AUTOMATIC = 0, XCB_COMPOSITE_REDIRECT_MANUAL = 1
# ## *
# ## @brief xcb_composite_query_version_cookie_t
# ##
# type
# xcb_composite_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_composite_query_version.
# const
# XCB_COMPOSITE_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_composite_query_version_request_t
# ##
# type
# xcb_composite_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint32
# client_minor_version*: uint32
# ## *
# ## @brief xcb_composite_query_version_reply_t
# ##
# type
# xcb_composite_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# pad1*: array[16, uint8]
# ## * Opcode for xcb_composite_redirect_window.
# const
# XCB_COMPOSITE_REDIRECT_WINDOW* = 1
# ## *
# ## @brief xcb_composite_redirect_window_request_t
# ##
# type
# xcb_composite_redirect_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# update*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_composite_redirect_subwindows.
# const
# XCB_COMPOSITE_REDIRECT_SUBWINDOWS* = 2
# ## *
# ## @brief xcb_composite_redirect_subwindows_request_t
# ##
# type
# xcb_composite_redirect_subwindows_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# update*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_composite_unredirect_window.
# const
# XCB_COMPOSITE_UNREDIRECT_WINDOW* = 3
# ## *
# ## @brief xcb_composite_unredirect_window_request_t
# ##
# type
# xcb_composite_unredirect_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# update*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_composite_unredirect_subwindows.
# const
# XCB_COMPOSITE_UNREDIRECT_SUBWINDOWS* = 4
# ## *
# ## @brief xcb_composite_unredirect_subwindows_request_t
# ##
# type
# xcb_composite_unredirect_subwindows_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# update*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_composite_create_region_from_border_clip.
# const
# XCB_COMPOSITE_CREATE_REGION_FROM_BORDER_CLIP* = 5
# ## *
# ## @brief xcb_composite_create_region_from_border_clip_request_t
# ##
# type
# xcb_composite_create_region_from_border_clip_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# window*: xcb_window_t
# ## * Opcode for xcb_composite_name_window_pixmap.
# const
# XCB_COMPOSITE_NAME_WINDOW_PIXMAP* = 6
# ## *
# ## @brief xcb_composite_name_window_pixmap_request_t
# ##
# type
# xcb_composite_name_window_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# pixmap*: xcb_pixmap_t
# ## *
# ## @brief xcb_composite_get_overlay_window_cookie_t
# ##
# type
# xcb_composite_get_overlay_window_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_composite_get_overlay_window.
# const
# XCB_COMPOSITE_GET_OVERLAY_WINDOW* = 7
# ## *
# ## @brief xcb_composite_get_overlay_window_request_t
# ##
# type
# xcb_composite_get_overlay_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_composite_get_overlay_window_reply_t
# ##
# type
# xcb_composite_get_overlay_window_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# overlay_win*: xcb_window_t
# pad1*: array[20, uint8]
# ## * Opcode for xcb_composite_release_overlay_window.
# const
# XCB_COMPOSITE_RELEASE_OVERLAY_WINDOW* = 8
# ## *
# ## @brief xcb_composite_release_overlay_window_request_t
# ##
# type
# xcb_composite_release_overlay_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_composite_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_composite_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint32; client_minor_version: uint32): xcb_composite_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_composite_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_composite_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_composite_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_composite_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_redirect_window_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_redirect_window*(c: ptr xcb_connection_t; window: xcb_window_t;
# update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_redirect_subwindows_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_redirect_subwindows*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_unredirect_window_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_unredirect_window*(c: ptr xcb_connection_t; window: xcb_window_t;
# update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_unredirect_subwindows_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_unredirect_subwindows*(c: ptr xcb_connection_t;
# window: xcb_window_t; update: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_create_region_from_border_clip_checked*(
# c: ptr xcb_connection_t; region: xcb_xfixes_region_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_create_region_from_border_clip*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_name_window_pixmap_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_name_window_pixmap*(c: ptr xcb_connection_t;
# window: xcb_window_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_get_overlay_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_composite_get_overlay_window_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_composite_get_overlay_window_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_composite_get_overlay_window_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_composite_get_overlay_window_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_composite_get_overlay_window_reply*(c: ptr xcb_connection_t; cookie: xcb_composite_get_overlay_window_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_composite_get_overlay_window_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_composite_release_overlay_window_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_composite_release_overlay_window*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from damage.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Damage_API XCB Damage API
# ## @brief Damage XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto, xfixes
# const
# XCB_DAMAGE_MAJOR_VERSION* = 1
# XCB_DAMAGE_MINOR_VERSION* = 1
# var xcb_damage_id*: xcb_extension_t
# type
# xcb_damage_damage_t* = uint32
# ## *
# ## @brief xcb_damage_damage_iterator_t
# ##
# type
# xcb_damage_damage_iterator_t* {.bycopy.} = object
# data*: ptr xcb_damage_damage_t
# rem*: cint
# index*: cint
# xcb_damage_report_level_t* = enum
# XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES = 0,
# XCB_DAMAGE_REPORT_LEVEL_DELTA_RECTANGLES = 1,
# XCB_DAMAGE_REPORT_LEVEL_BOUNDING_BOX = 2, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY = 3
# ## * Opcode for xcb_damage_bad_damage.
# const
# XCB_DAMAGE_BAD_DAMAGE* = 0
# ## *
# ## @brief xcb_damage_bad_damage_error_t
# ##
# type
# xcb_damage_bad_damage_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## *
# ## @brief xcb_damage_query_version_cookie_t
# ##
# type
# xcb_damage_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_damage_query_version.
# const
# XCB_DAMAGE_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_damage_query_version_request_t
# ##
# type
# xcb_damage_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint32
# client_minor_version*: uint32
# ## *
# ## @brief xcb_damage_query_version_reply_t
# ##
# type
# xcb_damage_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# pad1*: array[16, uint8]
# ## * Opcode for xcb_damage_create.
# const
# XCB_DAMAGE_CREATE* = 1
# ## *
# ## @brief xcb_damage_create_request_t
# ##
# type
# xcb_damage_create_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# damage*: xcb_damage_damage_t
# drawable*: xcb_drawable_t
# level*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_damage_destroy.
# const
# XCB_DAMAGE_DESTROY* = 2
# ## *
# ## @brief xcb_damage_destroy_request_t
# ##
# type
# xcb_damage_destroy_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# damage*: xcb_damage_damage_t
# ## * Opcode for xcb_damage_subtract.
# const
# XCB_DAMAGE_SUBTRACT* = 3
# ## *
# ## @brief xcb_damage_subtract_request_t
# ##
# type
# xcb_damage_subtract_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# damage*: xcb_damage_damage_t
# repair*: xcb_xfixes_region_t
# parts*: xcb_xfixes_region_t
# ## * Opcode for xcb_damage_add.
# const
# XCB_DAMAGE_ADD* = 4
# ## *
# ## @brief xcb_damage_add_request_t
# ##
# type
# xcb_damage_add_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# region*: xcb_xfixes_region_t
# ## * Opcode for xcb_damage_notify.
# const
# XCB_DAMAGE_NOTIFY* = 0
# ## *
# ## @brief xcb_damage_notify_event_t
# ##
# type
# xcb_damage_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# level*: uint8
# sequence*: uint16
# drawable*: xcb_drawable_t
# damage*: xcb_damage_damage_t
# timestamp*: xcb_timestamp_t
# area*: xcb_rectangle_t
# geometry*: xcb_rectangle_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_damage_damage_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_damage_damage_t)
# ##
# proc xcb_damage_damage_next*(i: ptr xcb_damage_damage_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_damage_damage_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_damage_damage_end*(i: xcb_damage_damage_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_damage_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_damage_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_damage_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_damage_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_damage_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_damage_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_damage_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_damage_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_damage_create_checked*(c: ptr xcb_connection_t;
# damage: xcb_damage_damage_t;
# drawable: xcb_drawable_t; level: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_damage_create*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t;
# drawable: xcb_drawable_t; level: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_damage_destroy_checked*(c: ptr xcb_connection_t;
# damage: xcb_damage_damage_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_damage_destroy*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_damage_subtract_checked*(c: ptr xcb_connection_t;
# damage: xcb_damage_damage_t;
# repair: xcb_xfixes_region_t;
# parts: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_damage_subtract*(c: ptr xcb_connection_t; damage: xcb_damage_damage_t;
# repair: xcb_xfixes_region_t; parts: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_damage_add_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_damage_add*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from dpms.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_DPMS_API XCB DPMS API
# ## @brief DPMS XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb
# const
# XCB_DPMS_MAJOR_VERSION* = 0
# XCB_DPMS_MINOR_VERSION* = 0
# var xcb_dpms_id*: xcb_extension_t
# ## *
# ## @brief xcb_dpms_get_version_cookie_t
# ##
# type
# xcb_dpms_get_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dpms_get_version.
# const
# XCB_DPMS_GET_VERSION* = 0
# ## *
# ## @brief xcb_dpms_get_version_request_t
# ##
# type
# xcb_dpms_get_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint16
# client_minor_version*: uint16
# ## *
# ## @brief xcb_dpms_get_version_reply_t
# ##
# type
# xcb_dpms_get_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major_version*: uint16
# server_minor_version*: uint16
# ## *
# ## @brief xcb_dpms_capable_cookie_t
# ##
# type
# xcb_dpms_capable_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dpms_capable.
# const
# XCB_DPMS_CAPABLE* = 1
# ## *
# ## @brief xcb_dpms_capable_request_t
# ##
# type
# xcb_dpms_capable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_dpms_capable_reply_t
# ##
# type
# xcb_dpms_capable_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# capable*: uint8
# pad1*: array[23, uint8]
# ## *
# ## @brief xcb_dpms_get_timeouts_cookie_t
# ##
# type
# xcb_dpms_get_timeouts_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dpms_get_timeouts.
# const
# XCB_DPMS_GET_TIMEOUTS* = 2
# ## *
# ## @brief xcb_dpms_get_timeouts_request_t
# ##
# type
# xcb_dpms_get_timeouts_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_dpms_get_timeouts_reply_t
# ##
# type
# xcb_dpms_get_timeouts_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# standby_timeout*: uint16
# suspend_timeout*: uint16
# off_timeout*: uint16
# pad1*: array[18, uint8]
# ## * Opcode for xcb_dpms_set_timeouts.
# const
# XCB_DPMS_SET_TIMEOUTS* = 3
# ## *
# ## @brief xcb_dpms_set_timeouts_request_t
# ##
# type
# xcb_dpms_set_timeouts_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# standby_timeout*: uint16
# suspend_timeout*: uint16
# off_timeout*: uint16
# ## * Opcode for xcb_dpms_enable.
# const
# XCB_DPMS_ENABLE* = 4
# ## *
# ## @brief xcb_dpms_enable_request_t
# ##
# type
# xcb_dpms_enable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## * Opcode for xcb_dpms_disable.
# const
# XCB_DPMS_DISABLE* = 5
# ## *
# ## @brief xcb_dpms_disable_request_t
# ##
# type
# xcb_dpms_disable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# xcb_dpms_dpms_mode_t* = enum
# XCB_DPMS_DPMS_MODE_ON = 0, XCB_DPMS_DPMS_MODE_STANDBY = 1,
# XCB_DPMS_DPMS_MODE_SUSPEND = 2, XCB_DPMS_DPMS_MODE_OFF = 3
# ## * Opcode for xcb_dpms_force_level.
# const
# XCB_DPMS_FORCE_LEVEL* = 6
# ## *
# ## @brief xcb_dpms_force_level_request_t
# ##
# type
# xcb_dpms_force_level_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# power_level*: uint16
# ## *
# ## @brief xcb_dpms_info_cookie_t
# ##
# type
# xcb_dpms_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dpms_info.
# const
# XCB_DPMS_INFO* = 7
# ## *
# ## @brief xcb_dpms_info_request_t
# ##
# type
# xcb_dpms_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_dpms_info_reply_t
# ##
# type
# xcb_dpms_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# power_level*: uint16
# state*: uint8
# pad1*: array[21, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_get_version*(c: ptr xcb_connection_t; client_major_version: uint16;
# client_minor_version: uint16): xcb_dpms_get_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dpms_get_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_dpms_get_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dpms_get_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dpms_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_get_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_get_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_capable*(c: ptr xcb_connection_t): xcb_dpms_capable_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dpms_capable_unchecked*(c: ptr xcb_connection_t): xcb_dpms_capable_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dpms_capable_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dpms_capable_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_capable_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_capable_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_get_timeouts*(c: ptr xcb_connection_t): xcb_dpms_get_timeouts_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dpms_get_timeouts_unchecked*(c: ptr xcb_connection_t): xcb_dpms_get_timeouts_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dpms_get_timeouts_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dpms_get_timeouts_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_get_timeouts_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_get_timeouts_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dpms_set_timeouts_checked*(c: ptr xcb_connection_t;
# standby_timeout: uint16;
# suspend_timeout: uint16;
# off_timeout: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_set_timeouts*(c: ptr xcb_connection_t; standby_timeout: uint16;
# suspend_timeout: uint16; off_timeout: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# #proc xcb_dpms_enable_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_enable*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dpms_disable_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_disable*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dpms_force_level_checked*(c: ptr xcb_connection_t; power_level: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_force_level*(c: ptr xcb_connection_t; power_level: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dpms_info*(c: ptr xcb_connection_t): xcb_dpms_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dpms_info_unchecked*(c: ptr xcb_connection_t): xcb_dpms_info_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dpms_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dpms_info_reply*(c: ptr xcb_connection_t; cookie: xcb_dpms_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dpms_info_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from dri2.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_DRI2_API XCB DRI2 API
# ## @brief DRI2 XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_DRI2_MAJOR_VERSION* = 1
# XCB_DRI2_MINOR_VERSION* = 4
# var xcb_dri2_id*: xcb_extension_t
# type
# xcb_dri2_attachment_t* = enum
# XCB_DRI2_ATTACHMENT_BUFFER_FRONT_LEFT = 0,
# XCB_DRI2_ATTACHMENT_BUFFER_BACK_LEFT = 1,
# XCB_DRI2_ATTACHMENT_BUFFER_FRONT_RIGHT = 2,
# XCB_DRI2_ATTACHMENT_BUFFER_BACK_RIGHT = 3,
# XCB_DRI2_ATTACHMENT_BUFFER_DEPTH = 4, XCB_DRI2_ATTACHMENT_BUFFER_STENCIL = 5,
# XCB_DRI2_ATTACHMENT_BUFFER_ACCUM = 6,
# XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_LEFT = 7,
# XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_RIGHT = 8,
# XCB_DRI2_ATTACHMENT_BUFFER_DEPTH_STENCIL = 9,
# XCB_DRI2_ATTACHMENT_BUFFER_HIZ = 10
# xcb_dri2_driver_type_t* = enum
# XCB_DRI2_DRIVER_TYPE_DRI = 0, XCB_DRI2_DRIVER_TYPE_VDPAU = 1
# xcb_dri2_event_type_t* = enum
# XCB_DRI2_EVENT_TYPE_EXCHANGE_COMPLETE = 1,
# XCB_DRI2_EVENT_TYPE_BLIT_COMPLETE = 2, XCB_DRI2_EVENT_TYPE_FLIP_COMPLETE = 3
# ## *
# ## @brief xcb_dri2_dri2_buffer_t
# ##
# type
# xcb_dri2_dri2_buffer_t* {.bycopy.} = object
# attachment*: uint32
# name*: uint32
# pitch*: uint32
# cpp*: uint32
# flags*: uint32
# ## *
# ## @brief xcb_dri2_dri2_buffer_iterator_t
# ##
# type
# xcb_dri2_dri2_buffer_iterator_t* {.bycopy.} = object
# data*: ptr xcb_dri2_dri2_buffer_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_dri2_attach_format_t
# ##
# type
# xcb_dri2_attach_format_t* {.bycopy.} = object
# attachment*: uint32
# format*: uint32
# ## *
# ## @brief xcb_dri2_attach_format_iterator_t
# ##
# type
# xcb_dri2_attach_format_iterator_t* {.bycopy.} = object
# data*: ptr xcb_dri2_attach_format_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_dri2_query_version_cookie_t
# ##
# type
# xcb_dri2_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_query_version.
# const
# XCB_DRI2_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_dri2_query_version_request_t
# ##
# type
# xcb_dri2_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_dri2_query_version_reply_t
# ##
# type
# xcb_dri2_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_dri2_connect_cookie_t
# ##
# type
# xcb_dri2_connect_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_connect.
# const
# XCB_DRI2_CONNECT* = 1
# ## *
# ## @brief xcb_dri2_connect_request_t
# ##
# type
# xcb_dri2_connect_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# driver_type*: uint32
# ## *
# ## @brief xcb_dri2_connect_reply_t
# ##
# type
# xcb_dri2_connect_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# driver_name_length*: uint32
# device_name_length*: uint32
# pad1*: array[16, uint8]
# ## *
# ## @brief xcb_dri2_authenticate_cookie_t
# ##
# type
# xcb_dri2_authenticate_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_authenticate.
# const
# XCB_DRI2_AUTHENTICATE* = 2
# ## *
# ## @brief xcb_dri2_authenticate_request_t
# ##
# type
# xcb_dri2_authenticate_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# magic*: uint32
# ## *
# ## @brief xcb_dri2_authenticate_reply_t
# ##
# type
# xcb_dri2_authenticate_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# authenticated*: uint32
# ## * Opcode for xcb_dri2_create_drawable.
# const
# XCB_DRI2_CREATE_DRAWABLE* = 3
# ## *
# ## @brief xcb_dri2_create_drawable_request_t
# ##
# type
# xcb_dri2_create_drawable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## * Opcode for xcb_dri2_destroy_drawable.
# const
# XCB_DRI2_DESTROY_DRAWABLE* = 4
# ## *
# ## @brief xcb_dri2_destroy_drawable_request_t
# ##
# type
# xcb_dri2_destroy_drawable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## @brief xcb_dri2_get_buffers_cookie_t
# ##
# type
# xcb_dri2_get_buffers_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_get_buffers.
# const
# XCB_DRI2_GET_BUFFERS* = 5
# ## *
# ## @brief xcb_dri2_get_buffers_request_t
# ##
# type
# xcb_dri2_get_buffers_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# count*: uint32
# ## *
# ## @brief xcb_dri2_get_buffers_reply_t
# ##
# type
# xcb_dri2_get_buffers_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint32
# height*: uint32
# count*: uint32
# pad1*: array[12, uint8]
# ## *
# ## @brief xcb_dri2_copy_region_cookie_t
# ##
# type
# xcb_dri2_copy_region_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_copy_region.
# const
# XCB_DRI2_COPY_REGION* = 6
# ## *
# ## @brief xcb_dri2_copy_region_request_t
# ##
# type
# xcb_dri2_copy_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# region*: uint32
# dest*: uint32
# src*: uint32
# ## *
# ## @brief xcb_dri2_copy_region_reply_t
# ##
# type
# xcb_dri2_copy_region_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# ## *
# ## @brief xcb_dri2_get_buffers_with_format_cookie_t
# ##
# type
# xcb_dri2_get_buffers_with_format_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_get_buffers_with_format.
# const
# XCB_DRI2_GET_BUFFERS_WITH_FORMAT* = 7
# ## *
# ## @brief xcb_dri2_get_buffers_with_format_request_t
# ##
# type
# xcb_dri2_get_buffers_with_format_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# count*: uint32
# ## *
# ## @brief xcb_dri2_get_buffers_with_format_reply_t
# ##
# type
# xcb_dri2_get_buffers_with_format_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint32
# height*: uint32
# count*: uint32
# pad1*: array[12, uint8]
# ## *
# ## @brief xcb_dri2_swap_buffers_cookie_t
# ##
# type
# xcb_dri2_swap_buffers_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_swap_buffers.
# const
# XCB_DRI2_SWAP_BUFFERS* = 8
# ## *
# ## @brief xcb_dri2_swap_buffers_request_t
# ##
# type
# xcb_dri2_swap_buffers_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# target_msc_hi*: uint32
# target_msc_lo*: uint32
# divisor_hi*: uint32
# divisor_lo*: uint32
# remainder_hi*: uint32
# remainder_lo*: uint32
# ## *
# ## @brief xcb_dri2_swap_buffers_reply_t
# ##
# type
# xcb_dri2_swap_buffers_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# swap_hi*: uint32
# swap_lo*: uint32
# ## *
# ## @brief xcb_dri2_get_msc_cookie_t
# ##
# type
# xcb_dri2_get_msc_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_get_msc.
# const
# XCB_DRI2_GET_MSC* = 9
# ## *
# ## @brief xcb_dri2_get_msc_request_t
# ##
# type
# xcb_dri2_get_msc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## @brief xcb_dri2_get_msc_reply_t
# ##
# type
# xcb_dri2_get_msc_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# ust_hi*: uint32
# ust_lo*: uint32
# msc_hi*: uint32
# msc_lo*: uint32
# sbc_hi*: uint32
# sbc_lo*: uint32
# ## *
# ## @brief xcb_dri2_wait_msc_cookie_t
# ##
# type
# xcb_dri2_wait_msc_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_wait_msc.
# const
# XCB_DRI2_WAIT_MSC* = 10
# ## *
# ## @brief xcb_dri2_wait_msc_request_t
# ##
# type
# xcb_dri2_wait_msc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# target_msc_hi*: uint32
# target_msc_lo*: uint32
# divisor_hi*: uint32
# divisor_lo*: uint32
# remainder_hi*: uint32
# remainder_lo*: uint32
# ## *
# ## @brief xcb_dri2_wait_msc_reply_t
# ##
# type
# xcb_dri2_wait_msc_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# ust_hi*: uint32
# ust_lo*: uint32
# msc_hi*: uint32
# msc_lo*: uint32
# sbc_hi*: uint32
# sbc_lo*: uint32
# ## *
# ## @brief xcb_dri2_wait_sbc_cookie_t
# ##
# type
# xcb_dri2_wait_sbc_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_wait_sbc.
# const
# XCB_DRI2_WAIT_SBC* = 11
# ## *
# ## @brief xcb_dri2_wait_sbc_request_t
# ##
# type
# xcb_dri2_wait_sbc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# target_sbc_hi*: uint32
# target_sbc_lo*: uint32
# ## *
# ## @brief xcb_dri2_wait_sbc_reply_t
# ##
# type
# xcb_dri2_wait_sbc_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# ust_hi*: uint32
# ust_lo*: uint32
# msc_hi*: uint32
# msc_lo*: uint32
# sbc_hi*: uint32
# sbc_lo*: uint32
# ## * Opcode for xcb_dri2_swap_interval.
# const
# XCB_DRI2_SWAP_INTERVAL* = 12
# ## *
# ## @brief xcb_dri2_swap_interval_request_t
# ##
# type
# xcb_dri2_swap_interval_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# interval*: uint32
# ## *
# ## @brief xcb_dri2_get_param_cookie_t
# ##
# type
# xcb_dri2_get_param_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri2_get_param.
# const
# XCB_DRI2_GET_PARAM* = 13
# ## *
# ## @brief xcb_dri2_get_param_request_t
# ##
# type
# xcb_dri2_get_param_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# param*: uint32
# ## *
# ## @brief xcb_dri2_get_param_reply_t
# ##
# type
# xcb_dri2_get_param_reply_t* {.bycopy.} = object
# response_type*: uint8
# is_param_recognized*: uint8
# sequence*: uint16
# length*: uint32
# value_hi*: uint32
# value_lo*: uint32
# ## * Opcode for xcb_dri2_buffer_swap_complete.
# const
# XCB_DRI2_BUFFER_SWAP_COMPLETE* = 0
# ## *
# ## @brief xcb_dri2_buffer_swap_complete_event_t
# ##
# type
# xcb_dri2_buffer_swap_complete_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event_type*: uint16
# pad1*: array[2, uint8]
# drawable*: xcb_drawable_t
# ust_hi*: uint32
# ust_lo*: uint32
# msc_hi*: uint32
# msc_lo*: uint32
# sbc*: uint32
# ## * Opcode for xcb_dri2_invalidate_buffers.
# const
# XCB_DRI2_INVALIDATE_BUFFERS* = 1
# ## *
# ## @brief xcb_dri2_invalidate_buffers_event_t
# ##
# type
# xcb_dri2_invalidate_buffers_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_dri2_dri2_buffer_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_dri2_dri2_buffer_t)
# ##
# proc xcb_dri2_dri2_buffer_next*(i: ptr xcb_dri2_dri2_buffer_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_dri2_dri2_buffer_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_dri2_dri2_buffer_end*(i: xcb_dri2_dri2_buffer_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_dri2_attach_format_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_dri2_attach_format_t)
# ##
# proc xcb_dri2_attach_format_next*(i: ptr xcb_dri2_attach_format_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_dri2_attach_format_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_dri2_attach_format_end*(i: xcb_dri2_attach_format_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_query_version*(c: ptr xcb_connection_t; major_version: uint32;
# minor_version: uint32): xcb_dri2_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_query_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint32;
# minor_version: uint32): xcb_dri2_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_query_version_reply_t
# proc xcb_dri2_connect_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_connect*(c: ptr xcb_connection_t; window: xcb_window_t;
# driver_type: uint32): xcb_dri2_connect_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_connect_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
# driver_type: uint32): xcb_dri2_connect_cookie_t
# proc xcb_dri2_connect_driver_name*(R: ptr xcb_dri2_connect_reply_t): cstring
# proc xcb_dri2_connect_driver_name_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_driver_name_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# proc xcb_dri2_connect_alignment_pad*(R: ptr xcb_dri2_connect_reply_t): pointer
# proc xcb_dri2_connect_alignment_pad_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_alignment_pad_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# proc xcb_dri2_connect_device_name*(R: ptr xcb_dri2_connect_reply_t): cstring
# proc xcb_dri2_connect_device_name_length*(R: ptr xcb_dri2_connect_reply_t): cint
# proc xcb_dri2_connect_device_name_end*(R: ptr xcb_dri2_connect_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_connect_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_connect_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_connect_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_connect_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_authenticate*(c: ptr xcb_connection_t; window: xcb_window_t;
# magic: uint32): xcb_dri2_authenticate_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_authenticate_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
# magic: uint32): xcb_dri2_authenticate_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_authenticate_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_authenticate_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_authenticate_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_authenticate_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri2_create_drawable_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_create_drawable*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri2_destroy_drawable_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_destroy_drawable*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_void_cookie_t
# proc xcb_dri2_get_buffers_sizeof*(_buffer: pointer; attachments_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_get_buffers*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# count: uint32; attachments_len: uint32;
# attachments: ptr uint32): xcb_dri2_get_buffers_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_get_buffers_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; count: uint32;
# attachments_len: uint32;
# attachments: ptr uint32): xcb_dri2_get_buffers_cookie_t
# proc xcb_dri2_get_buffers_buffers*(R: ptr xcb_dri2_get_buffers_reply_t): ptr xcb_dri2_dri2_buffer_t
# proc xcb_dri2_get_buffers_buffers_length*(R: ptr xcb_dri2_get_buffers_reply_t): cint
# proc xcb_dri2_get_buffers_buffers_iterator*(R: ptr xcb_dri2_get_buffers_reply_t): xcb_dri2_dri2_buffer_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_get_buffers_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_get_buffers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_buffers_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_buffers_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_copy_region*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# region: uint32; dest: uint32; src: uint32): xcb_dri2_copy_region_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_copy_region_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; region: uint32;
# dest: uint32; src: uint32): xcb_dri2_copy_region_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_copy_region_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_copy_region_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_copy_region_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_copy_region_reply_t
# proc xcb_dri2_get_buffers_with_format_sizeof*(_buffer: pointer;
# attachments_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_get_buffers_with_format*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; count: uint32;
# attachments_len: uint32;
# attachments: ptr xcb_dri2_attach_format_t): xcb_dri2_get_buffers_with_format_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_get_buffers_with_format_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; count: uint32; attachments_len: uint32;
# attachments: ptr xcb_dri2_attach_format_t): xcb_dri2_get_buffers_with_format_cookie_t
# proc xcb_dri2_get_buffers_with_format_buffers*(
# R: ptr xcb_dri2_get_buffers_with_format_reply_t): ptr xcb_dri2_dri2_buffer_t
# proc xcb_dri2_get_buffers_with_format_buffers_length*(
# R: ptr xcb_dri2_get_buffers_with_format_reply_t): cint
# proc xcb_dri2_get_buffers_with_format_buffers_iterator*(
# R: ptr xcb_dri2_get_buffers_with_format_reply_t): xcb_dri2_dri2_buffer_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_get_buffers_with_format_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_get_buffers_with_format_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_buffers_with_format_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_buffers_with_format_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_swap_buffers*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# target_msc_hi: uint32; target_msc_lo: uint32;
# divisor_hi: uint32; divisor_lo: uint32;
# remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_swap_buffers_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_swap_buffers_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t;
# target_msc_hi: uint32;
# target_msc_lo: uint32;
# divisor_hi: uint32; divisor_lo: uint32;
# remainder_hi: uint32;
# remainder_lo: uint32): xcb_dri2_swap_buffers_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_swap_buffers_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_swap_buffers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_swap_buffers_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_swap_buffers_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_get_msc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_dri2_get_msc_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_get_msc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_dri2_get_msc_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_get_msc_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_get_msc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_msc_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_msc_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_wait_msc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# target_msc_hi: uint32; target_msc_lo: uint32;
# divisor_hi: uint32; divisor_lo: uint32;
# remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_wait_msc_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_wait_msc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# target_msc_hi: uint32; target_msc_lo: uint32;
# divisor_hi: uint32; divisor_lo: uint32;
# remainder_hi: uint32; remainder_lo: uint32): xcb_dri2_wait_msc_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_wait_msc_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_wait_msc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_wait_msc_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_wait_msc_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_wait_sbc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# target_sbc_hi: uint32; target_sbc_lo: uint32): xcb_dri2_wait_sbc_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_wait_sbc_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# target_sbc_hi: uint32; target_sbc_lo: uint32): xcb_dri2_wait_sbc_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_wait_sbc_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_wait_sbc_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_wait_sbc_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_wait_sbc_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri2_swap_interval_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; interval: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_swap_interval*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# interval: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri2_get_param*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# param: uint32): xcb_dri2_get_param_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri2_get_param_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; param: uint32): xcb_dri2_get_param_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri2_get_param_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri2_get_param_reply*(c: ptr xcb_connection_t; cookie: xcb_dri2_get_param_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri2_get_param_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from dri3.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_DRI3_API XCB DRI3 API
# ## @brief DRI3 XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_DRI3_MAJOR_VERSION* = 1
# XCB_DRI3_MINOR_VERSION* = 2
# var xcb_dri3_id*: xcb_extension_t
# ## *
# ## @brief xcb_dri3_query_version_cookie_t
# ##
# type
# xcb_dri3_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_query_version.
# const
# XCB_DRI3_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_dri3_query_version_request_t
# ##
# type
# xcb_dri3_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_dri3_query_version_reply_t
# ##
# type
# xcb_dri3_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_dri3_open_cookie_t
# ##
# type
# xcb_dri3_open_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_open.
# const
# XCB_DRI3_OPEN* = 1
# ## *
# ## @brief xcb_dri3_open_request_t
# ##
# type
# xcb_dri3_open_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# provider*: uint32
# ## *
# ## @brief xcb_dri3_open_reply_t
# ##
# type
# xcb_dri3_open_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## * Opcode for xcb_dri3_pixmap_from_buffer.
# const
# XCB_DRI3_PIXMAP_FROM_BUFFER* = 2
# ## *
# ## @brief xcb_dri3_pixmap_from_buffer_request_t
# ##
# type
# xcb_dri3_pixmap_from_buffer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pixmap*: xcb_pixmap_t
# drawable*: xcb_drawable_t
# size*: uint32
# width*: uint16
# height*: uint16
# stride*: uint16
# depth*: uint8
# bpp*: uint8
# ## *
# ## @brief xcb_dri3_buffer_from_pixmap_cookie_t
# ##
# type
# xcb_dri3_buffer_from_pixmap_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_buffer_from_pixmap.
# const
# XCB_DRI3_BUFFER_FROM_PIXMAP* = 3
# ## *
# ## @brief xcb_dri3_buffer_from_pixmap_request_t
# ##
# type
# xcb_dri3_buffer_from_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pixmap*: xcb_pixmap_t
# ## *
# ## @brief xcb_dri3_buffer_from_pixmap_reply_t
# ##
# type
# xcb_dri3_buffer_from_pixmap_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# size*: uint32
# width*: uint16
# height*: uint16
# stride*: uint16
# depth*: uint8
# bpp*: uint8
# pad0*: array[12, uint8]
# ## * Opcode for xcb_dri3_fence_from_fd.
# const
# XCB_DRI3_FENCE_FROM_FD* = 4
# ## *
# ## @brief xcb_dri3_fence_from_fd_request_t
# ##
# type
# xcb_dri3_fence_from_fd_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# fence*: uint32
# initially_triggered*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_dri3_fd_from_fence_cookie_t
# ##
# type
# xcb_dri3_fd_from_fence_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_fd_from_fence.
# const
# XCB_DRI3_FD_FROM_FENCE* = 5
# ## *
# ## @brief xcb_dri3_fd_from_fence_request_t
# ##
# type
# xcb_dri3_fd_from_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# fence*: uint32
# ## *
# ## @brief xcb_dri3_fd_from_fence_reply_t
# ##
# type
# xcb_dri3_fd_from_fence_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## *
# ## @brief xcb_dri3_get_supported_modifiers_cookie_t
# ##
# type
# xcb_dri3_get_supported_modifiers_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_get_supported_modifiers.
# const
# XCB_DRI3_GET_SUPPORTED_MODIFIERS* = 6
# ## *
# ## @brief xcb_dri3_get_supported_modifiers_request_t
# ##
# type
# xcb_dri3_get_supported_modifiers_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: uint32
# depth*: uint8
# bpp*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_dri3_get_supported_modifiers_reply_t
# ##
# type
# xcb_dri3_get_supported_modifiers_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_window_modifiers*: uint32
# num_screen_modifiers*: uint32
# pad1*: array[16, uint8]
# ## * Opcode for xcb_dri3_pixmap_from_buffers.
# const
# XCB_DRI3_PIXMAP_FROM_BUFFERS* = 7
# ## *
# ## @brief xcb_dri3_pixmap_from_buffers_request_t
# ##
# type
# xcb_dri3_pixmap_from_buffers_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pixmap*: xcb_pixmap_t
# window*: xcb_window_t
# num_buffers*: uint8
# pad0*: array[3, uint8]
# width*: uint16
# height*: uint16
# stride0*: uint32
# offset0*: uint32
# stride1*: uint32
# offset1*: uint32
# stride2*: uint32
# offset2*: uint32
# stride3*: uint32
# offset3*: uint32
# depth*: uint8
# bpp*: uint8
# pad1*: array[2, uint8]
# modifier*: uint64
# ## *
# ## @brief xcb_dri3_buffers_from_pixmap_cookie_t
# ##
# type
# xcb_dri3_buffers_from_pixmap_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_dri3_buffers_from_pixmap.
# const
# XCB_DRI3_BUFFERS_FROM_PIXMAP* = 8
# ## *
# ## @brief xcb_dri3_buffers_from_pixmap_request_t
# ##
# type
# xcb_dri3_buffers_from_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pixmap*: xcb_pixmap_t
# ## *
# ## @brief xcb_dri3_buffers_from_pixmap_reply_t
# ##
# type
# xcb_dri3_buffers_from_pixmap_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint16
# height*: uint16
# pad0*: array[4, uint8]
# modifier*: uint64
# depth*: uint8
# bpp*: uint8
# pad1*: array[6, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_query_version*(c: ptr xcb_connection_t; major_version: uint32;
# minor_version: uint32): xcb_dri3_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_query_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint32;
# minor_version: uint32): xcb_dri3_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_open*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# provider: uint32): xcb_dri3_open_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_open_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# provider: uint32): xcb_dri3_open_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_open_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_open_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_open_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_open_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_open_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_dri3_open_reply_t): ptr cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri3_pixmap_from_buffer_checked*(c: ptr xcb_connection_t;
# pixmap: xcb_pixmap_t; drawable: xcb_drawable_t; size: uint32; width: uint16;
# height: uint16; stride: uint16; depth: uint8; bpp: uint8; pixmap_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_pixmap_from_buffer*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t;
# drawable: xcb_drawable_t; size: uint32;
# width: uint16; height: uint16;
# stride: uint16; depth: uint8; bpp: uint8;
# pixmap_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_buffer_from_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_dri3_buffer_from_pixmap_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_buffer_from_pixmap_unchecked*(c: ptr xcb_connection_t;
# pixmap: xcb_pixmap_t): xcb_dri3_buffer_from_pixmap_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_buffer_from_pixmap_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_buffer_from_pixmap_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_buffer_from_pixmap_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_buffer_from_pixmap_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_buffer_from_pixmap_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_dri3_buffer_from_pixmap_reply_t): ptr cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri3_fence_from_fd_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; fence: uint32;
# initially_triggered: uint8;
# fence_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_fence_from_fd*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# fence: uint32; initially_triggered: uint8;
# fence_fd: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_fd_from_fence*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# fence: uint32): xcb_dri3_fd_from_fence_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_fd_from_fence_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; fence: uint32): xcb_dri3_fd_from_fence_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_fd_from_fence_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_fd_from_fence_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_fd_from_fence_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_fd_from_fence_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_fd_from_fence_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_dri3_fd_from_fence_reply_t): ptr cint
# proc xcb_dri3_get_supported_modifiers_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_get_supported_modifiers*(c: ptr xcb_connection_t; window: uint32;
# depth: uint8; bpp: uint8): xcb_dri3_get_supported_modifiers_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_get_supported_modifiers_unchecked*(c: ptr xcb_connection_t;
# window: uint32; depth: uint8; bpp: uint8): xcb_dri3_get_supported_modifiers_cookie_t
# proc xcb_dri3_get_supported_modifiers_window_modifiers*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): ptr uint64
# proc xcb_dri3_get_supported_modifiers_window_modifiers_length*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): cint
# proc xcb_dri3_get_supported_modifiers_window_modifiers_end*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_get_supported_modifiers_screen_modifiers*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): ptr uint64
# proc xcb_dri3_get_supported_modifiers_screen_modifiers_length*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): cint
# proc xcb_dri3_get_supported_modifiers_screen_modifiers_end*(
# R: ptr xcb_dri3_get_supported_modifiers_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_get_supported_modifiers_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_get_supported_modifiers_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_get_supported_modifiers_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_get_supported_modifiers_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_dri3_pixmap_from_buffers_checked*(c: ptr xcb_connection_t;
# pixmap: xcb_pixmap_t; window: xcb_window_t; num_buffers: uint8; width: uint16;
# height: uint16; stride0: uint32; offset0: uint32; stride1: uint32;
# offset1: uint32; stride2: uint32; offset2: uint32; stride3: uint32;
# offset3: uint32; depth: uint8; bpp: uint8; modifier: uint64;
# buffers: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_pixmap_from_buffers*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t;
# window: xcb_window_t; num_buffers: uint8;
# width: uint16; height: uint16;
# stride0: uint32; offset0: uint32;
# stride1: uint32; offset1: uint32;
# stride2: uint32; offset2: uint32;
# stride3: uint32; offset3: uint32;
# depth: uint8; bpp: uint8; modifier: uint64;
# buffers: ptr int32): xcb_void_cookie_t
# proc xcb_dri3_buffers_from_pixmap_sizeof*(_buffer: pointer; buffers: int32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_dri3_buffers_from_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_dri3_buffers_from_pixmap_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_dri3_buffers_from_pixmap_unchecked*(c: ptr xcb_connection_t;
# pixmap: xcb_pixmap_t): xcb_dri3_buffers_from_pixmap_cookie_t
# proc xcb_dri3_buffers_from_pixmap_strides*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr uint32
# proc xcb_dri3_buffers_from_pixmap_strides_length*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_strides_end*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_buffers_from_pixmap_offsets*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr uint32
# proc xcb_dri3_buffers_from_pixmap_offsets_length*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_offsets_end*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# proc xcb_dri3_buffers_from_pixmap_buffers*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr int32
# proc xcb_dri3_buffers_from_pixmap_buffers_length*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): cint
# proc xcb_dri3_buffers_from_pixmap_buffers_end*(
# R: ptr xcb_dri3_buffers_from_pixmap_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_dri3_buffers_from_pixmap_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_buffers_from_pixmap_reply*(c: ptr xcb_connection_t; cookie: xcb_dri3_buffers_from_pixmap_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_dri3_buffers_from_pixmap_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_dri3_buffers_from_pixmap_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_dri3_buffers_from_pixmap_reply_t): ptr cint
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from ge.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_GenericEvent_API XCB GenericEvent API
# ## @brief GenericEvent XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb
# const
# XCB_GENERICEVENT_MAJOR_VERSION* = 1
# XCB_GENERICEVENT_MINOR_VERSION* = 0
# var xcb_genericevent_id*: xcb_extension_t
# ## *
# ## @brief xcb_genericevent_query_version_cookie_t
# ##
# type
# xcb_genericevent_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_genericevent_query_version.
# const
# XCB_GENERICEVENT_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_genericevent_query_version_request_t
# ##
# type
# xcb_genericevent_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint16
# client_minor_version*: uint16
# ## *
# ## @brief xcb_genericevent_query_version_reply_t
# ##
# type
# xcb_genericevent_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# pad1*: array[20, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_genericevent_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_genericevent_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_genericevent_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint16; client_minor_version: uint16): xcb_genericevent_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_genericevent_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_genericevent_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_genericevent_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_genericevent_query_version_reply_t
# import
# xcb, xproto
# import
# xcb, xproto, randr, xfixes, sync
# const
# XCB_PRESENT_MAJOR_VERSION* = 1
# XCB_PRESENT_MINOR_VERSION* = 2
# var xcb_present_id*: xcb_extension_t
# type
# xcb_present_event_enum_t* = enum
# XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0, XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1,
# XCB_PRESENT_EVENT_IDLE_NOTIFY = 2, XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3
# xcb_present_event_mask_t* = enum
# XCB_PRESENT_EVENT_MASK_NO_EVENT = 0,
# XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1,
# XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2,
# XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4,
# XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8
# xcb_present_option_t* = enum
# XCB_PRESENT_OPTION_NONE = 0, XCB_PRESENT_OPTION_ASYNC = 1,
# XCB_PRESENT_OPTION_COPY = 2, XCB_PRESENT_OPTION_UST = 4,
# XCB_PRESENT_OPTION_SUBOPTIMAL = 8
# xcb_present_capability_t* = enum
# XCB_PRESENT_CAPABILITY_NONE = 0, XCB_PRESENT_CAPABILITY_ASYNC = 1,
# XCB_PRESENT_CAPABILITY_FENCE = 2, XCB_PRESENT_CAPABILITY_UST = 4
# xcb_present_complete_kind_t* = enum
# XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0, XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1
# xcb_present_complete_mode_t* = enum
# XCB_PRESENT_COMPLETE_MODE_COPY = 0, XCB_PRESENT_COMPLETE_MODE_FLIP = 1,
# XCB_PRESENT_COMPLETE_MODE_SKIP = 2,
# XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3
# ## *
# ## @brief xcb_present_notify_t
# ##
# type
# xcb_present_notify_t* {.bycopy.} = object
# window*: xcb_window_t
# serial*: uint32
# ## *
# ## @brief xcb_present_notify_iterator_t
# ##
# type
# xcb_present_notify_iterator_t* {.bycopy.} = object
# data*: ptr xcb_present_notify_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_present_query_version_cookie_t
# ##
# type
# xcb_present_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_present_query_version.
# const
# XCB_PRESENT_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_present_query_version_request_t
# ##
# type
# xcb_present_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_present_query_version_reply_t
# ##
# type
# xcb_present_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# ## * Opcode for xcb_present_pixmap.
# const
# XCB_PRESENT_PIXMAP* = 1
# ## *
# ## @brief xcb_present_pixmap_request_t
# ##
# type
# xcb_present_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# pixmap*: xcb_pixmap_t
# serial*: uint32
# valid*: xcb_xfixes_region_t
# update*: xcb_xfixes_region_t
# x_off*: int16
# y_off*: int16
# target_crtc*: xcb_randr_crtc_t
# wait_fence*: xcb_sync_fence_t
# idle_fence*: xcb_sync_fence_t
# options*: uint32
# pad0*: array[4, uint8]
# target_msc*: uint64
# divisor*: uint64
# remainder*: uint64
# ## * Opcode for xcb_present_notify_msc.
# const
# XCB_PRESENT_NOTIFY_MSC* = 2
# ## *
# ## @brief xcb_present_notify_msc_request_t
# ##
# type
# xcb_present_notify_msc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# serial*: uint32
# pad0*: array[4, uint8]
# target_msc*: uint64
# divisor*: uint64
# remainder*: uint64
# xcb_present_event_t* = uint32
# ## *
# ## @brief xcb_present_event_iterator_t
# ##
# type
# xcb_present_event_iterator_t* {.bycopy.} = object
# data*: ptr xcb_present_event_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_present_select_input.
# const
# XCB_PRESENT_SELECT_INPUT* = 3
# ## *
# ## @brief xcb_present_select_input_request_t
# ##
# type
# xcb_present_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# eid*: xcb_present_event_t
# window*: xcb_window_t
# event_mask*: uint32
# ## *
# ## @brief xcb_present_query_capabilities_cookie_t
# ##
# type
# xcb_present_query_capabilities_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_present_query_capabilities.
# const
# XCB_PRESENT_QUERY_CAPABILITIES* = 4
# ## *
# ## @brief xcb_present_query_capabilities_request_t
# ##
# type
# xcb_present_query_capabilities_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# target*: uint32
# ## *
# ## @brief xcb_present_query_capabilities_reply_t
# ##
# type
# xcb_present_query_capabilities_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# capabilities*: uint32
# ## * Opcode for xcb_present_generic.
# const
# XCB_PRESENT_GENERIC* = 0
# ## *
# ## @brief xcb_present_generic_event_t
# ##
# type
# xcb_present_generic_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# evtype*: uint16
# pad0*: array[2, uint8]
# event*: xcb_present_event_t
# ## * Opcode for xcb_present_configure_notify.
# const
# XCB_PRESENT_CONFIGURE_NOTIFY* = 0
# ## *
# ## @brief xcb_present_configure_notify_event_t
# ##
# type
# xcb_present_configure_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# pad0*: array[2, uint8]
# event*: xcb_present_event_t
# window*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# off_x*: int16
# off_y*: int16
# full_sequence*: uint32
# pixmap_width*: uint16
# pixmap_height*: uint16
# pixmap_flags*: uint32
# ## * Opcode for xcb_present_complete_notify.
# const
# XCB_PRESENT_COMPLETE_NOTIFY* = 1
# ## *
# ## @brief xcb_present_complete_notify_event_t
# ##
# type
# xcb_present_complete_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# kind*: uint8
# mode*: uint8
# event*: xcb_present_event_t
# window*: xcb_window_t
# serial*: uint32
# ust*: uint64
# full_sequence*: uint32
# msc*: uint64
# ## * Opcode for xcb_present_idle_notify.
# const
# XCB_PRESENT_IDLE_NOTIFY* = 2
# ## *
# ## @brief xcb_present_idle_notify_event_t
# ##
# type
# xcb_present_idle_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# pad0*: array[2, uint8]
# event*: xcb_present_event_t
# window*: xcb_window_t
# serial*: uint32
# pixmap*: xcb_pixmap_t
# idle_fence*: xcb_sync_fence_t
# full_sequence*: uint32
# ## * Opcode for xcb_present_redirect_notify.
# const
# XCB_PRESENT_REDIRECT_NOTIFY* = 3
# ## *
# ## @brief xcb_present_redirect_notify_event_t
# ##
# type
# xcb_present_redirect_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# update_window*: uint8
# pad0*: uint8
# event*: xcb_present_event_t
# event_window*: xcb_window_t
# window*: xcb_window_t
# pixmap*: xcb_pixmap_t
# serial*: uint32
# full_sequence*: uint32
# valid_region*: xcb_xfixes_region_t
# update_region*: xcb_xfixes_region_t
# valid_rect*: xcb_rectangle_t
# update_rect*: xcb_rectangle_t
# x_off*: int16
# y_off*: int16
# target_crtc*: xcb_randr_crtc_t
# wait_fence*: xcb_sync_fence_t
# idle_fence*: xcb_sync_fence_t
# options*: uint32
# pad1*: array[4, uint8]
# target_msc*: uint64
# divisor*: uint64
# remainder*: uint64
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_present_notify_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_present_notify_t)
# ##
# proc xcb_present_notify_next*(i: ptr xcb_present_notify_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_present_notify_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_present_notify_end*(i: xcb_present_notify_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_present_query_version*(c: ptr xcb_connection_t; major_version: uint32;
# minor_version: uint32): xcb_present_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_present_query_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint32; minor_version: uint32): xcb_present_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_present_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_present_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_present_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_present_query_version_reply_t
# proc xcb_present_pixmap_sizeof*(_buffer: pointer; notifies_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_present_pixmap_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# pixmap: xcb_pixmap_t; serial: uint32;
# valid: xcb_xfixes_region_t;
# update: xcb_xfixes_region_t; x_off: int16;
# y_off: int16; target_crtc: xcb_randr_crtc_t;
# wait_fence: xcb_sync_fence_t;
# idle_fence: xcb_sync_fence_t; options: uint32;
# target_msc: uint64; divisor: uint64;
# remainder: uint64; notifies_len: uint32;
# notifies: ptr xcb_present_notify_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_present_pixmap*(c: ptr xcb_connection_t; window: xcb_window_t;
# pixmap: xcb_pixmap_t; serial: uint32;
# valid: xcb_xfixes_region_t; update: xcb_xfixes_region_t;
# x_off: int16; y_off: int16;
# target_crtc: xcb_randr_crtc_t;
# wait_fence: xcb_sync_fence_t;
# idle_fence: xcb_sync_fence_t; options: uint32;
# target_msc: uint64; divisor: uint64;
# remainder: uint64; notifies_len: uint32;
# notifies: ptr xcb_present_notify_t): xcb_void_cookie_t
# proc xcb_present_pixmap_notifies*(R: ptr xcb_present_pixmap_request_t): ptr xcb_present_notify_t
# proc xcb_present_pixmap_notifies_length*(R: ptr xcb_present_pixmap_request_t): cint
# proc xcb_present_pixmap_notifies_iterator*(R: ptr xcb_present_pixmap_request_t): xcb_present_notify_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_present_notify_msc_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# serial: uint32; target_msc: uint64;
# divisor: uint64; remainder: uint64): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_present_notify_msc*(c: ptr xcb_connection_t; window: xcb_window_t;
# serial: uint32; target_msc: uint64;
# divisor: uint64; remainder: uint64): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_present_event_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_present_event_t)
# ##
# proc xcb_present_event_next*(i: ptr xcb_present_event_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_present_event_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_present_event_end*(i: xcb_present_event_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_present_select_input_checked*(c: ptr xcb_connection_t;
# eid: xcb_present_event_t;
# window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_present_select_input*(c: ptr xcb_connection_t; eid: xcb_present_event_t;
# window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_present_query_capabilities*(c: ptr xcb_connection_t; target: uint32): xcb_present_query_capabilities_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_present_query_capabilities_unchecked*(c: ptr xcb_connection_t;
# target: uint32): xcb_present_query_capabilities_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_present_query_capabilities_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_present_query_capabilities_reply*(c: ptr xcb_connection_t; cookie: xcb_present_query_capabilities_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_present_query_capabilities_reply_t
# proc xcb_present_redirect_notify_sizeof*(_buffer: pointer; notifies_len: uint32): cint
# proc xcb_present_redirect_notify_notifies*(
# R: ptr xcb_present_redirect_notify_event_t): ptr xcb_present_notify_t
# proc xcb_present_redirect_notify_notifies_length*(
# R: ptr xcb_present_redirect_notify_event_t): cint
# proc xcb_present_redirect_notify_notifies_iterator*(
# R: ptr xcb_present_redirect_notify_event_t): xcb_present_notify_iterator_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from randr.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_RandR_API XCB RandR API
# ## @brief RandR XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto, render
# const
# XCB_RANDR_MAJOR_VERSION* = 1
# XCB_RANDR_MINOR_VERSION* = 6
# var xcb_randr_id*: xcb_extension_t
# type
# xcb_randr_mode_t* = uint32
# ## *
# ## @brief xcb_randr_mode_iterator_t
# ##
# type
# xcb_randr_mode_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_mode_t
# rem*: cint
# index*: cint
# xcb_randr_crtc_t* = uint32
# ## *
# ## @brief xcb_randr_crtc_iterator_t
# ##
# type
# xcb_randr_crtc_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_crtc_t
# rem*: cint
# index*: cint
# xcb_randr_output_t* = uint32
# ## *
# ## @brief xcb_randr_output_iterator_t
# ##
# type
# xcb_randr_output_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_output_t
# rem*: cint
# index*: cint
# xcb_randr_provider_t* = uint32
# ## *
# ## @brief xcb_randr_provider_iterator_t
# ##
# type
# xcb_randr_provider_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_provider_t
# rem*: cint
# index*: cint
# xcb_randr_lease_t* = uint32
# ## *
# ## @brief xcb_randr_lease_iterator_t
# ##
# type
# xcb_randr_lease_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_lease_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_randr_bad_output.
# const
# XCB_RANDR_BAD_OUTPUT* = 0
# ## *
# ## @brief xcb_randr_bad_output_error_t
# ##
# type
# xcb_randr_bad_output_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_randr_bad_crtc.
# const
# XCB_RANDR_BAD_CRTC* = 1
# ## *
# ## @brief xcb_randr_bad_crtc_error_t
# ##
# type
# xcb_randr_bad_crtc_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_randr_bad_mode.
# const
# XCB_RANDR_BAD_MODE* = 2
# ## *
# ## @brief xcb_randr_bad_mode_error_t
# ##
# type
# xcb_randr_bad_mode_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_randr_bad_provider.
# const
# XCB_RANDR_BAD_PROVIDER* = 3
# ## *
# ## @brief xcb_randr_bad_provider_error_t
# ##
# type
# xcb_randr_bad_provider_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# xcb_randr_rotation_t* = enum
# XCB_RANDR_ROTATION_ROTATE_0 = 1, XCB_RANDR_ROTATION_ROTATE_90 = 2,
# XCB_RANDR_ROTATION_ROTATE_180 = 4, XCB_RANDR_ROTATION_ROTATE_270 = 8,
# XCB_RANDR_ROTATION_REFLECT_X = 16, XCB_RANDR_ROTATION_REFLECT_Y = 32
# ## *
# ## @brief xcb_randr_screen_size_t
# ##
# type
# xcb_randr_screen_size_t* {.bycopy.} = object
# width*: uint16
# height*: uint16
# mwidth*: uint16
# mheight*: uint16
# ## *
# ## @brief xcb_randr_screen_size_iterator_t
# ##
# type
# xcb_randr_screen_size_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_screen_size_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_refresh_rates_t
# ##
# type
# xcb_randr_refresh_rates_t* {.bycopy.} = object
# nRates*: uint16
# ## *
# ## @brief xcb_randr_refresh_rates_iterator_t
# ##
# type
# xcb_randr_refresh_rates_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_refresh_rates_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_query_version_cookie_t
# ##
# type
# xcb_randr_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_query_version.
# const
# XCB_RANDR_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_randr_query_version_request_t
# ##
# type
# xcb_randr_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint32
# minor_version*: uint32
# ## *
# ## @brief xcb_randr_query_version_reply_t
# ##
# type
# xcb_randr_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# pad1*: array[16, uint8]
# xcb_randr_set_config_t* = enum
# XCB_RANDR_SET_CONFIG_SUCCESS = 0, XCB_RANDR_SET_CONFIG_INVALID_CONFIG_TIME = 1,
# XCB_RANDR_SET_CONFIG_INVALID_TIME = 2, XCB_RANDR_SET_CONFIG_FAILED = 3
# ## *
# ## @brief xcb_randr_set_screen_config_cookie_t
# ##
# type
# xcb_randr_set_screen_config_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_set_screen_config.
# const
# XCB_RANDR_SET_SCREEN_CONFIG* = 2
# ## *
# ## @brief xcb_randr_set_screen_config_request_t
# ##
# type
# xcb_randr_set_screen_config_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# sizeID*: uint16
# rotation*: uint16
# rate*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_set_screen_config_reply_t
# ##
# type
# xcb_randr_set_screen_config_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# new_timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# root*: xcb_window_t
# subpixel_order*: uint16
# pad0*: array[10, uint8]
# xcb_randr_notify_mask_t* = enum
# XCB_RANDR_NOTIFY_MASK_SCREEN_CHANGE = 1, XCB_RANDR_NOTIFY_MASK_CRTC_CHANGE = 2,
# XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE = 4,
# XCB_RANDR_NOTIFY_MASK_OUTPUT_PROPERTY = 8,
# XCB_RANDR_NOTIFY_MASK_PROVIDER_CHANGE = 16,
# XCB_RANDR_NOTIFY_MASK_PROVIDER_PROPERTY = 32,
# XCB_RANDR_NOTIFY_MASK_RESOURCE_CHANGE = 64, XCB_RANDR_NOTIFY_MASK_LEASE = 128
# ## * Opcode for xcb_randr_select_input.
# const
# XCB_RANDR_SELECT_INPUT* = 4
# ## *
# ## @brief xcb_randr_select_input_request_t
# ##
# type
# xcb_randr_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# enable*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_get_screen_info_cookie_t
# ##
# type
# xcb_randr_get_screen_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_screen_info.
# const
# XCB_RANDR_GET_SCREEN_INFO* = 5
# ## *
# ## @brief xcb_randr_get_screen_info_request_t
# ##
# type
# xcb_randr_get_screen_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_screen_size_range_cookie_t
# ##
# type
# xcb_randr_get_screen_size_range_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_screen_size_range.
# const
# XCB_RANDR_GET_SCREEN_SIZE_RANGE* = 6
# ## *
# ## @brief xcb_randr_get_screen_size_range_request_t
# ##
# type
# xcb_randr_get_screen_size_range_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_screen_size_range_reply_t
# ##
# type
# xcb_randr_get_screen_size_range_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# min_width*: uint16
# min_height*: uint16
# max_width*: uint16
# max_height*: uint16
# pad1*: array[16, uint8]
# ## * Opcode for xcb_randr_set_screen_size.
# const
# XCB_RANDR_SET_SCREEN_SIZE* = 7
# ## *
# ## @brief xcb_randr_set_screen_size_request_t
# ##
# type
# xcb_randr_set_screen_size_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# width*: uint16
# height*: uint16
# mm_width*: uint32
# mm_height*: uint32
# xcb_randr_mode_flag_t* = enum
# XCB_RANDR_MODE_FLAG_HSYNC_POSITIVE = 1, XCB_RANDR_MODE_FLAG_HSYNC_NEGATIVE = 2,
# XCB_RANDR_MODE_FLAG_VSYNC_POSITIVE = 4, XCB_RANDR_MODE_FLAG_VSYNC_NEGATIVE = 8,
# XCB_RANDR_MODE_FLAG_INTERLACE = 16, XCB_RANDR_MODE_FLAG_DOUBLE_SCAN = 32,
# XCB_RANDR_MODE_FLAG_CSYNC = 64, XCB_RANDR_MODE_FLAG_CSYNC_POSITIVE = 128,
# XCB_RANDR_MODE_FLAG_CSYNC_NEGATIVE = 256,
# XCB_RANDR_MODE_FLAG_HSKEW_PRESENT = 512, XCB_RANDR_MODE_FLAG_BCAST = 1024,
# XCB_RANDR_MODE_FLAG_PIXEL_MULTIPLEX = 2048,
# XCB_RANDR_MODE_FLAG_DOUBLE_CLOCK = 4096, XCB_RANDR_MODE_FLAG_HALVE_CLOCK = 8192
# type
# xcb_randr_mode_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_mode_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_get_screen_resources_cookie_t
# ##
# type
# xcb_randr_get_screen_resources_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_screen_resources.
# const
# XCB_RANDR_GET_SCREEN_RESOURCES* = 8
# ## *
# ## @brief xcb_randr_get_screen_resources_request_t
# ##
# type
# xcb_randr_get_screen_resources_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_screen_resources_reply_t
# ##
# type
# xcb_randr_connection_t* = enum
# XCB_RANDR_CONNECTION_CONNECTED = 0, XCB_RANDR_CONNECTION_DISCONNECTED = 1,
# XCB_RANDR_CONNECTION_UNKNOWN = 2
# type
# xcb_randr_get_output_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# const
# XCB_RANDR_GET_OUTPUT_INFO* = 9
# type
# xcb_randr_get_output_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# config_timestamp*: xcb_timestamp_t
# ## *
# ## @brief xcb_randr_get_output_info_reply_t
# ##
# ## *
# ## @brief xcb_randr_list_output_properties_cookie_t
# ##
# type
# xcb_randr_list_output_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_list_output_properties.
# const
# XCB_RANDR_LIST_OUTPUT_PROPERTIES* = 10
# ## *
# ## @brief xcb_randr_list_output_properties_request_t
# ##
# type
# xcb_randr_list_output_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# ## *
# ## @brief xcb_randr_list_output_properties_reply_t
# ##
# type
# xcb_randr_list_output_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_atoms*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_randr_query_output_property_cookie_t
# ##
# type
# xcb_randr_query_output_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_query_output_property.
# const
# XCB_RANDR_QUERY_OUTPUT_PROPERTY* = 11
# ## *
# ## @brief xcb_randr_query_output_property_request_t
# ##
# type
# xcb_randr_query_output_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# property*: xcb_atom_t
# ## *
# ## @brief xcb_randr_query_output_property_reply_t
# ##
# type
# xcb_randr_query_output_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pending*: uint8
# range*: uint8
# immutable*: uint8
# pad1*: array[21, uint8]
# ## * Opcode for xcb_randr_configure_output_property.
# const
# XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY* = 12
# ## *
# ## @brief xcb_randr_configure_output_property_request_t
# ##
# type
# xcb_randr_configure_output_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# property*: xcb_atom_t
# pending*: uint8
# range*: uint8
# pad0*: array[2, uint8]
# ## * Opcode for xcb_randr_change_output_property.
# const
# XCB_RANDR_CHANGE_OUTPUT_PROPERTY* = 13
# ## *
# ## @brief xcb_randr_change_output_property_request_t
# ##
# type
# xcb_randr_change_output_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# format*: uint8
# mode*: uint8
# pad0*: array[2, uint8]
# num_units*: uint32
# ## * Opcode for xcb_randr_delete_output_property.
# const
# XCB_RANDR_DELETE_OUTPUT_PROPERTY* = 14
# ## *
# ## @brief xcb_randr_delete_output_property_request_t
# ##
# type
# xcb_randr_delete_output_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# property*: xcb_atom_t
# type
# xcb_randr_get_output_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_output_property.
# const
# XCB_RANDR_GET_OUTPUT_PROPERTY* = 15
# ## *
# ## @brief xcb_randr_get_output_property_request_t
# ##
# type
# xcb_randr_get_output_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# long_offset*: uint32
# long_length*: uint32
# _delete*: uint8
# pending*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_get_output_property_reply_t
# ##
# type
# xcb_randr_get_output_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# format*: uint8
# sequence*: uint16
# length*: uint32
# `type`*: xcb_atom_t
# bytes_after*: uint32
# num_items*: uint32
# pad0*: array[12, uint8]
# ## *
# ## @brief xcb_randr_create_mode_cookie_t
# ##
# type
# xcb_randr_create_mode_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_create_mode.
# const
# XCB_RANDR_CREATE_MODE* = 16
# ## *
# ## @brief xcb_randr_create_mode_request_t
# ##
# type
# xcb_randr_create_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# mode_info*: xcb_randr_mode_info_t
# ## *
# ## @brief xcb_randr_create_mode_reply_t
# ##
# type
# xcb_randr_create_mode_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# mode*: xcb_randr_mode_t
# pad1*: array[20, uint8]
# ## * Opcode for xcb_randr_destroy_mode.
# const
# XCB_RANDR_DESTROY_MODE* = 17
# ## *
# ## @brief xcb_randr_destroy_mode_request_t
# ##
# type
# xcb_randr_destroy_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# mode*: xcb_randr_mode_t
# ## * Opcode for xcb_randr_add_output_mode.
# const
# XCB_RANDR_ADD_OUTPUT_MODE* = 18
# ## *
# ## @brief xcb_randr_add_output_mode_request_t
# ##
# type
# xcb_randr_add_output_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# mode*: xcb_randr_mode_t
# ## * Opcode for xcb_randr_delete_output_mode.
# const
# XCB_RANDR_DELETE_OUTPUT_MODE* = 19
# ## *
# ## @brief xcb_randr_delete_output_mode_request_t
# ##
# type
# xcb_randr_delete_output_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output*: xcb_randr_output_t
# mode*: xcb_randr_mode_t
# ## *
# ## @brief xcb_randr_get_crtc_info_cookie_t
# ##
# type
# xcb_randr_get_crtc_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_crtc_info.
# const
# XCB_RANDR_GET_CRTC_INFO* = 20
# ## *
# ## @brief xcb_randr_get_crtc_info_request_t
# ##
# type
# xcb_randr_get_crtc_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# config_timestamp*: xcb_timestamp_t
# type
# xcb_randr_set_crtc_config_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_set_crtc_config.
# const
# XCB_RANDR_SET_CRTC_CONFIG* = 21
# ## *
# ## @brief xcb_randr_set_crtc_config_request_t
# ##
# type
# xcb_randr_set_crtc_config_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# x*: int16
# y*: int16
# mode*: xcb_randr_mode_t
# rotation*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_set_crtc_config_reply_t
# ##
# type
# xcb_randr_set_crtc_config_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# pad0*: array[20, uint8]
# ## *
# ## @brief xcb_randr_get_crtc_gamma_size_cookie_t
# ##
# type
# xcb_randr_get_crtc_gamma_size_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_crtc_gamma_size.
# const
# XCB_RANDR_GET_CRTC_GAMMA_SIZE* = 22
# ## *
# ## @brief xcb_randr_get_crtc_gamma_size_request_t
# ##
# type
# xcb_randr_get_crtc_gamma_size_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# ## *
# ## @brief xcb_randr_get_crtc_gamma_size_reply_t
# ##
# type
# xcb_randr_get_crtc_gamma_size_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# size*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_randr_get_crtc_gamma_cookie_t
# ##
# type
# xcb_randr_get_crtc_gamma_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_crtc_gamma.
# const
# XCB_RANDR_GET_CRTC_GAMMA* = 23
# ## *
# ## @brief xcb_randr_get_crtc_gamma_request_t
# ##
# type
# xcb_randr_get_crtc_gamma_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# ## *
# ## @brief xcb_randr_get_crtc_gamma_reply_t
# ##
# type
# xcb_randr_get_crtc_gamma_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# size*: uint16
# pad1*: array[22, uint8]
# ## * Opcode for xcb_randr_set_crtc_gamma.
# const
# XCB_RANDR_SET_CRTC_GAMMA* = 24
# ## *
# ## @brief xcb_randr_set_crtc_gamma_request_t
# ##
# type
# xcb_randr_set_crtc_gamma_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# size*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_get_screen_resources_current_cookie_t
# ##
# type
# xcb_randr_get_screen_resources_current_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_screen_resources_current.
# const
# XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT* = 25
# ## *
# ## @brief xcb_randr_get_screen_resources_current_request_t
# ##
# type
# xcb_randr_get_screen_resources_current_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_screen_resources_current_reply_t
# ##
# type
# xcb_randr_get_screen_resources_current_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# num_crtcs*: uint16
# num_outputs*: uint16
# num_modes*: uint16
# names_len*: uint16
# pad1*: array[8, uint8]
# xcb_randr_transform_t* = enum
# XCB_RANDR_TRANSFORM_UNIT = 1, XCB_RANDR_TRANSFORM_SCALE_UP = 2,
# XCB_RANDR_TRANSFORM_SCALE_DOWN = 4, XCB_RANDR_TRANSFORM_PROJECTIVE = 8
# ## * Opcode for xcb_randr_set_crtc_transform.
# const
# XCB_RANDR_SET_CRTC_TRANSFORM* = 26
# ## *
# ## @brief xcb_randr_set_crtc_transform_request_t
# ##
# type
# xcb_randr_set_crtc_transform_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# transform*: xcb_render_transform_t
# filter_len*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_get_crtc_transform_cookie_t
# ##
# type
# xcb_randr_get_crtc_transform_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_crtc_transform.
# const
# XCB_RANDR_GET_CRTC_TRANSFORM* = 27
# ## *
# ## @brief xcb_randr_get_crtc_transform_request_t
# ##
# type
# xcb_randr_get_crtc_transform_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# ## *
# ## @brief xcb_randr_get_crtc_transform_reply_t
# ##
# type
# xcb_randr_get_crtc_transform_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pending_transform*: xcb_render_transform_t
# has_transforms*: uint8
# pad1*: array[3, uint8]
# current_transform*: xcb_render_transform_t
# pad2*: array[4, uint8]
# pending_len*: uint16
# pending_nparams*: uint16
# current_len*: uint16
# current_nparams*: uint16
# ## *
# ## @brief xcb_randr_get_panning_cookie_t
# ##
# type
# xcb_randr_get_panning_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_panning.
# const
# XCB_RANDR_GET_PANNING* = 28
# ## *
# ## @brief xcb_randr_get_panning_request_t
# ##
# type
# xcb_randr_get_panning_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# ## *
# ## @brief xcb_randr_get_panning_reply_t
# ##
# type
# xcb_randr_get_panning_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# left*: uint16
# top*: uint16
# width*: uint16
# height*: uint16
# track_left*: uint16
# track_top*: uint16
# track_width*: uint16
# track_height*: uint16
# border_left*: int16
# border_top*: int16
# border_right*: int16
# border_bottom*: int16
# ## *
# ## @brief xcb_randr_set_panning_cookie_t
# ##
# type
# xcb_randr_set_panning_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_set_panning.
# const
# XCB_RANDR_SET_PANNING* = 29
# ## *
# ## @brief xcb_randr_set_panning_request_t
# ##
# type
# xcb_randr_set_panning_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# crtc*: xcb_randr_crtc_t
# timestamp*: xcb_timestamp_t
# left*: uint16
# top*: uint16
# width*: uint16
# height*: uint16
# track_left*: uint16
# track_top*: uint16
# track_width*: uint16
# track_height*: uint16
# border_left*: int16
# border_top*: int16
# border_right*: int16
# border_bottom*: int16
# ## *
# ## @brief xcb_randr_set_panning_reply_t
# ##
# type
# xcb_randr_set_panning_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# ## * Opcode for xcb_randr_set_output_primary.
# const
# XCB_RANDR_SET_OUTPUT_PRIMARY* = 30
# ## *
# ## @brief xcb_randr_set_output_primary_request_t
# ##
# type
# xcb_randr_set_output_primary_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# output*: xcb_randr_output_t
# ## *
# ## @brief xcb_randr_get_output_primary_cookie_t
# ##
# type
# xcb_randr_get_output_primary_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_output_primary.
# const
# XCB_RANDR_GET_OUTPUT_PRIMARY* = 31
# ## *
# ## @brief xcb_randr_get_output_primary_request_t
# ##
# type
# xcb_randr_get_output_primary_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_output_primary_reply_t
# ##
# type
# xcb_randr_get_output_primary_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# output*: xcb_randr_output_t
# ## *
# ## @brief xcb_randr_get_providers_cookie_t
# ##
# type
# xcb_randr_get_providers_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_providers.
# const
# XCB_RANDR_GET_PROVIDERS* = 32
# ## *
# ## @brief xcb_randr_get_providers_request_t
# ##
# type
# xcb_randr_get_providers_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_randr_get_providers_reply_t
# ##
# type
# xcb_randr_get_providers_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# num_providers*: uint16
# pad1*: array[18, uint8]
# xcb_randr_provider_capability_t* = enum
# XCB_RANDR_PROVIDER_CAPABILITY_SOURCE_OUTPUT = 1,
# XCB_RANDR_PROVIDER_CAPABILITY_SINK_OUTPUT = 2,
# XCB_RANDR_PROVIDER_CAPABILITY_SOURCE_OFFLOAD = 4,
# XCB_RANDR_PROVIDER_CAPABILITY_SINK_OFFLOAD = 8
# ## *
# ## @brief xcb_randr_get_provider_info_cookie_t
# ##
# type
# xcb_randr_get_provider_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_provider_info.
# const
# XCB_RANDR_GET_PROVIDER_INFO* = 33
# ## *
# ## @brief xcb_randr_get_provider_info_request_t
# ##
# type
# xcb_randr_get_provider_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# config_timestamp*: xcb_timestamp_t
# ## *
# ## @brief xcb_randr_get_provider_info_reply_t
# ##
# type
# xcb_randr_get_provider_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# capabilities*: uint32
# num_crtcs*: uint16
# num_outputs*: uint16
# num_associated_providers*: uint16
# name_len*: uint16
# pad0*: array[8, uint8]
# ## * Opcode for xcb_randr_set_provider_offload_sink.
# const
# XCB_RANDR_SET_PROVIDER_OFFLOAD_SINK* = 34
# ## *
# ## @brief xcb_randr_set_provider_offload_sink_request_t
# ##
# type
# xcb_randr_set_provider_offload_sink_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# sink_provider*: xcb_randr_provider_t
# config_timestamp*: xcb_timestamp_t
# ## * Opcode for xcb_randr_set_provider_output_source.
# const
# XCB_RANDR_SET_PROVIDER_OUTPUT_SOURCE* = 35
# ## *
# ## @brief xcb_randr_set_provider_output_source_request_t
# ##
# type
# xcb_randr_set_provider_output_source_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# source_provider*: xcb_randr_provider_t
# config_timestamp*: xcb_timestamp_t
# ## *
# ## @brief xcb_randr_list_provider_properties_cookie_t
# ##
# type
# xcb_randr_list_provider_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_list_provider_properties.
# const
# XCB_RANDR_LIST_PROVIDER_PROPERTIES* = 36
# ## *
# ## @brief xcb_randr_list_provider_properties_request_t
# ##
# type
# xcb_randr_list_provider_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# ## *
# ## @brief xcb_randr_list_provider_properties_reply_t
# ##
# type
# xcb_randr_list_provider_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_atoms*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_randr_query_provider_property_cookie_t
# ##
# type
# xcb_randr_query_provider_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_query_provider_property.
# const
# XCB_RANDR_QUERY_PROVIDER_PROPERTY* = 37
# ## *
# ## @brief xcb_randr_query_provider_property_request_t
# ##
# type
# xcb_randr_query_provider_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# property*: xcb_atom_t
# ## *
# ## @brief xcb_randr_query_provider_property_reply_t
# ##
# type
# xcb_randr_query_provider_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pending*: uint8
# range*: uint8
# immutable*: uint8
# pad1*: array[21, uint8]
# ## * Opcode for xcb_randr_configure_provider_property.
# const
# XCB_RANDR_CONFIGURE_PROVIDER_PROPERTY* = 38
# ## *
# ## @brief xcb_randr_configure_provider_property_request_t
# ##
# type
# xcb_randr_configure_provider_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# property*: xcb_atom_t
# pending*: uint8
# range*: uint8
# pad0*: array[2, uint8]
# ## * Opcode for xcb_randr_change_provider_property.
# const
# XCB_RANDR_CHANGE_PROVIDER_PROPERTY* = 39
# ## *
# ## @brief xcb_randr_change_provider_property_request_t
# ##
# type
# xcb_randr_change_provider_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# format*: uint8
# mode*: uint8
# pad0*: array[2, uint8]
# num_items*: uint32
# ## * Opcode for xcb_randr_delete_provider_property.
# const
# XCB_RANDR_DELETE_PROVIDER_PROPERTY* = 40
# ## *
# ## @brief xcb_randr_delete_provider_property_request_t
# ##
# type
# xcb_randr_delete_provider_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# property*: xcb_atom_t
# ## *
# ## @brief xcb_randr_get_provider_property_cookie_t
# ##
# type
# xcb_randr_get_provider_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_provider_property.
# const
# XCB_RANDR_GET_PROVIDER_PROPERTY* = 41
# ## *
# ## @brief xcb_randr_get_provider_property_request_t
# ##
# type
# xcb_randr_get_provider_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# provider*: xcb_randr_provider_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# long_offset*: uint32
# long_length*: uint32
# _delete*: uint8
# pending*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_randr_get_provider_property_reply_t
# ##
# type
# xcb_randr_get_provider_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# format*: uint8
# sequence*: uint16
# length*: uint32
# `type`*: xcb_atom_t
# bytes_after*: uint32
# num_items*: uint32
# pad0*: array[12, uint8]
# ## * Opcode for xcb_randr_screen_change_notify.
# const
# XCB_RANDR_SCREEN_CHANGE_NOTIFY* = 0
# ## *
# ## @brief xcb_randr_screen_change_notify_event_t
# ##
# type
# xcb_randr_screen_change_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# rotation*: uint8
# sequence*: uint16
# timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# root*: xcb_window_t
# request_window*: xcb_window_t
# sizeID*: uint16
# subpixel_order*: uint16
# width*: uint16
# height*: uint16
# mwidth*: uint16
# mheight*: uint16
# xcb_randr_notify_t* = enum
# XCB_RANDR_NOTIFY_CRTC_CHANGE = 0, XCB_RANDR_NOTIFY_OUTPUT_CHANGE = 1,
# XCB_RANDR_NOTIFY_OUTPUT_PROPERTY = 2, XCB_RANDR_NOTIFY_PROVIDER_CHANGE = 3,
# XCB_RANDR_NOTIFY_PROVIDER_PROPERTY = 4, XCB_RANDR_NOTIFY_RESOURCE_CHANGE = 5,
# XCB_RANDR_NOTIFY_LEASE = 6
# ## *
# ## @brief xcb_randr_crtc_change_t
# ##
# type
# xcb_randr_crtc_change_t* {.bycopy.} = object
# timestamp*: xcb_timestamp_t
# window*: xcb_window_t
# crtc*: xcb_randr_crtc_t
# mode*: xcb_randr_mode_t
# rotation*: uint16
# pad0*: array[2, uint8]
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_randr_crtc_change_iterator_t
# ##
# type
# xcb_randr_crtc_change_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_crtc_change_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_output_change_t
# ##
# type
# xcb_randr_output_change_t* {.bycopy.} = object
# timestamp*: xcb_timestamp_t
# config_timestamp*: xcb_timestamp_t
# window*: xcb_window_t
# output*: xcb_randr_output_t
# crtc*: xcb_randr_crtc_t
# mode*: xcb_randr_mode_t
# rotation*: uint16
# connection*: uint8
# subpixel_order*: uint8
# ## *
# ## @brief xcb_randr_output_change_iterator_t
# ##
# type
# xcb_randr_output_change_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_output_change_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_output_property_t
# ##
# type
# xcb_randr_output_property_t* {.bycopy.} = object
# window*: xcb_window_t
# output*: xcb_randr_output_t
# atom*: xcb_atom_t
# timestamp*: xcb_timestamp_t
# status*: uint8
# pad0*: array[11, uint8]
# ## *
# ## @brief xcb_randr_output_property_iterator_t
# ##
# type
# xcb_randr_output_property_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_output_property_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_provider_change_t
# ##
# type
# xcb_randr_provider_change_t* {.bycopy.} = object
# timestamp*: xcb_timestamp_t
# window*: xcb_window_t
# provider*: xcb_randr_provider_t
# pad0*: array[16, uint8]
# ## *
# ## @brief xcb_randr_provider_change_iterator_t
# ##
# type
# xcb_randr_provider_change_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_provider_change_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_provider_property_t
# ##
# type
# xcb_randr_provider_property_t* {.bycopy.} = object
# window*: xcb_window_t
# provider*: xcb_randr_provider_t
# atom*: xcb_atom_t
# timestamp*: xcb_timestamp_t
# state*: uint8
# pad0*: array[11, uint8]
# ## *
# ## @brief xcb_randr_provider_property_iterator_t
# ##
# type
# xcb_randr_provider_property_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_provider_property_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_resource_change_t
# ##
# type
# xcb_randr_resource_change_t* {.bycopy.} = object
# timestamp*: xcb_timestamp_t
# window*: xcb_window_t
# pad0*: array[20, uint8]
# ## *
# ## @brief xcb_randr_resource_change_iterator_t
# ##
# type
# xcb_randr_resource_change_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_resource_change_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_monitor_info_t
# ##
# type
# xcb_randr_monitor_info_t* {.bycopy.} = object
# name*: xcb_atom_t
# primary*: uint8
# automatic*: uint8
# nOutput*: uint16
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# width_in_millimeters*: uint32
# height_in_millimeters*: uint32
# ## *
# ## @brief xcb_randr_monitor_info_iterator_t
# ##
# type
# xcb_randr_monitor_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_monitor_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_get_monitors_cookie_t
# ##
# type
# xcb_randr_get_monitors_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_get_monitors.
# const
# XCB_RANDR_GET_MONITORS* = 42
# ## *
# ## @brief xcb_randr_get_monitors_request_t
# ##
# type
# xcb_randr_get_monitors_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# get_active*: uint8
# ## *
# ## @brief xcb_randr_get_monitors_reply_t
# ##
# type
# xcb_randr_get_monitors_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# timestamp*: xcb_timestamp_t
# nMonitors*: uint32
# nOutputs*: uint32
# pad1*: array[12, uint8]
# ## * Opcode for xcb_randr_set_monitor.
# const
# XCB_RANDR_SET_MONITOR* = 43
# ## *
# ## @brief xcb_randr_set_monitor_request_t
# ##
# type
# xcb_randr_set_monitor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_randr_delete_monitor.
# const
# XCB_RANDR_DELETE_MONITOR* = 44
# ## *
# ## @brief xcb_randr_delete_monitor_request_t
# ##
# type
# xcb_randr_delete_monitor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# name*: xcb_atom_t
# ## *
# ## @brief xcb_randr_create_lease_cookie_t
# ##
# type
# xcb_randr_create_lease_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_randr_create_lease.
# const
# XCB_RANDR_CREATE_LEASE* = 45
# ## *
# ## @brief xcb_randr_create_lease_request_t
# ##
# type
# xcb_randr_create_lease_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# lid*: xcb_randr_lease_t
# num_crtcs*: uint16
# num_outputs*: uint16
# ## *
# ## @brief xcb_randr_create_lease_reply_t
# ##
# type
# xcb_randr_create_lease_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## * Opcode for xcb_randr_free_lease.
# const
# XCB_RANDR_FREE_LEASE* = 46
# ## *
# ## @brief xcb_randr_free_lease_request_t
# ##
# type
# xcb_randr_free_lease_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# lid*: xcb_randr_lease_t
# terminate*: uint8
# ## *
# ## @brief xcb_randr_lease_notify_t
# ##
# type
# xcb_randr_lease_notify_t* {.bycopy.} = object
# timestamp*: xcb_timestamp_t
# window*: xcb_window_t
# lease*: xcb_randr_lease_t
# created*: uint8
# pad0*: array[15, uint8]
# ## *
# ## @brief xcb_randr_lease_notify_iterator_t
# ##
# type
# xcb_randr_lease_notify_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_lease_notify_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_randr_notify_data_t
# ##
# type
# xcb_randr_notify_data_t* {.bycopy.} = object {.union.}
# cc*: xcb_randr_crtc_change_t
# oc*: xcb_randr_output_change_t
# op*: xcb_randr_output_property_t
# pc*: xcb_randr_provider_change_t
# pp*: xcb_randr_provider_property_t
# rc*: xcb_randr_resource_change_t
# lc*: xcb_randr_lease_notify_t
# ## *
# ## @brief xcb_randr_notify_data_iterator_t
# ##
# type
# xcb_randr_notify_data_iterator_t* {.bycopy.} = object
# data*: ptr xcb_randr_notify_data_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_randr_notify.
# const
# XCB_RANDR_NOTIFY* = 1
# ## *
# ## @brief xcb_randr_notify_event_t
# ##
# type
# xcb_randr_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# subCode*: uint8
# sequence*: uint16
# u*: xcb_randr_notify_data_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_mode_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_mode_t)
# ##
# proc xcb_randr_list_output_properties_sizeof*(buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_list_output_properties_unchecked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t): xcb_randr_list_output_properties_cookie_t
# proc xcb_randr_list_output_properties_atoms_length*(
# R: ptr xcb_randr_list_output_properties_reply_t): cint
# proc xcb_randr_list_output_properties_atoms_end*(
# R: ptr xcb_randr_list_output_properties_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_list_output_properties_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_query_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_query_output_property*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t;
# property: xcb_atom_t): xcb_randr_query_output_property_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_query_output_property_unchecked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t): xcb_randr_query_output_property_cookie_t
# proc xcb_randr_query_output_property_valid_values*(
# R: ptr xcb_randr_query_output_property_reply_t): ptr int32
# proc xcb_randr_query_output_property_valid_values_length*(
# R: ptr xcb_randr_query_output_property_reply_t): cint
# proc xcb_randr_query_output_property_valid_values_end*(
# R: ptr xcb_randr_query_output_property_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_query_output_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_query_output_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_query_output_property_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_query_output_property_reply_t
# proc xcb_randr_configure_output_property_sizeof*(_buffer: pointer;
# values_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_configure_output_property_checked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t; pending: uint8;
# range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_configure_output_property*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t; pending: uint8;
# range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# proc xcb_randr_configure_output_property_values*(
# R: ptr xcb_randr_configure_output_property_request_t): ptr int32
# proc xcb_randr_configure_output_property_values_length*(
# R: ptr xcb_randr_configure_output_property_request_t): cint
# proc xcb_randr_configure_output_property_values_end*(
# R: ptr xcb_randr_configure_output_property_request_t): xcb_generic_iterator_t
# proc xcb_randr_change_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_change_output_property_checked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t; `type`: xcb_atom_t;
# format: uint8; mode: uint8; num_units: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_change_output_property*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t;
# property: xcb_atom_t; `type`: xcb_atom_t;
# format: uint8; mode: uint8;
# num_units: uint32; data: pointer): xcb_void_cookie_t
# proc xcb_randr_change_output_property_data*(
# R: ptr xcb_randr_change_output_property_request_t): pointer
# proc xcb_randr_change_output_property_data_length*(
# R: ptr xcb_randr_change_output_property_request_t): cint
# proc xcb_randr_change_output_property_data_end*(
# R: ptr xcb_randr_change_output_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_delete_output_property_checked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_delete_output_property*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t;
# property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_get_output_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_output_property_unchecked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; property: xcb_atom_t; `type`: xcb_atom_t;
# long_offset: uint32; long_length: uint32; _delete: uint8; pending: uint8): xcb_randr_get_output_property_cookie_t
# proc xcb_randr_get_output_property_data_end*(
# R: ptr xcb_randr_get_output_property_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_output_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_create_mode_sizeof*(_buffer: pointer; name_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_create_mode_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
# mode_info: xcb_randr_mode_info_t;
# name_len: uint32; name: cstring): xcb_randr_create_mode_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_create_mode_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_destroy_mode_checked*(c: ptr xcb_connection_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_destroy_mode*(c: ptr xcb_connection_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_add_output_mode_checked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t;
# mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_add_output_mode*(c: ptr xcb_connection_t; output: xcb_randr_output_t;
# mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_delete_output_mode_checked*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t; mode: xcb_randr_mode_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_delete_output_mode*(c: ptr xcb_connection_t;
# output: xcb_randr_output_t;
# mode: xcb_randr_mode_t): xcb_void_cookie_t
# proc xcb_randr_get_crtc_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_crtc_info*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
# config_timestamp: xcb_timestamp_t): xcb_randr_get_crtc_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_crtc_info_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t;
# config_timestamp: xcb_timestamp_t): xcb_randr_get_crtc_info_cookie_t
# proc xcb_randr_get_crtc_info_possible_end*(R: ptr xcb_randr_get_crtc_info_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_crtc_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_set_crtc_config_sizeof*(_buffer: pointer; outputs_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_crtc_config*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
# timestamp: xcb_timestamp_t;
# config_timestamp: xcb_timestamp_t; x: int16;
# y: int16; mode: xcb_randr_mode_t;
# rotation: uint16; outputs_len: uint32;
# outputs: ptr xcb_randr_output_t): xcb_randr_set_crtc_config_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_set_crtc_config_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t; timestamp: xcb_timestamp_t;
# config_timestamp: xcb_timestamp_t; x: int16; y: int16; mode: xcb_randr_mode_t;
# rotation: uint16; outputs_len: uint32; outputs: ptr xcb_randr_output_t): xcb_randr_set_crtc_config_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_set_crtc_config_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_set_crtc_config_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_set_crtc_config_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_set_crtc_config_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_crtc_gamma_size*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_size_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_crtc_gamma_size_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_size_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_crtc_gamma_size_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_crtc_gamma_size_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_gamma_size_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_gamma_size_reply_t
# proc xcb_randr_get_crtc_gamma_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_crtc_gamma*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_crtc_gamma_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_gamma_cookie_t
# proc xcb_randr_get_crtc_gamma_red*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_red_length*(R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_red_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_gamma_green*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_green_length*(
# R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_green_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_gamma_blue*(R: ptr xcb_randr_get_crtc_gamma_reply_t): ptr uint16
# proc xcb_randr_get_crtc_gamma_blue_length*(
# R: ptr xcb_randr_get_crtc_gamma_reply_t): cint
# proc xcb_randr_get_crtc_gamma_blue_end*(R: ptr xcb_randr_get_crtc_gamma_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_crtc_gamma_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_crtc_gamma_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_gamma_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_gamma_reply_t
# proc xcb_randr_set_crtc_gamma_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_crtc_gamma_checked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t; size: uint16;
# red: ptr uint16; green: ptr uint16;
# blue: ptr uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_crtc_gamma*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
# size: uint16; red: ptr uint16; green: ptr uint16;
# blue: ptr uint16): xcb_void_cookie_t
# proc xcb_randr_set_crtc_gamma_red*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_red_length*(
# R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_red_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_gamma_green*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_green_length*(
# R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_green_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_gamma_blue*(R: ptr xcb_randr_set_crtc_gamma_request_t): ptr uint16
# proc xcb_randr_set_crtc_gamma_blue_length*(
# R: ptr xcb_randr_set_crtc_gamma_request_t): cint
# proc xcb_randr_set_crtc_gamma_blue_end*(R: ptr xcb_randr_set_crtc_gamma_request_t): xcb_generic_iterator_t
# proc xcb_randr_get_screen_resources_current_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_screen_resources_current*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_randr_get_screen_resources_current_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_screen_resources_current_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_screen_resources_current_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_screen_resources_current_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_screen_resources_current_reply_t
# proc xcb_randr_set_crtc_transform_sizeof*(_buffer: pointer;
# filter_params_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_crtc_transform_checked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t; transform: xcb_render_transform_t; filter_len: uint16;
# filter_name: cstring; filter_params_len: uint32;
# filter_params: ptr xcb_render_fixed_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_crtc_transform*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
# transform: xcb_render_transform_t;
# filter_len: uint16; filter_name: cstring;
# filter_params_len: uint32;
# filter_params: ptr xcb_render_fixed_t): xcb_void_cookie_t
# proc xcb_randr_set_crtc_transform_filter_name*(
# R: ptr xcb_randr_set_crtc_transform_request_t): cstring
# proc xcb_randr_set_crtc_transform_filter_name_length*(
# R: ptr xcb_randr_set_crtc_transform_request_t): cint
# proc xcb_randr_set_crtc_transform_filter_name_end*(
# R: ptr xcb_randr_set_crtc_transform_request_t): xcb_generic_iterator_t
# proc xcb_randr_set_crtc_transform_filter_params*(
# R: ptr xcb_randr_set_crtc_transform_request_t): ptr xcb_render_fixed_t
# proc xcb_randr_set_crtc_transform_filter_params_length*(
# R: ptr xcb_randr_set_crtc_transform_request_t): cint
# proc xcb_randr_set_crtc_transform_filter_params_end*(
# R: ptr xcb_randr_set_crtc_transform_request_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_crtc_transform*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_transform_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_crtc_transform_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t): xcb_randr_get_crtc_transform_cookie_t
# proc xcb_randr_get_crtc_transform_pending_filter_name*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cstring
# proc xcb_randr_get_crtc_transform_pending_filter_name_length*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_pending_filter_name_end*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_pending_params*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): ptr xcb_render_fixed_t
# proc xcb_randr_get_crtc_transform_pending_params_length*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_pending_params_end*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_current_filter_name*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cstring
# proc xcb_randr_get_crtc_transform_current_filter_name_length*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_current_filter_name_end*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# proc xcb_randr_get_crtc_transform_current_params*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): ptr xcb_render_fixed_t
# proc xcb_randr_get_crtc_transform_current_params_length*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): cint
# proc xcb_randr_get_crtc_transform_current_params_end*(
# R: ptr xcb_randr_get_crtc_transform_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_crtc_transform_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_crtc_transform_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_crtc_transform_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_crtc_transform_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_panning*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t): xcb_randr_get_panning_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_panning_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t): xcb_randr_get_panning_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_panning_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_panning_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_panning_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_panning_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_panning*(c: ptr xcb_connection_t; crtc: xcb_randr_crtc_t;
# timestamp: xcb_timestamp_t; left: uint16;
# top: uint16; width: uint16; height: uint16;
# track_left: uint16; track_top: uint16;
# track_width: uint16; track_height: uint16;
# border_left: int16; border_top: int16;
# border_right: int16; border_bottom: int16): xcb_randr_set_panning_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_set_panning_unchecked*(c: ptr xcb_connection_t;
# crtc: xcb_randr_crtc_t;
# timestamp: xcb_timestamp_t; left: uint16;
# top: uint16; width: uint16;
# height: uint16; track_left: uint16;
# track_top: uint16; track_width: uint16;
# track_height: uint16; border_left: int16;
# border_top: int16; border_right: int16;
# border_bottom: int16): xcb_randr_set_panning_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_set_panning_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_set_panning_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_set_panning_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_set_panning_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_output_primary_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; output: xcb_randr_output_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_output_primary*(c: ptr xcb_connection_t; window: xcb_window_t;
# output: xcb_randr_output_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_output_primary_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_randr_get_output_primary_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_output_primary_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_providers_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_providers*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_randr_get_providers_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_providers_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_randr_get_providers_cookie_t
# proc xcb_randr_get_providers_providers*(R: ptr xcb_randr_get_providers_reply_t): ptr xcb_randr_provider_t
# proc xcb_randr_get_providers_providers_length*(
# R: ptr xcb_randr_get_providers_reply_t): cint
# proc xcb_randr_get_providers_providers_end*(
# R: ptr xcb_randr_get_providers_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_providers_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_providers_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_providers_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_providers_reply_t
# proc xcb_randr_get_provider_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_provider_info*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t;
# config_timestamp: xcb_timestamp_t): xcb_randr_get_provider_info_cookie_t
# proc xcb_randr_get_provider_info_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_provider_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_provider_info_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_provider_offload_sink_checked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; sink_provider: xcb_randr_provider_t;
# config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_provider_offload_sink*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; sink_provider: xcb_randr_provider_t;
# config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_provider_output_source_checked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; source_provider: xcb_randr_provider_t;
# config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_provider_output_source*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; source_provider: xcb_randr_provider_t;
# config_timestamp: xcb_timestamp_t): xcb_void_cookie_t
# proc xcb_randr_list_provider_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_query_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_query_provider_property*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t;
# property: xcb_atom_t): xcb_randr_query_provider_property_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_query_provider_property_unchecked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t): xcb_randr_query_provider_property_cookie_t
# proc xcb_randr_query_provider_property_valid_values*(
# R: ptr xcb_randr_query_provider_property_reply_t): ptr int32
# proc xcb_randr_query_provider_property_valid_values_length*(
# R: ptr xcb_randr_query_provider_property_reply_t): cint
# proc xcb_randr_query_provider_property_valid_values_end*(
# R: ptr xcb_randr_query_provider_property_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_query_provider_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_query_provider_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_query_provider_property_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_query_provider_property_reply_t
# proc xcb_randr_configure_provider_property_sizeof*(_buffer: pointer;
# values_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_configure_provider_property_checked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t; pending: uint8;
# range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_configure_provider_property*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t; pending: uint8;
# range: uint8; values_len: uint32; values: ptr int32): xcb_void_cookie_t
# proc xcb_randr_configure_provider_property_values*(
# R: ptr xcb_randr_configure_provider_property_request_t): ptr int32
# proc xcb_randr_configure_provider_property_values_length*(
# R: ptr xcb_randr_configure_provider_property_request_t): cint
# proc xcb_randr_configure_provider_property_values_end*(
# R: ptr xcb_randr_configure_provider_property_request_t): xcb_generic_iterator_t
# proc xcb_randr_change_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_change_provider_property_checked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t; `type`: xcb_atom_t;
# format: uint8; mode: uint8; num_items: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_change_provider_property*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t;
# property: xcb_atom_t; `type`: xcb_atom_t;
# format: uint8; mode: uint8;
# num_items: uint32; data: pointer): xcb_void_cookie_t
# proc xcb_randr_change_provider_property_data*(
# R: ptr xcb_randr_change_provider_property_request_t): pointer
# proc xcb_randr_change_provider_property_data_length*(
# R: ptr xcb_randr_change_provider_property_request_t): cint
# proc xcb_randr_change_provider_property_data_end*(
# R: ptr xcb_randr_change_provider_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_delete_provider_property_checked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_delete_provider_property*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t;
# property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_get_provider_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_get_provider_property*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t;
# property: xcb_atom_t; `type`: xcb_atom_t;
# long_offset: uint32; long_length: uint32;
# _delete: uint8; pending: uint8): xcb_randr_get_provider_property_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_get_provider_property_unchecked*(c: ptr xcb_connection_t;
# provider: xcb_randr_provider_t; property: xcb_atom_t; `type`: xcb_atom_t;
# long_offset: uint32; long_length: uint32; _delete: uint8; pending: uint8): xcb_randr_get_provider_property_cookie_t
# proc xcb_randr_get_provider_property_data*(
# R: ptr xcb_randr_get_provider_property_reply_t): pointer
# proc xcb_randr_get_provider_property_data_length*(
# R: ptr xcb_randr_get_provider_property_reply_t): cint
# proc xcb_randr_get_provider_property_data_end*(
# R: ptr xcb_randr_get_provider_property_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_get_provider_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_get_provider_property_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_get_provider_property_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_get_provider_property_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_crtc_change_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_crtc_change_t)
# ##
# proc xcb_randr_crtc_change_next*(i: ptr xcb_randr_crtc_change_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_crtc_change_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_crtc_change_end*(i: xcb_randr_crtc_change_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_output_change_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_output_change_t)
# ##
# proc xcb_randr_output_change_next*(i: ptr xcb_randr_output_change_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_output_change_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_output_change_end*(i: xcb_randr_output_change_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_output_property_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_output_property_t)
# ##
# proc xcb_randr_output_property_next*(i: ptr xcb_randr_output_property_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_output_property_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_output_property_end*(i: xcb_randr_output_property_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_provider_change_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_provider_change_t)
# ##
# proc xcb_randr_provider_change_next*(i: ptr xcb_randr_provider_change_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_provider_change_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_provider_change_end*(i: xcb_randr_provider_change_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_provider_property_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_provider_property_t)
# ##
# proc xcb_randr_provider_property_next*(i: ptr xcb_randr_provider_property_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_provider_property_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_provider_property_end*(i: xcb_randr_provider_property_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_resource_change_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_resource_change_t)
# ##
# proc xcb_randr_resource_change_next*(i: ptr xcb_randr_resource_change_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_resource_change_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_resource_change_end*(i: xcb_randr_resource_change_iterator_t): xcb_generic_iterator_t
# proc xcb_randr_monitor_info_sizeof*(_buffer: pointer): cint
# proc xcb_randr_monitor_info_outputs_end*(R: ptr xcb_randr_monitor_info_t): xcb_generic_iterator_t
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_monitor_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_monitor_info_end*(i: xcb_randr_monitor_info_iterator_t): xcb_generic_iterator_t
# proc xcb_randr_set_monitor_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_set_monitor_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# monitorinfo: ptr xcb_randr_monitor_info_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_set_monitor*(c: ptr xcb_connection_t; window: xcb_window_t;
# monitorinfo: ptr xcb_randr_monitor_info_t): xcb_void_cookie_t
# proc xcb_randr_set_monitor_monitorinfo*(R: ptr xcb_randr_set_monitor_request_t): ptr xcb_randr_monitor_info_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_delete_monitor_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; name: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_delete_monitor*(c: ptr xcb_connection_t; window: xcb_window_t;
# name: xcb_atom_t): xcb_void_cookie_t
# proc xcb_randr_create_lease_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_create_lease*(c: ptr xcb_connection_t; window: xcb_window_t;
# lid: xcb_randr_lease_t; num_crtcs: uint16;
# num_outputs: uint16; crtcs: ptr xcb_randr_crtc_t;
# outputs: ptr xcb_randr_output_t): xcb_randr_create_lease_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_randr_create_lease_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# lid: xcb_randr_lease_t; num_crtcs: uint16;
# num_outputs: uint16;
# crtcs: ptr xcb_randr_crtc_t;
# outputs: ptr xcb_randr_output_t): xcb_randr_create_lease_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_randr_create_lease_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_create_lease_reply*(c: ptr xcb_connection_t; cookie: xcb_randr_create_lease_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_randr_create_lease_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_randr_create_lease_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_randr_create_lease_reply_t): ptr cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_randr_free_lease_checked*(c: ptr xcb_connection_t; lid: xcb_randr_lease_t;
# terminate: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_randr_free_lease*(c: ptr xcb_connection_t; lid: xcb_randr_lease_t;
# terminate: uint8): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_lease_notify_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_lease_notify_t)
# ##
# proc xcb_randr_lease_notify_next*(i: ptr xcb_randr_lease_notify_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_lease_notify_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_lease_notify_end*(i: xcb_randr_lease_notify_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_randr_notify_data_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_randr_notify_data_t)
# ##
# proc xcb_randr_notify_data_next*(i: ptr xcb_randr_notify_data_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_randr_notify_data_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_randr_notify_data_end*(i: xcb_randr_notify_data_iterator_t): xcb_generic_iterator_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from record.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Record_API XCB Record API
# ## @brief Record XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb
# const
# XCB_RECORD_MAJOR_VERSION* = 1
# XCB_RECORD_MINOR_VERSION* = 13
# var xcb_record_id*: xcb_extension_t
# type
# xcb_record_context_t* = uint32
# ## *
# ## @brief xcb_record_context_iterator_t
# ##
# type
# xcb_record_context_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_context_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_record_range_8_t
# ##
# type
# xcb_record_range_8_t* {.bycopy.} = object
# first*: uint8
# last*: uint8
# ## *
# ## @brief xcb_record_range_8_iterator_t
# ##
# type
# xcb_record_range_8_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_range_8_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_record_range_16_t
# ##
# type
# xcb_record_range_16_t* {.bycopy.} = object
# first*: uint16
# last*: uint16
# ## *
# ## @brief xcb_record_range_16_iterator_t
# ##
# type
# xcb_record_range_16_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_range_16_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_record_ext_range_t
# ##
# type
# xcb_record_ext_range_t* {.bycopy.} = object
# major*: xcb_record_range_8_t
# minor*: xcb_record_range_16_t
# ## *
# ## @brief xcb_record_ext_range_iterator_t
# ##
# type
# xcb_record_ext_range_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_ext_range_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_record_range_t
# ##
# type
# xcb_record_range_t* {.bycopy.} = object
# core_requests*: xcb_record_range_8_t
# core_replies*: xcb_record_range_8_t
# ext_requests*: xcb_record_ext_range_t
# ext_replies*: xcb_record_ext_range_t
# delivered_events*: xcb_record_range_8_t
# device_events*: xcb_record_range_8_t
# errors*: xcb_record_range_8_t
# client_started*: uint8
# client_died*: uint8
# ## *
# ## @brief xcb_record_range_iterator_t
# ##
# type
# xcb_record_range_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_range_t
# rem*: cint
# index*: cint
# xcb_record_element_header_t* = uint8
# ## *
# ## @brief xcb_record_element_header_iterator_t
# ##
# type
# xcb_record_element_header_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_element_header_t
# rem*: cint
# index*: cint
# xcb_record_h_type_t* = enum
# XCB_RECORD_H_TYPE_FROM_SERVER_TIME = 1, XCB_RECORD_H_TYPE_FROM_CLIENT_TIME = 2,
# XCB_RECORD_H_TYPE_FROM_CLIENT_SEQUENCE = 4
# xcb_record_client_spec_t* = uint32
# ## *
# ## @brief xcb_record_client_spec_iterator_t
# ##
# type
# xcb_record_client_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_client_spec_t
# rem*: cint
# index*: cint
# xcb_record_cs_t* = enum
# XCB_RECORD_CS_CURRENT_CLIENTS = 1, XCB_RECORD_CS_FUTURE_CLIENTS = 2,
# XCB_RECORD_CS_ALL_CLIENTS = 3
# ## *
# ## @brief xcb_record_client_info_t
# ##
# type
# xcb_record_client_info_t* {.bycopy.} = object
# client_resource*: xcb_record_client_spec_t
# num_ranges*: uint32
# ## *
# ## @brief xcb_record_client_info_iterator_t
# ##
# type
# xcb_record_client_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_record_client_info_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_record_bad_context.
# const
# XCB_RECORD_BAD_CONTEXT* = 0
# ## *
# ## @brief xcb_record_bad_context_error_t
# ##
# type
# xcb_record_bad_context_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# invalid_record*: uint32
# ## *
# ## @brief xcb_record_query_version_cookie_t
# ##
# type
# xcb_record_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_record_query_version.
# const
# XCB_RECORD_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_record_query_version_request_t
# ##
# type
# xcb_record_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint16
# minor_version*: uint16
# ## *
# ## @brief xcb_record_query_version_reply_t
# ##
# type
# xcb_record_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# ## * Opcode for xcb_record_create_context.
# const
# XCB_RECORD_CREATE_CONTEXT* = 1
# ## *
# ## @brief xcb_record_create_context_request_t
# ##
# type
# xcb_record_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# element_header*: xcb_record_element_header_t
# pad0*: array[3, uint8]
# num_client_specs*: uint32
# num_ranges*: uint32
# ## * Opcode for xcb_record_register_clients.
# const
# XCB_RECORD_REGISTER_CLIENTS* = 2
# ## *
# ## @brief xcb_record_register_clients_request_t
# ##
# type
# xcb_record_register_clients_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# element_header*: xcb_record_element_header_t
# pad0*: array[3, uint8]
# num_client_specs*: uint32
# num_ranges*: uint32
# ## * Opcode for xcb_record_unregister_clients.
# const
# XCB_RECORD_UNREGISTER_CLIENTS* = 3
# ## *
# ## @brief xcb_record_unregister_clients_request_t
# ##
# type
# xcb_record_unregister_clients_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# num_client_specs*: uint32
# ## *
# ## @brief xcb_record_get_context_cookie_t
# ##
# type
# xcb_record_get_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_record_get_context.
# const
# XCB_RECORD_GET_CONTEXT* = 4
# ## *
# ## @brief xcb_record_get_context_request_t
# ##
# type
# xcb_record_get_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# ## *
# ## @brief xcb_record_get_context_reply_t
# ##
# type
# xcb_record_get_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# enabled*: uint8
# sequence*: uint16
# length*: uint32
# element_header*: xcb_record_element_header_t
# pad0*: array[3, uint8]
# num_intercepted_clients*: uint32
# pad1*: array[16, uint8]
# ## *
# ## @brief xcb_record_enable_context_cookie_t
# ##
# type
# xcb_record_enable_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_record_enable_context.
# const
# XCB_RECORD_ENABLE_CONTEXT* = 5
# ## *
# ## @brief xcb_record_enable_context_request_t
# ##
# type
# xcb_record_enable_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# ## *
# ## @brief xcb_record_enable_context_reply_t
# ##
# type
# xcb_record_enable_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# category*: uint8
# sequence*: uint16
# length*: uint32
# element_header*: xcb_record_element_header_t
# client_swapped*: uint8
# pad0*: array[2, uint8]
# xid_base*: uint32
# server_time*: uint32
# rec_sequence_num*: uint32
# pad1*: array[8, uint8]
# ## * Opcode for xcb_record_disable_context.
# const
# XCB_RECORD_DISABLE_CONTEXT* = 6
# ## *
# ## @brief xcb_record_disable_context_request_t
# ##
# type
# xcb_record_disable_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# ## * Opcode for xcb_record_free_context.
# const
# XCB_RECORD_FREE_CONTEXT* = 7
# ## *
# ## @brief xcb_record_free_context_request_t
# ##
# type
# xcb_record_free_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_record_context_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_context_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_context_t)
# ##
# proc xcb_record_context_next*(i: ptr xcb_record_context_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_context_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_context_end*(i: xcb_record_context_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_range_8_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_range_8_t)
# ##
# proc xcb_record_range_8_next*(i: ptr xcb_record_range_8_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_range_8_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_range_8_end*(i: xcb_record_range_8_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_range_16_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_range_16_t)
# ##
# proc xcb_record_range_16_next*(i: ptr xcb_record_range_16_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_range_16_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_range_16_end*(i: xcb_record_range_16_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_ext_range_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_ext_range_t)
# ##
# proc xcb_record_ext_range_next*(i: ptr xcb_record_ext_range_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_ext_range_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_ext_range_end*(i: xcb_record_ext_range_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_range_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_range_t)
# ##
# proc xcb_record_range_next*(i: ptr xcb_record_range_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_range_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_range_end*(i: xcb_record_range_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_element_header_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_element_header_t)
# ##
# proc xcb_record_element_header_next*(i: ptr xcb_record_element_header_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_element_header_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_element_header_end*(i: xcb_record_element_header_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_client_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_client_spec_t)
# ##
# proc xcb_record_client_spec_next*(i: ptr xcb_record_client_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_client_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_client_spec_end*(i: xcb_record_client_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_record_client_info_sizeof*(_buffer: pointer): cint
# proc xcb_record_client_info_ranges*(R: ptr xcb_record_client_info_t): ptr xcb_record_range_t
# proc xcb_record_client_info_ranges_length*(R: ptr xcb_record_client_info_t): cint
# proc xcb_record_client_info_ranges_iterator*(R: ptr xcb_record_client_info_t): xcb_record_range_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_record_client_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_record_client_info_t)
# ##
# proc xcb_record_client_info_next*(i: ptr xcb_record_client_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_record_client_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_record_client_info_end*(i: xcb_record_client_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_query_version*(c: ptr xcb_connection_t; major_version: uint16;
# minor_version: uint16): xcb_record_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_record_query_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint16;
# minor_version: uint16): xcb_record_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_record_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_record_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_record_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_record_query_version_reply_t
# proc xcb_record_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_record_create_context_checked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t;
# element_header: xcb_record_element_header_t; num_client_specs: uint32;
# num_ranges: uint32; client_specs: ptr xcb_record_client_spec_t;
# ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_create_context*(c: ptr xcb_connection_t;
# context: xcb_record_context_t;
# element_header: xcb_record_element_header_t;
# num_client_specs: uint32; num_ranges: uint32;
# client_specs: ptr xcb_record_client_spec_t;
# ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# proc xcb_record_create_context_client_specs*(
# R: ptr xcb_record_create_context_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_create_context_client_specs_length*(
# R: ptr xcb_record_create_context_request_t): cint
# proc xcb_record_create_context_client_specs_end*(
# R: ptr xcb_record_create_context_request_t): xcb_generic_iterator_t
# proc xcb_record_create_context_ranges*(R: ptr xcb_record_create_context_request_t): ptr xcb_record_range_t
# proc xcb_record_create_context_ranges_length*(
# R: ptr xcb_record_create_context_request_t): cint
# proc xcb_record_create_context_ranges_iterator*(
# R: ptr xcb_record_create_context_request_t): xcb_record_range_iterator_t
# proc xcb_record_register_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_record_register_clients_checked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t; element_header: xcb_record_element_header_t;
# num_client_specs: uint32; num_ranges: uint32;
# client_specs: ptr xcb_record_client_spec_t; ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_register_clients*(c: ptr xcb_connection_t;
# context: xcb_record_context_t;
# element_header: xcb_record_element_header_t;
# num_client_specs: uint32; num_ranges: uint32;
# client_specs: ptr xcb_record_client_spec_t;
# ranges: ptr xcb_record_range_t): xcb_void_cookie_t
# proc xcb_record_register_clients_client_specs*(
# R: ptr xcb_record_register_clients_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_register_clients_client_specs_length*(
# R: ptr xcb_record_register_clients_request_t): cint
# proc xcb_record_register_clients_client_specs_end*(
# R: ptr xcb_record_register_clients_request_t): xcb_generic_iterator_t
# proc xcb_record_register_clients_ranges*(R: ptr xcb_record_register_clients_request_t): ptr xcb_record_range_t
# proc xcb_record_register_clients_ranges_length*(
# R: ptr xcb_record_register_clients_request_t): cint
# proc xcb_record_register_clients_ranges_iterator*(
# R: ptr xcb_record_register_clients_request_t): xcb_record_range_iterator_t
# proc xcb_record_unregister_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_record_unregister_clients_checked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t; num_client_specs: uint32;
# client_specs: ptr xcb_record_client_spec_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_unregister_clients*(c: ptr xcb_connection_t;
# context: xcb_record_context_t;
# num_client_specs: uint32;
# client_specs: ptr xcb_record_client_spec_t): xcb_void_cookie_t
# proc xcb_record_unregister_clients_client_specs*(
# R: ptr xcb_record_unregister_clients_request_t): ptr xcb_record_client_spec_t
# proc xcb_record_unregister_clients_client_specs_length*(
# R: ptr xcb_record_unregister_clients_request_t): cint
# proc xcb_record_unregister_clients_client_specs_end*(
# R: ptr xcb_record_unregister_clients_request_t): xcb_generic_iterator_t
# proc xcb_record_get_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_get_context*(c: ptr xcb_connection_t; context: xcb_record_context_t): xcb_record_get_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_record_get_context_unchecked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_record_get_context_cookie_t
# proc xcb_record_get_context_intercepted_clients_length*(
# R: ptr xcb_record_get_context_reply_t): cint
# proc xcb_record_get_context_intercepted_clients_iterator*(
# R: ptr xcb_record_get_context_reply_t): xcb_record_client_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_record_get_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_record_get_context_reply*(c: ptr xcb_connection_t; cookie: xcb_record_get_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_record_get_context_reply_t
# proc xcb_record_enable_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_enable_context*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_record_enable_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_record_enable_context_unchecked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_record_enable_context_cookie_t
# proc xcb_record_enable_context_data*(R: ptr xcb_record_enable_context_reply_t): ptr uint8
# proc xcb_record_enable_context_data_length*(
# R: ptr xcb_record_enable_context_reply_t): cint
# proc xcb_record_enable_context_data_end*(R: ptr xcb_record_enable_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_record_enable_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_record_enable_context_reply*(c: ptr xcb_connection_t; cookie: xcb_record_enable_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_record_enable_context_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_record_disable_context_checked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_disable_context*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_record_free_context_checked*(c: ptr xcb_connection_t;
# context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_record_free_context*(c: ptr xcb_connection_t; context: xcb_record_context_t): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from render.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Render_API XCB Render API
# ## @brief Render XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_RENDER_MAJOR_VERSION* = 0
# XCB_RENDER_MINOR_VERSION* = 11
# var xcb_render_id*: xcb_extension_t
# type
# xcb_render_pict_type_t* = enum
# XCB_RENDER_PICT_TYPE_INDEXED = 0, XCB_RENDER_PICT_TYPE_DIRECT = 1
# xcb_render_picture_enum_t* = enum
# XCB_RENDER_PICTURE_NONE = 0
# xcb_render_pict_op_t* = enum
# XCB_RENDER_PICT_OP_CLEAR = 0, XCB_RENDER_PICT_OP_SRC = 1,
# XCB_RENDER_PICT_OP_DST = 2, XCB_RENDER_PICT_OP_OVER = 3,
# XCB_RENDER_PICT_OP_OVER_REVERSE = 4, XCB_RENDER_PICT_OP_IN = 5,
# XCB_RENDER_PICT_OP_IN_REVERSE = 6, XCB_RENDER_PICT_OP_OUT = 7,
# XCB_RENDER_PICT_OP_OUT_REVERSE = 8, XCB_RENDER_PICT_OP_ATOP = 9,
# XCB_RENDER_PICT_OP_ATOP_REVERSE = 10, XCB_RENDER_PICT_OP_XOR = 11,
# XCB_RENDER_PICT_OP_ADD = 12, XCB_RENDER_PICT_OP_SATURATE = 13,
# XCB_RENDER_PICT_OP_DISJOINT_CLEAR = 16, XCB_RENDER_PICT_OP_DISJOINT_SRC = 17,
# XCB_RENDER_PICT_OP_DISJOINT_DST = 18, XCB_RENDER_PICT_OP_DISJOINT_OVER = 19,
# XCB_RENDER_PICT_OP_DISJOINT_OVER_REVERSE = 20,
# XCB_RENDER_PICT_OP_DISJOINT_IN = 21,
# XCB_RENDER_PICT_OP_DISJOINT_IN_REVERSE = 22,
# XCB_RENDER_PICT_OP_DISJOINT_OUT = 23,
# XCB_RENDER_PICT_OP_DISJOINT_OUT_REVERSE = 24,
# XCB_RENDER_PICT_OP_DISJOINT_ATOP = 25,
# XCB_RENDER_PICT_OP_DISJOINT_ATOP_REVERSE = 26,
# XCB_RENDER_PICT_OP_DISJOINT_XOR = 27, XCB_RENDER_PICT_OP_CONJOINT_CLEAR = 32,
# XCB_RENDER_PICT_OP_CONJOINT_SRC = 33, XCB_RENDER_PICT_OP_CONJOINT_DST = 34,
# XCB_RENDER_PICT_OP_CONJOINT_OVER = 35,
# XCB_RENDER_PICT_OP_CONJOINT_OVER_REVERSE = 36,
# XCB_RENDER_PICT_OP_CONJOINT_IN = 37,
# XCB_RENDER_PICT_OP_CONJOINT_IN_REVERSE = 38,
# XCB_RENDER_PICT_OP_CONJOINT_OUT = 39,
# XCB_RENDER_PICT_OP_CONJOINT_OUT_REVERSE = 40,
# XCB_RENDER_PICT_OP_CONJOINT_ATOP = 41,
# XCB_RENDER_PICT_OP_CONJOINT_ATOP_REVERSE = 42,
# XCB_RENDER_PICT_OP_CONJOINT_XOR = 43, XCB_RENDER_PICT_OP_MULTIPLY = 48,
# XCB_RENDER_PICT_OP_SCREEN = 49, XCB_RENDER_PICT_OP_OVERLAY = 50,
# XCB_RENDER_PICT_OP_DARKEN = 51, XCB_RENDER_PICT_OP_LIGHTEN = 52,
# XCB_RENDER_PICT_OP_COLOR_DODGE = 53, XCB_RENDER_PICT_OP_COLOR_BURN = 54,
# XCB_RENDER_PICT_OP_HARD_LIGHT = 55, XCB_RENDER_PICT_OP_SOFT_LIGHT = 56,
# XCB_RENDER_PICT_OP_DIFFERENCE = 57, XCB_RENDER_PICT_OP_EXCLUSION = 58,
# XCB_RENDER_PICT_OP_HSL_HUE = 59, XCB_RENDER_PICT_OP_HSL_SATURATION = 60,
# XCB_RENDER_PICT_OP_HSL_COLOR = 61, XCB_RENDER_PICT_OP_HSL_LUMINOSITY = 62
# xcb_render_poly_edge_t* = enum
# XCB_RENDER_POLY_EDGE_SHARP = 0, XCB_RENDER_POLY_EDGE_SMOOTH = 1
# xcb_render_poly_mode_t* = enum
# XCB_RENDER_POLY_MODE_PRECISE = 0, XCB_RENDER_POLY_MODE_IMPRECISE = 1
# xcb_render_cp_t* = enum
# XCB_RENDER_CP_REPEAT = 1, XCB_RENDER_CP_ALPHA_MAP = 2,
# XCB_RENDER_CP_ALPHA_X_ORIGIN = 4, XCB_RENDER_CP_ALPHA_Y_ORIGIN = 8,
# XCB_RENDER_CP_CLIP_X_ORIGIN = 16, XCB_RENDER_CP_CLIP_Y_ORIGIN = 32,
# XCB_RENDER_CP_CLIP_MASK = 64, XCB_RENDER_CP_GRAPHICS_EXPOSURE = 128,
# XCB_RENDER_CP_SUBWINDOW_MODE = 256, XCB_RENDER_CP_POLY_EDGE = 512,
# XCB_RENDER_CP_POLY_MODE = 1024, XCB_RENDER_CP_DITHER = 2048,
# XCB_RENDER_CP_COMPONENT_ALPHA = 4096
# xcb_render_sub_pixel_t* = enum
# XCB_RENDER_SUB_PIXEL_UNKNOWN = 0, XCB_RENDER_SUB_PIXEL_HORIZONTAL_RGB = 1,
# XCB_RENDER_SUB_PIXEL_HORIZONTAL_BGR = 2, XCB_RENDER_SUB_PIXEL_VERTICAL_RGB = 3,
# XCB_RENDER_SUB_PIXEL_VERTICAL_BGR = 4, XCB_RENDER_SUB_PIXEL_NONE = 5
# xcb_render_repeat_t* = enum
# XCB_RENDER_REPEAT_NONE = 0, XCB_RENDER_REPEAT_NORMAL = 1,
# XCB_RENDER_REPEAT_PAD = 2, XCB_RENDER_REPEAT_REFLECT = 3
# xcb_render_glyph_t* = uint32
# ## *
# ## @brief xcb_render_glyph_iterator_t
# ##
# type
# xcb_render_glyph_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_glyph_t
# rem*: cint
# index*: cint
# xcb_render_glyphset_t* = uint32
# ## *
# ## @brief xcb_render_glyphset_iterator_t
# ##
# type
# xcb_render_glyphset_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_glyphset_t
# rem*: cint
# index*: cint
# xcb_render_picture_t* = uint32
# ## *
# ## @brief xcb_render_picture_iterator_t
# ##
# type
# xcb_render_picture_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_picture_t
# rem*: cint
# index*: cint
# xcb_render_pictformat_t* = uint32
# ## *
# ## @brief xcb_render_pictformat_iterator_t
# ##
# type
# xcb_render_pictformat_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pictformat_t
# rem*: cint
# index*: cint
# xcb_render_fixed_t* = int32
# ## *
# ## @brief xcb_render_fixed_iterator_t
# ##
# type
# xcb_render_fixed_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_fixed_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_render_pict_format.
# const
# XCB_RENDER_PICT_FORMAT* = 0
# ## *
# ## @brief xcb_render_pict_format_error_t
# ##
# type
# xcb_render_pict_format_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_render_picture.
# const
# XCB_RENDER_PICTURE* = 1
# ## *
# ## @brief xcb_render_picture_error_t
# ##
# type
# xcb_render_picture_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_render_pict_op.
# const
# XCB_RENDER_PICT_OP* = 2
# ## *
# ## @brief xcb_render_pict_op_error_t
# ##
# type
# xcb_render_pict_op_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_render_glyph_set.
# const
# XCB_RENDER_GLYPH_SET* = 3
# ## *
# ## @brief xcb_render_glyph_set_error_t
# ##
# type
# xcb_render_glyph_set_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_render_glyph.
# const
# XCB_RENDER_GLYPH* = 4
# ## *
# ## @brief xcb_render_glyph_error_t
# ##
# type
# xcb_render_glyph_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## *
# ## @brief xcb_render_directformat_t
# ##
# type
# xcb_render_directformat_t* {.bycopy.} = object
# red_shift*: uint16
# red_mask*: uint16
# green_shift*: uint16
# green_mask*: uint16
# blue_shift*: uint16
# blue_mask*: uint16
# alpha_shift*: uint16
# alpha_mask*: uint16
# ## *
# ## @brief xcb_render_directformat_iterator_t
# ##
# type
# xcb_render_directformat_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_directformat_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_pictforminfo_t
# ##
# type
# xcb_render_pictforminfo_t* {.bycopy.} = object
# id*: xcb_render_pictformat_t
# `type`*: uint8
# depth*: uint8
# pad0*: array[2, uint8]
# direct*: xcb_render_directformat_t
# colormap*: xcb_colormap_t
# ## *
# ## @brief xcb_render_pictforminfo_iterator_t
# ##
# type
# xcb_render_pictforminfo_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pictforminfo_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_pictvisual_t
# ##
# type
# xcb_render_pictvisual_t* {.bycopy.} = object
# visual*: xcb_visualid_t
# format*: xcb_render_pictformat_t
# ## *
# ## @brief xcb_render_pictvisual_iterator_t
# ##
# type
# xcb_render_pictvisual_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pictvisual_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_pictdepth_t
# ##
# type
# xcb_render_pictdepth_t* {.bycopy.} = object
# depth*: uint8
# pad0*: uint8
# num_visuals*: uint16
# pad1*: array[4, uint8]
# ## *
# ## @brief xcb_render_pictdepth_iterator_t
# ##
# type
# xcb_render_pictdepth_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pictdepth_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_pictscreen_t
# ##
# type
# xcb_render_pictscreen_t* {.bycopy.} = object
# num_depths*: uint32
# fallback*: xcb_render_pictformat_t
# ## *
# ## @brief xcb_render_pictscreen_iterator_t
# ##
# type
# xcb_render_pictscreen_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pictscreen_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_indexvalue_t
# ##
# type
# xcb_render_indexvalue_t* {.bycopy.} = object
# pixel*: uint32
# red*: uint16
# green*: uint16
# blue*: uint16
# alpha*: uint16
# ## *
# ## @brief xcb_render_indexvalue_iterator_t
# ##
# type
# xcb_render_indexvalue_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_indexvalue_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_color_t
# ##
# type
# xcb_render_color_t* {.bycopy.} = object
# red*: uint16
# green*: uint16
# blue*: uint16
# alpha*: uint16
# ## *
# ## @brief xcb_render_color_iterator_t
# ##
# type
# xcb_render_color_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_color_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_pointfix_t
# ##
# type
# xcb_render_pointfix_t* {.bycopy.} = object
# x*: xcb_render_fixed_t
# y*: xcb_render_fixed_t
# ## *
# ## @brief xcb_render_pointfix_iterator_t
# ##
# type
# xcb_render_pointfix_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_pointfix_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_linefix_t
# ##
# type
# xcb_render_linefix_t* {.bycopy.} = object
# p1*: xcb_render_pointfix_t
# p2*: xcb_render_pointfix_t
# ## *
# ## @brief xcb_render_linefix_iterator_t
# ##
# type
# xcb_render_linefix_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_linefix_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_triangle_t
# ##
# type
# xcb_render_triangle_t* {.bycopy.} = object
# p1*: xcb_render_pointfix_t
# p2*: xcb_render_pointfix_t
# p3*: xcb_render_pointfix_t
# ## *
# ## @brief xcb_render_triangle_iterator_t
# ##
# type
# xcb_render_triangle_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_triangle_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_trapezoid_t
# ##
# type
# xcb_render_trapezoid_t* {.bycopy.} = object
# top*: xcb_render_fixed_t
# bottom*: xcb_render_fixed_t
# left*: xcb_render_linefix_t
# right*: xcb_render_linefix_t
# ## *
# ## @brief xcb_render_trapezoid_iterator_t
# ##
# type
# xcb_render_trapezoid_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_trapezoid_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_glyphinfo_t
# ##
# type
# xcb_render_glyphinfo_t* {.bycopy.} = object
# width*: uint16
# height*: uint16
# x*: int16
# y*: int16
# x_off*: int16
# y_off*: int16
# ## *
# ## @brief xcb_render_glyphinfo_iterator_t
# ##
# type
# xcb_render_glyphinfo_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_glyphinfo_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_query_version_cookie_t
# ##
# type
# xcb_render_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_render_query_version.
# const
# XCB_RENDER_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_render_query_version_request_t
# ##
# type
# xcb_render_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint32
# client_minor_version*: uint32
# ## *
# ## @brief xcb_render_query_version_reply_t
# ##
# type
# xcb_render_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# pad1*: array[16, uint8]
# ## *
# ## @brief xcb_render_query_pict_formats_cookie_t
# ##
# type
# xcb_render_query_pict_formats_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_render_query_pict_formats.
# const
# XCB_RENDER_QUERY_PICT_FORMATS* = 1
# ## *
# ## @brief xcb_render_query_pict_formats_request_t
# ##
# type
# xcb_render_query_pict_formats_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_render_query_pict_formats_reply_t
# ##
# type
# xcb_render_query_pict_formats_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_formats*: uint32
# num_screens*: uint32
# num_depths*: uint32
# num_visuals*: uint32
# num_subpixel*: uint32
# pad1*: array[4, uint8]
# ## *
# ## @brief xcb_render_query_pict_index_values_cookie_t
# ##
# type
# xcb_render_query_pict_index_values_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_render_query_pict_index_values.
# const
# XCB_RENDER_QUERY_PICT_INDEX_VALUES* = 2
# ## *
# ## @brief xcb_render_query_pict_index_values_request_t
# ##
# type
# xcb_render_query_pict_index_values_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# format*: xcb_render_pictformat_t
# ## *
# ## @brief xcb_render_query_pict_index_values_reply_t
# ##
# type
# xcb_render_query_pict_index_values_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_values*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_render_create_picture_value_list_t
# ##
# type
# xcb_render_create_picture_value_list_t* {.bycopy.} = object
# repeat*: uint32
# alphamap*: xcb_render_picture_t
# alphaxorigin*: int32
# alphayorigin*: int32
# clipxorigin*: int32
# clipyorigin*: int32
# clipmask*: xcb_pixmap_t
# graphicsexposure*: uint32
# subwindowmode*: uint32
# polyedge*: uint32
# polymode*: uint32
# dither*: xcb_atom_t
# componentalpha*: uint32
# ## * Opcode for xcb_render_create_picture.
# const
# XCB_RENDER_CREATE_PICTURE* = 4
# ## *
# ## @brief xcb_render_create_picture_request_t
# ##
# type
# xcb_render_create_picture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pid*: xcb_render_picture_t
# drawable*: xcb_drawable_t
# format*: xcb_render_pictformat_t
# value_mask*: uint32
# ## *
# ## @brief xcb_render_change_picture_value_list_t
# ##
# type
# xcb_render_change_picture_value_list_t* {.bycopy.} = object
# repeat*: uint32
# alphamap*: xcb_render_picture_t
# alphaxorigin*: int32
# alphayorigin*: int32
# clipxorigin*: int32
# clipyorigin*: int32
# clipmask*: xcb_pixmap_t
# graphicsexposure*: uint32
# subwindowmode*: uint32
# polyedge*: uint32
# polymode*: uint32
# dither*: xcb_atom_t
# componentalpha*: uint32
# ## * Opcode for xcb_render_change_picture.
# const
# XCB_RENDER_CHANGE_PICTURE* = 5
# ## *
# ## @brief xcb_render_change_picture_request_t
# ##
# type
# xcb_render_change_picture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# value_mask*: uint32
# ## * Opcode for xcb_render_set_picture_clip_rectangles.
# const
# XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES* = 6
# ## *
# ## @brief xcb_render_set_picture_clip_rectangles_request_t
# ##
# type
# xcb_render_set_picture_clip_rectangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# clip_x_origin*: int16
# clip_y_origin*: int16
# ## * Opcode for xcb_render_free_picture.
# const
# XCB_RENDER_FREE_PICTURE* = 7
# ## *
# ## @brief xcb_render_free_picture_request_t
# ##
# type
# xcb_render_free_picture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# ## * Opcode for xcb_render_composite.
# const
# XCB_RENDER_COMPOSITE* = 8
# ## *
# ## @brief xcb_render_composite_request_t
# ##
# type
# xcb_render_composite_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# mask*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# src_x*: int16
# src_y*: int16
# mask_x*: int16
# mask_y*: int16
# dst_x*: int16
# dst_y*: int16
# width*: uint16
# height*: uint16
# ## * Opcode for xcb_render_trapezoids.
# const
# XCB_RENDER_TRAPEZOIDS* = 10
# ## *
# ## @brief xcb_render_trapezoids_request_t
# ##
# type
# xcb_render_trapezoids_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_triangles.
# const
# XCB_RENDER_TRIANGLES* = 11
# ## *
# ## @brief xcb_render_triangles_request_t
# ##
# type
# xcb_render_triangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_tri_strip.
# const
# XCB_RENDER_TRI_STRIP* = 12
# ## *
# ## @brief xcb_render_tri_strip_request_t
# ##
# type
# xcb_render_tri_strip_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_tri_fan.
# const
# XCB_RENDER_TRI_FAN* = 13
# ## *
# ## @brief xcb_render_tri_fan_request_t
# ##
# type
# xcb_render_tri_fan_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_create_glyph_set.
# const
# XCB_RENDER_CREATE_GLYPH_SET* = 17
# ## *
# ## @brief xcb_render_create_glyph_set_request_t
# ##
# type
# xcb_render_create_glyph_set_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# gsid*: xcb_render_glyphset_t
# format*: xcb_render_pictformat_t
# ## * Opcode for xcb_render_reference_glyph_set.
# const
# XCB_RENDER_REFERENCE_GLYPH_SET* = 18
# ## *
# ## @brief xcb_render_reference_glyph_set_request_t
# ##
# type
# xcb_render_reference_glyph_set_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# gsid*: xcb_render_glyphset_t
# existing*: xcb_render_glyphset_t
# ## * Opcode for xcb_render_free_glyph_set.
# const
# XCB_RENDER_FREE_GLYPH_SET* = 19
# ## *
# ## @brief xcb_render_free_glyph_set_request_t
# ##
# type
# xcb_render_free_glyph_set_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# glyphset*: xcb_render_glyphset_t
# ## * Opcode for xcb_render_add_glyphs.
# const
# XCB_RENDER_ADD_GLYPHS* = 20
# ## *
# ## @brief xcb_render_add_glyphs_request_t
# ##
# type
# xcb_render_add_glyphs_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# glyphset*: xcb_render_glyphset_t
# glyphs_len*: uint32
# ## * Opcode for xcb_render_free_glyphs.
# const
# XCB_RENDER_FREE_GLYPHS* = 22
# ## *
# ## @brief xcb_render_free_glyphs_request_t
# ##
# type
# xcb_render_free_glyphs_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# glyphset*: xcb_render_glyphset_t
# ## * Opcode for xcb_render_composite_glyphs_8.
# const
# XCB_RENDER_COMPOSITE_GLYPHS_8* = 23
# ## *
# ## @brief xcb_render_composite_glyphs_8_request_t
# ##
# type
# xcb_render_composite_glyphs_8_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# glyphset*: xcb_render_glyphset_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_composite_glyphs_16.
# const
# XCB_RENDER_COMPOSITE_GLYPHS_16* = 24
# ## *
# ## @brief xcb_render_composite_glyphs_16_request_t
# ##
# type
# xcb_render_composite_glyphs_16_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# glyphset*: xcb_render_glyphset_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_composite_glyphs_32.
# const
# XCB_RENDER_COMPOSITE_GLYPHS_32* = 25
# ## *
# ## @brief xcb_render_composite_glyphs_32_request_t
# ##
# type
# xcb_render_composite_glyphs_32_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# src*: xcb_render_picture_t
# dst*: xcb_render_picture_t
# mask_format*: xcb_render_pictformat_t
# glyphset*: xcb_render_glyphset_t
# src_x*: int16
# src_y*: int16
# ## * Opcode for xcb_render_fill_rectangles.
# const
# XCB_RENDER_FILL_RECTANGLES* = 26
# ## *
# ## @brief xcb_render_fill_rectangles_request_t
# ##
# type
# xcb_render_fill_rectangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# op*: uint8
# pad0*: array[3, uint8]
# dst*: xcb_render_picture_t
# color*: xcb_render_color_t
# ## * Opcode for xcb_render_create_cursor.
# const
# XCB_RENDER_CREATE_CURSOR* = 27
# ## *
# ## @brief xcb_render_create_cursor_request_t
# ##
# type
# xcb_render_create_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cid*: xcb_cursor_t
# source*: xcb_render_picture_t
# x*: uint16
# y*: uint16
# ## *
# ## @brief xcb_render_transform_t
# ##
# type
# xcb_render_transform_t* {.bycopy.} = object
# matrix11*: xcb_render_fixed_t
# matrix12*: xcb_render_fixed_t
# matrix13*: xcb_render_fixed_t
# matrix21*: xcb_render_fixed_t
# matrix22*: xcb_render_fixed_t
# matrix23*: xcb_render_fixed_t
# matrix31*: xcb_render_fixed_t
# matrix32*: xcb_render_fixed_t
# matrix33*: xcb_render_fixed_t
# ## *
# ## @brief xcb_render_transform_iterator_t
# ##
# type
# xcb_render_transform_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_transform_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_render_set_picture_transform.
# const
# XCB_RENDER_SET_PICTURE_TRANSFORM* = 28
# ## *
# ## @brief xcb_render_set_picture_transform_request_t
# ##
# type
# xcb_render_set_picture_transform_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# transform*: xcb_render_transform_t
# ## *
# ## @brief xcb_render_query_filters_cookie_t
# ##
# type
# xcb_render_query_filters_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_render_query_filters.
# const
# XCB_RENDER_QUERY_FILTERS* = 29
# ## *
# ## @brief xcb_render_query_filters_request_t
# ##
# type
# xcb_render_query_filters_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## @brief xcb_render_query_filters_reply_t
# ##
# type
# xcb_render_query_filters_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_aliases*: uint32
# num_filters*: uint32
# pad1*: array[16, uint8]
# ## * Opcode for xcb_render_set_picture_filter.
# const
# XCB_RENDER_SET_PICTURE_FILTER* = 30
# ## *
# ## @brief xcb_render_set_picture_filter_request_t
# ##
# type
# xcb_render_set_picture_filter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# filter_len*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_render_animcursorelt_t
# ##
# type
# xcb_render_animcursorelt_t* {.bycopy.} = object
# cursor*: xcb_cursor_t
# delay*: uint32
# ## *
# ## @brief xcb_render_animcursorelt_iterator_t
# ##
# type
# xcb_render_animcursorelt_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_animcursorelt_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_render_create_anim_cursor.
# const
# XCB_RENDER_CREATE_ANIM_CURSOR* = 31
# ## *
# ## @brief xcb_render_create_anim_cursor_request_t
# ##
# type
# xcb_render_create_anim_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cid*: xcb_cursor_t
# ## *
# ## @brief xcb_render_spanfix_t
# ##
# type
# xcb_render_spanfix_t* {.bycopy.} = object
# l*: xcb_render_fixed_t
# r*: xcb_render_fixed_t
# y*: xcb_render_fixed_t
# ## *
# ## @brief xcb_render_spanfix_iterator_t
# ##
# type
# xcb_render_spanfix_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_spanfix_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_render_trap_t
# ##
# type
# xcb_render_trap_t* {.bycopy.} = object
# top*: xcb_render_spanfix_t
# bot*: xcb_render_spanfix_t
# ## *
# ## @brief xcb_render_trap_iterator_t
# ##
# type
# xcb_render_trap_iterator_t* {.bycopy.} = object
# data*: ptr xcb_render_trap_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_render_add_traps.
# const
# XCB_RENDER_ADD_TRAPS* = 32
# ## *
# ## @brief xcb_render_add_traps_request_t
# ##
# type
# xcb_render_add_traps_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# x_off*: int16
# y_off*: int16
# ## * Opcode for xcb_render_create_solid_fill.
# const
# XCB_RENDER_CREATE_SOLID_FILL* = 33
# ## *
# ## @brief xcb_render_create_solid_fill_request_t
# ##
# type
# xcb_render_create_solid_fill_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# color*: xcb_render_color_t
# ## * Opcode for xcb_render_create_linear_gradient.
# const
# XCB_RENDER_CREATE_LINEAR_GRADIENT* = 34
# ## *
# ## @brief xcb_render_create_linear_gradient_request_t
# ##
# type
# xcb_render_create_linear_gradient_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# p1*: xcb_render_pointfix_t
# p2*: xcb_render_pointfix_t
# num_stops*: uint32
# ## * Opcode for xcb_render_create_radial_gradient.
# const
# XCB_RENDER_CREATE_RADIAL_GRADIENT* = 35
# ## *
# ## @brief xcb_render_create_radial_gradient_request_t
# ##
# type
# xcb_render_create_radial_gradient_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# inner*: xcb_render_pointfix_t
# outer*: xcb_render_pointfix_t
# inner_radius*: xcb_render_fixed_t
# outer_radius*: xcb_render_fixed_t
# num_stops*: uint32
# ## * Opcode for xcb_render_create_conical_gradient.
# const
# XCB_RENDER_CREATE_CONICAL_GRADIENT* = 36
# ## *
# ## @brief xcb_render_create_conical_gradient_request_t
# ##
# type
# xcb_render_create_conical_gradient_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# center*: xcb_render_pointfix_t
# angle*: xcb_render_fixed_t
# num_stops*: uint32
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_glyph_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_glyph_t)
# ##
# proc xcb_render_glyph_next*(i: ptr xcb_render_glyph_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_glyph_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_glyph_end*(i: xcb_render_glyph_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_glyphset_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_glyphset_t)
# ##
# proc xcb_render_glyphset_next*(i: ptr xcb_render_glyphset_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_glyphset_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_glyphset_end*(i: xcb_render_glyphset_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_picture_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_picture_t)
# ##
# proc xcb_render_picture_next*(i: ptr xcb_render_picture_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_picture_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_picture_end*(i: xcb_render_picture_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pictformat_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pictformat_t)
# ##
# proc xcb_render_pictformat_next*(i: ptr xcb_render_pictformat_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pictformat_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pictformat_end*(i: xcb_render_pictformat_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_fixed_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_fixed_t)
# ##
# proc xcb_render_fixed_next*(i: ptr xcb_render_fixed_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_fixed_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_fixed_end*(i: xcb_render_fixed_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_directformat_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_directformat_t)
# ##
# proc xcb_render_directformat_next*(i: ptr xcb_render_directformat_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_directformat_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_directformat_end*(i: xcb_render_directformat_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pictforminfo_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pictforminfo_t)
# ##
# proc xcb_render_pictforminfo_next*(i: ptr xcb_render_pictforminfo_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pictforminfo_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pictforminfo_end*(i: xcb_render_pictforminfo_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pictvisual_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pictvisual_t)
# ##
# proc xcb_render_pictvisual_next*(i: ptr xcb_render_pictvisual_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pictvisual_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pictvisual_end*(i: xcb_render_pictvisual_iterator_t): xcb_generic_iterator_t
# proc xcb_render_pictdepth_sizeof*(_buffer: pointer): cint
# proc xcb_render_pictdepth_visuals*(R: ptr xcb_render_pictdepth_t): ptr xcb_render_pictvisual_t
# proc xcb_render_pictdepth_visuals_length*(R: ptr xcb_render_pictdepth_t): cint
# proc xcb_render_pictdepth_visuals_iterator*(R: ptr xcb_render_pictdepth_t): xcb_render_pictvisual_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pictdepth_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pictdepth_t)
# ##
# proc xcb_render_pictdepth_next*(i: ptr xcb_render_pictdepth_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pictdepth_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pictdepth_end*(i: xcb_render_pictdepth_iterator_t): xcb_generic_iterator_t
# proc xcb_render_pictscreen_sizeof*(_buffer: pointer): cint
# proc xcb_render_pictscreen_depths_length*(R: ptr xcb_render_pictscreen_t): cint
# proc xcb_render_pictscreen_depths_iterator*(R: ptr xcb_render_pictscreen_t): xcb_render_pictdepth_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pictscreen_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pictscreen_t)
# ##
# proc xcb_render_pictscreen_next*(i: ptr xcb_render_pictscreen_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pictscreen_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pictscreen_end*(i: xcb_render_pictscreen_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_indexvalue_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_indexvalue_t)
# ##
# proc xcb_render_indexvalue_next*(i: ptr xcb_render_indexvalue_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_indexvalue_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_indexvalue_end*(i: xcb_render_indexvalue_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_color_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_color_t)
# ##
# proc xcb_render_color_next*(i: ptr xcb_render_color_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_color_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_color_end*(i: xcb_render_color_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_pointfix_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_pointfix_t)
# ##
# proc xcb_render_pointfix_next*(i: ptr xcb_render_pointfix_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_pointfix_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_pointfix_end*(i: xcb_render_pointfix_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_linefix_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_linefix_t)
# ##
# proc xcb_render_linefix_next*(i: ptr xcb_render_linefix_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_linefix_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_linefix_end*(i: xcb_render_linefix_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_triangle_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_triangle_t)
# ##
# proc xcb_render_triangle_next*(i: ptr xcb_render_triangle_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_triangle_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_triangle_end*(i: xcb_render_triangle_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_trapezoid_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_trapezoid_t)
# ##
# proc xcb_render_trapezoid_next*(i: ptr xcb_render_trapezoid_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_trapezoid_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_trapezoid_end*(i: xcb_render_trapezoid_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_glyphinfo_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_glyphinfo_t)
# ##
# proc xcb_render_glyphinfo_next*(i: ptr xcb_render_glyphinfo_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_glyphinfo_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_glyphinfo_end*(i: xcb_render_glyphinfo_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_render_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_render_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_render_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_render_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_render_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_version_reply_t
# proc xcb_render_query_pict_formats_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_query_pict_formats*(c: ptr xcb_connection_t): xcb_render_query_pict_formats_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_render_query_pict_formats_unchecked*(c: ptr xcb_connection_t): xcb_render_query_pict_formats_cookie_t
# proc xcb_render_query_pict_formats_formats*(
# R: ptr xcb_render_query_pict_formats_reply_t): ptr xcb_render_pictforminfo_t
# proc xcb_render_query_pict_formats_formats_length*(
# R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_formats_iterator*(
# R: ptr xcb_render_query_pict_formats_reply_t): xcb_render_pictforminfo_iterator_t
# proc xcb_render_query_pict_formats_screens_length*(
# R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_screens_iterator*(
# R: ptr xcb_render_query_pict_formats_reply_t): xcb_render_pictscreen_iterator_t
# proc xcb_render_query_pict_formats_subpixels*(
# R: ptr xcb_render_query_pict_formats_reply_t): ptr uint32
# proc xcb_render_query_pict_formats_subpixels_length*(
# R: ptr xcb_render_query_pict_formats_reply_t): cint
# proc xcb_render_query_pict_formats_subpixels_end*(
# R: ptr xcb_render_query_pict_formats_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_render_query_pict_formats_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_render_query_pict_formats_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_pict_formats_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_pict_formats_reply_t
# proc xcb_render_query_pict_index_values_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_query_pict_index_values*(c: ptr xcb_connection_t;
# format: xcb_render_pictformat_t): xcb_render_query_pict_index_values_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_render_query_pict_index_values_unchecked*(c: ptr xcb_connection_t;
# format: xcb_render_pictformat_t): xcb_render_query_pict_index_values_cookie_t
# proc xcb_render_query_pict_index_values_values*(
# R: ptr xcb_render_query_pict_index_values_reply_t): ptr xcb_render_indexvalue_t
# proc xcb_render_query_pict_index_values_values_length*(
# R: ptr xcb_render_query_pict_index_values_reply_t): cint
# proc xcb_render_query_pict_index_values_values_iterator*(
# R: ptr xcb_render_query_pict_index_values_reply_t): xcb_render_indexvalue_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_render_query_pict_index_values_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_render_query_pict_index_values_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_pict_index_values_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_pict_index_values_reply_t
# proc xcb_render_create_picture_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_render_create_picture_value_list_t): cint
# proc xcb_render_create_picture_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_render_create_picture_value_list_t): cint
# proc xcb_render_create_picture_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_render_create_picture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_picture_checked*(c: ptr xcb_connection_t;
# pid: xcb_render_picture_t;
# drawable: xcb_drawable_t;
# format: xcb_render_pictformat_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_picture*(c: ptr xcb_connection_t; pid: xcb_render_picture_t;
# drawable: xcb_drawable_t;
# format: xcb_render_pictformat_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_picture_aux_checked*(c: ptr xcb_connection_t;
# pid: xcb_render_picture_t; drawable: xcb_drawable_t;
# format: xcb_render_pictformat_t; value_mask: uint32;
# value_list: ptr xcb_render_create_picture_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_picture_aux*(c: ptr xcb_connection_t;
# pid: xcb_render_picture_t;
# drawable: xcb_drawable_t;
# format: xcb_render_pictformat_t;
# value_mask: uint32; value_list: ptr xcb_render_create_picture_value_list_t): xcb_void_cookie_t
# proc xcb_render_create_picture_value_list*(
# R: ptr xcb_render_create_picture_request_t): pointer
# proc xcb_render_change_picture_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_render_change_picture_value_list_t): cint
# proc xcb_render_change_picture_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_render_change_picture_value_list_t): cint
# proc xcb_render_change_picture_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_render_change_picture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_change_picture_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_change_picture*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_change_picture_aux_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; value_mask: uint32;
# value_list: ptr xcb_render_change_picture_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_change_picture_aux*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# value_mask: uint32; value_list: ptr xcb_render_change_picture_value_list_t): xcb_void_cookie_t
# proc xcb_render_change_picture_value_list*(
# R: ptr xcb_render_change_picture_request_t): pointer
# proc xcb_render_set_picture_clip_rectangles_sizeof*(_buffer: pointer;
# rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_set_picture_clip_rectangles_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; clip_x_origin: int16; clip_y_origin: int16;
# rectangles_len: uint32; rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_set_picture_clip_rectangles*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; clip_x_origin: int16; clip_y_origin: int16;
# rectangles_len: uint32; rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_render_set_picture_clip_rectangles_rectangles*(
# R: ptr xcb_render_set_picture_clip_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_render_set_picture_clip_rectangles_rectangles_length*(
# R: ptr xcb_render_set_picture_clip_rectangles_request_t): cint
# proc xcb_render_set_picture_clip_rectangles_rectangles_iterator*(
# R: ptr xcb_render_set_picture_clip_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_free_picture_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_free_picture*(c: ptr xcb_connection_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_composite_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# mask: xcb_render_picture_t;
# dst: xcb_render_picture_t; src_x: int16;
# src_y: int16; mask_x: int16; mask_y: int16;
# dst_x: int16; dst_y: int16; width: uint16;
# height: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_composite*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; mask: xcb_render_picture_t;
# dst: xcb_render_picture_t; src_x: int16; src_y: int16;
# mask_x: int16; mask_y: int16; dst_x: int16;
# dst_y: int16; width: uint16; height: uint16): xcb_void_cookie_t
# proc xcb_render_trapezoids_sizeof*(_buffer: pointer; traps_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_trapezoids_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# src_x: int16; src_y: int16;
# traps_len: uint32;
# traps: ptr xcb_render_trapezoid_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_trapezoids*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; src_x: int16;
# src_y: int16; traps_len: uint32;
# traps: ptr xcb_render_trapezoid_t): xcb_void_cookie_t
# proc xcb_render_trapezoids_traps*(R: ptr xcb_render_trapezoids_request_t): ptr xcb_render_trapezoid_t
# proc xcb_render_trapezoids_traps_length*(R: ptr xcb_render_trapezoids_request_t): cint
# proc xcb_render_trapezoids_traps_iterator*(R: ptr xcb_render_trapezoids_request_t): xcb_render_trapezoid_iterator_t
# proc xcb_render_triangles_sizeof*(_buffer: pointer; triangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_triangles_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# src_x: int16; src_y: int16;
# triangles_len: uint32;
# triangles: ptr xcb_render_triangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_triangles*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; src_x: int16;
# src_y: int16; triangles_len: uint32;
# triangles: ptr xcb_render_triangle_t): xcb_void_cookie_t
# proc xcb_render_triangles_triangles*(R: ptr xcb_render_triangles_request_t): ptr xcb_render_triangle_t
# proc xcb_render_triangles_triangles_length*(R: ptr xcb_render_triangles_request_t): cint
# proc xcb_render_triangles_triangles_iterator*(
# R: ptr xcb_render_triangles_request_t): xcb_render_triangle_iterator_t
# proc xcb_render_tri_strip_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_tri_strip_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# src_x: int16; src_y: int16;
# points_len: uint32;
# points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_tri_strip*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; src_x: int16;
# src_y: int16; points_len: uint32;
# points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# proc xcb_render_tri_strip_points*(R: ptr xcb_render_tri_strip_request_t): ptr xcb_render_pointfix_t
# proc xcb_render_tri_strip_points_length*(R: ptr xcb_render_tri_strip_request_t): cint
# proc xcb_render_tri_strip_points_iterator*(R: ptr xcb_render_tri_strip_request_t): xcb_render_pointfix_iterator_t
# proc xcb_render_tri_fan_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_tri_fan_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# src_x: int16; src_y: int16;
# points_len: uint32;
# points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_tri_fan*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; src_x: int16;
# src_y: int16; points_len: uint32;
# points: ptr xcb_render_pointfix_t): xcb_void_cookie_t
# proc xcb_render_tri_fan_points*(R: ptr xcb_render_tri_fan_request_t): ptr xcb_render_pointfix_t
# proc xcb_render_tri_fan_points_length*(R: ptr xcb_render_tri_fan_request_t): cint
# proc xcb_render_tri_fan_points_iterator*(R: ptr xcb_render_tri_fan_request_t): xcb_render_pointfix_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_glyph_set_checked*(c: ptr xcb_connection_t;
# gsid: xcb_render_glyphset_t; format: xcb_render_pictformat_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_glyph_set*(c: ptr xcb_connection_t;
# gsid: xcb_render_glyphset_t;
# format: xcb_render_pictformat_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_reference_glyph_set_checked*(c: ptr xcb_connection_t;
# gsid: xcb_render_glyphset_t; existing: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_reference_glyph_set*(c: ptr xcb_connection_t;
# gsid: xcb_render_glyphset_t;
# existing: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_free_glyph_set_checked*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_free_glyph_set*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t): xcb_void_cookie_t
# proc xcb_render_add_glyphs_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_add_glyphs_checked*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t;
# glyphs_len: uint32; glyphids: ptr uint32;
# glyphs: ptr xcb_render_glyphinfo_t;
# data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_add_glyphs*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t; glyphs_len: uint32;
# glyphids: ptr uint32;
# glyphs: ptr xcb_render_glyphinfo_t; data_len: uint32;
# data: ptr uint8): xcb_void_cookie_t
# proc xcb_render_add_glyphs_glyphids*(R: ptr xcb_render_add_glyphs_request_t): ptr uint32
# proc xcb_render_add_glyphs_glyphids_length*(
# R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_glyphids_end*(R: ptr xcb_render_add_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_add_glyphs_glyphs*(R: ptr xcb_render_add_glyphs_request_t): ptr xcb_render_glyphinfo_t
# proc xcb_render_add_glyphs_glyphs_length*(R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_glyphs_iterator*(
# R: ptr xcb_render_add_glyphs_request_t): xcb_render_glyphinfo_iterator_t
# proc xcb_render_add_glyphs_data*(R: ptr xcb_render_add_glyphs_request_t): ptr uint8
# proc xcb_render_add_glyphs_data_length*(R: ptr xcb_render_add_glyphs_request_t): cint
# proc xcb_render_add_glyphs_data_end*(R: ptr xcb_render_add_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_free_glyphs_sizeof*(_buffer: pointer; glyphs_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_free_glyphs_checked*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t;
# glyphs_len: uint32;
# glyphs: ptr xcb_render_glyph_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_free_glyphs*(c: ptr xcb_connection_t;
# glyphset: xcb_render_glyphset_t; glyphs_len: uint32;
# glyphs: ptr xcb_render_glyph_t): xcb_void_cookie_t
# proc xcb_render_free_glyphs_glyphs*(R: ptr xcb_render_free_glyphs_request_t): ptr xcb_render_glyph_t
# proc xcb_render_free_glyphs_glyphs_length*(
# R: ptr xcb_render_free_glyphs_request_t): cint
# proc xcb_render_free_glyphs_glyphs_end*(R: ptr xcb_render_free_glyphs_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_8_sizeof*(_buffer: pointer;
# glyphcmds_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_composite_glyphs_8_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_composite_glyphs_8*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16;
# glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_8_glyphcmds*(
# R: ptr xcb_render_composite_glyphs_8_request_t): ptr uint8
# proc xcb_render_composite_glyphs_8_glyphcmds_length*(
# R: ptr xcb_render_composite_glyphs_8_request_t): cint
# proc xcb_render_composite_glyphs_8_glyphcmds_end*(
# R: ptr xcb_render_composite_glyphs_8_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_16_sizeof*(_buffer: pointer;
# glyphcmds_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_composite_glyphs_16_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_composite_glyphs_16*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16;
# glyphcmds_len: uint32;
# glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_16_glyphcmds*(
# R: ptr xcb_render_composite_glyphs_16_request_t): ptr uint8
# proc xcb_render_composite_glyphs_16_glyphcmds_length*(
# R: ptr xcb_render_composite_glyphs_16_request_t): cint
# proc xcb_render_composite_glyphs_16_glyphcmds_end*(
# R: ptr xcb_render_composite_glyphs_16_request_t): xcb_generic_iterator_t
# proc xcb_render_composite_glyphs_32_sizeof*(_buffer: pointer;
# glyphcmds_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_composite_glyphs_32_checked*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16; glyphcmds_len: uint32; glyphcmds: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_composite_glyphs_32*(c: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# glyphset: xcb_render_glyphset_t;
# src_x: int16; src_y: int16;
# glyphcmds_len: uint32;
# glyphcmds: ptr uint8): xcb_void_cookie_t
# proc xcb_render_composite_glyphs_32_glyphcmds*(
# R: ptr xcb_render_composite_glyphs_32_request_t): ptr uint8
# proc xcb_render_composite_glyphs_32_glyphcmds_length*(
# R: ptr xcb_render_composite_glyphs_32_request_t): cint
# proc xcb_render_composite_glyphs_32_glyphcmds_end*(
# R: ptr xcb_render_composite_glyphs_32_request_t): xcb_generic_iterator_t
# proc xcb_render_fill_rectangles_sizeof*(_buffer: pointer; rects_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_fill_rectangles_checked*(c: ptr xcb_connection_t; op: uint8;
# dst: xcb_render_picture_t;
# color: xcb_render_color_t;
# rects_len: uint32;
# rects: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_fill_rectangles*(c: ptr xcb_connection_t; op: uint8;
# dst: xcb_render_picture_t;
# color: xcb_render_color_t; rects_len: uint32;
# rects: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_render_fill_rectangles_rects*(R: ptr xcb_render_fill_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_render_fill_rectangles_rects_length*(
# R: ptr xcb_render_fill_rectangles_request_t): cint
# proc xcb_render_fill_rectangles_rects_iterator*(
# R: ptr xcb_render_fill_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source: xcb_render_picture_t; x: uint16;
# y: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source: xcb_render_picture_t; x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_transform_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_transform_t)
# ##
# proc xcb_render_transform_next*(i: ptr xcb_render_transform_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_transform_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_transform_end*(i: xcb_render_transform_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_set_picture_transform_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; transform: xcb_render_transform_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_set_picture_transform*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# transform: xcb_render_transform_t): xcb_void_cookie_t
# proc xcb_render_query_filters_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_query_filters*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_render_query_filters_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_render_query_filters_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_render_query_filters_cookie_t
# proc xcb_render_query_filters_aliases*(R: ptr xcb_render_query_filters_reply_t): ptr uint16
# proc xcb_render_query_filters_aliases_length*(
# R: ptr xcb_render_query_filters_reply_t): cint
# proc xcb_render_query_filters_aliases_end*(
# R: ptr xcb_render_query_filters_reply_t): xcb_generic_iterator_t
# proc xcb_render_query_filters_filters_length*(
# R: ptr xcb_render_query_filters_reply_t): cint
# proc xcb_render_query_filters_filters_iterator*(
# R: ptr xcb_render_query_filters_reply_t): xcb_str_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_render_query_filters_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_render_query_filters_reply*(c: ptr xcb_connection_t; cookie: xcb_render_query_filters_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_render_query_filters_reply_t
# proc xcb_render_set_picture_filter_sizeof*(_buffer: pointer; values_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_set_picture_filter_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; filter_len: uint16; filter: cstring;
# values_len: uint32; values: ptr xcb_render_fixed_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_set_picture_filter*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# filter_len: uint16; filter: cstring;
# values_len: uint32;
# values: ptr xcb_render_fixed_t): xcb_void_cookie_t
# proc xcb_render_set_picture_filter_filter*(
# R: ptr xcb_render_set_picture_filter_request_t): cstring
# proc xcb_render_set_picture_filter_filter_length*(
# R: ptr xcb_render_set_picture_filter_request_t): cint
# proc xcb_render_set_picture_filter_filter_end*(
# R: ptr xcb_render_set_picture_filter_request_t): xcb_generic_iterator_t
# proc xcb_render_set_picture_filter_values*(
# R: ptr xcb_render_set_picture_filter_request_t): ptr xcb_render_fixed_t
# proc xcb_render_set_picture_filter_values_length*(
# R: ptr xcb_render_set_picture_filter_request_t): cint
# proc xcb_render_set_picture_filter_values_end*(
# R: ptr xcb_render_set_picture_filter_request_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_animcursorelt_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_animcursorelt_t)
# ##
# proc xcb_render_animcursorelt_next*(i: ptr xcb_render_animcursorelt_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_animcursorelt_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_animcursorelt_end*(i: xcb_render_animcursorelt_iterator_t): xcb_generic_iterator_t
# proc xcb_render_create_anim_cursor_sizeof*(_buffer: pointer; cursors_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_anim_cursor_checked*(c: ptr xcb_connection_t;
# cid: xcb_cursor_t; cursors_len: uint32;
# cursors: ptr xcb_render_animcursorelt_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_anim_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# cursors_len: uint32;
# cursors: ptr xcb_render_animcursorelt_t): xcb_void_cookie_t
# proc xcb_render_create_anim_cursor_cursors*(
# R: ptr xcb_render_create_anim_cursor_request_t): ptr xcb_render_animcursorelt_t
# proc xcb_render_create_anim_cursor_cursors_length*(
# R: ptr xcb_render_create_anim_cursor_request_t): cint
# proc xcb_render_create_anim_cursor_cursors_iterator*(
# R: ptr xcb_render_create_anim_cursor_request_t): xcb_render_animcursorelt_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_spanfix_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_spanfix_t)
# ##
# proc xcb_render_spanfix_next*(i: ptr xcb_render_spanfix_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_spanfix_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_spanfix_end*(i: xcb_render_spanfix_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_render_trap_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_render_trap_t)
# ##
# proc xcb_render_trap_next*(i: ptr xcb_render_trap_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_render_trap_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_render_trap_end*(i: xcb_render_trap_iterator_t): xcb_generic_iterator_t
# proc xcb_render_add_traps_sizeof*(_buffer: pointer; traps_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_add_traps_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; x_off: int16;
# y_off: int16; traps_len: uint32;
# traps: ptr xcb_render_trap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_add_traps*(c: ptr xcb_connection_t; picture: xcb_render_picture_t;
# x_off: int16; y_off: int16; traps_len: uint32;
# traps: ptr xcb_render_trap_t): xcb_void_cookie_t
# proc xcb_render_add_traps_traps*(R: ptr xcb_render_add_traps_request_t): ptr xcb_render_trap_t
# proc xcb_render_add_traps_traps_length*(R: ptr xcb_render_add_traps_request_t): cint
# proc xcb_render_add_traps_traps_iterator*(R: ptr xcb_render_add_traps_request_t): xcb_render_trap_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_solid_fill_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; color: xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_solid_fill*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# color: xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_linear_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_linear_gradient_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; p1: xcb_render_pointfix_t;
# p2: xcb_render_pointfix_t; num_stops: uint32; stops: ptr xcb_render_fixed_t;
# colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_linear_gradient*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# p1: xcb_render_pointfix_t;
# p2: xcb_render_pointfix_t;
# num_stops: uint32;
# stops: ptr xcb_render_fixed_t;
# colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_linear_gradient_stops*(
# R: ptr xcb_render_create_linear_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_linear_gradient_stops_length*(
# R: ptr xcb_render_create_linear_gradient_request_t): cint
# proc xcb_render_create_linear_gradient_stops_end*(
# R: ptr xcb_render_create_linear_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_linear_gradient_colors*(
# R: ptr xcb_render_create_linear_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_linear_gradient_colors_length*(
# R: ptr xcb_render_create_linear_gradient_request_t): cint
# proc xcb_render_create_linear_gradient_colors_iterator*(
# R: ptr xcb_render_create_linear_gradient_request_t): xcb_render_color_iterator_t
# proc xcb_render_create_radial_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_radial_gradient_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; inner: xcb_render_pointfix_t;
# outer: xcb_render_pointfix_t; inner_radius: xcb_render_fixed_t;
# outer_radius: xcb_render_fixed_t; num_stops: uint32;
# stops: ptr xcb_render_fixed_t; colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_radial_gradient*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# inner: xcb_render_pointfix_t;
# outer: xcb_render_pointfix_t;
# inner_radius: xcb_render_fixed_t;
# outer_radius: xcb_render_fixed_t;
# num_stops: uint32;
# stops: ptr xcb_render_fixed_t;
# colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_radial_gradient_stops*(
# R: ptr xcb_render_create_radial_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_radial_gradient_stops_length*(
# R: ptr xcb_render_create_radial_gradient_request_t): cint
# proc xcb_render_create_radial_gradient_stops_end*(
# R: ptr xcb_render_create_radial_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_radial_gradient_colors*(
# R: ptr xcb_render_create_radial_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_radial_gradient_colors_length*(
# R: ptr xcb_render_create_radial_gradient_request_t): cint
# proc xcb_render_create_radial_gradient_colors_iterator*(
# R: ptr xcb_render_create_radial_gradient_request_t): xcb_render_color_iterator_t
# proc xcb_render_create_conical_gradient_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_render_create_conical_gradient_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; center: xcb_render_pointfix_t;
# angle: xcb_render_fixed_t; num_stops: uint32; stops: ptr xcb_render_fixed_t;
# colors: ptr xcb_render_color_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_render_create_conical_gradient*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# center: xcb_render_pointfix_t;
# angle: xcb_render_fixed_t;
# num_stops: uint32;
# stops: ptr xcb_render_fixed_t;
# colors: ptr xcb_render_color_t): xcb_void_cookie_t
# proc xcb_render_create_conical_gradient_stops*(
# R: ptr xcb_render_create_conical_gradient_request_t): ptr xcb_render_fixed_t
# proc xcb_render_create_conical_gradient_stops_length*(
# R: ptr xcb_render_create_conical_gradient_request_t): cint
# proc xcb_render_create_conical_gradient_stops_end*(
# R: ptr xcb_render_create_conical_gradient_request_t): xcb_generic_iterator_t
# proc xcb_render_create_conical_gradient_colors*(
# R: ptr xcb_render_create_conical_gradient_request_t): ptr xcb_render_color_t
# proc xcb_render_create_conical_gradient_colors_length*(
# R: ptr xcb_render_create_conical_gradient_request_t): cint
# proc xcb_render_create_conical_gradient_colors_iterator*(
# R: ptr xcb_render_create_conical_gradient_request_t): xcb_render_color_iterator_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from res.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Res_API XCB Res API
# ## @brief Res XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_RES_MAJOR_VERSION* = 1
# XCB_RES_MINOR_VERSION* = 2
# var xcb_res_id*: xcb_extension_t
# ## *
# ## @brief xcb_res_client_t
# ##
# type
# xcb_res_client_t* {.bycopy.} = object
# resource_base*: uint32
# resource_mask*: uint32
# ## *
# ## @brief xcb_res_client_iterator_t
# ##
# type
# xcb_res_client_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_client_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_type_t
# ##
# type
# xcb_res_type_t* {.bycopy.} = object
# resource_type*: xcb_atom_t
# count*: uint32
# ## *
# ## @brief xcb_res_type_iterator_t
# ##
# type
# xcb_res_type_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_type_t
# rem*: cint
# index*: cint
# xcb_res_client_id_mask_t* = enum
# XCB_RES_CLIENT_ID_MASK_CLIENT_XID = 1,
# XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID = 2
# ## *
# ## @brief xcb_res_client_id_spec_t
# ##
# type
# xcb_res_client_id_spec_t* {.bycopy.} = object
# client*: uint32
# mask*: uint32
# ## *
# ## @brief xcb_res_client_id_spec_iterator_t
# ##
# type
# xcb_res_client_id_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_client_id_spec_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_client_id_value_t
# ##
# type
# xcb_res_client_id_value_t* {.bycopy.} = object
# spec*: xcb_res_client_id_spec_t
# length*: uint32
# ## *
# ## @brief xcb_res_client_id_value_iterator_t
# ##
# type
# xcb_res_client_id_value_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_client_id_value_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_resource_id_spec_t
# ##
# type
# xcb_res_resource_id_spec_t* {.bycopy.} = object
# resource*: uint32
# `type`*: uint32
# ## *
# ## @brief xcb_res_resource_id_spec_iterator_t
# ##
# type
# xcb_res_resource_id_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_resource_id_spec_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_resource_size_spec_t
# ##
# type
# xcb_res_resource_size_spec_t* {.bycopy.} = object
# spec*: xcb_res_resource_id_spec_t
# bytes*: uint32
# ref_count*: uint32
# use_count*: uint32
# ## *
# ## @brief xcb_res_resource_size_spec_iterator_t
# ##
# type
# xcb_res_resource_size_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_resource_size_spec_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_resource_size_value_t
# ##
# type
# xcb_res_resource_size_value_t* {.bycopy.} = object
# size*: xcb_res_resource_size_spec_t
# num_cross_references*: uint32
# ## *
# ## @brief xcb_res_resource_size_value_iterator_t
# ##
# type
# xcb_res_resource_size_value_iterator_t* {.bycopy.} = object
# data*: ptr xcb_res_resource_size_value_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_res_query_version_cookie_t
# ##
# type
# xcb_res_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_version.
# const
# XCB_RES_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_res_query_version_request_t
# ##
# type
# xcb_res_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major*: uint8
# client_minor*: uint8
# ## *
# ## @brief xcb_res_query_version_reply_t
# ##
# type
# xcb_res_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major*: uint16
# server_minor*: uint16
# ## *
# ## @brief xcb_res_query_clients_cookie_t
# ##
# type
# xcb_res_query_clients_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_clients.
# const
# XCB_RES_QUERY_CLIENTS* = 1
# ## *
# ## @brief xcb_res_query_clients_request_t
# ##
# type
# xcb_res_query_clients_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_res_query_clients_reply_t
# ##
# type
# xcb_res_query_clients_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_clients*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_res_query_client_resources_cookie_t
# ##
# type
# xcb_res_query_client_resources_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_client_resources.
# const
# XCB_RES_QUERY_CLIENT_RESOURCES* = 2
# ## *
# ## @brief xcb_res_query_client_resources_request_t
# ##
# type
# xcb_res_query_client_resources_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# xid*: uint32
# ## *
# ## @brief xcb_res_query_client_resources_reply_t
# ##
# type
# xcb_res_query_client_resources_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_types*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_res_query_client_pixmap_bytes_cookie_t
# ##
# type
# xcb_res_query_client_pixmap_bytes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_client_pixmap_bytes.
# const
# XCB_RES_QUERY_CLIENT_PIXMAP_BYTES* = 3
# ## *
# ## @brief xcb_res_query_client_pixmap_bytes_request_t
# ##
# type
# xcb_res_query_client_pixmap_bytes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# xid*: uint32
# ## *
# ## @brief xcb_res_query_client_pixmap_bytes_reply_t
# ##
# type
# xcb_res_query_client_pixmap_bytes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# bytes*: uint32
# bytes_overflow*: uint32
# ## *
# ## @brief xcb_res_query_client_ids_cookie_t
# ##
# type
# xcb_res_query_client_ids_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_client_ids.
# const
# XCB_RES_QUERY_CLIENT_IDS* = 4
# ## *
# ## @brief xcb_res_query_client_ids_request_t
# ##
# type
# xcb_res_query_client_ids_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# num_specs*: uint32
# ## *
# ## @brief xcb_res_query_client_ids_reply_t
# ##
# type
# xcb_res_query_client_ids_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_ids*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_res_query_resource_bytes_cookie_t
# ##
# type
# xcb_res_query_resource_bytes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_res_query_resource_bytes.
# const
# XCB_RES_QUERY_RESOURCE_BYTES* = 5
# ## *
# ## @brief xcb_res_query_resource_bytes_request_t
# ##
# type
# xcb_res_query_resource_bytes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client*: uint32
# num_specs*: uint32
# ## *
# ## @brief xcb_res_query_resource_bytes_reply_t
# ##
# type
# xcb_res_query_resource_bytes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_sizes*: uint32
# pad1*: array[20, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_client_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_client_t)
# ##
# proc xcb_res_client_next*(i: ptr xcb_res_client_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_client_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_client_end*(i: xcb_res_client_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_type_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_type_t)
# ##
# proc xcb_res_type_next*(i: ptr xcb_res_type_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_type_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_type_end*(i: xcb_res_type_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_client_id_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_client_id_spec_t)
# ##
# proc xcb_res_client_id_spec_next*(i: ptr xcb_res_client_id_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_client_id_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_client_id_spec_end*(i: xcb_res_client_id_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_res_client_id_value_sizeof*(_buffer: pointer): cint
# proc xcb_res_client_id_value_value*(R: ptr xcb_res_client_id_value_t): ptr uint32
# proc xcb_res_client_id_value_value_length*(R: ptr xcb_res_client_id_value_t): cint
# proc xcb_res_client_id_value_value_end*(R: ptr xcb_res_client_id_value_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_client_id_value_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_client_id_value_t)
# ##
# proc xcb_res_client_id_value_next*(i: ptr xcb_res_client_id_value_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_client_id_value_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_client_id_value_end*(i: xcb_res_client_id_value_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_resource_id_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_resource_id_spec_t)
# ##
# proc xcb_res_resource_id_spec_next*(i: ptr xcb_res_resource_id_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_resource_id_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_resource_id_spec_end*(i: xcb_res_resource_id_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_resource_size_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_resource_size_spec_t)
# ##
# proc xcb_res_resource_size_spec_next*(i: ptr xcb_res_resource_size_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_resource_size_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_resource_size_spec_end*(i: xcb_res_resource_size_spec_iterator_t): xcb_generic_iterator_t
# proc xcb_res_resource_size_value_sizeof*(_buffer: pointer): cint
# proc xcb_res_resource_size_value_cross_references*(
# R: ptr xcb_res_resource_size_value_t): ptr xcb_res_resource_size_spec_t
# proc xcb_res_resource_size_value_cross_references_length*(
# R: ptr xcb_res_resource_size_value_t): cint
# proc xcb_res_resource_size_value_cross_references_iterator*(
# R: ptr xcb_res_resource_size_value_t): xcb_res_resource_size_spec_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_res_resource_size_value_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_res_resource_size_value_t)
# ##
# proc xcb_res_resource_size_value_next*(i: ptr xcb_res_resource_size_value_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_res_resource_size_value_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_res_resource_size_value_end*(i: xcb_res_resource_size_value_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_version*(c: ptr xcb_connection_t; client_major: uint8;
# client_minor: uint8): xcb_res_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major: uint8; client_minor: uint8): xcb_res_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_version_reply_t
# proc xcb_res_query_clients_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_clients*(c: ptr xcb_connection_t): xcb_res_query_clients_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_clients_unchecked*(c: ptr xcb_connection_t): xcb_res_query_clients_cookie_t
# proc xcb_res_query_clients_clients*(R: ptr xcb_res_query_clients_reply_t): ptr xcb_res_client_t
# proc xcb_res_query_clients_clients_length*(R: ptr xcb_res_query_clients_reply_t): cint
# proc xcb_res_query_clients_clients_iterator*(R: ptr xcb_res_query_clients_reply_t): xcb_res_client_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_clients_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_clients_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_clients_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_clients_reply_t
# proc xcb_res_query_client_resources_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_client_resources*(c: ptr xcb_connection_t; xid: uint32): xcb_res_query_client_resources_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_client_resources_unchecked*(c: ptr xcb_connection_t;
# xid: uint32): xcb_res_query_client_resources_cookie_t
# proc xcb_res_query_client_resources_types*(
# R: ptr xcb_res_query_client_resources_reply_t): ptr xcb_res_type_t
# proc xcb_res_query_client_resources_types_length*(
# R: ptr xcb_res_query_client_resources_reply_t): cint
# proc xcb_res_query_client_resources_types_iterator*(
# R: ptr xcb_res_query_client_resources_reply_t): xcb_res_type_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_client_resources_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_client_resources_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_resources_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_resources_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_client_pixmap_bytes*(c: ptr xcb_connection_t; xid: uint32): xcb_res_query_client_pixmap_bytes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_client_pixmap_bytes_unchecked*(c: ptr xcb_connection_t;
# xid: uint32): xcb_res_query_client_pixmap_bytes_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_client_pixmap_bytes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_client_pixmap_bytes_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_pixmap_bytes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_pixmap_bytes_reply_t
# proc xcb_res_query_client_ids_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_client_ids*(c: ptr xcb_connection_t; num_specs: uint32;
# specs: ptr xcb_res_client_id_spec_t): xcb_res_query_client_ids_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_client_ids_unchecked*(c: ptr xcb_connection_t;
# num_specs: uint32;
# specs: ptr xcb_res_client_id_spec_t): xcb_res_query_client_ids_cookie_t
# proc xcb_res_query_client_ids_ids_length*(R: ptr xcb_res_query_client_ids_reply_t): cint
# proc xcb_res_query_client_ids_ids_iterator*(
# R: ptr xcb_res_query_client_ids_reply_t): xcb_res_client_id_value_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_client_ids_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_client_ids_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_client_ids_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_client_ids_reply_t
# proc xcb_res_query_resource_bytes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_res_query_resource_bytes*(c: ptr xcb_connection_t; client: uint32;
# num_specs: uint32;
# specs: ptr xcb_res_resource_id_spec_t): xcb_res_query_resource_bytes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_res_query_resource_bytes_unchecked*(c: ptr xcb_connection_t;
# client: uint32; num_specs: uint32; specs: ptr xcb_res_resource_id_spec_t): xcb_res_query_resource_bytes_cookie_t
# proc xcb_res_query_resource_bytes_sizes_length*(
# R: ptr xcb_res_query_resource_bytes_reply_t): cint
# proc xcb_res_query_resource_bytes_sizes_iterator*(
# R: ptr xcb_res_query_resource_bytes_reply_t): xcb_res_resource_size_value_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_res_query_resource_bytes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_res_query_resource_bytes_reply*(c: ptr xcb_connection_t; cookie: xcb_res_query_resource_bytes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_res_query_resource_bytes_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from screensaver.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_ScreenSaver_API XCB ScreenSaver API
# ## @brief ScreenSaver XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_SCREENSAVER_MAJOR_VERSION* = 1
# XCB_SCREENSAVER_MINOR_VERSION* = 1
# var xcb_screensaver_id*: xcb_extension_t
# type
# xcb_screensaver_kind_t* = enum
# XCB_SCREENSAVER_KIND_BLANKED = 0, XCB_SCREENSAVER_KIND_INTERNAL = 1,
# XCB_SCREENSAVER_KIND_EXTERNAL = 2
# xcb_screensaver_event_t* = enum
# XCB_SCREENSAVER_EVENT_NOTIFY_MASK = 1, XCB_SCREENSAVER_EVENT_CYCLE_MASK = 2
# xcb_screensaver_state_t* = enum
# XCB_SCREENSAVER_STATE_OFF = 0, XCB_SCREENSAVER_STATE_ON = 1,
# XCB_SCREENSAVER_STATE_CYCLE = 2, XCB_SCREENSAVER_STATE_DISABLED = 3
# ## *
# ## @brief xcb_screensaver_query_version_cookie_t
# ##
# type
# xcb_screensaver_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_screensaver_query_version.
# const
# XCB_SCREENSAVER_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_screensaver_query_version_request_t
# ##
# type
# xcb_screensaver_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint8
# client_minor_version*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_screensaver_query_version_reply_t
# ##
# type
# xcb_screensaver_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major_version*: uint16
# server_minor_version*: uint16
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_screensaver_query_info_cookie_t
# ##
# type
# xcb_screensaver_query_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_screensaver_query_info.
# const
# XCB_SCREENSAVER_QUERY_INFO* = 1
# ## *
# ## @brief xcb_screensaver_query_info_request_t
# ##
# type
# xcb_screensaver_query_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## @brief xcb_screensaver_query_info_reply_t
# ##
# type
# xcb_screensaver_query_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# state*: uint8
# sequence*: uint16
# length*: uint32
# saver_window*: xcb_window_t
# ms_until_server*: uint32
# ms_since_user_input*: uint32
# event_mask*: uint32
# kind*: uint8
# pad0*: array[7, uint8]
# ## * Opcode for xcb_screensaver_select_input.
# const
# XCB_SCREENSAVER_SELECT_INPUT* = 2
# ## *
# ## @brief xcb_screensaver_select_input_request_t
# ##
# type
# xcb_screensaver_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# event_mask*: uint32
# ## *
# ## @brief xcb_screensaver_set_attributes_value_list_t
# ##
# type
# xcb_screensaver_set_attributes_value_list_t* {.bycopy.} = object
# background_pixmap*: xcb_pixmap_t
# background_pixel*: uint32
# border_pixmap*: xcb_pixmap_t
# border_pixel*: uint32
# bit_gravity*: uint32
# win_gravity*: uint32
# backing_store*: uint32
# backing_planes*: uint32
# backing_pixel*: uint32
# override_redirect*: xcb_bool32_t
# save_under*: xcb_bool32_t
# event_mask*: uint32
# do_not_propogate_mask*: uint32
# colormap*: xcb_colormap_t
# cursor*: xcb_cursor_t
# ## * Opcode for xcb_screensaver_set_attributes.
# const
# XCB_SCREENSAVER_SET_ATTRIBUTES* = 3
# ## *
# ## @brief xcb_screensaver_set_attributes_request_t
# ##
# type
# xcb_screensaver_set_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# _class*: uint8
# depth*: uint8
# visual*: xcb_visualid_t
# value_mask*: uint32
# ## * Opcode for xcb_screensaver_unset_attributes.
# const
# XCB_SCREENSAVER_UNSET_ATTRIBUTES* = 4
# ## *
# ## @brief xcb_screensaver_unset_attributes_request_t
# ##
# type
# xcb_screensaver_unset_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## * Opcode for xcb_screensaver_suspend.
# const
# XCB_SCREENSAVER_SUSPEND* = 5
# ## *
# ## @brief xcb_screensaver_suspend_request_t
# ##
# type
# xcb_screensaver_suspend_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# suspend*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_screensaver_notify.
# const
# XCB_SCREENSAVER_NOTIFY* = 0
# ## *
# ## @brief xcb_screensaver_notify_event_t
# ##
# type
# xcb_screensaver_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# state*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# window*: xcb_window_t
# kind*: uint8
# forced*: uint8
# pad0*: array[14, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint8;
# client_minor_version: uint8): xcb_screensaver_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_screensaver_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint8; client_minor_version: uint8): xcb_screensaver_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_screensaver_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_screensaver_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_screensaver_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_screensaver_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_query_info*(c: ptr xcb_connection_t; drawable: xcb_drawable_t): xcb_screensaver_query_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_screensaver_query_info_unchecked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_screensaver_query_info_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_screensaver_query_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_screensaver_query_info_reply*(c: ptr xcb_connection_t; cookie: xcb_screensaver_query_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_screensaver_query_info_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_screensaver_select_input_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_select_input*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; event_mask: uint32): xcb_void_cookie_t
# proc xcb_screensaver_set_attributes_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_screensaver_set_attributes_value_list_t): cint
# proc xcb_screensaver_set_attributes_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_screensaver_set_attributes_value_list_t): cint
# proc xcb_screensaver_set_attributes_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_screensaver_set_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_screensaver_set_attributes_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; x: int16; y: int16; width: uint16; height: uint16;
# border_width: uint16; _class: uint8; depth: uint8; visual: xcb_visualid_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_set_attributes*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; x: int16;
# y: int16; width: uint16; height: uint16;
# border_width: uint16; _class: uint8;
# depth: uint8; visual: xcb_visualid_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_screensaver_set_attributes_aux_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; x: int16; y: int16; width: uint16; height: uint16;
# border_width: uint16; _class: uint8; depth: uint8; visual: xcb_visualid_t;
# value_mask: uint32;
# value_list: ptr xcb_screensaver_set_attributes_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_set_attributes_aux*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; x: int16;
# y: int16; width: uint16;
# height: uint16; border_width: uint16;
# _class: uint8; depth: uint8;
# visual: xcb_visualid_t;
# value_mask: uint32; value_list: ptr xcb_screensaver_set_attributes_value_list_t): xcb_void_cookie_t
# proc xcb_screensaver_set_attributes_value_list*(
# R: ptr xcb_screensaver_set_attributes_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_screensaver_unset_attributes_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_unset_attributes*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_screensaver_suspend_checked*(c: ptr xcb_connection_t; suspend: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_screensaver_suspend*(c: ptr xcb_connection_t; suspend: uint8): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from shape.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Shape_API XCB Shape API
# ## @brief Shape XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_SHAPE_MAJOR_VERSION* = 1
# XCB_SHAPE_MINOR_VERSION* = 1
# var xcb_shape_id*: xcb_extension_t
# type
# xcb_shape_op_t* = uint8
# ## *
# ## @brief xcb_shape_op_iterator_t
# ##
# type
# xcb_shape_op_iterator_t* {.bycopy.} = object
# data*: ptr xcb_shape_op_t
# rem*: cint
# index*: cint
# xcb_shape_kind_t* = uint8
# ## *
# ## @brief xcb_shape_kind_iterator_t
# ##
# type
# xcb_shape_kind_iterator_t* {.bycopy.} = object
# data*: ptr xcb_shape_kind_t
# rem*: cint
# index*: cint
# xcb_shape_so_t* = enum
# XCB_SHAPE_SO_SET = 0, XCB_SHAPE_SO_UNION = 1, XCB_SHAPE_SO_INTERSECT = 2,
# XCB_SHAPE_SO_SUBTRACT = 3, XCB_SHAPE_SO_INVERT = 4
# xcb_shape_sk_t* = enum
# XCB_SHAPE_SK_BOUNDING = 0, XCB_SHAPE_SK_CLIP = 1, XCB_SHAPE_SK_INPUT = 2
# ## * Opcode for xcb_shape_notify.
# const
# XCB_SHAPE_NOTIFY* = 0
# ## *
# ## @brief xcb_shape_notify_event_t
# ##
# type
# xcb_shape_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# shape_kind*: xcb_shape_kind_t
# sequence*: uint16
# affected_window*: xcb_window_t
# extents_x*: int16
# extents_y*: int16
# extents_width*: uint16
# extents_height*: uint16
# server_time*: xcb_timestamp_t
# shaped*: uint8
# pad0*: array[11, uint8]
# ## *
# ## @brief xcb_shape_query_version_cookie_t
# ##
# type
# xcb_shape_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shape_query_version.
# const
# XCB_SHAPE_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_shape_query_version_request_t
# ##
# type
# xcb_shape_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_shape_query_version_reply_t
# ##
# type
# xcb_shape_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# ## * Opcode for xcb_shape_rectangles.
# const
# XCB_SHAPE_RECTANGLES* = 1
# ## *
# ## @brief xcb_shape_rectangles_request_t
# ##
# type
# xcb_shape_rectangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# operation*: xcb_shape_op_t
# destination_kind*: xcb_shape_kind_t
# ordering*: uint8
# pad0*: uint8
# destination_window*: xcb_window_t
# x_offset*: int16
# y_offset*: int16
# ## * Opcode for xcb_shape_mask.
# const
# XCB_SHAPE_MASK* = 2
# ## *
# ## @brief xcb_shape_mask_request_t
# ##
# type
# xcb_shape_mask_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# operation*: xcb_shape_op_t
# destination_kind*: xcb_shape_kind_t
# pad0*: array[2, uint8]
# destination_window*: xcb_window_t
# x_offset*: int16
# y_offset*: int16
# source_bitmap*: xcb_pixmap_t
# ## * Opcode for xcb_shape_combine.
# const
# XCB_SHAPE_COMBINE* = 3
# ## *
# ## @brief xcb_shape_combine_request_t
# ##
# type
# xcb_shape_combine_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# operation*: xcb_shape_op_t
# destination_kind*: xcb_shape_kind_t
# source_kind*: xcb_shape_kind_t
# pad0*: uint8
# destination_window*: xcb_window_t
# x_offset*: int16
# y_offset*: int16
# source_window*: xcb_window_t
# ## * Opcode for xcb_shape_offset.
# const
# XCB_SHAPE_OFFSET* = 4
# ## *
# ## @brief xcb_shape_offset_request_t
# ##
# type
# xcb_shape_offset_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# destination_kind*: xcb_shape_kind_t
# pad0*: array[3, uint8]
# destination_window*: xcb_window_t
# x_offset*: int16
# y_offset*: int16
# ## *
# ## @brief xcb_shape_query_extents_cookie_t
# ##
# type
# xcb_shape_query_extents_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shape_query_extents.
# const
# XCB_SHAPE_QUERY_EXTENTS* = 5
# ## *
# ## @brief xcb_shape_query_extents_request_t
# ##
# type
# xcb_shape_query_extents_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# destination_window*: xcb_window_t
# ## *
# ## @brief xcb_shape_query_extents_reply_t
# ##
# type
# xcb_shape_query_extents_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# bounding_shaped*: uint8
# clip_shaped*: uint8
# pad1*: array[2, uint8]
# bounding_shape_extents_x*: int16
# bounding_shape_extents_y*: int16
# bounding_shape_extents_width*: uint16
# bounding_shape_extents_height*: uint16
# clip_shape_extents_x*: int16
# clip_shape_extents_y*: int16
# clip_shape_extents_width*: uint16
# clip_shape_extents_height*: uint16
# ## * Opcode for xcb_shape_select_input.
# const
# XCB_SHAPE_SELECT_INPUT* = 6
# ## *
# ## @brief xcb_shape_select_input_request_t
# ##
# type
# xcb_shape_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# destination_window*: xcb_window_t
# enable*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_shape_input_selected_cookie_t
# ##
# type
# xcb_shape_input_selected_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shape_input_selected.
# const
# XCB_SHAPE_INPUT_SELECTED* = 7
# ## *
# ## @brief xcb_shape_input_selected_request_t
# ##
# type
# xcb_shape_input_selected_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# destination_window*: xcb_window_t
# ## *
# ## @brief xcb_shape_input_selected_reply_t
# ##
# type
# xcb_shape_input_selected_reply_t* {.bycopy.} = object
# response_type*: uint8
# enabled*: uint8
# sequence*: uint16
# length*: uint32
# ## *
# ## @brief xcb_shape_get_rectangles_cookie_t
# ##
# type
# xcb_shape_get_rectangles_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shape_get_rectangles.
# const
# XCB_SHAPE_GET_RECTANGLES* = 8
# ## *
# ## @brief xcb_shape_get_rectangles_request_t
# ##
# type
# xcb_shape_get_rectangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# source_kind*: xcb_shape_kind_t
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_shape_get_rectangles_reply_t
# ##
# type
# xcb_shape_get_rectangles_reply_t* {.bycopy.} = object
# response_type*: uint8
# ordering*: uint8
# sequence*: uint16
# length*: uint32
# rectangles_len*: uint32
# pad0*: array[20, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_shape_op_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_shape_op_t)
# ##
# proc xcb_shape_op_next*(i: ptr xcb_shape_op_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_shape_op_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_shape_op_end*(i: xcb_shape_op_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_shape_kind_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_shape_kind_t)
# ##
# proc xcb_shape_kind_next*(i: ptr xcb_shape_kind_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_shape_kind_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_shape_kind_end*(i: xcb_shape_kind_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_query_version*(c: ptr xcb_connection_t): xcb_shape_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shape_query_version_unchecked*(c: ptr xcb_connection_t): xcb_shape_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shape_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shape_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shape_query_version_reply_t
# proc xcb_shape_rectangles_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shape_rectangles_checked*(c: ptr xcb_connection_t;
# operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t;
# ordering: uint8;
# destination_window: xcb_window_t;
# x_offset: int16; y_offset: int16;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_rectangles*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t; ordering: uint8;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16; rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_shape_rectangles_rectangles*(R: ptr xcb_shape_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_shape_rectangles_rectangles_length*(
# R: ptr xcb_shape_rectangles_request_t): cint
# proc xcb_shape_rectangles_rectangles_iterator*(
# R: ptr xcb_shape_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shape_mask_checked*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16; source_bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_mask*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16; source_bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shape_combine_checked*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t;
# source_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t;
# x_offset: int16; y_offset: int16;
# source_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_combine*(c: ptr xcb_connection_t; operation: xcb_shape_op_t;
# destination_kind: xcb_shape_kind_t;
# source_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16; source_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shape_offset_checked*(c: ptr xcb_connection_t;
# destination_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_offset*(c: ptr xcb_connection_t; destination_kind: xcb_shape_kind_t;
# destination_window: xcb_window_t; x_offset: int16;
# y_offset: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_query_extents*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t): xcb_shape_query_extents_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shape_query_extents_unchecked*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t): xcb_shape_query_extents_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shape_query_extents_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shape_query_extents_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_query_extents_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shape_query_extents_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shape_select_input_checked*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t;
# enable: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_select_input*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t; enable: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_input_selected*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t): xcb_shape_input_selected_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shape_input_selected_unchecked*(c: ptr xcb_connection_t;
# destination_window: xcb_window_t): xcb_shape_input_selected_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shape_input_selected_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shape_input_selected_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_input_selected_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shape_input_selected_reply_t
# proc xcb_shape_get_rectangles_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shape_get_rectangles*(c: ptr xcb_connection_t; window: xcb_window_t;
# source_kind: xcb_shape_kind_t): xcb_shape_get_rectangles_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shape_get_rectangles_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# source_kind: xcb_shape_kind_t): xcb_shape_get_rectangles_cookie_t
# proc xcb_shape_get_rectangles_rectangles*(R: ptr xcb_shape_get_rectangles_reply_t): ptr xcb_rectangle_t
# proc xcb_shape_get_rectangles_rectangles_length*(
# R: ptr xcb_shape_get_rectangles_reply_t): cint
# proc xcb_shape_get_rectangles_rectangles_iterator*(
# R: ptr xcb_shape_get_rectangles_reply_t): xcb_rectangle_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shape_get_rectangles_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shape_get_rectangles_reply*(c: ptr xcb_connection_t; cookie: xcb_shape_get_rectangles_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shape_get_rectangles_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from shm.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Shm_API XCB Shm API
# ## @brief Shm XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_SHM_MAJOR_VERSION* = 1
# XCB_SHM_MINOR_VERSION* = 2
# var xcb_shm_id*: xcb_extension_t
# type
# xcb_shm_seg_t* = uint32
# ## *
# ## @brief xcb_shm_seg_iterator_t
# ##
# type
# xcb_shm_seg_iterator_t* {.bycopy.} = object
# data*: ptr xcb_shm_seg_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_shm_completion.
# const
# XCB_SHM_COMPLETION* = 0
# ## *
# ## @brief xcb_shm_completion_event_t
# ##
# type
# xcb_shm_completion_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# drawable*: xcb_drawable_t
# minor_event*: uint16
# major_event*: uint8
# pad1*: uint8
# shmseg*: xcb_shm_seg_t
# offset*: uint32
# ## * Opcode for xcb_shm_bad_seg.
# const
# XCB_SHM_BAD_SEG* = 0
# type
# xcb_shm_bad_seg_error_t* = xcb_value_error_t
# ## *
# ## @brief xcb_shm_query_version_cookie_t
# ##
# type
# xcb_shm_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shm_query_version.
# const
# XCB_SHM_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_shm_query_version_request_t
# ##
# type
# xcb_shm_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_shm_query_version_reply_t
# ##
# type
# xcb_shm_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# shared_pixmaps*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# uid*: uint16
# gid*: uint16
# pixmap_format*: uint8
# pad0*: array[15, uint8]
# ## * Opcode for xcb_shm_attach.
# const
# XCB_SHM_ATTACH* = 1
# ## *
# ## @brief xcb_shm_attach_request_t
# ##
# type
# xcb_shm_attach_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# shmseg*: xcb_shm_seg_t
# shmid*: uint32
# read_only*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_shm_detach.
# const
# XCB_SHM_DETACH* = 2
# ## *
# ## @brief xcb_shm_detach_request_t
# ##
# type
# xcb_shm_detach_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# shmseg*: xcb_shm_seg_t
# ## * Opcode for xcb_shm_put_image.
# const
# XCB_SHM_PUT_IMAGE* = 3
# ## *
# ## @brief xcb_shm_put_image_request_t
# ##
# type
# xcb_shm_put_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# total_width*: uint16
# total_height*: uint16
# src_x*: uint16
# src_y*: uint16
# src_width*: uint16
# src_height*: uint16
# dst_x*: int16
# dst_y*: int16
# depth*: uint8
# format*: uint8
# send_event*: uint8
# pad0*: uint8
# shmseg*: xcb_shm_seg_t
# offset*: uint32
# ## *
# ## @brief xcb_shm_get_image_cookie_t
# ##
# type
# xcb_shm_get_image_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shm_get_image.
# const
# XCB_SHM_GET_IMAGE* = 4
# ## *
# ## @brief xcb_shm_get_image_request_t
# ##
# type
# xcb_shm_get_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# plane_mask*: uint32
# format*: uint8
# pad0*: array[3, uint8]
# shmseg*: xcb_shm_seg_t
# offset*: uint32
# ## *
# ## @brief xcb_shm_get_image_reply_t
# ##
# type
# xcb_shm_get_image_reply_t* {.bycopy.} = object
# response_type*: uint8
# depth*: uint8
# sequence*: uint16
# length*: uint32
# visual*: xcb_visualid_t
# size*: uint32
# ## * Opcode for xcb_shm_create_pixmap.
# const
# XCB_SHM_CREATE_PIXMAP* = 5
# ## *
# ## @brief xcb_shm_create_pixmap_request_t
# ##
# type
# xcb_shm_create_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# pid*: xcb_pixmap_t
# drawable*: xcb_drawable_t
# width*: uint16
# height*: uint16
# depth*: uint8
# pad0*: array[3, uint8]
# shmseg*: xcb_shm_seg_t
# offset*: uint32
# ## * Opcode for xcb_shm_attach_fd.
# const
# XCB_SHM_ATTACH_FD* = 6
# ## *
# ## @brief xcb_shm_attach_fd_request_t
# ##
# type
# xcb_shm_attach_fd_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# shmseg*: xcb_shm_seg_t
# read_only*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_shm_create_segment_cookie_t
# ##
# type
# xcb_shm_create_segment_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_shm_create_segment.
# const
# XCB_SHM_CREATE_SEGMENT* = 7
# ## *
# ## @brief xcb_shm_create_segment_request_t
# ##
# type
# xcb_shm_create_segment_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# shmseg*: xcb_shm_seg_t
# size*: uint32
# read_only*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_shm_create_segment_reply_t
# ##
# type
# xcb_shm_create_segment_reply_t* {.bycopy.} = object
# response_type*: uint8
# nfd*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_shm_seg_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_shm_seg_t)
# ##
# proc xcb_shm_seg_next*(i: ptr xcb_shm_seg_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_shm_seg_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_shm_seg_end*(i: xcb_shm_seg_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_query_version*(c: ptr xcb_connection_t): xcb_shm_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shm_query_version_unchecked*(c: ptr xcb_connection_t): xcb_shm_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shm_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shm_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shm_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shm_attach_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
# shmid: uint32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_attach*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t; shmid: uint32;
# read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shm_detach_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_detach*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shm_put_image_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; total_width: uint16;
# total_height: uint16; src_x: uint16;
# src_y: uint16; src_width: uint16;
# src_height: uint16; dst_x: int16; dst_y: int16;
# depth: uint8; format: uint8; send_event: uint8;
# shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_put_image*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; total_width: uint16;
# total_height: uint16; src_x: uint16; src_y: uint16;
# src_width: uint16; src_height: uint16; dst_x: int16;
# dst_y: int16; depth: uint8; format: uint8;
# send_event: uint8; shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_get_image*(c: ptr xcb_connection_t; drawable: xcb_drawable_t; x: int16;
# y: int16; width: uint16; height: uint16;
# plane_mask: uint32; format: uint8; shmseg: xcb_shm_seg_t;
# offset: uint32): xcb_shm_get_image_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shm_get_image_unchecked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# x: int16; y: int16; width: uint16;
# height: uint16; plane_mask: uint32;
# format: uint8; shmseg: xcb_shm_seg_t;
# offset: uint32): xcb_shm_get_image_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shm_get_image_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shm_get_image_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_get_image_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shm_get_image_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shm_create_pixmap_checked*(c: ptr xcb_connection_t; pid: xcb_pixmap_t;
# drawable: xcb_drawable_t; width: uint16;
# height: uint16; depth: uint8;
# shmseg: xcb_shm_seg_t; offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_create_pixmap*(c: ptr xcb_connection_t; pid: xcb_pixmap_t;
# drawable: xcb_drawable_t; width: uint16;
# height: uint16; depth: uint8; shmseg: xcb_shm_seg_t;
# offset: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_shm_attach_fd_checked*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
# shm_fd: int32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_attach_fd*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
# shm_fd: int32; read_only: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_shm_create_segment*(c: ptr xcb_connection_t; shmseg: xcb_shm_seg_t;
# size: uint32; read_only: uint8): xcb_shm_create_segment_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_shm_create_segment_unchecked*(c: ptr xcb_connection_t;
# shmseg: xcb_shm_seg_t; size: uint32;
# read_only: uint8): xcb_shm_create_segment_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_shm_create_segment_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shm_create_segment_reply*(c: ptr xcb_connection_t; cookie: xcb_shm_create_segment_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_shm_create_segment_reply_t
# ## *
# ## Return the reply fds
# ## @param c The connection
# ## @param reply The reply
# ##
# ## Returns the array of reply fds of the request asked by
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_shm_create_segment_reply_fds*(c: ptr xcb_connection_t; ## *<
# reply: ptr xcb_shm_create_segment_reply_t): ptr cint
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from sync.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Sync_API XCB Sync API
# ## @brief Sync XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_SYNC_MAJOR_VERSION* = 3
# XCB_SYNC_MINOR_VERSION* = 1
# var xcb_sync_id*: xcb_extension_t
# type
# xcb_sync_alarm_t* = uint32
# ## *
# ## @brief xcb_sync_alarm_iterator_t
# ##
# type
# xcb_sync_alarm_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_alarm_t
# rem*: cint
# index*: cint
# xcb_sync_alarmstate_t* = enum
# XCB_SYNC_ALARMSTATE_ACTIVE = 0, XCB_SYNC_ALARMSTATE_INACTIVE = 1,
# XCB_SYNC_ALARMSTATE_DESTROYED = 2
# xcb_sync_counter_t* = uint32
# ## *
# ## @brief xcb_sync_counter_iterator_t
# ##
# type
# xcb_sync_counter_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_counter_t
# rem*: cint
# index*: cint
# xcb_sync_fence_t* = uint32
# ## *
# ## @brief xcb_sync_fence_iterator_t
# ##
# type
# xcb_sync_fence_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_fence_t
# rem*: cint
# index*: cint
# xcb_sync_testtype_t* = enum
# XCB_SYNC_TESTTYPE_POSITIVE_TRANSITION = 0,
# XCB_SYNC_TESTTYPE_NEGATIVE_TRANSITION = 1,
# XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON = 2,
# XCB_SYNC_TESTTYPE_NEGATIVE_COMPARISON = 3
# xcb_sync_valuetype_t* = enum
# XCB_SYNC_VALUETYPE_ABSOLUTE = 0, XCB_SYNC_VALUETYPE_RELATIVE = 1
# xcb_sync_ca_t* = enum
# XCB_SYNC_CA_COUNTER = 1, XCB_SYNC_CA_VALUE_TYPE = 2, XCB_SYNC_CA_VALUE = 4,
# XCB_SYNC_CA_TEST_TYPE = 8, XCB_SYNC_CA_DELTA = 16, XCB_SYNC_CA_EVENTS = 32
# ## *
# ## @brief xcb_sync_int64_t
# ##
# type
# xcb_sync_int64_t* {.bycopy.} = object
# hi*: int32
# lo*: uint32
# ## *
# ## @brief xcb_sync_int64_iterator_t
# ##
# type
# xcb_sync_int64_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_int64_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_sync_systemcounter_t
# ##
# type
# xcb_sync_systemcounter_t* {.bycopy.} = object
# counter*: xcb_sync_counter_t
# resolution*: xcb_sync_int64_t
# name_len*: uint16
# ## *
# ## @brief xcb_sync_systemcounter_iterator_t
# ##
# type
# xcb_sync_systemcounter_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_systemcounter_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_sync_trigger_t
# ##
# type
# xcb_sync_trigger_t* {.bycopy.} = object
# counter*: xcb_sync_counter_t
# wait_type*: uint32
# wait_value*: xcb_sync_int64_t
# test_type*: uint32
# ## *
# ## @brief xcb_sync_trigger_iterator_t
# ##
# type
# xcb_sync_trigger_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_trigger_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_sync_waitcondition_t
# ##
# type
# xcb_sync_waitcondition_t* {.bycopy.} = object
# trigger*: xcb_sync_trigger_t
# event_threshold*: xcb_sync_int64_t
# ## *
# ## @brief xcb_sync_waitcondition_iterator_t
# ##
# type
# xcb_sync_waitcondition_iterator_t* {.bycopy.} = object
# data*: ptr xcb_sync_waitcondition_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_sync_counter.
# const
# XCB_SYNC_COUNTER* = 0
# ## *
# ## @brief xcb_sync_counter_error_t
# ##
# type
# xcb_sync_counter_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# bad_counter*: uint32
# minor_opcode*: uint16
# major_opcode*: uint8
# ## * Opcode for xcb_sync_alarm.
# const
# XCB_SYNC_ALARM* = 1
# ## *
# ## @brief xcb_sync_alarm_error_t
# ##
# type
# xcb_sync_alarm_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# bad_alarm*: uint32
# minor_opcode*: uint16
# major_opcode*: uint8
# ## *
# ## @brief xcb_sync_initialize_cookie_t
# ##
# type
# xcb_sync_initialize_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_initialize.
# const
# XCB_SYNC_INITIALIZE* = 0
# ## *
# ## @brief xcb_sync_initialize_request_t
# ##
# type
# xcb_sync_initialize_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# desired_major_version*: uint8
# desired_minor_version*: uint8
# ## *
# ## @brief xcb_sync_initialize_reply_t
# ##
# type
# xcb_sync_initialize_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint8
# minor_version*: uint8
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_sync_list_system_counters_cookie_t
# ##
# type
# xcb_sync_list_system_counters_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_list_system_counters.
# const
# XCB_SYNC_LIST_SYSTEM_COUNTERS* = 1
# ## *
# ## @brief xcb_sync_list_system_counters_request_t
# ##
# type
# xcb_sync_list_system_counters_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_sync_list_system_counters_reply_t
# ##
# type
# xcb_sync_list_system_counters_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# counters_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_sync_create_counter.
# const
# XCB_SYNC_CREATE_COUNTER* = 2
# ## *
# ## @brief xcb_sync_create_counter_request_t
# ##
# type
# xcb_sync_create_counter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# id*: xcb_sync_counter_t
# initial_value*: xcb_sync_int64_t
# ## * Opcode for xcb_sync_destroy_counter.
# const
# XCB_SYNC_DESTROY_COUNTER* = 6
# ## *
# ## @brief xcb_sync_destroy_counter_request_t
# ##
# type
# xcb_sync_destroy_counter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# counter*: xcb_sync_counter_t
# ## *
# ## @brief xcb_sync_query_counter_cookie_t
# ##
# type
# xcb_sync_query_counter_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_query_counter.
# const
# XCB_SYNC_QUERY_COUNTER* = 5
# ## *
# ## @brief xcb_sync_query_counter_request_t
# ##
# type
# xcb_sync_query_counter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# counter*: xcb_sync_counter_t
# ## *
# ## @brief xcb_sync_query_counter_reply_t
# ##
# type
# xcb_sync_query_counter_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# counter_value*: xcb_sync_int64_t
# ## * Opcode for xcb_sync_await.
# const
# XCB_SYNC_AWAIT* = 7
# ## *
# ## @brief xcb_sync_await_request_t
# ##
# type
# xcb_sync_await_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## * Opcode for xcb_sync_change_counter.
# const
# XCB_SYNC_CHANGE_COUNTER* = 4
# ## *
# ## @brief xcb_sync_change_counter_request_t
# ##
# type
# xcb_sync_change_counter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# counter*: xcb_sync_counter_t
# amount*: xcb_sync_int64_t
# ## * Opcode for xcb_sync_set_counter.
# const
# XCB_SYNC_SET_COUNTER* = 3
# ## *
# ## @brief xcb_sync_set_counter_request_t
# ##
# type
# xcb_sync_set_counter_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# counter*: xcb_sync_counter_t
# value*: xcb_sync_int64_t
# ## *
# ## @brief xcb_sync_create_alarm_value_list_t
# ##
# type
# xcb_sync_create_alarm_value_list_t* {.bycopy.} = object
# counter*: xcb_sync_counter_t
# valueType*: uint32
# value*: xcb_sync_int64_t
# testType*: uint32
# delta*: xcb_sync_int64_t
# events*: uint32
# ## * Opcode for xcb_sync_create_alarm.
# const
# XCB_SYNC_CREATE_ALARM* = 8
# ## *
# ## @brief xcb_sync_create_alarm_request_t
# ##
# type
# xcb_sync_create_alarm_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# id*: xcb_sync_alarm_t
# value_mask*: uint32
# ## *
# ## @brief xcb_sync_change_alarm_value_list_t
# ##
# type
# xcb_sync_change_alarm_value_list_t* {.bycopy.} = object
# counter*: xcb_sync_counter_t
# valueType*: uint32
# value*: xcb_sync_int64_t
# testType*: uint32
# delta*: xcb_sync_int64_t
# events*: uint32
# ## * Opcode for xcb_sync_change_alarm.
# const
# XCB_SYNC_CHANGE_ALARM* = 9
# ## *
# ## @brief xcb_sync_change_alarm_request_t
# ##
# type
# xcb_sync_change_alarm_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# id*: xcb_sync_alarm_t
# value_mask*: uint32
# ## * Opcode for xcb_sync_destroy_alarm.
# const
# XCB_SYNC_DESTROY_ALARM* = 11
# ## *
# ## @brief xcb_sync_destroy_alarm_request_t
# ##
# type
# xcb_sync_destroy_alarm_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# alarm*: xcb_sync_alarm_t
# ## *
# ## @brief xcb_sync_query_alarm_cookie_t
# ##
# type
# xcb_sync_query_alarm_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_query_alarm.
# const
# XCB_SYNC_QUERY_ALARM* = 10
# ## *
# ## @brief xcb_sync_query_alarm_request_t
# ##
# type
# xcb_sync_query_alarm_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# alarm*: xcb_sync_alarm_t
# ## *
# ## @brief xcb_sync_query_alarm_reply_t
# ##
# type
# xcb_sync_query_alarm_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# trigger*: xcb_sync_trigger_t
# delta*: xcb_sync_int64_t
# events*: uint8
# state*: uint8
# pad1*: array[2, uint8]
# ## * Opcode for xcb_sync_set_priority.
# const
# XCB_SYNC_SET_PRIORITY* = 12
# ## *
# ## @brief xcb_sync_set_priority_request_t
# ##
# type
# xcb_sync_set_priority_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# id*: uint32
# priority*: int32
# ## *
# ## @brief xcb_sync_get_priority_cookie_t
# ##
# type
# xcb_sync_get_priority_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_get_priority.
# const
# XCB_SYNC_GET_PRIORITY* = 13
# ## *
# ## @brief xcb_sync_get_priority_request_t
# ##
# type
# xcb_sync_get_priority_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# id*: uint32
# ## *
# ## @brief xcb_sync_get_priority_reply_t
# ##
# type
# xcb_sync_get_priority_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# priority*: int32
# ## * Opcode for xcb_sync_create_fence.
# const
# XCB_SYNC_CREATE_FENCE* = 14
# ## *
# ## @brief xcb_sync_create_fence_request_t
# ##
# type
# xcb_sync_create_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# fence*: xcb_sync_fence_t
# initially_triggered*: uint8
# ## * Opcode for xcb_sync_trigger_fence.
# const
# XCB_SYNC_TRIGGER_FENCE* = 15
# ## *
# ## @brief xcb_sync_trigger_fence_request_t
# ##
# type
# xcb_sync_trigger_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# fence*: xcb_sync_fence_t
# ## * Opcode for xcb_sync_reset_fence.
# const
# XCB_SYNC_RESET_FENCE* = 16
# ## *
# ## @brief xcb_sync_reset_fence_request_t
# ##
# type
# xcb_sync_reset_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# fence*: xcb_sync_fence_t
# ## * Opcode for xcb_sync_destroy_fence.
# const
# XCB_SYNC_DESTROY_FENCE* = 17
# ## *
# ## @brief xcb_sync_destroy_fence_request_t
# ##
# type
# xcb_sync_destroy_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# fence*: xcb_sync_fence_t
# ## *
# ## @brief xcb_sync_query_fence_cookie_t
# ##
# type
# xcb_sync_query_fence_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_sync_query_fence.
# const
# XCB_SYNC_QUERY_FENCE* = 18
# ## *
# ## @brief xcb_sync_query_fence_request_t
# ##
# type
# xcb_sync_query_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# fence*: xcb_sync_fence_t
# ## *
# ## @brief xcb_sync_query_fence_reply_t
# ##
# type
# xcb_sync_query_fence_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# triggered*: uint8
# pad1*: array[23, uint8]
# ## * Opcode for xcb_sync_await_fence.
# const
# XCB_SYNC_AWAIT_FENCE* = 19
# ## *
# ## @brief xcb_sync_await_fence_request_t
# ##
# type
# xcb_sync_await_fence_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## * Opcode for xcb_sync_counter_notify.
# const
# XCB_SYNC_COUNTER_NOTIFY* = 0
# ## *
# ## @brief xcb_sync_counter_notify_event_t
# ##
# type
# xcb_sync_counter_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# kind*: uint8
# sequence*: uint16
# counter*: xcb_sync_counter_t
# wait_value*: xcb_sync_int64_t
# counter_value*: xcb_sync_int64_t
# timestamp*: xcb_timestamp_t
# count*: uint16
# destroyed*: uint8
# pad0*: uint8
# ## * Opcode for xcb_sync_alarm_notify.
# const
# XCB_SYNC_ALARM_NOTIFY* = 1
# ## *
# ## @brief xcb_sync_alarm_notify_event_t
# ##
# type
# xcb_sync_alarm_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# kind*: uint8
# sequence*: uint16
# alarm*: xcb_sync_alarm_t
# counter_value*: xcb_sync_int64_t
# alarm_value*: xcb_sync_int64_t
# timestamp*: xcb_timestamp_t
# state*: uint8
# pad0*: array[3, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_alarm_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_alarm_t)
# ##
# proc xcb_sync_alarm_next*(i: ptr xcb_sync_alarm_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_alarm_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_alarm_end*(i: xcb_sync_alarm_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_counter_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_counter_t)
# ##
# proc xcb_sync_counter_next*(i: ptr xcb_sync_counter_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_counter_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_counter_end*(i: xcb_sync_counter_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_fence_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_fence_t)
# ##
# proc xcb_sync_fence_next*(i: ptr xcb_sync_fence_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_fence_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_fence_end*(i: xcb_sync_fence_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_int64_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_int64_t)
# ##
# proc xcb_sync_int64_next*(i: ptr xcb_sync_int64_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_int64_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_int64_end*(i: xcb_sync_int64_iterator_t): xcb_generic_iterator_t
# proc xcb_sync_systemcounter_sizeof*(_buffer: pointer): cint
# proc xcb_sync_systemcounter_name*(R: ptr xcb_sync_systemcounter_t): cstring
# proc xcb_sync_systemcounter_name_length*(R: ptr xcb_sync_systemcounter_t): cint
# proc xcb_sync_systemcounter_name_end*(R: ptr xcb_sync_systemcounter_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_systemcounter_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_systemcounter_t)
# ##
# proc xcb_sync_systemcounter_next*(i: ptr xcb_sync_systemcounter_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_systemcounter_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_systemcounter_end*(i: xcb_sync_systemcounter_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_trigger_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_trigger_t)
# ##
# proc xcb_sync_trigger_next*(i: ptr xcb_sync_trigger_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_trigger_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_trigger_end*(i: xcb_sync_trigger_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_sync_waitcondition_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_sync_waitcondition_t)
# ##
# proc xcb_sync_waitcondition_next*(i: ptr xcb_sync_waitcondition_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_sync_waitcondition_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_sync_waitcondition_end*(i: xcb_sync_waitcondition_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_initialize*(c: ptr xcb_connection_t; desired_major_version: uint8;
# desired_minor_version: uint8): xcb_sync_initialize_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_initialize_unchecked*(c: ptr xcb_connection_t;
# desired_major_version: uint8;
# desired_minor_version: uint8): xcb_sync_initialize_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_initialize_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_initialize_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_initialize_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_initialize_reply_t
# proc xcb_sync_list_system_counters_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_list_system_counters*(c: ptr xcb_connection_t): xcb_sync_list_system_counters_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_list_system_counters_unchecked*(c: ptr xcb_connection_t): xcb_sync_list_system_counters_cookie_t
# proc xcb_sync_list_system_counters_counters_length*(
# R: ptr xcb_sync_list_system_counters_reply_t): cint
# proc xcb_sync_list_system_counters_counters_iterator*(
# R: ptr xcb_sync_list_system_counters_reply_t): xcb_sync_systemcounter_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_list_system_counters_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_list_system_counters_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_list_system_counters_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_list_system_counters_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_create_counter_checked*(c: ptr xcb_connection_t;
# id: xcb_sync_counter_t;
# initial_value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_create_counter*(c: ptr xcb_connection_t; id: xcb_sync_counter_t;
# initial_value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_destroy_counter_checked*(c: ptr xcb_connection_t;
# counter: xcb_sync_counter_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_destroy_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_query_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t): xcb_sync_query_counter_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_query_counter_unchecked*(c: ptr xcb_connection_t;
# counter: xcb_sync_counter_t): xcb_sync_query_counter_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_query_counter_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_query_counter_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_counter_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_counter_reply_t
# proc xcb_sync_await_sizeof*(_buffer: pointer; wait_list_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_await_checked*(c: ptr xcb_connection_t; wait_list_len: uint32;
# wait_list: ptr xcb_sync_waitcondition_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_await*(c: ptr xcb_connection_t; wait_list_len: uint32;
# wait_list: ptr xcb_sync_waitcondition_t): xcb_void_cookie_t
# proc xcb_sync_await_wait_list*(R: ptr xcb_sync_await_request_t): ptr xcb_sync_waitcondition_t
# proc xcb_sync_await_wait_list_length*(R: ptr xcb_sync_await_request_t): cint
# proc xcb_sync_await_wait_list_iterator*(R: ptr xcb_sync_await_request_t): xcb_sync_waitcondition_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_change_counter_checked*(c: ptr xcb_connection_t;
# counter: xcb_sync_counter_t;
# amount: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_change_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t;
# amount: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_set_counter_checked*(c: ptr xcb_connection_t;
# counter: xcb_sync_counter_t;
# value: xcb_sync_int64_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_set_counter*(c: ptr xcb_connection_t; counter: xcb_sync_counter_t;
# value: xcb_sync_int64_t): xcb_void_cookie_t
# proc xcb_sync_create_alarm_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_sync_create_alarm_value_list_t): cint
# proc xcb_sync_create_alarm_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_sync_create_alarm_value_list_t): cint
# proc xcb_sync_create_alarm_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_sync_create_alarm_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_create_alarm_checked*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_create_alarm*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_create_alarm_aux_checked*(c: ptr xcb_connection_t;
# id: xcb_sync_alarm_t; value_mask: uint32;
# value_list: ptr xcb_sync_create_alarm_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_create_alarm_aux*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: ptr xcb_sync_create_alarm_value_list_t): xcb_void_cookie_t
# proc xcb_sync_create_alarm_value_list*(R: ptr xcb_sync_create_alarm_request_t): pointer
# proc xcb_sync_change_alarm_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_sync_change_alarm_value_list_t): cint
# proc xcb_sync_change_alarm_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_sync_change_alarm_value_list_t): cint
# proc xcb_sync_change_alarm_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_sync_change_alarm_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_change_alarm_checked*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_change_alarm*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_change_alarm_aux_checked*(c: ptr xcb_connection_t;
# id: xcb_sync_alarm_t; value_mask: uint32;
# value_list: ptr xcb_sync_change_alarm_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_change_alarm_aux*(c: ptr xcb_connection_t; id: xcb_sync_alarm_t;
# value_mask: uint32; value_list: ptr xcb_sync_change_alarm_value_list_t): xcb_void_cookie_t
# proc xcb_sync_change_alarm_value_list*(R: ptr xcb_sync_change_alarm_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_destroy_alarm_checked*(c: ptr xcb_connection_t;
# alarm: xcb_sync_alarm_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_destroy_alarm*(c: ptr xcb_connection_t; alarm: xcb_sync_alarm_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_query_alarm*(c: ptr xcb_connection_t; alarm: xcb_sync_alarm_t): xcb_sync_query_alarm_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_query_alarm_unchecked*(c: ptr xcb_connection_t;
# alarm: xcb_sync_alarm_t): xcb_sync_query_alarm_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_query_alarm_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_query_alarm_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_alarm_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_alarm_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_set_priority_checked*(c: ptr xcb_connection_t; id: uint32;
# priority: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_set_priority*(c: ptr xcb_connection_t; id: uint32; priority: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_get_priority*(c: ptr xcb_connection_t; id: uint32): xcb_sync_get_priority_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_get_priority_unchecked*(c: ptr xcb_connection_t; id: uint32): xcb_sync_get_priority_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_get_priority_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_get_priority_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_get_priority_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_get_priority_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_create_fence_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t;
# fence: xcb_sync_fence_t;
# initially_triggered: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_create_fence*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# fence: xcb_sync_fence_t; initially_triggered: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_trigger_fence_checked*(c: ptr xcb_connection_t;
# fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_trigger_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_reset_fence_checked*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_reset_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_destroy_fence_checked*(c: ptr xcb_connection_t;
# fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_destroy_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_query_fence*(c: ptr xcb_connection_t; fence: xcb_sync_fence_t): xcb_sync_query_fence_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_sync_query_fence_unchecked*(c: ptr xcb_connection_t;
# fence: xcb_sync_fence_t): xcb_sync_query_fence_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_sync_query_fence_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_sync_query_fence_reply*(c: ptr xcb_connection_t; cookie: xcb_sync_query_fence_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_sync_query_fence_reply_t
# proc xcb_sync_await_fence_sizeof*(_buffer: pointer; fence_list_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_sync_await_fence_checked*(c: ptr xcb_connection_t;
# fence_list_len: uint32;
# fence_list: ptr xcb_sync_fence_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_sync_await_fence*(c: ptr xcb_connection_t; fence_list_len: uint32;
# fence_list: ptr xcb_sync_fence_t): xcb_void_cookie_t
# proc xcb_sync_await_fence_fence_list*(R: ptr xcb_sync_await_fence_request_t): ptr xcb_sync_fence_t
# proc xcb_sync_await_fence_fence_list_length*(
# R: ptr xcb_sync_await_fence_request_t): cint
# proc xcb_sync_await_fence_fence_list_end*(R: ptr xcb_sync_await_fence_request_t): xcb_generic_iterator_t
# ## *
# ## @}
# ##
# proc xcb_atom_name_by_screen*(base: cstring; screen: uint8): cstring
# proc xcb_atom_name_by_resource*(base: cstring; resource: uint32): cstring
# proc xcb_atom_name_unique*(base: cstring; id: uint32): cstring
# proc xcb_aux_get_depth*(c: ptr xcb_connection_t; screen: ptr xcb_screen_t): uint8
# proc xcb_aux_get_depth_of_visual*(screen: ptr xcb_screen_t; id: xcb_visualid_t): uint8
# proc xcb_aux_get_screen*(c: ptr xcb_connection_t; screen: cint): ptr xcb_screen_t
# proc xcb_aux_get_visualtype*(c: ptr xcb_connection_t; screen: cint;
# vid: xcb_visualid_t): ptr xcb_visualtype_t
# proc xcb_aux_find_visual_by_id*(screen: ptr xcb_screen_t; id: xcb_visualid_t): ptr xcb_visualtype_t
# proc xcb_aux_find_visual_by_attrs*(screen: ptr xcb_screen_t; class_: int8;
# depth: int8): ptr xcb_visualtype_t
# proc xcb_aux_sync*(c: ptr xcb_connection_t)
# ## internal helper macro for XCB_AUX_ADD_PARAM
# ## It gives the offset of the field 'param' in the structure pointed to by
# ## 'paramsp' in multiples of an uint32's size.
# template XCB_AUX_INTERNAL_OFFSETOF*(paramsp, param: untyped): untyped =
# (cast[ptr uint32]((addr(((paramsp).param)))) - cast[ptr uint32]((paramsp)))
# ## add an optional parameter to an xcb_params_* structure
# ## parameters:
# ## maskp: pointer to bitmask whos bits mark used parameters
# ## paramsp: pointer to structure with parameters
# ## param: parameter to set
# ## value: value to set the parameter to
# ##
# template XCB_AUX_ADD_PARAM*(maskp, paramsp, param, value: untyped): untyped =
# (
# ((maskp)[] = (maskp)[] or 1 shl XCB_AUX_INTERNAL_OFFSETOF((paramsp), param))
# ((paramsp).param = (value)))
# type
# xcb_params_cw_t* {.bycopy.} = object
# back_pixmap*: uint32
# back_pixel*: uint32
# border_pixmap*: uint32
# border_pixel*: uint32
# bit_gravity*: uint32
# win_gravity*: uint32
# backing_store*: uint32
# backing_planes*: uint32
# backing_pixel*: uint32
# override_redirect*: uint32
# save_under*: uint32
# event_mask*: uint32
# dont_propagate*: uint32
# colormap*: uint32
# cursor*: uint32
# proc xcb_aux_create_window*(c: ptr xcb_connection_t; depth: uint8;
# wid: xcb_window_t; parent: xcb_window_t; x: int16;
# y: int16; width: uint16; height: uint16;
# border_width: uint16; class_: uint16;
# visual: xcb_visualid_t; mask: uint32;
# params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_create_window_checked*(c: ptr xcb_connection_t; depth: uint8;
# wid: xcb_window_t; parent: xcb_window_t;
# x: int16; y: int16; width: uint16;
# height: uint16; border_width: uint16;
# class_: uint16; visual: xcb_visualid_t;
# mask: uint32; params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_change_window_attributes*(c: ptr xcb_connection_t;
# window: xcb_window_t; mask: uint32;
# params: ptr xcb_params_cw_t): xcb_void_cookie_t
# proc xcb_aux_change_window_attributes_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; mask: uint32; params: ptr xcb_params_cw_t): xcb_void_cookie_t
# type
# xcb_params_configure_window_t* {.bycopy.} = object
# x*: int32
# y*: int32
# width*: uint32
# height*: uint32
# border_width*: uint32
# sibling*: uint32
# stack_mode*: uint32
# proc xcb_aux_configure_window*(c: ptr xcb_connection_t; window: xcb_window_t;
# mask: uint16;
# params: ptr xcb_params_configure_window_t): xcb_void_cookie_t
# type
# xcb_params_gc_t* {.bycopy.} = object
# function*: uint32
# plane_mask*: uint32
# foreground*: uint32
# background*: uint32
# line_width*: uint32
# line_style*: uint32
# cap_style*: uint32
# join_style*: uint32
# fill_style*: uint32
# fill_rule*: uint32
# tile*: uint32
# stipple*: uint32
# tile_stipple_origin_x*: uint32
# tile_stipple_origin_y*: uint32
# font*: uint32
# subwindow_mode*: uint32
# graphics_exposures*: uint32
# clip_originX*: uint32
# clip_originY*: uint32
# mask*: uint32
# dash_offset*: uint32
# dash_list*: uint32
# arc_mode*: uint32
# proc xcb_aux_create_gc*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
# drawable: xcb_drawable_t; mask: uint32;
# params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_create_gc_checked*(c: ptr xcb_connection_t; gid: xcb_gcontext_t;
# drawable: xcb_drawable_t; mask: uint32;
# params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_change_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t; mask: uint32;
# params: ptr xcb_params_gc_t): xcb_void_cookie_t
# proc xcb_aux_change_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# mask: uint32; params: ptr xcb_params_gc_t): xcb_void_cookie_t
# type
# xcb_params_keyboard_t* {.bycopy.} = object
# key_click_percent*: uint32
# bell_percent*: uint32
# bell_pitch*: uint32
# bell_duration*: uint32
# led*: uint32
# led_mode*: uint32
# key*: uint32
# auto_repeat_mode*: uint32
# proc xcb_aux_change_keyboard_control*(c: ptr xcb_connection_t; mask: uint32;
# params: ptr xcb_params_keyboard_t): xcb_void_cookie_t
# proc xcb_aux_parse_color*(color_name: cstring; red: ptr uint16; green: ptr uint16;
# blue: ptr uint16): cint
# proc xcb_aux_set_line_attributes_checked*(dpy: ptr xcb_connection_t;
# gc: xcb_gcontext_t; linewidth: uint16; linestyle: int32; capstyle: int32;
# joinstyle: int32): xcb_void_cookie_t
# proc xcb_aux_clear_window*(dpy: ptr xcb_connection_t; w: xcb_window_t): xcb_void_cookie_t
# ## Copyright (C) 2007 Bart Massey
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__bitops XCB Bit Operations
# ##
# ## Inline functions for common bit ops used in XCB and elsewhere.
# ##
# ## @{
# ##
# ## *
# ## Create a low-order bitmask.
# ## @param n Mask size.
# ## @return Mask.
# ##
# ## Create a bitmask with the lower @p n bits set and the
# ## rest of the word clear.
# ## @ingroup xcb__bitops
# ##
# proc xcb_mask*(n: uint32): uint32 =
# return if n == 32: not 0 else: (1 shl n) - 1
# ## *
# ## Population count.
# ## @param n Integer representing a bitset.
# ## @return Number of 1 bits in the bitset.
# ##
# ## This is a reasonably fast algorithm for counting the bits
# ## in a 32-bit word. Currently a classic binary
# ## divide-and-conquer popcount: popcount_2() from
# ## http://en.wikipedia.org/wiki/Hamming_weight.
# ## @ingroup xcb__bitops
# ##
# ## 15 ops, 3 long immediates, 14 stages, 9 alu ops, 9 alu stages
# proc xcb_popcount*(x: uint32): uint32 =
# var m1: uint32 = 0x55555555
# var m2: uint32 = 0x33333333
# var m4: uint32 = 0x0F0F0F0F
# dec(x, (x shr 1) and m1)
# x = (x and m2) + ((x shr 2) and m2)
# x = (x + (x shr 4)) and m4
# inc(x, x shr 8)
# return (x + (x shr 16)) and 0x0000003F
# ## *
# ## Round up to the next power-of-two unit size.
# ## @param base Number to be rounded up.
# ## @param pad Multiple to be rounded to; must be a power of two.
# ## @return Rounded-up number.
# ##
# ## Rounds @p base up to a multiple of @p pad, where @p pad
# ## is a power of two. The more general case is handled by
# ## xcb_roundup().
# ## @ingroup xcb__bitops
# ##
# proc xcb_roundup_2*(base: uint32; pad: uint32): uint32 =
# return (base + pad - 1) and -pad
# ## *
# ## Round down to the next power-of-two unit size.
# ## @param base Number to be rounded down.
# ## @param pad Multiple to be rounded to; must be a power of two.
# ## @return Rounded-down number.
# ##
# ## Rounds @p base down to a multiple of @p pad, where @p pad
# ## is a power of two. The more general case is handled by
# ## xcb_rounddown().
# ## @ingroup xcb__bitops
# ##
# proc xcb_rounddown_2*(base: uint32; pad: uint32): uint32 =
# return base and -pad
# ## *
# ## Round up to the next unit size.
# ## @param base Number to be rounded up.
# ## @param pad Multiple to be rounded to.
# ## @return Rounded-up number.
# ##
# ## This is a general routine for rounding @p base up
# ## to a multiple of @p pad. If you know that @p pad
# ## is a power of two, you should probably call xcb_roundup_2()
# ## instead.
# ## @ingroup xcb__bitops
# ##
# proc xcb_roundup*(base: uint32; pad: uint32): uint32 =
# var b: uint32 = base + pad - 1
# ## faster if pad is a power of two
# if ((pad - 1) and pad) == 0:
# return b and -pad
# return b - b mod pad
# ## *
# ## Round down to the next unit size.
# ## @param base Number to be rounded down.
# ## @param pad Multiple to be rounded to.
# ## @return Rounded-down number.
# ##
# ## This is a general routine for rounding @p base down
# ## to a multiple of @p pad. If you know that @p pad
# ## is a power of two, you should probably call xcb_rounddown_2()
# ## instead.
# ## @ingroup xcb__bitops
# ##
# proc xcb_rounddown*(base: uint32; pad: uint32): uint32 =
# ## faster if pad is a power of two
# if ((pad - 1) and pad) == 0:
# return base and -pad
# return base - base mod pad
# ## *
# ## Reverse bits of word.
# ## @param x Target word.
# ## @param n Number of low-order bits to reverse.
# ## @return Word with low @p n bits reversed, all others 0.
# ##
# ## Reverses the bottom @p n bits of @p x.
# ## @ingroup xcb__bitops
# ##
# proc xcb_bit_reverse*(x: uint32; n: uint8): uint32 =
# var m1: uint32 = 0x00FF00FF
# var m2: uint32 = 0x0F0F0F0F
# var m3: uint32 = 0x33333333
# var m4: uint32 = 0x55555555
# x = ((x shl 16) or (x shr 16))
# x = ((x and m1) shl 8) or ((x shr 8) and m1)
# x = ((x and m2) shl 4) or ((x shr 4) and m2)
# x = ((x and m3) shl 2) or ((x shr 2) and m3)
# x = ((x and m4) shl 1) or ((x shr 1) and m4)
# x = x shr (32 - n)
# return x
# ## *
# ## Host byte order.
# ## @return The byte order of the host.
# ##
# ## Tests the host's byte order and returns either
# ## XCB_IMAGE_ORDER_MSB_FIRST or XCB_IMAGE_ORDER_LSB_FIRST
# ## as appropriate.
# ## @ingroup xcb__bitops
# ##
# proc xcb_host_byte_order*(): xcb_image_order_t =
# var endian_test: uint32 = 0x01020304
# case cast[cstring](addr(endian_test))[]
# of 0x00000001:
# return XCB_IMAGE_ORDER_MSB_FIRST
# of 0x00000004:
# return XCB_IMAGE_ORDER_LSB_FIRST
# assert(0)
# ## Copyright © 2013 Michael Stapelberg
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__cursor_context_t XCB Cursor Functions
# ##
# ## These functions are the equivalent of libXcursor, but re-implemented for
# ## XCB. They respect the user’s configured cursor theme when loading cursors,
# ## specified by the X resources setting "Xcursor.theme".
# ##
# ## Here is how you would use these functions to change the X11 root window
# ## cursor to "watch":
# ## @code
# ## int screennr;
# ## xcb_connection_t *conn = xcb_connect(NULL, &screennr);
# ## if (conn == NULL || xcb_connection_has_error(conn))
# ## err(EXIT_FAILURE, "Could not connect to X11");
# ##
# ## xcb_screen_t *screen = xcb_aux_get_screen(conn, screennr);
# ## xcb_cursor_context_t *ctx;
# ## if (xcb_cursor_context_new(conn, screen, &ctx) < 0)
# ## err(EXIT_FAILURE, "Could not initialize xcb-cursor");
# ##
# ## xcb_cursor_t cid = xcb_cursor_load_cursor(ctx, "watch");
# ##
# ## xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data;
# ## xcb_change_window_attributes(conn, screen->root, XCB_CW_CURSOR, (uint32[]){ cid });
# ## xcb_flush(conn);
# ##
# ## xcb_cursor_context_free(ctx);
# ## xcb_disconnect(conn);
# ## @endcode
# ##
# ## @{
# ##
# ## *
# ## @struct xcb_cursor_context_t
# ## Describes a context for using this library.
# ##
# ## Create a context with @ref xcb_cursor_context_new (), then load one or more
# ## cursors with @ref xcb_cursor_load_cursor () and destroy the context with @ref
# ## xcb_cursor_context_free ().
# ##
# ## *
# ## Create a new @ref xcb_cursor_context_t.
# ##
# ## @param conn A working XCB connection, which will be used until you destroy
# ## the context with @ref xcb_cursor_context_free ().
# ## @param screen The xcb_screen_t to use (e.g. for getting the RESOURCE_MANAGER
# ## contents, for creating cursors on, for using the size as fallback when
# ## calculating the best cursor size).
# ## @param ctx A pointer to an xcb_cursor_context_t* which will be modified to
# ## refer to the newly created context.
# ## @return 0 on success, a negative error code otherwise.
# ##
# ## @ingroup xcb_cursor_context_t
# ##
# proc xcb_cursor_context_new*(conn: ptr xcb_connection_t; screen: ptr xcb_screen_t;
# ctx: ptr ptr xcb_cursor_context_t): cint
# ## *
# ## Loads the specified cursor, either from the cursor theme or by falling back
# ## to the X11 "cursor" font.
# ##
# ## @param ctx A cursor context, created with @ref xcb_cursor_context_new ()
# ## @param name The name of the cursor to load, e.g. "watch".
# ## @returns The ID of the created cursor. When you are done using it, use
# ## xcb_free_cursor. Calling @ref xcb_cursor_context_free () will NOT free the
# ## created cursor.
# ##
# ##
# proc xcb_cursor_load_cursor*(ctx: ptr xcb_cursor_context_t; name: cstring): xcb_cursor_t
# ## *
# ## Frees the @ref xcb_cursor_context_t.
# ##
# ## @param ctx The context to free.
# ##
# ##
# proc xcb_cursor_context_free*(ctx: ptr xcb_cursor_context_t)
# ## *
# ## @}
# ##
# ##
# ## Copyright (C) 2008-2009 Julien Danjou <julien@danjou.info>
# ##
# ## Permission is hereby granted, free of charge, to any person
# ## obtaining a copy of this software and associated documentation
# ## files (the "Software"), to deal in the Software without
# ## restriction, including without limitation the rights to use, copy,
# ## modify, merge, publish, distribute, sublicense, and/or sell copies
# ## of the Software, and to permit persons to whom the Software is
# ## furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be
# ## included in all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# ## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# ## CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# ## CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# ## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or
# ## their institutions shall not be used in advertising or otherwise to
# ## promote the sale, use or other dealings in this Software without
# ## prior written authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__event_t XCB Event Functions
# ##
# ## These functions ease the handling of X events received.
# ##
# ## @{
# ##
# ## *
# ## @brief Bit mask to find event type regardless of event source.
# ##
# ## Each event in the X11 protocol contains an 8-bit type code.
# ## The most-significant bit in this code is set if the event was
# ## generated from a SendEvent request. This mask can be used to
# ## determine the type of event regardless of how the event was
# ## generated. See the X11R6 protocol specification for details.
# ##
# const
# XCB_EVENT_RESPONSE_TYPE_MASK* = (0x0000007F)
# template XCB_EVENT_RESPONSE_TYPE*(e: untyped): untyped =
# (e.response_type and XCB_EVENT_RESPONSE_TYPE_MASK)
# template XCB_EVENT_SENT*(e: untyped): untyped =
# (e.response_type and not XCB_EVENT_RESPONSE_TYPE_MASK)
# ## *
# ## @brief Convert an event response type to a label.
# ## @param type The event type.
# ## @return A string with the event name, or NULL if unknown.
# ##
# proc xcb_event_get_label*(`type`: uint8): cstring
# ## *
# ## @brief Convert an event error type to a label.
# ## @param type The error type.
# ## @return A string with the event name, or NULL if unknown or if the event is
# ## not an error.
# ##
# proc xcb_event_get_error_label*(`type`: uint8): cstring
# ## *
# ## @brief Convert an event request type to a label.
# ## @param type The request type.
# ## @return A string with the event name, or NULL if unknown or if the event is
# ## not an error.
# ##
# proc xcb_event_get_request_label*(`type`: uint8): cstring
# ## *
# ## @}
# ##
# ##
# ## Copyright (C) 2009-2011 Arnaud Fontaine <arnau@debian.org>
# ##
# ## Permission is hereby granted, free of charge, to any person
# ## obtaining a copy of this software and associated documentation
# ## files (the "Software"), to deal in the Software without
# ## restriction, including without limitation the rights to use, copy,
# ## modify, merge, publish, distribute, sublicense, and/or sell copies
# ## of the Software, and to permit persons to whom the Software is
# ## furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be
# ## included in all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# ## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# ## CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# ## CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# ## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or
# ## their institutions shall not be used in advertising or otherwise to
# ## promote the sale, use or other dealings in this Software without
# ## prior written authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__ewmh_t XCB EWMH Functions
# ##
# ## These functions allow easy handling of the protocol described in
# ## the Extended Window Manager Hints specification. The list of Atoms
# ## is stored as an M4 file (atomlist.m4) where each Atom is stored as
# ## a variable defined in the header.
# ##
# ## Replies of requests generating a list of pointers (such as list of
# ## windows, atoms and UTF-8 strings) are simply stored as a structure
# ## holding the XCB reply which should (usually) never be accessed
# ## directly and has to be wipe afterwards. This structure provides a
# ## convenient access to the list given in the reply itself.
# ##
# ## @{
# ##
# ## *
# ## @brief Hold EWMH information specific to a screen
# ##
# type
# xcb_ewmh_connection_t* {.bycopy.} = object
# connection*: ptr xcb_connection_t ## * The X connection
# ## * The screens on this connection
# screens*: ptr ptr xcb_screen_t
# nb_screens*: cint ## * _NET_WM_CM_Sn atoms depending on the number of screens
# _NET_WM_CM_Sn*: ptr xcb_atom_t ## * The EWMH atoms of this connection
# _NET_SUPPORTED*: xcb_atom_t
# _NET_CLIENT_LIST*: xcb_atom_t
# _NET_CLIENT_LIST_STACKING*: xcb_atom_t
# _NET_NUMBER_OF_DESKTOPS*: xcb_atom_t
# _NET_DESKTOP_GEOMETRY*: xcb_atom_t
# _NET_DESKTOP_VIEWPORT*: xcb_atom_t
# _NET_CURRENT_DESKTOP*: xcb_atom_t
# _NET_DESKTOP_NAMES*: xcb_atom_t
# _NET_ACTIVE_WINDOW*: xcb_atom_t
# _NET_WORKAREA*: xcb_atom_t
# _NET_SUPPORTING_WM_CHECK*: xcb_atom_t
# _NET_VIRTUAL_ROOTS*: xcb_atom_t
# _NET_DESKTOP_LAYOUT*: xcb_atom_t
# _NET_SHOWING_DESKTOP*: xcb_atom_t
# _NET_CLOSE_WINDOW*: xcb_atom_t
# _NET_MOVERESIZE_WINDOW*: xcb_atom_t
# _NET_WM_MOVERESIZE*: xcb_atom_t
# _NET_RESTACK_WINDOW*: xcb_atom_t
# _NET_REQUEST_FRAME_EXTENTS*: xcb_atom_t
# _NET_WM_NAME*: xcb_atom_t
# _NET_WM_VISIBLE_NAME*: xcb_atom_t
# _NET_WM_ICON_NAME*: xcb_atom_t
# _NET_WM_VISIBLE_ICON_NAME*: xcb_atom_t
# _NET_WM_DESKTOP*: xcb_atom_t
# _NET_WM_WINDOW_TYPE*: xcb_atom_t
# _NET_WM_STATE*: xcb_atom_t
# _NET_WM_ALLOWED_ACTIONS*: xcb_atom_t
# _NET_WM_STRUT*: xcb_atom_t
# _NET_WM_STRUT_PARTIAL*: xcb_atom_t
# _NET_WM_ICON_GEOMETRY*: xcb_atom_t
# _NET_WM_ICON*: xcb_atom_t
# _NET_WM_PID*: xcb_atom_t
# _NET_WM_HANDLED_ICONS*: xcb_atom_t
# _NET_WM_USER_TIME*: xcb_atom_t
# _NET_WM_USER_TIME_WINDOW*: xcb_atom_t
# _NET_FRAME_EXTENTS*: xcb_atom_t
# _NET_WM_PING*: xcb_atom_t
# _NET_WM_SYNC_REQUEST*: xcb_atom_t
# _NET_WM_SYNC_REQUEST_COUNTER*: xcb_atom_t
# _NET_WM_FULLSCREEN_MONITORS*: xcb_atom_t
# _NET_WM_FULL_PLACEMENT*: xcb_atom_t
# UTF8_STRING*: xcb_atom_t
# WM_PROTOCOLS*: xcb_atom_t
# MANAGER*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_DESKTOP*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_DOCK*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_TOOLBAR*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_MENU*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_UTILITY*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_SPLASH*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_DIALOG*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_DROPDOWN_MENU*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_POPUP_MENU*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_TOOLTIP*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_NOTIFICATION*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_COMBO*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_DND*: xcb_atom_t
# _NET_WM_WINDOW_TYPE_NORMAL*: xcb_atom_t
# _NET_WM_STATE_MODAL*: xcb_atom_t
# _NET_WM_STATE_STICKY*: xcb_atom_t
# _NET_WM_STATE_MAXIMIZED_VERT*: xcb_atom_t
# _NET_WM_STATE_MAXIMIZED_HORZ*: xcb_atom_t
# _NET_WM_STATE_SHADED*: xcb_atom_t
# _NET_WM_STATE_SKIP_TASKBAR*: xcb_atom_t
# _NET_WM_STATE_SKIP_PAGER*: xcb_atom_t
# _NET_WM_STATE_HIDDEN*: xcb_atom_t
# _NET_WM_STATE_FULLSCREEN*: xcb_atom_t
# _NET_WM_STATE_ABOVE*: xcb_atom_t
# _NET_WM_STATE_BELOW*: xcb_atom_t
# _NET_WM_STATE_DEMANDS_ATTENTION*: xcb_atom_t
# _NET_WM_ACTION_MOVE*: xcb_atom_t
# _NET_WM_ACTION_RESIZE*: xcb_atom_t
# _NET_WM_ACTION_MINIMIZE*: xcb_atom_t
# _NET_WM_ACTION_SHADE*: xcb_atom_t
# _NET_WM_ACTION_STICK*: xcb_atom_t
# _NET_WM_ACTION_MAXIMIZE_HORZ*: xcb_atom_t
# _NET_WM_ACTION_MAXIMIZE_VERT*: xcb_atom_t
# _NET_WM_ACTION_FULLSCREEN*: xcb_atom_t
# _NET_WM_ACTION_CHANGE_DESKTOP*: xcb_atom_t
# _NET_WM_ACTION_CLOSE*: xcb_atom_t
# _NET_WM_ACTION_ABOVE*: xcb_atom_t
# _NET_WM_ACTION_BELOW*: xcb_atom_t
# ## *
# ## @brief Hold a GetProperty reply containing a list of Atoms
# ##
# type
# xcb_ewmh_get_atoms_reply_t* {.bycopy.} = object
# atoms_len*: uint32 ## * The number of Atoms
# ## * The list of Atoms
# atoms*: ptr xcb_atom_t ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Hold a GetProperty reply containing a list of Windows
# ##
# type
# xcb_ewmh_get_windows_reply_t* {.bycopy.} = object
# windows_len*: uint32 ## * The number of Windows
# ## * The list of Windows
# windows*: ptr xcb_window_t ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Hold a GetProperty reply containg a list of UTF-8 strings
# ##
# type
# xcb_ewmh_get_utf8_strings_reply_t* {.bycopy.} = object
# strings_len*: uint32 ## * The number of UTF-8 strings
# ## * The list of UTF-8 strings
# strings*: cstring ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Coordinates Property values
# ##
# type
# xcb_ewmh_coordinates_t* {.bycopy.} = object
# x*: uint32 ## * The x coordinate
# ## * The y coordinate
# y*: uint32
# ## *
# ## @brief Hold reply of _NET_DESKTOP_VIEWPORT GetProperty
# ##
# type
# xcb_ewmh_get_desktop_viewport_reply_t* {.bycopy.} = object
# desktop_viewport_len*: uint32 ## * The number of desktop viewports
# ## * The desktop viewports
# desktop_viewport*: ptr xcb_ewmh_coordinates_t ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Geometry Property values
# ##
# type
# xcb_ewmh_geometry_t* {.bycopy.} = object
# x*: uint32 ## * The x coordinate
# ## * The y coordinate
# y*: uint32 ## * The width
# width*: uint32 ## * The height
# height*: uint32
# ## *
# ## @brief Hold reply of a _NET_WORKAREA GetProperty
# ##
# type
# xcb_ewmh_get_workarea_reply_t* {.bycopy.} = object
# workarea_len*: uint32 ## * The number of desktop workarea
# ## * The list of desktop workarea
# workarea*: ptr xcb_ewmh_geometry_t ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Source indication in requests
# ##
# type ## * No source at all (for clients supporting an older version of
# ## EWMH specification)
# xcb_ewmh_client_source_type_t* = enum
# XCB_EWMH_CLIENT_SOURCE_TYPE_NONE = 0, ## * Normal application
# XCB_EWMH_CLIENT_SOURCE_TYPE_NORMAL = 1, ## * Pagers and other clients that represent direct user actions
# XCB_EWMH_CLIENT_SOURCE_TYPE_OTHER = 2
# ## *
# ## @brief _NET_DESKTOP_LAYOUT orientation
# ##
# type ## * Horizontal orientation (desktops laid out in rows)
# xcb_ewmh_desktop_layout_orientation_t* = enum
# XCB_EWMH_WM_ORIENTATION_HORZ = 0, ## * Vertical orientation (desktops laid out in columns)
# XCB_EWMH_WM_ORIENTATION_VERT = 1
# ## *
# ## @brief _NET_DESKTOP_LAYOUT starting corner
# ##
# type ## * Starting corner on the top left
# xcb_ewmh_desktop_layout_starting_corner_t* = enum
# XCB_EWMH_WM_TOPLEFT = 0, ## * Starting corner on the top right
# XCB_EWMH_WM_TOPRIGHT = 1, ## * Starting corner on the bottom right
# XCB_EWMH_WM_BOTTOMRIGHT = 2, ## * Starting corner on the bottom left
# XCB_EWMH_WM_BOTTOMLEFT = 3
# ## *
# ## @brief Hold reply of a _NET_DESKTOP_LAYOUT GetProperty
# ## @see xcb_ewmh_desktop_layout_orientation_t
# ## @see xcb_ewmh_desktop_layout_starting_corner_t
# ##
# type
# xcb_ewmh_get_desktop_layout_reply_t* {.bycopy.} = object
# orientation*: uint32 ## * The desktops orientation
# ## * The number of columns
# columns*: uint32 ## * The number of rows
# rows*: uint32 ## * The desktops starting corner
# starting_corner*: uint32
# ## *
# ## @brief _NET_WM_MOVERESIZE value when moving via keyboard
# ## @see xcb_ewmh_moveresize_direction_t
# ##
# type ## * The window x coordinate
# xcb_ewmh_moveresize_window_opt_flags_t* = enum
# XCB_EWMH_MOVERESIZE_WINDOW_X = (1 shl 8), ## * The window y coordinate
# XCB_EWMH_MOVERESIZE_WINDOW_Y = (1 shl 9), ## * The window width
# XCB_EWMH_MOVERESIZE_WINDOW_WIDTH = (1 shl 10), ## * The window height
# XCB_EWMH_MOVERESIZE_WINDOW_HEIGHT = (1 shl 11)
# ## *
# ## @brief _NET_WM_MOVERESIZE window movement or resizing
# ##
# type ## * Resizing applied on the top left edge
# xcb_ewmh_moveresize_direction_t* = enum
# XCB_EWMH_WM_MOVERESIZE_SIZE_TOPLEFT = 0, ## * Resizing applied on the top edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_TOP = 1, ## * Resizing applied on the top right edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_TOPRIGHT = 2, ## * Resizing applied on the right edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_RIGHT = 3, ## * Resizing applied on the bottom right edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4, ## * Resizing applied on the bottom edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOM = 5, ## * Resizing applied on the bottom left edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6, ## * Resizing applied on the left edge
# XCB_EWMH_WM_MOVERESIZE_SIZE_LEFT = 7, ## Movement only
# XCB_EWMH_WM_MOVERESIZE_MOVE = 8, ## Size via keyboard
# XCB_EWMH_WM_MOVERESIZE_SIZE_KEYBOARD = 9, ## Move via keyboard
# XCB_EWMH_WM_MOVERESIZE_MOVE_KEYBOARD = 10, ## Cancel operation
# XCB_EWMH_WM_MOVERESIZE_CANCEL = 11
# ## *
# ## @brief Action on the _NET_WM_STATE property
# ##
# type ## Remove/unset property
# xcb_ewmh_wm_state_action_t* = enum
# XCB_EWMH_WM_STATE_REMOVE = 0, ## Add/set property
# XCB_EWMH_WM_STATE_ADD = 1, ## Toggle property
# XCB_EWMH_WM_STATE_TOGGLE = 2
# ## *
# ## @brief Hold reply of _NET_WM_STRUT_PARTIAL GetProperty
# ##
# type
# xcb_ewmh_wm_strut_partial_t* {.bycopy.} = object
# left*: uint32 ## * Reserved space on the left border of the screen
# ## * Reserved space on the right border of the screen
# right*: uint32 ## * Reserved space on the top border of the screen
# top*: uint32 ## * Reserved space on the bottom border of the screen
# bottom*: uint32 ## * Beginning y coordinate of the left strut
# left_start_y*: uint32 ## * Ending y coordinate of the left strut
# left_end_y*: uint32 ## * Beginning y coordinate of the right strut
# right_start_y*: uint32 ## * Ending y coordinate of the right strut
# right_end_y*: uint32 ## * Beginning x coordinate of the top strut
# top_start_x*: uint32 ## * Ending x coordinate of the top strut
# top_end_x*: uint32 ## * Beginning x coordinate of the bottom strut
# bottom_start_x*: uint32 ## * Ending x coordinate of the bottom strut
# bottom_end_x*: uint32
# ## *
# ## @brief Hold a single icon from reply of _NET_WM_ICON GetProperty
# ##
# type
# xcb_ewmh_wm_icon_iterator_t* {.bycopy.} = object
# width*: uint32 ## * Icon width
# ## * Icon height
# height*: uint32 ## * Rows, left to right and top to bottom of the CARDINAL ARGB
# data*: ptr uint32 ## * Number of icons remaining
# rem*: uint8 ## * Index of the current icon in the array of icons
# index*: uint8
# ## *
# ## @brief Hold reply of _NET_WM_ICON GetProperty
# ##
# type
# xcb_ewmh_get_wm_icon_reply_t* {.bycopy.} = object
# num_icons*: uint8 ## * Number of icons
# ## * The actual GetProperty reply
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Hold reply of _NET_REQUEST_FRAME_EXTENTS GetProperty
# ##
# type
# xcb_ewmh_get_extents_reply_t* {.bycopy.} = object
# left*: uint32 ## * Width of the left border
# ## * Width of the right border
# right*: uint32 ## * Width of the top border
# top*: uint32 ## * Width of the bottom border
# bottom*: uint32
# ## *
# ## @brief Hold reply of _NET_WM_FULLSCREEN_MONITORS GetProperty
# ##
# type
# xcb_ewmh_get_wm_fullscreen_monitors_reply_t* {.bycopy.} = object
# top*: uint32 ## * Monitor whose top edge defines the top edge of the fullscreen
# ## window
# ## * Monitor whose bottom edge defines the bottom edge of the
# ## fullscreen window
# bottom*: uint32 ## * Monitor whose left edge defines the left edge of the fullscreen
# ## window
# left*: uint32 ## * Monitor whose right edge defines the right edge of the
# ## fullscreen window
# right*: uint32
# ## *
# ## @brief Send InternAtom requests for the EWMH atoms and its required atoms
# ##
# ## @param c The connection to the X server
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The cookies corresponding to EWMH atoms
# ##
# proc xcb_ewmh_connection_wipe*(ewmh: ptr xcb_ewmh_connection_t) {.inline.} =
# free(ewmh.screens)
# free(ewmh._NET_WM_CM_Sn)
# ## *
# ## @brief Send a SendEvent request containing a ClientMessage event
# ##
# ## This function is called by all the xcb_ewmh_request* functions
# ## whose should be used instead of calling directly this function
# ##
# ## @param c The X connection
# ## @param window The window where the action will be applied
# ## @param dest The destination window (usually the root window)
# ## @param atom The type of the message
# ## @param data_len The length of data to be sent
# ## @param data The data to be sent
# ## @return The cookie associated with the SendEvent request
# ##
# proc xcb_ewmh_send_client_message*(c: ptr xcb_connection_t; window: xcb_window_t;
# dest: xcb_window_t; atom: xcb_atom_t;
# data_len: uint32; data: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_window_from_reply*(window: ptr xcb_window_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# window: ptr xcb_window_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_get_cardinal_from_reply*(cardinal: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_cardinal_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# cardinal: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Get a list of atoms from a given GetProperty reply whose
# ## type is ATOM
# ##
# ## This function is called by all the xcb_ewmh_get_*_from_reply
# ## functions whose should be used instead of calling it directly.
# ## Indeed, The GetProperty request has been previously sent by the
# ## corresponding xcb_ewmh_get_*.
# ##
# ## @param atoms The atoms list
# ## @param r The reply to get the atoms list from
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_atoms_from_reply*(atoms: ptr xcb_ewmh_get_atoms_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Get a list of atoms from the reply of a GetProperty request
# ## whose type is ATOM
# ##
# ## This function is called by all the xcb_ewmh_get_*_reply functions
# ## whose should be used instead of calling it directly. The
# ## GetProperty request has been previously sent by the corresponding
# ## xcb_ewmh_get_*.
# ##
# ## @param ewmh The per-screen EWMH specific information
# ## @param cookie The GetProperty cookie
# ## @param atoms The atoms list
# ## @param e The error if any
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_atoms_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# atoms: ptr xcb_ewmh_get_atoms_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe the Atoms list reply
# ##
# ## This function must be called to free the memory allocated for atoms
# ## when the reply is requested in *_reply functions.
# ##
# ## @param data The X reply to be freed
# ##
# proc xcb_ewmh_get_atoms_reply_wipe*(data: ptr xcb_ewmh_get_atoms_reply_t)
# ## *
# ## @brief Get a list of atoms from a given GetProperty reply whose
# ## type is WINDOW
# ##
# ## This function is called by all the xcb_ewmh_get_*_from_reply
# ## functions whose should be used instead of calling it directly.
# ## Indeed, The GetProperty request has been previously sent by the
# ## corresponding xcb_ewmh_get_*.
# ##
# ## @param atoms The atoms list
# ## @param r The reply to get the atoms list from
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_windows_from_reply*(atoms: ptr xcb_ewmh_get_windows_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_utf8_strings_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
# data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_utf8_strings_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Get a list of atoms from the reply of a GetProperty request
# ## whose type is WINDOW
# ##
# ## This function is called by all the xcb_ewmh_get_*_reply functions
# ## whose should be used instead of calling it directly. The
# ## GetProperty request has been previously sent by the corresponding
# ## xcb_ewmh_get_*.
# ##
# ## @param ewmh The per-screen EWMH specific information
# ## @param cookie The GetProperty cookie
# ## @param atoms The atoms list
# ## @param e The error if any
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_windows_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# atoms: ptr xcb_ewmh_get_windows_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe the windows list reply
# ##
# ## This function must be called to the free the memory allocated for
# ## windows when the reply is requested in '_reply' functions.
# ##
# ## @param data The X reply to be freed
# ##
# proc xcb_ewmh_get_windows_reply_wipe*(data: ptr xcb_ewmh_get_windows_reply_t)
# ## *
# ## @brief Wipe the UTF-8 strings list reply
# ##
# ## This function must be called to the free the memory allocated for
# ## UTF-8 strings when the reply is requested in '_reply' functions.
# ##
# ## @param data The X reply to be freed
# ##
# proc xcb_ewmh_get_utf8_strings_reply_wipe*(
# data: ptr xcb_ewmh_get_utf8_strings_reply_t)
# ## *
# ## @brief Send a ChangeProperty request for _NET_SUPPORTED
# ##
# ## _NET_SUPPORTED, ATOM[]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of Atoms supported by the WM
# ## @param list The Atoms supported by the WM
# ## @return Cookie associated with the ChangeProperty _NET_SUPPORTED request
# ##
# proc xcb_ewmh_set_supported*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_supported
# ##
# proc xcb_ewmh_set_supported_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_SUPPORTED root window
# ## property
# ##
# ## _NET_SUPPORTED, ATOM[]/32
# ##
# ## This property MUST be set by the Window Manager to indicate which
# ## hints it supports. For example: considering _NET_WM_STATE both this
# ## atom and all supported states e.g. _NET_WM_STATE_MODAL,
# ## _NET_WM_STATE_STICKY, would be listed. This assumes that backwards
# ## incompatible changes will not be made to the hints (without being
# ## renamed).
# ##
# ## This form can be used only if the request will cause a reply to be
# ## generated. Any returned error will be placed in the event queue.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_SUPPORTED cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_supported_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_supported_unchecked
# ##
# proc xcb_ewmh_get_supported*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of supported atoms
# ##
# ## @param supported The list of atoms contained in the reply
# ## @param r GetProperty _NET_SUPPORTED reply
# ##
# proc xcb_ewmh_get_supported_from_reply*(supported: ptr xcb_ewmh_get_atoms_reply_t;
# r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_atoms_from_reply(supported, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_SUPPORTED cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_window_supported_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_SUPPORTED GetProperty request cookie
# ## @param supported The reply to be filled
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_supported_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# supported: ptr xcb_ewmh_get_atoms_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_atoms_reply(ewmh, cookie, supported, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_CLIENT_LIST
# ##
# ## _NET_CLIENT_LIST, WINDOW[]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of Atoms supported by the WM
# ## @param list The Atoms supported by the WM
# ## @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST request
# ##
# proc xcb_ewmh_set_client_list*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_client_list
# ##
# proc xcb_ewmh_set_client_list_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_CLIENT_LIST root window
# ## property
# ##
# ## This array contains all X Windows managed by the Window
# ## Manager. _NET_CLIENT_LIST has initial mapping order, starting with
# ## the oldest window. This property SHOULD be set and updated by the
# ## Window Manager.
# ##
# ## @param ewmh The information relative to EWMH.
# ## @return The _NET_CLIENT_LIST cookie of the GetProperty request.
# ##
# proc xcb_ewmh_get_client_list_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_CLIENT_LIST root window
# ## property
# ##
# ## @see xcb_ewmh_get_client_list_unchecked
# ## @param ewmh The information relative to EWMH.
# ## @return The _NET_CLIENT_LIST cookie of the GetProperty request.
# ##
# proc xcb_ewmh_get_client_list*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of client windows from a GetProperty
# ## _NET_CLIENT_LIST reply
# ##
# ## @param clients The list of clients contained in the reply
# ## @param r GetProperty _NET_CLIENT_LIST reply
# ##
# proc xcb_ewmh_get_client_list_from_reply*(
# clients: ptr xcb_ewmh_get_windows_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_windows_from_reply(clients, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_window_client_list_unchecked() is used. Otherwise, it
# ## stores the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_CLIENT_LIST GetProperty request cookie
# ## @param clients The list of clients to be filled
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_client_list_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# clients: ptr xcb_ewmh_get_windows_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_CLIENT_LIST_STACKING
# ##
# ## _NET_CLIENT_LIST_STACKING, WINDOW[]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of Atoms supported by the WM
# ## @param list The Atoms supported by the WM
# ## @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST_STACKING request
# ##
# proc xcb_ewmh_set_client_list_stacking*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_client_list_stacking
# ##
# proc xcb_ewmh_set_client_list_stacking_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_CLIENT_LIST_STACKING
# ## root window property
# ##
# ## This array contains all X Windows managed by the Window
# ## Manager. _NET_CLIENT_LIST_STACKING has initial mapping order,
# ## starting with the oldest window. This property SHOULD be set and
# ## updated by the Window Manager.
# ##
# ## @param ewmh The information relative to EWMH
# ## @return The _NET_CLIENT_LIST_STACKING cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_client_list_stacking_unchecked*(
# ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_client_list_unchecked
# ##
# proc xcb_ewmh_get_client_list_stacking*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of client windows from a GetProperty
# ## _NET_CLIENT_LIST_STACKING reply
# ##
# ## @param clients The list of clients contained in the reply
# ## @param r GetProperty _NET_CLIENT_LIST_STACKING reply
# ##
# proc xcb_ewmh_get_client_list_stacking_from_reply*(
# clients: ptr xcb_ewmh_get_windows_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_windows_from_reply(clients, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_CLIENT_LIST_STACKING
# ## cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_window_client_list_stacking_unchecked() is used.
# ## Otherwise, it stores the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_CLIENT_LIST_STACKING GetProperty request cookie
# ## @param clients The list of clients to be filled
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_client_list_stacking_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; clients: ptr xcb_ewmh_get_windows_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_NUMBER_OF_DESKTOPS
# ##
# ## _NET_NUMBER_OF_DESKTOPS? CARDINAL/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param number_of_desktops The number of desktops
# ## @return Cookie associated with the ChangeProperty _NET_NUMBER_OF_DESKTOPS request
# ##
# proc xcb_ewmh_set_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# number_of_desktops: uint32): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_number_of_desktops
# ##
# proc xcb_ewmh_set_number_of_desktops_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; number_of_desktops: uint32): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_NUMBER_OF_DESKTOPS root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_NUMBER_OF_DESKTOPS cookie of the GetProperty request.
# ##
# proc xcb_ewmh_get_number_of_desktops_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_number_of_desktops_unchecked
# ##
# proc xcb_ewmh_get_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of client windows from a GetProperty
# ## _NET_NUMBER_OF_DESKTOPS reply
# ##
# ## @param clients The list of clients contained in the reply
# ## @param r GetProperty _NET_NUMBER_OF_DESKTOPS reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_number_of_desktops_from_reply*(
# number_of_desktops: ptr uint32; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_from_reply(number_of_desktops, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_NUMBER_OF_DESKTOPS cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_window_number_of_desktops_unchecked() is used. Otherwise,
# ## it stores the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_NUMBER_OF_DESKTOPS GetProperty request cookie
# ## @param supported The reply to be filled
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_number_of_desktops_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; number_of_desktops: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, number_of_desktops, e)
# proc xcb_ewmh_request_change_number_of_desktops*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_number_of_desktops: uint32): xcb_void_cookie_t {.inline.} =
# return xcb_ewmh_send_client_message(ewmh.connection, XCB_NONE,
# ewmh.screens[screen_nbr].root,
# ewmh._NET_NUMBER_OF_DESKTOPS,
# sizeof((new_number_of_desktops)),
# addr(new_number_of_desktops))
# ## *
# ## @brief Send a ChangeProperty request for _NET_DESKTOP_GEOMETRY
# ##
# ## _NET_DESKTOP_GEOMETRY width, height, CARDINAL[2]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_width The new desktop width
# ## @param new_height The new desktop height
# ## @return Cookie associated with the ChangeProperty _NET_DESKTOP_GEOMETRY request
# ##
# proc xcb_ewmh_set_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_width: uint32;
# new_height: uint32): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_desktop_geometry
# ##
# proc xcb_ewmh_set_desktop_geometry_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_width: uint32; new_height: uint32): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_DESKTOP_GEOMETRY root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_DESKTOP_GEOMETRY cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_desktop_geometry_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_desktop_geometry_unchecked
# ##
# proc xcb_ewmh_get_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Send ClientMessage requesting to change the _NET_DESKTOP_GEOMETRY
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_width The new desktop width
# ## @param new_height The new desktop height
# ## @return The SendEvent cookie
# ##
# proc xcb_ewmh_request_change_desktop_geometry*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_width: uint32; new_height: uint32): xcb_void_cookie_t
# ## *
# ## @brief Get the desktop geometry from a GetProperty
# ## _NET_DESKTOP_GEOMETRY reply
# ##
# ## @param width The current desktop width
# ## @param height The current desktop height
# ## @param r GetProperty _NET_DESKTOP_GEOMETRY reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_geometry_from_reply*(width: ptr uint32;
# height: ptr uint32; r: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Get reply from the GetProperty _NET_DESKTOP_GEOMETRY cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_desktop_geometry_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_DESKTOP_GEOMETRY GetProperty request cookie
# ## @param width The current desktop width
# ## @param width The current desktop height
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_geometry_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; width: ptr uint32; height: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Send a ChangeProperty request for _NET_DESKTOP_VIEWPORT
# ##
# ## _NET_DESKTOP_VIEWPORT x, y, CARDINAL[][2]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of desktop viewports
# ## @param list The desktop viewports
# ## @return Cookie associated with the ChangeProperty _NET_DESKTOP_VIEWPORT request
# ##
# proc xcb_ewmh_set_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_ewmh_coordinates_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_desktop_viewport
# ##
# proc xcb_ewmh_set_desktop_viewport_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32; list: ptr xcb_ewmh_coordinates_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_DESKTOP_VIEWPORT root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_DESKTOP_VIEWPORT cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_desktop_viewport_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_desktop_viewport_unchecked
# ##
# proc xcb_ewmh_get_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Send ClientMessage requesting to change the _NET_DESKTOP_VIEWPORT
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_x The new x coordinate
# ## @param new_y The new y coordinate
# ## @return The SendEvent cookie
# ##
# proc xcb_ewmh_request_change_desktop_viewport*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; x: uint32; y: uint32): xcb_void_cookie_t
# ## *
# ## @brief Get the desktop geometry from a GetProperty
# ## _NET_DESKTOP_VIEWPORT reply
# ##
# ## @param vp The current desktop viewports
# ## @param r GetProperty _NET_DESKTOP_VIEWPORT reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_viewport_from_reply*(
# vp: ptr xcb_ewmh_get_desktop_viewport_reply_t; r: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Get reply from the GetProperty _NET_DESKTOP_VIEWPORT cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_desktop_viewport_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_DESKTOP_VIEWPORT GetProperty request cookie
# ## @param vp The current desktop viewports
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_viewport_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# vp: ptr xcb_ewmh_get_desktop_viewport_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe the desktop viewports list reply
# ##
# ## This function must be called to free the memory allocated for atoms
# ## when the reply is requested in xcb_ewmh_get_desktop_viewport_reply
# ## function.
# ##
# ## @param r The X reply to be freed
# ##
# proc xcb_ewmh_get_desktop_viewport_reply_wipe*(
# r: ptr xcb_ewmh_get_desktop_viewport_reply_t)
# ## *
# ## @brief Send a ChangeProperty request for _NET_CURRENT_DESKTOP
# ##
# ## _NET_CURRENT_DESKTOP desktop, CARDINAL/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_current_desktop The new current desktop
# ## @return Cookie associated with the ChangeProperty _NET_CURRENT_DESKTOP request
# ##
# proc xcb_ewmh_set_current_desktop*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_current_desktop: uint32): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_current_desktop
# ##
# proc xcb_ewmh_set_current_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_current_desktop: uint32): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_CURRENT_DESKTOP root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_CURRENT_DESKTOP cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_current_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_current_desktop_unchecked
# ##
# proc xcb_ewmh_get_current_desktop*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Send ClientMessage requesting to change the _NET_CURRENT_DESKTOP
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_desktop The new current desktop
# ## @param timestamp The request timestamp
# ## @return The SendEvent cookie
# ##
# proc xcb_ewmh_request_change_current_desktop*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; new_desktop: uint32; timestamp: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Get the desktop geometry from a GetProperty
# ## _NET_CURRENT_DESKTOP reply
# ##
# ## @param current_desktop The current desktop
# ## @param r GetProperty _NET_CURRENT_DESKTOP reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_current_desktop_from_reply*(current_desktop: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_from_reply(current_desktop, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_CURRENT_DESKTOP cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_current_desktop_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_CURRENT_DESKTOP GetProperty request cookie
# ## @param vp The current desktop
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_current_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# current_desktop: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, current_desktop, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_DESKTOP_NAMES
# ##
# ## _NET_DESKTOP_NAMES, UTF8_STRING[]
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param strings_len The number of desktop names
# ## @param strings The desktop names
# ## @return Cookie associated with the ChangeProperty _NET_DESKTOP_NAMES request
# ##
# proc xcb_ewmh_set_desktop_names*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# strings_len: uint32; strings: cstring): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_desktop_names
# ##
# proc xcb_ewmh_set_desktop_names_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; strings_len: uint32;
# strings: cstring): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_DESKTOP_NAMES root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @return The _NET_DESKTOP_NAMES cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_desktop_names_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_desktop_names_unchecked
# ##
# proc xcb_ewmh_get_desktop_names*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the desktop geometry from a GetProperty
# ## _NET_DESKTOP_NAMES reply
# ##
# ## @param ewmh The information relative to EWMH
# ## @param names The desktop names
# ## @param r GetProperty _NET_DESKTOP_NAMES reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_names_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
# names: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_from_reply(ewmh, names, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_DESKTOP_NAMES cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_desktop_names_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_DESKTOP_NAMES GetProperty request cookie
# ## @param names The desktop names
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_desktop_names_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; names: ptr xcb_ewmh_get_utf8_strings_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, names, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_ACTIVE_WINDOW
# ##
# ## _NET_ACTIVE_WINDOW, WINDOW/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param new_active_window The window to make active
# ## @return Cookie associated with the ChangeProperty _NET_ACTIVE_WINDOW request
# ##
# proc xcb_ewmh_set_active_window*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# new_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_active_window
# ##
# proc xcb_ewmh_set_active_window_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# new_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send ClientMessage requesting to change the _NET_ACTIVE_WINDOW
# ##
# ## The window ID of the currently active window or None if no window
# ## has the focus. This is a read-only property set by the Window
# ## Manager. If a Client wants to activate another window, it MUST send
# ## a _NET_ACTIVE_WINDOW client message to the root window. The
# ## timestamp is Client's last user activity timestamp at the time of
# ## the request, and the currently active window is the Client's active
# ## toplevel window, if any (the Window Manager may be e.g. more likely
# ## to obey the request if it will mean transferring focus from one
# ## active window to another).
# ##
# ## @see xcb_ewmh_client_source_type_t
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @param window_to_active The window ID to activate
# ## @param source_indication The source indication
# ## @param timestamp The client's last user activity timestamp
# ## @param current_active_window The currently active window or None
# ##
# proc xcb_ewmh_request_change_active_window*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; window_to_activate: xcb_window_t;
# source_indication: xcb_ewmh_client_source_type_t; timestamp: xcb_timestamp_t;
# current_active_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_ACTIVE_WINDOW root
# ## window property
# ##
# ## The window ID of the currently active window or None if no window
# ## has the focus. This is a read-only property set by the Window
# ## Manager. This property SHOULD be set and updated by the Window
# ## Manager.
# ##
# ## This form can be used only if the request will cause a reply to be
# ## generated. Any returned error will be placed in the event queue.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_active_window_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_ACTIVE_WINDOW root
# ## window property
# ##
# ## @see xcb_ewmh_get_active_window_unchecked
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_active_window*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of client windows from a GetProperty
# ## _NET_ACTIVE_WINDOW reply
# ##
# ## @param active_window The current active window
# ## @param r GetProperty _NET_ACTIVE_WINDOW_OF_DESKTOPS reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_active_window_from_reply*(active_window: ptr xcb_window_t;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_window_from_reply(active_window, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_ACTIVE_WINDOW cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_active_window_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH.
# ## @param cookie The _NET_ACTIVE_WINDOW GetProperty request cookie.
# ## @param active_window The reply to be filled.
# ## @param The xcb_generic_error_t supplied.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_ewmh_get_active_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# active_window: ptr xcb_window_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_window_reply(ewmh, cookie, active_window, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_WORKAREA
# ##
# ## _NET_WORKAREA, x, y, width, height CARDINAL[][4]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of desktops workareas
# ## @param list The desktops workareas
# ## @return Cookie associated with the ChangeProperty _NET_WORKAREA request
# ##
# proc xcb_ewmh_set_workarea*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# list_len: uint32; list: ptr xcb_ewmh_geometry_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_workarea
# ##
# proc xcb_ewmh_set_workarea_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_ewmh_geometry_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_WORKAREA root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_WORKAREA cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_workarea_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_virtual_roots_unchecked
# ##
# ## *
# ## @brief Wipe the workarea list reply
# ##
# ## This function must be called to free the memory allocated for atoms
# ## when the reply is requested in xcb_ewmh_get_workarea_reply
# ## function.
# ##
# ## @param r The X reply to be freed
# ##
# proc xcb_ewmh_get_workarea_reply_wipe*(r: ptr xcb_ewmh_get_workarea_reply_t)
# ## *
# ## @brief Send a ChangeProperty request for _NET_SUPPORTING_WM_CHECK
# ##
# ## _NET_SUPPORTING_WM_CHECK, WINDOW/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param parent_window The root window or child window created by the WM
# ## @param child_window The child window created by the WM
# ## @return Cookie associated with the ChangeProperty _NET_SUPPORTING_WM_CHECK request
# ##
# proc xcb_ewmh_set_supporting_wm_check*(ewmh: ptr xcb_ewmh_connection_t;
# parent_window: xcb_window_t;
# child_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_supporting_wm_check
# ##
# proc xcb_ewmh_set_supporting_wm_check_checked*(ewmh: ptr xcb_ewmh_connection_t;
# parent_window: xcb_window_t; child_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_SUPPORTING_WM_CHECK
# ## root window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_SUPPORTING_WM_CHECK cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_supporting_wm_check_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_supporting_wm_check_unchecked
# ##
# proc xcb_ewmh_get_supporting_wm_check*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Get the list of client windows from a GetProperty
# ## _NET_SUPPORTING_WM_CHECK reply
# ##
# ## @param window The child window created by the WM
# ## @param r GetProperty _NET_SUPPORTING_WM_CHECK reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_supporting_wm_check_from_reply*(window: ptr xcb_window_t;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_window_from_reply(window, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_SUPPORTING_WM_CHECK
# ## cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_supporting_wm_check_unchecked() is used. Otherwise, it
# ## stores the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_SUPPORTING_WM_CHECK GetProperty request cookie
# ## @param window The reply to be filled
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_supporting_wm_check_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; window: ptr xcb_window_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_window_reply(ewmh, cookie, window, e)
# ## *
# ## @brief Send a ChangeProperty request for _NET_VIRTUAL_ROOTS
# ##
# ## _NET_VIRTUAL_ROOTS, WINDOW[]/32
# ##
# ## @param ewmh The per-screen EWMH information
# ## @param screen_nbr The screen number
# ## @param list_len The number of virtual root windows
# ## @param list The virtual root windows
# ## @return Cookie associated with the ChangeProperty _NET_VIRTUAL_ROOTS request
# ##
# proc xcb_ewmh_set_virtual_roots*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_virtual_roots
# ##
# proc xcb_ewmh_set_virtual_roots_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; list_len: uint32;
# list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_VIRTUAL_ROOTS root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_VIRTUAL_ROOTS cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_virtual_roots_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_virtual_roots_unchecked
# ##
# proc xcb_ewmh_get_virtual_roots*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @brief Get the desktop geometry from a GetProperty _NET_WORKAREA
# ## reply
# ##
# ## @param virtual_roots The current virtual root windows
# ## @param r GetProperty _NET_VIRTUAL_ROOTS reply
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_virtual_roots_from_reply*(
# virtual_roots: ptr xcb_ewmh_get_windows_reply_t;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_windows_from_reply(virtual_roots, r)
# ## *
# ## @brief Get reply from the GetProperty _NET_VIRTUAL_ROOTS cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_virtual_roots_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param cookie The _NET_VIRTUAL_ROOTS GetProperty request cookie
# ## @param virtual_roots The current virtual root windows
# ## @param The xcb_generic_error_t supplied
# ## @return Return 1 on success, 0 otherwise
# ##
# proc xcb_ewmh_get_virtual_roots_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# virtual_roots: ptr xcb_ewmh_get_windows_reply_t; e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_windows_reply(ewmh, cookie, virtual_roots, e)
# proc xcb_ewmh_set_desktop_layout*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# orientation: xcb_ewmh_desktop_layout_orientation_t; columns: uint32;
# rows: uint32; starting_corner: xcb_ewmh_desktop_layout_starting_corner_t): xcb_void_cookie_t
# proc xcb_ewmh_set_desktop_layout_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; orientation: xcb_ewmh_desktop_layout_orientation_t;
# columns: uint32; rows: uint32;
# starting_corner: xcb_ewmh_desktop_layout_starting_corner_t): xcb_void_cookie_t
# ## *
# ## @brief Send GetProperty request to get _NET_DESKTOP_LAYOUT root
# ## window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_DESKTOP_LAYOUT cookie of the GetProperty request
# ##
# proc xcb_ewmh_get_desktop_layout_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# ## *
# ## @see xcb_ewmh_get_desktop_layout_unchecked
# ##
# proc xcb_ewmh_get_desktop_layout*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_desktop_layout_from_reply*(
# desktop_layouts: ptr xcb_ewmh_get_desktop_layout_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_desktop_layout_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# desktop_layouts: ptr xcb_ewmh_get_desktop_layout_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_showing_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_showing_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_property_cookie_t
# proc xcb_ewmh_get_showing_desktop_from_reply*(desktop: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_from_reply(desktop, r)
# proc xcb_ewmh_get_showing_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# desktop: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e)
# proc xcb_ewmh_request_change_showing_desktop*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; enter: uint32): xcb_void_cookie_t {.inline.} =
# return xcb_ewmh_send_client_message(ewmh.connection, XCB_NONE,
# ewmh.screens[screen_nbr].root,
# ewmh._NET_SHOWING_DESKTOP, sizeof((enter)),
# addr(enter))
# proc xcb_ewmh_request_close_window*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# window_to_close: xcb_window_t;
# timestamp: xcb_timestamp_t; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_request_moveresize_window*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# moveresize_window: xcb_window_t;
# gravity: xcb_gravity_t; source_indication: xcb_ewmh_client_source_type_t;
# flags: xcb_ewmh_moveresize_window_opt_flags_t; x: uint32; y: uint32;
# width: uint32; height: uint32): xcb_void_cookie_t
# proc xcb_ewmh_request_wm_moveresize*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# moveresize_window: xcb_window_t;
# x_root: uint32; y_root: uint32;
# direction: xcb_ewmh_moveresize_direction_t;
# button: xcb_button_index_t; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_request_restack_window*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# window_to_restack: xcb_window_t;
# sibling_window: xcb_window_t;
# detail: xcb_stack_mode_t): xcb_void_cookie_t
# proc xcb_ewmh_request_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; client_window: xcb_window_t): xcb_void_cookie_t {.
# inline.} =
# return xcb_ewmh_send_client_message(ewmh.connection, client_window,
# ewmh.screens[screen_nbr].root,
# ewmh._NET_REQUEST_FRAME_EXTENTS, 0, nil)
# proc xcb_ewmh_set_wm_name*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; strings_len: uint32;
# strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_name*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)
# proc xcb_ewmh_get_wm_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)
# proc xcb_ewmh_set_wm_visible_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; strings_len: uint32;
# strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_visible_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_visible_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
# data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)
# proc xcb_ewmh_get_wm_visible_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)
# proc xcb_ewmh_set_wm_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; strings_len: uint32;
# strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_icon_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t;
# strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_name_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_name_from_reply*(ewmh: ptr xcb_ewmh_connection_t;
# data: ptr xcb_ewmh_get_utf8_strings_reply_t; r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)
# proc xcb_ewmh_get_wm_icon_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)
# proc xcb_ewmh_set_wm_visible_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t;
# strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_visible_icon_name_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; strings_len: uint32; strings: cstring): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name_unchecked*(
# ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_visible_icon_name_from_reply*(
# ewmh: ptr xcb_ewmh_connection_t; data: ptr xcb_ewmh_get_utf8_strings_reply_t;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r)
# proc xcb_ewmh_get_wm_visible_icon_name_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# data: ptr xcb_ewmh_get_utf8_strings_reply_t; e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e)
# proc xcb_ewmh_set_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_desktop_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; desktop: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_desktop_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_desktop_from_reply*(desktop: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_from_reply(desktop, r)
# proc xcb_ewmh_get_wm_desktop_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# desktop: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e)
# proc xcb_ewmh_request_change_wm_desktop*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# client_window: xcb_window_t;
# new_desktop: uint32; source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_window_type*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; list_len: uint32;
# list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_window_type_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_window_type_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_window_type*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_window_type_from_reply*(
# wtypes: ptr xcb_ewmh_get_atoms_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_window_type_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# name: ptr xcb_ewmh_get_atoms_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_state*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_state_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; list_len: uint32;
# list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_state_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_state*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_state_from_reply*(wtypes: ptr xcb_ewmh_get_atoms_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_state_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# name: ptr xcb_ewmh_get_atoms_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_request_change_wm_state*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint;
# client_window: xcb_window_t;
# action: xcb_ewmh_wm_state_action_t;
# first_property: xcb_atom_t;
# second_property: xcb_atom_t;
# source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_allowed_actions*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; list_len: uint32;
# list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_allowed_actions_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_allowed_actions_from_reply*(
# wtypes: ptr xcb_ewmh_get_atoms_reply_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_allowed_actions_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; name: ptr xcb_ewmh_get_atoms_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_strut*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# left: uint32; right: uint32; top: uint32;
# bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_strut_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; left: uint32;
# right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_strut_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_from_reply*(struts: ptr xcb_ewmh_get_extents_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_strut_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# struts: ptr xcb_ewmh_get_extents_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_strut_partial*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t;
# wm_strut: xcb_ewmh_wm_strut_partial_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_strut_partial_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; wm_strut: xcb_ewmh_wm_strut_partial_t): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_strut_partial_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_partial*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_strut_partial_from_reply*(
# struts: ptr xcb_ewmh_wm_strut_partial_t; r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_strut_partial_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; struts: ptr xcb_ewmh_wm_strut_partial_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_set_wm_icon_geometry*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; left: uint32;
# right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_icon_geometry_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; left: uint32; right: uint32; top: uint32;
# bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_geometry_from_reply*(icons: ptr xcb_ewmh_geometry_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_geometry_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; icons: ptr xcb_ewmh_geometry_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Send ChangeProperty request to set _NET_WM_ICON window
# ## property. The given data is considered to be already
# ## prepared, namely that it is an array such as: WIDTH1,
# ## HEIGHT1, IMG1, WIDTH2, HEIGHT2, IMG2.
# ##
# ## If you only want to add or append a single icon, you may
# ## consider using xcb_ewmh_append_wm_icon_checked which is far
# ## easier to use.
# ##
# ## _NET_WM_ICON CARDINAL[][2+n]/32
# ##
# ## @param ewmh The information relative to EWMH
# ## @param mode ChangeProperty mode (xcb_prop_mode_t)
# ## @param window The window to set the property on
# ## @param data_len Length of the data
# ## @param data The data
# ##
# proc xcb_ewmh_set_wm_icon_checked*(ewmh: ptr xcb_ewmh_connection_t; mode: uint8;
# window: xcb_window_t; data_len: uint32;
# data: ptr uint32): xcb_void_cookie_t {.inline.} =
# return xcb_change_property_checked(ewmh.connection, mode, window,
# ewmh._NET_WM_ICON, XCB_ATOM_CARDINAL, 32,
# data_len, data)
# ## *
# ## @see xcb_ewmh_set_wm_icon_checked
# ##
# proc xcb_ewmh_set_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; mode: uint8;
# window: xcb_window_t; data_len: uint32;
# data: ptr uint32): xcb_void_cookie_t {.inline.} =
# return xcb_change_property(ewmh.connection, mode, window, ewmh._NET_WM_ICON,
# XCB_ATOM_CARDINAL, 32, data_len, data)
# proc xcb_ewmh_append_wm_icon_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; width: uint32;
# height: uint32; img_len: uint32;
# img: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_append_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# width: uint32; height: uint32; img_len: uint32;
# img: ptr uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_icon_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_icon_from_reply*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_get_wm_icon_iterator*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t): xcb_ewmh_wm_icon_iterator_t
# proc xcb_ewmh_get_wm_icon_length*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t): uint8
# proc xcb_ewmh_get_wm_icon_next*(`iterator`: ptr xcb_ewmh_wm_icon_iterator_t)
# proc xcb_ewmh_get_wm_icon_reply_wipe*(wm_icon: ptr xcb_ewmh_get_wm_icon_reply_t)
# proc xcb_ewmh_set_wm_pid*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_pid_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_pid_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_pid*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_pid_from_reply*(pid: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_from_reply(pid, r)
# proc xcb_ewmh_get_wm_pid_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# pid: ptr uint32; e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, pid, e)
# proc xcb_ewmh_set_wm_handled_icons*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; handled_icons: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_handled_icons_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; handled_icons: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_handled_icons_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_handled_icons*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_handled_icons_from_reply*(handled_icons: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_from_reply(handled_icons, r)
# proc xcb_ewmh_get_wm_handled_icons_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; handled_icons: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, handled_icons, e)
# proc xcb_ewmh_set_wm_user_time*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; xtime: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_user_time_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_user_time_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_from_reply*(xtime: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_from_reply(xtime, r)
# proc xcb_ewmh_get_wm_user_time_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# xtime: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.
# inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e)
# proc xcb_ewmh_set_wm_user_time_window*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; xtime: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_user_time_window_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; pid: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_user_time_window_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_window*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_user_time_window_from_reply*(xtime: ptr uint32;
# r: ptr xcb_get_property_reply_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_from_reply(xtime, r)
# proc xcb_ewmh_get_wm_user_time_window_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; xtime: ptr uint32;
# e: ptr ptr xcb_generic_error_t): uint8 {.inline.} =
# return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e)
# proc xcb_ewmh_set_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; left: uint32;
# right: uint32; top: uint32; bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_frame_extents_checked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; left: uint32;
# right: uint32; top: uint32;
# bottom: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_frame_extents_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_frame_extents*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_frame_extents_from_reply*(
# frame_extents: ptr xcb_ewmh_get_extents_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_frame_extents_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# frame_extents: ptr xcb_ewmh_get_extents_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_send_wm_ping*(ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# timestamp: xcb_timestamp_t): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_sync_request_counter*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; wm_sync_request_counter_atom: xcb_atom_t; low: uint32;
# high: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_sync_request_counter_checked*(
# ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t;
# wm_sync_request_counter_atom: xcb_atom_t; low: uint32; high: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter_unchecked*(
# ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_sync_request_counter_from_reply*(counter: ptr uint64;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_sync_request_counter_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t; counter: ptr uint64;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_send_wm_sync_request*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t;
# wm_protocols_atom: xcb_atom_t;
# wm_sync_request_atom: xcb_atom_t;
# timestamp: xcb_timestamp_t; counter: uint64): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_fullscreen_monitors*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t; top: uint32; bottom: uint32; left: uint32;
# right: uint32): xcb_void_cookie_t
# proc xcb_ewmh_set_wm_fullscreen_monitors_checked*(
# ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t; top: uint32;
# bottom: uint32; left: uint32; right: uint32): xcb_void_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors_unchecked*(
# ewmh: ptr xcb_ewmh_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors*(ewmh: ptr xcb_ewmh_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# proc xcb_ewmh_get_wm_fullscreen_monitors_from_reply*(
# monitors: ptr xcb_ewmh_get_wm_fullscreen_monitors_reply_t;
# r: ptr xcb_get_property_reply_t): uint8
# proc xcb_ewmh_get_wm_fullscreen_monitors_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_property_cookie_t;
# monitors: ptr xcb_ewmh_get_wm_fullscreen_monitors_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# proc xcb_ewmh_request_change_wm_fullscreen_monitors*(
# ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint; window: xcb_window_t;
# top: uint32; bottom: uint32; left: uint32; right: uint32;
# source_indication: xcb_ewmh_client_source_type_t): xcb_void_cookie_t
# ## *
# ## @brief Set _NET_WM_CM_Sn ownership to the given window
# ##
# ## For each screen they manage, compositing manager MUST acquire
# ## ownership of a selection named _NET_WM_CM_Sn, where n is the screen
# ## number.
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @param owner The new owner of _NET_WM_CM_Sn selection
# ## @param timestamp The client's last user activity timestamp
# ## @param selection_data1 Optional data described by ICCCM
# ## @param selection_data2 Optional data described by ICCCM
# ##
# proc xcb_ewmh_set_wm_cm_owner*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint;
# owner: xcb_window_t; timestamp: xcb_timestamp_t;
# selection_data1: uint32; selection_data2: uint32): xcb_void_cookie_t
# ## *
# ## @see xcb_ewmh_set_wm_cm_owner
# ##
# proc xcb_ewmh_set_wm_cm_owner_checked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint; owner: xcb_window_t;
# timestamp: xcb_timestamp_t;
# selection_data1: uint32;
# selection_data2: uint32): xcb_void_cookie_t
# ## *
# ## @brief Send GetSelectOwner request to get the owner of
# ## _NET_WM_CM_Sn root window property
# ##
# ## @param ewmh The information relative to EWMH
# ## @param screen_nbr The screen number
# ## @return The _NET_WM_CM_Sn cookie of the GetSelectionOwner request
# ##
# proc xcb_ewmh_get_wm_cm_owner_unchecked*(ewmh: ptr xcb_ewmh_connection_t;
# screen_nbr: cint): xcb_get_selection_owner_cookie_t
# ## *
# ## @see xcb_ewmh_get_wm_cm_owner_unchecked
# ##
# proc xcb_ewmh_get_wm_cm_owner*(ewmh: ptr xcb_ewmh_connection_t; screen_nbr: cint): xcb_get_selection_owner_cookie_t
# proc xcb_ewmh_get_wm_cm_owner_from_reply*(owner: ptr xcb_window_t;
# r: ptr xcb_get_selection_owner_reply_t): uint8
# ## *
# ## @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_get_window_client_list_unchecked() is used. Otherwise, it
# ## stores the error if any.
# ##
# ## @param ewmh The information relative to EWMH.
# ## @param cookie The _NET_WM_CM_Sn GetSelectionOwner request cookie.
# ## @param owner The window ID which owns the selection or None.
# ## @param The xcb_generic_error_t supplied.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_ewmh_get_wm_cm_owner_reply*(ewmh: ptr xcb_ewmh_connection_t;
# cookie: xcb_get_selection_owner_cookie_t;
# owner: ptr xcb_window_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @}
# ##
# ##
# ## Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
# ## All Rights Reserved.
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# ## xcb_ext.c
# ## xcb_out.c
# type
# xcb_protocol_request_t* {.bycopy.} = object
# count*: csize
# ext*: ptr xcb_extension_t
# opcode*: uint8
# isvoid*: uint8
# xcb_send_request_flags_t* = enum
# XCB_REQUEST_CHECKED = 1 shl 0, XCB_REQUEST_RAW = 1 shl 1,
# XCB_REQUEST_DISCARD_REPLY = 1 shl 2, XCB_REQUEST_REPLY_FDS = 1 shl 3
# ## *
# ## @brief Send a request to the server.
# ## @param c The connection to the X server.
# ## @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ## @param vector Data to send; must have two iovecs before start for internal use.
# ## @param request Information about the request to be sent.
# ## @return The request's sequence number on success, 0 otherwise.
# ##
# ## This function sends a new request to the X server. The data of the request is
# ## given as an array of @c iovecs in the @p vector argument. The length of that
# ## array and the necessary management information are given in the @p request
# ## argument.
# ##
# ## When this function returns, the request might or might not be sent already.
# ## Use xcb_flush() to make sure that it really was sent.
# ##
# ## Please note that this function is not the preferred way for sending requests.
# ## It's better to use the generated wrapper functions.
# ##
# ## Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ## so they must be valid!
# ##
# proc xcb_send_request*(c: ptr xcb_connection_t; flags: cint; vector: ptr iovec;
# request: ptr xcb_protocol_request_t): uint8
# ## *
# ## @brief Send a request to the server.
# ## @param c The connection to the X server.
# ## @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ## @param vector Data to send; must have two iovecs before start for internal use.
# ## @param request Information about the request to be sent.
# ## @param num_fds Number of additional file descriptors to send to the server
# ## @param fds Additional file descriptors that should be send to the server.
# ## @return The request's sequence number on success, 0 otherwise.
# ##
# ## This function sends a new request to the X server. The data of the request is
# ## given as an array of @c iovecs in the @p vector argument. The length of that
# ## array and the necessary management information are given in the @p request
# ## argument.
# ##
# ## If @p num_fds is non-zero, @p fds points to an array of file descriptors that
# ## will be sent to the X server along with this request. After this function
# ## returns, all file descriptors sent are owned by xcb and will be closed
# ## eventually.
# ##
# ## When this function returns, the request might or might not be sent already.
# ## Use xcb_flush() to make sure that it really was sent.
# ##
# ## Please note that this function is not the preferred way for sending requests.
# ##
# ## Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ## so they must be valid!
# ##
# proc xcb_send_request_with_fds*(c: ptr xcb_connection_t; flags: cint;
# vector: ptr iovec;
# request: ptr xcb_protocol_request_t; num_fds: uint8;
# fds: ptr cint): uint8
# ## *
# ## @brief Send a request to the server, with 64-bit sequence number returned.
# ## @param c The connection to the X server.
# ## @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ## @param vector Data to send; must have two iovecs before start for internal use.
# ## @param request Information about the request to be sent.
# ## @return The request's sequence number on success, 0 otherwise.
# ##
# ## This function sends a new request to the X server. The data of the request is
# ## given as an array of @c iovecs in the @p vector argument. The length of that
# ## array and the necessary management information are given in the @p request
# ## argument.
# ##
# ## When this function returns, the request might or might not be sent already.
# ## Use xcb_flush() to make sure that it really was sent.
# ##
# ## Please note that this function is not the preferred way for sending requests.
# ## It's better to use the generated wrapper functions.
# ##
# ## Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ## so they must be valid!
# ##
# proc xcb_send_request64*(c: ptr xcb_connection_t; flags: cint; vector: ptr iovec;
# request: ptr xcb_protocol_request_t): uint64
# ## *
# ## @brief Send a request to the server, with 64-bit sequence number returned.
# ## @param c The connection to the X server.
# ## @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ## @param vector Data to send; must have two iovecs before start for internal use.
# ## @param request Information about the request to be sent.
# ## @param num_fds Number of additional file descriptors to send to the server
# ## @param fds Additional file descriptors that should be send to the server.
# ## @return The request's sequence number on success, 0 otherwise.
# ##
# ## This function sends a new request to the X server. The data of the request is
# ## given as an array of @c iovecs in the @p vector argument. The length of that
# ## array and the necessary management information are given in the @p request
# ## argument.
# ##
# ## If @p num_fds is non-zero, @p fds points to an array of file descriptors that
# ## will be sent to the X server along with this request. After this function
# ## returns, all file descriptors sent are owned by xcb and will be closed
# ## eventually.
# ##
# ## When this function returns, the request might or might not be sent already.
# ## Use xcb_flush() to make sure that it really was sent.
# ##
# ## Please note that this function is not the preferred way for sending requests.
# ## It's better to use the generated wrapper functions.
# ##
# ## Please note that xcb might use index -1 and -2 of the @p vector array internally,
# ## so they must be valid!
# ##
# proc xcb_send_request_with_fds64*(c: ptr xcb_connection_t; flags: cint;
# vector: ptr iovec;
# request: ptr xcb_protocol_request_t;
# num_fds: uint8; fds: ptr cint): uint64
# ## *
# ## @brief Send a file descriptor to the server in the next call to xcb_send_request.
# ## @param c The connection to the X server.
# ## @param fd The file descriptor to send.
# ##
# ## After this function returns, the file descriptor given is owned by xcb and
# ## will be closed eventually.
# ##
# ## @deprecated This function cannot be used in a thread-safe way. Two threads
# ## that run xcb_send_fd(); xcb_send_request(); could mix up their file
# ## descriptors. Instead, xcb_send_request_with_fds() should be used.
# ##
# proc xcb_send_fd*(c: ptr xcb_connection_t; fd: cint)
# ## *
# ## @brief Take over the write side of the socket
# ## @param c The connection to the X server.
# ## @param return_socket Callback function that will be called when xcb wants
# ## to use the socket again.
# ## @param closure Argument to the callback function.
# ## @param flags A combination of flags from the xcb_send_request_flags_t enumeration.
# ## @param sent Location to the sequence number of the last sequence request.
# ## Must not be NULL.
# ## @return 1 on success, else 0.
# ##
# ## xcb_take_socket allows external code to ask XCB for permission to
# ## take over the write side of the socket and send raw data with
# ## xcb_writev. xcb_take_socket provides the sequence number of the last
# ## request XCB sent. The caller of xcb_take_socket must supply a
# ## callback which XCB can call when it wants the write side of the
# ## socket back to make a request. This callback synchronizes with the
# ## external socket owner and flushes any output queues if appropriate.
# ## If you are sending requests which won't cause a reply, please note the
# ## comment for xcb_writev which explains some sequence number wrap issues.
# ##
# ## All replies that are generated while the socket is owned externally have
# ## @p flags applied to them. For example, use XCB_REQUEST_CHECK if you don't
# ## want errors to go to xcb's normal error handling, but instead having to be
# ## picked up via xcb_wait_for_reply(), xcb_poll_for_reply() or
# ## xcb_request_check().
# ##
# proc xcb_take_socket*(c: ptr xcb_connection_t;
# return_socket: proc (closure: pointer); closure: pointer;
# flags: cint; sent: ptr uint64): cint
# ## *
# ## @brief Send raw data to the X server.
# ## @param c The connection to the X server.
# ## @param vector Array of data to be sent.
# ## @param count Number of entries in @p vector.
# ## @param requests Number of requests that are being sent.
# ## @return 1 on success, else 0.
# ##
# ## You must own the write-side of the socket (you've called
# ## xcb_take_socket, and haven't returned from return_socket yet) to call
# ## xcb_writev. Also, the iovec must have at least 1 byte of data in it.
# ## You have to make sure that xcb can detect sequence number wraps correctly.
# ## This means that the first request you send after xcb_take_socket must cause a
# ## reply (e.g. just insert a GetInputFocus request). After every (1 << 16) - 1
# ## requests without a reply, you have to insert a request which will cause a
# ## reply. You can again use GetInputFocus for this. You do not have to wait for
# ## any of the GetInputFocus replies, but can instead handle them via
# ## xcb_discard_reply().
# ##
# proc xcb_writev*(c: ptr xcb_connection_t; vector: ptr iovec; count: cint;
# requests: uint64): cint
# ## xcb_in.c
# ## *
# ## @brief Wait for the reply of a given request.
# ## @param c The connection to the X server.
# ## @param request Sequence number of the request as returned by xcb_send_request().
# ## @param e Location to store errors in, or NULL. Ignored for unchecked requests.
# ##
# ## Returns the reply to the given request or returns null in the event of
# ## errors. Blocks until the reply or error for the request arrives, or an I/O
# ## error occurs.
# ##
# proc xcb_wait_for_reply*(c: ptr xcb_connection_t; request: uint8;
# e: ptr ptr xcb_generic_error_t): pointer
# ## *
# ## @brief Wait for the reply of a given request, with 64-bit sequence number
# ## @param c The connection to the X server.
# ## @param request 64-bit sequence number of the request as returned by xcb_send_request64().
# ## @param e Location to store errors in, or NULL. Ignored for unchecked requests.
# ##
# ## Returns the reply to the given request or returns null in the event of
# ## errors. Blocks until the reply or error for the request arrives, or an I/O
# ## error occurs.
# ##
# ## Unlike its xcb_wait_for_reply() counterpart, the given sequence number is not
# ## automatically "widened" to 64-bit.
# ##
# proc xcb_wait_for_reply64*(c: ptr xcb_connection_t; request: uint64;
# e: ptr ptr xcb_generic_error_t): pointer
# ## *
# ## @brief Poll for the reply of a given request.
# ## @param c The connection to the X server.
# ## @param request Sequence number of the request as returned by xcb_send_request().
# ## @param reply Location to store the reply in, must not be NULL.
# ## @param error Location to store errors in, or NULL. Ignored for unchecked requests.
# ## @return 1 when the reply to the request was returned, else 0.
# ##
# ## Checks if the reply to the given request already received. Does not block.
# ##
# proc xcb_poll_for_reply*(c: ptr xcb_connection_t; request: uint8; reply: ptr pointer;
# error: ptr ptr xcb_generic_error_t): cint
# ## *
# ## @brief Poll for the reply of a given request, with 64-bit sequence number.
# ## @param c The connection to the X server.
# ## @param request 64-bit sequence number of the request as returned by xcb_send_request().
# ## @param reply Location to store the reply in, must not be NULL.
# ## @param error Location to store errors in, or NULL. Ignored for unchecked requests.
# ## @return 1 when the reply to the request was returned, else 0.
# ##
# ## Checks if the reply to the given request already received. Does not block.
# ##
# ## Unlike its xcb_poll_for_reply() counterpart, the given sequence number is not
# ## automatically "widened" to 64-bit.
# ##
# proc xcb_poll_for_reply64*(c: ptr xcb_connection_t; request: uint64;
# reply: ptr pointer; error: ptr ptr xcb_generic_error_t): cint
# ## *
# ## @brief Don't use this, only needed by the generated code.
# ## @param c The connection to the X server.
# ## @param reply A reply that was received from the server
# ## @param replylen The size of the reply.
# ## @return Pointer to the location where received file descriptors are stored.
# ##
# proc xcb_get_reply_fds*(c: ptr xcb_connection_t; reply: pointer; replylen: csize): ptr cint
# ## xcb_util.c
# ## *
# ## @param mask The mask to check
# ## @return The number of set bits in the mask
# ##
# proc xcb_popcount*(mask: uint32): cint
# ## *
# ## @param list The base of an array
# ## @param len The length of the array
# ## @return The sum of all entries in the array.
# ##
# proc xcb_sumof*(list: ptr uint8; len: cint): cint
# ##
# ## Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
# ## All Rights Reserved.
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# when defined(__solaris__):
# else:
# when not defined(_WIN32):
# else:
# import
# xcb_windefs
# ## *
# ## @file xcb.h
# ##
# const
# XCB_PACKED* = __attribute__((__packed__))
# ## *
# ## @defgroup XCB_Core_API XCB Core API
# ## @brief Core API of the XCB library.
# ##
# ## @{
# ##
# ## Pre-defined constants
# ## * Current protocol version
# const
# X_PROTOCOL* = 11
# ## * Current minor version
# const
# X_PROTOCOL_REVISION* = 0
# ## * X_TCP_PORT + display number = server port for TCP transport
# const
# X_TCP_PORT* = 6000
# ## * xcb connection errors because of socket, pipe and other stream errors.
# const
# XCB_CONN_ERROR* = 1
# ## * xcb connection shutdown because of extension not supported
# const
# XCB_CONN_CLOSED_EXT_NOTSUPPORTED* = 2
# ## * malloc(), calloc() and realloc() error upon failure, for eg ENOMEM
# const
# XCB_CONN_CLOSED_MEM_INSUFFICIENT* = 3
# ## * Connection closed, exceeding request length that server accepts.
# const
# XCB_CONN_CLOSED_REQ_LEN_EXCEED* = 4
# ## * Connection closed, error during parsing display string.
# const
# XCB_CONN_CLOSED_PARSE_ERR* = 5
# ## * Connection closed because the server does not have a screen matching the display.
# const
# XCB_CONN_CLOSED_INVALID_SCREEN* = 6
# ## * Connection closed because some FD passing operation failed
# const
# XCB_CONN_CLOSED_FDPASSING_FAILED* = 7
# template XCB_TYPE_PAD*(T, I: untyped): untyped =
# (-(I) and (if sizeof((T)) > 4: 3 else: sizeof((T)) - 1))
# ## Opaque structures
# ## *
# ## @brief XCB Connection structure.
# ##
# ## A structure that contain all data that XCB needs to communicate with an X server.
# ##
# ## *< Opaque structure containing all data that XCB needs to communicate with an X server.
# ## Other types
# ## *
# ## @brief Generic iterator.
# ##
# ## A generic iterator structure.
# ##
# type
# xcb_generic_iterator_t* {.bycopy.} = object
# data*: pointer ## *< Data of the current iterator
# rem*: cint ## *< remaining elements
# index*: cint ## *< index of the current iterator
# ## *
# ## @brief Generic reply.
# ##
# ## A generic reply structure.
# ##
# type
# xcb_generic_reply_t* {.bycopy.} = object
# response_type*: uint8 ## *< Type of the response
# pad0*: uint8 ## *< Padding
# sequence*: uint16 ## *< Sequence number
# length*: uint32 ## *< Length of the response
# ## *
# ## @brief Generic event.
# ##
# ## A generic event structure.
# ##
# type
# xcb_generic_event_t* {.bycopy.} = object
# response_type*: uint8 ## *< Type of the response
# pad0*: uint8 ## *< Padding
# sequence*: uint16 ## *< Sequence number
# pad*: array[7, uint32] ## *< Padding
# full_sequence*: uint32 ## *< full sequence
# ## *
# ## @brief Raw Generic event.
# ##
# ## A generic event structure as used on the wire, i.e., without the full_sequence field
# ##
# type
# xcb_raw_generic_event_t* {.bycopy.} = object
# response_type*: uint8 ## *< Type of the response
# pad0*: uint8 ## *< Padding
# sequence*: uint16 ## *< Sequence number
# pad*: array[7, uint32] ## *< Padding
# ## *
# ## @brief GE event
# ##
# ## An event as sent by the XGE extension. The length field specifies the
# ## number of 4-byte blocks trailing the struct.
# ##
# ## @deprecated Since some fields in this struct have unfortunate names, it is
# ## recommended to use xcb_ge_generic_event_t instead.
# ##
# type
# xcb_ge_event_t* {.bycopy.} = object
# response_type*: uint8 ## *< Type of the response
# pad0*: uint8 ## *< Padding
# sequence*: uint16 ## *< Sequence number
# length*: uint32
# event_type*: uint16
# pad1*: uint16
# pad*: array[5, uint32] ## *< Padding
# full_sequence*: uint32 ## *< full sequence
# ## *
# ## @brief Generic error.
# ##
# ## A generic error structure.
# ##
# type
# xcb_generic_error_t* {.bycopy.} = object
# response_type*: uint8 ## *< Type of the response
# error_code*: uint8 ## *< Error code
# sequence*: uint16 ## *< Sequence number
# resource_id*: uint32 ## * < Resource ID for requests with side effects only
# minor_code*: uint16 ## * < Minor opcode of the failed request
# major_code*: uint8 ## * < Major opcode of the failed request
# pad0*: uint8
# pad*: array[5, uint32] ## *< Padding
# full_sequence*: uint32 ## *< full sequence
# ## *
# ## @brief Generic cookie.
# ##
# ## A generic cookie structure.
# ##
# type
# xcb_void_cookie_t* {.bycopy.} = object
# sequence*: uint8 ## *< Sequence number
# ## Include the generated xproto header.
# import
# xproto
# ## * XCB_NONE is the universal null resource or null atom parameter value for many core X requests
# const
# XCB_NONE* = 0
# ## * XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters
# const
# XCB_COPY_FROM_PARENT* = 0
# ## * XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t
# const
# XCB_CURRENT_TIME* = 0
# ## * XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables
# const
# XCB_NO_SYMBOL* = 0
# ## xcb_auth.c
# ## *
# ## @brief Container for authorization information.
# ##
# ## A container for authorization information to be sent to the X server.
# ##
# type
# xcb_auth_info_t* {.bycopy.} = object
# namelen*: cint ## *< Length of the string name (as returned by strlen).
# name*: cstring ## *< String containing the authentication protocol name, such as "MIT-MAGIC-COOKIE-1" or "XDM-AUTHORIZATION-1".
# datalen*: cint ## *< Length of the data member.
# data*: cstring ## *< Data interpreted in a protocol-specific manner.
# ## xcb_out.c
# ## *
# ## @brief Forces any buffered output to be written to the server.
# ## @param c The connection to the X server.
# ## @return > @c 0 on success, <= @c 0 otherwise.
# ##
# ## Forces any buffered output to be written to the server. Blocks
# ## until the write is complete.
# ##
# proc xcb_flush*(c: ptr xcb_connection_t): cint
# ## *
# ## @brief Returns the maximum request length that this server accepts.
# ## @param c The connection to the X server.
# ## @return The maximum request length field.
# ##
# ## In the absence of the BIG-REQUESTS extension, returns the
# ## maximum request length field from the connection setup data, which
# ## may be as much as 65535. If the server supports BIG-REQUESTS, then
# ## the maximum request length field from the reply to the
# ## BigRequestsEnable request will be returned instead.
# ##
# ## Note that this length is measured in four-byte units, making the
# ## theoretical maximum lengths roughly 256kB without BIG-REQUESTS and
# ## 16GB with.
# ##
# proc xcb_get_maximum_request_length*(c: ptr xcb_connection_t): uint32
# ## *
# ## @brief Prefetch the maximum request length without blocking.
# ## @param c The connection to the X server.
# ##
# ## Without blocking, does as much work as possible toward computing
# ## the maximum request length accepted by the X server.
# ##
# ## Invoking this function may cause a call to xcb_big_requests_enable,
# ## but will not block waiting for the reply.
# ## xcb_get_maximum_request_length will return the prefetched data
# ## after possibly blocking while the reply is retrieved.
# ##
# ## Note that in order for this function to be fully non-blocking, the
# ## application must previously have called
# ## xcb_prefetch_extension_data(c, &xcb_big_requests_id) and the reply
# ## must have already arrived.
# ##
# proc xcb_prefetch_maximum_request_length*(c: ptr xcb_connection_t)
# ## xcb_in.c
# ## *
# ## @brief Returns the next event or error from the server.
# ## @param c The connection to the X server.
# ## @return The next event from the server.
# ##
# ## Returns the next event or error from the server, or returns null in
# ## the event of an I/O error. Blocks until either an event or error
# ## arrive, or an I/O error occurs.
# ##
# proc xcb_wait_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t
# ## *
# ## @brief Returns the next event or error from the server.
# ## @param c The connection to the X server.
# ## @return The next event from the server.
# ##
# ## Returns the next event or error from the server, if one is
# ## available, or returns @c NULL otherwise. If no event is available, that
# ## might be because an I/O error like connection close occurred while
# ## attempting to read the next event, in which case the connection is
# ## shut down when this function returns.
# ##
# proc xcb_poll_for_event*(c: ptr xcb_connection_t): ptr xcb_generic_event_t
# ## *
# ## @brief Returns the next event without reading from the connection.
# ## @param c The connection to the X server.
# ## @return The next already queued event from the server.
# ##
# ## This is a version of xcb_poll_for_event that only examines the
# ## event queue for new events. The function doesn't try to read new
# ## events from the connection if no queued events are found.
# ##
# ## This function is useful for callers that know in advance that all
# ## interesting events have already been read from the connection. For
# ## example, callers might use xcb_wait_for_reply and be interested
# ## only of events that preceded a specific reply.
# ##
# type
# xcb_special_event_t* = xcb_special_event
# ## *
# ## @brief Returns the next event from a special queue
# ##
# proc xcb_poll_for_special_event*(c: ptr xcb_connection_t;
# se: ptr xcb_special_event_t): ptr xcb_generic_event_t
# ## *
# ## @brief Returns the next event from a special queue, blocking until one arrives
# ##
# proc xcb_wait_for_special_event*(c: ptr xcb_connection_t;
# se: ptr xcb_special_event_t): ptr xcb_generic_event_t
# ## *
# ## @typedef typedef struct xcb_extension_t xcb_extension_t
# ##
# ## *< Opaque structure used as key for xcb_get_extension_data_t.
# ## *
# ## @brief Listen for a special event
# ##
# proc xcb_register_for_special_xge*(c: ptr xcb_connection_t;
# ext: ptr xcb_extension_t; eid: uint32;
# stamp: ptr uint32): ptr xcb_special_event_t
# ## *
# ## @brief Stop listening for a special event
# ##
# proc xcb_unregister_for_special_event*(c: ptr xcb_connection_t;
# se: ptr xcb_special_event_t)
# ## *
# ## @brief Return the error for a request, or NULL if none can ever arrive.
# ## @param c The connection to the X server.
# ## @param cookie The request cookie.
# ## @return The error for the request, or NULL if none can ever arrive.
# ##
# ## The xcb_void_cookie_t cookie supplied to this function must have resulted
# ## from a call to xcb_[request_name]_checked(). This function will block
# ## until one of two conditions happens. If an error is received, it will be
# ## returned. If a reply to a subsequent request has already arrived, no error
# ## can arrive for this request, so this function will return NULL.
# ##
# ## Note that this function will perform a sync if needed to ensure that the
# ## sequence number will advance beyond that provided in cookie; this is a
# ## convenience to avoid races in determining whether the sync is needed.
# ##
# proc xcb_request_check*(c: ptr xcb_connection_t; cookie: xcb_void_cookie_t): ptr xcb_generic_error_t
# ## *
# ## @brief Discards the reply for a request.
# ## @param c The connection to the X server.
# ## @param sequence The request sequence number from a cookie.
# ##
# ## Discards the reply for a request. Additionally, any error generated
# ## by the request is also discarded (unless it was an _unchecked request
# ## and the error has already arrived).
# ##
# ## This function will not block even if the reply is not yet available.
# ##
# ## Note that the sequence really does have to come from an xcb cookie;
# ## this function is not designed to operate on socket-handoff replies.
# ##
# proc xcb_discard_reply*(c: ptr xcb_connection_t; sequence: uint8)
# ## *
# ## @brief Discards the reply for a request, given by a 64bit sequence number
# ## @param c The connection to the X server.
# ## @param sequence 64-bit sequence number as returned by xcb_send_request64().
# ##
# ## Discards the reply for a request. Additionally, any error generated
# ## by the request is also discarded (unless it was an _unchecked request
# ## and the error has already arrived).
# ##
# ## This function will not block even if the reply is not yet available.
# ##
# ## Note that the sequence really does have to come from xcb_send_request64();
# ## the cookie sequence number is defined as "unsigned" int and therefore
# ## not 64-bit on all platforms.
# ## This function is not designed to operate on socket-handoff replies.
# ##
# ## Unlike its xcb_discard_reply() counterpart, the given sequence number is not
# ## automatically "widened" to 64-bit.
# ##
# proc xcb_discard_reply64*(c: ptr xcb_connection_t; sequence: uint64)
# ## xcb_ext.c
# ## *
# ## @brief Caches reply information from QueryExtension requests.
# ## @param c The connection.
# ## @param ext The extension data.
# ## @return A pointer to the xcb_query_extension_reply_t for the extension.
# ##
# ## This function is the primary interface to the "extension cache",
# ## which caches reply information from QueryExtension
# ## requests. Invoking this function may cause a call to
# ## xcb_query_extension to retrieve extension information from the
# ## server, and may block until extension data is received from the
# ## server.
# ##
# ## The result must not be freed. This storage is managed by the cache
# ## itself.
# ##
# proc xcb_get_setup*(c: ptr xcb_connection_t): ptr xcb_setup_t
# ## *
# ## @brief Access the file descriptor of the connection.
# ## @param c The connection.
# ## @return The file descriptor.
# ##
# ## Accessor for the file descriptor that was passed to the
# ## xcb_connect_to_fd call that returned @p c.
# ##
# proc xcb_get_file_descriptor*(c: ptr xcb_connection_t): cint
# ## *
# ## @brief Test whether the connection has shut down due to a fatal error.
# ## @param c The connection.
# ## @return > 0 if the connection is in an error state; 0 otherwise.
# ##
# ## Some errors that occur in the context of an xcb_connection_t
# ## are unrecoverable. When such an error occurs, the
# ## connection is shut down and further operations on the
# ## xcb_connection_t have no effect, but memory will not be freed until
# ## xcb_disconnect() is called on the xcb_connection_t.
# ##
# ## @return XCB_CONN_ERROR, because of socket errors, pipe errors or other stream errors.
# ## @return XCB_CONN_CLOSED_EXT_NOTSUPPORTED, when extension not supported.
# ## @return XCB_CONN_CLOSED_MEM_INSUFFICIENT, when memory not available.
# ## @return XCB_CONN_CLOSED_REQ_LEN_EXCEED, exceeding request length that server accepts.
# ## @return XCB_CONN_CLOSED_PARSE_ERR, error during parsing display string.
# ## @return XCB_CONN_CLOSED_INVALID_SCREEN, because the server does not have a screen matching the display.
# ##
# proc xcb_connection_has_error*(c: ptr xcb_connection_t): cint
# ## *
# ## @brief Connects to the X server.
# ## @param fd The file descriptor.
# ## @param auth_info Authentication data.
# ## @return A newly allocated xcb_connection_t structure.
# ##
# ## Connects to an X server, given the open socket @p fd and the
# ## xcb_auth_info_t @p auth_info. The file descriptor @p fd is
# ## bidirectionally connected to an X server. If the connection
# ## should be unauthenticated, @p auth_info must be @c
# ## NULL.
# ##
# ## Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ## Callers need to use xcb_connection_has_error() to check for failure.
# ## When finished, use xcb_disconnect() to close the connection and free
# ## the structure.
# ##
# proc xcb_connect_to_fd*(fd: cint; auth_info: ptr xcb_auth_info_t): ptr xcb_connection_t
# ## *
# ## @brief Closes the connection.
# ## @param c The connection.
# ##
# ## Closes the file descriptor and frees all memory associated with the
# ## connection @c c. If @p c is @c NULL, nothing is done.
# ##
# proc xcb_disconnect*(c: ptr xcb_connection_t)
# ## xcb_util.c
# ## *
# ## @brief Parses a display string name in the form documented by X(7x).
# ## @param name The name of the display.
# ## @param host A pointer to a malloc'd copy of the hostname.
# ## @param display A pointer to the display number.
# ## @param screen A pointer to the screen number.
# ## @return 0 on failure, non 0 otherwise.
# ##
# ## Parses the display string name @p display_name in the form
# ## documented by X(7x). Has no side effects on failure. If
# ## @p displayname is @c NULL or empty, it uses the environment
# ## variable DISPLAY. @p hostp is a pointer to a newly allocated string
# ## that contain the host name. @p displayp is set to the display
# ## number and @p screenp to the preferred screen number. @p screenp
# ## can be @c NULL. If @p displayname does not contain a screen number,
# ## it is set to @c 0.
# ##
# proc xcb_parse_display*(name: cstring; host: cstringArray; display: ptr cint;
# screen: ptr cint): cint
# ## *
# ## @brief Connects to the X server.
# ## @param displayname The name of the display.
# ## @param screenp A pointer to a preferred screen number.
# ## @return A newly allocated xcb_connection_t structure.
# ##
# ## Connects to the X server specified by @p displayname. If @p
# ## displayname is @c NULL, uses the value of the DISPLAY environment
# ## variable. If a particular screen on that server is preferred, the
# ## int pointed to by @p screenp (if not @c NULL) will be set to that
# ## screen; otherwise the screen will be set to 0.
# ##
# ## Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ## Callers need to use xcb_connection_has_error() to check for failure.
# ## When finished, use xcb_disconnect() to close the connection and free
# ## the structure.
# ##
# proc xcb_connect*(displayname: cstring; screenp: ptr cint): ptr xcb_connection_t
# ## *
# ## @brief Connects to the X server, using an authorization information.
# ## @param display The name of the display.
# ## @param auth The authorization information.
# ## @param screen A pointer to a preferred screen number.
# ## @return A newly allocated xcb_connection_t structure.
# ##
# ## Connects to the X server specified by @p displayname, using the
# ## authorization @p auth. If a particular screen on that server is
# ## preferred, the int pointed to by @p screenp (if not @c NULL) will
# ## be set to that screen; otherwise @p screenp will be set to 0.
# ##
# ## Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
# ## Callers need to use xcb_connection_has_error() to check for failure.
# ## When finished, use xcb_disconnect() to close the connection and free
# ## the structure.
# ##
# proc xcb_connect_to_display_with_auth_info*(display: cstring;
# auth: ptr xcb_auth_info_t; screen: ptr cint): ptr xcb_connection_t
# ## xcb_xid.c
# ## *
# ## @brief Allocates an XID for a new object.
# ## @param c The connection.
# ## @return A newly allocated XID.
# ##
# ## Allocates an XID for a new object. Typically used just prior to
# ## various object creation functions, such as xcb_create_window.
# ##
# proc xcb_generate_id*(c: ptr xcb_connection_t): uint32
# ## *
# ## @}
# ##
# ##
# ## Copyright (C) 2008 Arnaud Fontaine <arnau@debian.org>
# ## Copyright (C) 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
# ##
# ## Permission is hereby granted, free of charge, to any person
# ## obtaining a copy of this software and associated documentation
# ## files (the "Software"), to deal in the Software without
# ## restriction, including without limitation the rights to use, copy,
# ## modify, merge, publish, distribute, sublicense, and/or sell copies
# ## of the Software, and to permit persons to whom the Software is
# ## furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be
# ## included in all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# ## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# ## CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# ## CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# ## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or
# ## their institutions shall not be used in advertising or otherwise to
# ## promote the sale, use or other dealings in this Software without
# ## prior written authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__icccm_t XCB ICCCM Functions
# ##
# ## These functions allow easy handling of the protocol described in the
# ## Inter-Client Communication Conventions Manual.
# ##
# ## @{
# ##
# ## *
# ## @brief TextProperty reply structure.
# ##
# type
# xcb_icccm_get_text_property_reply_t* {.bycopy.} = object
# _reply*: ptr xcb_get_property_reply_t ## * Store reply to avoid memory allocation, should normally not be
# ## used directly
# ## * Encoding used
# encoding*: xcb_atom_t ## * Length of the name field above
# name_len*: uint32 ## * Property value
# name*: cstring ## * Format, may be 8, 16 or 32
# format*: uint8
# ## *
# ## @brief Deliver a GetProperty request to the X server.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param property Property atom to get.
# ## @return The request cookie.
# ##
# ## Allow to get a window property, in most case you might want to use
# ## above functions to get an ICCCM property for a given window.
# ##
# proc xcb_icccm_get_text_property*(c: ptr xcb_connection_t; window: xcb_window_t;
# property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_text_property()
# ##
# proc xcb_icccm_get_text_property_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the property value of a window.
# ## @param c The connection to the X server.
# ## @param cookie TextProperty request cookie.
# ## @param prop TextProperty reply which is to be filled.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## If the function return 0 (failure), the content of prop is unmodified and
# ## therefore the structure must not be wiped.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_text_property_unchecked() is used. Otherwise, it stores
# ## the error if any. prop structure members should be freed by
# ## xcb_icccm_get_text_property_reply_wipe().
# ##
# proc xcb_icccm_get_text_property_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t; prop: ptr xcb_icccm_get_text_property_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe prop structure members previously allocated by
# ## xcb_icccm_get_text_property_reply().
# ## @param prop prop structure whose members is going to be freed.
# ##
# proc xcb_icccm_get_text_property_reply_wipe*(
# prop: ptr xcb_icccm_get_text_property_reply_t)
# ## WM_NAME
# ## *
# ## @brief Deliver a SetProperty request to set WM_NAME property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ## @param format Encoding format.
# ## @param name_len Length of name value to set.
# ## @param name Name value to set.
# ##
# proc xcb_icccm_set_wm_name_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# encoding: xcb_atom_t; format: uint8;
# name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_name_checked()
# ##
# proc xcb_icccm_set_wm_name*(c: ptr xcb_connection_t; window: xcb_window_t;
# encoding: xcb_atom_t; format: uint8;
# name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ## @brief Deliver a GetProperty request to the X server for WM_NAME.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_name*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_name()
# ##
# proc xcb_icccm_get_wm_name_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the WM_NAME property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param prop WM_NAME property value.
# ## @param e Error if any.
# ## @see xcb_icccm_get_text_property_reply()
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_name_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# prop: ptr xcb_icccm_get_text_property_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_ICON_NAME
# ## *
# ## @brief Deliver a SetProperty request to set WM_ICON_NAME property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ## @param format Encoding format.
# ## @param name_len Length of name value to set.
# ## @param name Name value to set.
# ##
# proc xcb_icccm_set_wm_icon_name_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# encoding: xcb_atom_t; format: uint8;
# name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_icon_name_checked()
# ##
# proc xcb_icccm_set_wm_icon_name*(c: ptr xcb_connection_t; window: xcb_window_t;
# encoding: xcb_atom_t; format: uint8;
# name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ## @brief Send request to get WM_ICON_NAME property of a window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_icon_name*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_icon_name()
# ##
# proc xcb_icccm_get_wm_icon_name_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the WM_ICON_NAME property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param prop WM_ICON_NAME property value.
# ## @param e Error if any.
# ## @see xcb_icccm_get_text_property_reply()
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_icon_name_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t; prop: ptr xcb_icccm_get_text_property_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_COLORMAP_WINDOWS
# ## *
# ## @brief Deliver a ChangeProperty request to set WM_COLORMAP_WINDOWS property value.
# ## @param c The connection to the X server.
# ## @param wm_colormap_windows The WM_COLORMAP_WINDOWS atom
# ## @param window Window X identifier.
# ## @param list_len Windows list len.
# ## @param list Windows list.
# ## @return The request cookie.
# ##
# proc xcb_icccm_set_wm_colormap_windows_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; wm_colormap_windows_atom: xcb_atom_t; list_len: uint32;
# list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_colormap_windows_checked()
# ##
# proc xcb_icccm_set_wm_colormap_windows*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# wm_colormap_windows_atom: xcb_atom_t;
# list_len: uint32; list: ptr xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief WM_COLORMAP_WINDOWS structure.
# ##
# type
# xcb_icccm_get_wm_colormap_windows_reply_t* {.bycopy.} = object
# windows_len*: uint32 ## * Length of the windows list
# ## * Windows list
# windows*: ptr xcb_window_t ## * Store reply to avoid memory allocation, should normally not be
# ## used directly
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Send request to get WM_COLORMAP_WINDOWS property of a given window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_colormap_windows*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# wm_colormap_windows_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_colormap_windows()
# ##
# proc xcb_icccm_get_wm_colormap_windows_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; wm_colormap_windows_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
# ## @param reply The reply of the GetProperty request.
# ## @param colormap_windows WM_COLORMAP property value.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## protocols structure members should be freed by
# ## xcb_icccm_get_wm_protocols_reply_wipe().
# ##
# proc xcb_icccm_get_wm_colormap_windows_from_reply*(
# reply: ptr xcb_get_property_reply_t;
# colormap_windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t): uint8
# ## *
# ## @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param protocols WM_COLORMAP_WINDOWS property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_colormap_windows_unchecked() is used. Otherwise, it
# ## stores the error if any. protocols structure members should be
# ## freed by xcb_icccm_get_wm_colormap_windows_reply_wipe().
# ##
# proc xcb_icccm_get_wm_colormap_windows_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe protocols structure members previously allocated by
# ## xcb_icccm_get_wm_colormap_windows_reply().
# ## @param windows windows structure whose members is going to be freed.
# ##
# proc xcb_icccm_get_wm_colormap_windows_reply_wipe*(
# windows: ptr xcb_icccm_get_wm_colormap_windows_reply_t)
# ## WM_CLIENT_MACHINE
# ## *
# ## @brief Deliver a SetProperty request to set WM_CLIENT_MACHINE property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
# ## @param format Encoding format.
# ## @param name_len Length of name value to set.
# ## @param name Name value to set.
# ##
# proc xcb_icccm_set_wm_client_machine_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; encoding: xcb_atom_t; format: uint8; name_len: uint32;
# name: cstring): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_client_machine_checked()
# ##
# proc xcb_icccm_set_wm_client_machine*(c: ptr xcb_connection_t; window: xcb_window_t;
# encoding: xcb_atom_t; format: uint8;
# name_len: uint32; name: cstring): xcb_void_cookie_t
# ## *
# ## @brief Send request to get WM_CLIENT_MACHINE property of a window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_client_machine*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_client_machine()
# ##
# proc xcb_icccm_get_wm_client_machine_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the WM_CLIENT_MACHINE property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param prop WM_CLIENT_MACHINE property value.
# ## @param e Error if any.
# ## @see xcb_icccm_get_text_property_reply()
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_client_machine_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# prop: ptr xcb_icccm_get_text_property_reply_t; e: ptr ptr xcb_generic_error_t): uint8
# ## WM_CLASS
# ## *
# ## @brief WM_CLASS hint structure
# ##
# ## *
# ## @brief Deliver a SetProperty request to set WM_CLASS property value.
# ##
# ## WM_CLASS string is a concatenation of the instance and class name
# ## strings respectively (including null character).
# ##
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param class_len Length of WM_CLASS string.
# ## @param class_name WM_CLASS string.
# ## @return The request cookie.
# ##
# proc xcb_icccm_set_wm_class_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# class_len: uint32; class_name: cstring): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_class_checked()
# ##
# proc xcb_icccm_set_wm_class*(c: ptr xcb_connection_t; window: xcb_window_t;
# class_len: uint32; class_name: cstring): xcb_void_cookie_t
# type
# xcb_icccm_get_wm_class_reply_t* {.bycopy.} = object
# instance_name*: cstring ## * Instance name
# ## * Class of application
# class_name*: cstring ## * Store reply to avoid memory allocation, should normally not be
# ## used directly
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Deliver a GetProperty request to the X server for WM_CLASS.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_class*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_class()
# ##
# proc xcb_icccm_get_wm_class_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill give structure with the WM_CLASS property of a window.
# ## @param prop The property structure to fill.
# ## @param reply The property request reply.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_class_from_reply*(prop: ptr xcb_icccm_get_wm_class_reply_t;
# reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Fill given structure with the WM_CLASS property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param prop WM_CLASS property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_class_unchecked() is used. Otherwise, it stores the
# ## error if any. prop structure members should be freed by
# ## xcb_icccm_get_wm_class_reply_wipe().
# ##
# proc xcb_icccm_get_wm_class_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# prop: ptr xcb_icccm_get_wm_class_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe prop structure members previously allocated by
# ## xcb_icccm_get_wm_class_reply().
# ## @param prop prop structure whose members is going to be freed.
# ##
# proc xcb_icccm_get_wm_class_reply_wipe*(prop: ptr xcb_icccm_get_wm_class_reply_t)
# ## WM_TRANSIENT_FOR
# ## *
# ## @brief Deliver a SetProperty request to set WM_TRANSIENT_FOR property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param transient_for_window The WM_TRANSIENT_FOR window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_set_wm_transient_for_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; transient_for_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_transient_for
# ##
# proc xcb_icccm_set_wm_transient_for*(c: ptr xcb_connection_t; window: xcb_window_t;
# transient_for_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Send request to get WM_TRANSIENT_FOR property of a window.
# ## @param c The connection to the X server
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_transient_for*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_transient_for_unchecked()
# ##
# proc xcb_icccm_get_wm_transient_for_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a window.
# ## @param prop WM_TRANSIENT_FOR property value.
# ## @param reply The get property request reply.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_transient_for_from_reply*(prop: ptr xcb_window_t;
# reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Fill given structure with the WM_TRANSIENT_FOR property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param prop WM_TRANSIENT_FOR property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_transient_for_unchecked() is used. Otherwise, it stores
# ## the error if any.
# ##
# proc xcb_icccm_get_wm_transient_for_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t; prop: ptr xcb_window_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_SIZE_HINTS
# type
# xcb_icccm_size_hints_flags_t* = enum
# XCB_ICCCM_SIZE_HINT_US_POSITION = 1 shl 0, XCB_ICCCM_SIZE_HINT_US_SIZE = 1 shl 1,
# XCB_ICCCM_SIZE_HINT_P_POSITION = 1 shl 2, XCB_ICCCM_SIZE_HINT_P_SIZE = 1 shl 3,
# XCB_ICCCM_SIZE_HINT_P_MIN_SIZE = 1 shl 4,
# XCB_ICCCM_SIZE_HINT_P_MAX_SIZE = 1 shl 5,
# XCB_ICCCM_SIZE_HINT_P_RESIZE_INC = 1 shl 6,
# XCB_ICCCM_SIZE_HINT_P_ASPECT = 1 shl 7, XCB_ICCCM_SIZE_HINT_BASE_SIZE = 1 shl 8,
# XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY = 1 shl 9
# ## *
# ## @brief Size hints structure.
# ##
# type
# xcb_size_hints_t* {.bycopy.} = object
# flags*: uint32 ## * User specified flags
# ## * User-specified position
# x*: int32
# y*: int32 ## * User-specified size
# width*: int32
# height*: int32 ## * Program-specified minimum size
# min_width*: int32
# min_height*: int32 ## * Program-specified maximum size
# max_width*: int32
# max_height*: int32 ## * Program-specified resize increments
# width_inc*: int32
# height_inc*: int32 ## * Program-specified minimum aspect ratios
# min_aspect_num*: int32
# min_aspect_den*: int32 ## * Program-specified maximum aspect ratios
# max_aspect_num*: int32
# max_aspect_den*: int32 ## * Program-specified base size
# base_width*: int32
# base_height*: int32 ## * Program-specified window gravity
# win_gravity*: uint32
# ## * Number of elements in this structure
# const
# XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS* = 18
# ## *
# ## @brief Set size hints to a given position.
# ## @param hints SIZE_HINTS structure.
# ## @param user_specified Is the size user-specified?
# ## @param x The X position.
# ## @param y The Y position.
# ##
# proc xcb_icccm_size_hints_set_position*(hints: ptr xcb_size_hints_t;
# user_specified: cint; x: int32; y: int32)
# ## *
# ## @brief Set size hints to a given size.
# ## @param hints SIZE_HINTS structure.
# ## @param user_specified is the size user-specified?
# ## @param width The width.
# ## @param height The height.
# ##
# proc xcb_icccm_size_hints_set_size*(hints: ptr xcb_size_hints_t;
# user_specified: cint; width: int32;
# height: int32)
# ## *
# ## @brief Set size hints to a given minimum size.
# ## @param hints SIZE_HINTS structure.
# ## @param width The minimum width.
# ## @param height The minimum height.
# ##
# proc xcb_icccm_size_hints_set_min_size*(hints: ptr xcb_size_hints_t;
# min_width: int32; min_height: int32)
# ## *
# ## @brief Set size hints to a given maximum size.
# ## @param hints SIZE_HINTS structure.
# ## @param width The maximum width.
# ## @param height The maximum height.
# ##
# proc xcb_icccm_size_hints_set_max_size*(hints: ptr xcb_size_hints_t;
# max_width: int32; max_height: int32)
# ## *
# ## @brief Set size hints to a given resize increments.
# ## @param hints SIZE_HINTS structure.
# ## @param width The resize increments width.
# ## @param height The resize increments height.
# ##
# proc xcb_icccm_size_hints_set_resize_inc*(hints: ptr xcb_size_hints_t;
# width_inc: int32; height_inc: int32)
# ## *
# ## @brief Set size hints to a given aspect ratios.
# ## @param hints SIZE_HINTS structure.
# ## @param min_aspect_num The minimum aspect ratios for the width.
# ## @param min_aspect_den The minimum aspect ratios for the height.
# ## @param max_aspect_num The maximum aspect ratios for the width.
# ## @param max_aspect_den The maximum aspect ratios for the height.
# ##
# proc xcb_icccm_size_hints_set_aspect*(hints: ptr xcb_size_hints_t;
# min_aspect_num: int32;
# min_aspect_den: int32;
# max_aspect_num: int32;
# max_aspect_den: int32)
# ## *
# ## @brief Set size hints to a given base size.
# ## @param hints SIZE_HINTS structure.
# ## @param base_width Base width.
# ## @param base_height Base height.
# ##
# proc xcb_icccm_size_hints_set_base_size*(hints: ptr xcb_size_hints_t;
# base_width: int32; base_height: int32)
# ## *
# ## @brief Set size hints to a given window gravity.
# ## @param hints SIZE_HINTS structure.
# ## @param win_gravity Window gravity value.
# ##
# proc xcb_icccm_size_hints_set_win_gravity*(hints: ptr xcb_size_hints_t;
# win_gravity: xcb_gravity_t)
# ## *
# ## @brief Deliver a ChangeProperty request to set a value to a given property.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param property Property to set value for.
# ## @param hints Hints value to set.
# ##
# proc xcb_icccm_set_wm_size_hints_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_size_hints_checked()
# ##
# proc xcb_icccm_set_wm_size_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
# property: xcb_atom_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ## @brief Send request to get size hints structure for the named property.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param property Specify the property name.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_size_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
# property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_size_hints()
# ##
# proc xcb_icccm_get_wm_size_hints_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the size hints of the named property.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param hints Size hints structure.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_size_hints_unchecked() is used. Otherwise, it stores
# ## the error if any. The returned pointer should be freed.
# ##
# proc xcb_icccm_get_wm_size_hints_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# hints: ptr xcb_size_hints_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_NORMAL_HINTS
# ## *
# ## @brief Deliver a ChangeProperty request to set WM_NORMAL_HINTS property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param hints Hints value to set.
# ##
# proc xcb_icccm_set_wm_normal_hints_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_normal_hints_checked()
# ##
# proc xcb_icccm_set_wm_normal_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
# hints: ptr xcb_size_hints_t): xcb_void_cookie_t
# ## *
# ## @brief Send request to get WM_NORMAL_HINTS property of a window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_normal_hints*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_normal_hints()
# ##
# proc xcb_icccm_get_wm_normal_hints_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
# ## @param hints WM_NORMAL_HINTS property value.
# ## @param reply The get property request reply.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_size_hints_from_reply*(hints: ptr xcb_size_hints_t;
# reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param hints WM_NORMAL_HINTS property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_normal_hints_unchecked() is used. Otherwise, it stores
# ## the error if any. The returned pointer should be freed.
# ##
# proc xcb_icccm_get_wm_normal_hints_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t; hints: ptr xcb_size_hints_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_HINTS
# ## *
# ## @brief WM hints structure (may be extended in the future).
# ##
# type
# xcb_icccm_wm_hints_t* {.bycopy.} = object
# flags*: int32 ## * Marks which fields in this structure are defined
# ## * Does this application rely on the window manager to get keyboard
# ## input?
# input*: uint32 ## * See below
# initial_state*: int32 ## * Pixmap to be used as icon
# icon_pixmap*: xcb_pixmap_t ## * Window to be used as icon
# icon_window*: xcb_window_t ## * Initial position of icon
# icon_x*: int32
# icon_y*: int32 ## * Icon mask bitmap
# icon_mask*: xcb_pixmap_t ## Identifier of related window group
# window_group*: xcb_window_t
# ## * Number of elements in this structure
# const
# XCB_ICCCM_NUM_WM_HINTS_ELEMENTS* = 9
# ## *
# ## @brief WM_HINTS window states.
# ##
# type
# xcb_icccm_wm_state_t* = enum
# XCB_ICCCM_WM_STATE_WITHDRAWN = 0, XCB_ICCCM_WM_STATE_NORMAL = 1,
# XCB_ICCCM_WM_STATE_ICONIC = 3
# xcb_icccm_wm_t* = enum
# XCB_ICCCM_WM_HINT_INPUT = (1 shl 0), XCB_ICCCM_WM_HINT_STATE = (1 shl 1),
# XCB_ICCCM_WM_HINT_ICON_PIXMAP = (1 shl 2),
# XCB_ICCCM_WM_HINT_ICON_WINDOW = (1 shl 3),
# XCB_ICCCM_WM_HINT_ICON_POSITION = (1 shl 4),
# XCB_ICCCM_WM_HINT_ICON_MASK = (1 shl 5),
# XCB_ICCCM_WM_HINT_WINDOW_GROUP = (1 shl 6),
# XCB_ICCCM_WM_HINT_X_URGENCY = (1 shl 8)
# const
# XCB_ICCCM_WM_ALL_HINTS* = (XCB_ICCCM_WM_HINT_INPUT or XCB_ICCCM_WM_HINT_STATE or
# XCB_ICCCM_WM_HINT_ICON_PIXMAP or XCB_ICCCM_WM_HINT_ICON_WINDOW or
# XCB_ICCCM_WM_HINT_ICON_POSITION or XCB_ICCCM_WM_HINT_ICON_MASK or
# XCB_ICCCM_WM_HINT_WINDOW_GROUP)
# ## *
# ## @brief Get urgency hint.
# ## @param hints WM_HINTS structure.
# ## @return Urgency hint value.
# ##
# proc xcb_icccm_wm_hints_get_urgency*(hints: ptr xcb_icccm_wm_hints_t): uint32
# ## *
# ## @brief Set input focus.
# ## @param hints WM_HINTS structure.
# ## @param input Input focus.
# ##
# proc xcb_icccm_wm_hints_set_input*(hints: ptr xcb_icccm_wm_hints_t; input: uint8)
# ## *
# ## @brief Set hints state to 'iconic'.
# ## @param hints WM_HINTS structure.
# ##
# proc xcb_icccm_wm_hints_set_iconic*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ## @brief Set hints state to 'normal'.
# ## @param hints WM_HINTS structure.
# ##
# proc xcb_icccm_wm_hints_set_normal*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ## @brief Set hints state to 'withdrawn'.
# ## @param hints WM_HINTS structure.
# ##
# proc xcb_icccm_wm_hints_set_withdrawn*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ## @brief Set hints state to none.
# ## @param hints WM_HINTS structure.
# ##
# proc xcb_icccm_wm_hints_set_none*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ## @brief Set pixmap to be used as icon.
# ## @param hints WM_HINTS structure.
# ## @param icon_pixmap Pixmap.
# ##
# proc xcb_icccm_wm_hints_set_icon_pixmap*(hints: ptr xcb_icccm_wm_hints_t;
# icon_pixmap: xcb_pixmap_t)
# ## *
# ## @brief Set icon mask bitmap.
# ## @param hints WM_HINTS structure.
# ## @param icon_mask Pixmap.
# ##
# proc xcb_icccm_wm_hints_set_icon_mask*(hints: ptr xcb_icccm_wm_hints_t;
# icon_mask: xcb_pixmap_t)
# ## *
# ## @brief Set window identifier to be used as icon.
# ## @param hints WM_HINTS structure.
# ## @param icon_window Window X identifier.
# ##
# proc xcb_icccm_wm_hints_set_icon_window*(hints: ptr xcb_icccm_wm_hints_t;
# icon_window: xcb_window_t)
# ## *
# ## @brief Set identifier of related window group.
# ## @param hints WM_HINTS structure.
# ## @param window_group Window X identifier.
# ##
# proc xcb_icccm_wm_hints_set_window_group*(hints: ptr xcb_icccm_wm_hints_t;
# window_group: xcb_window_t)
# ## *
# ## @brief Set urgency hints flag.
# ## @param hints WM_HINTS structure.
# ##
# proc xcb_icccm_wm_hints_set_urgency*(hints: ptr xcb_icccm_wm_hints_t)
# ## *
# ## @brief Deliver a SetProperty request to set WM_HINTS property value.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @param hints Hints value to set.
# ##
# proc xcb_icccm_set_wm_hints_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# hints: ptr xcb_icccm_wm_hints_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_hints_checked()
# ##
# proc xcb_icccm_set_wm_hints*(c: ptr xcb_connection_t; window: xcb_window_t;
# hints: ptr xcb_icccm_wm_hints_t): xcb_void_cookie_t
# ## *
# ## @brief Send request to get WM_HINTS property of a window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_hints*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_hints()
# ##
# proc xcb_icccm_get_wm_hints_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill given structure with the WM_HINTS property of a window.
# ## @param hints WM_HINTS property value.
# ## @param reply The get property request reply.
# ## @return Return 1 on success, 0 otherwise.
# ##
# proc xcb_icccm_get_wm_hints_from_reply*(hints: ptr xcb_icccm_wm_hints_t;
# reply: ptr xcb_get_property_reply_t): uint8
# ## *
# ## @brief Fill given structure with the WM_HINTS property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param hints WM_HINTS property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_hints_unchecked() is used. Otherwise, it stores the
# ## error if any. The returned pointer should be freed.
# ##
# proc xcb_icccm_get_wm_hints_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t;
# hints: ptr xcb_icccm_wm_hints_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## WM_PROTOCOLS
# ## *
# ## @brief Deliver a SetProperty request to set WM_PROTOCOLS property value.
# ## @param c The connection to the X server.
# ## @param wm_protocols The WM_PROTOCOLS atom.
# ## @param window Window X identifier.
# ## @param list_len Atom list len.
# ## @param list Atom list.
# ##
# proc xcb_icccm_set_wm_protocols_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# wm_protocols: xcb_atom_t;
# list_len: uint32; list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ## @see xcb_icccm_set_wm_protocols_checked()
# ##
# proc xcb_icccm_set_wm_protocols*(c: ptr xcb_connection_t; window: xcb_window_t;
# wm_protocols: xcb_atom_t; list_len: uint32;
# list: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ## @brief WM_PROTOCOLS structure.
# ##
# type
# xcb_icccm_get_wm_protocols_reply_t* {.bycopy.} = object
# atoms_len*: uint32 ## * Length of the atoms list
# ## * Atoms list
# atoms*: ptr xcb_atom_t ## * Store reply to avoid memory allocation, should normally not be
# ## used directly
# _reply*: ptr xcb_get_property_reply_t
# ## *
# ## @brief Send request to get WM_PROTOCOLS property of a given window.
# ## @param c The connection to the X server.
# ## @param window Window X identifier.
# ## @return The request cookie.
# ##
# proc xcb_icccm_get_wm_protocols*(c: ptr xcb_connection_t; window: xcb_window_t;
# wm_protocol_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @see xcb_icccm_get_wm_protocols()
# ##
# proc xcb_icccm_get_wm_protocols_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; wm_protocol_atom: xcb_atom_t): xcb_get_property_cookie_t
# ## *
# ## @brief Fill the given structure with the WM_PROTOCOLS property of a window.
# ## @param reply The reply of the GetProperty request.
# ## @param protocols WM_PROTOCOLS property value.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## protocols structure members should be freed by
# ## xcb_icccm_get_wm_protocols_reply_wipe().
# ##
# proc xcb_icccm_get_wm_protocols_from_reply*(reply: ptr xcb_get_property_reply_t;
# protocols: ptr xcb_icccm_get_wm_protocols_reply_t): uint8
# ## *
# ## @brief Fill the given structure with the WM_PROTOCOLS property of a window.
# ## @param c The connection to the X server.
# ## @param cookie Request cookie.
# ## @param protocols WM_PROTOCOLS property value.
# ## @param e Error if any.
# ## @return Return 1 on success, 0 otherwise.
# ##
# ## The parameter e supplied to this function must be NULL if
# ## xcb_icccm_get_wm_protocols_unchecked() is used. Otherwise, it stores the
# ## error if any. protocols structure members should be freed by
# ## xcb_icccm_get_wm_protocols_reply_wipe().
# ##
# proc xcb_icccm_get_wm_protocols_reply*(c: ptr xcb_connection_t;
# cookie: xcb_get_property_cookie_t; protocols: ptr xcb_icccm_get_wm_protocols_reply_t;
# e: ptr ptr xcb_generic_error_t): uint8
# ## *
# ## @brief Wipe protocols structure members previously allocated by
# ## xcb_icccm_get_wm_protocols_reply().
# ## @param protocols protocols structure whose members is going to be freed.
# ##
# proc xcb_icccm_get_wm_protocols_reply_wipe*(
# protocols: ptr xcb_icccm_get_wm_protocols_reply_t)
# ## *
# ## @}
# ##
# ## Copyright (C) 2007 Bart Massey
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# ## *
# ## @defgroup xcb__image_t XCB Image Functions
# ##
# ## These are functions used to create and manipulate X images.
# ##
# ## The X image format we use is specific to this software,
# ## which is probably a bug; it represents an intermediate
# ## position between the wire format used by the X GetImage
# ## and PutImage requests and standard formats like PBM. An
# ## image consists of a header of type @ref xcb_image_t
# ## describing the properties of the image, together with a
# ## pointer to the image data itself.
# ##
# ## X wire images come in three formats. An xy-bitmap is a
# ## bit-packed format that will be expanded to a two-color
# ## pixmap using a GC when sent over the wire by PutImage.
# ## An xy-pixmap is one or more bit-planes, each in the same
# ## format as xy-bitmap. A z-pixmap is a more conventional
# ## pixmap representation, with each pixel packed into a
# ## word. Pixmaps are sent and received over the wire only
# ## to/from drawables of their depth.
# ##
# ## Each X server defines, for each depth and format,
# ## properties of images in that format that are sent and
# ## received on the wire. We refer to this as a "native"
# ## image for a given X server. It is not uncommon to want
# ## to work with non-native images on the client side, or to
# ## convert between the native images of different servers.
# ##
# ## This library provides several things. Facilities for
# ## creating and destroying images are, of course, provided.
# ## Wrappers for xcb_get_image() and xcb_put_image() are
# ## provided; these utilize the image header to simplify the
# ## interface. Routines for getting and putting image pixels
# ## are provided: both a generic form that works with
# ## arbitrary images, and fastpath forms for some common
# ## cases. Conversion routines are provided for X images;
# ## these routines have been fairly well optimized for the
# ## common cases, and should run fast even on older hardware.
# ## A routine analogous to Xlib's XCreate*FromBitmapData() is
# ## provided for creating X images from xbm-format data; this
# ## routine is in this library only because it is a trivial
# ## use case for the library.
# ##
# ## @{
# ##
# ## *
# ## @struct xcb_image_t
# ## A structure that describes an xcb_image_t.
# ##
# type
# xcb_image_t* {.bycopy.} = object
# width*: uint16 ## *< Width in pixels, excluding pads etc.
# height*: uint16 ## *< Height in pixels.
# format*: xcb_image_format_t ## *< Format.
# scanline_pad*: uint8 ## *< Right pad in bits. Valid pads
# ## are 8, 16, 32.
# ##
# depth*: uint8 ## *< Depth in bits. Valid depths
# ## are 1, 4, 8, 16, 24 for z format,
# ## 1 for xy-bitmap-format, anything
# ## for xy-pixmap-format.
# ##
# bpp*: uint8 ## *< Storage per pixel in bits.
# ## Must be >= depth. Valid bpp
# ## are 1, 4, 8, 16, 24, 32 for z
# ## format, 1 for xy-bitmap format,
# ## anything for xy-pixmap-format.
# ##
# unit*: uint8 ## *< Scanline unit in bits for
# ## xy formats and for bpp == 1,
# ## in which case valid scanline
# ## units are 8, 16, 32. Otherwise,
# ## will be max(8, bpp). Must be >= bpp.
# ##
# plane_mask*: uint32 ## *< When format is
# ## xy-pixmap and depth >
# ## 1, this says which
# ## planes are "valid" in
# ## some vague sense.
# ## Currently used only
# ## by xcb_image_get/put_pixel(),
# ## and set only by
# ## xcb_image_get().
# ##
# byte_order*: xcb_image_order_t ## *< Component byte order
# ## for z-pixmap, byte
# ## order of scanline unit
# ## for xy-bitmap and
# ## xy-pixmap. Nybble
# ## order for z-pixmap
# ## when bpp == 4.
# ##
# bit_order*: xcb_image_order_t ## *< Bit order of
# ## scanline unit for
# ## xy-bitmap and
# ## xy-pixmap.
# ##
# stride*: uint32 ## *< Bytes per image row.
# ## Computable from other
# ## data, but cached for
# ## convenience/performance.
# ##
# size*: uint32 ## *< Size of image data in bytes.
# ## Computable from other
# ## data, but cached for
# ## convenience/performance.
# ##
# base*: pointer ## *< Malloced block of storage that
# ## will be freed by
# ## @ref xcb_image_destroy() if non-null.
# ##
# data*: ptr uint8 ## *< The actual image.
# ## *
# ## @struct xcb_shm_segment_info_t
# ## A structure that stores the informations needed by the MIT Shm
# ## Extension.
# ##
# type
# xcb_shm_segment_info_t* {.bycopy.} = object
# shmseg*: xcb_shm_seg_t
# shmid*: uint32
# shmaddr*: ptr uint8
# ## *
# ## Update the cached data of an image.
# ## @param image The image.
# ##
# ## An image's size and stride, among other things, are
# ## cached in its structure. This function recomputes those
# ## cached values for the given image.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_annotate*(image: ptr xcb_image_t)
# ## *
# ## Create a new image.
# ## @param width The width of the image, in pixels.
# ## @param height The height of the image, in pixels.
# ## @param format The format of the image.
# ## @param xpad The scanline pad of the image.
# ## @param depth The depth of the image.
# ## @param bpp The depth of the image storage.
# ## @param unit The unit of image representation, in bits.
# ## @param byte_order The byte order of the image.
# ## @param bit_order The bit order of the image.
# ## @param base The base address of malloced image data.
# ## @param bytes The size in bytes of the storage pointed to by base.
# ## If base == 0 and bytes == ~0 and data == 0 on
# ## entry, no storage will be auto-allocated.
# ## @param data The image data. If data is null and bytes != ~0, then
# ## an attempt will be made to fill in data; from
# ## base if it is non-null (and bytes is large enough), else
# ## by mallocing sufficient storage and filling in base.
# ## @return The new image.
# ##
# ## This function allocates the memory needed for an @ref xcb_image_t structure
# ## with the given properties. See the description of xcb_image_t for details.
# ## This function initializes and returns a pointer to the
# ## xcb_image_t structure. It may try to allocate or reserve data for the
# ## structure, depending on how @p base, @p bytes and @p data are set.
# ##
# ## The image must be destroyed with xcb_image_destroy().
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_create*(width: uint16; height: uint16; format: xcb_image_format_t;
# xpad: uint8; depth: uint8; bpp: uint8; unit: uint8;
# byte_order: xcb_image_order_t; bit_order: xcb_image_order_t;
# base: pointer; bytes: uint32; data: ptr uint8): ptr xcb_image_t
# ## *
# ## Create a new image in connection-native format.
# ## @param c The connection.
# ## @param width The width of the image, in pixels.
# ## @param height The height of the image, in pixels.
# ## @param format The format of the image.
# ## @param depth The depth of the image.
# ## @param base The base address of malloced image data.
# ## @param bytes The size in bytes of the storage pointed to by base.
# ## If base == 0 and bytes == ~0 and data == 0 on
# ## entry, no storage will be auto-allocated.
# ## @param data The image data. If data is null and bytes != ~0, then
# ## an attempt will be made to fill in data; from
# ## base if it is non-null (and bytes is large enough), else
# ## by mallocing sufficient storage and filling in base.
# ## @return The new image.
# ##
# ## This function calls @ref xcb_image_create() with the given
# ## properties, and with the remaining properties chosen
# ## according to the "native format" with the given
# ## properties on the current connection.
# ##
# ## It is usual to use this rather
# ## than calling xcb_image_create() directly.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_create_native*(c: ptr xcb_connection_t; width: uint16;
# height: uint16; format: xcb_image_format_t;
# depth: uint8; base: pointer; bytes: uint32;
# data: ptr uint8): ptr xcb_image_t
# ## *
# ## Destroy an image.
# ## @param image The image to be destroyed.
# ##
# ## This function frees the memory associated with the @p image
# ## parameter. If its base pointer is non-null, it frees
# ## that also.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_destroy*(image: ptr xcb_image_t)
# ## *
# ## Get an image from the X server.
# ## @param conn The connection to the X server.
# ## @param draw The drawable to get the image from.
# ## @param x The x coordinate in pixels, relative to the origin of the
# ## drawable and defining the upper-left corner of the rectangle.
# ## @param y The y coordinate in pixels, relative to the origin of the
# ## drawable and defining the upper-left corner of the rectangle.
# ## @param width The width of the subimage in pixels.
# ## @param height The height of the subimage in pixels.
# ## @param plane_mask The plane mask. See the protocol document for details.
# ## @param format The format of the image.
# ## @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
# ##
# ##
# ## This function returns a new image taken from the
# ## given drawable @p draw.
# ## The image will be in connection native format. If the @p format
# ## is xy-bitmap and the @p plane_mask masks bit planes out, those
# ## bit planes will be made part of the returned image anyway,
# ## by zero-filling them; this will require a fresh memory allocation
# ## and some copying. Otherwise, the resulting image will use the
# ## xcb_get_image_reply() record as its backing store.
# ##
# ## If a problem occurs, the function returns null.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_get*(conn: ptr xcb_connection_t; draw: xcb_drawable_t; x: int16;
# y: int16; width: uint16; height: uint16;
# plane_mask: uint32; format: xcb_image_format_t): ptr xcb_image_t
# ## *
# ## Put an image onto the X server.
# ## @param conn The connection to the X server.
# ## @param draw The draw you get the image from.
# ## @param gc The graphic context.
# ## @param image The image you want to combine with the rectangle.
# ## @param x The x coordinate, which is relative to the origin of the
# ## drawable and defines the x coordinate of the upper-left corner of the
# ## rectangle.
# ## @param y The y coordinate, which is relative to the origin of the
# ## drawable and defines the x coordinate of the upper-left corner of
# ## the rectangle.
# ## @param left_pad Notionally shift an xy-bitmap or xy-pixmap image
# ## to the right some small amount, for some reason. XXX Not clear
# ## this is currently supported correctly.
# ## @return The cookie returned by xcb_put_image().
# ##
# ## This function combines an image with a rectangle of the
# ## specified drawable @p draw. The image must be in native
# ## format for the connection. The image is drawn at the
# ## specified location in the drawable. For the xy-bitmap
# ## format, the foreground pixel in @p gc defines the source
# ## for the one bits in the image, and the background pixel
# ## defines the source for the zero bits. For xy-pixmap and
# ## z-pixmap formats, the depth of the image must match the
# ## depth of the drawable; the gc is ignored.
# ##
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_put*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
# gc: xcb_gcontext_t; image: ptr xcb_image_t; x: int16; y: int16;
# left_pad: uint8): xcb_void_cookie_t
# ## *
# ## Check image for or convert image to native format.
# ## @param c The connection to the X server.
# ## @param image The image.
# ## @param convert If 0, just check the image for native format.
# ## Otherwise, actually convert it.
# ## @return Null if the image is not in native format and can or will not
# ## be converted. Otherwise, the native format image.
# ##
# ## Each X display has its own "native format" for images of a given
# ## format and depth. This function either checks whether the given
# ## @p image is in native format for the given connection @p c, or
# ## actually tries to convert the image to native format, depending
# ## on whether @p convert is true or false.
# ##
# ## When @p convert is true, and the image is not in native format
# ## but can be converted, it will be, and a pointer to the new image
# ## will be returned. The image passed in will be unharmed in this
# ## case; it is the caller's responsibility to check that the returned
# ## pointer is different and to dispose of the old image if desired.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_native*(c: ptr xcb_connection_t; image: ptr xcb_image_t; convert: cint): ptr xcb_image_t
# ## *
# ## Put a pixel to an image.
# ## @param image The image.
# ## @param x The x coordinate of the pixel.
# ## @param y The y coordinate of the pixel.
# ## @param pixel The new pixel value.
# ##
# ## This function overwrites the pixel in the given @p image with the
# ## specified @p pixel value (in client format). The image must contain the @p x
# ## and @p y coordinates, as no clipping is done. This function honors
# ## the plane-mask for xy-pixmap images.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_put_pixel*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: uint32)
# ## *
# ## Get a pixel from an image.
# ## @param image The image.
# ## @param x The x coordinate of the pixel.
# ## @param y The y coordinate of the pixel.
# ## @return The pixel value.
# ##
# ## This function retrieves a pixel from the given @p image.
# ## The image must contain the @p x
# ## and @p y coordinates, as no clipping is done. This function honors
# ## the plane-mask for xy-pixmap images.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_get_pixel*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32
# ## *
# ## Convert an image to a new format.
# ## @param src Source image.
# ## @param dst Destination image.
# ## @return The @p dst image, or null on error.
# ##
# ## This function tries to convert the image data of the @p
# ## src image to the format implied by the @p dst image,
# ## overwriting the current destination image data.
# ## The source and destination must have the same
# ## width, height, and depth. When the source and destination
# ## are already the same format, a simple copy is done. Otherwise,
# ## when the destination has the same bits-per-pixel/scanline-unit
# ## as the source, an optimized copy routine (thanks to Keith Packard)
# ## is used for the conversion. Otherwise, the copy is done the
# ## slow, slow way with @ref xcb_image_get_pixel() and
# ## @ref xcb_image_put_pixel() calls.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_convert*(src: ptr xcb_image_t; dst: ptr xcb_image_t): ptr xcb_image_t
# ## *
# ## Extract a subimage of an image.
# ## @param image Source image.
# ## @param x X coordinate of subimage.
# ## @param y Y coordinate of subimage.
# ## @param width Width of subimage.
# ## @param height Height of subimage.
# ## @param base Base of memory allocation.
# ## @param bytes Size of base allocation.
# ## @param data Memory allocation.
# ## @return The subimage, or null on error.
# ##
# ## Given an image, this function extracts the subimage at the
# ## given coordinates. The requested subimage must be entirely
# ## contained in the source @p image. The resulting image will have the same
# ## general image parameters as the source image. The @p base, @p bytes,
# ## and @p data arguments are passed to @ref xcb_create_image() unaltered
# ## to create the destination image---see its documentation for details.
# ##
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_subimage*(image: ptr xcb_image_t; x: uint32; y: uint32;
# width: uint32; height: uint32; base: pointer;
# bytes: uint32; data: ptr uint8): ptr xcb_image_t
# ##
# ## Shm stuff
# ##
# ## *
# ## Put the data of an xcb_image_t onto a drawable using the MIT Shm
# ## Extension.
# ## @param conn The connection to the X server.
# ## @param draw The draw you get the image from.
# ## @param gc The graphic context.
# ## @param image The image you want to combine with the rectangle.
# ## @param shminfo A @ref xcb_shm_segment_info_t structure.
# ## @param src_x The offset in x from the left edge of the image
# ## defined by the xcb_image_t structure.
# ## @param src_y The offset in y from the left edge of the image
# ## defined by the xcb_image_t structure.
# ## @param dest_x The x coordinate, which is relative to the origin of the
# ## drawable and defines the x coordinate of the upper-left corner of the
# ## rectangle.
# ## @param dest_y The y coordinate, which is relative to the origin of the
# ## drawable and defines the x coordinate of the upper-left corner of
# ## the rectangle.
# ## @param src_width The width of the subimage, in pixels.
# ## @param src_height The height of the subimage, in pixels.
# ## @param send_event Indicates whether or not a completion event
# ## should occur when the image write is complete.
# ## @return a pointer to the source image if no problem occurs, otherwise 0.
# ##
# ## This function combines an image in memory with a shape of the
# ## specified drawable. The section of the image defined by the @p x, @p y,
# ## @p width, and @p height arguments is drawn on the specified part of
# ## the drawable. If XYBitmap format is used, the depth must be
# ## one, or a``BadMatch'' error results. The foreground pixel in the
# ## Graphic Context @p gc defines the source for the one bits in the
# ## image, and the background pixel defines the source for the zero
# ## bits. For XYPixmap and ZPixmap, the depth must match the depth of
# ## the drawable, or a ``BadMatch'' error results.
# ##
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_shm_put*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
# gc: xcb_gcontext_t; image: ptr xcb_image_t;
# shminfo: xcb_shm_segment_info_t; src_x: int16;
# src_y: int16; dest_x: int16; dest_y: int16;
# src_width: uint16; src_height: uint16;
# send_event: uint8): ptr xcb_image_t
# ## *
# ## Read image data into a shared memory xcb_image_t.
# ## @param conn The connection to the X server.
# ## @param draw The draw you get the image from.
# ## @param image The image you want to combine with the rectangle.
# ## @param shminfo A @ref xcb_shm_segment_info_t structure.
# ## @param x The x coordinate, which are relative to the origin of the
# ## drawable and define the upper-left corner of the rectangle.
# ## @param y The y coordinate, which are relative to the origin of the
# ## drawable and define the upper-left corner of the rectangle.
# ## @param plane_mask The plane mask.
# ## @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
# ##
# ## This function reads image data into a shared memory xcb_image_t where
# ## @p conn is the connection to the X server, @p draw is the source
# ## drawable, @p image is the destination xcb_image_t, @p x and @p y are offsets
# ## within the drawable, and @p plane_mask defines which planes are to be
# ## read.
# ##
# ## If a problem occurs, the function returns @c 0. It returns 1
# ## otherwise.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_shm_get*(conn: ptr xcb_connection_t; draw: xcb_drawable_t;
# image: ptr xcb_image_t; shminfo: xcb_shm_segment_info_t;
# x: int16; y: int16; plane_mask: uint32): cint
# ## *
# ## Create an image from user-supplied bitmap data.
# ## @param data Image data in packed bitmap format.
# ## @param width Width in bits of image data.
# ## @param height Height in bits of image data.
# ## @return The image constructed from the image data, or 0 on error.
# ##
# ## This function creates an image from the user-supplied
# ## bitmap @p data. The bitmap data is assumed to be in
# ## xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_create_from_bitmap_data*(data: ptr uint8; width: uint32;
# height: uint32): ptr xcb_image_t
# ## *
# ## Create a pixmap from user-supplied bitmap data.
# ## @param display The connection to the X server.
# ## @param d The parent drawable for the pixmap.
# ## @param data Image data in packed bitmap format.
# ## @param width Width in bits of image data.
# ## @param height Height in bits of image data.
# ## @param depth Depth of the desired pixmap.
# ## @param fg Pixel for one-bits of pixmaps with depth larger than one.
# ## @param bg Pixel for zero-bits of pixmaps with depth larger than one.
# ## @param gcp If this pointer is non-null, the GC created to
# ## fill in the pixmap is stored here; it will have its foreground
# ## and background set to the supplied value. Otherwise, the GC
# ## will be freed.
# ## @return The pixmap constructed from the image data, or 0 on error.
# ##
# ## This function creates a pixmap from the user-supplied
# ## bitmap @p data. The bitmap data is assumed to be in
# ## xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
# ## If @p depth is greater than 1, the
# ## bitmap will be expanded to a pixmap using the given
# ## foreground and background pixels @p fg and @p bg.
# ## @ingroup xcb__image_t
# ##
# proc xcb_create_pixmap_from_bitmap_data*(display: ptr xcb_connection_t;
# d: xcb_drawable_t; data: ptr uint8;
# width: uint32; height: uint32;
# depth: uint32; fg: uint32; bg: uint32;
# gcp: ptr xcb_gcontext_t): xcb_pixmap_t
# ## *
# ## @}
# ##
# type
# xcb_key_symbols_t* = _XCBKeySymbols
# proc xcb_key_symbols_alloc*(c: ptr xcb_connection_t): ptr xcb_key_symbols_t
# proc xcb_key_symbols_free*(syms: ptr xcb_key_symbols_t)
# proc xcb_key_symbols_get_keysym*(syms: ptr xcb_key_symbols_t;
# keycode: xcb_keycode_t; col: cint): xcb_keysym_t
# ## *
# ## @brief Get the keycodes attached to a keysyms.
# ## There can be several value, so what is returned is an array of keycode
# ## terminated by XCB_NO_SYMBOL. You are responsible to free it.
# ## Be aware that this function can be slow. It will convert all
# ## combinations of all available keycodes to keysyms to find the ones that
# ## match.
# ## @param syms Key symbols.
# ## @param keysym The keysym to look for.
# ## @return A XCB_NO_SYMBOL terminated array of keycode, or NULL if nothing is found.
# ##
# proc xcb_key_symbols_get_keycode*(syms: ptr xcb_key_symbols_t; keysym: xcb_keysym_t): ptr xcb_keycode_t
# proc xcb_key_press_lookup_keysym*(syms: ptr xcb_key_symbols_t;
# event: ptr xcb_key_press_event_t; col: cint): xcb_keysym_t
# proc xcb_key_release_lookup_keysym*(syms: ptr xcb_key_symbols_t;
# event: ptr xcb_key_release_event_t; col: cint): xcb_keysym_t
# proc xcb_refresh_keyboard_mapping*(syms: ptr xcb_key_symbols_t;
# event: ptr xcb_mapping_notify_event_t): cint
# ## TODO: need XLookupString equivalent
# ## Tests for classes of symbols
# proc xcb_is_keypad_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_private_keypad_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_cursor_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_pf_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_function_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_misc_function_key*(keysym: xcb_keysym_t): cint
# proc xcb_is_modifier_key*(keysym: xcb_keysym_t): cint
# ## Copyright (C) 2007 Bart Massey
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# when not defined(BUILD):
# ## *
# ## XCB Image fast pixel ops.
# ##
# ## Fast inline versions of xcb_image_get_pixel() and
# ## xcb_image_put_pixel() for various common cases.
# ## The naming convention is xcb_image_put_pixel_FUB()
# ## where F is the format and is either XY for bitmaps
# ## or Z for pixmaps, U is the bitmap unit size or pixmap
# ## bits-per-pixel, and B is the endianness (if needed)
# ## and is either M for most-significant-first or L for
# ## least-significant-first. Note that no checking
# ## is done on the arguments to these routines---caller beware.
# ## Also note that the pixel type is chosen to be appropriate
# ## to the unit; bitmaps use int and pixmaps use the appropriate
# ## size of unsigned.
# ## @ingroup xcb__image_t
# ##
# proc xcb_image_put_pixel_XY32M*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: cint) =
# var unit: uint32 = (x shr 3) and not xcb_mask(2)
# var byte: uint32 = xcb_mask(2) - ((x shr 3) and xcb_mask(2))
# var bit: uint32 = xcb_mask(3) - (x and xcb_mask(3))
# var m: uint8 = 1 shl bit
# var p: uint8 = pixel shl bit
# var bp: ptr uint8 = image.data + (y * image.stride) + (unit or byte)
# bp[] = (bp[] and not m) or p
# proc xcb_image_put_pixel_XY32L*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: cint) =
# var bit: uint32 = x and xcb_mask(3)
# var m: uint8 = 1 shl bit
# var p: uint8 = pixel shl bit
# var bp: ptr uint8 = image.data + (y * image.stride) + (x shr 3)
# bp[] = (bp[] and not m) or p
# proc xcb_image_get_pixel_XY32M*(image: ptr xcb_image_t; x: uint32; y: uint32): cint =
# var unit: uint32 = (x shr 3) and not xcb_mask(2)
# var byte: uint32 = xcb_mask(2) - ((x shr 3) and xcb_mask(2))
# var bit: uint32 = xcb_mask(3) - (x and xcb_mask(3))
# var bp: ptr uint8 = image.data + (y * image.stride) + (unit or byte)
# return (bp[] shr bit) and 1
# proc xcb_image_get_pixel_XY32L*(image: ptr xcb_image_t; x: uint32; y: uint32): cint =
# var bit: uint32 = x and xcb_mask(3)
# var bp: ptr uint8 = image.data + (y * image.stride) + (x shr 3)
# return (bp[] shr bit) and 1
# proc xcb_image_put_pixel_Z8*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: uint8) =
# image.data[x + y * image.stride] = pixel
# proc xcb_image_get_pixel_Z8*(image: ptr xcb_image_t; x: uint32; y: uint32): uint8 =
# return image.data[x + y * image.stride]
# proc xcb_image_put_pixel_Z32M*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: uint32) =
# var row: ptr uint8 = image.data + (y * image.stride)
# row[x shl 2] = pixel shr 24
# row[(x shl 2) + 1] = pixel shr 16
# row[(x shl 2) + 2] = pixel shr 8
# row[(x shl 2) + 3] = pixel
# proc xcb_image_put_pixel_Z32L*(image: ptr xcb_image_t; x: uint32; y: uint32;
# pixel: uint32) =
# var row: ptr uint8 = image.data + (y * image.stride)
# row[x shl 2] = pixel
# row[(x shl 2) + 1] = pixel shr 8
# row[(x shl 2) + 2] = pixel shr 16
# row[(x shl 2) + 3] = pixel shr 24
# proc xcb_image_get_pixel_Z32M*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32 =
# var row: ptr uint8 = image.data + (y * image.stride)
# var pixel: uint32 = row[x shl 2] shl 24
# pixel = pixel or row[(x shl 2) + 1] shl 16
# pixel = pixel or row[(x shl 2) + 2] shl 8
# return pixel or row[(x shl 2) + 3]
# proc xcb_image_get_pixel_Z32L*(image: ptr xcb_image_t; x: uint32; y: uint32): uint32 =
# var row: ptr uint8 = image.data + (y * image.stride)
# var pixel: uint32 = row[x shl 2]
# pixel = pixel or row[(x shl 2) + 1] shl 8
# pixel = pixel or row[(x shl 2) + 2] shl 16
# return pixel or row[(x shl 2) + 3] shl 24
# ## Copyright © 2006 Jamey Sharp.
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# type
# xcb_pict_format_t* = enum
# XCB_PICT_FORMAT_ID = (1 shl 0), XCB_PICT_FORMAT_TYPE = (1 shl 1),
# XCB_PICT_FORMAT_DEPTH = (1 shl 2), XCB_PICT_FORMAT_RED = (1 shl 3),
# XCB_PICT_FORMAT_RED_MASK = (1 shl 4), XCB_PICT_FORMAT_GREEN = (1 shl 5),
# XCB_PICT_FORMAT_GREEN_MASK = (1 shl 6), XCB_PICT_FORMAT_BLUE = (1 shl 7),
# XCB_PICT_FORMAT_BLUE_MASK = (1 shl 8), XCB_PICT_FORMAT_ALPHA = (1 shl 9),
# XCB_PICT_FORMAT_ALPHA_MASK = (1 shl 10), XCB_PICT_FORMAT_COLORMAP = (1 shl 11)
# xcb_pict_standard_t* = enum
# XCB_PICT_STANDARD_ARGB_32, XCB_PICT_STANDARD_RGB_24, XCB_PICT_STANDARD_A_8,
# XCB_PICT_STANDARD_A_4, XCB_PICT_STANDARD_A_1
# proc xcb_render_util_find_visual_format*(formats: ptr xcb_render_query_pict_formats_reply_t;
# visual: xcb_visualid_t): ptr xcb_render_pictvisual_t
# proc xcb_render_util_find_format*(formats: ptr xcb_render_query_pict_formats_reply_t;
# mask: culong;
# ptemplate: ptr xcb_render_pictforminfo_t;
# count: cint): ptr xcb_render_pictforminfo_t
# proc xcb_render_util_find_standard_format*(
# formats: ptr xcb_render_query_pict_formats_reply_t; format: xcb_pict_standard_t): ptr xcb_render_pictforminfo_t
# proc xcb_render_util_query_version*(c: ptr xcb_connection_t): ptr xcb_render_query_version_reply_t
# proc xcb_render_util_query_formats*(c: ptr xcb_connection_t): ptr xcb_render_query_pict_formats_reply_t
# proc xcb_render_util_disconnect*(c: ptr xcb_connection_t): cint
# ## wrappers for xcb_render_composite_glyphs_8/16/32
# proc xcb_render_util_composite_text_stream*(
# initial_glyphset: xcb_render_glyphset_t; total_glyphs: uint32;
# total_glyphset_changes: uint32): ptr xcb_render_util_composite_text_stream_t
# proc xcb_render_util_glyphs_8*(stream: ptr xcb_render_util_composite_text_stream_t;
# dx: int16; dy: int16; count: uint32;
# glyphs: ptr uint8)
# proc xcb_render_util_glyphs_16*(stream: ptr xcb_render_util_composite_text_stream_t;
# dx: int16; dy: int16; count: uint32;
# glyphs: ptr uint16)
# proc xcb_render_util_glyphs_32*(stream: ptr xcb_render_util_composite_text_stream_t;
# dx: int16; dy: int16; count: uint32;
# glyphs: ptr uint32)
# proc xcb_render_util_change_glyphset*(stream: ptr xcb_render_util_composite_text_stream_t;
# glyphset: xcb_render_glyphset_t)
# proc xcb_render_util_composite_text*(xc: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t;
# dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t;
# src_x: int16; src_y: int16; stream: ptr xcb_render_util_composite_text_stream_t): xcb_void_cookie_t
# proc xcb_render_util_composite_text_checked*(xc: ptr xcb_connection_t; op: uint8;
# src: xcb_render_picture_t; dst: xcb_render_picture_t;
# mask_format: xcb_render_pictformat_t; src_x: int16; src_y: int16;
# stream: ptr xcb_render_util_composite_text_stream_t): xcb_void_cookie_t
# proc xcb_render_util_composite_text_free*(
# stream: ptr xcb_render_util_composite_text_stream_t)
# ##
# ## vim:ts=4:sw=4:expandtab
# ##
# ## Copyright © 2016 Ingo Bürk
# ##
# ## Permission is hereby granted, free of charge, to any person obtaining a
# ## copy of this software and associated documentation files (the "Software"),
# ## to deal in the Software without restriction, including without limitation
# ## the rights to use, copy, modify, merge, publish, distribute, sublicense,
# ## and/or sell copies of the Software, and to permit persons to whom the
# ## Software is furnished to do so, subject to the following conditions:
# ##
# ## The above copyright notice and this permission notice shall be included in
# ## all copies or substantial portions of the Software.
# ##
# ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ## AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ## ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# ## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##
# ## Except as contained in this notice, the names of the authors or their
# ## institutions shall not be used in advertising or otherwise to promote the
# ## sale, use or other dealings in this Software without prior written
# ## authorization from the authors.
# ##
# ##
# ## *
# ## @defgroup xcb_xrm_database_t XCB XRM Functions
# ##
# ## These functions are the xcb equivalent of the Xrm* function family in Xlib.
# ## They allow the parsing and matching of X resources as well as some utility
# ## functions.
# ##
# ## Here is an example of how this library can be used to retrieve a
# ## user-configured resource:
# ## @code
# ## xcb_connection_t *conn = xcb_connect(NULL, &screennr);
# ## if (conn == NULL || xcb_connection_has_error(conn))
# ## err(EXIT_FAILURE, "Could not connect to the X server.");
# ##
# ## xcb_xrm_database_t *database = xcb_xrm_database_from_default(conn);
# ## if (database == NULL)
# ## err(EXIT_FAILURE, "Could not open database");
# ##
# ## char *value;
# ## if (xcb_xrm_resource_get_string(database, "Xft.dpi", NULL, &value) >= 0) {
# ## fprintf(stdout, "Xft.dpi: %s\n", value);
# ## free(value);
# ## }
# ##
# ## xcb_xrm_database_free(database);
# ## xcb_disconnect(conn);
# ## @endcode
# ##
# ## @{
# ##
# ## *
# ## @struct xcb_xrm_database_t
# ## Reference to a database.
# ##
# ## The database can be loaded in different ways, e.g., from the
# ## RESOURCE_MANAGER property by using @ref
# ## xcb_xrm_database_from_resource_manager (). All queries for a resource go
# ## against a specific database. A database must always be free'd by using @ref
# ## xcb_xrm_database_free ().
# ##
# ## Note that a database is not thread-safe, i.e., multiple threads should not
# ## operate on the same database instance. This is especially true for write
# ## operations on the database. However, you can use this library in a
# ## multi-threaded application as long as the database is thread-local.
# ##
# ## *
# ## Creates a database similarly to XGetDefault(). For typical applications,
# ## this is the recommended way to construct the resource database.
# ##
# ## The database is created as follows:
# ## - If the RESOURCE_MANAGER property exists on the root window of
# ## screen 0, the database is constructed from it using @ref
# ## xcb_xrm_database_from_resource_manager().
# ## - Otherwise, if $HOME/.Xresources exists, the database is constructed from
# ## it using @ref xcb_xrm_database_from_file().
# ## - Otherwise, if $HOME/.Xdefaults exists, the database is constructed from
# ## it using @ref xcb_xrm_database_from_file().
# ## - If the environment variable XENVIRONMENT is set, the file specified by
# ## it is loaded using @ref xcb_xrm_database_from_file and then combined with
# ## the database using @ref xcb_xrm_database_combine() with override set to
# ## true.
# ## If XENVIRONMENT is not specified, the same is done with
# ## $HOME/.Xdefaults-$HOSTNAME, wherein $HOSTNAME is determined by
# ## gethostname(2).
# ##
# ## This represents the way XGetDefault() creates the database for the most
# ## part, but is not exactly the same. In particular, XGetDefault() does not
# ## consider $HOME/.Xresources.
# ##
# ## @param conn XCB connection.
# ## @returns The constructed database. Can return NULL, e.g., if the screen
# ## cannot be determined.
# ##
# proc xcb_xrm_database_from_default*(conn: ptr xcb_connection_t): ptr xcb_xrm_database_t
# ## *
# ## Loads the RESOURCE_MANAGER property and creates a database with its
# ## contents. If the database could not be created, this function will return
# ## NULL.
# ##
# ## @param conn A working XCB connection.
# ## @param screen The xcb_screen_t* screen to use.
# ## @returns The database described by the RESOURCE_MANAGER property.
# ##
# ## @ingroup xcb_xrm_database_t
# ##
# proc xcb_xrm_database_from_resource_manager*(conn: ptr xcb_connection_t;
# screen: ptr xcb_screen_t): ptr xcb_xrm_database_t
# ## *
# ## Creates a database from the given string.
# ## If the database could not be created, this function will return NULL.
# ##
# ## @param str The resource string.
# ## @returns The database described by the resource string.
# ##
# ## @ingroup xcb_xrm_database_t
# ##
# proc xcb_xrm_database_from_string*(str: cstring): ptr xcb_xrm_database_t
# ## *
# ## Creates a database from a given file.
# ## If the file cannot be found or opened, NULL is returned.
# ##
# ## @param filename Valid filename.
# ## @returns The database described by the file's contents.
# ##
# proc xcb_xrm_database_from_file*(filename: cstring): ptr xcb_xrm_database_t
# ## *
# ## Returns a string representation of a database.
# ## The string is owned by the caller and must be free'd.
# ##
# ## @param database The database to return in string format.
# ## @returns A string representation of the specified database.
# ##
# proc xcb_xrm_database_to_string*(database: ptr xcb_xrm_database_t): cstring
# ## *
# ## Combines two databases.
# ## The entries from the source database are stored in the target database. If
# ## the same specifier already exists in the target database, the value will be
# ## overridden if override is set; otherwise, the value is discarded.
# ## If NULL is passed for target_db, a new and empty database will be created
# ## and returned in the pointer.
# ##
# ## @param source_db Source database.
# ## @param target_db Target database.
# ## @param override If true, entries from the source database override entries
# ## in the target database using the same resource specifier.
# ##
# proc xcb_xrm_database_combine*(source_db: ptr xcb_xrm_database_t;
# target_db: ptr ptr xcb_xrm_database_t; override: bool)
# ## *
# ## Inserts a new resource into the database.
# ## If the resource already exists, the current value will be replaced.
# ## If NULL is passed for database, a new and empty database will be created and
# ## returned in the pointer.
# ##
# ## Note that this is not the equivalent of @ref
# ## xcb_xrm_database_put_resource_line when concatenating the resource name and
# ## value with a colon. For example, if the value starts with a leading space,
# ## this must (and will) be replaced with the special '\ ' sequence.
# ##
# ## @param database The database to modify.
# ## @param resource The fully qualified or partial resource specifier.
# ## @param value The value of the resource.
# ##
# proc xcb_xrm_database_put_resource*(database: ptr ptr xcb_xrm_database_t;
# resource: cstring; value: cstring)
# ## *
# ## Inserts a new resource into the database.
# ## If the resource already exists, the current value will be replaced.
# ## If NULL is passed for database, a new and empty database will be created and
# ## returned in the pointer.
# ##
# ## @param database The database to modify.
# ## @param line The complete resource specification to insert.
# ##
# proc xcb_xrm_database_put_resource_line*(database: ptr ptr xcb_xrm_database_t;
# line: cstring)
# ## *
# ## Destroys the given database.
# ##
# ## @param database The database to destroy.
# ##
# ## @ingroup xcb_xrm_database_t
# ##
# proc xcb_xrm_database_free*(database: ptr xcb_xrm_database_t)
# ## *
# ## Find the string value of a resource.
# ##
# ## Note that the string is owned by the caller and must be free'd.
# ##
# ## @param database The database to query.
# ## @param res_name The fully qualified resource name string.
# ## @param res_class The fully qualified resource class string. This argument
# ## may be left empty / NULL, but if given, it must contain the same number of
# ## components as res_name.
# ## @param out Out parameter to which the value will be written.
# ## @returns 0 if the resource was found, a negative error code otherwise.
# ##
# proc xcb_xrm_resource_get_string*(database: ptr xcb_xrm_database_t;
# res_name: cstring; res_class: cstring;
# `out`: cstringArray): cint
# ## *
# ## Find the long value of a resource.
# ##
# ## @param database The database to query.
# ## @param res_name The fully qualified resource name string.
# ## @param res_class The fully qualified resource class string. This argument
# ## may be left empty / NULL, but if given, it must contain the same number of
# ## components as res_name.
# ## @param out Out parameter to which the converted value will be written.
# ## @returns 0 if the resource was found and converted, -1 if the resource was
# ## found but could not be converted and -2 if the resource was not found.
# ##
# proc xcb_xrm_resource_get_long*(database: ptr xcb_xrm_database_t; res_name: cstring;
# res_class: cstring; `out`: ptr clong): cint
# ## *
# ## Find the bool value of a resource.
# ##
# ## The conversion to a bool is done by applying the following steps in order:
# ## - If the value can be converted to a long, return the truthiness of the
# ## converted number.
# ## - If the value is one of "true", "on" or "yes" (case-insensitive), return
# ## true.
# ## - If the value is one of "false", "off" or "no" (case-insensitive), return
# ## false.
# ##
# ## @param database The database to query.
# ## @param res_name The fully qualified resource name string.
# ## @param res_class The fully qualified resource class string. This argument
# ## may be left empty / NULL, but if given, it must contain the same number of
# ## components as res_name.
# ## @param out Out parameter to which the converted value will be written.
# ## @returns 0 if the resource was found and converted, -1 if the resource was
# ## found but could not be converted and -2 if the resource was not found.
# ##
# proc xcb_xrm_resource_get_bool*(database: ptr xcb_xrm_database_t; res_name: cstring;
# res_class: cstring; `out`: ptr bool): cint
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xc_misc.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_XCMisc_API XCB XCMisc API
# ## @brief XCMisc XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb
# const
# XCB_XCMISC_MAJOR_VERSION* = 1
# XCB_XCMISC_MINOR_VERSION* = 1
# var xcb_xc_misc_id*: xcb_extension_t
# ## *
# ## @brief xcb_xc_misc_get_version_cookie_t
# ##
# type
# xcb_xc_misc_get_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xc_misc_get_version.
# const
# XCB_XC_MISC_GET_VERSION* = 0
# ## *
# ## @brief xcb_xc_misc_get_version_request_t
# ##
# type
# xcb_xc_misc_get_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint16
# client_minor_version*: uint16
# ## *
# ## @brief xcb_xc_misc_get_version_reply_t
# ##
# type
# xcb_xc_misc_get_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major_version*: uint16
# server_minor_version*: uint16
# ## *
# ## @brief xcb_xc_misc_get_xid_range_cookie_t
# ##
# type
# xcb_xc_misc_get_xid_range_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xc_misc_get_xid_range.
# const
# XCB_XC_MISC_GET_XID_RANGE* = 1
# ## *
# ## @brief xcb_xc_misc_get_xid_range_request_t
# ##
# type
# xcb_xc_misc_get_xid_range_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xc_misc_get_xid_range_reply_t
# ##
# type
# xcb_xc_misc_get_xid_range_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# start_id*: uint32
# count*: uint32
# ## *
# ## @brief xcb_xc_misc_get_xid_list_cookie_t
# ##
# type
# xcb_xc_misc_get_xid_list_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xc_misc_get_xid_list.
# const
# XCB_XC_MISC_GET_XID_LIST* = 2
# ## *
# ## @brief xcb_xc_misc_get_xid_list_request_t
# ##
# type
# xcb_xc_misc_get_xid_list_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# count*: uint32
# ## *
# ## @brief xcb_xc_misc_get_xid_list_reply_t
# ##
# type
# xcb_xc_misc_get_xid_list_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# ids_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xc_misc_get_version*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_xc_misc_get_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xc_misc_get_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_xc_misc_get_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xc_misc_get_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xc_misc_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xc_misc_get_xid_range*(c: ptr xcb_connection_t): xcb_xc_misc_get_xid_range_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xc_misc_get_xid_range_unchecked*(c: ptr xcb_connection_t): xcb_xc_misc_get_xid_range_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xc_misc_get_xid_range_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xc_misc_get_xid_range_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_xid_range_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_xid_range_reply_t
# proc xcb_xc_misc_get_xid_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xc_misc_get_xid_list*(c: ptr xcb_connection_t; count: uint32): xcb_xc_misc_get_xid_list_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xc_misc_get_xid_list_unchecked*(c: ptr xcb_connection_t; count: uint32): xcb_xc_misc_get_xid_list_cookie_t
# proc xcb_xc_misc_get_xid_list_ids*(R: ptr xcb_xc_misc_get_xid_list_reply_t): ptr uint32
# proc xcb_xc_misc_get_xid_list_ids_length*(R: ptr xcb_xc_misc_get_xid_list_reply_t): cint
# proc xcb_xc_misc_get_xid_list_ids_end*(R: ptr xcb_xc_misc_get_xid_list_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xc_misc_get_xid_list_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xc_misc_get_xid_list_reply*(c: ptr xcb_connection_t; cookie: xcb_xc_misc_get_xid_list_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xc_misc_get_xid_list_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xevie.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Xevie_API XCB Xevie API
# ## @brief Xevie XCB Protocol Implementation.
# ## @{
# ##
# const
# XCB_XEVIE_MAJOR_VERSION* = 1
# XCB_XEVIE_MINOR_VERSION* = 0
# var xcb_xevie_id*: xcb_extension_t
# ## *
# ## @brief xcb_xevie_query_version_cookie_t
# ##
# type
# xcb_xevie_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xevie_query_version.
# const
# XCB_XEVIE_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_xevie_query_version_request_t
# ##
# type
# xcb_xevie_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint16
# client_minor_version*: uint16
# ## *
# ## @brief xcb_xevie_query_version_reply_t
# ##
# type
# xcb_xevie_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major_version*: uint16
# server_minor_version*: uint16
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_xevie_start_cookie_t
# ##
# type
# xcb_xevie_start_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xevie_start.
# const
# XCB_XEVIE_START* = 1
# ## *
# ## @brief xcb_xevie_start_request_t
# ##
# type
# xcb_xevie_start_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xevie_start_reply_t
# ##
# type
# xcb_xevie_start_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pad1*: array[24, uint8]
# ## *
# ## @brief xcb_xevie_end_cookie_t
# ##
# type
# xcb_xevie_end_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xevie_end.
# const
# XCB_XEVIE_END* = 2
# ## *
# ## @brief xcb_xevie_end_request_t
# ##
# type
# xcb_xevie_end_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cmap*: uint32
# ## *
# ## @brief xcb_xevie_end_reply_t
# ##
# type
# xcb_xevie_end_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pad1*: array[24, uint8]
# xcb_xevie_datatype_t* = enum
# XCB_XEVIE_DATATYPE_UNMODIFIED = 0, XCB_XEVIE_DATATYPE_MODIFIED = 1
# ## *
# ## @brief xcb_xevie_event_t
# ##
# type
# xcb_xevie_event_t* {.bycopy.} = object
# pad0*: array[32, uint8]
# ## *
# ## @brief xcb_xevie_event_iterator_t
# ##
# type
# xcb_xevie_event_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xevie_event_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xevie_send_cookie_t
# ##
# type
# xcb_xevie_send_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xevie_send.
# const
# XCB_XEVIE_SEND* = 3
# ## *
# ## @brief xcb_xevie_send_request_t
# ##
# type
# xcb_xevie_send_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# event*: xcb_xevie_event_t
# data_type*: uint32
# pad0*: array[64, uint8]
# ## *
# ## @brief xcb_xevie_send_reply_t
# ##
# type
# xcb_xevie_send_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pad1*: array[24, uint8]
# ## *
# ## @brief xcb_xevie_select_input_cookie_t
# ##
# type
# xcb_xevie_select_input_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xevie_select_input.
# const
# XCB_XEVIE_SELECT_INPUT* = 4
# ## *
# ## @brief xcb_xevie_select_input_request_t
# ##
# type
# xcb_xevie_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# event_mask*: uint32
# ## *
# ## @brief xcb_xevie_select_input_reply_t
# ##
# type
# xcb_xevie_select_input_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pad1*: array[24, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xevie_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_xevie_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xevie_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint16;
# client_minor_version: uint16): xcb_xevie_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xevie_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xevie_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xevie_start*(c: ptr xcb_connection_t; screen: uint32): xcb_xevie_start_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xevie_start_unchecked*(c: ptr xcb_connection_t; screen: uint32): xcb_xevie_start_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xevie_start_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xevie_start_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_start_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_start_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xevie_end*(c: ptr xcb_connection_t; cmap: uint32): xcb_xevie_end_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xevie_end_unchecked*(c: ptr xcb_connection_t; cmap: uint32): xcb_xevie_end_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xevie_end_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xevie_end_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_end_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_end_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xevie_event_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xevie_event_t)
# ##
# proc xcb_xevie_event_next*(i: ptr xcb_xevie_event_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xevie_event_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xevie_event_end*(i: xcb_xevie_event_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xevie_send*(c: ptr xcb_connection_t; event: xcb_xevie_event_t;
# data_type: uint32): xcb_xevie_send_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xevie_send_unchecked*(c: ptr xcb_connection_t; event: xcb_xevie_event_t;
# data_type: uint32): xcb_xevie_send_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xevie_send_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xevie_send_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_send_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_send_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xevie_select_input*(c: ptr xcb_connection_t; event_mask: uint32): xcb_xevie_select_input_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xevie_select_input_unchecked*(c: ptr xcb_connection_t; event_mask: uint32): xcb_xevie_select_input_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xevie_select_input_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xevie_select_input_reply*(c: ptr xcb_connection_t; cookie: xcb_xevie_select_input_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xevie_select_input_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xf86dri.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_XF86Dri_API XCB XF86Dri API
# ## @brief XF86Dri XCB Protocol Implementation.
# ## @{
# ##
# const
# XCB_XF86DRI_MAJOR_VERSION* = 4
# XCB_XF86DRI_MINOR_VERSION* = 1
# var xcb_xf86dri_id*: xcb_extension_t
# ## *
# ## @brief xcb_xf86dri_drm_clip_rect_t
# ##
# type
# xcb_xf86dri_drm_clip_rect_t* {.bycopy.} = object
# x1*: int16
# y1*: int16
# x2*: int16
# x3*: int16
# ## *
# ## @brief xcb_xf86dri_drm_clip_rect_iterator_t
# ##
# type
# xcb_xf86dri_drm_clip_rect_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xf86dri_drm_clip_rect_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xf86dri_query_version_cookie_t
# ##
# type
# xcb_xf86dri_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_query_version.
# const
# XCB_XF86DRI_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_xf86dri_query_version_request_t
# ##
# type
# xcb_xf86dri_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xf86dri_query_version_reply_t
# ##
# type
# xcb_xf86dri_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# dri_major_version*: uint16
# dri_minor_version*: uint16
# dri_minor_patch*: uint32
# ## *
# ## @brief xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ##
# type
# xcb_xf86dri_query_direct_rendering_capable_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_query_direct_rendering_capable.
# const
# XCB_XF86DRI_QUERY_DIRECT_RENDERING_CAPABLE* = 1
# ## *
# ## @brief xcb_xf86dri_query_direct_rendering_capable_request_t
# ##
# type
# xcb_xf86dri_query_direct_rendering_capable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xf86dri_query_direct_rendering_capable_reply_t
# ##
# type
# xcb_xf86dri_query_direct_rendering_capable_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# is_capable*: uint8
# ## *
# ## @brief xcb_xf86dri_open_connection_cookie_t
# ##
# type
# xcb_xf86dri_open_connection_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_open_connection.
# const
# XCB_XF86DRI_OPEN_CONNECTION* = 2
# ## *
# ## @brief xcb_xf86dri_open_connection_request_t
# ##
# type
# xcb_xf86dri_open_connection_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xf86dri_open_connection_reply_t
# ##
# type
# xcb_xf86dri_open_connection_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# sarea_handle_low*: uint32
# sarea_handle_high*: uint32
# bus_id_len*: uint32
# pad1*: array[12, uint8]
# ## * Opcode for xcb_xf86dri_close_connection.
# const
# XCB_XF86DRI_CLOSE_CONNECTION* = 3
# ## *
# ## @brief xcb_xf86dri_close_connection_request_t
# ##
# type
# xcb_xf86dri_close_connection_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xf86dri_get_client_driver_name_cookie_t
# ##
# type
# xcb_xf86dri_get_client_driver_name_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_get_client_driver_name.
# const
# XCB_XF86DRI_GET_CLIENT_DRIVER_NAME* = 4
# ## *
# ## @brief xcb_xf86dri_get_client_driver_name_request_t
# ##
# type
# xcb_xf86dri_get_client_driver_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xf86dri_get_client_driver_name_reply_t
# ##
# type
# xcb_xf86dri_get_client_driver_name_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# client_driver_major_version*: uint32
# client_driver_minor_version*: uint32
# client_driver_patch_version*: uint32
# client_driver_name_len*: uint32
# pad1*: array[8, uint8]
# ## *
# ## @brief xcb_xf86dri_create_context_cookie_t
# ##
# type
# xcb_xf86dri_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_create_context.
# const
# XCB_XF86DRI_CREATE_CONTEXT* = 5
# ## *
# ## @brief xcb_xf86dri_create_context_request_t
# ##
# type
# xcb_xf86dri_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# visual*: uint32
# context*: uint32
# ## *
# ## @brief xcb_xf86dri_create_context_reply_t
# ##
# type
# xcb_xf86dri_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# hw_context*: uint32
# ## * Opcode for xcb_xf86dri_destroy_context.
# const
# XCB_XF86DRI_DESTROY_CONTEXT* = 6
# ## *
# ## @brief xcb_xf86dri_destroy_context_request_t
# ##
# type
# xcb_xf86dri_destroy_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# context*: uint32
# ## *
# ## @brief xcb_xf86dri_create_drawable_cookie_t
# ##
# type
# xcb_xf86dri_create_drawable_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_create_drawable.
# const
# XCB_XF86DRI_CREATE_DRAWABLE* = 7
# ## *
# ## @brief xcb_xf86dri_create_drawable_request_t
# ##
# type
# xcb_xf86dri_create_drawable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# drawable*: uint32
# ## *
# ## @brief xcb_xf86dri_create_drawable_reply_t
# ##
# type
# xcb_xf86dri_create_drawable_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# hw_drawable_handle*: uint32
# ## * Opcode for xcb_xf86dri_destroy_drawable.
# const
# XCB_XF86DRI_DESTROY_DRAWABLE* = 8
# ## *
# ## @brief xcb_xf86dri_destroy_drawable_request_t
# ##
# type
# xcb_xf86dri_destroy_drawable_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# drawable*: uint32
# ## *
# ## @brief xcb_xf86dri_get_drawable_info_cookie_t
# ##
# type
# xcb_xf86dri_get_drawable_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_get_drawable_info.
# const
# XCB_XF86DRI_GET_DRAWABLE_INFO* = 9
# ## *
# ## @brief xcb_xf86dri_get_drawable_info_request_t
# ##
# type
# xcb_xf86dri_get_drawable_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# drawable*: uint32
# ## *
# ## @brief xcb_xf86dri_get_drawable_info_reply_t
# ##
# type
# xcb_xf86dri_get_drawable_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# drawable_table_index*: uint32
# drawable_table_stamp*: uint32
# drawable_origin_X*: int16
# drawable_origin_Y*: int16
# drawable_size_W*: int16
# drawable_size_H*: int16
# num_clip_rects*: uint32
# back_x*: int16
# back_y*: int16
# num_back_clip_rects*: uint32
# ## *
# ## @brief xcb_xf86dri_get_device_info_cookie_t
# ##
# type
# xcb_xf86dri_get_device_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_get_device_info.
# const
# XCB_XF86DRI_GET_DEVICE_INFO* = 10
# ## *
# ## @brief xcb_xf86dri_get_device_info_request_t
# ##
# type
# xcb_xf86dri_get_device_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# ## *
# ## @brief xcb_xf86dri_get_device_info_reply_t
# ##
# type
# xcb_xf86dri_get_device_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# framebuffer_handle_low*: uint32
# framebuffer_handle_high*: uint32
# framebuffer_origin_offset*: uint32
# framebuffer_size*: uint32
# framebuffer_stride*: uint32
# device_private_size*: uint32
# ## *
# ## @brief xcb_xf86dri_auth_connection_cookie_t
# ##
# type
# xcb_xf86dri_auth_connection_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xf86dri_auth_connection.
# const
# XCB_XF86DRI_AUTH_CONNECTION* = 11
# ## *
# ## @brief xcb_xf86dri_auth_connection_request_t
# ##
# type
# xcb_xf86dri_auth_connection_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# screen*: uint32
# magic*: uint32
# ## *
# ## @brief xcb_xf86dri_auth_connection_reply_t
# ##
# type
# xcb_xf86dri_auth_connection_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# authenticated*: uint32
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xf86dri_drm_clip_rect_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xf86dri_drm_clip_rect_t)
# ##
# proc xcb_xf86dri_drm_clip_rect_next*(i: ptr xcb_xf86dri_drm_clip_rect_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xf86dri_drm_clip_rect_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xf86dri_drm_clip_rect_end*(i: xcb_xf86dri_drm_clip_rect_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_query_version*(c: ptr xcb_connection_t): xcb_xf86dri_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_query_version_unchecked*(c: ptr xcb_connection_t): xcb_xf86dri_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_query_direct_rendering_capable*(c: ptr xcb_connection_t;
# screen: uint32): xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_query_direct_rendering_capable_unchecked*(
# c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_query_direct_rendering_capable_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_query_direct_rendering_capable_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_query_direct_rendering_capable_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_query_direct_rendering_capable_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_query_direct_rendering_capable_reply_t
# proc xcb_xf86dri_open_connection_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_open_connection*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_open_connection_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_open_connection_unchecked*(c: ptr xcb_connection_t;
# screen: uint32): xcb_xf86dri_open_connection_cookie_t
# proc xcb_xf86dri_open_connection_bus_id*(R: ptr xcb_xf86dri_open_connection_reply_t): cstring
# proc xcb_xf86dri_open_connection_bus_id_length*(
# R: ptr xcb_xf86dri_open_connection_reply_t): cint
# proc xcb_xf86dri_open_connection_bus_id_end*(
# R: ptr xcb_xf86dri_open_connection_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_open_connection_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_open_connection_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_open_connection_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_open_connection_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xf86dri_close_connection_checked*(c: ptr xcb_connection_t; screen: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_close_connection*(c: ptr xcb_connection_t; screen: uint32): xcb_void_cookie_t
# proc xcb_xf86dri_get_client_driver_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_get_client_driver_name*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_get_client_driver_name_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_get_client_driver_name_unchecked*(c: ptr xcb_connection_t;
# screen: uint32): xcb_xf86dri_get_client_driver_name_cookie_t
# proc xcb_xf86dri_get_client_driver_name_client_driver_name*(
# R: ptr xcb_xf86dri_get_client_driver_name_reply_t): cstring
# proc xcb_xf86dri_get_client_driver_name_client_driver_name_length*(
# R: ptr xcb_xf86dri_get_client_driver_name_reply_t): cint
# proc xcb_xf86dri_get_client_driver_name_client_driver_name_end*(
# R: ptr xcb_xf86dri_get_client_driver_name_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_get_client_driver_name_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_get_client_driver_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_client_driver_name_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_client_driver_name_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_create_context*(c: ptr xcb_connection_t; screen: uint32;
# visual: uint32; context: uint32): xcb_xf86dri_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_create_context_unchecked*(c: ptr xcb_connection_t;
# screen: uint32; visual: uint32; context: uint32): xcb_xf86dri_create_context_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_create_context_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xf86dri_destroy_context_checked*(c: ptr xcb_connection_t; screen: uint32;
# context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_destroy_context*(c: ptr xcb_connection_t; screen: uint32;
# context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_create_drawable*(c: ptr xcb_connection_t; screen: uint32;
# drawable: uint32): xcb_xf86dri_create_drawable_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_create_drawable_unchecked*(c: ptr xcb_connection_t;
# screen: uint32; drawable: uint32): xcb_xf86dri_create_drawable_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_create_drawable_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_create_drawable_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_create_drawable_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_create_drawable_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xf86dri_destroy_drawable_checked*(c: ptr xcb_connection_t;
# screen: uint32; drawable: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_destroy_drawable*(c: ptr xcb_connection_t; screen: uint32;
# drawable: uint32): xcb_void_cookie_t
# proc xcb_xf86dri_get_drawable_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_get_drawable_info*(c: ptr xcb_connection_t; screen: uint32;
# drawable: uint32): xcb_xf86dri_get_drawable_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_get_drawable_info_unchecked*(c: ptr xcb_connection_t;
# screen: uint32; drawable: uint32): xcb_xf86dri_get_drawable_info_cookie_t
# proc xcb_xf86dri_get_drawable_info_clip_rects*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): ptr xcb_xf86dri_drm_clip_rect_t
# proc xcb_xf86dri_get_drawable_info_clip_rects_length*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): cint
# proc xcb_xf86dri_get_drawable_info_clip_rects_iterator*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): xcb_xf86dri_drm_clip_rect_iterator_t
# proc xcb_xf86dri_get_drawable_info_back_clip_rects*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): ptr xcb_xf86dri_drm_clip_rect_t
# proc xcb_xf86dri_get_drawable_info_back_clip_rects_length*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): cint
# proc xcb_xf86dri_get_drawable_info_back_clip_rects_iterator*(
# R: ptr xcb_xf86dri_get_drawable_info_reply_t): xcb_xf86dri_drm_clip_rect_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_get_drawable_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_get_drawable_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_drawable_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_drawable_info_reply_t
# proc xcb_xf86dri_get_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_get_device_info*(c: ptr xcb_connection_t; screen: uint32): xcb_xf86dri_get_device_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_get_device_info_unchecked*(c: ptr xcb_connection_t;
# screen: uint32): xcb_xf86dri_get_device_info_cookie_t
# proc xcb_xf86dri_get_device_info_device_private*(
# R: ptr xcb_xf86dri_get_device_info_reply_t): ptr uint32
# proc xcb_xf86dri_get_device_info_device_private_length*(
# R: ptr xcb_xf86dri_get_device_info_reply_t): cint
# proc xcb_xf86dri_get_device_info_device_private_end*(
# R: ptr xcb_xf86dri_get_device_info_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_get_device_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_get_device_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_get_device_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_get_device_info_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xf86dri_auth_connection*(c: ptr xcb_connection_t; screen: uint32;
# magic: uint32): xcb_xf86dri_auth_connection_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xf86dri_auth_connection_unchecked*(c: ptr xcb_connection_t;
# screen: uint32; magic: uint32): xcb_xf86dri_auth_connection_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xf86dri_auth_connection_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xf86dri_auth_connection_reply*(c: ptr xcb_connection_t; cookie: xcb_xf86dri_auth_connection_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xf86dri_auth_connection_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xfixes.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_XFixes_API XCB XFixes API
# ## @brief XFixes XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto, render, shape
# const
# XCB_XFIXES_MAJOR_VERSION* = 5
# XCB_XFIXES_MINOR_VERSION* = 0
# var xcb_xfixes_id*: xcb_extension_t
# ## *
# ## @brief xcb_xfixes_query_version_cookie_t
# ##
# type
# xcb_xfixes_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xfixes_query_version.
# const
# XCB_XFIXES_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_xfixes_query_version_request_t
# ##
# type
# xcb_xfixes_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major_version*: uint32
# client_minor_version*: uint32
# ## *
# ## @brief xcb_xfixes_query_version_reply_t
# ##
# type
# xcb_xfixes_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint32
# minor_version*: uint32
# pad1*: array[16, uint8]
# xcb_xfixes_save_set_mode_t* = enum
# XCB_XFIXES_SAVE_SET_MODE_INSERT = 0, XCB_XFIXES_SAVE_SET_MODE_DELETE = 1
# xcb_xfixes_save_set_target_t* = enum
# XCB_XFIXES_SAVE_SET_TARGET_NEAREST = 0, XCB_XFIXES_SAVE_SET_TARGET_ROOT = 1
# xcb_xfixes_save_set_mapping_t* = enum
# XCB_XFIXES_SAVE_SET_MAPPING_MAP = 0, XCB_XFIXES_SAVE_SET_MAPPING_UNMAP = 1
# ## * Opcode for xcb_xfixes_change_save_set.
# const
# XCB_XFIXES_CHANGE_SAVE_SET* = 1
# ## *
# ## @brief xcb_xfixes_change_save_set_request_t
# ##
# type
# xcb_xfixes_change_save_set_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# mode*: uint8
# target*: uint8
# map*: uint8
# pad0*: uint8
# window*: xcb_window_t
# xcb_xfixes_selection_event_t* = enum
# XCB_XFIXES_SELECTION_EVENT_SET_SELECTION_OWNER = 0,
# XCB_XFIXES_SELECTION_EVENT_SELECTION_WINDOW_DESTROY = 1,
# XCB_XFIXES_SELECTION_EVENT_SELECTION_CLIENT_CLOSE = 2
# xcb_xfixes_selection_event_mask_t* = enum
# XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER = 1,
# XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_WINDOW_DESTROY = 2,
# XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_CLIENT_CLOSE = 4
# ## * Opcode for xcb_xfixes_selection_notify.
# const
# XCB_XFIXES_SELECTION_NOTIFY* = 0
# ## *
# ## @brief xcb_xfixes_selection_notify_event_t
# ##
# type
# xcb_xfixes_selection_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# subtype*: uint8
# sequence*: uint16
# window*: xcb_window_t
# owner*: xcb_window_t
# selection*: xcb_atom_t
# timestamp*: xcb_timestamp_t
# selection_timestamp*: xcb_timestamp_t
# pad0*: array[8, uint8]
# ## * Opcode for xcb_xfixes_select_selection_input.
# const
# XCB_XFIXES_SELECT_SELECTION_INPUT* = 2
# ## *
# ## @brief xcb_xfixes_select_selection_input_request_t
# ##
# type
# xcb_xfixes_select_selection_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# selection*: xcb_atom_t
# event_mask*: uint32
# xcb_xfixes_cursor_notify_t* = enum
# XCB_XFIXES_CURSOR_NOTIFY_DISPLAY_CURSOR = 0
# xcb_xfixes_cursor_notify_mask_t* = enum
# XCB_XFIXES_CURSOR_NOTIFY_MASK_DISPLAY_CURSOR = 1
# ## * Opcode for xcb_xfixes_cursor_notify.
# const
# XCB_XFIXES_CURSOR_NOTIFY* = 1
# ## *
# ## @brief xcb_xfixes_cursor_notify_event_t
# ##
# type
# xcb_xfixes_cursor_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# subtype*: uint8
# sequence*: uint16
# window*: xcb_window_t
# cursor_serial*: uint32
# timestamp*: xcb_timestamp_t
# name*: xcb_atom_t
# pad0*: array[12, uint8]
# ## * Opcode for xcb_xfixes_select_cursor_input.
# const
# XCB_XFIXES_SELECT_CURSOR_INPUT* = 3
# ## *
# ## @brief xcb_xfixes_select_cursor_input_request_t
# ##
# type
# xcb_xfixes_select_cursor_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# event_mask*: uint32
# ## *
# ## @brief xcb_xfixes_get_cursor_image_cookie_t
# ##
# type
# xcb_xfixes_get_cursor_image_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xfixes_get_cursor_image.
# const
# XCB_XFIXES_GET_CURSOR_IMAGE* = 4
# ## *
# ## @brief xcb_xfixes_get_cursor_image_request_t
# ##
# type
# xcb_xfixes_get_cursor_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xfixes_get_cursor_image_reply_t
# ##
# type
# xcb_xfixes_get_cursor_image_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# xhot*: uint16
# yhot*: uint16
# cursor_serial*: uint32
# pad1*: array[8, uint8]
# xcb_xfixes_region_t* = uint32
# ## *
# ## @brief xcb_xfixes_region_iterator_t
# ##
# type
# xcb_xfixes_region_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xfixes_region_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_xfixes_bad_region.
# const
# XCB_XFIXES_BAD_REGION* = 0
# ## *
# ## @brief xcb_xfixes_bad_region_error_t
# ##
# type
# xcb_xfixes_bad_region_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# xcb_xfixes_region_enum_t* = enum
# XCB_XFIXES_REGION_NONE = 0
# ## * Opcode for xcb_xfixes_create_region.
# const
# XCB_XFIXES_CREATE_REGION* = 5
# ## *
# ## @brief xcb_xfixes_create_region_request_t
# ##
# type
# xcb_xfixes_create_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_create_region_from_bitmap.
# const
# XCB_XFIXES_CREATE_REGION_FROM_BITMAP* = 6
# ## *
# ## @brief xcb_xfixes_create_region_from_bitmap_request_t
# ##
# type
# xcb_xfixes_create_region_from_bitmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# bitmap*: xcb_pixmap_t
# ## * Opcode for xcb_xfixes_create_region_from_window.
# const
# XCB_XFIXES_CREATE_REGION_FROM_WINDOW* = 7
# ## *
# ## @brief xcb_xfixes_create_region_from_window_request_t
# ##
# type
# xcb_xfixes_create_region_from_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# window*: xcb_window_t
# kind*: xcb_shape_kind_t
# pad0*: array[3, uint8]
# ## * Opcode for xcb_xfixes_create_region_from_gc.
# const
# XCB_XFIXES_CREATE_REGION_FROM_GC* = 8
# ## *
# ## @brief xcb_xfixes_create_region_from_gc_request_t
# ##
# type
# xcb_xfixes_create_region_from_gc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_xfixes_create_region_from_picture.
# const
# XCB_XFIXES_CREATE_REGION_FROM_PICTURE* = 9
# ## *
# ## @brief xcb_xfixes_create_region_from_picture_request_t
# ##
# type
# xcb_xfixes_create_region_from_picture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# picture*: xcb_render_picture_t
# ## * Opcode for xcb_xfixes_destroy_region.
# const
# XCB_XFIXES_DESTROY_REGION* = 10
# ## *
# ## @brief xcb_xfixes_destroy_region_request_t
# ##
# type
# xcb_xfixes_destroy_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_set_region.
# const
# XCB_XFIXES_SET_REGION* = 11
# ## *
# ## @brief xcb_xfixes_set_region_request_t
# ##
# type
# xcb_xfixes_set_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_copy_region.
# const
# XCB_XFIXES_COPY_REGION* = 12
# ## *
# ## @brief xcb_xfixes_copy_region_request_t
# ##
# type
# xcb_xfixes_copy_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_union_region.
# const
# XCB_XFIXES_UNION_REGION* = 13
# ## *
# ## @brief xcb_xfixes_union_region_request_t
# ##
# type
# xcb_xfixes_union_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source1*: xcb_xfixes_region_t
# source2*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_intersect_region.
# const
# XCB_XFIXES_INTERSECT_REGION* = 14
# ## *
# ## @brief xcb_xfixes_intersect_region_request_t
# ##
# type
# xcb_xfixes_intersect_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source1*: xcb_xfixes_region_t
# source2*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_subtract_region.
# const
# XCB_XFIXES_SUBTRACT_REGION* = 15
# ## *
# ## @brief xcb_xfixes_subtract_region_request_t
# ##
# type
# xcb_xfixes_subtract_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source1*: xcb_xfixes_region_t
# source2*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_invert_region.
# const
# XCB_XFIXES_INVERT_REGION* = 16
# ## *
# ## @brief xcb_xfixes_invert_region_request_t
# ##
# type
# xcb_xfixes_invert_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source*: xcb_xfixes_region_t
# bounds*: xcb_rectangle_t
# destination*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_translate_region.
# const
# XCB_XFIXES_TRANSLATE_REGION* = 17
# ## *
# ## @brief xcb_xfixes_translate_region_request_t
# ##
# type
# xcb_xfixes_translate_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# dx*: int16
# dy*: int16
# ## * Opcode for xcb_xfixes_region_extents.
# const
# XCB_XFIXES_REGION_EXTENTS* = 18
# ## *
# ## @brief xcb_xfixes_region_extents_request_t
# ##
# type
# xcb_xfixes_region_extents_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# ## *
# ## @brief xcb_xfixes_fetch_region_cookie_t
# ##
# type
# xcb_xfixes_fetch_region_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xfixes_fetch_region.
# const
# XCB_XFIXES_FETCH_REGION* = 19
# ## *
# ## @brief xcb_xfixes_fetch_region_request_t
# ##
# type
# xcb_xfixes_fetch_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# region*: xcb_xfixes_region_t
# ## *
# ## @brief xcb_xfixes_fetch_region_reply_t
# ##
# type
# xcb_xfixes_fetch_region_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# extents*: xcb_rectangle_t
# pad1*: array[16, uint8]
# ## * Opcode for xcb_xfixes_set_gc_clip_region.
# const
# XCB_XFIXES_SET_GC_CLIP_REGION* = 20
# ## *
# ## @brief xcb_xfixes_set_gc_clip_region_request_t
# ##
# type
# xcb_xfixes_set_gc_clip_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# gc*: xcb_gcontext_t
# region*: xcb_xfixes_region_t
# x_origin*: int16
# y_origin*: int16
# ## * Opcode for xcb_xfixes_set_window_shape_region.
# const
# XCB_XFIXES_SET_WINDOW_SHAPE_REGION* = 21
# ## *
# ## @brief xcb_xfixes_set_window_shape_region_request_t
# ##
# type
# xcb_xfixes_set_window_shape_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# dest*: xcb_window_t
# dest_kind*: xcb_shape_kind_t
# pad0*: array[3, uint8]
# x_offset*: int16
# y_offset*: int16
# region*: xcb_xfixes_region_t
# ## * Opcode for xcb_xfixes_set_picture_clip_region.
# const
# XCB_XFIXES_SET_PICTURE_CLIP_REGION* = 22
# ## *
# ## @brief xcb_xfixes_set_picture_clip_region_request_t
# ##
# type
# xcb_xfixes_set_picture_clip_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# picture*: xcb_render_picture_t
# region*: xcb_xfixes_region_t
# x_origin*: int16
# y_origin*: int16
# ## * Opcode for xcb_xfixes_set_cursor_name.
# const
# XCB_XFIXES_SET_CURSOR_NAME* = 23
# ## *
# ## @brief xcb_xfixes_set_cursor_name_request_t
# ##
# type
# xcb_xfixes_set_cursor_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cursor*: xcb_cursor_t
# nbytes*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xfixes_get_cursor_name_cookie_t
# ##
# type
# xcb_xfixes_get_cursor_name_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xfixes_get_cursor_name.
# const
# XCB_XFIXES_GET_CURSOR_NAME* = 24
# ## *
# ## @brief xcb_xfixes_get_cursor_name_request_t
# ##
# type
# xcb_xfixes_get_cursor_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cursor*: xcb_cursor_t
# ## *
# ## @brief xcb_xfixes_get_cursor_name_reply_t
# ##
# type
# xcb_xfixes_get_cursor_name_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# atom*: xcb_atom_t
# nbytes*: uint16
# pad1*: array[18, uint8]
# ## *
# ## @brief xcb_xfixes_get_cursor_image_and_name_cookie_t
# ##
# type
# xcb_xfixes_get_cursor_image_and_name_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xfixes_get_cursor_image_and_name.
# const
# XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME* = 25
# ## *
# ## @brief xcb_xfixes_get_cursor_image_and_name_request_t
# ##
# type
# xcb_xfixes_get_cursor_image_and_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xfixes_get_cursor_image_and_name_reply_t
# ##
# type
# xcb_xfixes_get_cursor_image_and_name_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# xhot*: uint16
# yhot*: uint16
# cursor_serial*: uint32
# cursor_atom*: xcb_atom_t
# nbytes*: uint16
# pad1*: array[2, uint8]
# ## * Opcode for xcb_xfixes_change_cursor.
# const
# XCB_XFIXES_CHANGE_CURSOR* = 26
# ## *
# ## @brief xcb_xfixes_change_cursor_request_t
# ##
# type
# xcb_xfixes_change_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source*: xcb_cursor_t
# destination*: xcb_cursor_t
# ## * Opcode for xcb_xfixes_change_cursor_by_name.
# const
# XCB_XFIXES_CHANGE_CURSOR_BY_NAME* = 27
# ## *
# ## @brief xcb_xfixes_change_cursor_by_name_request_t
# ##
# type
# xcb_xfixes_change_cursor_by_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# src*: xcb_cursor_t
# nbytes*: uint16
# pad0*: array[2, uint8]
# ## * Opcode for xcb_xfixes_expand_region.
# const
# XCB_XFIXES_EXPAND_REGION* = 28
# ## *
# ## @brief xcb_xfixes_expand_region_request_t
# ##
# type
# xcb_xfixes_expand_region_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# source*: xcb_xfixes_region_t
# destination*: xcb_xfixes_region_t
# left*: uint16
# right*: uint16
# top*: uint16
# bottom*: uint16
# ## * Opcode for xcb_xfixes_hide_cursor.
# const
# XCB_XFIXES_HIDE_CURSOR* = 29
# ## *
# ## @brief xcb_xfixes_hide_cursor_request_t
# ##
# type
# xcb_xfixes_hide_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_xfixes_show_cursor.
# const
# XCB_XFIXES_SHOW_CURSOR* = 30
# ## *
# ## @brief xcb_xfixes_show_cursor_request_t
# ##
# type
# xcb_xfixes_show_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# xcb_xfixes_barrier_t* = uint32
# ## *
# ## @brief xcb_xfixes_barrier_iterator_t
# ##
# type
# xcb_xfixes_barrier_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xfixes_barrier_t
# rem*: cint
# index*: cint
# xcb_xfixes_barrier_directions_t* = enum
# XCB_XFIXES_BARRIER_DIRECTIONS_POSITIVE_X = 1,
# XCB_XFIXES_BARRIER_DIRECTIONS_POSITIVE_Y = 2,
# XCB_XFIXES_BARRIER_DIRECTIONS_NEGATIVE_X = 4,
# XCB_XFIXES_BARRIER_DIRECTIONS_NEGATIVE_Y = 8
# ## * Opcode for xcb_xfixes_create_pointer_barrier.
# const
# XCB_XFIXES_CREATE_POINTER_BARRIER* = 31
# ## *
# ## @brief xcb_xfixes_create_pointer_barrier_request_t
# ##
# type
# xcb_xfixes_create_pointer_barrier_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# barrier*: xcb_xfixes_barrier_t
# window*: xcb_window_t
# x1*: uint16
# y1*: uint16
# x2*: uint16
# y2*: uint16
# directions*: uint32
# pad0*: array[2, uint8]
# num_devices*: uint16
# ## * Opcode for xcb_xfixes_delete_pointer_barrier.
# const
# XCB_XFIXES_DELETE_POINTER_BARRIER* = 32
# ## *
# ## @brief xcb_xfixes_delete_pointer_barrier_request_t
# ##
# type
# xcb_xfixes_delete_pointer_barrier_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# barrier*: xcb_xfixes_barrier_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_query_version*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_xfixes_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xfixes_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major_version: uint32;
# client_minor_version: uint32): xcb_xfixes_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xfixes_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xfixes_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_change_save_set_checked*(c: ptr xcb_connection_t; mode: uint8;
# target: uint8; map: uint8;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_change_save_set*(c: ptr xcb_connection_t; mode: uint8;
# target: uint8; map: uint8; window: xcb_window_t): xcb_void_cookie_t
# proc xcb_xfixes_select_selection_input*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# selection: xcb_atom_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_select_cursor_input_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_select_cursor_input*(c: ptr xcb_connection_t; window: xcb_window_t;
# event_mask: uint32): xcb_void_cookie_t
# proc xcb_xfixes_get_cursor_image_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_get_cursor_image*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xfixes_get_cursor_image_unchecked*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_cookie_t
# proc xcb_xfixes_get_cursor_image_cursor_image*(
# R: ptr xcb_xfixes_get_cursor_image_reply_t): ptr uint32
# proc xcb_xfixes_get_cursor_image_cursor_image_length*(
# R: ptr xcb_xfixes_get_cursor_image_reply_t): cint
# proc xcb_xfixes_get_cursor_image_cursor_image_end*(
# R: ptr xcb_xfixes_get_cursor_image_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xfixes_get_cursor_image_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xfixes_get_cursor_image_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_image_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_image_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xfixes_region_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xfixes_region_t)
# ##
# proc xcb_xfixes_region_next*(i: ptr xcb_xfixes_region_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xfixes_region_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xfixes_region_end*(i: xcb_xfixes_region_iterator_t): xcb_generic_iterator_t
# proc xcb_xfixes_create_region_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_region_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_xfixes_create_region_rectangles*(
# R: ptr xcb_xfixes_create_region_request_t): ptr xcb_rectangle_t
# proc xcb_xfixes_create_region_rectangles_length*(
# R: ptr xcb_xfixes_create_region_request_t): cint
# proc xcb_xfixes_create_region_rectangles_iterator*(
# R: ptr xcb_xfixes_create_region_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_region_from_bitmap_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_region_from_bitmap*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; bitmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_region_from_window_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; window: xcb_window_t; kind: xcb_shape_kind_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_region_from_window*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; window: xcb_window_t; kind: xcb_shape_kind_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_region_from_gc_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_region_from_gc*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t;
# gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_region_from_picture_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_region_from_picture*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; picture: xcb_render_picture_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_destroy_region_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_destroy_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t): xcb_void_cookie_t
# proc xcb_xfixes_set_region_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_set_region_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_set_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_xfixes_set_region_rectangles*(R: ptr xcb_xfixes_set_region_request_t): ptr xcb_rectangle_t
# proc xcb_xfixes_set_region_rectangles_length*(
# R: ptr xcb_xfixes_set_region_request_t): cint
# proc xcb_xfixes_set_region_rectangles_iterator*(
# R: ptr xcb_xfixes_set_region_request_t): xcb_rectangle_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_copy_region_checked*(c: ptr xcb_connection_t;
# source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_copy_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_union_region_checked*(c: ptr xcb_connection_t;
# source1: xcb_xfixes_region_t;
# source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_union_region*(c: ptr xcb_connection_t; source1: xcb_xfixes_region_t;
# source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_intersect_region_checked*(c: ptr xcb_connection_t;
# source1: xcb_xfixes_region_t; source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_intersect_region*(c: ptr xcb_connection_t;
# source1: xcb_xfixes_region_t;
# source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_subtract_region_checked*(c: ptr xcb_connection_t;
# source1: xcb_xfixes_region_t;
# source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_subtract_region*(c: ptr xcb_connection_t;
# source1: xcb_xfixes_region_t;
# source2: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_invert_region_checked*(c: ptr xcb_connection_t;
# source: xcb_xfixes_region_t;
# bounds: xcb_rectangle_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_invert_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
# bounds: xcb_rectangle_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_translate_region_checked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; dx: int16; dy: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_translate_region*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t; dx: int16;
# dy: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_region_extents_checked*(c: ptr xcb_connection_t;
# source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_region_extents*(c: ptr xcb_connection_t;
# source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t): xcb_void_cookie_t
# proc xcb_xfixes_fetch_region_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_fetch_region*(c: ptr xcb_connection_t; region: xcb_xfixes_region_t): xcb_xfixes_fetch_region_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xfixes_fetch_region_unchecked*(c: ptr xcb_connection_t;
# region: xcb_xfixes_region_t): xcb_xfixes_fetch_region_cookie_t
# proc xcb_xfixes_fetch_region_rectangles*(R: ptr xcb_xfixes_fetch_region_reply_t): ptr xcb_rectangle_t
# proc xcb_xfixes_fetch_region_rectangles_length*(
# R: ptr xcb_xfixes_fetch_region_reply_t): cint
# proc xcb_xfixes_fetch_region_rectangles_iterator*(
# R: ptr xcb_xfixes_fetch_region_reply_t): xcb_rectangle_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xfixes_fetch_region_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xfixes_fetch_region_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_fetch_region_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_fetch_region_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_set_gc_clip_region_checked*(c: ptr xcb_connection_t;
# gc: xcb_gcontext_t; region: xcb_xfixes_region_t; x_origin: int16;
# y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_set_gc_clip_region*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# region: xcb_xfixes_region_t; x_origin: int16;
# y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_set_window_shape_region_checked*(c: ptr xcb_connection_t;
# dest: xcb_window_t; dest_kind: xcb_shape_kind_t; x_offset: int16;
# y_offset: int16; region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_set_window_shape_region*(c: ptr xcb_connection_t;
# dest: xcb_window_t;
# dest_kind: xcb_shape_kind_t;
# x_offset: int16; y_offset: int16;
# region: xcb_xfixes_region_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_set_picture_clip_region_checked*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t; region: xcb_xfixes_region_t; x_origin: int16;
# y_origin: int16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_set_picture_clip_region*(c: ptr xcb_connection_t;
# picture: xcb_render_picture_t;
# region: xcb_xfixes_region_t;
# x_origin: int16; y_origin: int16): xcb_void_cookie_t
# proc xcb_xfixes_set_cursor_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_set_cursor_name_checked*(c: ptr xcb_connection_t;
# cursor: xcb_cursor_t; nbytes: uint16;
# name: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_set_cursor_name*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
# nbytes: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_xfixes_set_cursor_name_name*(R: ptr xcb_xfixes_set_cursor_name_request_t): cstring
# proc xcb_xfixes_set_cursor_name_name_length*(
# R: ptr xcb_xfixes_set_cursor_name_request_t): cint
# proc xcb_xfixes_set_cursor_name_name_end*(
# R: ptr xcb_xfixes_set_cursor_name_request_t): xcb_generic_iterator_t
# proc xcb_xfixes_get_cursor_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_get_cursor_name*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_xfixes_get_cursor_name_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xfixes_get_cursor_name_unchecked*(c: ptr xcb_connection_t;
# cursor: xcb_cursor_t): xcb_xfixes_get_cursor_name_cookie_t
# proc xcb_xfixes_get_cursor_name_name*(R: ptr xcb_xfixes_get_cursor_name_reply_t): cstring
# proc xcb_xfixes_get_cursor_name_name_length*(
# R: ptr xcb_xfixes_get_cursor_name_reply_t): cint
# proc xcb_xfixes_get_cursor_name_name_end*(
# R: ptr xcb_xfixes_get_cursor_name_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xfixes_get_cursor_name_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xfixes_get_cursor_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_name_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_name_reply_t
# proc xcb_xfixes_get_cursor_image_and_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_get_cursor_image_and_name*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_and_name_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xfixes_get_cursor_image_and_name_unchecked*(c: ptr xcb_connection_t): xcb_xfixes_get_cursor_image_and_name_cookie_t
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): ptr uint32
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image_length*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cint
# proc xcb_xfixes_get_cursor_image_and_name_cursor_image_end*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): xcb_generic_iterator_t
# proc xcb_xfixes_get_cursor_image_and_name_name*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cstring
# proc xcb_xfixes_get_cursor_image_and_name_name_length*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): cint
# proc xcb_xfixes_get_cursor_image_and_name_name_end*(
# R: ptr xcb_xfixes_get_cursor_image_and_name_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xfixes_get_cursor_image_and_name_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xfixes_get_cursor_image_and_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xfixes_get_cursor_image_and_name_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xfixes_get_cursor_image_and_name_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_change_cursor_checked*(c: ptr xcb_connection_t;
# source: xcb_cursor_t;
# destination: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_change_cursor*(c: ptr xcb_connection_t; source: xcb_cursor_t;
# destination: xcb_cursor_t): xcb_void_cookie_t
# proc xcb_xfixes_change_cursor_by_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_change_cursor_by_name_checked*(c: ptr xcb_connection_t;
# src: xcb_cursor_t; nbytes: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_change_cursor_by_name*(c: ptr xcb_connection_t; src: xcb_cursor_t;
# nbytes: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_xfixes_change_cursor_by_name_name*(
# R: ptr xcb_xfixes_change_cursor_by_name_request_t): cstring
# proc xcb_xfixes_change_cursor_by_name_name_length*(
# R: ptr xcb_xfixes_change_cursor_by_name_request_t): cint
# proc xcb_xfixes_change_cursor_by_name_name_end*(
# R: ptr xcb_xfixes_change_cursor_by_name_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_expand_region_checked*(c: ptr xcb_connection_t;
# source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t;
# left: uint16; right: uint16;
# top: uint16; bottom: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_expand_region*(c: ptr xcb_connection_t; source: xcb_xfixes_region_t;
# destination: xcb_xfixes_region_t; left: uint16;
# right: uint16; top: uint16; bottom: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_hide_cursor_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_hide_cursor*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_show_cursor_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_show_cursor*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xfixes_barrier_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xfixes_barrier_t)
# ##
# proc xcb_xfixes_barrier_next*(i: ptr xcb_xfixes_barrier_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xfixes_barrier_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xfixes_barrier_end*(i: xcb_xfixes_barrier_iterator_t): xcb_generic_iterator_t
# proc xcb_xfixes_create_pointer_barrier_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_create_pointer_barrier_checked*(c: ptr xcb_connection_t;
# barrier: xcb_xfixes_barrier_t; window: xcb_window_t; x1: uint16; y1: uint16;
# x2: uint16; y2: uint16; directions: uint32; num_devices: uint16;
# devices: ptr uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_create_pointer_barrier*(c: ptr xcb_connection_t;
# barrier: xcb_xfixes_barrier_t;
# window: xcb_window_t; x1: uint16;
# y1: uint16; x2: uint16; y2: uint16;
# directions: uint32;
# num_devices: uint16;
# devices: ptr uint16): xcb_void_cookie_t
# proc xcb_xfixes_create_pointer_barrier_devices*(
# R: ptr xcb_xfixes_create_pointer_barrier_request_t): ptr uint16
# proc xcb_xfixes_create_pointer_barrier_devices_length*(
# R: ptr xcb_xfixes_create_pointer_barrier_request_t): cint
# proc xcb_xfixes_create_pointer_barrier_devices_end*(
# R: ptr xcb_xfixes_create_pointer_barrier_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xfixes_delete_pointer_barrier_checked*(c: ptr xcb_connection_t;
# barrier: xcb_xfixes_barrier_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xfixes_delete_pointer_barrier*(c: ptr xcb_connection_t;
# barrier: xcb_xfixes_barrier_t): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xinerama.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Xinerama_API XCB Xinerama API
# ## @brief Xinerama XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_XINERAMA_MAJOR_VERSION* = 1
# XCB_XINERAMA_MINOR_VERSION* = 1
# var xcb_xinerama_id*: xcb_extension_t
# ## *
# ## @brief xcb_xinerama_screen_info_t
# ##
# type
# xcb_xinerama_screen_info_t* {.bycopy.} = object
# x_org*: int16
# y_org*: int16
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_xinerama_screen_info_iterator_t
# ##
# type
# xcb_xinerama_screen_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xinerama_screen_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xinerama_query_version_cookie_t
# ##
# type
# xcb_xinerama_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_query_version.
# const
# XCB_XINERAMA_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_xinerama_query_version_request_t
# ##
# type
# xcb_xinerama_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major*: uint8
# minor*: uint8
# ## *
# ## @brief xcb_xinerama_query_version_reply_t
# ##
# type
# xcb_xinerama_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major*: uint16
# minor*: uint16
# ## *
# ## @brief xcb_xinerama_get_state_cookie_t
# ##
# type
# xcb_xinerama_get_state_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_get_state.
# const
# XCB_XINERAMA_GET_STATE* = 1
# ## *
# ## @brief xcb_xinerama_get_state_request_t
# ##
# type
# xcb_xinerama_get_state_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_xinerama_get_state_reply_t
# ##
# type
# xcb_xinerama_get_state_reply_t* {.bycopy.} = object
# response_type*: uint8
# state*: uint8
# sequence*: uint16
# length*: uint32
# window*: xcb_window_t
# ## *
# ## @brief xcb_xinerama_get_screen_count_cookie_t
# ##
# type
# xcb_xinerama_get_screen_count_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_get_screen_count.
# const
# XCB_XINERAMA_GET_SCREEN_COUNT* = 2
# ## *
# ## @brief xcb_xinerama_get_screen_count_request_t
# ##
# type
# xcb_xinerama_get_screen_count_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_xinerama_get_screen_count_reply_t
# ##
# type
# xcb_xinerama_get_screen_count_reply_t* {.bycopy.} = object
# response_type*: uint8
# screen_count*: uint8
# sequence*: uint16
# length*: uint32
# window*: xcb_window_t
# ## *
# ## @brief xcb_xinerama_get_screen_size_cookie_t
# ##
# type
# xcb_xinerama_get_screen_size_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_get_screen_size.
# const
# XCB_XINERAMA_GET_SCREEN_SIZE* = 3
# ## *
# ## @brief xcb_xinerama_get_screen_size_request_t
# ##
# type
# xcb_xinerama_get_screen_size_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# screen*: uint32
# ## *
# ## @brief xcb_xinerama_get_screen_size_reply_t
# ##
# type
# xcb_xinerama_get_screen_size_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint32
# height*: uint32
# window*: xcb_window_t
# screen*: uint32
# ## *
# ## @brief xcb_xinerama_is_active_cookie_t
# ##
# type
# xcb_xinerama_is_active_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_is_active.
# const
# XCB_XINERAMA_IS_ACTIVE* = 4
# ## *
# ## @brief xcb_xinerama_is_active_request_t
# ##
# type
# xcb_xinerama_is_active_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xinerama_is_active_reply_t
# ##
# type
# xcb_xinerama_is_active_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# state*: uint32
# ## *
# ## @brief xcb_xinerama_query_screens_cookie_t
# ##
# type
# xcb_xinerama_query_screens_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xinerama_query_screens.
# const
# XCB_XINERAMA_QUERY_SCREENS* = 5
# ## *
# ## @brief xcb_xinerama_query_screens_request_t
# ##
# type
# xcb_xinerama_query_screens_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xinerama_query_screens_reply_t
# ##
# type
# xcb_xinerama_query_screens_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# number*: uint32
# pad1*: array[20, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xinerama_screen_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xinerama_screen_info_t)
# ##
# proc xcb_xinerama_screen_info_next*(i: ptr xcb_xinerama_screen_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xinerama_screen_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xinerama_screen_info_end*(i: xcb_xinerama_screen_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_query_version*(c: ptr xcb_connection_t; major: uint8;
# minor: uint8): xcb_xinerama_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_query_version_unchecked*(c: ptr xcb_connection_t; major: uint8;
# minor: uint8): xcb_xinerama_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_query_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_get_state*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_state_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_get_state_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_state_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_get_state_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_get_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_state_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_state_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_get_screen_count*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xinerama_get_screen_count_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_get_screen_count_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_xinerama_get_screen_count_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_get_screen_count_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_get_screen_count_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_screen_count_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_screen_count_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_get_screen_size*(c: ptr xcb_connection_t; window: xcb_window_t;
# screen: uint32): xcb_xinerama_get_screen_size_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_get_screen_size_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; screen: uint32): xcb_xinerama_get_screen_size_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_get_screen_size_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_get_screen_size_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_get_screen_size_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_get_screen_size_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_is_active*(c: ptr xcb_connection_t): xcb_xinerama_is_active_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_is_active_unchecked*(c: ptr xcb_connection_t): xcb_xinerama_is_active_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_is_active_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_is_active_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_is_active_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_is_active_reply_t
# proc xcb_xinerama_query_screens_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xinerama_query_screens*(c: ptr xcb_connection_t): xcb_xinerama_query_screens_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xinerama_query_screens_unchecked*(c: ptr xcb_connection_t): xcb_xinerama_query_screens_cookie_t
# proc xcb_xinerama_query_screens_screen_info*(
# R: ptr xcb_xinerama_query_screens_reply_t): ptr xcb_xinerama_screen_info_t
# proc xcb_xinerama_query_screens_screen_info_length*(
# R: ptr xcb_xinerama_query_screens_reply_t): cint
# proc xcb_xinerama_query_screens_screen_info_iterator*(
# R: ptr xcb_xinerama_query_screens_reply_t): xcb_xinerama_screen_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xinerama_query_screens_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xinerama_query_screens_reply*(c: ptr xcb_connection_t; cookie: xcb_xinerama_query_screens_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xinerama_query_screens_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xinput.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Input_API XCB Input API
# ## @brief Input XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xfixes
# const
# XCB_INPUT_MAJOR_VERSION* = 2
# XCB_INPUT_MINOR_VERSION* = 3
# var xcb_input_id*: xcb_extension_t
# type
# xcb_input_event_class_t* = uint32
# ## *
# ## @brief xcb_input_event_class_iterator_t
# ##
# type
# xcb_input_event_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_event_class_t
# rem*: cint
# index*: cint
# xcb_input_key_code_t* = uint8
# ## *
# ## @brief xcb_input_key_code_iterator_t
# ##
# type
# xcb_input_key_code_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_key_code_t
# rem*: cint
# index*: cint
# xcb_input_device_id_t* = uint16
# ## *
# ## @brief xcb_input_device_id_iterator_t
# ##
# type
# xcb_input_device_id_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_id_t
# rem*: cint
# index*: cint
# xcb_input_fp1616_t* = int32
# ## *
# ## @brief xcb_input_fp1616_iterator_t
# ##
# type
# xcb_input_fp1616_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_fp1616_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_fp3232_t
# ##
# type
# xcb_input_fp3232_t* {.bycopy.} = object
# integral*: int32
# frac*: uint32
# ## *
# ## @brief xcb_input_fp3232_iterator_t
# ##
# type
# xcb_input_fp3232_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_fp3232_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_get_extension_version_cookie_t
# ##
# type
# xcb_input_get_extension_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_extension_version.
# const
# XCB_INPUT_GET_EXTENSION_VERSION* = 1
# ## *
# ## @brief xcb_input_get_extension_version_request_t
# ##
# type
# xcb_input_get_extension_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# name_len*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_get_extension_version_reply_t
# ##
# type
# xcb_input_get_extension_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# server_major*: uint16
# server_minor*: uint16
# present*: uint8
# pad0*: array[19, uint8]
# xcb_input_device_use_t* = enum
# XCB_INPUT_DEVICE_USE_IS_X_POINTER = 0, XCB_INPUT_DEVICE_USE_IS_X_KEYBOARD = 1,
# XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_DEVICE = 2,
# XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_KEYBOARD = 3,
# XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_POINTER = 4
# xcb_input_input_class_t* = enum
# XCB_INPUT_INPUT_CLASS_KEY = 0, XCB_INPUT_INPUT_CLASS_BUTTON = 1,
# XCB_INPUT_INPUT_CLASS_VALUATOR = 2, XCB_INPUT_INPUT_CLASS_FEEDBACK = 3,
# XCB_INPUT_INPUT_CLASS_PROXIMITY = 4, XCB_INPUT_INPUT_CLASS_FOCUS = 5,
# XCB_INPUT_INPUT_CLASS_OTHER = 6
# xcb_input_valuator_mode_t* = enum
# XCB_INPUT_VALUATOR_MODE_RELATIVE = 0, XCB_INPUT_VALUATOR_MODE_ABSOLUTE = 1
# ## *
# ## @brief xcb_input_device_info_t
# ##
# type
# xcb_input_device_info_t* {.bycopy.} = object
# device_type*: xcb_atom_t
# device_id*: uint8
# num_class_info*: uint8
# device_use*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_device_info_iterator_t
# ##
# type
# xcb_input_device_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_key_info_t
# ##
# type
# xcb_input_key_info_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# min_keycode*: xcb_input_key_code_t
# max_keycode*: xcb_input_key_code_t
# num_keys*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_key_info_iterator_t
# ##
# type
# xcb_input_key_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_key_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_button_info_t
# ##
# type
# xcb_input_button_info_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# num_buttons*: uint16
# ## *
# ## @brief xcb_input_button_info_iterator_t
# ##
# type
# xcb_input_button_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_button_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_axis_info_t
# ##
# type
# xcb_input_axis_info_t* {.bycopy.} = object
# resolution*: uint32
# minimum*: int32
# maximum*: int32
# ## *
# ## @brief xcb_input_axis_info_iterator_t
# ##
# type
# xcb_input_axis_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_axis_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_valuator_info_t
# ##
# type
# xcb_input_valuator_info_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# axes_len*: uint8
# mode*: uint8
# motion_size*: uint32
# ## *
# ## @brief xcb_input_valuator_info_iterator_t
# ##
# type
# xcb_input_valuator_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_valuator_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_input_info_info_t
# ##
# type
# INNER_C_STRUCT_xinput_248* {.bycopy.} = object
# min_keycode*: xcb_input_key_code_t
# max_keycode*: xcb_input_key_code_t
# num_keys*: uint16
# pad0*: array[2, uint8]
# INNER_C_STRUCT_xinput_254* {.bycopy.} = object
# num_buttons*: uint16
# INNER_C_STRUCT_xinput_257* {.bycopy.} = object
# axes_len*: uint8
# mode*: uint8
# motion_size*: uint32
# axes*: ptr xcb_input_axis_info_t
# xcb_input_input_info_info_t* {.bycopy.} = object
# key*: INNER_C_STRUCT_xinput_248
# button*: INNER_C_STRUCT_xinput_254
# valuator*: INNER_C_STRUCT_xinput_257
# ## *
# ## @brief xcb_input_input_info_t
# ##
# type
# xcb_input_input_info_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# proc xcb_input_input_info_info*(R: ptr xcb_input_input_info_t): pointer
# ## *
# ## @brief xcb_input_input_info_iterator_t
# ##
# type
# xcb_input_input_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_input_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_name_t
# ##
# type
# xcb_input_device_name_t* {.bycopy.} = object
# len*: uint8
# ## *
# ## @brief xcb_input_device_name_iterator_t
# ##
# type
# xcb_input_device_name_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_name_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_list_input_devices_cookie_t
# ##
# type
# xcb_input_list_input_devices_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_list_input_devices.
# const
# XCB_INPUT_LIST_INPUT_DEVICES* = 2
# ## *
# ## @brief xcb_input_list_input_devices_request_t
# ##
# type
# xcb_input_list_input_devices_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_input_list_input_devices_reply_t
# ##
# type
# xcb_input_list_input_devices_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# devices_len*: uint8
# pad0*: array[23, uint8]
# xcb_input_event_type_base_t* = uint8
# ## *
# ## @brief xcb_input_event_type_base_iterator_t
# ##
# type
# xcb_input_event_type_base_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_event_type_base_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_input_class_info_t
# ##
# type
# xcb_input_input_class_info_t* {.bycopy.} = object
# class_id*: uint8
# event_type_base*: xcb_input_event_type_base_t
# ## *
# ## @brief xcb_input_input_class_info_iterator_t
# ##
# type
# xcb_input_input_class_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_input_class_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_open_device_cookie_t
# ##
# type
# xcb_input_open_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_open_device.
# const
# XCB_INPUT_OPEN_DEVICE* = 3
# ## *
# ## @brief xcb_input_open_device_request_t
# ##
# type
# xcb_input_open_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_open_device_reply_t
# ##
# type
# xcb_input_open_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_classes*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_close_device.
# const
# XCB_INPUT_CLOSE_DEVICE* = 4
# ## *
# ## @brief xcb_input_close_device_request_t
# ##
# type
# xcb_input_close_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_set_device_mode_cookie_t
# ##
# type
# xcb_input_set_device_mode_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_set_device_mode.
# const
# XCB_INPUT_SET_DEVICE_MODE* = 5
# ## *
# ## @brief xcb_input_set_device_mode_request_t
# ##
# type
# xcb_input_set_device_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# mode*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_set_device_mode_reply_t
# ##
# type
# xcb_input_set_device_mode_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_select_extension_event.
# const
# XCB_INPUT_SELECT_EXTENSION_EVENT* = 6
# ## *
# ## @brief xcb_input_select_extension_event_request_t
# ##
# type
# xcb_input_select_extension_event_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# num_classes*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_get_selected_extension_events_cookie_t
# ##
# type
# xcb_input_get_selected_extension_events_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_selected_extension_events.
# const
# XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS* = 7
# ## *
# ## @brief xcb_input_get_selected_extension_events_request_t
# ##
# type
# xcb_input_get_selected_extension_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_input_get_selected_extension_events_reply_t
# ##
# type
# xcb_input_get_selected_extension_events_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_this_classes*: uint16
# num_all_classes*: uint16
# pad0*: array[20, uint8]
# xcb_input_propagate_mode_t* = enum
# XCB_INPUT_PROPAGATE_MODE_ADD_TO_LIST = 0,
# XCB_INPUT_PROPAGATE_MODE_DELETE_FROM_LIST = 1
# ## * Opcode for xcb_input_change_device_dont_propagate_list.
# const
# XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST* = 8
# ## *
# ## @brief xcb_input_change_device_dont_propagate_list_request_t
# ##
# type
# xcb_input_change_device_dont_propagate_list_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# num_classes*: uint16
# mode*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_get_device_dont_propagate_list_cookie_t
# ##
# type
# xcb_input_get_device_dont_propagate_list_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_dont_propagate_list.
# const
# XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST* = 9
# ## *
# ## @brief xcb_input_get_device_dont_propagate_list_request_t
# ##
# type
# xcb_input_get_device_dont_propagate_list_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_input_get_device_dont_propagate_list_reply_t
# ##
# type
# xcb_input_get_device_dont_propagate_list_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_classes*: uint16
# pad0*: array[22, uint8]
# ## *
# ## @brief xcb_input_device_time_coord_t
# ##
# type
# xcb_input_device_time_coord_t* {.bycopy.} = object
# time*: xcb_timestamp_t
# ## *
# ## @brief xcb_input_device_time_coord_iterator_t
# ##
# type
# xcb_input_device_time_coord_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_time_coord_t
# rem*: cint
# index*: cint
# num_axes*: uint8 ## *<
# ## *
# ## @brief xcb_input_get_device_motion_events_cookie_t
# ##
# type
# xcb_input_get_device_motion_events_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_motion_events.
# const
# XCB_INPUT_GET_DEVICE_MOTION_EVENTS* = 10
# ## *
# ## @brief xcb_input_get_device_motion_events_request_t
# ##
# type
# xcb_input_get_device_motion_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# start*: xcb_timestamp_t
# stop*: xcb_timestamp_t
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_device_motion_events_reply_t
# ##
# type
# xcb_input_get_device_motion_events_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_events*: uint32
# num_axes*: uint8
# device_mode*: uint8
# pad0*: array[18, uint8]
# ## *
# ## @brief xcb_input_change_keyboard_device_cookie_t
# ##
# type
# xcb_input_change_keyboard_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_change_keyboard_device.
# const
# XCB_INPUT_CHANGE_KEYBOARD_DEVICE* = 11
# ## *
# ## @brief xcb_input_change_keyboard_device_request_t
# ##
# type
# xcb_input_change_keyboard_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_change_keyboard_device_reply_t
# ##
# type
# xcb_input_change_keyboard_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_change_pointer_device_cookie_t
# ##
# type
# xcb_input_change_pointer_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_change_pointer_device.
# const
# XCB_INPUT_CHANGE_POINTER_DEVICE* = 12
# ## *
# ## @brief xcb_input_change_pointer_device_request_t
# ##
# type
# xcb_input_change_pointer_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# x_axis*: uint8
# y_axis*: uint8
# device_id*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_change_pointer_device_reply_t
# ##
# type
# xcb_input_change_pointer_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_grab_device_cookie_t
# ##
# type
# xcb_input_grab_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_grab_device.
# const
# XCB_INPUT_GRAB_DEVICE* = 13
# ## *
# ## @brief xcb_input_grab_device_request_t
# ##
# type
# xcb_input_grab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# time*: xcb_timestamp_t
# num_classes*: uint16
# this_device_mode*: uint8
# other_device_mode*: uint8
# owner_events*: uint8
# device_id*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_grab_device_reply_t
# ##
# type
# xcb_input_grab_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_ungrab_device.
# const
# XCB_INPUT_UNGRAB_DEVICE* = 14
# ## *
# ## @brief xcb_input_ungrab_device_request_t
# ##
# type
# xcb_input_ungrab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# device_id*: uint8
# pad0*: array[3, uint8]
# xcb_input_modifier_device_t* = enum
# XCB_INPUT_MODIFIER_DEVICE_USE_X_KEYBOARD = 255
# ## * Opcode for xcb_input_grab_device_key.
# const
# XCB_INPUT_GRAB_DEVICE_KEY* = 15
# ## *
# ## @brief xcb_input_grab_device_key_request_t
# ##
# type
# xcb_input_grab_device_key_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# num_classes*: uint16
# modifiers*: uint16
# modifier_device*: uint8
# grabbed_device*: uint8
# key*: uint8
# this_device_mode*: uint8
# other_device_mode*: uint8
# owner_events*: uint8
# pad0*: array[2, uint8]
# ## * Opcode for xcb_input_ungrab_device_key.
# const
# XCB_INPUT_UNGRAB_DEVICE_KEY* = 16
# ## *
# ## @brief xcb_input_ungrab_device_key_request_t
# ##
# type
# xcb_input_ungrab_device_key_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grabWindow*: xcb_window_t
# modifiers*: uint16
# modifier_device*: uint8
# key*: uint8
# grabbed_device*: uint8
# ## * Opcode for xcb_input_grab_device_button.
# const
# XCB_INPUT_GRAB_DEVICE_BUTTON* = 17
# ## *
# ## @brief xcb_input_grab_device_button_request_t
# ##
# type
# xcb_input_grab_device_button_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# grabbed_device*: uint8
# modifier_device*: uint8
# num_classes*: uint16
# modifiers*: uint16
# this_device_mode*: uint8
# other_device_mode*: uint8
# button*: uint8
# owner_events*: uint8
# pad0*: array[2, uint8]
# ## * Opcode for xcb_input_ungrab_device_button.
# const
# XCB_INPUT_UNGRAB_DEVICE_BUTTON* = 18
# ## *
# ## @brief xcb_input_ungrab_device_button_request_t
# ##
# type
# xcb_input_ungrab_device_button_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# modifiers*: uint16
# modifier_device*: uint8
# button*: uint8
# grabbed_device*: uint8
# pad0*: array[3, uint8]
# xcb_input_device_input_mode_t* = enum
# XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_THIS_DEVICE = 0,
# XCB_INPUT_DEVICE_INPUT_MODE_SYNC_THIS_DEVICE = 1,
# XCB_INPUT_DEVICE_INPUT_MODE_REPLAY_THIS_DEVICE = 2,
# XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_OTHER_DEVICES = 3,
# XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_ALL = 4,
# XCB_INPUT_DEVICE_INPUT_MODE_SYNC_ALL = 5
# ## * Opcode for xcb_input_allow_device_events.
# const
# XCB_INPUT_ALLOW_DEVICE_EVENTS* = 19
# ## *
# ## @brief xcb_input_allow_device_events_request_t
# ##
# type
# xcb_input_allow_device_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# mode*: uint8
# device_id*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_get_device_focus_cookie_t
# ##
# type
# xcb_input_get_device_focus_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_focus.
# const
# XCB_INPUT_GET_DEVICE_FOCUS* = 20
# ## *
# ## @brief xcb_input_get_device_focus_request_t
# ##
# type
# xcb_input_get_device_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_device_focus_reply_t
# ##
# type
# xcb_input_get_device_focus_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# focus*: xcb_window_t
# time*: xcb_timestamp_t
# revert_to*: uint8
# pad0*: array[15, uint8]
# ## * Opcode for xcb_input_set_device_focus.
# const
# XCB_INPUT_SET_DEVICE_FOCUS* = 21
# ## *
# ## @brief xcb_input_set_device_focus_request_t
# ##
# type
# xcb_input_set_device_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# focus*: xcb_window_t
# time*: xcb_timestamp_t
# revert_to*: uint8
# device_id*: uint8
# pad0*: array[2, uint8]
# xcb_input_feedback_class_t* = enum
# XCB_INPUT_FEEDBACK_CLASS_KEYBOARD = 0, XCB_INPUT_FEEDBACK_CLASS_POINTER = 1,
# XCB_INPUT_FEEDBACK_CLASS_STRING = 2, XCB_INPUT_FEEDBACK_CLASS_INTEGER = 3,
# XCB_INPUT_FEEDBACK_CLASS_LED = 4, XCB_INPUT_FEEDBACK_CLASS_BELL = 5
# ## *
# ## @brief xcb_input_kbd_feedback_state_t
# ##
# type
# xcb_input_kbd_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# pitch*: uint16
# duration*: uint16
# led_mask*: uint32
# led_values*: uint32
# global_auto_repeat*: uint8
# click*: uint8
# percent*: uint8
# pad0*: uint8
# auto_repeats*: array[32, uint8]
# ## *
# ## @brief xcb_input_kbd_feedback_state_iterator_t
# ##
# type
# xcb_input_kbd_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_kbd_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_ptr_feedback_state_t
# ##
# type
# xcb_input_ptr_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# pad0*: array[2, uint8]
# accel_num*: uint16
# accel_denom*: uint16
# threshold*: uint16
# ## *
# ## @brief xcb_input_ptr_feedback_state_iterator_t
# ##
# type
# xcb_input_ptr_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_ptr_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_integer_feedback_state_t
# ##
# type
# xcb_input_integer_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# resolution*: uint32
# min_value*: int32
# max_value*: int32
# ## *
# ## @brief xcb_input_integer_feedback_state_iterator_t
# ##
# type
# xcb_input_integer_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_integer_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_string_feedback_state_t
# ##
# type
# xcb_input_string_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# max_symbols*: uint16
# num_keysyms*: uint16
# ## *
# ## @brief xcb_input_string_feedback_state_iterator_t
# ##
# type
# xcb_input_string_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_string_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_bell_feedback_state_t
# ##
# type
# xcb_input_bell_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# percent*: uint8
# pad0*: array[3, uint8]
# pitch*: uint16
# duration*: uint16
# ## *
# ## @brief xcb_input_bell_feedback_state_iterator_t
# ##
# type
# xcb_input_bell_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_bell_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_led_feedback_state_t
# ##
# type
# xcb_input_led_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# led_mask*: uint32
# led_values*: uint32
# ## *
# ## @brief xcb_input_led_feedback_state_iterator_t
# ##
# type
# xcb_input_led_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_led_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_feedback_state_data_t
# ##
# type
# INNER_C_STRUCT_xinput_1023* {.bycopy.} = object
# pitch*: uint16
# duration*: uint16
# led_mask*: uint32
# led_values*: uint32
# global_auto_repeat*: uint8
# click*: uint8
# percent*: uint8
# pad0*: uint8
# auto_repeats*: array[32, uint8]
# INNER_C_STRUCT_xinput_1034* {.bycopy.} = object
# pad1*: array[2, uint8]
# accel_num*: uint16
# accel_denom*: uint16
# threshold*: uint16
# INNER_C_STRUCT_xinput_1040* {.bycopy.} = object
# max_symbols*: uint16
# num_keysyms*: uint16
# keysyms*: ptr xcb_keysym_t
# INNER_C_STRUCT_xinput_1045* {.bycopy.} = object
# resolution*: uint32
# min_value*: int32
# max_value*: int32
# INNER_C_STRUCT_xinput_1050* {.bycopy.} = object
# led_mask*: uint32
# led_values*: uint32
# INNER_C_STRUCT_xinput_1054* {.bycopy.} = object
# percent*: uint8
# pad2*: array[3, uint8]
# pitch*: uint16
# duration*: uint16
# xcb_input_feedback_state_data_t* {.bycopy.} = object
# keyboard*: INNER_C_STRUCT_xinput_1023
# pointer*: INNER_C_STRUCT_xinput_1034
# string*: INNER_C_STRUCT_xinput_1040
# integer*: INNER_C_STRUCT_xinput_1045
# led*: INNER_C_STRUCT_xinput_1050
# bell*: INNER_C_STRUCT_xinput_1054
# ## *
# ## @brief xcb_input_feedback_state_t
# ##
# type
# xcb_input_feedback_state_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# proc xcb_input_feedback_state_data*(R: ptr xcb_input_feedback_state_t): pointer
# ## *
# ## @brief xcb_input_feedback_state_iterator_t
# ##
# type
# xcb_input_feedback_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_feedback_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_get_feedback_control_cookie_t
# ##
# type
# xcb_input_get_feedback_control_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_feedback_control.
# const
# XCB_INPUT_GET_FEEDBACK_CONTROL* = 22
# ## *
# ## @brief xcb_input_get_feedback_control_request_t
# ##
# type
# xcb_input_get_feedback_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_feedback_control_reply_t
# ##
# type
# xcb_input_get_feedback_control_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_feedbacks*: uint16
# pad0*: array[22, uint8]
# ## *
# ## @brief xcb_input_kbd_feedback_ctl_t
# ##
# type
# xcb_input_kbd_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# key*: xcb_input_key_code_t
# auto_repeat_mode*: uint8
# key_click_percent*: int8
# bell_percent*: int8
# bell_pitch*: int16
# bell_duration*: int16
# led_mask*: uint32
# led_values*: uint32
# ## *
# ## @brief xcb_input_kbd_feedback_ctl_iterator_t
# ##
# type
# xcb_input_kbd_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_kbd_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_ptr_feedback_ctl_t
# ##
# type
# xcb_input_ptr_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# pad0*: array[2, uint8]
# num*: int16
# denom*: int16
# threshold*: int16
# ## *
# ## @brief xcb_input_ptr_feedback_ctl_iterator_t
# ##
# type
# xcb_input_ptr_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_ptr_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_integer_feedback_ctl_t
# ##
# type
# xcb_input_integer_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# int_to_display*: int32
# ## *
# ## @brief xcb_input_integer_feedback_ctl_iterator_t
# ##
# type
# xcb_input_integer_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_integer_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_string_feedback_ctl_t
# ##
# type
# xcb_input_string_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# pad0*: array[2, uint8]
# num_keysyms*: uint16
# ## *
# ## @brief xcb_input_string_feedback_ctl_iterator_t
# ##
# type
# xcb_input_string_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_string_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_bell_feedback_ctl_t
# ##
# type
# xcb_input_bell_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# percent*: int8
# pad0*: array[3, uint8]
# pitch*: int16
# duration*: int16
# ## *
# ## @brief xcb_input_bell_feedback_ctl_iterator_t
# ##
# type
# xcb_input_bell_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_bell_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_led_feedback_ctl_t
# ##
# type
# xcb_input_led_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# led_mask*: uint32
# led_values*: uint32
# ## *
# ## @brief xcb_input_led_feedback_ctl_iterator_t
# ##
# type
# xcb_input_led_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_led_feedback_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_feedback_ctl_data_t
# ##
# type
# INNER_C_STRUCT_xinput_1249* {.bycopy.} = object
# key*: xcb_input_key_code_t
# auto_repeat_mode*: uint8
# key_click_percent*: int8
# bell_percent*: int8
# bell_pitch*: int16
# bell_duration*: int16
# led_mask*: uint32
# led_values*: uint32
# INNER_C_STRUCT_xinput_1259* {.bycopy.} = object
# pad0*: array[2, uint8]
# num*: int16
# denom*: int16
# threshold*: int16
# INNER_C_STRUCT_xinput_1265* {.bycopy.} = object
# pad1*: array[2, uint8]
# num_keysyms*: uint16
# keysyms*: ptr xcb_keysym_t
# INNER_C_STRUCT_xinput_1270* {.bycopy.} = object
# int_to_display*: int32
# INNER_C_STRUCT_xinput_1273* {.bycopy.} = object
# led_mask*: uint32
# led_values*: uint32
# INNER_C_STRUCT_xinput_1277* {.bycopy.} = object
# percent*: int8
# pad2*: array[3, uint8]
# pitch*: int16
# duration*: int16
# xcb_input_feedback_ctl_data_t* {.bycopy.} = object
# keyboard*: INNER_C_STRUCT_xinput_1249
# pointer*: INNER_C_STRUCT_xinput_1259
# string*: INNER_C_STRUCT_xinput_1265
# integer*: INNER_C_STRUCT_xinput_1270
# led*: INNER_C_STRUCT_xinput_1273
# bell*: INNER_C_STRUCT_xinput_1277
# ## *
# ## @brief xcb_input_feedback_ctl_t
# ##
# type
# xcb_input_feedback_ctl_t* {.bycopy.} = object
# class_id*: uint8
# feedback_id*: uint8
# len*: uint16
# proc xcb_input_feedback_ctl_data*(R: ptr xcb_input_feedback_ctl_t): pointer
# ## *
# ## @brief xcb_input_feedback_ctl_iterator_t
# ##
# type
# xcb_input_feedback_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_feedback_ctl_t
# rem*: cint
# index*: cint
# xcb_input_change_feedback_control_mask_t* = enum
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT = 1,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PERCENT = 2,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PITCH = 4,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_DURATION = 8,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED = 16,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED_MODE = 32,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY = 64,
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_AUTO_REPEAT_MODE = 128
# const
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_STRING = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_INTEGER = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_NUM = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_DENOM = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PERCENT
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_THRESHOLD = XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PITCH
# ## * Opcode for xcb_input_change_feedback_control.
# const
# XCB_INPUT_CHANGE_FEEDBACK_CONTROL* = 23
# ## *
# ## @brief xcb_input_change_feedback_control_request_t
# ##
# type
# xcb_input_change_feedback_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# mask*: uint32
# device_id*: uint8
# feedback_id*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_get_device_key_mapping_cookie_t
# ##
# type
# xcb_input_get_device_key_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_key_mapping.
# const
# XCB_INPUT_GET_DEVICE_KEY_MAPPING* = 24
# ## *
# ## @brief xcb_input_get_device_key_mapping_request_t
# ##
# type
# xcb_input_get_device_key_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# first_keycode*: xcb_input_key_code_t
# count*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_get_device_key_mapping_reply_t
# ##
# type
# xcb_input_get_device_key_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# keysyms_per_keycode*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_change_device_key_mapping.
# const
# XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING* = 25
# ## *
# ## @brief xcb_input_change_device_key_mapping_request_t
# ##
# type
# xcb_input_change_device_key_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# first_keycode*: xcb_input_key_code_t
# keysyms_per_keycode*: uint8
# keycode_count*: uint8
# ## *
# ## @brief xcb_input_get_device_modifier_mapping_cookie_t
# ##
# type
# xcb_input_get_device_modifier_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_modifier_mapping.
# const
# XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING* = 26
# ## *
# ## @brief xcb_input_get_device_modifier_mapping_request_t
# ##
# type
# xcb_input_get_device_modifier_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_device_modifier_mapping_reply_t
# ##
# type
# xcb_input_get_device_modifier_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# keycodes_per_modifier*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_set_device_modifier_mapping_cookie_t
# ##
# type
# xcb_input_set_device_modifier_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_set_device_modifier_mapping.
# const
# XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING* = 27
# ## *
# ## @brief xcb_input_set_device_modifier_mapping_request_t
# ##
# type
# xcb_input_set_device_modifier_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# keycodes_per_modifier*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_set_device_modifier_mapping_reply_t
# ##
# type
# xcb_input_set_device_modifier_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_get_device_button_mapping_cookie_t
# ##
# type
# xcb_input_get_device_button_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_button_mapping.
# const
# XCB_INPUT_GET_DEVICE_BUTTON_MAPPING* = 28
# ## *
# ## @brief xcb_input_get_device_button_mapping_request_t
# ##
# type
# xcb_input_get_device_button_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_device_button_mapping_reply_t
# ##
# type
# xcb_input_get_device_button_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# map_size*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_set_device_button_mapping_cookie_t
# ##
# type
# xcb_input_set_device_button_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_set_device_button_mapping.
# const
# XCB_INPUT_SET_DEVICE_BUTTON_MAPPING* = 29
# ## *
# ## @brief xcb_input_set_device_button_mapping_request_t
# ##
# type
# xcb_input_set_device_button_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# map_size*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_set_device_button_mapping_reply_t
# ##
# type
# xcb_input_set_device_button_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_key_state_t
# ##
# type
# xcb_input_key_state_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# num_keys*: uint8
# pad0*: uint8
# keys*: array[32, uint8]
# ## *
# ## @brief xcb_input_key_state_iterator_t
# ##
# type
# xcb_input_key_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_key_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_button_state_t
# ##
# type
# xcb_input_button_state_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# num_buttons*: uint8
# pad0*: uint8
# buttons*: array[32, uint8]
# ## *
# ## @brief xcb_input_button_state_iterator_t
# ##
# type
# xcb_input_button_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_button_state_t
# rem*: cint
# index*: cint
# xcb_input_valuator_state_mode_mask_t* = enum
# XCB_INPUT_VALUATOR_STATE_MODE_MASK_DEVICE_MODE_ABSOLUTE = 1,
# XCB_INPUT_VALUATOR_STATE_MODE_MASK_OUT_OF_PROXIMITY = 2
# ## *
# ## @brief xcb_input_valuator_state_t
# ##
# type
# xcb_input_valuator_state_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# num_valuators*: uint8
# mode*: uint8
# ## *
# ## @brief xcb_input_valuator_state_iterator_t
# ##
# type
# xcb_input_valuator_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_valuator_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_input_state_data_t
# ##
# type
# INNER_C_STRUCT_xinput_1591* {.bycopy.} = object
# num_keys*: uint8
# pad0*: uint8
# keys*: array[32, uint8]
# INNER_C_STRUCT_xinput_1596* {.bycopy.} = object
# num_buttons*: uint8
# pad1*: uint8
# buttons*: array[32, uint8]
# INNER_C_STRUCT_xinput_1601* {.bycopy.} = object
# num_valuators*: uint8
# mode*: uint8
# valuators*: ptr int32
# xcb_input_input_state_data_t* {.bycopy.} = object
# key*: INNER_C_STRUCT_xinput_1591
# button*: INNER_C_STRUCT_xinput_1596
# valuator*: INNER_C_STRUCT_xinput_1601
# ## *
# ## @brief xcb_input_input_state_t
# ##
# type
# xcb_input_input_state_t* {.bycopy.} = object
# class_id*: uint8
# len*: uint8
# proc xcb_input_input_state_data*(R: ptr xcb_input_input_state_t): pointer
# ## *
# ## @brief xcb_input_input_state_iterator_t
# ##
# type
# xcb_input_input_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_input_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_query_device_state_cookie_t
# ##
# type
# xcb_input_query_device_state_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_query_device_state.
# const
# XCB_INPUT_QUERY_DEVICE_STATE* = 30
# ## *
# ## @brief xcb_input_query_device_state_request_t
# ##
# type
# xcb_input_query_device_state_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_query_device_state_reply_t
# ##
# type
# xcb_input_query_device_state_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_classes*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_device_bell.
# const
# XCB_INPUT_DEVICE_BELL* = 32
# ## *
# ## @brief xcb_input_device_bell_request_t
# ##
# type
# xcb_input_device_bell_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# feedback_id*: uint8
# feedback_class*: uint8
# percent*: int8
# ## *
# ## @brief xcb_input_set_device_valuators_cookie_t
# ##
# type
# xcb_input_set_device_valuators_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_set_device_valuators.
# const
# XCB_INPUT_SET_DEVICE_VALUATORS* = 33
# ## *
# ## @brief xcb_input_set_device_valuators_request_t
# ##
# type
# xcb_input_set_device_valuators_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# first_valuator*: uint8
# num_valuators*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_set_device_valuators_reply_t
# ##
# type
# xcb_input_set_device_valuators_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# xcb_input_device_control_t* = enum
# XCB_INPUT_DEVICE_CONTROL_RESOLUTION = 1,
# XCB_INPUT_DEVICE_CONTROL_ABS_CALIB = 2, XCB_INPUT_DEVICE_CONTROL_CORE = 3,
# XCB_INPUT_DEVICE_CONTROL_ENABLE = 4, XCB_INPUT_DEVICE_CONTROL_ABS_AREA = 5
# ## *
# ## @brief xcb_input_device_resolution_state_t
# ##
# type
# xcb_input_device_resolution_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# num_valuators*: uint32
# ## *
# ## @brief xcb_input_device_resolution_state_iterator_t
# ##
# type
# xcb_input_device_resolution_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_resolution_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_abs_calib_state_t
# ##
# type
# xcb_input_device_abs_calib_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# min_x*: int32
# max_x*: int32
# min_y*: int32
# max_y*: int32
# flip_x*: uint32
# flip_y*: uint32
# rotation*: uint32
# button_threshold*: uint32
# ## *
# ## @brief xcb_input_device_abs_calib_state_iterator_t
# ##
# type
# xcb_input_device_abs_calib_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_abs_calib_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_abs_area_state_t
# ##
# type
# xcb_input_device_abs_area_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# offset_x*: uint32
# offset_y*: uint32
# width*: uint32
# height*: uint32
# screen*: uint32
# following*: uint32
# ## *
# ## @brief xcb_input_device_abs_area_state_iterator_t
# ##
# type
# xcb_input_device_abs_area_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_abs_area_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_core_state_t
# ##
# type
# xcb_input_device_core_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# status*: uint8
# iscore*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_device_core_state_iterator_t
# ##
# type
# xcb_input_device_core_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_core_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_enable_state_t
# ##
# type
# xcb_input_device_enable_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# enable*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_device_enable_state_iterator_t
# ##
# type
# xcb_input_device_enable_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_enable_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_state_data_t
# ##
# type
# INNER_C_STRUCT_xinput_1829* {.bycopy.} = object
# num_valuators*: uint32
# resolution_values*: ptr uint32
# resolution_min*: ptr uint32
# resolution_max*: ptr uint32
# INNER_C_STRUCT_xinput_1835* {.bycopy.} = object
# min_x*: int32
# max_x*: int32
# min_y*: int32
# max_y*: int32
# flip_x*: uint32
# flip_y*: uint32
# rotation*: uint32
# button_threshold*: uint32
# INNER_C_STRUCT_xinput_1845* {.bycopy.} = object
# status*: uint8
# iscore*: uint8
# pad0*: array[2, uint8]
# INNER_C_STRUCT_xinput_1850* {.bycopy.} = object
# enable*: uint8
# pad1*: array[3, uint8]
# INNER_C_STRUCT_xinput_1854* {.bycopy.} = object
# offset_x*: uint32
# offset_y*: uint32
# width*: uint32
# height*: uint32
# screen*: uint32
# following*: uint32
# xcb_input_device_state_data_t* {.bycopy.} = object
# resolution*: INNER_C_STRUCT_xinput_1829
# abs_calib*: INNER_C_STRUCT_xinput_1835
# core*: INNER_C_STRUCT_xinput_1845
# enable*: INNER_C_STRUCT_xinput_1850
# abs_area*: INNER_C_STRUCT_xinput_1854
# ## *
# ## @brief xcb_input_device_state_t
# ##
# type
# xcb_input_device_state_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# proc xcb_input_device_state_data*(R: ptr xcb_input_device_state_t): pointer
# ## *
# ## @brief xcb_input_device_state_iterator_t
# ##
# type
# xcb_input_device_state_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_state_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_get_device_control_cookie_t
# ##
# type
# xcb_input_get_device_control_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_control.
# const
# XCB_INPUT_GET_DEVICE_CONTROL* = 34
# ## *
# ## @brief xcb_input_get_device_control_request_t
# ##
# type
# xcb_input_get_device_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# control_id*: uint16
# device_id*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_get_device_control_reply_t
# ##
# type
# xcb_input_get_device_control_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_device_resolution_ctl_t
# ##
# type
# xcb_input_device_resolution_ctl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# first_valuator*: uint8
# num_valuators*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_device_resolution_ctl_iterator_t
# ##
# type
# xcb_input_device_resolution_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_resolution_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_abs_calib_ctl_t
# ##
# type
# xcb_input_device_abs_calib_ctl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# min_x*: int32
# max_x*: int32
# min_y*: int32
# max_y*: int32
# flip_x*: uint32
# flip_y*: uint32
# rotation*: uint32
# button_threshold*: uint32
# ## *
# ## @brief xcb_input_device_abs_calib_ctl_iterator_t
# ##
# type
# xcb_input_device_abs_calib_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_abs_calib_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_abs_area_ctrl_t
# ##
# type
# xcb_input_device_abs_area_ctrl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# offset_x*: uint32
# offset_y*: uint32
# width*: int32
# height*: int32
# screen*: int32
# following*: uint32
# ## *
# ## @brief xcb_input_device_abs_area_ctrl_iterator_t
# ##
# type
# xcb_input_device_abs_area_ctrl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_abs_area_ctrl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_core_ctrl_t
# ##
# type
# xcb_input_device_core_ctrl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# status*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_device_core_ctrl_iterator_t
# ##
# type
# xcb_input_device_core_ctrl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_core_ctrl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_enable_ctrl_t
# ##
# type
# xcb_input_device_enable_ctrl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# enable*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_device_enable_ctrl_iterator_t
# ##
# type
# xcb_input_device_enable_ctrl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_enable_ctrl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_ctl_data_t
# ##
# type
# INNER_C_STRUCT_xinput_2028* {.bycopy.} = object
# first_valuator*: uint8
# num_valuators*: uint8
# pad0*: array[2, uint8]
# resolution_values*: ptr uint32
# INNER_C_STRUCT_xinput_2034* {.bycopy.} = object
# min_x*: int32
# max_x*: int32
# min_y*: int32
# max_y*: int32
# flip_x*: uint32
# flip_y*: uint32
# rotation*: uint32
# button_threshold*: uint32
# INNER_C_STRUCT_xinput_2044* {.bycopy.} = object
# status*: uint8
# pad1*: array[3, uint8]
# INNER_C_STRUCT_xinput_2048* {.bycopy.} = object
# enable*: uint8
# pad2*: array[3, uint8]
# INNER_C_STRUCT_xinput_2052* {.bycopy.} = object
# offset_x*: uint32
# offset_y*: uint32
# width*: int32
# height*: int32
# screen*: int32
# following*: uint32
# xcb_input_device_ctl_data_t* {.bycopy.} = object
# resolution*: INNER_C_STRUCT_xinput_2028
# abs_calib*: INNER_C_STRUCT_xinput_2034
# core*: INNER_C_STRUCT_xinput_2044
# enable*: INNER_C_STRUCT_xinput_2048
# abs_area*: INNER_C_STRUCT_xinput_2052
# ## *
# ## @brief xcb_input_device_ctl_t
# ##
# type
# xcb_input_device_ctl_t* {.bycopy.} = object
# control_id*: uint16
# len*: uint16
# proc xcb_input_device_ctl_data*(R: ptr xcb_input_device_ctl_t): pointer
# ## *
# ## @brief xcb_input_device_ctl_iterator_t
# ##
# type
# xcb_input_device_ctl_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_ctl_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_change_device_control_cookie_t
# ##
# type
# xcb_input_change_device_control_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_change_device_control.
# const
# XCB_INPUT_CHANGE_DEVICE_CONTROL* = 35
# ## *
# ## @brief xcb_input_change_device_control_request_t
# ##
# type
# xcb_input_change_device_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# control_id*: uint16
# device_id*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_change_device_control_reply_t
# ##
# type
# xcb_input_change_device_control_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad0*: array[23, uint8]
# ## *
# ## @brief xcb_input_list_device_properties_cookie_t
# ##
# type
# xcb_input_list_device_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_list_device_properties.
# const
# XCB_INPUT_LIST_DEVICE_PROPERTIES* = 36
# ## *
# ## @brief xcb_input_list_device_properties_request_t
# ##
# type
# xcb_input_list_device_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_list_device_properties_reply_t
# ##
# type
# xcb_input_list_device_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# num_atoms*: uint16
# pad0*: array[22, uint8]
# xcb_input_property_format_t* = enum
# XCB_INPUT_PROPERTY_FORMAT_8_BITS = 8, XCB_INPUT_PROPERTY_FORMAT_16_BITS = 16,
# XCB_INPUT_PROPERTY_FORMAT_32_BITS = 32
# ## *
# ## @brief xcb_input_change_device_property_items_t
# ##
# type
# xcb_input_change_device_property_items_t* {.bycopy.} = object
# data8*: ptr uint8
# data16*: ptr uint16
# data32*: ptr uint32
# ## * Opcode for xcb_input_change_device_property.
# const
# XCB_INPUT_CHANGE_DEVICE_PROPERTY* = 37
# ## *
# ## @brief xcb_input_change_device_property_request_t
# ##
# type
# xcb_input_change_device_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# device_id*: uint8
# format*: uint8
# mode*: uint8
# pad0*: uint8
# num_items*: uint32
# ## * Opcode for xcb_input_delete_device_property.
# const
# XCB_INPUT_DELETE_DEVICE_PROPERTY* = 38
# ## *
# ## @brief xcb_input_delete_device_property_request_t
# ##
# type
# xcb_input_delete_device_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# property*: xcb_atom_t
# device_id*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_get_device_property_cookie_t
# ##
# type
# xcb_input_get_device_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_get_device_property.
# const
# XCB_INPUT_GET_DEVICE_PROPERTY* = 39
# ## *
# ## @brief xcb_input_get_device_property_request_t
# ##
# type
# xcb_input_get_device_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# offset*: uint32
# len*: uint32
# device_id*: uint8
# _delete*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_get_device_property_items_t
# ##
# type
# xcb_input_get_device_property_items_t* {.bycopy.} = object
# data8*: ptr uint8
# data16*: ptr uint16
# data32*: ptr uint32
# ## *
# ## @brief xcb_input_get_device_property_reply_t
# ##
# type
# xcb_input_get_device_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# xi_reply_type*: uint8
# sequence*: uint16
# length*: uint32
# `type`*: xcb_atom_t
# bytes_after*: uint32
# num_items*: uint32
# format*: uint8
# device_id*: uint8
# pad0*: array[10, uint8]
# xcb_input_device_t* = enum
# XCB_INPUT_DEVICE_ALL = 0, XCB_INPUT_DEVICE_ALL_MASTER = 1
# ## *
# ## @brief xcb_input_group_info_t
# ##
# type
# xcb_input_group_info_t* {.bycopy.} = object
# base*: uint8
# latched*: uint8
# locked*: uint8
# effective*: uint8
# ## *
# ## @brief xcb_input_group_info_iterator_t
# ##
# type
# xcb_input_group_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_group_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_modifier_info_t
# ##
# type
# xcb_input_modifier_info_t* {.bycopy.} = object
# base*: uint32
# latched*: uint32
# locked*: uint32
# effective*: uint32
# ## *
# ## @brief xcb_input_modifier_info_iterator_t
# ##
# type
# xcb_input_modifier_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_modifier_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_xi_query_pointer_cookie_t
# ##
# type
# xcb_input_xi_query_pointer_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_query_pointer.
# const
# XCB_INPUT_XI_QUERY_POINTER* = 40
# ## *
# ## @brief xcb_input_xi_query_pointer_request_t
# ##
# type
# xcb_input_xi_query_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_query_pointer_reply_t
# ##
# type
# xcb_input_xi_query_pointer_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# root*: xcb_window_t
# child*: xcb_window_t
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# win_x*: xcb_input_fp1616_t
# win_y*: xcb_input_fp1616_t
# same_screen*: uint8
# pad1*: uint8
# buttons_len*: uint16
# mods*: xcb_input_modifier_info_t
# group*: xcb_input_group_info_t
# ## * Opcode for xcb_input_xi_warp_pointer.
# const
# XCB_INPUT_XI_WARP_POINTER* = 41
# ## *
# ## @brief xcb_input_xi_warp_pointer_request_t
# ##
# type
# xcb_input_xi_warp_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# src_win*: xcb_window_t
# dst_win*: xcb_window_t
# src_x*: xcb_input_fp1616_t
# src_y*: xcb_input_fp1616_t
# src_width*: uint16
# src_height*: uint16
# dst_x*: xcb_input_fp1616_t
# dst_y*: xcb_input_fp1616_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## * Opcode for xcb_input_xi_change_cursor.
# const
# XCB_INPUT_XI_CHANGE_CURSOR* = 42
# ## *
# ## @brief xcb_input_xi_change_cursor_request_t
# ##
# type
# xcb_input_xi_change_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# cursor*: xcb_cursor_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# xcb_input_hierarchy_change_type_t* = enum
# XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER = 1,
# XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER = 2,
# XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE = 3,
# XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE = 4
# xcb_input_change_mode_t* = enum
# XCB_INPUT_CHANGE_MODE_ATTACH = 1, XCB_INPUT_CHANGE_MODE_FLOAT = 2
# ## *
# ## @brief xcb_input_add_master_t
# ##
# type
# xcb_input_add_master_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# name_len*: uint16
# send_core*: uint8
# enable*: uint8
# ## *
# ## @brief xcb_input_add_master_iterator_t
# ##
# type
# xcb_input_add_master_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_add_master_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_remove_master_t
# ##
# type
# xcb_input_remove_master_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# deviceid*: xcb_input_device_id_t
# return_mode*: uint8
# pad0*: uint8
# return_pointer*: xcb_input_device_id_t
# return_keyboard*: xcb_input_device_id_t
# ## *
# ## @brief xcb_input_remove_master_iterator_t
# ##
# type
# xcb_input_remove_master_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_remove_master_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_attach_slave_t
# ##
# type
# xcb_input_attach_slave_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# deviceid*: xcb_input_device_id_t
# master*: xcb_input_device_id_t
# ## *
# ## @brief xcb_input_attach_slave_iterator_t
# ##
# type
# xcb_input_attach_slave_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_attach_slave_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_detach_slave_t
# ##
# type
# xcb_input_detach_slave_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_detach_slave_iterator_t
# ##
# type
# xcb_input_detach_slave_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_detach_slave_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_hierarchy_change_data_t
# ##
# type
# INNER_C_STRUCT_xinput_2469* {.bycopy.} = object
# name_len*: uint16
# send_core*: uint8
# enable*: uint8
# name*: cstring
# INNER_C_STRUCT_xinput_2475* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# return_mode*: uint8
# pad1*: uint8
# return_pointer*: xcb_input_device_id_t
# return_keyboard*: xcb_input_device_id_t
# INNER_C_STRUCT_xinput_2482* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# master*: xcb_input_device_id_t
# INNER_C_STRUCT_xinput_2486* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# pad2*: array[2, uint8]
# xcb_input_hierarchy_change_data_t* {.bycopy.} = object
# add_master*: INNER_C_STRUCT_xinput_2469
# remove_master*: INNER_C_STRUCT_xinput_2475
# attach_slave*: INNER_C_STRUCT_xinput_2482
# detach_slave*: INNER_C_STRUCT_xinput_2486
# ## *
# ## @brief xcb_input_hierarchy_change_t
# ##
# type
# xcb_input_hierarchy_change_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# proc xcb_input_hierarchy_change_data*(R: ptr xcb_input_hierarchy_change_t): pointer
# ## *
# ## @brief xcb_input_hierarchy_change_iterator_t
# ##
# type
# xcb_input_hierarchy_change_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_hierarchy_change_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_input_xi_change_hierarchy.
# const
# XCB_INPUT_XI_CHANGE_HIERARCHY* = 43
# ## *
# ## @brief xcb_input_xi_change_hierarchy_request_t
# ##
# type
# xcb_input_xi_change_hierarchy_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# num_changes*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_input_xi_set_client_pointer.
# const
# XCB_INPUT_XI_SET_CLIENT_POINTER* = 44
# ## *
# ## @brief xcb_input_xi_set_client_pointer_request_t
# ##
# type
# xcb_input_xi_set_client_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_get_client_pointer_cookie_t
# ##
# type
# xcb_input_xi_get_client_pointer_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_get_client_pointer.
# const
# XCB_INPUT_XI_GET_CLIENT_POINTER* = 45
# ## *
# ## @brief xcb_input_xi_get_client_pointer_request_t
# ##
# type
# xcb_input_xi_get_client_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_input_xi_get_client_pointer_reply_t
# ##
# type
# xcb_input_xi_get_client_pointer_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# set*: uint8
# pad1*: uint8
# deviceid*: xcb_input_device_id_t
# pad2*: array[20, uint8]
# xcb_input_xi_event_mask_t* = enum
# XCB_INPUT_XI_EVENT_MASK_DEVICE_CHANGED = 2,
# XCB_INPUT_XI_EVENT_MASK_KEY_PRESS = 4, XCB_INPUT_XI_EVENT_MASK_KEY_RELEASE = 8,
# XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS = 16,
# XCB_INPUT_XI_EVENT_MASK_BUTTON_RELEASE = 32,
# XCB_INPUT_XI_EVENT_MASK_MOTION = 64, XCB_INPUT_XI_EVENT_MASK_ENTER = 128,
# XCB_INPUT_XI_EVENT_MASK_LEAVE = 256, XCB_INPUT_XI_EVENT_MASK_FOCUS_IN = 512,
# XCB_INPUT_XI_EVENT_MASK_FOCUS_OUT = 1024,
# XCB_INPUT_XI_EVENT_MASK_HIERARCHY = 2048,
# XCB_INPUT_XI_EVENT_MASK_PROPERTY = 4096,
# XCB_INPUT_XI_EVENT_MASK_RAW_KEY_PRESS = 8192,
# XCB_INPUT_XI_EVENT_MASK_RAW_KEY_RELEASE = 16384,
# XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_PRESS = 32768,
# XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_RELEASE = 65536,
# XCB_INPUT_XI_EVENT_MASK_RAW_MOTION = 131072,
# XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN = 262144,
# XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE = 524288,
# XCB_INPUT_XI_EVENT_MASK_TOUCH_END = 1048576,
# XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP = 2097152,
# XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_BEGIN = 4194304,
# XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_UPDATE = 8388608,
# XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_END = 16777216,
# XCB_INPUT_XI_EVENT_MASK_BARRIER_HIT = 33554432,
# XCB_INPUT_XI_EVENT_MASK_BARRIER_LEAVE = 67108864
# ## *
# ## @brief xcb_input_event_mask_t
# ##
# type
# xcb_input_event_mask_t* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# mask_len*: uint16
# ## *
# ## @brief xcb_input_event_mask_iterator_t
# ##
# type
# xcb_input_event_mask_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_event_mask_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_input_xi_select_events.
# const
# XCB_INPUT_XI_SELECT_EVENTS* = 46
# ## *
# ## @brief xcb_input_xi_select_events_request_t
# ##
# type
# xcb_input_xi_select_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# num_mask*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_query_version_cookie_t
# ##
# type
# xcb_input_xi_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_query_version.
# const
# XCB_INPUT_XI_QUERY_VERSION* = 47
# ## *
# ## @brief xcb_input_xi_query_version_request_t
# ##
# type
# xcb_input_xi_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint16
# minor_version*: uint16
# ## *
# ## @brief xcb_input_xi_query_version_reply_t
# ##
# type
# xcb_input_xi_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# pad1*: array[20, uint8]
# xcb_input_device_class_type_t* = enum
# XCB_INPUT_DEVICE_CLASS_TYPE_KEY = 0, XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON = 1,
# XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR = 2,
# XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL = 3, XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH = 8
# xcb_input_device_type_t* = enum
# XCB_INPUT_DEVICE_TYPE_MASTER_POINTER = 1,
# XCB_INPUT_DEVICE_TYPE_MASTER_KEYBOARD = 2,
# XCB_INPUT_DEVICE_TYPE_SLAVE_POINTER = 3,
# XCB_INPUT_DEVICE_TYPE_SLAVE_KEYBOARD = 4,
# XCB_INPUT_DEVICE_TYPE_FLOATING_SLAVE = 5
# xcb_input_scroll_flags_t* = enum
# XCB_INPUT_SCROLL_FLAGS_NO_EMULATION = 1, XCB_INPUT_SCROLL_FLAGS_PREFERRED = 2
# xcb_input_scroll_type_t* = enum
# XCB_INPUT_SCROLL_TYPE_VERTICAL = 1, XCB_INPUT_SCROLL_TYPE_HORIZONTAL = 2
# xcb_input_touch_mode_t* = enum
# XCB_INPUT_TOUCH_MODE_DIRECT = 1, XCB_INPUT_TOUCH_MODE_DEPENDENT = 2
# ## *
# ## @brief xcb_input_button_class_t
# ##
# type
# xcb_input_button_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# num_buttons*: uint16
# ## *
# ## @brief xcb_input_button_class_iterator_t
# ##
# type
# xcb_input_button_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_button_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_key_class_t
# ##
# type
# xcb_input_key_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# num_keys*: uint16
# ## *
# ## @brief xcb_input_key_class_iterator_t
# ##
# type
# xcb_input_key_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_key_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_scroll_class_t
# ##
# type
# xcb_input_scroll_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# number*: uint16
# scroll_type*: uint16
# pad0*: array[2, uint8]
# flags*: uint32
# increment*: xcb_input_fp3232_t
# ## *
# ## @brief xcb_input_scroll_class_iterator_t
# ##
# type
# xcb_input_scroll_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_scroll_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_touch_class_t
# ##
# type
# xcb_input_touch_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# mode*: uint8
# num_touches*: uint8
# ## *
# ## @brief xcb_input_touch_class_iterator_t
# ##
# type
# xcb_input_touch_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_touch_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_valuator_class_t
# ##
# type
# xcb_input_valuator_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# number*: uint16
# label*: xcb_atom_t
# min*: xcb_input_fp3232_t
# max*: xcb_input_fp3232_t
# value*: xcb_input_fp3232_t
# resolution*: uint32
# mode*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_valuator_class_iterator_t
# ##
# type
# xcb_input_valuator_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_valuator_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_device_class_data_t
# ##
# type
# INNER_C_STRUCT_xinput_2812* {.bycopy.} = object
# num_keys*: uint16
# keys*: ptr uint32
# INNER_C_STRUCT_xinput_2816* {.bycopy.} = object
# num_buttons*: uint16
# state*: ptr uint32
# labels*: ptr xcb_atom_t
# INNER_C_STRUCT_xinput_2821* {.bycopy.} = object
# number*: uint16
# label*: xcb_atom_t
# min*: xcb_input_fp3232_t
# max*: xcb_input_fp3232_t
# value*: xcb_input_fp3232_t
# resolution*: uint32
# mode*: uint8
# pad0*: array[3, uint8]
# INNER_C_STRUCT_xinput_2831* {.bycopy.} = object
# number*: uint16
# scroll_type*: uint16
# pad1*: array[2, uint8]
# flags*: uint32
# increment*: xcb_input_fp3232_t
# INNER_C_STRUCT_xinput_2838* {.bycopy.} = object
# mode*: uint8
# num_touches*: uint8
# xcb_input_device_class_data_t* {.bycopy.} = object
# key*: INNER_C_STRUCT_xinput_2812
# button*: INNER_C_STRUCT_xinput_2816
# valuator*: INNER_C_STRUCT_xinput_2821
# scroll*: INNER_C_STRUCT_xinput_2831
# touch*: INNER_C_STRUCT_xinput_2838
# ## *
# ## @brief xcb_input_device_class_t
# ##
# type
# xcb_input_device_class_t* {.bycopy.} = object
# `type`*: uint16
# len*: uint16
# sourceid*: xcb_input_device_id_t
# proc xcb_input_device_class_data*(R: ptr xcb_input_device_class_t): pointer
# ## *
# ## @brief xcb_input_device_class_iterator_t
# ##
# type
# xcb_input_device_class_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_device_class_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_xi_device_info_t
# ##
# type
# xcb_input_xi_device_info_t* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# `type`*: uint16
# attachment*: xcb_input_device_id_t
# num_classes*: uint16
# name_len*: uint16
# enabled*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_input_xi_device_info_iterator_t
# ##
# type
# xcb_input_xi_device_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_xi_device_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_xi_query_device_cookie_t
# ##
# type
# xcb_input_xi_query_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_query_device.
# const
# XCB_INPUT_XI_QUERY_DEVICE* = 48
# ## *
# ## @brief xcb_input_xi_query_device_request_t
# ##
# type
# xcb_input_xi_query_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_query_device_reply_t
# ##
# type
# xcb_input_xi_query_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_infos*: uint16
# pad1*: array[22, uint8]
# ## * Opcode for xcb_input_xi_set_focus.
# const
# XCB_INPUT_XI_SET_FOCUS* = 49
# ## *
# ## @brief xcb_input_xi_set_focus_request_t
# ##
# type
# xcb_input_xi_set_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# time*: xcb_timestamp_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_get_focus_cookie_t
# ##
# type
# xcb_input_xi_get_focus_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_get_focus.
# const
# XCB_INPUT_XI_GET_FOCUS* = 50
# ## *
# ## @brief xcb_input_xi_get_focus_request_t
# ##
# type
# xcb_input_xi_get_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_get_focus_reply_t
# ##
# type
# xcb_input_xi_get_focus_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# focus*: xcb_window_t
# pad1*: array[20, uint8]
# xcb_input_grab_owner_t* = enum
# XCB_INPUT_GRAB_OWNER_NO_OWNER = 0, XCB_INPUT_GRAB_OWNER_OWNER = 1
# ## *
# ## @brief xcb_input_xi_grab_device_cookie_t
# ##
# type
# xcb_input_xi_grab_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_grab_device.
# const
# XCB_INPUT_XI_GRAB_DEVICE* = 51
# ## *
# ## @brief xcb_input_xi_grab_device_request_t
# ##
# type
# xcb_input_xi_grab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# time*: xcb_timestamp_t
# cursor*: xcb_cursor_t
# deviceid*: xcb_input_device_id_t
# mode*: uint8
# paired_device_mode*: uint8
# owner_events*: uint8
# pad0*: uint8
# mask_len*: uint16
# ## *
# ## @brief xcb_input_xi_grab_device_reply_t
# ##
# type
# xcb_input_xi_grab_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# status*: uint8
# pad1*: array[23, uint8]
# ## * Opcode for xcb_input_xi_ungrab_device.
# const
# XCB_INPUT_XI_UNGRAB_DEVICE* = 52
# ## *
# ## @brief xcb_input_xi_ungrab_device_request_t
# ##
# type
# xcb_input_xi_ungrab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# xcb_input_event_mode_t* = enum
# XCB_INPUT_EVENT_MODE_ASYNC_DEVICE = 0, XCB_INPUT_EVENT_MODE_SYNC_DEVICE = 1,
# XCB_INPUT_EVENT_MODE_REPLAY_DEVICE = 2,
# XCB_INPUT_EVENT_MODE_ASYNC_PAIRED_DEVICE = 3,
# XCB_INPUT_EVENT_MODE_ASYNC_PAIR = 4, XCB_INPUT_EVENT_MODE_SYNC_PAIR = 5,
# XCB_INPUT_EVENT_MODE_ACCEPT_TOUCH = 6, XCB_INPUT_EVENT_MODE_REJECT_TOUCH = 7
# ## * Opcode for xcb_input_xi_allow_events.
# const
# XCB_INPUT_XI_ALLOW_EVENTS* = 53
# ## *
# ## @brief xcb_input_xi_allow_events_request_t
# ##
# type
# xcb_input_xi_allow_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# deviceid*: xcb_input_device_id_t
# event_mode*: uint8
# pad0*: uint8
# touchid*: uint32
# grab_window*: xcb_window_t
# xcb_input_grab_mode_22_t* = enum
# XCB_INPUT_GRAB_MODE_22_SYNC = 0, XCB_INPUT_GRAB_MODE_22_ASYNC = 1,
# XCB_INPUT_GRAB_MODE_22_TOUCH = 2
# xcb_input_grab_type_t* = enum
# XCB_INPUT_GRAB_TYPE_BUTTON = 0, XCB_INPUT_GRAB_TYPE_KEYCODE = 1,
# XCB_INPUT_GRAB_TYPE_ENTER = 2, XCB_INPUT_GRAB_TYPE_FOCUS_IN = 3,
# XCB_INPUT_GRAB_TYPE_TOUCH_BEGIN = 4
# xcb_input_modifier_mask_t* = enum
# XCB_INPUT_MODIFIER_MASK_ANY = 2147483648'i64
# ## *
# ## @brief xcb_input_grab_modifier_info_t
# ##
# type
# xcb_input_grab_modifier_info_t* {.bycopy.} = object
# modifiers*: uint32
# status*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_grab_modifier_info_iterator_t
# ##
# type
# xcb_input_grab_modifier_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_grab_modifier_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_input_xi_passive_grab_device_cookie_t
# ##
# type
# xcb_input_xi_passive_grab_device_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_passive_grab_device.
# const
# XCB_INPUT_XI_PASSIVE_GRAB_DEVICE* = 54
# ## *
# ## @brief xcb_input_xi_passive_grab_device_request_t
# ##
# type
# xcb_input_xi_passive_grab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# grab_window*: xcb_window_t
# cursor*: xcb_cursor_t
# detail*: uint32
# deviceid*: xcb_input_device_id_t
# num_modifiers*: uint16
# mask_len*: uint16
# grab_type*: uint8
# grab_mode*: uint8
# paired_device_mode*: uint8
# owner_events*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_passive_grab_device_reply_t
# ##
# type
# xcb_input_xi_passive_grab_device_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_modifiers*: uint16
# pad1*: array[22, uint8]
# ## * Opcode for xcb_input_xi_passive_ungrab_device.
# const
# XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE* = 55
# ## *
# ## @brief xcb_input_xi_passive_ungrab_device_request_t
# ##
# type
# xcb_input_xi_passive_ungrab_device_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# detail*: uint32
# deviceid*: xcb_input_device_id_t
# num_modifiers*: uint16
# grab_type*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_input_xi_list_properties_cookie_t
# ##
# type
# xcb_input_xi_list_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_list_properties.
# const
# XCB_INPUT_XI_LIST_PROPERTIES* = 56
# ## *
# ## @brief xcb_input_xi_list_properties_request_t
# ##
# type
# xcb_input_xi_list_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_input_xi_list_properties_reply_t
# ##
# type
# xcb_input_xi_list_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_properties*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_input_xi_change_property_items_t
# ##
# type
# xcb_input_xi_change_property_items_t* {.bycopy.} = object
# data8*: ptr uint8
# data16*: ptr uint16
# data32*: ptr uint32
# ## * Opcode for xcb_input_xi_change_property.
# const
# XCB_INPUT_XI_CHANGE_PROPERTY* = 57
# ## *
# ## @brief xcb_input_xi_change_property_request_t
# ##
# type
# xcb_input_xi_change_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# mode*: uint8
# format*: uint8
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# num_items*: uint32
# ## * Opcode for xcb_input_xi_delete_property.
# const
# XCB_INPUT_XI_DELETE_PROPERTY* = 58
# ## *
# ## @brief xcb_input_xi_delete_property_request_t
# ##
# type
# xcb_input_xi_delete_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# property*: xcb_atom_t
# ## *
# ## @brief xcb_input_xi_get_property_cookie_t
# ##
# type
# xcb_input_xi_get_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_get_property.
# const
# XCB_INPUT_XI_GET_PROPERTY* = 59
# ## *
# ## @brief xcb_input_xi_get_property_request_t
# ##
# type
# xcb_input_xi_get_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceid*: xcb_input_device_id_t
# _delete*: uint8
# pad0*: uint8
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# offset*: uint32
# len*: uint32
# ## *
# ## @brief xcb_input_xi_get_property_items_t
# ##
# type
# xcb_input_xi_get_property_items_t* {.bycopy.} = object
# data8*: ptr uint8
# data16*: ptr uint16
# data32*: ptr uint32
# ## *
# ## @brief xcb_input_xi_get_property_reply_t
# ##
# type
# xcb_input_xi_get_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# `type`*: xcb_atom_t
# bytes_after*: uint32
# num_items*: uint32
# format*: uint8
# pad1*: array[11, uint8]
# ## *
# ## @brief xcb_input_xi_get_selected_events_cookie_t
# ##
# type
# xcb_input_xi_get_selected_events_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_input_xi_get_selected_events.
# const
# XCB_INPUT_XI_GET_SELECTED_EVENTS* = 60
# ## *
# ## @brief xcb_input_xi_get_selected_events_request_t
# ##
# type
# xcb_input_xi_get_selected_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_input_xi_get_selected_events_reply_t
# ##
# type
# xcb_input_xi_get_selected_events_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_masks*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_input_barrier_release_pointer_info_t
# ##
# type
# xcb_input_barrier_release_pointer_info_t* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# barrier*: xcb_xfixes_barrier_t
# eventid*: uint32
# ## *
# ## @brief xcb_input_barrier_release_pointer_info_iterator_t
# ##
# type
# xcb_input_barrier_release_pointer_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_barrier_release_pointer_info_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_input_xi_barrier_release_pointer.
# const
# XCB_INPUT_XI_BARRIER_RELEASE_POINTER* = 61
# ## *
# ## @brief xcb_input_xi_barrier_release_pointer_request_t
# ##
# type
# xcb_input_xi_barrier_release_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# num_barriers*: uint32
# ## * Opcode for xcb_input_device_valuator.
# const
# XCB_INPUT_DEVICE_VALUATOR* = 0
# ## *
# ## @brief xcb_input_device_valuator_event_t
# ##
# type
# xcb_input_device_valuator_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# device_state*: uint16
# num_valuators*: uint8
# first_valuator*: uint8
# valuators*: array[6, int32]
# xcb_input_more_events_mask_t* = enum
# XCB_INPUT_MORE_EVENTS_MASK_MORE_EVENTS = 128
# ## * Opcode for xcb_input_device_key_press.
# const
# XCB_INPUT_DEVICE_KEY_PRESS* = 1
# ## *
# ## @brief xcb_input_device_key_press_event_t
# ##
# type
# xcb_input_device_key_press_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# event_x*: int16
# event_y*: int16
# state*: uint16
# same_screen*: uint8
# device_id*: uint8
# ## * Opcode for xcb_input_device_key_release.
# const
# XCB_INPUT_DEVICE_KEY_RELEASE* = 2
# type
# xcb_input_device_key_release_event_t* = xcb_input_device_key_press_event_t
# ## * Opcode for xcb_input_device_button_press.
# const
# XCB_INPUT_DEVICE_BUTTON_PRESS* = 3
# type
# xcb_input_device_button_press_event_t* = xcb_input_device_key_press_event_t
# ## * Opcode for xcb_input_device_button_release.
# const
# XCB_INPUT_DEVICE_BUTTON_RELEASE* = 4
# type
# xcb_input_device_button_release_event_t* = xcb_input_device_key_press_event_t
# ## * Opcode for xcb_input_device_motion_notify.
# const
# XCB_INPUT_DEVICE_MOTION_NOTIFY* = 5
# type
# xcb_input_device_motion_notify_event_t* = xcb_input_device_key_press_event_t
# ## * Opcode for xcb_input_device_focus_in.
# const
# XCB_INPUT_DEVICE_FOCUS_IN* = 6
# ## *
# ## @brief xcb_input_device_focus_in_event_t
# ##
# type
# xcb_input_device_focus_in_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# window*: xcb_window_t
# mode*: uint8
# device_id*: uint8
# pad0*: array[18, uint8]
# ## * Opcode for xcb_input_device_focus_out.
# const
# XCB_INPUT_DEVICE_FOCUS_OUT* = 7
# type
# xcb_input_device_focus_out_event_t* = xcb_input_device_focus_in_event_t
# ## * Opcode for xcb_input_proximity_in.
# const
# XCB_INPUT_PROXIMITY_IN* = 8
# type
# xcb_input_proximity_in_event_t* = xcb_input_device_key_press_event_t
# ## * Opcode for xcb_input_proximity_out.
# const
# XCB_INPUT_PROXIMITY_OUT* = 9
# type
# xcb_input_proximity_out_event_t* = xcb_input_device_key_press_event_t
# xcb_input_classes_reported_mask_t* = enum
# XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_KEYS = 1,
# XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_BUTTONS = 2,
# XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_VALUATORS = 4,
# XCB_INPUT_CLASSES_REPORTED_MASK_DEVICE_MODE_ABSOLUTE = 64,
# XCB_INPUT_CLASSES_REPORTED_MASK_OUT_OF_PROXIMITY = 128
# ## * Opcode for xcb_input_device_state_notify.
# const
# XCB_INPUT_DEVICE_STATE_NOTIFY* = 10
# ## *
# ## @brief xcb_input_device_state_notify_event_t
# ##
# type
# xcb_input_device_state_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# num_keys*: uint8
# num_buttons*: uint8
# num_valuators*: uint8
# classes_reported*: uint8
# buttons*: array[4, uint8]
# keys*: array[4, uint8]
# valuators*: array[3, uint32]
# ## * Opcode for xcb_input_device_mapping_notify.
# const
# XCB_INPUT_DEVICE_MAPPING_NOTIFY* = 11
# ## *
# ## @brief xcb_input_device_mapping_notify_event_t
# ##
# type
# xcb_input_device_mapping_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# request*: uint8
# first_keycode*: xcb_input_key_code_t
# count*: uint8
# pad0*: uint8
# time*: xcb_timestamp_t
# pad1*: array[20, uint8]
# xcb_input_change_device_t* = enum
# XCB_INPUT_CHANGE_DEVICE_NEW_POINTER = 0,
# XCB_INPUT_CHANGE_DEVICE_NEW_KEYBOARD = 1
# ## * Opcode for xcb_input_change_device_notify.
# const
# XCB_INPUT_CHANGE_DEVICE_NOTIFY* = 12
# ## *
# ## @brief xcb_input_change_device_notify_event_t
# ##
# type
# xcb_input_change_device_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# request*: uint8
# pad0*: array[23, uint8]
# ## * Opcode for xcb_input_device_key_state_notify.
# const
# XCB_INPUT_DEVICE_KEY_STATE_NOTIFY* = 13
# ## *
# ## @brief xcb_input_device_key_state_notify_event_t
# ##
# type
# xcb_input_device_key_state_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# keys*: array[28, uint8]
# ## * Opcode for xcb_input_device_button_state_notify.
# const
# XCB_INPUT_DEVICE_BUTTON_STATE_NOTIFY* = 14
# ## *
# ## @brief xcb_input_device_button_state_notify_event_t
# ##
# type
# xcb_input_device_button_state_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# device_id*: uint8
# sequence*: uint16
# buttons*: array[28, uint8]
# xcb_input_device_change_t* = enum
# XCB_INPUT_DEVICE_CHANGE_ADDED = 0, XCB_INPUT_DEVICE_CHANGE_REMOVED = 1,
# XCB_INPUT_DEVICE_CHANGE_ENABLED = 2, XCB_INPUT_DEVICE_CHANGE_DISABLED = 3,
# XCB_INPUT_DEVICE_CHANGE_UNRECOVERABLE = 4,
# XCB_INPUT_DEVICE_CHANGE_CONTROL_CHANGED = 5
# ## * Opcode for xcb_input_device_presence_notify.
# const
# XCB_INPUT_DEVICE_PRESENCE_NOTIFY* = 15
# ## *
# ## @brief xcb_input_device_presence_notify_event_t
# ##
# type
# xcb_input_device_presence_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# devchange*: uint8
# device_id*: uint8
# control*: uint16
# pad1*: array[20, uint8]
# ## * Opcode for xcb_input_device_property_notify.
# const
# XCB_INPUT_DEVICE_PROPERTY_NOTIFY* = 16
# ## *
# ## @brief xcb_input_device_property_notify_event_t
# ##
# type
# xcb_input_device_property_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# state*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# property*: xcb_atom_t
# pad0*: array[19, uint8]
# device_id*: uint8
# xcb_input_change_reason_t* = enum
# XCB_INPUT_CHANGE_REASON_SLAVE_SWITCH = 1,
# XCB_INPUT_CHANGE_REASON_DEVICE_CHANGE = 2
# ## * Opcode for xcb_input_device_changed.
# const
# XCB_INPUT_DEVICE_CHANGED* = 1
# ## *
# ## @brief xcb_input_device_changed_event_t
# ##
# type
# xcb_input_device_changed_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# num_classes*: uint16
# sourceid*: xcb_input_device_id_t
# reason*: uint8
# pad0*: array[11, uint8]
# full_sequence*: uint32
# xcb_input_key_event_flags_t* = enum
# XCB_INPUT_KEY_EVENT_FLAGS_KEY_REPEAT = 65536
# ## * Opcode for xcb_input_key_press.
# const
# XCB_INPUT_KEY_PRESS* = 2
# ## *
# ## @brief xcb_input_key_press_event_t
# ##
# type
# xcb_input_key_press_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# full_sequence*: uint32
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# event_x*: xcb_input_fp1616_t
# event_y*: xcb_input_fp1616_t
# buttons_len*: uint16
# valuators_len*: uint16
# sourceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# flags*: uint32
# mods*: xcb_input_modifier_info_t
# group*: xcb_input_group_info_t
# ## * Opcode for xcb_input_key_release.
# const
# XCB_INPUT_KEY_RELEASE* = 3
# type
# xcb_input_key_release_event_t* = xcb_input_key_press_event_t
# xcb_input_pointer_event_flags_t* = enum
# XCB_INPUT_POINTER_EVENT_FLAGS_POINTER_EMULATED = 65536
# ## * Opcode for xcb_input_button_press.
# const
# XCB_INPUT_BUTTON_PRESS* = 4
# ## *
# ## @brief xcb_input_button_press_event_t
# ##
# type
# xcb_input_button_press_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# full_sequence*: uint32
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# event_x*: xcb_input_fp1616_t
# event_y*: xcb_input_fp1616_t
# buttons_len*: uint16
# valuators_len*: uint16
# sourceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# flags*: uint32
# mods*: xcb_input_modifier_info_t
# group*: xcb_input_group_info_t
# ## * Opcode for xcb_input_button_release.
# const
# XCB_INPUT_BUTTON_RELEASE* = 5
# type
# xcb_input_button_release_event_t* = xcb_input_button_press_event_t
# ## * Opcode for xcb_input_motion.
# const
# XCB_INPUT_MOTION* = 6
# type
# xcb_input_motion_event_t* = xcb_input_button_press_event_t
# xcb_input_notify_mode_t* = enum
# XCB_INPUT_NOTIFY_MODE_NORMAL = 0, XCB_INPUT_NOTIFY_MODE_GRAB = 1,
# XCB_INPUT_NOTIFY_MODE_UNGRAB = 2, XCB_INPUT_NOTIFY_MODE_WHILE_GRABBED = 3,
# XCB_INPUT_NOTIFY_MODE_PASSIVE_GRAB = 4,
# XCB_INPUT_NOTIFY_MODE_PASSIVE_UNGRAB = 5
# xcb_input_notify_detail_t* = enum
# XCB_INPUT_NOTIFY_DETAIL_ANCESTOR = 0, XCB_INPUT_NOTIFY_DETAIL_VIRTUAL = 1,
# XCB_INPUT_NOTIFY_DETAIL_INFERIOR = 2, XCB_INPUT_NOTIFY_DETAIL_NONLINEAR = 3,
# XCB_INPUT_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4,
# XCB_INPUT_NOTIFY_DETAIL_POINTER = 5, XCB_INPUT_NOTIFY_DETAIL_POINTER_ROOT = 6,
# XCB_INPUT_NOTIFY_DETAIL_NONE = 7
# ## * Opcode for xcb_input_enter.
# const
# XCB_INPUT_ENTER* = 7
# ## *
# ## @brief xcb_input_enter_event_t
# ##
# type
# xcb_input_enter_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# sourceid*: xcb_input_device_id_t
# mode*: uint8
# detail*: uint8
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# full_sequence*: uint32
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# event_x*: xcb_input_fp1616_t
# event_y*: xcb_input_fp1616_t
# same_screen*: uint8
# focus*: uint8
# buttons_len*: uint16
# mods*: xcb_input_modifier_info_t
# group*: xcb_input_group_info_t
# ## * Opcode for xcb_input_leave.
# const
# XCB_INPUT_LEAVE* = 8
# type
# xcb_input_leave_event_t* = xcb_input_enter_event_t
# ## * Opcode for xcb_input_focus_in.
# const
# XCB_INPUT_FOCUS_IN* = 9
# type
# xcb_input_focus_in_event_t* = xcb_input_enter_event_t
# ## * Opcode for xcb_input_focus_out.
# const
# XCB_INPUT_FOCUS_OUT* = 10
# type
# xcb_input_focus_out_event_t* = xcb_input_enter_event_t
# xcb_input_hierarchy_mask_t* = enum
# XCB_INPUT_HIERARCHY_MASK_MASTER_ADDED = 1,
# XCB_INPUT_HIERARCHY_MASK_MASTER_REMOVED = 2,
# XCB_INPUT_HIERARCHY_MASK_SLAVE_ADDED = 4,
# XCB_INPUT_HIERARCHY_MASK_SLAVE_REMOVED = 8,
# XCB_INPUT_HIERARCHY_MASK_SLAVE_ATTACHED = 16,
# XCB_INPUT_HIERARCHY_MASK_SLAVE_DETACHED = 32,
# XCB_INPUT_HIERARCHY_MASK_DEVICE_ENABLED = 64,
# XCB_INPUT_HIERARCHY_MASK_DEVICE_DISABLED = 128
# ## *
# ## @brief xcb_input_hierarchy_info_t
# ##
# type
# xcb_input_hierarchy_info_t* {.bycopy.} = object
# deviceid*: xcb_input_device_id_t
# attachment*: xcb_input_device_id_t
# `type`*: uint8
# enabled*: uint8
# pad0*: array[2, uint8]
# flags*: uint32
# ## *
# ## @brief xcb_input_hierarchy_info_iterator_t
# ##
# type
# xcb_input_hierarchy_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_hierarchy_info_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_input_hierarchy.
# const
# XCB_INPUT_HIERARCHY* = 11
# ## *
# ## @brief xcb_input_hierarchy_event_t
# ##
# type
# xcb_input_hierarchy_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# flags*: uint32
# num_infos*: uint16
# pad0*: array[10, uint8]
# full_sequence*: uint32
# xcb_input_property_flag_t* = enum
# XCB_INPUT_PROPERTY_FLAG_DELETED = 0, XCB_INPUT_PROPERTY_FLAG_CREATED = 1,
# XCB_INPUT_PROPERTY_FLAG_MODIFIED = 2
# ## * Opcode for xcb_input_property.
# const
# XCB_INPUT_PROPERTY* = 12
# ## *
# ## @brief xcb_input_property_event_t
# ##
# type
# xcb_input_property_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# property*: xcb_atom_t
# what*: uint8
# pad0*: array[11, uint8]
# full_sequence*: uint32
# ## * Opcode for xcb_input_raw_key_press.
# const
# XCB_INPUT_RAW_KEY_PRESS* = 13
# ## *
# ## @brief xcb_input_raw_key_press_event_t
# ##
# type
# xcb_input_raw_key_press_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# sourceid*: xcb_input_device_id_t
# valuators_len*: uint16
# flags*: uint32
# pad0*: array[4, uint8]
# full_sequence*: uint32
# ## * Opcode for xcb_input_raw_key_release.
# const
# XCB_INPUT_RAW_KEY_RELEASE* = 14
# type
# xcb_input_raw_key_release_event_t* = xcb_input_raw_key_press_event_t
# ## * Opcode for xcb_input_raw_button_press.
# const
# XCB_INPUT_RAW_BUTTON_PRESS* = 15
# ## *
# ## @brief xcb_input_raw_button_press_event_t
# ##
# type
# xcb_input_raw_button_press_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# sourceid*: xcb_input_device_id_t
# valuators_len*: uint16
# flags*: uint32
# pad0*: array[4, uint8]
# full_sequence*: uint32
# ## * Opcode for xcb_input_raw_button_release.
# const
# XCB_INPUT_RAW_BUTTON_RELEASE* = 16
# type
# xcb_input_raw_button_release_event_t* = xcb_input_raw_button_press_event_t
# ## * Opcode for xcb_input_raw_motion.
# const
# XCB_INPUT_RAW_MOTION* = 17
# type
# xcb_input_raw_motion_event_t* = xcb_input_raw_button_press_event_t
# xcb_input_touch_event_flags_t* = enum
# XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_PENDING_END = 65536,
# XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_EMULATING_POINTER = 131072
# ## * Opcode for xcb_input_touch_begin.
# const
# XCB_INPUT_TOUCH_BEGIN* = 18
# ## *
# ## @brief xcb_input_touch_begin_event_t
# ##
# type
# xcb_input_touch_begin_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# full_sequence*: uint32
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# event_x*: xcb_input_fp1616_t
# event_y*: xcb_input_fp1616_t
# buttons_len*: uint16
# valuators_len*: uint16
# sourceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# flags*: uint32
# mods*: xcb_input_modifier_info_t
# group*: xcb_input_group_info_t
# ## * Opcode for xcb_input_touch_update.
# const
# XCB_INPUT_TOUCH_UPDATE* = 19
# type
# xcb_input_touch_update_event_t* = xcb_input_touch_begin_event_t
# ## * Opcode for xcb_input_touch_end.
# const
# XCB_INPUT_TOUCH_END* = 20
# type
# xcb_input_touch_end_event_t* = xcb_input_touch_begin_event_t
# xcb_input_touch_ownership_flags_t* = enum
# XCB_INPUT_TOUCH_OWNERSHIP_FLAGS_NONE = 0
# ## * Opcode for xcb_input_touch_ownership.
# const
# XCB_INPUT_TOUCH_OWNERSHIP* = 21
# ## *
# ## @brief xcb_input_touch_ownership_event_t
# ##
# type
# xcb_input_touch_ownership_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# touchid*: uint32
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# full_sequence*: uint32
# sourceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# flags*: uint32
# pad1*: array[8, uint8]
# ## * Opcode for xcb_input_raw_touch_begin.
# const
# XCB_INPUT_RAW_TOUCH_BEGIN* = 22
# ## *
# ## @brief xcb_input_raw_touch_begin_event_t
# ##
# type
# xcb_input_raw_touch_begin_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# detail*: uint32
# sourceid*: xcb_input_device_id_t
# valuators_len*: uint16
# flags*: uint32
# pad0*: array[4, uint8]
# full_sequence*: uint32
# ## * Opcode for xcb_input_raw_touch_update.
# const
# XCB_INPUT_RAW_TOUCH_UPDATE* = 23
# type
# xcb_input_raw_touch_update_event_t* = xcb_input_raw_touch_begin_event_t
# ## * Opcode for xcb_input_raw_touch_end.
# const
# XCB_INPUT_RAW_TOUCH_END* = 24
# type
# xcb_input_raw_touch_end_event_t* = xcb_input_raw_touch_begin_event_t
# xcb_input_barrier_flags_t* = enum
# XCB_INPUT_BARRIER_FLAGS_POINTER_RELEASED = 1,
# XCB_INPUT_BARRIER_FLAGS_DEVICE_IS_GRABBED = 2
# ## * Opcode for xcb_input_barrier_hit.
# const
# XCB_INPUT_BARRIER_HIT* = 25
# ## *
# ## @brief xcb_input_barrier_hit_event_t
# ##
# type
# xcb_input_barrier_hit_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# deviceid*: xcb_input_device_id_t
# time*: xcb_timestamp_t
# eventid*: uint32
# root*: xcb_window_t
# event*: xcb_window_t
# barrier*: xcb_xfixes_barrier_t
# full_sequence*: uint32
# dtime*: uint32
# flags*: uint32
# sourceid*: xcb_input_device_id_t
# pad0*: array[2, uint8]
# root_x*: xcb_input_fp1616_t
# root_y*: xcb_input_fp1616_t
# dx*: xcb_input_fp3232_t
# dy*: xcb_input_fp3232_t
# ## * Opcode for xcb_input_barrier_leave.
# const
# XCB_INPUT_BARRIER_LEAVE* = 26
# type
# xcb_input_barrier_leave_event_t* = xcb_input_barrier_hit_event_t
# ## *
# ## @brief xcb_input_event_for_send_t
# ##
# type
# xcb_input_event_for_send_t* {.bycopy.} = object {.union.}
# device_valuator*: xcb_input_device_valuator_event_t
# device_key_press*: xcb_input_device_key_press_event_t
# device_key_release*: xcb_input_device_key_release_event_t
# device_button_press*: xcb_input_device_button_press_event_t
# device_button_release*: xcb_input_device_button_release_event_t
# device_motion_notify*: xcb_input_device_motion_notify_event_t
# device_focus_in*: xcb_input_device_focus_in_event_t
# device_focus_out*: xcb_input_device_focus_out_event_t
# proximity_in*: xcb_input_proximity_in_event_t
# proximity_out*: xcb_input_proximity_out_event_t
# device_state_notify*: xcb_input_device_state_notify_event_t
# device_mapping_notify*: xcb_input_device_mapping_notify_event_t
# change_device_notify*: xcb_input_change_device_notify_event_t
# device_key_state_notify*: xcb_input_device_key_state_notify_event_t
# device_button_state_notify*: xcb_input_device_button_state_notify_event_t
# device_presence_notify*: xcb_input_device_presence_notify_event_t
# event_header*: xcb_raw_generic_event_t
# ## *
# ## @brief xcb_input_event_for_send_iterator_t
# ##
# type
# xcb_input_event_for_send_iterator_t* {.bycopy.} = object
# data*: ptr xcb_input_event_for_send_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_input_send_extension_event.
# const
# XCB_INPUT_SEND_EXTENSION_EVENT* = 31
# ## *
# ## @brief xcb_input_send_extension_event_request_t
# ##
# type
# xcb_input_send_extension_event_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# destination*: xcb_window_t
# device_id*: uint8
# propagate*: uint8
# num_classes*: uint16
# num_events*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_input_device.
# const
# XCB_INPUT_DEVICE* = 0
# ## *
# ## @brief xcb_input_device_error_t
# ##
# type
# xcb_input_device_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_input_event.
# const
# XCB_INPUT_EVENT* = 1
# ## *
# ## @brief xcb_input_event_error_t
# ##
# type
# xcb_input_event_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_input_mode.
# const
# XCB_INPUT_MODE* = 2
# ## *
# ## @brief xcb_input_mode_error_t
# ##
# type
# xcb_input_mode_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_input_device_busy.
# const
# XCB_INPUT_DEVICE_BUSY* = 3
# ## *
# ## @brief xcb_input_device_busy_error_t
# ##
# type
# xcb_input_device_busy_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_input_class.
# const
# XCB_INPUT_CLASS* = 4
# ## *
# ## @brief xcb_input_class_error_t
# ##
# type
# xcb_input_class_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_event_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_event_class_t)
# ##
# proc xcb_input_event_class_next*(i: ptr xcb_input_event_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_event_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_event_class_end*(i: xcb_input_event_class_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_key_code_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_key_code_t)
# ##
# proc xcb_input_key_code_next*(i: ptr xcb_input_key_code_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_key_code_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_key_code_end*(i: xcb_input_key_code_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_id_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_id_t)
# ##
# proc xcb_input_device_id_next*(i: ptr xcb_input_device_id_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_id_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_id_end*(i: xcb_input_device_id_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_fp1616_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_fp1616_t)
# ##
# proc xcb_input_fp1616_next*(i: ptr xcb_input_fp1616_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_fp1616_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_fp1616_end*(i: xcb_input_fp1616_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_fp3232_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_fp3232_t)
# ##
# proc xcb_input_fp3232_next*(i: ptr xcb_input_fp3232_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_fp3232_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_fp3232_end*(i: xcb_input_fp3232_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_extension_version_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_extension_version*(c: ptr xcb_connection_t; name_len: uint16;
# name: cstring): xcb_input_get_extension_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_extension_version_unchecked*(c: ptr xcb_connection_t;
# name_len: uint16; name: cstring): xcb_input_get_extension_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_extension_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_extension_version_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_extension_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_extension_version_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_info_t)
# ##
# proc xcb_input_device_info_next*(i: ptr xcb_input_device_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_info_end*(i: xcb_input_device_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_key_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_key_info_t)
# ##
# proc xcb_input_key_info_next*(i: ptr xcb_input_key_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_key_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_key_info_end*(i: xcb_input_key_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_button_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_button_info_t)
# ##
# proc xcb_input_button_info_next*(i: ptr xcb_input_button_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_button_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_button_info_end*(i: xcb_input_button_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_axis_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_axis_info_t)
# ##
# proc xcb_input_axis_info_next*(i: ptr xcb_input_axis_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_axis_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_axis_info_end*(i: xcb_input_axis_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_valuator_info_sizeof*(_buffer: pointer): cint
# proc xcb_input_valuator_info_axes*(R: ptr xcb_input_valuator_info_t): ptr xcb_input_axis_info_t
# proc xcb_input_valuator_info_axes_length*(R: ptr xcb_input_valuator_info_t): cint
# proc xcb_input_valuator_info_axes_iterator*(R: ptr xcb_input_valuator_info_t): xcb_input_axis_info_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_valuator_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_valuator_info_t)
# ##
# proc xcb_input_valuator_info_next*(i: ptr xcb_input_valuator_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_valuator_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_valuator_info_end*(i: xcb_input_valuator_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_input_info_info_valuator_axes*(S: ptr xcb_input_input_info_info_t): ptr xcb_input_axis_info_t
# proc xcb_input_input_info_info_valuator_axes_length*(
# R: ptr xcb_input_input_info_t; S: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_valuator_axes_iterator*(
# R: ptr xcb_input_input_info_t; S: ptr xcb_input_input_info_info_t): xcb_input_axis_info_iterator_t
# proc xcb_input_input_info_info_serialize*(_buffer: ptr pointer; class_id: uint8;
# _aux: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_unpack*(_buffer: pointer; class_id: uint8;
# _aux: ptr xcb_input_input_info_info_t): cint
# proc xcb_input_input_info_info_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_input_info_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_input_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_input_info_t)
# ##
# proc xcb_input_input_info_next*(i: ptr xcb_input_input_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_input_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_input_info_end*(i: xcb_input_input_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_name_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_name_string*(R: ptr xcb_input_device_name_t): cstring
# proc xcb_input_device_name_string_length*(R: ptr xcb_input_device_name_t): cint
# proc xcb_input_device_name_string_end*(R: ptr xcb_input_device_name_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_name_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_name_t)
# ##
# proc xcb_input_device_name_next*(i: ptr xcb_input_device_name_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_name_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_name_end*(i: xcb_input_device_name_iterator_t): xcb_generic_iterator_t
# proc xcb_input_list_input_devices_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_list_input_devices*(c: ptr xcb_connection_t): xcb_input_list_input_devices_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_list_input_devices_unchecked*(c: ptr xcb_connection_t): xcb_input_list_input_devices_cookie_t
# proc xcb_input_list_input_devices_devices*(
# R: ptr xcb_input_list_input_devices_reply_t): ptr xcb_input_device_info_t
# proc xcb_input_list_input_devices_devices_length*(
# R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_devices_iterator*(
# R: ptr xcb_input_list_input_devices_reply_t): xcb_input_device_info_iterator_t
# proc xcb_input_list_input_devices_infos_length*(
# R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_infos_iterator*(
# R: ptr xcb_input_list_input_devices_reply_t): xcb_input_input_info_iterator_t
# proc xcb_input_list_input_devices_names_length*(
# R: ptr xcb_input_list_input_devices_reply_t): cint
# proc xcb_input_list_input_devices_names_iterator*(
# R: ptr xcb_input_list_input_devices_reply_t): xcb_str_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_list_input_devices_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_list_input_devices_reply*(c: ptr xcb_connection_t; cookie: xcb_input_list_input_devices_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_list_input_devices_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_event_type_base_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_event_type_base_t)
# ##
# proc xcb_input_event_type_base_next*(i: ptr xcb_input_event_type_base_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_event_type_base_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_event_type_base_end*(i: xcb_input_event_type_base_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_input_class_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_input_class_info_t)
# ##
# proc xcb_input_input_class_info_next*(i: ptr xcb_input_input_class_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_input_class_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_input_class_info_end*(i: xcb_input_input_class_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_open_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_open_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_open_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_open_device_unchecked*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_open_device_cookie_t
# proc xcb_input_open_device_class_info*(R: ptr xcb_input_open_device_reply_t): ptr xcb_input_input_class_info_t
# proc xcb_input_open_device_class_info_length*(
# R: ptr xcb_input_open_device_reply_t): cint
# proc xcb_input_open_device_class_info_iterator*(
# R: ptr xcb_input_open_device_reply_t): xcb_input_input_class_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_open_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_open_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_open_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_open_device_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_close_device_checked*(c: ptr xcb_connection_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_close_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_set_device_mode*(c: ptr xcb_connection_t; device_id: uint8;
# mode: uint8): xcb_input_set_device_mode_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_set_device_mode_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8; mode: uint8): xcb_input_set_device_mode_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_set_device_mode_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_set_device_mode_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_mode_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_mode_reply_t
# proc xcb_input_select_extension_event_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_select_extension_event_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; num_classes: uint16;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_select_extension_event*(c: ptr xcb_connection_t;
# window: xcb_window_t; num_classes: uint16;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_select_extension_event_classes*(
# R: ptr xcb_input_select_extension_event_request_t): ptr xcb_input_event_class_t
# proc xcb_input_select_extension_event_classes_length*(
# R: ptr xcb_input_select_extension_event_request_t): cint
# proc xcb_input_select_extension_event_classes_end*(
# R: ptr xcb_input_select_extension_event_request_t): xcb_generic_iterator_t
# proc xcb_input_get_selected_extension_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_selected_extension_events*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_get_selected_extension_events_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_selected_extension_events_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_get_selected_extension_events_cookie_t
# proc xcb_input_get_selected_extension_events_this_classes*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_selected_extension_events_this_classes_length*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): cint
# proc xcb_input_get_selected_extension_events_this_classes_end*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): xcb_generic_iterator_t
# proc xcb_input_get_selected_extension_events_all_classes*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_selected_extension_events_all_classes_length*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): cint
# proc xcb_input_get_selected_extension_events_all_classes_end*(
# R: ptr xcb_input_get_selected_extension_events_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_selected_extension_events_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_selected_extension_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_selected_extension_events_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_selected_extension_events_reply_t
# proc xcb_input_change_device_dont_propagate_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_change_device_dont_propagate_list_checked*(
# c: ptr xcb_connection_t; window: xcb_window_t; num_classes: uint16;
# mode: uint8; classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_device_dont_propagate_list*(c: ptr xcb_connection_t;
# window: xcb_window_t; num_classes: uint16; mode: uint8;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_change_device_dont_propagate_list_classes*(
# R: ptr xcb_input_change_device_dont_propagate_list_request_t): ptr xcb_input_event_class_t
# proc xcb_input_change_device_dont_propagate_list_classes_length*(
# R: ptr xcb_input_change_device_dont_propagate_list_request_t): cint
# proc xcb_input_change_device_dont_propagate_list_classes_end*(
# R: ptr xcb_input_change_device_dont_propagate_list_request_t): xcb_generic_iterator_t
# proc xcb_input_get_device_dont_propagate_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_dont_propagate_list*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_get_device_dont_propagate_list_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_dont_propagate_list_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_get_device_dont_propagate_list_cookie_t
# proc xcb_input_get_device_dont_propagate_list_classes*(
# R: ptr xcb_input_get_device_dont_propagate_list_reply_t): ptr xcb_input_event_class_t
# proc xcb_input_get_device_dont_propagate_list_classes_length*(
# R: ptr xcb_input_get_device_dont_propagate_list_reply_t): cint
# proc xcb_input_get_device_dont_propagate_list_classes_end*(
# R: ptr xcb_input_get_device_dont_propagate_list_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_dont_propagate_list_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_dont_propagate_list_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_dont_propagate_list_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_dont_propagate_list_reply_t
# proc xcb_input_device_time_coord_sizeof*(_buffer: pointer; num_axes: uint8): cint
# proc xcb_input_device_time_coord_axisvalues*(R: ptr xcb_input_device_time_coord_t): ptr int32
# proc xcb_input_device_time_coord_axisvalues_length*(
# R: ptr xcb_input_device_time_coord_t; num_axes: uint8): cint
# proc xcb_input_device_time_coord_axisvalues_end*(
# R: ptr xcb_input_device_time_coord_t; num_axes: uint8): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_time_coord_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_time_coord_t)
# ##
# proc xcb_input_device_time_coord_next*(i: ptr xcb_input_device_time_coord_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_time_coord_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_time_coord_end*(i: xcb_input_device_time_coord_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_device_motion_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_motion_events*(c: ptr xcb_connection_t;
# start: xcb_timestamp_t;
# stop: xcb_timestamp_t; device_id: uint8): xcb_input_get_device_motion_events_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_motion_events_unchecked*(c: ptr xcb_connection_t;
# start: xcb_timestamp_t; stop: xcb_timestamp_t; device_id: uint8): xcb_input_get_device_motion_events_cookie_t
# proc xcb_input_get_device_motion_events_events_length*(
# R: ptr xcb_input_get_device_motion_events_reply_t): cint
# proc xcb_input_get_device_motion_events_events_iterator*(
# R: ptr xcb_input_get_device_motion_events_reply_t): xcb_input_device_time_coord_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_motion_events_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_motion_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_motion_events_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_motion_events_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_keyboard_device*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_change_keyboard_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_change_keyboard_device_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_change_keyboard_device_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_change_keyboard_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_change_keyboard_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_keyboard_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_keyboard_device_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_pointer_device*(c: ptr xcb_connection_t; x_axis: uint8;
# y_axis: uint8; device_id: uint8): xcb_input_change_pointer_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_change_pointer_device_unchecked*(c: ptr xcb_connection_t;
# x_axis: uint8; y_axis: uint8; device_id: uint8): xcb_input_change_pointer_device_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_change_pointer_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_change_pointer_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_pointer_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_pointer_device_reply_t
# proc xcb_input_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_grab_device*(c: ptr xcb_connection_t; grab_window: xcb_window_t;
# time: xcb_timestamp_t; num_classes: uint16;
# this_device_mode: uint8; other_device_mode: uint8;
# owner_events: uint8; device_id: uint8;
# classes: ptr xcb_input_event_class_t): xcb_input_grab_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_grab_device_unchecked*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t;
# time: xcb_timestamp_t; num_classes: uint16;
# this_device_mode: uint8;
# other_device_mode: uint8;
# owner_events: uint8; device_id: uint8;
# classes: ptr xcb_input_event_class_t): xcb_input_grab_device_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_grab_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_grab_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_grab_device_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_ungrab_device_checked*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_ungrab_device*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
# device_id: uint8): xcb_void_cookie_t
# proc xcb_input_grab_device_key_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_grab_device_key_checked*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t;
# num_classes: uint16; modifiers: uint16;
# modifier_device: uint8;
# grabbed_device: uint8; key: uint8;
# this_device_mode: uint8;
# other_device_mode: uint8;
# owner_events: uint8;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_grab_device_key*(c: ptr xcb_connection_t; grab_window: xcb_window_t;
# num_classes: uint16; modifiers: uint16;
# modifier_device: uint8; grabbed_device: uint8;
# key: uint8; this_device_mode: uint8;
# other_device_mode: uint8; owner_events: uint8;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_grab_device_key_classes*(R: ptr xcb_input_grab_device_key_request_t): ptr xcb_input_event_class_t
# proc xcb_input_grab_device_key_classes_length*(
# R: ptr xcb_input_grab_device_key_request_t): cint
# proc xcb_input_grab_device_key_classes_end*(
# R: ptr xcb_input_grab_device_key_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_ungrab_device_key_checked*(c: ptr xcb_connection_t;
# grabWindow: xcb_window_t; modifiers: uint16; modifier_device: uint8;
# key: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_ungrab_device_key*(c: ptr xcb_connection_t; grabWindow: xcb_window_t;
# modifiers: uint16; modifier_device: uint8;
# key: uint8; grabbed_device: uint8): xcb_void_cookie_t
# proc xcb_input_grab_device_button_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_grab_device_button_checked*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t; grabbed_device: uint8; modifier_device: uint8;
# num_classes: uint16; modifiers: uint16; this_device_mode: uint8;
# other_device_mode: uint8; button: uint8; owner_events: uint8;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_grab_device_button*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t;
# grabbed_device: uint8;
# modifier_device: uint8; num_classes: uint16;
# modifiers: uint16; this_device_mode: uint8;
# other_device_mode: uint8; button: uint8;
# owner_events: uint8;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_grab_device_button_classes*(
# R: ptr xcb_input_grab_device_button_request_t): ptr xcb_input_event_class_t
# proc xcb_input_grab_device_button_classes_length*(
# R: ptr xcb_input_grab_device_button_request_t): cint
# proc xcb_input_grab_device_button_classes_end*(
# R: ptr xcb_input_grab_device_button_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_ungrab_device_button_checked*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t; modifiers: uint16; modifier_device: uint8;
# button: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_ungrab_device_button*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t;
# modifiers: uint16; modifier_device: uint8;
# button: uint8; grabbed_device: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_allow_device_events_checked*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t; mode: uint8; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_allow_device_events*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
# mode: uint8; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_focus*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_get_device_focus_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_focus_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_device_focus_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_focus_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_focus_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_focus_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_set_device_focus_checked*(c: ptr xcb_connection_t;
# focus: xcb_window_t;
# time: xcb_timestamp_t; revert_to: uint8;
# device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_set_device_focus*(c: ptr xcb_connection_t; focus: xcb_window_t;
# time: xcb_timestamp_t; revert_to: uint8;
# device_id: uint8): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_kbd_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_kbd_feedback_state_t)
# ##
# proc xcb_input_kbd_feedback_state_next*(i: ptr xcb_input_kbd_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_kbd_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_kbd_feedback_state_end*(i: xcb_input_kbd_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_ptr_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_ptr_feedback_state_t)
# ##
# proc xcb_input_ptr_feedback_state_next*(i: ptr xcb_input_ptr_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_ptr_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_ptr_feedback_state_end*(i: xcb_input_ptr_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_integer_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_integer_feedback_state_t)
# ##
# proc xcb_input_integer_feedback_state_next*(
# i: ptr xcb_input_integer_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_integer_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_integer_feedback_state_end*(
# i: xcb_input_integer_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_string_feedback_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_string_feedback_state_keysyms*(
# R: ptr xcb_input_string_feedback_state_t): ptr xcb_keysym_t
# proc xcb_input_string_feedback_state_keysyms_length*(
# R: ptr xcb_input_string_feedback_state_t): cint
# proc xcb_input_string_feedback_state_keysyms_end*(
# R: ptr xcb_input_string_feedback_state_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_string_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_string_feedback_state_t)
# ##
# proc xcb_input_string_feedback_state_next*(
# i: ptr xcb_input_string_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_string_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_string_feedback_state_end*(
# i: xcb_input_string_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_bell_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_bell_feedback_state_t)
# ##
# proc xcb_input_bell_feedback_state_next*(i: ptr xcb_input_bell_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_bell_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_bell_feedback_state_end*(i: xcb_input_bell_feedback_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_led_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_led_feedback_state_t)
# ##
# proc xcb_input_led_feedback_state_next*(i: ptr xcb_input_led_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_led_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_led_feedback_state_end*(i: xcb_input_led_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_feedback_state_data_string_keysyms*(
# S: ptr xcb_input_feedback_state_data_t): ptr xcb_keysym_t
# proc xcb_input_feedback_state_data_string_keysyms_length*(
# R: ptr xcb_input_feedback_state_t; S: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_string_keysyms_end*(
# R: ptr xcb_input_feedback_state_t; S: ptr xcb_input_feedback_state_data_t): xcb_generic_iterator_t
# proc xcb_input_feedback_state_data_serialize*(_buffer: ptr pointer;
# class_id: uint8; _aux: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_unpack*(_buffer: pointer; class_id: uint8;
# _aux: ptr xcb_input_feedback_state_data_t): cint
# proc xcb_input_feedback_state_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_feedback_state_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_feedback_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_feedback_state_t)
# ##
# proc xcb_input_feedback_state_next*(i: ptr xcb_input_feedback_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_feedback_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_feedback_state_end*(i: xcb_input_feedback_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_feedback_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_feedback_control*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_get_feedback_control_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_feedback_control_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_feedback_control_cookie_t
# proc xcb_input_get_feedback_control_feedbacks_length*(
# R: ptr xcb_input_get_feedback_control_reply_t): cint
# proc xcb_input_get_feedback_control_feedbacks_iterator*(
# R: ptr xcb_input_get_feedback_control_reply_t): xcb_input_feedback_state_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_feedback_control_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_feedback_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_feedback_control_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_feedback_control_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_kbd_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_kbd_feedback_ctl_t)
# ##
# proc xcb_input_kbd_feedback_ctl_next*(i: ptr xcb_input_kbd_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_kbd_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_kbd_feedback_ctl_end*(i: xcb_input_kbd_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_ptr_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_ptr_feedback_ctl_t)
# ##
# proc xcb_input_ptr_feedback_ctl_next*(i: ptr xcb_input_ptr_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_ptr_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_ptr_feedback_ctl_end*(i: xcb_input_ptr_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_integer_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_integer_feedback_ctl_t)
# ##
# proc xcb_input_integer_feedback_ctl_next*(
# i: ptr xcb_input_integer_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_integer_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_integer_feedback_ctl_end*(i: xcb_input_integer_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_string_feedback_ctl_sizeof*(_buffer: pointer): cint
# proc xcb_input_string_feedback_ctl_keysyms*(
# R: ptr xcb_input_string_feedback_ctl_t): ptr xcb_keysym_t
# proc xcb_input_string_feedback_ctl_keysyms_length*(
# R: ptr xcb_input_string_feedback_ctl_t): cint
# proc xcb_input_string_feedback_ctl_keysyms_end*(
# R: ptr xcb_input_string_feedback_ctl_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_string_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_string_feedback_ctl_t)
# ##
# proc xcb_input_string_feedback_ctl_next*(i: ptr xcb_input_string_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_string_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_string_feedback_ctl_end*(i: xcb_input_string_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_bell_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_bell_feedback_ctl_t)
# ##
# proc xcb_input_bell_feedback_ctl_next*(i: ptr xcb_input_bell_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_bell_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_bell_feedback_ctl_end*(i: xcb_input_bell_feedback_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_led_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_led_feedback_ctl_t)
# ##
# proc xcb_input_led_feedback_ctl_next*(i: ptr xcb_input_led_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_led_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_led_feedback_ctl_end*(i: xcb_input_led_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_feedback_ctl_data_string_keysyms*(
# S: ptr xcb_input_feedback_ctl_data_t): ptr xcb_keysym_t
# proc xcb_input_feedback_ctl_data_string_keysyms_length*(
# R: ptr xcb_input_feedback_ctl_t; S: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_string_keysyms_end*(
# R: ptr xcb_input_feedback_ctl_t; S: ptr xcb_input_feedback_ctl_data_t): xcb_generic_iterator_t
# proc xcb_input_feedback_ctl_data_serialize*(_buffer: ptr pointer; class_id: uint8;
# _aux: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_unpack*(_buffer: pointer; class_id: uint8;
# _aux: ptr xcb_input_feedback_ctl_data_t): cint
# proc xcb_input_feedback_ctl_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_feedback_ctl_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_feedback_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_feedback_ctl_t)
# ##
# proc xcb_input_feedback_ctl_next*(i: ptr xcb_input_feedback_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_feedback_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_feedback_ctl_end*(i: xcb_input_feedback_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_change_feedback_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_change_feedback_control_checked*(c: ptr xcb_connection_t;
# mask: uint32; device_id: uint8; feedback_id: uint8;
# feedback: ptr xcb_input_feedback_ctl_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_feedback_control*(c: ptr xcb_connection_t; mask: uint32;
# device_id: uint8; feedback_id: uint8;
# feedback: ptr xcb_input_feedback_ctl_t): xcb_void_cookie_t
# proc xcb_input_change_feedback_control_feedback*(
# R: ptr xcb_input_change_feedback_control_request_t): ptr xcb_input_feedback_ctl_t
# proc xcb_input_get_device_key_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_key_mapping*(c: ptr xcb_connection_t; device_id: uint8;
# first_keycode: xcb_input_key_code_t;
# count: uint8): xcb_input_get_device_key_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_key_mapping_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8; first_keycode: xcb_input_key_code_t; count: uint8): xcb_input_get_device_key_mapping_cookie_t
# proc xcb_input_get_device_key_mapping_keysyms*(
# R: ptr xcb_input_get_device_key_mapping_reply_t): ptr xcb_keysym_t
# proc xcb_input_get_device_key_mapping_keysyms_length*(
# R: ptr xcb_input_get_device_key_mapping_reply_t): cint
# proc xcb_input_get_device_key_mapping_keysyms_end*(
# R: ptr xcb_input_get_device_key_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_key_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_key_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_key_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_key_mapping_reply_t
# proc xcb_input_change_device_key_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_change_device_key_mapping_checked*(c: ptr xcb_connection_t;
# device_id: uint8; first_keycode: xcb_input_key_code_t;
# keysyms_per_keycode: uint8; keycode_count: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_device_key_mapping*(c: ptr xcb_connection_t;
# device_id: uint8; first_keycode: xcb_input_key_code_t;
# keysyms_per_keycode: uint8; keycode_count: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# proc xcb_input_change_device_key_mapping_keysyms*(
# R: ptr xcb_input_change_device_key_mapping_request_t): ptr xcb_keysym_t
# proc xcb_input_change_device_key_mapping_keysyms_length*(
# R: ptr xcb_input_change_device_key_mapping_request_t): cint
# proc xcb_input_change_device_key_mapping_keysyms_end*(
# R: ptr xcb_input_change_device_key_mapping_request_t): xcb_generic_iterator_t
# proc xcb_input_get_device_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_modifier_mapping*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_device_modifier_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_device_modifier_mapping_cookie_t
# proc xcb_input_get_device_modifier_mapping_keymaps*(
# R: ptr xcb_input_get_device_modifier_mapping_reply_t): ptr uint8
# proc xcb_input_get_device_modifier_mapping_keymaps_length*(
# R: ptr xcb_input_get_device_modifier_mapping_reply_t): cint
# proc xcb_input_get_device_modifier_mapping_keymaps_end*(
# R: ptr xcb_input_get_device_modifier_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_modifier_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_modifier_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_modifier_mapping_reply_t
# proc xcb_input_set_device_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_set_device_modifier_mapping*(c: ptr xcb_connection_t;
# device_id: uint8; keycodes_per_modifier: uint8; keymaps: ptr uint8): xcb_input_set_device_modifier_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_set_device_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8; keycodes_per_modifier: uint8; keymaps: ptr uint8): xcb_input_set_device_modifier_mapping_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_set_device_modifier_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_set_device_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_modifier_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_modifier_mapping_reply_t
# proc xcb_input_get_device_button_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_button_mapping*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_device_button_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_button_mapping_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_get_device_button_mapping_cookie_t
# proc xcb_input_get_device_button_mapping_map*(
# R: ptr xcb_input_get_device_button_mapping_reply_t): ptr uint8
# proc xcb_input_get_device_button_mapping_map_length*(
# R: ptr xcb_input_get_device_button_mapping_reply_t): cint
# proc xcb_input_get_device_button_mapping_map_end*(
# R: ptr xcb_input_get_device_button_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_button_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_button_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_button_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_button_mapping_reply_t
# proc xcb_input_set_device_button_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_set_device_button_mapping*(c: ptr xcb_connection_t;
# device_id: uint8; map_size: uint8; map: ptr uint8): xcb_input_set_device_button_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_set_device_button_mapping_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8; map_size: uint8; map: ptr uint8): xcb_input_set_device_button_mapping_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_set_device_button_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_set_device_button_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_button_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_button_mapping_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_key_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_key_state_t)
# ##
# proc xcb_input_key_state_next*(i: ptr xcb_input_key_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_key_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_key_state_end*(i: xcb_input_key_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_button_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_button_state_t)
# ##
# proc xcb_input_button_state_next*(i: ptr xcb_input_button_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_button_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_button_state_end*(i: xcb_input_button_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_valuator_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_valuator_state_valuators*(R: ptr xcb_input_valuator_state_t): ptr int32
# proc xcb_input_valuator_state_valuators_length*(R: ptr xcb_input_valuator_state_t): cint
# proc xcb_input_valuator_state_valuators_end*(R: ptr xcb_input_valuator_state_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_valuator_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_valuator_state_t)
# ##
# proc xcb_input_valuator_state_next*(i: ptr xcb_input_valuator_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_valuator_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_valuator_state_end*(i: xcb_input_valuator_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_input_state_data_valuator_valuators*(
# S: ptr xcb_input_input_state_data_t): ptr int32
# proc xcb_input_input_state_data_valuator_valuators_length*(
# R: ptr xcb_input_input_state_t; S: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_valuator_valuators_end*(
# R: ptr xcb_input_input_state_t; S: ptr xcb_input_input_state_data_t): xcb_generic_iterator_t
# proc xcb_input_input_state_data_serialize*(_buffer: ptr pointer; class_id: uint8;
# _aux: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_unpack*(_buffer: pointer; class_id: uint8;
# _aux: ptr xcb_input_input_state_data_t): cint
# proc xcb_input_input_state_data_sizeof*(_buffer: pointer; class_id: uint8): cint
# proc xcb_input_input_state_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_input_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_input_state_t)
# ##
# proc xcb_input_input_state_next*(i: ptr xcb_input_input_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_input_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_input_state_end*(i: xcb_input_input_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_query_device_state_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_query_device_state*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_query_device_state_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_query_device_state_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_query_device_state_cookie_t
# proc xcb_input_query_device_state_classes_length*(
# R: ptr xcb_input_query_device_state_reply_t): cint
# proc xcb_input_query_device_state_classes_iterator*(
# R: ptr xcb_input_query_device_state_reply_t): xcb_input_input_state_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_query_device_state_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_query_device_state_reply*(c: ptr xcb_connection_t; cookie: xcb_input_query_device_state_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_query_device_state_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_device_bell_checked*(c: ptr xcb_connection_t; device_id: uint8;
# feedback_id: uint8; feedback_class: uint8;
# percent: int8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_device_bell*(c: ptr xcb_connection_t; device_id: uint8;
# feedback_id: uint8; feedback_class: uint8;
# percent: int8): xcb_void_cookie_t
# proc xcb_input_set_device_valuators_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_set_device_valuators*(c: ptr xcb_connection_t; device_id: uint8;
# first_valuator: uint8;
# num_valuators: uint8; valuators: ptr int32): xcb_input_set_device_valuators_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_set_device_valuators_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8; first_valuator: uint8; num_valuators: uint8;
# valuators: ptr int32): xcb_input_set_device_valuators_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_set_device_valuators_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_set_device_valuators_reply*(c: ptr xcb_connection_t; cookie: xcb_input_set_device_valuators_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_set_device_valuators_reply_t
# proc xcb_input_device_resolution_state_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_resolution_state_resolution_values*(
# R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_values_length*(
# R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_values_end*(
# R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# proc xcb_input_device_resolution_state_resolution_min*(
# R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_min_length*(
# R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_min_end*(
# R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# proc xcb_input_device_resolution_state_resolution_max*(
# R: ptr xcb_input_device_resolution_state_t): ptr uint32
# proc xcb_input_device_resolution_state_resolution_max_length*(
# R: ptr xcb_input_device_resolution_state_t): cint
# proc xcb_input_device_resolution_state_resolution_max_end*(
# R: ptr xcb_input_device_resolution_state_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_resolution_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_resolution_state_t)
# ##
# proc xcb_input_device_resolution_state_next*(
# i: ptr xcb_input_device_resolution_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_resolution_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_resolution_state_end*(
# i: xcb_input_device_resolution_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_abs_calib_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_abs_calib_state_t)
# ##
# proc xcb_input_device_abs_calib_state_next*(
# i: ptr xcb_input_device_abs_calib_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_abs_calib_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_abs_calib_state_end*(
# i: xcb_input_device_abs_calib_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_abs_area_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_abs_area_state_t)
# ##
# proc xcb_input_device_abs_area_state_next*(
# i: ptr xcb_input_device_abs_area_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_abs_area_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_abs_area_state_end*(
# i: xcb_input_device_abs_area_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_core_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_core_state_t)
# ##
# proc xcb_input_device_core_state_next*(i: ptr xcb_input_device_core_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_core_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_core_state_end*(i: xcb_input_device_core_state_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_enable_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_enable_state_t)
# ##
# proc xcb_input_device_enable_state_next*(i: ptr xcb_input_device_enable_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_enable_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_enable_state_end*(i: xcb_input_device_enable_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_values*(
# S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_values_length*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_values_end*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_min*(
# S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_min_length*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_min_end*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_resolution_resolution_max*(
# S: ptr xcb_input_device_state_data_t): ptr uint32
# proc xcb_input_device_state_data_resolution_resolution_max_length*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_resolution_resolution_max_end*(
# R: ptr xcb_input_device_state_t; S: ptr xcb_input_device_state_data_t): xcb_generic_iterator_t
# proc xcb_input_device_state_data_serialize*(_buffer: ptr pointer;
# control_id: uint16; _aux: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_unpack*(_buffer: pointer; control_id: uint16;
# _aux: ptr xcb_input_device_state_data_t): cint
# proc xcb_input_device_state_data_sizeof*(_buffer: pointer; control_id: uint16): cint
# proc xcb_input_device_state_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_state_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_state_t)
# ##
# proc xcb_input_device_state_next*(i: ptr xcb_input_device_state_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_state_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_state_end*(i: xcb_input_device_state_iterator_t): xcb_generic_iterator_t
# proc xcb_input_get_device_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_control*(c: ptr xcb_connection_t; control_id: uint16;
# device_id: uint8): xcb_input_get_device_control_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_control_unchecked*(c: ptr xcb_connection_t;
# control_id: uint16; device_id: uint8): xcb_input_get_device_control_cookie_t
# proc xcb_input_get_device_control_control*(
# R: ptr xcb_input_get_device_control_reply_t): ptr xcb_input_device_state_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_control_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_control_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_control_reply_t
# proc xcb_input_device_resolution_ctl_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_resolution_ctl_resolution_values*(
# R: ptr xcb_input_device_resolution_ctl_t): ptr uint32
# proc xcb_input_device_resolution_ctl_resolution_values_length*(
# R: ptr xcb_input_device_resolution_ctl_t): cint
# proc xcb_input_device_resolution_ctl_resolution_values_end*(
# R: ptr xcb_input_device_resolution_ctl_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_resolution_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_resolution_ctl_t)
# ##
# proc xcb_input_device_resolution_ctl_next*(
# i: ptr xcb_input_device_resolution_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_resolution_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_resolution_ctl_end*(
# i: xcb_input_device_resolution_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_abs_calib_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_abs_calib_ctl_t)
# ##
# proc xcb_input_device_abs_calib_ctl_next*(
# i: ptr xcb_input_device_abs_calib_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_abs_calib_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_abs_calib_ctl_end*(i: xcb_input_device_abs_calib_ctl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_abs_area_ctrl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_abs_area_ctrl_t)
# ##
# proc xcb_input_device_abs_area_ctrl_next*(
# i: ptr xcb_input_device_abs_area_ctrl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_abs_area_ctrl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_abs_area_ctrl_end*(i: xcb_input_device_abs_area_ctrl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_core_ctrl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_core_ctrl_t)
# ##
# proc xcb_input_device_core_ctrl_next*(i: ptr xcb_input_device_core_ctrl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_core_ctrl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_core_ctrl_end*(i: xcb_input_device_core_ctrl_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_enable_ctrl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_enable_ctrl_t)
# ##
# proc xcb_input_device_enable_ctrl_next*(i: ptr xcb_input_device_enable_ctrl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_enable_ctrl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_enable_ctrl_end*(i: xcb_input_device_enable_ctrl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_ctl_data_resolution_resolution_values*(
# S: ptr xcb_input_device_ctl_data_t): ptr uint32
# proc xcb_input_device_ctl_data_resolution_resolution_values_length*(
# R: ptr xcb_input_device_ctl_t; S: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_resolution_resolution_values_end*(
# R: ptr xcb_input_device_ctl_t; S: ptr xcb_input_device_ctl_data_t): xcb_generic_iterator_t
# proc xcb_input_device_ctl_data_serialize*(_buffer: ptr pointer;
# control_id: uint16; _aux: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_unpack*(_buffer: pointer; control_id: uint16;
# _aux: ptr xcb_input_device_ctl_data_t): cint
# proc xcb_input_device_ctl_data_sizeof*(_buffer: pointer; control_id: uint16): cint
# proc xcb_input_device_ctl_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_ctl_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_ctl_t)
# ##
# proc xcb_input_device_ctl_next*(i: ptr xcb_input_device_ctl_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_ctl_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_ctl_end*(i: xcb_input_device_ctl_iterator_t): xcb_generic_iterator_t
# proc xcb_input_change_device_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_device_control*(c: ptr xcb_connection_t; control_id: uint16;
# device_id: uint8;
# control: ptr xcb_input_device_ctl_t): xcb_input_change_device_control_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_change_device_control_unchecked*(c: ptr xcb_connection_t;
# control_id: uint16; device_id: uint8; control: ptr xcb_input_device_ctl_t): xcb_input_change_device_control_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_change_device_control_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_change_device_control_reply*(c: ptr xcb_connection_t; cookie: xcb_input_change_device_control_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_change_device_control_reply_t
# proc xcb_input_list_device_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_list_device_properties*(c: ptr xcb_connection_t; device_id: uint8): xcb_input_list_device_properties_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_list_device_properties_unchecked*(c: ptr xcb_connection_t;
# device_id: uint8): xcb_input_list_device_properties_cookie_t
# proc xcb_input_list_device_properties_atoms*(
# R: ptr xcb_input_list_device_properties_reply_t): ptr xcb_atom_t
# proc xcb_input_list_device_properties_atoms_length*(
# R: ptr xcb_input_list_device_properties_reply_t): cint
# proc xcb_input_list_device_properties_atoms_end*(
# R: ptr xcb_input_list_device_properties_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_list_device_properties_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_list_device_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_input_list_device_properties_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_list_device_properties_reply_t
# proc xcb_input_change_device_property_items_data_8*(
# S: ptr xcb_input_change_device_property_items_t): ptr uint8
# proc xcb_input_change_device_property_items_data_8_length*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_8_end*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_data_16*(
# S: ptr xcb_input_change_device_property_items_t): ptr uint16
# proc xcb_input_change_device_property_items_data_16_length*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_16_end*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_data_32*(
# S: ptr xcb_input_change_device_property_items_t): ptr uint32
# proc xcb_input_change_device_property_items_data_32_length*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_data_32_end*(
# R: ptr xcb_input_change_device_property_request_t;
# S: ptr xcb_input_change_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_change_device_property_items_serialize*(_buffer: ptr pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_unpack*(_buffer: pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_change_device_property_items_t): cint
# proc xcb_input_change_device_property_items_sizeof*(_buffer: pointer;
# num_items: uint32; format: uint8): cint
# proc xcb_input_change_device_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_change_device_property_checked*(c: ptr xcb_connection_t;
# property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
# mode: uint8; num_items: uint32; items: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_device_property*(c: ptr xcb_connection_t;
# property: xcb_atom_t; `type`: xcb_atom_t;
# device_id: uint8; format: uint8;
# mode: uint8; num_items: uint32;
# items: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_change_device_property_aux_checked*(c: ptr xcb_connection_t;
# property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
# mode: uint8; num_items: uint32;
# items: ptr xcb_input_change_device_property_items_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_change_device_property_aux*(c: ptr xcb_connection_t;
# property: xcb_atom_t; `type`: xcb_atom_t; device_id: uint8; format: uint8;
# mode: uint8; num_items: uint32;
# items: ptr xcb_input_change_device_property_items_t): xcb_void_cookie_t
# proc xcb_input_change_device_property_items*(
# R: ptr xcb_input_change_device_property_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_delete_device_property_checked*(c: ptr xcb_connection_t;
# property: xcb_atom_t; device_id: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_delete_device_property*(c: ptr xcb_connection_t;
# property: xcb_atom_t; device_id: uint8): xcb_void_cookie_t
# proc xcb_input_get_device_property_items_data_8*(
# S: ptr xcb_input_get_device_property_items_t): ptr uint8
# proc xcb_input_get_device_property_items_data_8_length*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_8_end*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_data_16*(
# S: ptr xcb_input_get_device_property_items_t): ptr uint16
# proc xcb_input_get_device_property_items_data_16_length*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_16_end*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_data_32*(
# S: ptr xcb_input_get_device_property_items_t): ptr uint32
# proc xcb_input_get_device_property_items_data_32_length*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_data_32_end*(
# R: ptr xcb_input_get_device_property_reply_t;
# S: ptr xcb_input_get_device_property_items_t): xcb_generic_iterator_t
# proc xcb_input_get_device_property_items_serialize*(_buffer: ptr pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_unpack*(_buffer: pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_get_device_property_items_t): cint
# proc xcb_input_get_device_property_items_sizeof*(_buffer: pointer;
# num_items: uint32; format: uint8): cint
# proc xcb_input_get_device_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_get_device_property*(c: ptr xcb_connection_t; property: xcb_atom_t;
# `type`: xcb_atom_t; offset: uint32;
# len: uint32; device_id: uint8;
# _delete: uint8): xcb_input_get_device_property_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_get_device_property_unchecked*(c: ptr xcb_connection_t;
# property: xcb_atom_t; `type`: xcb_atom_t; offset: uint32; len: uint32;
# device_id: uint8; _delete: uint8): xcb_input_get_device_property_cookie_t
# proc xcb_input_get_device_property_items*(
# R: ptr xcb_input_get_device_property_reply_t): pointer
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_get_device_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_get_device_property_reply*(c: ptr xcb_connection_t; cookie: xcb_input_get_device_property_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_get_device_property_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_group_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_group_info_t)
# ##
# proc xcb_input_group_info_next*(i: ptr xcb_input_group_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_group_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_group_info_end*(i: xcb_input_group_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_modifier_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_modifier_info_t)
# ##
# proc xcb_input_modifier_info_next*(i: ptr xcb_input_modifier_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_modifier_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_modifier_info_end*(i: xcb_input_modifier_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_query_pointer_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_query_pointer*(c: ptr xcb_connection_t; window: xcb_window_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_query_pointer_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_query_pointer_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; deviceid: xcb_input_device_id_t): xcb_input_xi_query_pointer_cookie_t
# proc xcb_input_xi_query_pointer_buttons*(R: ptr xcb_input_xi_query_pointer_reply_t): ptr uint32
# proc xcb_input_xi_query_pointer_buttons_length*(
# R: ptr xcb_input_xi_query_pointer_reply_t): cint
# proc xcb_input_xi_query_pointer_buttons_end*(
# R: ptr xcb_input_xi_query_pointer_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_query_pointer_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_query_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_pointer_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_pointer_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_warp_pointer_checked*(c: ptr xcb_connection_t;
# src_win: xcb_window_t;
# dst_win: xcb_window_t;
# src_x: xcb_input_fp1616_t;
# src_y: xcb_input_fp1616_t;
# src_width: uint16; src_height: uint16;
# dst_x: xcb_input_fp1616_t;
# dst_y: xcb_input_fp1616_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_warp_pointer*(c: ptr xcb_connection_t; src_win: xcb_window_t;
# dst_win: xcb_window_t; src_x: xcb_input_fp1616_t;
# src_y: xcb_input_fp1616_t; src_width: uint16;
# src_height: uint16; dst_x: xcb_input_fp1616_t;
# dst_y: xcb_input_fp1616_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_change_cursor_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# cursor: xcb_cursor_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_change_cursor*(c: ptr xcb_connection_t; window: xcb_window_t;
# cursor: xcb_cursor_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# proc xcb_input_add_master_sizeof*(_buffer: pointer): cint
# proc xcb_input_add_master_name*(R: ptr xcb_input_add_master_t): cstring
# proc xcb_input_add_master_name_length*(R: ptr xcb_input_add_master_t): cint
# proc xcb_input_add_master_name_end*(R: ptr xcb_input_add_master_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_add_master_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_add_master_t)
# ##
# proc xcb_input_add_master_next*(i: ptr xcb_input_add_master_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_add_master_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_add_master_end*(i: xcb_input_add_master_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_remove_master_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_remove_master_t)
# ##
# proc xcb_input_remove_master_next*(i: ptr xcb_input_remove_master_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_remove_master_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_remove_master_end*(i: xcb_input_remove_master_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_attach_slave_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_attach_slave_t)
# ##
# proc xcb_input_attach_slave_next*(i: ptr xcb_input_attach_slave_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_attach_slave_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_attach_slave_end*(i: xcb_input_attach_slave_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_detach_slave_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_detach_slave_t)
# ##
# proc xcb_input_detach_slave_next*(i: ptr xcb_input_detach_slave_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_detach_slave_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_detach_slave_end*(i: xcb_input_detach_slave_iterator_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_change_data_add_master_name*(
# S: ptr xcb_input_hierarchy_change_data_t): cstring
# proc xcb_input_hierarchy_change_data_add_master_name_length*(
# R: ptr xcb_input_hierarchy_change_t; S: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_add_master_name_end*(
# R: ptr xcb_input_hierarchy_change_t; S: ptr xcb_input_hierarchy_change_data_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_change_data_serialize*(_buffer: ptr pointer;
# `type`: uint16; _aux: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_unpack*(_buffer: pointer; `type`: uint16;
# _aux: ptr xcb_input_hierarchy_change_data_t): cint
# proc xcb_input_hierarchy_change_data_sizeof*(_buffer: pointer; `type`: uint16): cint
# proc xcb_input_hierarchy_change_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_hierarchy_change_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_hierarchy_change_t)
# ##
# proc xcb_input_hierarchy_change_next*(i: ptr xcb_input_hierarchy_change_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_hierarchy_change_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_hierarchy_change_end*(i: xcb_input_hierarchy_change_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_hierarchy_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_change_hierarchy_checked*(c: ptr xcb_connection_t;
# num_changes: uint8; changes: ptr xcb_input_hierarchy_change_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_change_hierarchy*(c: ptr xcb_connection_t; num_changes: uint8;
# changes: ptr xcb_input_hierarchy_change_t): xcb_void_cookie_t
# proc xcb_input_xi_change_hierarchy_changes_length*(
# R: ptr xcb_input_xi_change_hierarchy_request_t): cint
# proc xcb_input_xi_change_hierarchy_changes_iterator*(
# R: ptr xcb_input_xi_change_hierarchy_request_t): xcb_input_hierarchy_change_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_set_client_pointer_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_set_client_pointer*(c: ptr xcb_connection_t; window: xcb_window_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_get_client_pointer*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_input_xi_get_client_pointer_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_get_client_pointer_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_xi_get_client_pointer_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_get_client_pointer_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_get_client_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_client_pointer_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_client_pointer_reply_t
# proc xcb_input_event_mask_sizeof*(_buffer: pointer): cint
# proc xcb_input_event_mask_mask*(R: ptr xcb_input_event_mask_t): ptr uint32
# proc xcb_input_event_mask_mask_length*(R: ptr xcb_input_event_mask_t): cint
# proc xcb_input_event_mask_mask_end*(R: ptr xcb_input_event_mask_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_event_mask_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_event_mask_t)
# ##
# proc xcb_input_event_mask_next*(i: ptr xcb_input_event_mask_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_event_mask_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_event_mask_end*(i: xcb_input_event_mask_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_select_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_select_events_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; num_mask: uint16;
# masks: ptr xcb_input_event_mask_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_select_events*(c: ptr xcb_connection_t; window: xcb_window_t;
# num_mask: uint16;
# masks: ptr xcb_input_event_mask_t): xcb_void_cookie_t
# proc xcb_input_xi_select_events_masks_length*(
# R: ptr xcb_input_xi_select_events_request_t): cint
# proc xcb_input_xi_select_events_masks_iterator*(
# R: ptr xcb_input_xi_select_events_request_t): xcb_input_event_mask_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_query_version*(c: ptr xcb_connection_t; major_version: uint16;
# minor_version: uint16): xcb_input_xi_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_query_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint16; minor_version: uint16): xcb_input_xi_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_version_reply_t
# proc xcb_input_button_class_sizeof*(_buffer: pointer): cint
# proc xcb_input_button_class_state*(R: ptr xcb_input_button_class_t): ptr uint32
# proc xcb_input_button_class_state_length*(R: ptr xcb_input_button_class_t): cint
# proc xcb_input_button_class_state_end*(R: ptr xcb_input_button_class_t): xcb_generic_iterator_t
# proc xcb_input_button_class_labels*(R: ptr xcb_input_button_class_t): ptr xcb_atom_t
# proc xcb_input_button_class_labels_length*(R: ptr xcb_input_button_class_t): cint
# proc xcb_input_button_class_labels_end*(R: ptr xcb_input_button_class_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_button_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_button_class_t)
# ##
# proc xcb_input_button_class_next*(i: ptr xcb_input_button_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_button_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_button_class_end*(i: xcb_input_button_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_key_class_sizeof*(_buffer: pointer): cint
# proc xcb_input_key_class_keys*(R: ptr xcb_input_key_class_t): ptr uint32
# proc xcb_input_key_class_keys_length*(R: ptr xcb_input_key_class_t): cint
# proc xcb_input_key_class_keys_end*(R: ptr xcb_input_key_class_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_key_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_key_class_t)
# ##
# proc xcb_input_key_class_next*(i: ptr xcb_input_key_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_key_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_key_class_end*(i: xcb_input_key_class_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_scroll_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_scroll_class_t)
# ##
# proc xcb_input_scroll_class_next*(i: ptr xcb_input_scroll_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_scroll_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_scroll_class_end*(i: xcb_input_scroll_class_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_touch_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_touch_class_t)
# ##
# proc xcb_input_touch_class_next*(i: ptr xcb_input_touch_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_touch_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_touch_class_end*(i: xcb_input_touch_class_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_valuator_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_valuator_class_t)
# ##
# proc xcb_input_valuator_class_next*(i: ptr xcb_input_valuator_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_valuator_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_valuator_class_end*(i: xcb_input_valuator_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_key_keys*(S: ptr xcb_input_device_class_data_t): ptr uint32
# proc xcb_input_device_class_data_key_keys_length*(
# R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_key_keys_end*(R: ptr xcb_input_device_class_t;
# S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_button_state*(
# S: ptr xcb_input_device_class_data_t): ptr uint32
# proc xcb_input_device_class_data_button_state_length*(
# R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_button_state_end*(
# R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_button_labels*(
# S: ptr xcb_input_device_class_data_t): ptr xcb_atom_t
# proc xcb_input_device_class_data_button_labels_length*(
# R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_button_labels_end*(
# R: ptr xcb_input_device_class_t; S: ptr xcb_input_device_class_data_t): xcb_generic_iterator_t
# proc xcb_input_device_class_data_serialize*(_buffer: ptr pointer; `type`: uint16;
# _aux: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_unpack*(_buffer: pointer; `type`: uint16;
# _aux: ptr xcb_input_device_class_data_t): cint
# proc xcb_input_device_class_data_sizeof*(_buffer: pointer; `type`: uint16): cint
# proc xcb_input_device_class_sizeof*(_buffer: pointer): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_device_class_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_device_class_t)
# ##
# proc xcb_input_device_class_next*(i: ptr xcb_input_device_class_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_device_class_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_device_class_end*(i: xcb_input_device_class_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_device_info_sizeof*(_buffer: pointer): cint
# proc xcb_input_xi_device_info_name*(R: ptr xcb_input_xi_device_info_t): cstring
# proc xcb_input_xi_device_info_name_length*(R: ptr xcb_input_xi_device_info_t): cint
# proc xcb_input_xi_device_info_name_end*(R: ptr xcb_input_xi_device_info_t): xcb_generic_iterator_t
# proc xcb_input_xi_device_info_classes_length*(R: ptr xcb_input_xi_device_info_t): cint
# proc xcb_input_xi_device_info_classes_iterator*(R: ptr xcb_input_xi_device_info_t): xcb_input_device_class_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_xi_device_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_xi_device_info_t)
# ##
# proc xcb_input_xi_device_info_next*(i: ptr xcb_input_xi_device_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_xi_device_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_xi_device_info_end*(i: xcb_input_xi_device_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_query_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_query_device*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_query_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_query_device_unchecked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_query_device_cookie_t
# proc xcb_input_xi_query_device_infos_length*(
# R: ptr xcb_input_xi_query_device_reply_t): cint
# proc xcb_input_xi_query_device_infos_iterator*(
# R: ptr xcb_input_xi_query_device_reply_t): xcb_input_xi_device_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_query_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_query_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_query_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_query_device_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_set_focus_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# time: xcb_timestamp_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_set_focus*(c: ptr xcb_connection_t; window: xcb_window_t;
# time: xcb_timestamp_t; deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_get_focus*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_get_focus_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_get_focus_unchecked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_get_focus_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_get_focus_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_get_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_focus_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_focus_reply_t
# proc xcb_input_xi_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_grab_device*(c: ptr xcb_connection_t; window: xcb_window_t;
# time: xcb_timestamp_t; cursor: xcb_cursor_t;
# deviceid: xcb_input_device_id_t; mode: uint8;
# paired_device_mode: uint8; owner_events: uint8;
# mask_len: uint16; mask: ptr uint32): xcb_input_xi_grab_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_grab_device_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t;
# time: xcb_timestamp_t;
# cursor: xcb_cursor_t;
# deviceid: xcb_input_device_id_t;
# mode: uint8;
# paired_device_mode: uint8;
# owner_events: uint8; mask_len: uint16;
# mask: ptr uint32): xcb_input_xi_grab_device_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_grab_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_grab_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_grab_device_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_ungrab_device_checked*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_ungrab_device*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
# deviceid: xcb_input_device_id_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_allow_events_checked*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t;
# deviceid: xcb_input_device_id_t;
# event_mode: uint8; touchid: uint32;
# grab_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_allow_events*(c: ptr xcb_connection_t; time: xcb_timestamp_t;
# deviceid: xcb_input_device_id_t;
# event_mode: uint8; touchid: uint32;
# grab_window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_grab_modifier_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_grab_modifier_info_t)
# ##
# proc xcb_input_grab_modifier_info_next*(i: ptr xcb_input_grab_modifier_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_grab_modifier_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_grab_modifier_info_end*(i: xcb_input_grab_modifier_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_passive_grab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_passive_grab_device*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t;
# grab_window: xcb_window_t;
# cursor: xcb_cursor_t; detail: uint32;
# deviceid: xcb_input_device_id_t;
# num_modifiers: uint16; mask_len: uint16;
# grab_type: uint8; grab_mode: uint8;
# paired_device_mode: uint8;
# owner_events: uint8; mask: ptr uint32;
# modifiers: ptr uint32): xcb_input_xi_passive_grab_device_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_passive_grab_device_unchecked*(c: ptr xcb_connection_t;
# time: xcb_timestamp_t; grab_window: xcb_window_t; cursor: xcb_cursor_t;
# detail: uint32; deviceid: xcb_input_device_id_t; num_modifiers: uint16;
# mask_len: uint16; grab_type: uint8; grab_mode: uint8;
# paired_device_mode: uint8; owner_events: uint8; mask: ptr uint32;
# modifiers: ptr uint32): xcb_input_xi_passive_grab_device_cookie_t
# proc xcb_input_xi_passive_grab_device_modifiers*(
# R: ptr xcb_input_xi_passive_grab_device_reply_t): ptr xcb_input_grab_modifier_info_t
# proc xcb_input_xi_passive_grab_device_modifiers_length*(
# R: ptr xcb_input_xi_passive_grab_device_reply_t): cint
# proc xcb_input_xi_passive_grab_device_modifiers_iterator*(
# R: ptr xcb_input_xi_passive_grab_device_reply_t): xcb_input_grab_modifier_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_passive_grab_device_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_passive_grab_device_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_passive_grab_device_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_passive_grab_device_reply_t
# proc xcb_input_xi_passive_ungrab_device_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_passive_ungrab_device_checked*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t; detail: uint32; deviceid: xcb_input_device_id_t;
# num_modifiers: uint16; grab_type: uint8; modifiers: ptr uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_passive_ungrab_device*(c: ptr xcb_connection_t;
# grab_window: xcb_window_t;
# detail: uint32;
# deviceid: xcb_input_device_id_t;
# num_modifiers: uint16;
# grab_type: uint8;
# modifiers: ptr uint32): xcb_void_cookie_t
# proc xcb_input_xi_passive_ungrab_device_modifiers*(
# R: ptr xcb_input_xi_passive_ungrab_device_request_t): ptr uint32
# proc xcb_input_xi_passive_ungrab_device_modifiers_length*(
# R: ptr xcb_input_xi_passive_ungrab_device_request_t): cint
# proc xcb_input_xi_passive_ungrab_device_modifiers_end*(
# R: ptr xcb_input_xi_passive_ungrab_device_request_t): xcb_generic_iterator_t
# proc xcb_input_xi_list_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_list_properties*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_list_properties_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_list_properties_unchecked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t): xcb_input_xi_list_properties_cookie_t
# proc xcb_input_xi_list_properties_properties*(
# R: ptr xcb_input_xi_list_properties_reply_t): ptr xcb_atom_t
# proc xcb_input_xi_list_properties_properties_length*(
# R: ptr xcb_input_xi_list_properties_reply_t): cint
# proc xcb_input_xi_list_properties_properties_end*(
# R: ptr xcb_input_xi_list_properties_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_list_properties_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_list_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_list_properties_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_list_properties_reply_t
# proc xcb_input_xi_change_property_items_data_8*(
# S: ptr xcb_input_xi_change_property_items_t): ptr uint8
# proc xcb_input_xi_change_property_items_data_8_length*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_8_end*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_data_16*(
# S: ptr xcb_input_xi_change_property_items_t): ptr uint16
# proc xcb_input_xi_change_property_items_data_16_length*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_16_end*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_data_32*(
# S: ptr xcb_input_xi_change_property_items_t): ptr uint32
# proc xcb_input_xi_change_property_items_data_32_length*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_data_32_end*(
# R: ptr xcb_input_xi_change_property_request_t;
# S: ptr xcb_input_xi_change_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_change_property_items_serialize*(_buffer: ptr pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_unpack*(_buffer: pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_xi_change_property_items_t): cint
# proc xcb_input_xi_change_property_items_sizeof*(_buffer: pointer;
# num_items: uint32; format: uint8): cint
# proc xcb_input_xi_change_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_change_property_checked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; mode: uint8; format: uint8;
# property: xcb_atom_t; `type`: xcb_atom_t; num_items: uint32; items: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_change_property*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; mode: uint8;
# format: uint8; property: xcb_atom_t;
# `type`: xcb_atom_t; num_items: uint32;
# items: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_change_property_aux_checked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; mode: uint8; format: uint8;
# property: xcb_atom_t; `type`: xcb_atom_t; num_items: uint32;
# items: ptr xcb_input_xi_change_property_items_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_change_property_aux*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t;
# mode: uint8; format: uint8;
# property: xcb_atom_t; `type`: xcb_atom_t;
# num_items: uint32; items: ptr xcb_input_xi_change_property_items_t): xcb_void_cookie_t
# proc xcb_input_xi_change_property_items*(R: ptr xcb_input_xi_change_property_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_delete_property_checked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_delete_property*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t;
# property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_input_xi_get_property_items_data_8*(
# S: ptr xcb_input_xi_get_property_items_t): ptr uint8
# proc xcb_input_xi_get_property_items_data_8_length*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_8_end*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_data_16*(
# S: ptr xcb_input_xi_get_property_items_t): ptr uint16
# proc xcb_input_xi_get_property_items_data_16_length*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_16_end*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_data_32*(
# S: ptr xcb_input_xi_get_property_items_t): ptr uint32
# proc xcb_input_xi_get_property_items_data_32_length*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_data_32_end*(
# R: ptr xcb_input_xi_get_property_reply_t;
# S: ptr xcb_input_xi_get_property_items_t): xcb_generic_iterator_t
# proc xcb_input_xi_get_property_items_serialize*(_buffer: ptr pointer;
# num_items: uint32; format: uint8;
# _aux: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_unpack*(_buffer: pointer; num_items: uint32;
# format: uint8; _aux: ptr xcb_input_xi_get_property_items_t): cint
# proc xcb_input_xi_get_property_items_sizeof*(_buffer: pointer; num_items: uint32;
# format: uint8): cint
# proc xcb_input_xi_get_property_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_get_property*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; _delete: uint8;
# property: xcb_atom_t; `type`: xcb_atom_t;
# offset: uint32; len: uint32): xcb_input_xi_get_property_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_get_property_unchecked*(c: ptr xcb_connection_t;
# deviceid: xcb_input_device_id_t; _delete: uint8; property: xcb_atom_t;
# `type`: xcb_atom_t; offset: uint32; len: uint32): xcb_input_xi_get_property_cookie_t
# proc xcb_input_xi_get_property_items*(R: ptr xcb_input_xi_get_property_reply_t): pointer
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_get_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_get_property_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_property_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_property_reply_t
# proc xcb_input_xi_get_selected_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_get_selected_events*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_input_xi_get_selected_events_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_input_xi_get_selected_events_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_input_xi_get_selected_events_cookie_t
# proc xcb_input_xi_get_selected_events_masks_length*(
# R: ptr xcb_input_xi_get_selected_events_reply_t): cint
# proc xcb_input_xi_get_selected_events_masks_iterator*(
# R: ptr xcb_input_xi_get_selected_events_reply_t): xcb_input_event_mask_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_input_xi_get_selected_events_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_input_xi_get_selected_events_reply*(c: ptr xcb_connection_t; cookie: xcb_input_xi_get_selected_events_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_input_xi_get_selected_events_reply_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_barrier_release_pointer_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_barrier_release_pointer_info_t)
# ##
# proc xcb_input_barrier_release_pointer_info_next*(
# i: ptr xcb_input_barrier_release_pointer_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_barrier_release_pointer_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_barrier_release_pointer_info_end*(
# i: xcb_input_barrier_release_pointer_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_xi_barrier_release_pointer_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_xi_barrier_release_pointer_checked*(c: ptr xcb_connection_t;
# num_barriers: uint32; barriers: ptr xcb_input_barrier_release_pointer_info_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_xi_barrier_release_pointer*(c: ptr xcb_connection_t;
# num_barriers: uint32; barriers: ptr xcb_input_barrier_release_pointer_info_t): xcb_void_cookie_t
# proc xcb_input_xi_barrier_release_pointer_barriers*(
# R: ptr xcb_input_xi_barrier_release_pointer_request_t): ptr xcb_input_barrier_release_pointer_info_t
# proc xcb_input_xi_barrier_release_pointer_barriers_length*(
# R: ptr xcb_input_xi_barrier_release_pointer_request_t): cint
# proc xcb_input_xi_barrier_release_pointer_barriers_iterator*(
# R: ptr xcb_input_xi_barrier_release_pointer_request_t): xcb_input_barrier_release_pointer_info_iterator_t
# proc xcb_input_device_changed_sizeof*(_buffer: pointer): cint
# proc xcb_input_device_changed_classes_length*(
# R: ptr xcb_input_device_changed_event_t): cint
# proc xcb_input_device_changed_classes_iterator*(
# R: ptr xcb_input_device_changed_event_t): xcb_input_device_class_iterator_t
# proc xcb_input_key_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_key_press_button_mask*(R: ptr xcb_input_key_press_event_t): ptr uint32
# proc xcb_input_key_press_button_mask_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_button_mask_end*(R: ptr xcb_input_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_key_press_valuator_mask*(R: ptr xcb_input_key_press_event_t): ptr uint32
# proc xcb_input_key_press_valuator_mask_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_valuator_mask_end*(R: ptr xcb_input_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_key_press_axisvalues*(R: ptr xcb_input_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_key_press_axisvalues_length*(R: ptr xcb_input_key_press_event_t): cint
# proc xcb_input_key_press_axisvalues_iterator*(R: ptr xcb_input_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_key_release_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_button_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_button_press_button_mask*(R: ptr xcb_input_button_press_event_t): ptr uint32
# proc xcb_input_button_press_button_mask_length*(
# R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_button_mask_end*(
# R: ptr xcb_input_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_button_press_valuator_mask*(R: ptr xcb_input_button_press_event_t): ptr uint32
# proc xcb_input_button_press_valuator_mask_length*(
# R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_valuator_mask_end*(
# R: ptr xcb_input_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_button_press_axisvalues*(R: ptr xcb_input_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_button_press_axisvalues_length*(
# R: ptr xcb_input_button_press_event_t): cint
# proc xcb_input_button_press_axisvalues_iterator*(
# R: ptr xcb_input_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_button_release_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_motion_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_enter_sizeof*(_buffer: pointer): cint
# proc xcb_input_enter_buttons*(R: ptr xcb_input_enter_event_t): ptr uint32
# proc xcb_input_enter_buttons_length*(R: ptr xcb_input_enter_event_t): cint
# proc xcb_input_enter_buttons_end*(R: ptr xcb_input_enter_event_t): xcb_generic_iterator_t
# proc xcb_input_leave_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_focus_in_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_focus_out_sizeof*(_buffer: pointer): cint
# ## *<
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_hierarchy_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_hierarchy_info_t)
# ##
# proc xcb_input_hierarchy_info_next*(i: ptr xcb_input_hierarchy_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_hierarchy_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_hierarchy_info_end*(i: xcb_input_hierarchy_info_iterator_t): xcb_generic_iterator_t
# proc xcb_input_hierarchy_sizeof*(_buffer: pointer): cint
# proc xcb_input_hierarchy_infos*(R: ptr xcb_input_hierarchy_event_t): ptr xcb_input_hierarchy_info_t
# proc xcb_input_hierarchy_infos_length*(R: ptr xcb_input_hierarchy_event_t): cint
# proc xcb_input_hierarchy_infos_iterator*(R: ptr xcb_input_hierarchy_event_t): xcb_input_hierarchy_info_iterator_t
# proc xcb_input_raw_key_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_key_press_valuator_mask*(
# R: ptr xcb_input_raw_key_press_event_t): ptr uint32
# proc xcb_input_raw_key_press_valuator_mask_length*(
# R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_valuator_mask_end*(
# R: ptr xcb_input_raw_key_press_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_key_press_axisvalues*(R: ptr xcb_input_raw_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_key_press_axisvalues_length*(
# R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_axisvalues_iterator*(
# R: ptr xcb_input_raw_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_key_press_axisvalues_raw*(
# R: ptr xcb_input_raw_key_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_key_press_axisvalues_raw_length*(
# R: ptr xcb_input_raw_key_press_event_t): cint
# proc xcb_input_raw_key_press_axisvalues_raw_iterator*(
# R: ptr xcb_input_raw_key_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_key_release_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_raw_button_press_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_button_press_valuator_mask*(
# R: ptr xcb_input_raw_button_press_event_t): ptr uint32
# proc xcb_input_raw_button_press_valuator_mask_length*(
# R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_valuator_mask_end*(
# R: ptr xcb_input_raw_button_press_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_button_press_axisvalues*(
# R: ptr xcb_input_raw_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_button_press_axisvalues_length*(
# R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_axisvalues_iterator*(
# R: ptr xcb_input_raw_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_button_press_axisvalues_raw*(
# R: ptr xcb_input_raw_button_press_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_button_press_axisvalues_raw_length*(
# R: ptr xcb_input_raw_button_press_event_t): cint
# proc xcb_input_raw_button_press_axisvalues_raw_iterator*(
# R: ptr xcb_input_raw_button_press_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_button_release_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_raw_motion_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_touch_begin_sizeof*(_buffer: pointer): cint
# proc xcb_input_touch_begin_button_mask*(R: ptr xcb_input_touch_begin_event_t): ptr uint32
# proc xcb_input_touch_begin_button_mask_length*(
# R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_button_mask_end*(R: ptr xcb_input_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_touch_begin_valuator_mask*(R: ptr xcb_input_touch_begin_event_t): ptr uint32
# proc xcb_input_touch_begin_valuator_mask_length*(
# R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_valuator_mask_end*(
# R: ptr xcb_input_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_touch_begin_axisvalues*(R: ptr xcb_input_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_touch_begin_axisvalues_length*(
# R: ptr xcb_input_touch_begin_event_t): cint
# proc xcb_input_touch_begin_axisvalues_iterator*(
# R: ptr xcb_input_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_touch_update_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_touch_end_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_raw_touch_begin_sizeof*(_buffer: pointer): cint
# proc xcb_input_raw_touch_begin_valuator_mask*(
# R: ptr xcb_input_raw_touch_begin_event_t): ptr uint32
# proc xcb_input_raw_touch_begin_valuator_mask_length*(
# R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_valuator_mask_end*(
# R: ptr xcb_input_raw_touch_begin_event_t): xcb_generic_iterator_t
# proc xcb_input_raw_touch_begin_axisvalues*(
# R: ptr xcb_input_raw_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_touch_begin_axisvalues_length*(
# R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_axisvalues_iterator*(
# R: ptr xcb_input_raw_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_touch_begin_axisvalues_raw*(
# R: ptr xcb_input_raw_touch_begin_event_t): ptr xcb_input_fp3232_t
# proc xcb_input_raw_touch_begin_axisvalues_raw_length*(
# R: ptr xcb_input_raw_touch_begin_event_t): cint
# proc xcb_input_raw_touch_begin_axisvalues_raw_iterator*(
# R: ptr xcb_input_raw_touch_begin_event_t): xcb_input_fp3232_iterator_t
# proc xcb_input_raw_touch_update_sizeof*(_buffer: pointer): cint
# ## *<
# proc xcb_input_raw_touch_end_sizeof*(_buffer: pointer): cint
# ## *<
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_input_event_for_send_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_input_event_for_send_t)
# ##
# proc xcb_input_event_for_send_next*(i: ptr xcb_input_event_for_send_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_input_event_for_send_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_input_event_for_send_end*(i: xcb_input_event_for_send_iterator_t): xcb_generic_iterator_t
# proc xcb_input_send_extension_event_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_input_send_extension_event_checked*(c: ptr xcb_connection_t;
# destination: xcb_window_t; device_id: uint8; propagate: uint8;
# num_classes: uint16; num_events: uint8;
# events: ptr xcb_input_event_for_send_t; classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_input_send_extension_event*(c: ptr xcb_connection_t;
# destination: xcb_window_t; device_id: uint8;
# propagate: uint8; num_classes: uint16;
# num_events: uint8;
# events: ptr xcb_input_event_for_send_t;
# classes: ptr xcb_input_event_class_t): xcb_void_cookie_t
# proc xcb_input_send_extension_event_events*(
# R: ptr xcb_input_send_extension_event_request_t): ptr xcb_input_event_for_send_t
# proc xcb_input_send_extension_event_events_length*(
# R: ptr xcb_input_send_extension_event_request_t): cint
# proc xcb_input_send_extension_event_events_iterator*(
# R: ptr xcb_input_send_extension_event_request_t): xcb_input_event_for_send_iterator_t
# proc xcb_input_send_extension_event_classes*(
# R: ptr xcb_input_send_extension_event_request_t): ptr xcb_input_event_class_t
# proc xcb_input_send_extension_event_classes_length*(
# R: ptr xcb_input_send_extension_event_request_t): cint
# proc xcb_input_send_extension_event_classes_end*(
# R: ptr xcb_input_send_extension_event_request_t): xcb_generic_iterator_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xkb.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_xkb_API XCB xkb API
# ## @brief xkb XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# type
# xcb_xkb_const_t* = enum
# XCB_XKB_CONST_KEY_NAME_LENGTH = 4, XCB_XKB_CONST_PER_KEY_BIT_ARRAY_SIZE = 32,
# XCB_XKB_CONST_MAX_LEGAL_KEY_CODE = 255
# xcb_xkb_event_type_t* = enum
# XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY = 1, XCB_XKB_EVENT_TYPE_MAP_NOTIFY = 2,
# XCB_XKB_EVENT_TYPE_STATE_NOTIFY = 4, XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY = 8,
# XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY = 16,
# XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY = 32,
# XCB_XKB_EVENT_TYPE_NAMES_NOTIFY = 64,
# XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY = 128,
# XCB_XKB_EVENT_TYPE_BELL_NOTIFY = 256, XCB_XKB_EVENT_TYPE_ACTION_MESSAGE = 512,
# XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY = 1024,
# XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY = 2048
# xcb_xkb_nkn_detail_t* = enum
# XCB_XKB_NKN_DETAIL_KEYCODES = 1, XCB_XKB_NKN_DETAIL_GEOMETRY = 2,
# XCB_XKB_NKN_DETAIL_DEVICE_ID = 4
# xcb_xkb_axn_detail_t* = enum
# XCB_XKB_AXN_DETAIL_SK_PRESS = 1, XCB_XKB_AXN_DETAIL_SK_ACCEPT = 2,
# XCB_XKB_AXN_DETAIL_SK_REJECT = 4, XCB_XKB_AXN_DETAIL_SK_RELEASE = 8,
# XCB_XKB_AXN_DETAIL_BK_ACCEPT = 16, XCB_XKB_AXN_DETAIL_BK_REJECT = 32,
# XCB_XKB_AXN_DETAIL_AXK_WARNING = 64
# xcb_xkb_map_part_t* = enum
# XCB_XKB_MAP_PART_KEY_TYPES = 1, XCB_XKB_MAP_PART_KEY_SYMS = 2,
# XCB_XKB_MAP_PART_MODIFIER_MAP = 4, XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS = 8,
# XCB_XKB_MAP_PART_KEY_ACTIONS = 16, XCB_XKB_MAP_PART_KEY_BEHAVIORS = 32,
# XCB_XKB_MAP_PART_VIRTUAL_MODS = 64, XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP = 128
# xcb_xkb_set_map_flags_t* = enum
# XCB_XKB_SET_MAP_FLAGS_RESIZE_TYPES = 1,
# XCB_XKB_SET_MAP_FLAGS_RECOMPUTE_ACTIONS = 2
# xcb_xkb_state_part_t* = enum
# XCB_XKB_STATE_PART_MODIFIER_STATE = 1, XCB_XKB_STATE_PART_MODIFIER_BASE = 2,
# XCB_XKB_STATE_PART_MODIFIER_LATCH = 4, XCB_XKB_STATE_PART_MODIFIER_LOCK = 8,
# XCB_XKB_STATE_PART_GROUP_STATE = 16, XCB_XKB_STATE_PART_GROUP_BASE = 32,
# XCB_XKB_STATE_PART_GROUP_LATCH = 64, XCB_XKB_STATE_PART_GROUP_LOCK = 128,
# XCB_XKB_STATE_PART_COMPAT_STATE = 256, XCB_XKB_STATE_PART_GRAB_MODS = 512,
# XCB_XKB_STATE_PART_COMPAT_GRAB_MODS = 1024,
# XCB_XKB_STATE_PART_LOOKUP_MODS = 2048,
# XCB_XKB_STATE_PART_COMPAT_LOOKUP_MODS = 4096,
# XCB_XKB_STATE_PART_POINTER_BUTTONS = 8192
# xcb_xkb_bool_ctrl_t* = enum
# XCB_XKB_BOOL_CTRL_REPEAT_KEYS = 1, XCB_XKB_BOOL_CTRL_SLOW_KEYS = 2,
# XCB_XKB_BOOL_CTRL_BOUNCE_KEYS = 4, XCB_XKB_BOOL_CTRL_STICKY_KEYS = 8,
# XCB_XKB_BOOL_CTRL_MOUSE_KEYS = 16, XCB_XKB_BOOL_CTRL_MOUSE_KEYS_ACCEL = 32,
# XCB_XKB_BOOL_CTRL_ACCESS_X_KEYS = 64,
# XCB_XKB_BOOL_CTRL_ACCESS_X_TIMEOUT_MASK = 128,
# XCB_XKB_BOOL_CTRL_ACCESS_X_FEEDBACK_MASK = 256,
# XCB_XKB_BOOL_CTRL_AUDIBLE_BELL_MASK = 512,
# XCB_XKB_BOOL_CTRL_OVERLAY_1_MASK = 1024,
# XCB_XKB_BOOL_CTRL_OVERLAY_2_MASK = 2048,
# XCB_XKB_BOOL_CTRL_IGNORE_GROUP_LOCK_MASK = 4096
# xcb_xkb_control_t* = enum
# XCB_XKB_CONTROL_GROUPS_WRAP = 134217728,
# XCB_XKB_CONTROL_INTERNAL_MODS = 268435456,
# XCB_XKB_CONTROL_IGNORE_LOCK_MODS = 536870912,
# XCB_XKB_CONTROL_PER_KEY_REPEAT = 1073741824,
# XCB_XKB_CONTROL_CONTROLS_ENABLED = 2147483648'i64
# xcb_xkb_ax_option_t* = enum
# XCB_XKB_AX_OPTION_SK_PRESS_FB = 1, XCB_XKB_AX_OPTION_SK_ACCEPT_FB = 2,
# XCB_XKB_AX_OPTION_FEATURE_FB = 4, XCB_XKB_AX_OPTION_SLOW_WARN_FB = 8,
# XCB_XKB_AX_OPTION_INDICATOR_FB = 16, XCB_XKB_AX_OPTION_STICKY_KEYS_FB = 32,
# XCB_XKB_AX_OPTION_TWO_KEYS = 64, XCB_XKB_AX_OPTION_LATCH_TO_LOCK = 128,
# XCB_XKB_AX_OPTION_SK_RELEASE_FB = 256, XCB_XKB_AX_OPTION_SK_REJECT_FB = 512,
# XCB_XKB_AX_OPTION_BK_REJECT_FB = 1024, XCB_XKB_AX_OPTION_DUMB_BELL = 2048
# xcb_xkb_device_spec_t* = uint16
# ## *
# ## @brief xcb_xkb_device_spec_iterator_t
# ##
# type
# xcb_xkb_device_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_device_spec_t
# rem*: cint
# index*: cint
# xcb_xkb_led_class_result_t* = enum
# XCB_XKB_LED_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
# XCB_XKB_LED_CLASS_RESULT_LED_FEEDBACK_CLASS = 4
# xcb_xkb_led_class_t* = enum
# XCB_XKB_LED_CLASS_KBD_FEEDBACK_CLASS = 0,
# XCB_XKB_LED_CLASS_LED_FEEDBACK_CLASS = 4,
# XCB_XKB_LED_CLASS_DFLT_XI_CLASS = 768, XCB_XKB_LED_CLASS_ALL_XI_CLASSES = 1280
# xcb_xkb_led_class_spec_t* = uint16
# ## *
# ## @brief xcb_xkb_led_class_spec_iterator_t
# ##
# type
# xcb_xkb_led_class_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_led_class_spec_t
# rem*: cint
# index*: cint
# xcb_xkb_bell_class_result_t* = enum
# XCB_XKB_BELL_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
# XCB_XKB_BELL_CLASS_RESULT_BELL_FEEDBACK_CLASS = 5
# xcb_xkb_bell_class_t* = enum
# XCB_XKB_BELL_CLASS_KBD_FEEDBACK_CLASS = 0,
# XCB_XKB_BELL_CLASS_BELL_FEEDBACK_CLASS = 5,
# XCB_XKB_BELL_CLASS_DFLT_XI_CLASS = 768
# xcb_xkb_bell_class_spec_t* = uint16
# ## *
# ## @brief xcb_xkb_bell_class_spec_iterator_t
# ##
# type
# xcb_xkb_bell_class_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_bell_class_spec_t
# rem*: cint
# index*: cint
# xcb_xkb_id_t* = enum
# XCB_XKB_ID_USE_CORE_KBD = 256, XCB_XKB_ID_USE_CORE_PTR = 512,
# XCB_XKB_ID_DFLT_XI_CLASS = 768, XCB_XKB_ID_DFLT_XI_ID = 1024,
# XCB_XKB_ID_ALL_XI_CLASS = 1280, XCB_XKB_ID_ALL_XI_ID = 1536,
# XCB_XKB_ID_XI_NONE = 65280
# xcb_xkb_id_spec_t* = uint16
# ## *
# ## @brief xcb_xkb_id_spec_iterator_t
# ##
# type
# xcb_xkb_id_spec_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_id_spec_t
# rem*: cint
# index*: cint
# xcb_xkb_group_t* = enum
# XCB_XKB_GROUP_1 = 0, XCB_XKB_GROUP_2 = 1, XCB_XKB_GROUP_3 = 2, XCB_XKB_GROUP_4 = 3
# xcb_xkb_groups_t* = enum
# XCB_XKB_GROUPS_ANY = 254, XCB_XKB_GROUPS_ALL = 255
# xcb_xkb_set_of_group_t* = enum
# XCB_XKB_SET_OF_GROUP_GROUP_1 = 1, XCB_XKB_SET_OF_GROUP_GROUP_2 = 2,
# XCB_XKB_SET_OF_GROUP_GROUP_3 = 4, XCB_XKB_SET_OF_GROUP_GROUP_4 = 8
# xcb_xkb_set_of_groups_t* = enum
# XCB_XKB_SET_OF_GROUPS_ANY = 128
# xcb_xkb_groups_wrap_t* = enum
# XCB_XKB_GROUPS_WRAP_WRAP_INTO_RANGE = 0,
# XCB_XKB_GROUPS_WRAP_CLAMP_INTO_RANGE = 64,
# XCB_XKB_GROUPS_WRAP_REDIRECT_INTO_RANGE = 128
# xcb_xkb_v_mods_high_t* = enum
# XCB_XKB_V_MODS_HIGH_8 = 1, XCB_XKB_V_MODS_HIGH_9 = 2, XCB_XKB_V_MODS_HIGH_10 = 4,
# XCB_XKB_V_MODS_HIGH_11 = 8, XCB_XKB_V_MODS_HIGH_12 = 16,
# XCB_XKB_V_MODS_HIGH_13 = 32, XCB_XKB_V_MODS_HIGH_14 = 64,
# XCB_XKB_V_MODS_HIGH_15 = 128
# xcb_xkb_v_mods_low_t* = enum
# XCB_XKB_V_MODS_LOW_0 = 1, XCB_XKB_V_MODS_LOW_1 = 2, XCB_XKB_V_MODS_LOW_2 = 4,
# XCB_XKB_V_MODS_LOW_3 = 8, XCB_XKB_V_MODS_LOW_4 = 16, XCB_XKB_V_MODS_LOW_5 = 32,
# XCB_XKB_V_MODS_LOW_6 = 64, XCB_XKB_V_MODS_LOW_7 = 128
# xcb_xkb_v_mod_t* = enum
# XCB_XKB_V_MOD_0 = 1, XCB_XKB_V_MOD_1 = 2, XCB_XKB_V_MOD_2 = 4, XCB_XKB_V_MOD_3 = 8,
# XCB_XKB_V_MOD_4 = 16, XCB_XKB_V_MOD_5 = 32, XCB_XKB_V_MOD_6 = 64,
# XCB_XKB_V_MOD_7 = 128, XCB_XKB_V_MOD_8 = 256, XCB_XKB_V_MOD_9 = 512,
# XCB_XKB_V_MOD_10 = 1024, XCB_XKB_V_MOD_11 = 2048, XCB_XKB_V_MOD_12 = 4096,
# XCB_XKB_V_MOD_13 = 8192, XCB_XKB_V_MOD_14 = 16384, XCB_XKB_V_MOD_15 = 32768
# xcb_xkb_explicit_t* = enum
# XCB_XKB_EXPLICIT_KEY_TYPE_1 = 1, XCB_XKB_EXPLICIT_KEY_TYPE_2 = 2,
# XCB_XKB_EXPLICIT_KEY_TYPE_3 = 4, XCB_XKB_EXPLICIT_KEY_TYPE_4 = 8,
# XCB_XKB_EXPLICIT_INTERPRET = 16, XCB_XKB_EXPLICIT_AUTO_REPEAT = 32,
# XCB_XKB_EXPLICIT_BEHAVIOR = 64, XCB_XKB_EXPLICIT_V_MOD_MAP = 128
# xcb_xkb_sym_interpret_match_t* = enum
# XCB_XKB_SYM_INTERPRET_MATCH_NONE_OF = 0,
# XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF_OR_NONE = 1,
# XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF = 2, XCB_XKB_SYM_INTERPRET_MATCH_ALL_OF = 3,
# XCB_XKB_SYM_INTERPRET_MATCH_EXACTLY = 4
# xcb_xkb_sym_interp_match_t* = enum
# XCB_XKB_SYM_INTERP_MATCH_OP_MASK = 127,
# XCB_XKB_SYM_INTERP_MATCH_LEVEL_ONE_ONLY = 128
# xcb_xkb_im_flag_t* = enum
# XCB_XKB_IM_FLAG_LED_DRIVES_KB = 32, XCB_XKB_IM_FLAG_NO_AUTOMATIC = 64,
# XCB_XKB_IM_FLAG_NO_EXPLICIT = 128
# xcb_xkb_im_mods_which_t* = enum
# XCB_XKB_IM_MODS_WHICH_USE_BASE = 1, XCB_XKB_IM_MODS_WHICH_USE_LATCHED = 2,
# XCB_XKB_IM_MODS_WHICH_USE_LOCKED = 4, XCB_XKB_IM_MODS_WHICH_USE_EFFECTIVE = 8,
# XCB_XKB_IM_MODS_WHICH_USE_COMPAT = 16
# xcb_xkb_im_groups_which_t* = enum
# XCB_XKB_IM_GROUPS_WHICH_USE_BASE = 1, XCB_XKB_IM_GROUPS_WHICH_USE_LATCHED = 2,
# XCB_XKB_IM_GROUPS_WHICH_USE_LOCKED = 4,
# XCB_XKB_IM_GROUPS_WHICH_USE_EFFECTIVE = 8,
# XCB_XKB_IM_GROUPS_WHICH_USE_COMPAT = 16
# ## *
# ## @brief xcb_xkb_indicator_map_t
# ##
# type
# xcb_xkb_indicator_map_t* {.bycopy.} = object
# flags*: uint8
# whichGroups*: uint8
# groups*: uint8
# whichMods*: uint8
# mods*: uint8
# realMods*: uint8
# vmods*: uint16
# ctrls*: uint32
# ## *
# ## @brief xcb_xkb_indicator_map_iterator_t
# ##
# type
# xcb_xkb_indicator_map_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_indicator_map_t
# rem*: cint
# index*: cint
# xcb_xkb_cm_detail_t* = enum
# XCB_XKB_CM_DETAIL_SYM_INTERP = 1, XCB_XKB_CM_DETAIL_GROUP_COMPAT = 2
# xcb_xkb_name_detail_t* = enum
# XCB_XKB_NAME_DETAIL_KEYCODES = 1, XCB_XKB_NAME_DETAIL_GEOMETRY = 2,
# XCB_XKB_NAME_DETAIL_SYMBOLS = 4, XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS = 8,
# XCB_XKB_NAME_DETAIL_TYPES = 16, XCB_XKB_NAME_DETAIL_COMPAT = 32,
# XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES = 64,
# XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES = 128,
# XCB_XKB_NAME_DETAIL_INDICATOR_NAMES = 256, XCB_XKB_NAME_DETAIL_KEY_NAMES = 512,
# XCB_XKB_NAME_DETAIL_KEY_ALIASES = 1024,
# XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES = 2048,
# XCB_XKB_NAME_DETAIL_GROUP_NAMES = 4096, XCB_XKB_NAME_DETAIL_RG_NAMES = 8192
# xcb_xkb_gbn_detail_t* = enum
# XCB_XKB_GBN_DETAIL_TYPES = 1, XCB_XKB_GBN_DETAIL_COMPAT_MAP = 2,
# XCB_XKB_GBN_DETAIL_CLIENT_SYMBOLS = 4, XCB_XKB_GBN_DETAIL_SERVER_SYMBOLS = 8,
# XCB_XKB_GBN_DETAIL_INDICATOR_MAPS = 16, XCB_XKB_GBN_DETAIL_KEY_NAMES = 32,
# XCB_XKB_GBN_DETAIL_GEOMETRY = 64, XCB_XKB_GBN_DETAIL_OTHER_NAMES = 128
# xcb_xkb_xi_feature_t* = enum
# XCB_XKB_XI_FEATURE_KEYBOARDS = 1, XCB_XKB_XI_FEATURE_BUTTON_ACTIONS = 2,
# XCB_XKB_XI_FEATURE_INDICATOR_NAMES = 4, XCB_XKB_XI_FEATURE_INDICATOR_MAPS = 8,
# XCB_XKB_XI_FEATURE_INDICATOR_STATE = 16
# xcb_xkb_per_client_flag_t* = enum
# XCB_XKB_PER_CLIENT_FLAG_DETECTABLE_AUTO_REPEAT = 1,
# XCB_XKB_PER_CLIENT_FLAG_GRABS_USE_XKB_STATE = 2,
# XCB_XKB_PER_CLIENT_FLAG_AUTO_RESET_CONTROLS = 4,
# XCB_XKB_PER_CLIENT_FLAG_LOOKUP_STATE_WHEN_GRABBED = 8,
# XCB_XKB_PER_CLIENT_FLAG_SEND_EVENT_USES_XKB_STATE = 16
# ## *
# ## @brief xcb_xkb_mod_def_t
# ##
# type
# xcb_xkb_mod_def_t* {.bycopy.} = object
# mask*: uint8
# realMods*: uint8
# vmods*: uint16
# ## *
# ## @brief xcb_xkb_mod_def_iterator_t
# ##
# type
# xcb_xkb_mod_def_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_mod_def_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_name_t
# ##
# type
# xcb_xkb_key_name_t* {.bycopy.} = object
# name*: array[4, char]
# ## *
# ## @brief xcb_xkb_key_name_iterator_t
# ##
# type
# xcb_xkb_key_name_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_name_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_alias_t
# ##
# type
# xcb_xkb_key_alias_t* {.bycopy.} = object
# real*: array[4, char]
# alias*: array[4, char]
# ## *
# ## @brief xcb_xkb_key_alias_iterator_t
# ##
# type
# xcb_xkb_key_alias_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_alias_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_counted_string_16_t
# ##
# type
# xcb_xkb_counted_string_16_t* {.bycopy.} = object
# length*: uint16
# ## *
# ## @brief xcb_xkb_counted_string_16_iterator_t
# ##
# type
# xcb_xkb_counted_string_16_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_counted_string_16_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_kt_map_entry_t
# ##
# type
# xcb_xkb_kt_map_entry_t* {.bycopy.} = object
# active*: uint8
# mods_mask*: uint8
# level*: uint8
# mods_mods*: uint8
# mods_vmods*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_kt_map_entry_iterator_t
# ##
# type
# xcb_xkb_kt_map_entry_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_kt_map_entry_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_type_t
# ##
# type
# xcb_xkb_key_type_t* {.bycopy.} = object
# mods_mask*: uint8
# mods_mods*: uint8
# mods_vmods*: uint16
# numLevels*: uint8
# nMapEntries*: uint8
# hasPreserve*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_key_type_iterator_t
# ##
# type
# xcb_xkb_key_type_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_type_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_sym_map_t
# ##
# type
# xcb_xkb_key_sym_map_t* {.bycopy.} = object
# kt_index*: array[4, uint8]
# groupInfo*: uint8
# width*: uint8
# nSyms*: uint16
# ## *
# ## @brief xcb_xkb_key_sym_map_iterator_t
# ##
# type
# xcb_xkb_key_sym_map_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_sym_map_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_common_behavior_t
# ##
# type
# xcb_xkb_common_behavior_t* {.bycopy.} = object
# `type`*: uint8
# data*: uint8
# ## *
# ## @brief xcb_xkb_common_behavior_iterator_t
# ##
# type
# xcb_xkb_common_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_common_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_default_behavior_t
# ##
# type
# xcb_xkb_default_behavior_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_default_behavior_iterator_t
# ##
# type
# xcb_xkb_default_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_default_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_lock_behavior_t
# ##
# type
# xcb_xkb_lock_behavior_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_lock_behavior_iterator_t
# ##
# type
# xcb_xkb_lock_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_lock_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_radio_group_behavior_t
# ##
# type
# xcb_xkb_radio_group_behavior_t* {.bycopy.} = object
# `type`*: uint8
# group*: uint8
# ## *
# ## @brief xcb_xkb_radio_group_behavior_iterator_t
# ##
# type
# xcb_xkb_radio_group_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_radio_group_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_overlay_behavior_t
# ##
# type
# xcb_xkb_overlay_behavior_t* {.bycopy.} = object
# `type`*: uint8
# key*: xcb_keycode_t
# ## *
# ## @brief xcb_xkb_overlay_behavior_iterator_t
# ##
# type
# xcb_xkb_overlay_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_overlay_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_permament_lock_behavior_t
# ##
# type
# xcb_xkb_permament_lock_behavior_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_permament_lock_behavior_iterator_t
# ##
# type
# xcb_xkb_permament_lock_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_permament_lock_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_permament_radio_group_behavior_t
# ##
# type
# xcb_xkb_permament_radio_group_behavior_t* {.bycopy.} = object
# `type`*: uint8
# group*: uint8
# ## *
# ## @brief xcb_xkb_permament_radio_group_behavior_iterator_t
# ##
# type
# xcb_xkb_permament_radio_group_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_permament_radio_group_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_permament_overlay_behavior_t
# ##
# type
# xcb_xkb_permament_overlay_behavior_t* {.bycopy.} = object
# `type`*: uint8
# key*: xcb_keycode_t
# ## *
# ## @brief xcb_xkb_permament_overlay_behavior_iterator_t
# ##
# type
# xcb_xkb_permament_overlay_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_permament_overlay_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_behavior_t
# ##
# type
# xcb_xkb_behavior_t* {.bycopy.} = object {.union.}
# common*: xcb_xkb_common_behavior_t
# _default*: xcb_xkb_default_behavior_t
# lock*: xcb_xkb_lock_behavior_t
# radioGroup*: xcb_xkb_radio_group_behavior_t
# overlay1*: xcb_xkb_overlay_behavior_t
# overlay2*: xcb_xkb_overlay_behavior_t
# permamentLock*: xcb_xkb_permament_lock_behavior_t
# permamentRadioGroup*: xcb_xkb_permament_radio_group_behavior_t
# permamentOverlay1*: xcb_xkb_permament_overlay_behavior_t
# permamentOverlay2*: xcb_xkb_permament_overlay_behavior_t
# `type`*: uint8
# ## *
# ## @brief xcb_xkb_behavior_iterator_t
# ##
# type
# xcb_xkb_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_behavior_t
# rem*: cint
# index*: cint
# xcb_xkb_behavior_type_t* = enum
# XCB_XKB_BEHAVIOR_TYPE_DEFAULT = 0, XCB_XKB_BEHAVIOR_TYPE_LOCK = 1,
# XCB_XKB_BEHAVIOR_TYPE_RADIO_GROUP = 2, XCB_XKB_BEHAVIOR_TYPE_OVERLAY_1 = 3,
# XCB_XKB_BEHAVIOR_TYPE_OVERLAY_2 = 4,
# XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_LOCK = 129,
# XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_RADIO_GROUP = 130,
# XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_1 = 131,
# XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_2 = 132
# ## *
# ## @brief xcb_xkb_set_behavior_t
# ##
# type
# xcb_xkb_set_behavior_t* {.bycopy.} = object
# keycode*: xcb_keycode_t
# behavior*: xcb_xkb_behavior_t
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_set_behavior_iterator_t
# ##
# type
# xcb_xkb_set_behavior_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_set_behavior_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_set_explicit_t
# ##
# type
# xcb_xkb_set_explicit_t* {.bycopy.} = object
# keycode*: xcb_keycode_t
# explicit*: uint8
# ## *
# ## @brief xcb_xkb_set_explicit_iterator_t
# ##
# type
# xcb_xkb_set_explicit_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_set_explicit_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_mod_map_t
# ##
# type
# xcb_xkb_key_mod_map_t* {.bycopy.} = object
# keycode*: xcb_keycode_t
# mods*: uint8
# ## *
# ## @brief xcb_xkb_key_mod_map_iterator_t
# ##
# type
# xcb_xkb_key_mod_map_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_mod_map_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_v_mod_map_t
# ##
# type
# xcb_xkb_key_v_mod_map_t* {.bycopy.} = object
# keycode*: xcb_keycode_t
# pad0*: uint8
# vmods*: uint16
# ## *
# ## @brief xcb_xkb_key_v_mod_map_iterator_t
# ##
# type
# xcb_xkb_key_v_mod_map_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_v_mod_map_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_kt_set_map_entry_t
# ##
# type
# xcb_xkb_kt_set_map_entry_t* {.bycopy.} = object
# level*: uint8
# realMods*: uint8
# virtualMods*: uint16
# ## *
# ## @brief xcb_xkb_kt_set_map_entry_iterator_t
# ##
# type
# xcb_xkb_kt_set_map_entry_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_kt_set_map_entry_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_set_key_type_t
# ##
# type
# xcb_xkb_set_key_type_t* {.bycopy.} = object
# mask*: uint8
# realMods*: uint8
# virtualMods*: uint16
# numLevels*: uint8
# nMapEntries*: uint8
# preserve*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_set_key_type_iterator_t
# ##
# type
# xcb_xkb_set_key_type_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_set_key_type_t
# rem*: cint
# index*: cint
# xcb_xkb_string8_t* = char
# ## *
# ## @brief xcb_xkb_string8_iterator_t
# ##
# type
# xcb_xkb_string8_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_string8_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_outline_t
# ##
# type
# xcb_xkb_outline_t* {.bycopy.} = object
# nPoints*: uint8
# cornerRadius*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_outline_iterator_t
# ##
# type
# xcb_xkb_outline_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_outline_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_shape_t
# ##
# type
# xcb_xkb_shape_t* {.bycopy.} = object
# name*: xcb_atom_t
# nOutlines*: uint8
# primaryNdx*: uint8
# approxNdx*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_shape_iterator_t
# ##
# type
# xcb_xkb_shape_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_shape_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_key_t
# ##
# type
# xcb_xkb_key_t* {.bycopy.} = object
# name*: array[4, xcb_xkb_string8_t]
# gap*: int16
# shapeNdx*: uint8
# colorNdx*: uint8
# ## *
# ## @brief xcb_xkb_key_iterator_t
# ##
# type
# xcb_xkb_key_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_key_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_overlay_key_t
# ##
# type
# xcb_xkb_overlay_key_t* {.bycopy.} = object
# over*: array[4, xcb_xkb_string8_t]
# under*: array[4, xcb_xkb_string8_t]
# ## *
# ## @brief xcb_xkb_overlay_key_iterator_t
# ##
# type
# xcb_xkb_overlay_key_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_overlay_key_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_overlay_row_t
# ##
# type
# xcb_xkb_overlay_row_t* {.bycopy.} = object
# rowUnder*: uint8
# nKeys*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_overlay_row_iterator_t
# ##
# type
# xcb_xkb_overlay_row_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_overlay_row_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_overlay_t
# ##
# type
# xcb_xkb_overlay_t* {.bycopy.} = object
# name*: xcb_atom_t
# nRows*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_xkb_overlay_iterator_t
# ##
# type
# xcb_xkb_overlay_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_overlay_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_row_t
# ##
# type
# xcb_xkb_row_t* {.bycopy.} = object
# top*: int16
# left*: int16
# nKeys*: uint8
# vertical*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_row_iterator_t
# ##
# type
# xcb_xkb_row_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_row_t
# rem*: cint
# index*: cint
# xcb_xkb_doodad_type_t* = enum
# XCB_XKB_DOODAD_TYPE_OUTLINE = 1, XCB_XKB_DOODAD_TYPE_SOLID = 2,
# XCB_XKB_DOODAD_TYPE_TEXT = 3, XCB_XKB_DOODAD_TYPE_INDICATOR = 4,
# XCB_XKB_DOODAD_TYPE_LOGO = 5
# ## *
# ## @brief xcb_xkb_listing_t
# ##
# type
# xcb_xkb_listing_t* {.bycopy.} = object
# flags*: uint16
# length*: uint16
# ## *
# ## @brief xcb_xkb_listing_iterator_t
# ##
# type
# xcb_xkb_listing_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_listing_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_device_led_info_t
# ##
# type
# xcb_xkb_device_led_info_t* {.bycopy.} = object
# ledClass*: xcb_xkb_led_class_spec_t
# ledID*: xcb_xkb_id_spec_t
# namesPresent*: uint32
# mapsPresent*: uint32
# physIndicators*: uint32
# state*: uint32
# ## *
# ## @brief xcb_xkb_device_led_info_iterator_t
# ##
# type
# xcb_xkb_device_led_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_device_led_info_t
# rem*: cint
# index*: cint
# xcb_xkb_error_t* = enum
# XCB_XKB_ERROR_BAD_ID = 253, XCB_XKB_ERROR_BAD_CLASS = 254,
# XCB_XKB_ERROR_BAD_DEVICE = 255
# ## * Opcode for xcb_xkb_keyboard.
# const
# XCB_XKB_KEYBOARD* = 0
# ## *
# ## @brief xcb_xkb_keyboard_error_t
# ##
# type
# xcb_xkb_keyboard_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# value*: uint32
# minorOpcode*: uint16
# majorOpcode*: uint8
# pad0*: array[21, uint8]
# xcb_xkb_sa_t* = enum
# XCB_XKB_SA_CLEAR_LOCKS = 1, XCB_XKB_SA_LATCH_TO_LOCK = 2,
# XCB_XKB_SA_USE_MOD_MAP_MODS = 4
# xcb_xkb_sa_type_t* = enum
# XCB_XKB_SA_TYPE_NO_ACTION = 0, XCB_XKB_SA_TYPE_SET_MODS = 1,
# XCB_XKB_SA_TYPE_LATCH_MODS = 2, XCB_XKB_SA_TYPE_LOCK_MODS = 3,
# XCB_XKB_SA_TYPE_SET_GROUP = 4, XCB_XKB_SA_TYPE_LATCH_GROUP = 5,
# XCB_XKB_SA_TYPE_LOCK_GROUP = 6, XCB_XKB_SA_TYPE_MOVE_PTR = 7,
# XCB_XKB_SA_TYPE_PTR_BTN = 8, XCB_XKB_SA_TYPE_LOCK_PTR_BTN = 9,
# XCB_XKB_SA_TYPE_SET_PTR_DFLT = 10, XCB_XKB_SA_TYPE_ISO_LOCK = 11,
# XCB_XKB_SA_TYPE_TERMINATE = 12, XCB_XKB_SA_TYPE_SWITCH_SCREEN = 13,
# XCB_XKB_SA_TYPE_SET_CONTROLS = 14, XCB_XKB_SA_TYPE_LOCK_CONTROLS = 15,
# XCB_XKB_SA_TYPE_ACTION_MESSAGE = 16, XCB_XKB_SA_TYPE_REDIRECT_KEY = 17,
# XCB_XKB_SA_TYPE_DEVICE_BTN = 18, XCB_XKB_SA_TYPE_LOCK_DEVICE_BTN = 19,
# XCB_XKB_SA_TYPE_DEVICE_VALUATOR = 20
# const
# XCB_XKB_SA_GROUP_ABSOLUTE = XCB_XKB_SA_USE_MOD_MAP_MODS
# ## *
# ## @brief xcb_xkb_sa_no_action_t
# ##
# type
# xcb_xkb_sa_no_action_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: array[7, uint8]
# ## *
# ## @brief xcb_xkb_sa_no_action_iterator_t
# ##
# type
# xcb_xkb_sa_no_action_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_no_action_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_set_mods_t
# ##
# type
# xcb_xkb_sa_set_mods_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# mask*: uint8
# realMods*: uint8
# vmodsHigh*: uint8
# vmodsLow*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_set_mods_iterator_t
# ##
# type
# xcb_xkb_sa_set_mods_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_set_mods_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_latch_mods_t
# ##
# type
# xcb_xkb_sa_latch_mods_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# mask*: uint8
# realMods*: uint8
# vmodsHigh*: uint8
# vmodsLow*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_latch_mods_iterator_t
# ##
# type
# xcb_xkb_sa_latch_mods_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_latch_mods_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_lock_mods_t
# ##
# type
# xcb_xkb_sa_lock_mods_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# mask*: uint8
# realMods*: uint8
# vmodsHigh*: uint8
# vmodsLow*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_lock_mods_iterator_t
# ##
# type
# xcb_xkb_sa_lock_mods_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_lock_mods_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_set_group_t
# ##
# type
# xcb_xkb_sa_set_group_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# group*: int8
# pad0*: array[5, uint8]
# ## *
# ## @brief xcb_xkb_sa_set_group_iterator_t
# ##
# type
# xcb_xkb_sa_set_group_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_set_group_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_latch_group_t
# ##
# type
# xcb_xkb_sa_latch_group_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# group*: int8
# pad0*: array[5, uint8]
# ## *
# ## @brief xcb_xkb_sa_latch_group_iterator_t
# ##
# type
# xcb_xkb_sa_latch_group_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_latch_group_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_lock_group_t
# ##
# type
# xcb_xkb_sa_lock_group_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# group*: int8
# pad0*: array[5, uint8]
# ## *
# ## @brief xcb_xkb_sa_lock_group_iterator_t
# ##
# type
# xcb_xkb_sa_lock_group_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_lock_group_t
# rem*: cint
# index*: cint
# xcb_xkb_sa_move_ptr_flag_t* = enum
# XCB_XKB_SA_MOVE_PTR_FLAG_NO_ACCELERATION = 1,
# XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_X = 2,
# XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_Y = 4
# ## *
# ## @brief xcb_xkb_sa_move_ptr_t
# ##
# type
# xcb_xkb_sa_move_ptr_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# xHigh*: int8
# xLow*: uint8
# yHigh*: int8
# yLow*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_move_ptr_iterator_t
# ##
# type
# xcb_xkb_sa_move_ptr_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_move_ptr_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_ptr_btn_t
# ##
# type
# xcb_xkb_sa_ptr_btn_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# count*: uint8
# button*: uint8
# pad0*: array[4, uint8]
# ## *
# ## @brief xcb_xkb_sa_ptr_btn_iterator_t
# ##
# type
# xcb_xkb_sa_ptr_btn_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_ptr_btn_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_lock_ptr_btn_t
# ##
# type
# xcb_xkb_sa_lock_ptr_btn_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# pad0*: uint8
# button*: uint8
# pad1*: array[4, uint8]
# ## *
# ## @brief xcb_xkb_sa_lock_ptr_btn_iterator_t
# ##
# type
# xcb_xkb_sa_lock_ptr_btn_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_lock_ptr_btn_t
# rem*: cint
# index*: cint
# xcb_xkb_sa_set_ptr_dflt_flag_t* = enum
# XCB_XKB_SA_SET_PTR_DFLT_FLAG_AFFECT_DFLT_BUTTON = 1,
# XCB_XKB_SA_SET_PTR_DFLT_FLAG_DFLT_BTN_ABSOLUTE = 4
# ## *
# ## @brief xcb_xkb_sa_set_ptr_dflt_t
# ##
# type
# xcb_xkb_sa_set_ptr_dflt_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# affect*: uint8
# value*: int8
# pad0*: array[4, uint8]
# ## *
# ## @brief xcb_xkb_sa_set_ptr_dflt_iterator_t
# ##
# type
# xcb_xkb_sa_set_ptr_dflt_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_set_ptr_dflt_t
# rem*: cint
# index*: cint
# xcb_xkb_sa_iso_lock_flag_t* = enum
# XCB_XKB_SA_ISO_LOCK_FLAG_NO_LOCK = 1, XCB_XKB_SA_ISO_LOCK_FLAG_NO_UNLOCK = 2,
# XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS = 4,
# XCB_XKB_SA_ISO_LOCK_FLAG_ISO_DFLT_IS_GROUP = 8
# xcb_xkb_sa_iso_lock_no_affect_t* = enum
# XCB_XKB_SA_ISO_LOCK_NO_AFFECT_CTRLS = 8,
# XCB_XKB_SA_ISO_LOCK_NO_AFFECT_PTR = 16,
# XCB_XKB_SA_ISO_LOCK_NO_AFFECT_GROUP = 32,
# XCB_XKB_SA_ISO_LOCK_NO_AFFECT_MODS = 64
# const
# XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE = XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS
# ## *
# ## @brief xcb_xkb_sa_iso_lock_t
# ##
# type
# xcb_xkb_sa_iso_lock_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# mask*: uint8
# realMods*: uint8
# group*: int8
# affect*: uint8
# vmodsHigh*: uint8
# vmodsLow*: uint8
# ## *
# ## @brief xcb_xkb_sa_iso_lock_iterator_t
# ##
# type
# xcb_xkb_sa_iso_lock_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_iso_lock_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_terminate_t
# ##
# type
# xcb_xkb_sa_terminate_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: array[7, uint8]
# ## *
# ## @brief xcb_xkb_sa_terminate_iterator_t
# ##
# type
# xcb_xkb_sa_terminate_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_terminate_t
# rem*: cint
# index*: cint
# xcb_xkb_switch_screen_flag_t* = enum
# XCB_XKB_SWITCH_SCREEN_FLAG_APPLICATION = 1,
# XCB_XKB_SWITCH_SCREEN_FLAG_ABSOLUTE = 4
# ## *
# ## @brief xcb_xkb_sa_switch_screen_t
# ##
# type
# xcb_xkb_sa_switch_screen_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# newScreen*: int8
# pad0*: array[5, uint8]
# ## *
# ## @brief xcb_xkb_sa_switch_screen_iterator_t
# ##
# type
# xcb_xkb_sa_switch_screen_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_switch_screen_t
# rem*: cint
# index*: cint
# xcb_xkb_bool_ctrls_high_t* = enum
# XCB_XKB_BOOL_CTRLS_HIGH_ACCESS_X_FEEDBACK = 1,
# XCB_XKB_BOOL_CTRLS_HIGH_AUDIBLE_BELL = 2,
# XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_1 = 4, XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_2 = 8,
# XCB_XKB_BOOL_CTRLS_HIGH_IGNORE_GROUP_LOCK = 16
# xcb_xkb_bool_ctrls_low_t* = enum
# XCB_XKB_BOOL_CTRLS_LOW_REPEAT_KEYS = 1, XCB_XKB_BOOL_CTRLS_LOW_SLOW_KEYS = 2,
# XCB_XKB_BOOL_CTRLS_LOW_BOUNCE_KEYS = 4, XCB_XKB_BOOL_CTRLS_LOW_STICKY_KEYS = 8,
# XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS = 16,
# XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS_ACCEL = 32,
# XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_KEYS = 64,
# XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_TIMEOUT = 128
# ## *
# ## @brief xcb_xkb_sa_set_controls_t
# ##
# type
# xcb_xkb_sa_set_controls_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: array[3, uint8]
# boolCtrlsHigh*: uint8
# boolCtrlsLow*: uint8
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_set_controls_iterator_t
# ##
# type
# xcb_xkb_sa_set_controls_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_set_controls_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_lock_controls_t
# ##
# type
# xcb_xkb_sa_lock_controls_t* {.bycopy.} = object
# `type`*: uint8
# pad0*: array[3, uint8]
# boolCtrlsHigh*: uint8
# boolCtrlsLow*: uint8
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_sa_lock_controls_iterator_t
# ##
# type
# xcb_xkb_sa_lock_controls_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_lock_controls_t
# rem*: cint
# index*: cint
# xcb_xkb_action_message_flag_t* = enum
# XCB_XKB_ACTION_MESSAGE_FLAG_ON_PRESS = 1,
# XCB_XKB_ACTION_MESSAGE_FLAG_ON_RELEASE = 2,
# XCB_XKB_ACTION_MESSAGE_FLAG_GEN_KEY_EVENT = 4
# ## *
# ## @brief xcb_xkb_sa_action_message_t
# ##
# type
# xcb_xkb_sa_action_message_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# message*: array[6, uint8]
# ## *
# ## @brief xcb_xkb_sa_action_message_iterator_t
# ##
# type
# xcb_xkb_sa_action_message_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_action_message_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_redirect_key_t
# ##
# type
# xcb_xkb_sa_redirect_key_t* {.bycopy.} = object
# `type`*: uint8
# newkey*: xcb_keycode_t
# mask*: uint8
# realModifiers*: uint8
# vmodsMaskHigh*: uint8
# vmodsMaskLow*: uint8
# vmodsHigh*: uint8
# vmodsLow*: uint8
# ## *
# ## @brief xcb_xkb_sa_redirect_key_iterator_t
# ##
# type
# xcb_xkb_sa_redirect_key_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_redirect_key_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sa_device_btn_t
# ##
# type
# xcb_xkb_sa_device_btn_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# count*: uint8
# button*: uint8
# device*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_xkb_sa_device_btn_iterator_t
# ##
# type
# xcb_xkb_sa_device_btn_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_device_btn_t
# rem*: cint
# index*: cint
# xcb_xkb_lock_device_flags_t* = enum
# XCB_XKB_LOCK_DEVICE_FLAGS_NO_LOCK = 1, XCB_XKB_LOCK_DEVICE_FLAGS_NO_UNLOCK = 2
# ## *
# ## @brief xcb_xkb_sa_lock_device_btn_t
# ##
# type
# xcb_xkb_sa_lock_device_btn_t* {.bycopy.} = object
# `type`*: uint8
# flags*: uint8
# pad0*: uint8
# button*: uint8
# device*: uint8
# pad1*: array[3, uint8]
# ## *
# ## @brief xcb_xkb_sa_lock_device_btn_iterator_t
# ##
# type
# xcb_xkb_sa_lock_device_btn_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_lock_device_btn_t
# rem*: cint
# index*: cint
# xcb_xkb_sa_val_what_t* = enum
# XCB_XKB_SA_VAL_WHAT_IGNORE_VAL = 0, XCB_XKB_SA_VAL_WHAT_SET_VAL_MIN = 1,
# XCB_XKB_SA_VAL_WHAT_SET_VAL_CENTER = 2, XCB_XKB_SA_VAL_WHAT_SET_VAL_MAX = 3,
# XCB_XKB_SA_VAL_WHAT_SET_VAL_RELATIVE = 4,
# XCB_XKB_SA_VAL_WHAT_SET_VAL_ABSOLUTE = 5
# ## *
# ## @brief xcb_xkb_sa_device_valuator_t
# ##
# type
# xcb_xkb_sa_device_valuator_t* {.bycopy.} = object
# `type`*: uint8
# device*: uint8
# val1what*: uint8
# val1index*: uint8
# val1value*: uint8
# val2what*: uint8
# val2index*: uint8
# val2value*: uint8
# ## *
# ## @brief xcb_xkb_sa_device_valuator_iterator_t
# ##
# type
# xcb_xkb_sa_device_valuator_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sa_device_valuator_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_si_action_t
# ##
# type
# xcb_xkb_si_action_t* {.bycopy.} = object
# `type`*: uint8
# data*: array[7, uint8]
# ## *
# ## @brief xcb_xkb_si_action_iterator_t
# ##
# type
# xcb_xkb_si_action_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_si_action_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_sym_interpret_t
# ##
# type
# xcb_xkb_sym_interpret_t* {.bycopy.} = object
# sym*: xcb_keysym_t
# mods*: uint8
# match*: uint8
# virtualMod*: uint8
# flags*: uint8
# action*: xcb_xkb_si_action_t
# ## *
# ## @brief xcb_xkb_sym_interpret_iterator_t
# ##
# type
# xcb_xkb_sym_interpret_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_sym_interpret_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_action_t
# ##
# type
# xcb_xkb_action_t* {.bycopy.} = object {.union.}
# noaction*: xcb_xkb_sa_no_action_t
# setmods*: xcb_xkb_sa_set_mods_t
# latchmods*: xcb_xkb_sa_latch_mods_t
# lockmods*: xcb_xkb_sa_lock_mods_t
# setgroup*: xcb_xkb_sa_set_group_t
# latchgroup*: xcb_xkb_sa_latch_group_t
# lockgroup*: xcb_xkb_sa_lock_group_t
# moveptr*: xcb_xkb_sa_move_ptr_t
# ptrbtn*: xcb_xkb_sa_ptr_btn_t
# lockptrbtn*: xcb_xkb_sa_lock_ptr_btn_t
# setptrdflt*: xcb_xkb_sa_set_ptr_dflt_t
# isolock*: xcb_xkb_sa_iso_lock_t
# terminate*: xcb_xkb_sa_terminate_t
# switchscreen*: xcb_xkb_sa_switch_screen_t
# setcontrols*: xcb_xkb_sa_set_controls_t
# lockcontrols*: xcb_xkb_sa_lock_controls_t
# message*: xcb_xkb_sa_action_message_t
# redirect*: xcb_xkb_sa_redirect_key_t
# devbtn*: xcb_xkb_sa_device_btn_t
# lockdevbtn*: xcb_xkb_sa_lock_device_btn_t
# devval*: xcb_xkb_sa_device_valuator_t
# `type`*: uint8
# ## *
# ## @brief xcb_xkb_action_iterator_t
# ##
# type
# xcb_xkb_action_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xkb_action_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xkb_use_extension_cookie_t
# ##
# type
# xcb_xkb_use_extension_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_use_extension.
# const
# XCB_XKB_USE_EXTENSION* = 0
# ## *
# ## @brief xcb_xkb_use_extension_request_t
# ##
# type
# xcb_xkb_use_extension_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# wantedMajor*: uint16
# wantedMinor*: uint16
# ## *
# ## @brief xcb_xkb_use_extension_reply_t
# ##
# type
# xcb_xkb_use_extension_reply_t* {.bycopy.} = object
# response_type*: uint8
# supported*: uint8
# sequence*: uint16
# length*: uint32
# serverMajor*: uint16
# serverMinor*: uint16
# pad0*: array[20, uint8]
# ## *
# ## @brief xcb_xkb_select_events_details_t
# ##
# type
# xcb_xkb_select_events_details_t* {.bycopy.} = object
# affectNewKeyboard*: uint16
# newKeyboardDetails*: uint16
# affectState*: uint16
# stateDetails*: uint16
# affectCtrls*: uint32
# ctrlDetails*: uint32
# affectIndicatorState*: uint32
# indicatorStateDetails*: uint32
# affectIndicatorMap*: uint32
# indicatorMapDetails*: uint32
# affectNames*: uint16
# namesDetails*: uint16
# affectCompat*: uint8
# compatDetails*: uint8
# affectBell*: uint8
# bellDetails*: uint8
# affectMsgDetails*: uint8
# msgDetails*: uint8
# affectAccessX*: uint16
# accessXDetails*: uint16
# affectExtDev*: uint16
# extdevDetails*: uint16
# ## * Opcode for xcb_xkb_select_events.
# const
# XCB_XKB_SELECT_EVENTS* = 1
# ## *
# ## @brief xcb_xkb_select_events_request_t
# ##
# type
# xcb_xkb_select_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# affectWhich*: uint16
# clear*: uint16
# selectAll*: uint16
# affectMap*: uint16
# map*: uint16
# ## * Opcode for xcb_xkb_bell.
# const
# XCB_XKB_BELL* = 3
# ## *
# ## @brief xcb_xkb_bell_request_t
# ##
# type
# xcb_xkb_bell_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# bellClass*: xcb_xkb_bell_class_spec_t
# bellID*: xcb_xkb_id_spec_t
# percent*: int8
# forceSound*: uint8
# eventOnly*: uint8
# pad0*: uint8
# pitch*: int16
# duration*: int16
# pad1*: array[2, uint8]
# name*: xcb_atom_t
# window*: xcb_window_t
# ## *
# ## @brief xcb_xkb_get_state_cookie_t
# ##
# type
# xcb_xkb_get_state_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_state.
# const
# XCB_XKB_GET_STATE* = 4
# ## *
# ## @brief xcb_xkb_get_state_request_t
# ##
# type
# xcb_xkb_get_state_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_get_state_reply_t
# ##
# type
# xcb_xkb_get_state_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# mods*: uint8
# baseMods*: uint8
# latchedMods*: uint8
# lockedMods*: uint8
# group*: uint8
# lockedGroup*: uint8
# baseGroup*: int16
# latchedGroup*: int16
# compatState*: uint8
# grabMods*: uint8
# compatGrabMods*: uint8
# lookupMods*: uint8
# compatLookupMods*: uint8
# pad0*: uint8
# ptrBtnState*: uint16
# pad1*: array[6, uint8]
# ## * Opcode for xcb_xkb_latch_lock_state.
# const
# XCB_XKB_LATCH_LOCK_STATE* = 5
# ## *
# ## @brief xcb_xkb_latch_lock_state_request_t
# ##
# type
# xcb_xkb_latch_lock_state_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# affectModLocks*: uint8
# modLocks*: uint8
# lockGroup*: uint8
# groupLock*: uint8
# affectModLatches*: uint8
# pad0*: uint8
# pad1*: uint8
# latchGroup*: uint8
# groupLatch*: uint16
# ## *
# ## @brief xcb_xkb_get_controls_cookie_t
# ##
# type
# xcb_xkb_get_controls_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_controls.
# const
# XCB_XKB_GET_CONTROLS* = 6
# ## *
# ## @brief xcb_xkb_get_controls_request_t
# ##
# type
# xcb_xkb_get_controls_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_get_controls_reply_t
# ##
# type
# xcb_xkb_get_controls_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# mouseKeysDfltBtn*: uint8
# numGroups*: uint8
# groupsWrap*: uint8
# internalModsMask*: uint8
# ignoreLockModsMask*: uint8
# internalModsRealMods*: uint8
# ignoreLockModsRealMods*: uint8
# pad0*: uint8
# internalModsVmods*: uint16
# ignoreLockModsVmods*: uint16
# repeatDelay*: uint16
# repeatInterval*: uint16
# slowKeysDelay*: uint16
# debounceDelay*: uint16
# mouseKeysDelay*: uint16
# mouseKeysInterval*: uint16
# mouseKeysTimeToMax*: uint16
# mouseKeysMaxSpeed*: uint16
# mouseKeysCurve*: int16
# accessXOption*: uint16
# accessXTimeout*: uint16
# accessXTimeoutOptionsMask*: uint16
# accessXTimeoutOptionsValues*: uint16
# pad1*: array[2, uint8]
# accessXTimeoutMask*: uint32
# accessXTimeoutValues*: uint32
# enabledControls*: uint32
# perKeyRepeat*: array[32, uint8]
# ## * Opcode for xcb_xkb_set_controls.
# const
# XCB_XKB_SET_CONTROLS* = 7
# ## *
# ## @brief xcb_xkb_set_controls_request_t
# ##
# type
# xcb_xkb_set_controls_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# affectInternalRealMods*: uint8
# internalRealMods*: uint8
# affectIgnoreLockRealMods*: uint8
# ignoreLockRealMods*: uint8
# affectInternalVirtualMods*: uint16
# internalVirtualMods*: uint16
# affectIgnoreLockVirtualMods*: uint16
# ignoreLockVirtualMods*: uint16
# mouseKeysDfltBtn*: uint8
# groupsWrap*: uint8
# accessXOptions*: uint16
# pad0*: array[2, uint8]
# affectEnabledControls*: uint32
# enabledControls*: uint32
# changeControls*: uint32
# repeatDelay*: uint16
# repeatInterval*: uint16
# slowKeysDelay*: uint16
# debounceDelay*: uint16
# mouseKeysDelay*: uint16
# mouseKeysInterval*: uint16
# mouseKeysTimeToMax*: uint16
# mouseKeysMaxSpeed*: uint16
# mouseKeysCurve*: int16
# accessXTimeout*: uint16
# accessXTimeoutMask*: uint32
# accessXTimeoutValues*: uint32
# accessXTimeoutOptionsMask*: uint16
# accessXTimeoutOptionsValues*: uint16
# perKeyRepeat*: array[32, uint8]
# ## *
# ## @brief xcb_xkb_get_map_cookie_t
# ##
# type
# xcb_xkb_get_map_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_map.
# const
# XCB_XKB_GET_MAP* = 8
# ## *
# ## @brief xcb_xkb_get_map_request_t
# ##
# type
# xcb_xkb_get_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# full*: uint16
# partial*: uint16
# firstType*: uint8
# nTypes*: uint8
# firstKeySym*: xcb_keycode_t
# nKeySyms*: uint8
# firstKeyAction*: xcb_keycode_t
# nKeyActions*: uint8
# firstKeyBehavior*: xcb_keycode_t
# nKeyBehaviors*: uint8
# virtualMods*: uint16
# firstKeyExplicit*: xcb_keycode_t
# nKeyExplicit*: uint8
# firstModMapKey*: xcb_keycode_t
# nModMapKeys*: uint8
# firstVModMapKey*: xcb_keycode_t
# nVModMapKeys*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_get_map_map_t
# ##
# type
# xcb_xkb_get_map_map_t* {.bycopy.} = object
# types_rtrn*: ptr xcb_xkb_key_type_t
# syms_rtrn*: ptr xcb_xkb_key_sym_map_t
# acts_rtrn_count*: ptr uint8
# pad2*: ptr uint8
# acts_rtrn_acts*: ptr xcb_xkb_action_t
# behaviors_rtrn*: ptr xcb_xkb_set_behavior_t
# vmods_rtrn*: ptr uint8
# pad3*: ptr uint8
# explicit_rtrn*: ptr xcb_xkb_set_explicit_t
# pad4*: ptr uint8
# modmap_rtrn*: ptr xcb_xkb_key_mod_map_t
# pad5*: ptr uint8
# vmodmap_rtrn*: ptr xcb_xkb_key_v_mod_map_t
# ## *
# ## @brief xcb_xkb_get_map_reply_t
# ##
# type
# xcb_xkb_get_map_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[2, uint8]
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# present*: uint16
# firstType*: uint8
# nTypes*: uint8
# totalTypes*: uint8
# firstKeySym*: xcb_keycode_t
# totalSyms*: uint16
# nKeySyms*: uint8
# firstKeyAction*: xcb_keycode_t
# totalActions*: uint16
# nKeyActions*: uint8
# firstKeyBehavior*: xcb_keycode_t
# nKeyBehaviors*: uint8
# totalKeyBehaviors*: uint8
# firstKeyExplicit*: xcb_keycode_t
# nKeyExplicit*: uint8
# totalKeyExplicit*: uint8
# firstModMapKey*: xcb_keycode_t
# nModMapKeys*: uint8
# totalModMapKeys*: uint8
# firstVModMapKey*: xcb_keycode_t
# nVModMapKeys*: uint8
# totalVModMapKeys*: uint8
# pad1*: uint8
# virtualMods*: uint16
# ## *
# ## @brief xcb_xkb_set_map_values_t
# ##
# type
# xcb_xkb_set_map_values_t* {.bycopy.} = object
# types*: ptr xcb_xkb_set_key_type_t
# syms*: ptr xcb_xkb_key_sym_map_t
# actionsCount*: ptr uint8
# actions*: ptr xcb_xkb_action_t
# behaviors*: ptr xcb_xkb_set_behavior_t
# vmods*: ptr uint8
# explicit*: ptr xcb_xkb_set_explicit_t
# modmap*: ptr xcb_xkb_key_mod_map_t
# vmodmap*: ptr xcb_xkb_key_v_mod_map_t
# ## * Opcode for xcb_xkb_set_map.
# const
# XCB_XKB_SET_MAP* = 9
# ## *
# ## @brief xcb_xkb_set_map_request_t
# ##
# type
# xcb_xkb_set_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# present*: uint16
# flags*: uint16
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# firstType*: uint8
# nTypes*: uint8
# firstKeySym*: xcb_keycode_t
# nKeySyms*: uint8
# totalSyms*: uint16
# firstKeyAction*: xcb_keycode_t
# nKeyActions*: uint8
# totalActions*: uint16
# firstKeyBehavior*: xcb_keycode_t
# nKeyBehaviors*: uint8
# totalKeyBehaviors*: uint8
# firstKeyExplicit*: xcb_keycode_t
# nKeyExplicit*: uint8
# totalKeyExplicit*: uint8
# firstModMapKey*: xcb_keycode_t
# nModMapKeys*: uint8
# totalModMapKeys*: uint8
# firstVModMapKey*: xcb_keycode_t
# nVModMapKeys*: uint8
# totalVModMapKeys*: uint8
# virtualMods*: uint16
# ## *
# ## @brief xcb_xkb_get_compat_map_cookie_t
# ##
# type
# xcb_xkb_get_compat_map_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_compat_map.
# const
# XCB_XKB_GET_COMPAT_MAP* = 10
# ## *
# ## @brief xcb_xkb_get_compat_map_request_t
# ##
# type
# xcb_xkb_get_compat_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# groups*: uint8
# getAllSI*: uint8
# firstSI*: uint16
# nSI*: uint16
# ## *
# ## @brief xcb_xkb_get_compat_map_reply_t
# ##
# type
# xcb_xkb_get_compat_map_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# groupsRtrn*: uint8
# pad0*: uint8
# firstSIRtrn*: uint16
# nSIRtrn*: uint16
# nTotalSI*: uint16
# pad1*: array[16, uint8]
# ## * Opcode for xcb_xkb_set_compat_map.
# const
# XCB_XKB_SET_COMPAT_MAP* = 11
# ## *
# ## @brief xcb_xkb_set_compat_map_request_t
# ##
# type
# xcb_xkb_set_compat_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: uint8
# recomputeActions*: uint8
# truncateSI*: uint8
# groups*: uint8
# firstSI*: uint16
# nSI*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_get_indicator_state_cookie_t
# ##
# type
# xcb_xkb_get_indicator_state_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_indicator_state.
# const
# XCB_XKB_GET_INDICATOR_STATE* = 12
# ## *
# ## @brief xcb_xkb_get_indicator_state_request_t
# ##
# type
# xcb_xkb_get_indicator_state_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_xkb_get_indicator_state_reply_t
# ##
# type
# xcb_xkb_get_indicator_state_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# state*: uint32
# pad0*: array[20, uint8]
# ## *
# ## @brief xcb_xkb_get_indicator_map_cookie_t
# ##
# type
# xcb_xkb_get_indicator_map_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_indicator_map.
# const
# XCB_XKB_GET_INDICATOR_MAP* = 13
# ## *
# ## @brief xcb_xkb_get_indicator_map_request_t
# ##
# type
# xcb_xkb_get_indicator_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# which*: uint32
# ## *
# ## @brief xcb_xkb_get_indicator_map_reply_t
# ##
# type
# xcb_xkb_get_indicator_map_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# which*: uint32
# realIndicators*: uint32
# nIndicators*: uint8
# pad0*: array[15, uint8]
# ## * Opcode for xcb_xkb_set_indicator_map.
# const
# XCB_XKB_SET_INDICATOR_MAP* = 14
# ## *
# ## @brief xcb_xkb_set_indicator_map_request_t
# ##
# type
# xcb_xkb_set_indicator_map_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# which*: uint32
# ## *
# ## @brief xcb_xkb_get_named_indicator_cookie_t
# ##
# type
# xcb_xkb_get_named_indicator_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_named_indicator.
# const
# XCB_XKB_GET_NAMED_INDICATOR* = 15
# ## *
# ## @brief xcb_xkb_get_named_indicator_request_t
# ##
# type
# xcb_xkb_get_named_indicator_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# ledClass*: xcb_xkb_led_class_spec_t
# ledID*: xcb_xkb_id_spec_t
# pad0*: array[2, uint8]
# indicator*: xcb_atom_t
# ## *
# ## @brief xcb_xkb_get_named_indicator_reply_t
# ##
# type
# xcb_xkb_get_named_indicator_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# indicator*: xcb_atom_t
# found*: uint8
# on*: uint8
# realIndicator*: uint8
# ndx*: uint8
# map_flags*: uint8
# map_whichGroups*: uint8
# map_groups*: uint8
# map_whichMods*: uint8
# map_mods*: uint8
# map_realMods*: uint8
# map_vmod*: uint16
# map_ctrls*: uint32
# supported*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_xkb_set_named_indicator.
# const
# XCB_XKB_SET_NAMED_INDICATOR* = 16
# ## *
# ## @brief xcb_xkb_set_named_indicator_request_t
# ##
# type
# xcb_xkb_set_named_indicator_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# ledClass*: xcb_xkb_led_class_spec_t
# ledID*: xcb_xkb_id_spec_t
# pad0*: array[2, uint8]
# indicator*: xcb_atom_t
# setState*: uint8
# on*: uint8
# setMap*: uint8
# createMap*: uint8
# pad1*: uint8
# map_flags*: uint8
# map_whichGroups*: uint8
# map_groups*: uint8
# map_whichMods*: uint8
# map_realMods*: uint8
# map_vmods*: uint16
# map_ctrls*: uint32
# ## *
# ## @brief xcb_xkb_get_names_cookie_t
# ##
# type
# xcb_xkb_get_names_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_names.
# const
# XCB_XKB_GET_NAMES* = 17
# ## *
# ## @brief xcb_xkb_get_names_request_t
# ##
# type
# xcb_xkb_get_names_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# which*: uint32
# ## *
# ## @brief xcb_xkb_get_names_value_list_t
# ##
# type
# xcb_xkb_get_names_value_list_t* {.bycopy.} = object
# keycodesName*: xcb_atom_t
# geometryName*: xcb_atom_t
# symbolsName*: xcb_atom_t
# physSymbolsName*: xcb_atom_t
# typesName*: xcb_atom_t
# compatName*: xcb_atom_t
# typeNames*: ptr xcb_atom_t
# nLevelsPerType*: ptr uint8
# pad1*: ptr uint8
# ktLevelNames*: ptr xcb_atom_t
# indicatorNames*: ptr xcb_atom_t
# virtualModNames*: ptr xcb_atom_t
# groups*: ptr xcb_atom_t
# keyNames*: ptr xcb_xkb_key_name_t
# keyAliases*: ptr xcb_xkb_key_alias_t
# radioGroupNames*: ptr xcb_atom_t
# ## *
# ## @brief xcb_xkb_get_names_reply_t
# ##
# type
# xcb_xkb_get_names_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# which*: uint32
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# nTypes*: uint8
# groupNames*: uint8
# virtualMods*: uint16
# firstKey*: xcb_keycode_t
# nKeys*: uint8
# indicators*: uint32
# nRadioGroups*: uint8
# nKeyAliases*: uint8
# nKTLevels*: uint16
# pad0*: array[4, uint8]
# ## *
# ## @brief xcb_xkb_set_names_values_t
# ##
# type
# xcb_xkb_set_names_values_t* {.bycopy.} = object
# keycodesName*: xcb_atom_t
# geometryName*: xcb_atom_t
# symbolsName*: xcb_atom_t
# physSymbolsName*: xcb_atom_t
# typesName*: xcb_atom_t
# compatName*: xcb_atom_t
# typeNames*: ptr xcb_atom_t
# nLevelsPerType*: ptr uint8
# ktLevelNames*: ptr xcb_atom_t
# indicatorNames*: ptr xcb_atom_t
# virtualModNames*: ptr xcb_atom_t
# groups*: ptr xcb_atom_t
# keyNames*: ptr xcb_xkb_key_name_t
# keyAliases*: ptr xcb_xkb_key_alias_t
# radioGroupNames*: ptr xcb_atom_t
# ## * Opcode for xcb_xkb_set_names.
# const
# XCB_XKB_SET_NAMES* = 18
# ## *
# ## @brief xcb_xkb_set_names_request_t
# ##
# type
# xcb_xkb_set_names_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# virtualMods*: uint16
# which*: uint32
# firstType*: uint8
# nTypes*: uint8
# firstKTLevelt*: uint8
# nKTLevels*: uint8
# indicators*: uint32
# groupNames*: uint8
# nRadioGroups*: uint8
# firstKey*: xcb_keycode_t
# nKeys*: uint8
# nKeyAliases*: uint8
# pad0*: uint8
# totalKTLevelNames*: uint16
# ## *
# ## @brief xcb_xkb_per_client_flags_cookie_t
# ##
# type
# xcb_xkb_per_client_flags_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_per_client_flags.
# const
# XCB_XKB_PER_CLIENT_FLAGS* = 21
# ## *
# ## @brief xcb_xkb_per_client_flags_request_t
# ##
# type
# xcb_xkb_per_client_flags_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# pad0*: array[2, uint8]
# change*: uint32
# value*: uint32
# ctrlsToChange*: uint32
# autoCtrls*: uint32
# autoCtrlsValues*: uint32
# ## *
# ## @brief xcb_xkb_per_client_flags_reply_t
# ##
# type
# xcb_xkb_per_client_flags_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# supported*: uint32
# value*: uint32
# autoCtrls*: uint32
# autoCtrlsValues*: uint32
# pad0*: array[8, uint8]
# ## *
# ## @brief xcb_xkb_list_components_cookie_t
# ##
# type
# xcb_xkb_list_components_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_list_components.
# const
# XCB_XKB_LIST_COMPONENTS* = 22
# ## *
# ## @brief xcb_xkb_list_components_request_t
# ##
# type
# xcb_xkb_list_components_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# maxNames*: uint16
# ## *
# ## @brief xcb_xkb_list_components_reply_t
# ##
# type
# xcb_xkb_list_components_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# nKeymaps*: uint16
# nKeycodes*: uint16
# nTypes*: uint16
# nCompatMaps*: uint16
# nSymbols*: uint16
# nGeometries*: uint16
# extra*: uint16
# pad0*: array[10, uint8]
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_cookie_t
# ##
# type
# xcb_xkb_get_kbd_by_name_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_kbd_by_name.
# const
# XCB_XKB_GET_KBD_BY_NAME* = 23
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_request_t
# ##
# type
# xcb_xkb_get_kbd_by_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# need*: uint16
# want*: uint16
# load*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_replies_types_map_t
# ##
# type
# xcb_xkb_get_kbd_by_name_replies_types_map_t* {.bycopy.} = object
# types_rtrn*: ptr xcb_xkb_key_type_t
# syms_rtrn*: ptr xcb_xkb_key_sym_map_t
# acts_rtrn_count*: ptr uint8
# acts_rtrn_acts*: ptr xcb_xkb_action_t
# behaviors_rtrn*: ptr xcb_xkb_set_behavior_t
# vmods_rtrn*: ptr uint8
# explicit_rtrn*: ptr xcb_xkb_set_explicit_t
# modmap_rtrn*: ptr xcb_xkb_key_mod_map_t
# vmodmap_rtrn*: ptr xcb_xkb_key_v_mod_map_t
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
# ##
# type
# xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t* {.bycopy.} = object
# keycodesName*: xcb_atom_t
# geometryName*: xcb_atom_t
# symbolsName*: xcb_atom_t
# physSymbolsName*: xcb_atom_t
# typesName*: xcb_atom_t
# compatName*: xcb_atom_t
# typeNames*: ptr xcb_atom_t
# nLevelsPerType*: ptr uint8
# ktLevelNames*: ptr xcb_atom_t
# indicatorNames*: ptr xcb_atom_t
# virtualModNames*: ptr xcb_atom_t
# groups*: ptr xcb_atom_t
# keyNames*: ptr xcb_xkb_key_name_t
# keyAliases*: ptr xcb_xkb_key_alias_t
# radioGroupNames*: ptr xcb_atom_t
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_replies_t
# ##
# type
# INNER_C_STRUCT_xkb_2530* {.bycopy.} = object
# getmap_type*: uint8
# typeDeviceID*: uint8
# getmap_sequence*: uint16
# getmap_length*: uint32
# pad1*: array[2, uint8]
# typeMinKeyCode*: xcb_keycode_t
# typeMaxKeyCode*: xcb_keycode_t
# present*: uint16
# firstType*: uint8
# nTypes*: uint8
# totalTypes*: uint8
# firstKeySym*: xcb_keycode_t
# totalSyms*: uint16
# nKeySyms*: uint8
# firstKeyAction*: xcb_keycode_t
# totalActions*: uint16
# nKeyActions*: uint8
# firstKeyBehavior*: xcb_keycode_t
# nKeyBehaviors*: uint8
# totalKeyBehaviors*: uint8
# firstKeyExplicit*: xcb_keycode_t
# nKeyExplicit*: uint8
# totalKeyExplicit*: uint8
# firstModMapKey*: xcb_keycode_t
# nModMapKeys*: uint8
# totalModMapKeys*: uint8
# firstVModMapKey*: xcb_keycode_t
# nVModMapKeys*: uint8
# totalVModMapKeys*: uint8
# pad2*: uint8
# virtualMods*: uint16
# map*: xcb_xkb_get_kbd_by_name_replies_types_map_t
# INNER_C_STRUCT_xkb_2564* {.bycopy.} = object
# compatmap_type*: uint8
# compatDeviceID*: uint8
# compatmap_sequence*: uint16
# compatmap_length*: uint32
# groupsRtrn*: uint8
# pad7*: uint8
# firstSIRtrn*: uint16
# nSIRtrn*: uint16
# nTotalSI*: uint16
# pad8*: array[16, uint8]
# si_rtrn*: ptr xcb_xkb_sym_interpret_t
# group_rtrn*: ptr xcb_xkb_mod_def_t
# INNER_C_STRUCT_xkb_2578* {.bycopy.} = object
# indicatormap_type*: uint8
# indicatorDeviceID*: uint8
# indicatormap_sequence*: uint16
# indicatormap_length*: uint32
# which*: uint32
# realIndicators*: uint32
# nIndicators*: uint8
# pad9*: array[15, uint8]
# maps*: ptr xcb_xkb_indicator_map_t
# INNER_C_STRUCT_xkb_2589* {.bycopy.} = object
# keyname_type*: uint8
# keyDeviceID*: uint8
# keyname_sequence*: uint16
# keyname_length*: uint32
# which*: uint32
# keyMinKeyCode*: xcb_keycode_t
# keyMaxKeyCode*: xcb_keycode_t
# nTypes*: uint8
# groupNames*: uint8
# virtualMods*: uint16
# firstKey*: xcb_keycode_t
# nKeys*: uint8
# indicators*: uint32
# nRadioGroups*: uint8
# nKeyAliases*: uint8
# nKTLevels*: uint16
# pad10*: array[4, uint8]
# valueList*: xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
# INNER_C_STRUCT_xkb_2609* {.bycopy.} = object
# geometry_type*: uint8
# geometryDeviceID*: uint8
# geometry_sequence*: uint16
# geometry_length*: uint32
# name*: xcb_atom_t
# geometryFound*: uint8
# pad12*: uint8
# widthMM*: uint16
# heightMM*: uint16
# nProperties*: uint16
# nColors*: uint16
# nShapes*: uint16
# nSections*: uint16
# nDoodads*: uint16
# nKeyAliases*: uint16
# baseColorNdx*: uint8
# labelColorNdx*: uint8
# labelFont*: ptr xcb_xkb_counted_string_16_t
# xcb_xkb_get_kbd_by_name_replies_t* {.bycopy.} = object
# types*: INNER_C_STRUCT_xkb_2530
# compat_map*: INNER_C_STRUCT_xkb_2564
# indicator_maps*: INNER_C_STRUCT_xkb_2578
# key_names*: INNER_C_STRUCT_xkb_2589
# geometry*: INNER_C_STRUCT_xkb_2609
# proc xcb_xkb_get_kbd_by_name_replies_types_map*(
# R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_get_kbd_by_name_replies_types_map_t
# ## *
# ## @brief xcb_xkb_get_kbd_by_name_reply_t
# ##
# type
# xcb_xkb_get_kbd_by_name_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# loaded*: uint8
# newKeyboard*: uint8
# found*: uint16
# reported*: uint16
# pad0*: array[16, uint8]
# ## *
# ## @brief xcb_xkb_get_device_info_cookie_t
# ##
# type
# xcb_xkb_get_device_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_get_device_info.
# const
# XCB_XKB_GET_DEVICE_INFO* = 24
# ## *
# ## @brief xcb_xkb_get_device_info_request_t
# ##
# type
# xcb_xkb_get_device_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# wanted*: uint16
# allButtons*: uint8
# firstButton*: uint8
# nButtons*: uint8
# pad0*: uint8
# ledClass*: xcb_xkb_led_class_spec_t
# ledID*: xcb_xkb_id_spec_t
# ## *
# ## @brief xcb_xkb_get_device_info_reply_t
# ##
# type
# xcb_xkb_get_device_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# deviceID*: uint8
# sequence*: uint16
# length*: uint32
# present*: uint16
# supported*: uint16
# unsupported*: uint16
# nDeviceLedFBs*: uint16
# firstBtnWanted*: uint8
# nBtnsWanted*: uint8
# firstBtnRtrn*: uint8
# nBtnsRtrn*: uint8
# totalBtns*: uint8
# hasOwnState*: uint8
# dfltKbdFB*: uint16
# dfltLedFB*: uint16
# pad0*: array[2, uint8]
# devType*: xcb_atom_t
# nameLen*: uint16
# ## * Opcode for xcb_xkb_set_device_info.
# const
# XCB_XKB_SET_DEVICE_INFO* = 25
# ## *
# ## @brief xcb_xkb_set_device_info_request_t
# ##
# type
# xcb_xkb_set_device_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# deviceSpec*: xcb_xkb_device_spec_t
# firstBtn*: uint8
# nBtns*: uint8
# change*: uint16
# nDeviceLedFBs*: uint16
# ## *
# ## @brief xcb_xkb_set_debugging_flags_cookie_t
# ##
# type
# xcb_xkb_set_debugging_flags_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xkb_set_debugging_flags.
# const
# XCB_XKB_SET_DEBUGGING_FLAGS* = 101
# ## *
# ## @brief xcb_xkb_set_debugging_flags_request_t
# ##
# type
# xcb_xkb_set_debugging_flags_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# msgLength*: uint16
# pad0*: array[2, uint8]
# affectFlags*: uint32
# flags*: uint32
# affectCtrls*: uint32
# ctrls*: uint32
# ## *
# ## @brief xcb_xkb_set_debugging_flags_reply_t
# ##
# type
# xcb_xkb_set_debugging_flags_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# currentFlags*: uint32
# currentCtrls*: uint32
# supportedFlags*: uint32
# supportedCtrls*: uint32
# pad1*: array[8, uint8]
# ## * Opcode for xcb_xkb_new_keyboard_notify.
# const
# XCB_XKB_NEW_KEYBOARD_NOTIFY* = 0
# ## *
# ## @brief xcb_xkb_new_keyboard_notify_event_t
# ##
# type
# xcb_xkb_new_keyboard_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# oldDeviceID*: uint8
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# oldMinKeyCode*: xcb_keycode_t
# oldMaxKeyCode*: xcb_keycode_t
# requestMajor*: uint8
# requestMinor*: uint8
# changed*: uint16
# pad0*: array[14, uint8]
# ## * Opcode for xcb_xkb_map_notify.
# const
# XCB_XKB_MAP_NOTIFY* = 1
# ## *
# ## @brief xcb_xkb_map_notify_event_t
# ##
# type
# xcb_xkb_map_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# ptrBtnActions*: uint8
# changed*: uint16
# minKeyCode*: xcb_keycode_t
# maxKeyCode*: xcb_keycode_t
# firstType*: uint8
# nTypes*: uint8
# firstKeySym*: xcb_keycode_t
# nKeySyms*: uint8
# firstKeyAct*: xcb_keycode_t
# nKeyActs*: uint8
# firstKeyBehavior*: xcb_keycode_t
# nKeyBehavior*: uint8
# firstKeyExplicit*: xcb_keycode_t
# nKeyExplicit*: uint8
# firstModMapKey*: xcb_keycode_t
# nModMapKeys*: uint8
# firstVModMapKey*: xcb_keycode_t
# nVModMapKeys*: uint8
# virtualMods*: uint16
# pad0*: array[2, uint8]
# ## * Opcode for xcb_xkb_state_notify.
# const
# XCB_XKB_STATE_NOTIFY* = 2
# ## *
# ## @brief xcb_xkb_state_notify_event_t
# ##
# type
# xcb_xkb_state_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# mods*: uint8
# baseMods*: uint8
# latchedMods*: uint8
# lockedMods*: uint8
# group*: uint8
# baseGroup*: int16
# latchedGroup*: int16
# lockedGroup*: uint8
# compatState*: uint8
# grabMods*: uint8
# compatGrabMods*: uint8
# lookupMods*: uint8
# compatLoockupMods*: uint8
# ptrBtnState*: uint16
# changed*: uint16
# keycode*: xcb_keycode_t
# eventType*: uint8
# requestMajor*: uint8
# requestMinor*: uint8
# ## * Opcode for xcb_xkb_controls_notify.
# const
# XCB_XKB_CONTROLS_NOTIFY* = 3
# ## *
# ## @brief xcb_xkb_controls_notify_event_t
# ##
# type
# xcb_xkb_controls_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# numGroups*: uint8
# pad0*: array[2, uint8]
# changedControls*: uint32
# enabledControls*: uint32
# enabledControlChanges*: uint32
# keycode*: xcb_keycode_t
# eventType*: uint8
# requestMajor*: uint8
# requestMinor*: uint8
# pad1*: array[4, uint8]
# ## * Opcode for xcb_xkb_indicator_state_notify.
# const
# XCB_XKB_INDICATOR_STATE_NOTIFY* = 4
# ## *
# ## @brief xcb_xkb_indicator_state_notify_event_t
# ##
# type
# xcb_xkb_indicator_state_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# pad0*: array[3, uint8]
# state*: uint32
# stateChanged*: uint32
# pad1*: array[12, uint8]
# ## * Opcode for xcb_xkb_indicator_map_notify.
# const
# XCB_XKB_INDICATOR_MAP_NOTIFY* = 5
# ## *
# ## @brief xcb_xkb_indicator_map_notify_event_t
# ##
# type
# xcb_xkb_indicator_map_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# pad0*: array[3, uint8]
# state*: uint32
# mapChanged*: uint32
# pad1*: array[12, uint8]
# ## * Opcode for xcb_xkb_names_notify.
# const
# XCB_XKB_NAMES_NOTIFY* = 6
# ## *
# ## @brief xcb_xkb_names_notify_event_t
# ##
# type
# xcb_xkb_names_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# pad0*: uint8
# changed*: uint16
# firstType*: uint8
# nTypes*: uint8
# firstLevelName*: uint8
# nLevelNames*: uint8
# pad1*: uint8
# nRadioGroups*: uint8
# nKeyAliases*: uint8
# changedGroupNames*: uint8
# changedVirtualMods*: uint16
# firstKey*: xcb_keycode_t
# nKeys*: uint8
# changedIndicators*: uint32
# pad2*: array[4, uint8]
# ## * Opcode for xcb_xkb_compat_map_notify.
# const
# XCB_XKB_COMPAT_MAP_NOTIFY* = 7
# ## *
# ## @brief xcb_xkb_compat_map_notify_event_t
# ##
# type
# xcb_xkb_compat_map_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# changedGroups*: uint8
# firstSI*: uint16
# nSI*: uint16
# nTotalSI*: uint16
# pad0*: array[16, uint8]
# ## * Opcode for xcb_xkb_bell_notify.
# const
# XCB_XKB_BELL_NOTIFY* = 8
# ## *
# ## @brief xcb_xkb_bell_notify_event_t
# ##
# type
# xcb_xkb_bell_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# bellClass*: uint8
# bellID*: uint8
# percent*: uint8
# pitch*: uint16
# duration*: uint16
# name*: xcb_atom_t
# window*: xcb_window_t
# eventOnly*: uint8
# pad0*: array[7, uint8]
# ## * Opcode for xcb_xkb_action_message.
# const
# XCB_XKB_ACTION_MESSAGE* = 9
# ## *
# ## @brief xcb_xkb_action_message_event_t
# ##
# type
# xcb_xkb_action_message_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# keycode*: xcb_keycode_t
# press*: uint8
# keyEventFollows*: uint8
# mods*: uint8
# group*: uint8
# message*: array[8, xcb_xkb_string8_t]
# pad0*: array[10, uint8]
# ## * Opcode for xcb_xkb_access_x_notify.
# const
# XCB_XKB_ACCESS_X_NOTIFY* = 10
# ## *
# ## @brief xcb_xkb_access_x_notify_event_t
# ##
# type
# xcb_xkb_access_x_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# keycode*: xcb_keycode_t
# detailt*: uint16
# slowKeysDelay*: uint16
# debounceDelay*: uint16
# pad0*: array[16, uint8]
# ## * Opcode for xcb_xkb_extension_device_notify.
# const
# XCB_XKB_EXTENSION_DEVICE_NOTIFY* = 11
# ## *
# ## @brief xcb_xkb_extension_device_notify_event_t
# ##
# type
# xcb_xkb_extension_device_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# xkbType*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# deviceID*: uint8
# pad0*: uint8
# reason*: uint16
# ledClass*: uint16
# ledID*: uint16
# ledsDefined*: uint32
# ledState*: uint32
# firstButton*: uint8
# nButtons*: uint8
# supported*: uint16
# unsupported*: uint16
# pad1*: array[2, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_device_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_device_spec_t)
# ##
# proc xcb_xkb_device_spec_next*(i: ptr xcb_xkb_device_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_device_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_device_spec_end*(i: xcb_xkb_device_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_led_class_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_led_class_spec_t)
# ##
# proc xcb_xkb_led_class_spec_next*(i: ptr xcb_xkb_led_class_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_led_class_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_led_class_spec_end*(i: xcb_xkb_led_class_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_bell_class_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_bell_class_spec_t)
# ##
# proc xcb_xkb_bell_class_spec_next*(i: ptr xcb_xkb_bell_class_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_bell_class_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_bell_class_spec_end*(i: xcb_xkb_bell_class_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_id_spec_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_id_spec_t)
# ##
# proc xcb_xkb_id_spec_next*(i: ptr xcb_xkb_id_spec_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_id_spec_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_id_spec_end*(i: xcb_xkb_id_spec_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_indicator_map_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_indicator_map_t)
# ##
# proc xcb_xkb_indicator_map_next*(i: ptr xcb_xkb_indicator_map_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_indicator_map_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_indicator_map_end*(i: xcb_xkb_indicator_map_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_mod_def_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_mod_def_t)
# ##
# proc xcb_xkb_mod_def_next*(i: ptr xcb_xkb_mod_def_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_mod_def_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_mod_def_end*(i: xcb_xkb_mod_def_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_name_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_name_t)
# ##
# proc xcb_xkb_key_name_next*(i: ptr xcb_xkb_key_name_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_name_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_name_end*(i: xcb_xkb_key_name_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_alias_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_alias_t)
# ##
# proc xcb_xkb_key_alias_next*(i: ptr xcb_xkb_key_alias_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_alias_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_alias_end*(i: xcb_xkb_key_alias_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_counted_string_16_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_counted_string_16_string*(R: ptr xcb_xkb_counted_string_16_t): cstring
# proc xcb_xkb_counted_string_16_string_length*(R: ptr xcb_xkb_counted_string_16_t): cint
# proc xcb_xkb_counted_string_16_string_end*(R: ptr xcb_xkb_counted_string_16_t): xcb_generic_iterator_t
# proc xcb_xkb_counted_string_16_alignment_pad*(R: ptr xcb_xkb_counted_string_16_t): pointer
# proc xcb_xkb_counted_string_16_alignment_pad_length*(
# R: ptr xcb_xkb_counted_string_16_t): cint
# proc xcb_xkb_counted_string_16_alignment_pad_end*(
# R: ptr xcb_xkb_counted_string_16_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_counted_string_16_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_counted_string_16_t)
# ##
# proc xcb_xkb_counted_string_16_next*(i: ptr xcb_xkb_counted_string_16_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_counted_string_16_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_counted_string_16_end*(i: xcb_xkb_counted_string_16_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_kt_map_entry_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_kt_map_entry_t)
# ##
# proc xcb_xkb_key_type_end*(i: xcb_xkb_key_type_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_key_sym_map_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_key_sym_map_syms*(R: ptr xcb_xkb_key_sym_map_t): ptr xcb_keysym_t
# proc xcb_xkb_key_sym_map_syms_length*(R: ptr xcb_xkb_key_sym_map_t): cint
# proc xcb_xkb_key_sym_map_syms_end*(R: ptr xcb_xkb_key_sym_map_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_sym_map_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_sym_map_t)
# ##
# proc xcb_xkb_key_sym_map_next*(i: ptr xcb_xkb_key_sym_map_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_sym_map_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_sym_map_end*(i: xcb_xkb_key_sym_map_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_common_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_common_behavior_t)
# ##
# proc xcb_xkb_common_behavior_next*(i: ptr xcb_xkb_common_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_common_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_common_behavior_end*(i: xcb_xkb_common_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_default_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_default_behavior_t)
# ##
# proc xcb_xkb_default_behavior_next*(i: ptr xcb_xkb_default_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_default_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_default_behavior_end*(i: xcb_xkb_default_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_lock_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_lock_behavior_t)
# ##
# proc xcb_xkb_lock_behavior_next*(i: ptr xcb_xkb_lock_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_lock_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_lock_behavior_end*(i: xcb_xkb_lock_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_radio_group_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_radio_group_behavior_t)
# ##
# proc xcb_xkb_radio_group_behavior_next*(i: ptr xcb_xkb_radio_group_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_radio_group_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_radio_group_behavior_end*(i: xcb_xkb_radio_group_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_overlay_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_overlay_behavior_t)
# ##
# proc xcb_xkb_overlay_behavior_next*(i: ptr xcb_xkb_overlay_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_overlay_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_overlay_behavior_end*(i: xcb_xkb_overlay_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_permament_lock_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_permament_lock_behavior_t)
# ##
# proc xcb_xkb_permament_lock_behavior_next*(
# i: ptr xcb_xkb_permament_lock_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_permament_lock_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_permament_lock_behavior_end*(
# i: xcb_xkb_permament_lock_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_permament_radio_group_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_permament_radio_group_behavior_t)
# ##
# proc xcb_xkb_permament_radio_group_behavior_next*(
# i: ptr xcb_xkb_permament_radio_group_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_permament_radio_group_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_permament_radio_group_behavior_end*(
# i: xcb_xkb_permament_radio_group_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_permament_overlay_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_permament_overlay_behavior_t)
# ##
# proc xcb_xkb_permament_overlay_behavior_next*(
# i: ptr xcb_xkb_permament_overlay_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_permament_overlay_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_permament_overlay_behavior_end*(
# i: xcb_xkb_permament_overlay_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_behavior_t)
# ##
# proc xcb_xkb_behavior_next*(i: ptr xcb_xkb_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_behavior_end*(i: xcb_xkb_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_set_behavior_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_set_behavior_t)
# ##
# proc xcb_xkb_set_behavior_next*(i: ptr xcb_xkb_set_behavior_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_set_behavior_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_set_behavior_end*(i: xcb_xkb_set_behavior_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_set_explicit_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_set_explicit_t)
# ##
# proc xcb_xkb_set_explicit_next*(i: ptr xcb_xkb_set_explicit_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_set_explicit_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_set_explicit_end*(i: xcb_xkb_set_explicit_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_mod_map_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_mod_map_t)
# ##
# proc xcb_xkb_key_mod_map_next*(i: ptr xcb_xkb_key_mod_map_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_mod_map_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_mod_map_end*(i: xcb_xkb_key_mod_map_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_v_mod_map_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_v_mod_map_t)
# ##
# proc xcb_xkb_key_v_mod_map_next*(i: ptr xcb_xkb_key_v_mod_map_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_v_mod_map_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_v_mod_map_end*(i: xcb_xkb_key_v_mod_map_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_kt_set_map_entry_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_kt_set_map_entry_t)
# ##
# proc xcb_xkb_kt_set_map_entry_next*(i: ptr xcb_xkb_kt_set_map_entry_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_kt_set_map_entry_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_kt_set_map_entry_end*(i: xcb_xkb_kt_set_map_entry_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_set_key_type_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_set_key_type_entries*(R: ptr xcb_xkb_set_key_type_t): ptr xcb_xkb_kt_set_map_entry_t
# proc xcb_xkb_set_key_type_entries_length*(R: ptr xcb_xkb_set_key_type_t): cint
# proc xcb_xkb_set_key_type_entries_iterator*(R: ptr xcb_xkb_set_key_type_t): xcb_xkb_kt_set_map_entry_iterator_t
# proc xcb_xkb_set_key_type_preserve_entries*(R: ptr xcb_xkb_set_key_type_t): ptr xcb_xkb_kt_set_map_entry_t
# proc xcb_xkb_set_key_type_preserve_entries_length*(R: ptr xcb_xkb_set_key_type_t): cint
# proc xcb_xkb_set_key_type_preserve_entries_iterator*(
# R: ptr xcb_xkb_set_key_type_t): xcb_xkb_kt_set_map_entry_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_set_key_type_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_set_key_type_t)
# ##
# proc xcb_xkb_set_key_type_next*(i: ptr xcb_xkb_set_key_type_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_set_key_type_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_set_key_type_end*(i: xcb_xkb_set_key_type_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_string8_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_string8_t)
# ##
# proc xcb_xkb_string8_next*(i: ptr xcb_xkb_string8_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_string8_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_string8_end*(i: xcb_xkb_string8_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_outline_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_outline_points*(R: ptr xcb_xkb_outline_t): ptr xcb_point_t
# proc xcb_xkb_outline_points_length*(R: ptr xcb_xkb_outline_t): cint
# proc xcb_xkb_outline_points_iterator*(R: ptr xcb_xkb_outline_t): xcb_point_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_outline_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_outline_t)
# ##
# proc xcb_xkb_outline_next*(i: ptr xcb_xkb_outline_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_outline_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_outline_end*(i: xcb_xkb_outline_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_shape_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_shape_outlines_length*(R: ptr xcb_xkb_shape_t): cint
# proc xcb_xkb_shape_outlines_iterator*(R: ptr xcb_xkb_shape_t): xcb_xkb_outline_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_shape_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_shape_t)
# ##
# proc xcb_xkb_shape_next*(i: ptr xcb_xkb_shape_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_shape_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_shape_end*(i: xcb_xkb_shape_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_key_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_key_t)
# ##
# proc xcb_xkb_key_next*(i: ptr xcb_xkb_key_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_key_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_key_end*(i: xcb_xkb_key_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_overlay_key_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_overlay_key_t)
# ##
# proc xcb_xkb_overlay_key_next*(i: ptr xcb_xkb_overlay_key_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_overlay_key_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_overlay_key_end*(i: xcb_xkb_overlay_key_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_overlay_row_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_overlay_row_keys*(R: ptr xcb_xkb_overlay_row_t): ptr xcb_xkb_overlay_key_t
# proc xcb_xkb_overlay_row_keys_length*(R: ptr xcb_xkb_overlay_row_t): cint
# proc xcb_xkb_overlay_row_keys_iterator*(R: ptr xcb_xkb_overlay_row_t): xcb_xkb_overlay_key_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_overlay_row_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_overlay_row_t)
# ##
# proc xcb_xkb_overlay_row_next*(i: ptr xcb_xkb_overlay_row_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_overlay_row_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_overlay_row_end*(i: xcb_xkb_overlay_row_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_overlay_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_overlay_rows_length*(R: ptr xcb_xkb_overlay_t): cint
# proc xcb_xkb_overlay_rows_iterator*(R: ptr xcb_xkb_overlay_t): xcb_xkb_overlay_row_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_overlay_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_overlay_t)
# ##
# proc xcb_xkb_overlay_next*(i: ptr xcb_xkb_overlay_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_overlay_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_overlay_end*(i: xcb_xkb_overlay_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_row_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_row_keys*(R: ptr xcb_xkb_row_t): ptr xcb_xkb_key_t
# proc xcb_xkb_row_keys_length*(R: ptr xcb_xkb_row_t): cint
# proc xcb_xkb_row_keys_iterator*(R: ptr xcb_xkb_row_t): xcb_xkb_key_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_row_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_row_t)
# ##
# proc xcb_xkb_row_next*(i: ptr xcb_xkb_row_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_row_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_row_end*(i: xcb_xkb_row_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_listing_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_listing_string*(R: ptr xcb_xkb_listing_t): ptr xcb_xkb_string8_t
# proc xcb_xkb_listing_string_length*(R: ptr xcb_xkb_listing_t): cint
# proc xcb_xkb_listing_string_end*(R: ptr xcb_xkb_listing_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_listing_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_listing_t)
# ##
# proc xcb_xkb_listing_next*(i: ptr xcb_xkb_listing_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_listing_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_listing_end*(i: xcb_xkb_listing_iterator_t): xcb_generic_iterator_t
# proc xcb_xkb_device_led_info_sizeof*(_buffer: pointer): cint
# proc xcb_xkb_device_led_info_names*(R: ptr xcb_xkb_device_led_info_t): ptr xcb_atom_t
# proc xcb_xkb_device_led_info_names_length*(R: ptr xcb_xkb_device_led_info_t): cint
# proc xcb_xkb_device_led_info_names_end*(R: ptr xcb_xkb_device_led_info_t): xcb_generic_iterator_t
# proc xcb_xkb_device_led_info_maps*(R: ptr xcb_xkb_device_led_info_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_device_led_info_maps_length*(R: ptr xcb_xkb_device_led_info_t): cint
# proc xcb_xkb_device_led_info_maps_iterator*(R: ptr xcb_xkb_device_led_info_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_device_led_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_device_led_info_t)
# ##
# proc xcb_xkb_device_led_info_next*(i: ptr xcb_xkb_device_led_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_device_led_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_device_led_info_end*(i: xcb_xkb_device_led_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_no_action_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_no_action_t)
# ##
# proc xcb_xkb_sa_no_action_next*(i: ptr xcb_xkb_sa_no_action_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_no_action_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_no_action_end*(i: xcb_xkb_sa_no_action_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_set_mods_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_set_mods_t)
# ##
# proc xcb_xkb_sa_set_mods_next*(i: ptr xcb_xkb_sa_set_mods_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_set_mods_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_set_mods_end*(i: xcb_xkb_sa_set_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_latch_mods_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_latch_mods_t)
# ##
# proc xcb_xkb_sa_latch_mods_next*(i: ptr xcb_xkb_sa_latch_mods_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_latch_mods_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_latch_mods_end*(i: xcb_xkb_sa_latch_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_lock_mods_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_lock_mods_t)
# ##
# proc xcb_xkb_sa_lock_mods_next*(i: ptr xcb_xkb_sa_lock_mods_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_lock_mods_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_lock_mods_end*(i: xcb_xkb_sa_lock_mods_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_set_group_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_set_group_t)
# ##
# proc xcb_xkb_sa_set_group_next*(i: ptr xcb_xkb_sa_set_group_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_set_group_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_set_group_end*(i: xcb_xkb_sa_set_group_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_latch_group_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_latch_group_t)
# ##
# proc xcb_xkb_sa_latch_group_next*(i: ptr xcb_xkb_sa_latch_group_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_latch_group_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_latch_group_end*(i: xcb_xkb_sa_latch_group_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_lock_group_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_lock_group_t)
# ##
# proc xcb_xkb_sa_lock_group_next*(i: ptr xcb_xkb_sa_lock_group_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_lock_group_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_lock_group_end*(i: xcb_xkb_sa_lock_group_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_move_ptr_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_move_ptr_t)
# ##
# proc xcb_xkb_sa_move_ptr_next*(i: ptr xcb_xkb_sa_move_ptr_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_move_ptr_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_move_ptr_end*(i: xcb_xkb_sa_move_ptr_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_ptr_btn_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_ptr_btn_t)
# ##
# proc xcb_xkb_sa_ptr_btn_next*(i: ptr xcb_xkb_sa_ptr_btn_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_ptr_btn_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_ptr_btn_end*(i: xcb_xkb_sa_ptr_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_lock_ptr_btn_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_lock_ptr_btn_t)
# ##
# proc xcb_xkb_sa_lock_ptr_btn_next*(i: ptr xcb_xkb_sa_lock_ptr_btn_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_lock_ptr_btn_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_lock_ptr_btn_end*(i: xcb_xkb_sa_lock_ptr_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_set_ptr_dflt_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_set_ptr_dflt_t)
# ##
# proc xcb_xkb_sa_set_ptr_dflt_next*(i: ptr xcb_xkb_sa_set_ptr_dflt_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_set_ptr_dflt_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_set_ptr_dflt_end*(i: xcb_xkb_sa_set_ptr_dflt_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_iso_lock_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_iso_lock_t)
# ##
# proc xcb_xkb_sa_iso_lock_next*(i: ptr xcb_xkb_sa_iso_lock_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_iso_lock_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_iso_lock_end*(i: xcb_xkb_sa_iso_lock_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_terminate_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_terminate_t)
# ##
# proc xcb_xkb_sa_terminate_next*(i: ptr xcb_xkb_sa_terminate_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_terminate_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_terminate_end*(i: xcb_xkb_sa_terminate_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_switch_screen_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_switch_screen_t)
# ##
# proc xcb_xkb_sa_switch_screen_next*(i: ptr xcb_xkb_sa_switch_screen_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_switch_screen_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_switch_screen_end*(i: xcb_xkb_sa_switch_screen_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_set_controls_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_set_controls_t)
# ##
# proc xcb_xkb_sa_set_controls_next*(i: ptr xcb_xkb_sa_set_controls_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_set_controls_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_set_controls_end*(i: xcb_xkb_sa_set_controls_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_lock_controls_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_lock_controls_t)
# ##
# proc xcb_xkb_sa_lock_controls_next*(i: ptr xcb_xkb_sa_lock_controls_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_lock_controls_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_lock_controls_end*(i: xcb_xkb_sa_lock_controls_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_action_message_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_action_message_t)
# ##
# proc xcb_xkb_sa_action_message_next*(i: ptr xcb_xkb_sa_action_message_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_action_message_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_action_message_end*(i: xcb_xkb_sa_action_message_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_redirect_key_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_redirect_key_t)
# ##
# proc xcb_xkb_sa_redirect_key_next*(i: ptr xcb_xkb_sa_redirect_key_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_redirect_key_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_redirect_key_end*(i: xcb_xkb_sa_redirect_key_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_device_btn_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_device_btn_t)
# ##
# proc xcb_xkb_sa_device_btn_next*(i: ptr xcb_xkb_sa_device_btn_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_device_btn_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_device_btn_end*(i: xcb_xkb_sa_device_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_lock_device_btn_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_lock_device_btn_t)
# ##
# proc xcb_xkb_sa_lock_device_btn_next*(i: ptr xcb_xkb_sa_lock_device_btn_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_lock_device_btn_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_lock_device_btn_end*(i: xcb_xkb_sa_lock_device_btn_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sa_device_valuator_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sa_device_valuator_t)
# ##
# proc xcb_xkb_sa_device_valuator_next*(i: ptr xcb_xkb_sa_device_valuator_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sa_device_valuator_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sa_device_valuator_end*(i: xcb_xkb_sa_device_valuator_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_si_action_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_si_action_t)
# ##
# proc xcb_xkb_si_action_next*(i: ptr xcb_xkb_si_action_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_si_action_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_si_action_end*(i: xcb_xkb_si_action_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_sym_interpret_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_sym_interpret_t)
# ##
# proc xcb_xkb_sym_interpret_next*(i: ptr xcb_xkb_sym_interpret_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_sym_interpret_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_sym_interpret_end*(i: xcb_xkb_sym_interpret_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xkb_action_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xkb_action_t)
# ##
# proc xcb_xkb_action_next*(i: ptr xcb_xkb_action_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xkb_action_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xkb_action_end*(i: xcb_xkb_action_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_use_extension_unchecked*(c: ptr xcb_connection_t;
# wantedMajor: uint16; wantedMinor: uint16): xcb_xkb_use_extension_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_use_extension_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_select_events_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectWhich: uint16; clear: uint16;
# selectAll: uint16; affectMap: uint16;
# map: uint16; details: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_select_events_aux_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectWhich: uint16; clear: uint16;
# selectAll: uint16; affectMap: uint16;
# map: uint16; details: ptr xcb_xkb_select_events_details_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_select_events_aux*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectWhich: uint16; clear: uint16;
# selectAll: uint16; affectMap: uint16;
# map: uint16;
# details: ptr xcb_xkb_select_events_details_t): xcb_void_cookie_t
# proc xcb_xkb_select_events_details*(R: ptr xcb_xkb_select_events_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_bell_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# bellClass: xcb_xkb_bell_class_spec_t;
# bellID: xcb_xkb_id_spec_t; percent: int8;
# forceSound: uint8; eventOnly: uint8; pitch: int16;
# duration: int16; name: xcb_atom_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_bell*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
# bellClass: xcb_xkb_bell_class_spec_t; bellID: xcb_xkb_id_spec_t;
# percent: int8; forceSound: uint8; eventOnly: uint8;
# pitch: int16; duration: int16; name: xcb_atom_t;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_state*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_state_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_state_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_state_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_state_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_state_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_state_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_latch_lock_state_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectModLocks: uint8; modLocks: uint8;
# lockGroup: uint8; groupLock: uint8;
# affectModLatches: uint8;
# latchGroup: uint8; groupLatch: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_latch_lock_state*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectModLocks: uint8; modLocks: uint8;
# lockGroup: uint8; groupLock: uint8;
# affectModLatches: uint8; latchGroup: uint8;
# groupLatch: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_controls*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_controls_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_controls_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_controls_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_controls_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_controls_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_controls_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_controls_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_controls_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectInternalRealMods: uint8;
# internalRealMods: uint8;
# affectIgnoreLockRealMods: uint8;
# ignoreLockRealMods: uint8;
# affectInternalVirtualMods: uint16;
# internalVirtualMods: uint16;
# affectIgnoreLockVirtualMods: uint16;
# ignoreLockVirtualMods: uint16;
# mouseKeysDfltBtn: uint8; groupsWrap: uint8;
# accessXOptions: uint16;
# affectEnabledControls: uint32;
# enabledControls: uint32;
# changeControls: uint32; repeatDelay: uint16;
# repeatInterval: uint16;
# slowKeysDelay: uint16;
# debounceDelay: uint16;
# mouseKeysDelay: uint16;
# mouseKeysInterval: uint16;
# mouseKeysTimeToMax: uint16;
# mouseKeysMaxSpeed: uint16;
# mouseKeysCurve: int16;
# accessXTimeout: uint16;
# accessXTimeoutMask: uint32;
# accessXTimeoutValues: uint32;
# accessXTimeoutOptionsMask: uint16;
# accessXTimeoutOptionsValues: uint16;
# perKeyRepeat: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_controls*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# affectInternalRealMods: uint8;
# internalRealMods: uint8;
# affectIgnoreLockRealMods: uint8;
# ignoreLockRealMods: uint8;
# affectInternalVirtualMods: uint16;
# internalVirtualMods: uint16;
# affectIgnoreLockVirtualMods: uint16;
# ignoreLockVirtualMods: uint16;
# mouseKeysDfltBtn: uint8; groupsWrap: uint8;
# accessXOptions: uint16;
# affectEnabledControls: uint32;
# enabledControls: uint32; changeControls: uint32;
# repeatDelay: uint16; repeatInterval: uint16;
# slowKeysDelay: uint16; debounceDelay: uint16;
# mouseKeysDelay: uint16; mouseKeysInterval: uint16;
# mouseKeysTimeToMax: uint16;
# mouseKeysMaxSpeed: uint16; mouseKeysCurve: int16;
# accessXTimeout: uint16; accessXTimeoutMask: uint32;
# accessXTimeoutValues: uint32;
# accessXTimeoutOptionsMask: uint16;
# accessXTimeoutOptionsValues: uint16;
# perKeyRepeat: ptr uint8): xcb_void_cookie_t
# proc xcb_xkb_get_map_map_vmods_rtrn_end*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): xcb_generic_iterator_t
# proc xcb_xkb_get_map_map_explicit_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_get_map_map_explicit_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_explicit_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_get_map_map_modmap_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_get_map_map_modmap_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_modmap_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_get_map_map_vmodmap_rtrn*(S: ptr xcb_xkb_get_map_map_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_get_map_map_vmodmap_rtrn_length*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_vmodmap_rtrn_iterator*(R: ptr xcb_xkb_get_map_reply_t;
# S: ptr xcb_xkb_get_map_map_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_get_map_map_serialize*(_buffer: ptr pointer; nTypes: uint8;
# nKeySyms: uint8; nKeyActions: uint8;
# totalActions: uint16;
# totalKeyBehaviors: uint8;
# virtualMods: uint16;
# totalKeyExplicit: uint8;
# totalModMapKeys: uint8;
# totalVModMapKeys: uint8; present: uint16;
# _aux: ptr xcb_xkb_get_map_map_t): cint
# proc xcb_xkb_get_map_map_sizeof*(_buffer: pointer; nTypes: uint8;
# nKeySyms: uint8; nKeyActions: uint8;
# totalActions: uint16;
# totalKeyBehaviors: uint8; virtualMods: uint16;
# totalKeyExplicit: uint8;
# totalModMapKeys: uint8;
# totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_get_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# proc xcb_xkb_get_map_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; full: uint16;
# partial: uint16; firstType: uint8;
# nTypes: uint8; firstKeySym: xcb_keycode_t;
# nKeySyms: uint8; firstKeyAction: xcb_keycode_t;
# nKeyActions: uint8;
# firstKeyBehavior: xcb_keycode_t;
# nKeyBehaviors: uint8; virtualMods: uint16;
# firstKeyExplicit: xcb_keycode_t;
# nKeyExplicit: uint8;
# firstModMapKey: xcb_keycode_t;
# nModMapKeys: uint8;
# firstVModMapKey: xcb_keycode_t;
# nVModMapKeys: uint8): xcb_xkb_get_map_cookie_t
# proc xcb_xkb_set_map_values_types_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_types_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_key_type_iterator_t
# proc xcb_xkb_set_map_values_syms_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_syms_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_sym_map_iterator_t
# proc xcb_xkb_set_map_values_actions_count*(S: ptr xcb_xkb_set_map_values_t): ptr uint8
# proc xcb_xkb_set_map_values_actions_count_length*(
# R: ptr xcb_xkb_set_map_request_t; S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_actions_count_end*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_map_values_actions*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_action_t
# proc xcb_xkb_set_map_values_actions_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_actions_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_set_map_values_behaviors*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_set_behavior_t
# proc xcb_xkb_set_map_values_behaviors_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_behaviors_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_behavior_iterator_t
# proc xcb_xkb_set_map_values_vmods*(S: ptr xcb_xkb_set_map_values_t): ptr uint8
# proc xcb_xkb_set_map_values_vmods_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_vmods_end*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_map_values_explicit*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_set_map_values_explicit_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_explicit_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_set_map_values_modmap*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_set_map_values_modmap_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_modmap_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_set_map_values_vmodmap*(S: ptr xcb_xkb_set_map_values_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_set_map_values_vmodmap_length*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_vmodmap_iterator*(R: ptr xcb_xkb_set_map_request_t;
# S: ptr xcb_xkb_set_map_values_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_set_map_values_serialize*(_buffer: ptr pointer; nTypes: uint8;
# nKeySyms: uint8; nKeyActions: uint8;
# totalActions: uint16;
# totalKeyBehaviors: uint8;
# virtualMods: uint16;
# totalKeyExplicit: uint8;
# totalModMapKeys: uint8;
# totalVModMapKeys: uint8;
# present: uint16;
# _aux: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_unpack*(_buffer: pointer; nTypes: uint8;
# nKeySyms: uint8; nKeyActions: uint8;
# totalActions: uint16;
# totalKeyBehaviors: uint8;
# virtualMods: uint16;
# totalKeyExplicit: uint8;
# totalModMapKeys: uint8;
# totalVModMapKeys: uint8; present: uint16;
# _aux: ptr xcb_xkb_set_map_values_t): cint
# proc xcb_xkb_set_map_values_sizeof*(_buffer: pointer; nTypes: uint8;
# nKeySyms: uint8; nKeyActions: uint8;
# totalActions: uint16;
# totalKeyBehaviors: uint8;
# virtualMods: uint16;
# totalKeyExplicit: uint8;
# totalModMapKeys: uint8;
# totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_set_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_map_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; present: uint16;
# flags: uint16; minKeyCode: xcb_keycode_t;
# maxKeyCode: xcb_keycode_t; firstType: uint8;
# nTypes: uint8; firstKeySym: xcb_keycode_t;
# nKeySyms: uint8; totalSyms: uint16;
# firstKeyAction: xcb_keycode_t; nKeyActions: uint8;
# totalActions: uint16;
# firstKeyBehavior: xcb_keycode_t;
# nKeyBehaviors: uint8; totalKeyBehaviors: uint8;
# firstKeyExplicit: xcb_keycode_t;
# nKeyExplicit: uint8; totalKeyExplicit: uint8;
# firstModMapKey: xcb_keycode_t; nModMapKeys: uint8;
# totalModMapKeys: uint8;
# firstVModMapKey: xcb_keycode_t;
# nVModMapKeys: uint8; totalVModMapKeys: uint8;
# virtualMods: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_map*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
# present: uint16; flags: uint16; minKeyCode: xcb_keycode_t;
# maxKeyCode: xcb_keycode_t; firstType: uint8; nTypes: uint8;
# firstKeySym: xcb_keycode_t; nKeySyms: uint8;
# totalSyms: uint16; firstKeyAction: xcb_keycode_t;
# nKeyActions: uint8; totalActions: uint16;
# firstKeyBehavior: xcb_keycode_t; nKeyBehaviors: uint8;
# totalKeyBehaviors: uint8; firstKeyExplicit: xcb_keycode_t;
# nKeyExplicit: uint8; totalKeyExplicit: uint8;
# firstModMapKey: xcb_keycode_t; nModMapKeys: uint8;
# totalModMapKeys: uint8; firstVModMapKey: xcb_keycode_t;
# nVModMapKeys: uint8; totalVModMapKeys: uint8;
# virtualMods: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_map_aux_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# present: uint16; flags: uint16;
# minKeyCode: xcb_keycode_t;
# maxKeyCode: xcb_keycode_t; firstType: uint8;
# nTypes: uint8; firstKeySym: xcb_keycode_t;
# nKeySyms: uint8; totalSyms: uint16;
# firstKeyAction: xcb_keycode_t;
# nKeyActions: uint8; totalActions: uint16;
# firstKeyBehavior: xcb_keycode_t;
# nKeyBehaviors: uint8;
# totalKeyBehaviors: uint8;
# firstKeyExplicit: xcb_keycode_t;
# nKeyExplicit: uint8; totalKeyExplicit: uint8;
# firstModMapKey: xcb_keycode_t;
# nModMapKeys: uint8; totalModMapKeys: uint8;
# firstVModMapKey: xcb_keycode_t;
# nVModMapKeys: uint8; totalVModMapKeys: uint8;
# virtualMods: uint16;
# values: ptr xcb_xkb_set_map_values_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_map_aux*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; present: uint16;
# flags: uint16; minKeyCode: xcb_keycode_t;
# maxKeyCode: xcb_keycode_t; firstType: uint8;
# nTypes: uint8; firstKeySym: xcb_keycode_t;
# nKeySyms: uint8; totalSyms: uint16;
# firstKeyAction: xcb_keycode_t; nKeyActions: uint8;
# totalActions: uint16; firstKeyBehavior: xcb_keycode_t;
# nKeyBehaviors: uint8; totalKeyBehaviors: uint8;
# firstKeyExplicit: xcb_keycode_t; nKeyExplicit: uint8;
# totalKeyExplicit: uint8; firstModMapKey: xcb_keycode_t;
# nModMapKeys: uint8; totalModMapKeys: uint8;
# firstVModMapKey: xcb_keycode_t; nVModMapKeys: uint8;
# totalVModMapKeys: uint8; virtualMods: uint16;
# values: ptr xcb_xkb_set_map_values_t): xcb_void_cookie_t
# proc xcb_xkb_set_map_values*(R: ptr xcb_xkb_set_map_request_t): pointer
# proc xcb_xkb_get_compat_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_compat_map*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; groups: uint8;
# getAllSI: uint8; firstSI: uint16; nSI: uint16): xcb_xkb_get_compat_map_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_compat_map_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# groups: uint8; getAllSI: uint8;
# firstSI: uint16; nSI: uint16): xcb_xkb_get_compat_map_cookie_t
# proc xcb_xkb_get_compat_map_si_rtrn*(R: ptr xcb_xkb_get_compat_map_reply_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_get_compat_map_si_rtrn_length*(R: ptr xcb_xkb_get_compat_map_reply_t): cint
# proc xcb_xkb_get_compat_map_si_rtrn_iterator*(
# R: ptr xcb_xkb_get_compat_map_reply_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_get_compat_map_group_rtrn*(R: ptr xcb_xkb_get_compat_map_reply_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_get_compat_map_group_rtrn_length*(
# R: ptr xcb_xkb_get_compat_map_reply_t): cint
# proc xcb_xkb_get_compat_map_group_rtrn_iterator*(
# R: ptr xcb_xkb_get_compat_map_reply_t): xcb_xkb_mod_def_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_compat_map_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_compat_map_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_compat_map_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_compat_map_reply_t
# proc xcb_xkb_set_compat_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_compat_map_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# recomputeActions: uint8;
# truncateSI: uint8; groups: uint8;
# firstSI: uint16; nSI: uint16;
# si: ptr xcb_xkb_sym_interpret_t;
# groupMaps: ptr xcb_xkb_mod_def_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_compat_map*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# recomputeActions: uint8; truncateSI: uint8;
# groups: uint8; firstSI: uint16; nSI: uint16;
# si: ptr xcb_xkb_sym_interpret_t;
# groupMaps: ptr xcb_xkb_mod_def_t): xcb_void_cookie_t
# proc xcb_xkb_set_compat_map_si*(R: ptr xcb_xkb_set_compat_map_request_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_set_compat_map_si_length*(R: ptr xcb_xkb_set_compat_map_request_t): cint
# proc xcb_xkb_set_compat_map_si_iterator*(R: ptr xcb_xkb_set_compat_map_request_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_set_compat_map_group_maps*(R: ptr xcb_xkb_set_compat_map_request_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_set_compat_map_group_maps_length*(
# R: ptr xcb_xkb_set_compat_map_request_t): cint
# proc xcb_xkb_set_compat_map_group_maps_iterator*(
# R: ptr xcb_xkb_set_compat_map_request_t): xcb_xkb_mod_def_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_indicator_state*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_indicator_state_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_indicator_state_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t): xcb_xkb_get_indicator_state_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_indicator_state_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_indicator_state_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_indicator_state_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_indicator_state_reply_t
# proc xcb_xkb_get_indicator_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_indicator_map*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; which: uint32): xcb_xkb_get_indicator_map_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_indicator_map_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; which: uint32): xcb_xkb_get_indicator_map_cookie_t
# proc xcb_xkb_get_indicator_map_maps*(R: ptr xcb_xkb_get_indicator_map_reply_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_get_indicator_map_maps_length*(
# R: ptr xcb_xkb_get_indicator_map_reply_t): cint
# proc xcb_xkb_get_indicator_map_maps_iterator*(
# R: ptr xcb_xkb_get_indicator_map_reply_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_indicator_map_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_indicator_map_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_indicator_map_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_indicator_map_reply_t
# proc xcb_xkb_set_indicator_map_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_indicator_map_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# which: uint32;
# maps: ptr xcb_xkb_indicator_map_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_indicator_map*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; which: uint32;
# maps: ptr xcb_xkb_indicator_map_t): xcb_void_cookie_t
# proc xcb_xkb_set_indicator_map_maps*(R: ptr xcb_xkb_set_indicator_map_request_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_set_indicator_map_maps_length*(
# R: ptr xcb_xkb_set_indicator_map_request_t): cint
# proc xcb_xkb_set_indicator_map_maps_iterator*(
# R: ptr xcb_xkb_set_indicator_map_request_t): xcb_xkb_indicator_map_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_named_indicator*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t): xcb_xkb_get_named_indicator_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_named_indicator_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t): xcb_xkb_get_named_indicator_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_named_indicator_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_named_indicator_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_named_indicator_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_named_indicator_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_named_indicator_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t; setState: uint8; on: uint8;
# setMap: uint8; createMap: uint8; map_flags: uint8; map_whichGroups: uint8;
# map_groups: uint8; map_whichMods: uint8; map_realMods: uint8;
# map_vmods: uint16; map_ctrls: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_named_indicator*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t; indicator: xcb_atom_t;
# setState: uint8; on: uint8; setMap: uint8;
# createMap: uint8; map_flags: uint8;
# map_whichGroups: uint8; map_groups: uint8;
# map_whichMods: uint8; map_realMods: uint8;
# map_vmods: uint16; map_ctrls: uint32): xcb_void_cookie_t
# proc xcb_xkb_get_names_value_list_type_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_type_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_type_names_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_n_levels_per_type*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr uint8
# proc xcb_xkb_get_names_value_list_n_levels_per_type_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_n_levels_per_type_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_kt_level_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_kt_level_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_kt_level_names_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_indicator_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_indicator_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_indicator_names_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_virtual_mod_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_virtual_mod_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_virtual_mod_names_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_groups*(S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_groups_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_groups_end*(R: ptr xcb_xkb_get_names_reply_t;
# S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_key_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_get_names_value_list_key_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_key_names_iterator*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_get_names_value_list_key_aliases*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_get_names_value_list_key_aliases_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_key_aliases_iterator*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_get_names_value_list_radio_group_names*(
# S: ptr xcb_xkb_get_names_value_list_t): ptr xcb_atom_t
# proc xcb_xkb_get_names_value_list_radio_group_names_length*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_radio_group_names_end*(
# R: ptr xcb_xkb_get_names_reply_t; S: ptr xcb_xkb_get_names_value_list_t): xcb_generic_iterator_t
# proc xcb_xkb_get_names_value_list_serialize*(_buffer: ptr pointer; nTypes: uint8;
# indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8; nRadioGroups: uint8; which: uint32;
# _aux: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_unpack*(_buffer: pointer; nTypes: uint8;
# indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8; nRadioGroups: uint8; which: uint32;
# _aux: ptr xcb_xkb_get_names_value_list_t): cint
# proc xcb_xkb_get_names_value_list_sizeof*(_buffer: pointer; nTypes: uint8;
# indicators: uint32; virtualMods: uint16; groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8; nRadioGroups: uint8; which: uint32): cint
# proc xcb_xkb_get_names_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_names*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
# which: uint32): xcb_xkb_get_names_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_names_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# which: uint32): xcb_xkb_get_names_cookie_t
# proc xcb_xkb_get_names_value_list*(R: ptr xcb_xkb_get_names_reply_t): pointer
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_names_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_names_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_names_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_names_reply_t
# proc xcb_xkb_set_names_values_type_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_type_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_type_names_end*(R: ptr xcb_xkb_set_names_request_t;
# S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_n_levels_per_type*(
# S: ptr xcb_xkb_set_names_values_t): ptr uint8
# proc xcb_xkb_set_names_values_n_levels_per_type_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_n_levels_per_type_end*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_kt_level_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_kt_level_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_kt_level_names_end*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_indicator_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_indicator_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_indicator_names_end*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_virtual_mod_names*(
# S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_virtual_mod_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_virtual_mod_names_end*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_groups*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_groups_length*(R: ptr xcb_xkb_set_names_request_t;
# S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_groups_end*(R: ptr xcb_xkb_set_names_request_t;
# S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_key_names*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_set_names_values_key_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_key_names_iterator*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_set_names_values_key_aliases*(S: ptr xcb_xkb_set_names_values_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_set_names_values_key_aliases_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_key_aliases_iterator*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_set_names_values_radio_group_names*(
# S: ptr xcb_xkb_set_names_values_t): ptr xcb_atom_t
# proc xcb_xkb_set_names_values_radio_group_names_length*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_radio_group_names_end*(
# R: ptr xcb_xkb_set_names_request_t; S: ptr xcb_xkb_set_names_values_t): xcb_generic_iterator_t
# proc xcb_xkb_set_names_values_serialize*(_buffer: ptr pointer; nTypes: uint8;
# indicators: uint32;
# virtualMods: uint16;
# groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8;
# nRadioGroups: uint8; which: uint32;
# _aux: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_unpack*(_buffer: pointer; nTypes: uint8;
# indicators: uint32; virtualMods: uint16;
# groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8; nRadioGroups: uint8;
# which: uint32;
# _aux: ptr xcb_xkb_set_names_values_t): cint
# proc xcb_xkb_set_names_values_sizeof*(_buffer: pointer; nTypes: uint8;
# indicators: uint32; virtualMods: uint16;
# groupNames: uint8; nKeys: uint8;
# nKeyAliases: uint8; nRadioGroups: uint8;
# which: uint32): cint
# proc xcb_xkb_set_names_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_names_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# virtualMods: uint16; which: uint32;
# firstType: uint8; nTypes: uint8;
# firstKTLevelt: uint8; nKTLevels: uint8;
# indicators: uint32; groupNames: uint8;
# nRadioGroups: uint8; firstKey: xcb_keycode_t;
# nKeys: uint8; nKeyAliases: uint8;
# totalKTLevelNames: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_names*(c: ptr xcb_connection_t; deviceSpec: xcb_xkb_device_spec_t;
# virtualMods: uint16; which: uint32; firstType: uint8;
# nTypes: uint8; firstKTLevelt: uint8; nKTLevels: uint8;
# indicators: uint32; groupNames: uint8;
# nRadioGroups: uint8; firstKey: xcb_keycode_t;
# nKeys: uint8; nKeyAliases: uint8;
# totalKTLevelNames: uint16; values: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_names_aux_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# virtualMods: uint16; which: uint32;
# firstType: uint8; nTypes: uint8;
# firstKTLevelt: uint8; nKTLevels: uint8;
# indicators: uint32; groupNames: uint8;
# nRadioGroups: uint8; firstKey: xcb_keycode_t;
# nKeys: uint8; nKeyAliases: uint8;
# totalKTLevelNames: uint16;
# values: ptr xcb_xkb_set_names_values_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_names_aux*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# virtualMods: uint16; which: uint32;
# firstType: uint8; nTypes: uint8;
# firstKTLevelt: uint8; nKTLevels: uint8;
# indicators: uint32; groupNames: uint8;
# nRadioGroups: uint8; firstKey: xcb_keycode_t;
# nKeys: uint8; nKeyAliases: uint8;
# totalKTLevelNames: uint16;
# values: ptr xcb_xkb_set_names_values_t): xcb_void_cookie_t
# proc xcb_xkb_set_names_values*(R: ptr xcb_xkb_set_names_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_per_client_flags*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; change: uint32;
# value: uint32; ctrlsToChange: uint32;
# autoCtrls: uint32; autoCtrlsValues: uint32): xcb_xkb_per_client_flags_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_per_client_flags_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# change: uint32; value: uint32;
# ctrlsToChange: uint32;
# autoCtrls: uint32;
# autoCtrlsValues: uint32): xcb_xkb_per_client_flags_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_per_client_flags_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_per_client_flags_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_per_client_flags_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_per_client_flags_reply_t
# proc xcb_xkb_list_components_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_list_components*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; maxNames: uint16): xcb_xkb_list_components_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_list_components_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# maxNames: uint16): xcb_xkb_list_components_cookie_t
# proc xcb_xkb_list_components_keymaps_length*(
# R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_keymaps_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_keycodes_length*(
# R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_keycodes_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_types_length*(R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_types_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_compat_maps_length*(
# R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_compat_maps_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_symbols_length*(
# R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_symbols_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# proc xcb_xkb_list_components_geometries_length*(
# R: ptr xcb_xkb_list_components_reply_t): cint
# proc xcb_xkb_list_components_geometries_iterator*(
# R: ptr xcb_xkb_list_components_reply_t): xcb_xkb_listing_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_list_components_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_list_components_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_list_components_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_list_components_reply_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_type_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_sym_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_action_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_set_behavior_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_set_behavior_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_set_explicit_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_set_explicit_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_mod_map_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_mod_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_v_mod_map_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_v_mod_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_types_map_serialize*(_buffer: ptr pointer;
# nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
# totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
# totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16;
# _aux: ptr xcb_xkb_get_kbd_by_name_replies_types_map_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_unpack*(_buffer: pointer;
# nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
# totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
# totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16;
# _aux: ptr xcb_xkb_get_kbd_by_name_replies_types_map_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_types_map_sizeof*(_buffer: pointer;
# nTypes: uint8; nKeySyms: uint8; nKeyActions: uint8; totalActions: uint16;
# totalKeyBehaviors: uint8; virtualMods: uint16; totalKeyExplicit: uint8;
# totalModMapKeys: uint8; totalVModMapKeys: uint8; present: uint16): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr uint8
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_name_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_name_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_key_alias_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_key_alias_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_atom_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_generic_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize*(
# _buffer: ptr pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
# groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
# which: uint32;
# _aux: ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack*(
# _buffer: pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
# groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
# which: uint32;
# _aux: ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof*(
# _buffer: pointer; nTypes: uint8; indicators: uint32; virtualMods: uint16;
# groupNames: uint8; nKeys: uint8; nKeyAliases: uint8; nRadioGroups: uint8;
# which: uint32): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_sym_interpret_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_sym_interpret_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_mod_def_t
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_mod_def_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps*(
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_indicator_map_t
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator*(
# R: ptr xcb_xkb_get_kbd_by_name_reply_t;
# S: ptr xcb_xkb_get_kbd_by_name_replies_t): xcb_xkb_indicator_map_iterator_t
# proc xcb_xkb_get_kbd_by_name_replies_key_names_value_list*(
# R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
# proc xcb_xkb_get_kbd_by_name_replies_geometry_label_font*(
# R: ptr xcb_xkb_get_kbd_by_name_replies_t): ptr xcb_xkb_counted_string_16_t
# proc xcb_xkb_get_kbd_by_name_replies_serialize*(_buffer: ptr pointer;
# reported: uint16; _aux: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_unpack*(_buffer: pointer; reported: uint16;
# _aux: ptr xcb_xkb_get_kbd_by_name_replies_t): cint
# proc xcb_xkb_get_kbd_by_name_replies_sizeof*(_buffer: pointer; reported: uint16): cint
# proc xcb_xkb_get_kbd_by_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_kbd_by_name*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; need: uint16;
# want: uint16; load: uint8): xcb_xkb_get_kbd_by_name_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_kbd_by_name_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# need: uint16; want: uint16; load: uint8): xcb_xkb_get_kbd_by_name_cookie_t
# proc xcb_xkb_get_kbd_by_name_replies*(R: ptr xcb_xkb_get_kbd_by_name_reply_t): pointer
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_kbd_by_name_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_kbd_by_name_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_kbd_by_name_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_kbd_by_name_reply_t
# proc xcb_xkb_get_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_get_device_info*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; wanted: uint16;
# allButtons: uint8; firstButton: uint8;
# nButtons: uint8;
# ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t): xcb_xkb_get_device_info_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_get_device_info_unchecked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# wanted: uint16; allButtons: uint8;
# firstButton: uint8; nButtons: uint8;
# ledClass: xcb_xkb_led_class_spec_t;
# ledID: xcb_xkb_id_spec_t): xcb_xkb_get_device_info_cookie_t
# proc xcb_xkb_get_device_info_name*(R: ptr xcb_xkb_get_device_info_reply_t): ptr xcb_xkb_string8_t
# proc xcb_xkb_get_device_info_name_length*(R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_name_end*(R: ptr xcb_xkb_get_device_info_reply_t): xcb_generic_iterator_t
# proc xcb_xkb_get_device_info_btn_actions*(R: ptr xcb_xkb_get_device_info_reply_t): ptr xcb_xkb_action_t
# proc xcb_xkb_get_device_info_btn_actions_length*(
# R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_btn_actions_iterator*(
# R: ptr xcb_xkb_get_device_info_reply_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_get_device_info_leds_length*(R: ptr xcb_xkb_get_device_info_reply_t): cint
# proc xcb_xkb_get_device_info_leds_iterator*(
# R: ptr xcb_xkb_get_device_info_reply_t): xcb_xkb_device_led_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_get_device_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_get_device_info_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_get_device_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_get_device_info_reply_t
# proc xcb_xkb_set_device_info_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xkb_set_device_info_checked*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t;
# firstBtn: uint8; nBtns: uint8;
# change: uint16; nDeviceLedFBs: uint16;
# btnActions: ptr xcb_xkb_action_t;
# leds: ptr xcb_xkb_device_led_info_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_device_info*(c: ptr xcb_connection_t;
# deviceSpec: xcb_xkb_device_spec_t; firstBtn: uint8;
# nBtns: uint8; change: uint16;
# nDeviceLedFBs: uint16;
# btnActions: ptr xcb_xkb_action_t;
# leds: ptr xcb_xkb_device_led_info_t): xcb_void_cookie_t
# proc xcb_xkb_set_device_info_btn_actions*(
# R: ptr xcb_xkb_set_device_info_request_t): ptr xcb_xkb_action_t
# proc xcb_xkb_set_device_info_btn_actions_length*(
# R: ptr xcb_xkb_set_device_info_request_t): cint
# proc xcb_xkb_set_device_info_btn_actions_iterator*(
# R: ptr xcb_xkb_set_device_info_request_t): xcb_xkb_action_iterator_t
# proc xcb_xkb_set_device_info_leds_length*(
# R: ptr xcb_xkb_set_device_info_request_t): cint
# proc xcb_xkb_set_device_info_leds_iterator*(
# R: ptr xcb_xkb_set_device_info_request_t): xcb_xkb_device_led_info_iterator_t
# proc xcb_xkb_set_debugging_flags_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xkb_set_debugging_flags*(c: ptr xcb_connection_t; msgLength: uint16;
# affectFlags: uint32; flags: uint32;
# affectCtrls: uint32; ctrls: uint32;
# message: ptr xcb_xkb_string8_t): xcb_xkb_set_debugging_flags_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xkb_set_debugging_flags_unchecked*(c: ptr xcb_connection_t;
# msgLength: uint16; affectFlags: uint32; flags: uint32;
# affectCtrls: uint32; ctrls: uint32; message: ptr xcb_xkb_string8_t): xcb_xkb_set_debugging_flags_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xkb_set_debugging_flags_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xkb_set_debugging_flags_reply*(c: ptr xcb_connection_t; cookie: xcb_xkb_set_debugging_flags_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xkb_set_debugging_flags_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xprint.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_XPrint_API XCB XPrint API
# ## @brief XPrint XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_XPRINT_MAJOR_VERSION* = 1
# XCB_XPRINT_MINOR_VERSION* = 0
# var xcb_x_print_id*: xcb_extension_t
# type
# xcb_x_print_string8_t* = char
# ## *
# ## @brief xcb_x_print_string8_iterator_t
# ##
# type
# xcb_x_print_string8_iterator_t* {.bycopy.} = object
# data*: ptr xcb_x_print_string8_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_x_print_printer_t
# ##
# type
# xcb_x_print_printer_t* {.bycopy.} = object
# nameLen*: uint32
# descLen*: uint32
# ## *
# ## @brief xcb_x_print_printer_iterator_t
# ##
# type
# xcb_x_print_printer_iterator_t* {.bycopy.} = object
# data*: ptr xcb_x_print_printer_t
# rem*: cint
# index*: cint
# xcb_x_print_pcontext_t* = uint32
# ## *
# ## @brief xcb_x_print_pcontext_iterator_t
# ##
# type
# xcb_x_print_pcontext_iterator_t* {.bycopy.} = object
# data*: ptr xcb_x_print_pcontext_t
# rem*: cint
# index*: cint
# xcb_x_print_get_doc_t* = enum
# XCB_X_PRINT_GET_DOC_FINISHED = 0, XCB_X_PRINT_GET_DOC_SECOND_CONSUMER = 1
# xcb_x_print_ev_mask_t* = enum
# XCB_X_PRINT_EV_MASK_NO_EVENT_MASK = 0, XCB_X_PRINT_EV_MASK_PRINT_MASK = 1,
# XCB_X_PRINT_EV_MASK_ATTRIBUTE_MASK = 2
# xcb_x_print_detail_t* = enum
# XCB_X_PRINT_DETAIL_START_JOB_NOTIFY = 1, XCB_X_PRINT_DETAIL_END_JOB_NOTIFY = 2,
# XCB_X_PRINT_DETAIL_START_DOC_NOTIFY = 3, XCB_X_PRINT_DETAIL_END_DOC_NOTIFY = 4,
# XCB_X_PRINT_DETAIL_START_PAGE_NOTIFY = 5,
# XCB_X_PRINT_DETAIL_END_PAGE_NOTIFY = 6
# xcb_x_print_attr_t* = enum
# XCB_X_PRINT_ATTR_JOB_ATTR = 1, XCB_X_PRINT_ATTR_DOC_ATTR = 2,
# XCB_X_PRINT_ATTR_PAGE_ATTR = 3, XCB_X_PRINT_ATTR_PRINTER_ATTR = 4,
# XCB_X_PRINT_ATTR_SERVER_ATTR = 5, XCB_X_PRINT_ATTR_MEDIUM_ATTR = 6,
# XCB_X_PRINT_ATTR_SPOOLER_ATTR = 7
# ## *
# ## @brief xcb_x_print_print_query_version_cookie_t
# ##
# type
# xcb_x_print_print_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_query_version.
# const
# XCB_X_PRINT_PRINT_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_x_print_print_query_version_request_t
# ##
# type
# xcb_x_print_print_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_x_print_print_query_version_reply_t
# ##
# type
# xcb_x_print_print_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major_version*: uint16
# minor_version*: uint16
# ## *
# ## @brief xcb_x_print_print_get_printer_list_cookie_t
# ##
# type
# xcb_x_print_print_get_printer_list_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_printer_list.
# const
# XCB_X_PRINT_PRINT_GET_PRINTER_LIST* = 1
# ## *
# ## @brief xcb_x_print_print_get_printer_list_request_t
# ##
# type
# xcb_x_print_print_get_printer_list_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# printerNameLen*: uint32
# localeLen*: uint32
# ## *
# ## @brief xcb_x_print_print_get_printer_list_reply_t
# ##
# type
# xcb_x_print_print_get_printer_list_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# listCount*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_x_print_print_rehash_printer_list.
# const
# XCB_X_PRINT_PRINT_REHASH_PRINTER_LIST* = 20
# ## *
# ## @brief xcb_x_print_print_rehash_printer_list_request_t
# ##
# type
# xcb_x_print_print_rehash_printer_list_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## * Opcode for xcb_x_print_create_context.
# const
# XCB_X_PRINT_CREATE_CONTEXT* = 2
# ## *
# ## @brief xcb_x_print_create_context_request_t
# ##
# type
# xcb_x_print_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_id*: uint32
# printerNameLen*: uint32
# localeLen*: uint32
# ## * Opcode for xcb_x_print_print_set_context.
# const
# XCB_X_PRINT_PRINT_SET_CONTEXT* = 3
# ## *
# ## @brief xcb_x_print_print_set_context_request_t
# ##
# type
# xcb_x_print_print_set_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: uint32
# ## *
# ## @brief xcb_x_print_print_get_context_cookie_t
# ##
# type
# xcb_x_print_print_get_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_context.
# const
# XCB_X_PRINT_PRINT_GET_CONTEXT* = 4
# ## *
# ## @brief xcb_x_print_print_get_context_request_t
# ##
# type
# xcb_x_print_print_get_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_x_print_print_get_context_reply_t
# ##
# type
# xcb_x_print_print_get_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context*: uint32
# ## * Opcode for xcb_x_print_print_destroy_context.
# const
# XCB_X_PRINT_PRINT_DESTROY_CONTEXT* = 5
# ## *
# ## @brief xcb_x_print_print_destroy_context_request_t
# ##
# type
# xcb_x_print_print_destroy_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: uint32
# ## *
# ## @brief xcb_x_print_print_get_screen_of_context_cookie_t
# ##
# type
# xcb_x_print_print_get_screen_of_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_screen_of_context.
# const
# XCB_X_PRINT_PRINT_GET_SCREEN_OF_CONTEXT* = 6
# ## *
# ## @brief xcb_x_print_print_get_screen_of_context_request_t
# ##
# type
# xcb_x_print_print_get_screen_of_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_x_print_print_get_screen_of_context_reply_t
# ##
# type
# xcb_x_print_print_get_screen_of_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# root*: xcb_window_t
# ## * Opcode for xcb_x_print_print_start_job.
# const
# XCB_X_PRINT_PRINT_START_JOB* = 7
# ## *
# ## @brief xcb_x_print_print_start_job_request_t
# ##
# type
# xcb_x_print_print_start_job_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# output_mode*: uint8
# ## * Opcode for xcb_x_print_print_end_job.
# const
# XCB_X_PRINT_PRINT_END_JOB* = 8
# ## *
# ## @brief xcb_x_print_print_end_job_request_t
# ##
# type
# xcb_x_print_print_end_job_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cancel*: uint8
# ## * Opcode for xcb_x_print_print_start_doc.
# const
# XCB_X_PRINT_PRINT_START_DOC* = 9
# ## *
# ## @brief xcb_x_print_print_start_doc_request_t
# ##
# type
# xcb_x_print_print_start_doc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# driver_mode*: uint8
# ## * Opcode for xcb_x_print_print_end_doc.
# const
# XCB_X_PRINT_PRINT_END_DOC* = 10
# ## *
# ## @brief xcb_x_print_print_end_doc_request_t
# ##
# type
# xcb_x_print_print_end_doc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cancel*: uint8
# ## * Opcode for xcb_x_print_print_put_document_data.
# const
# XCB_X_PRINT_PRINT_PUT_DOCUMENT_DATA* = 11
# ## *
# ## @brief xcb_x_print_print_put_document_data_request_t
# ##
# type
# xcb_x_print_print_put_document_data_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# len_data*: uint32
# len_fmt*: uint16
# len_options*: uint16
# ## *
# ## @brief xcb_x_print_print_get_document_data_cookie_t
# ##
# type
# xcb_x_print_print_get_document_data_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_document_data.
# const
# XCB_X_PRINT_PRINT_GET_DOCUMENT_DATA* = 12
# ## *
# ## @brief xcb_x_print_print_get_document_data_request_t
# ##
# type
# xcb_x_print_print_get_document_data_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# max_bytes*: uint32
# ## *
# ## @brief xcb_x_print_print_get_document_data_reply_t
# ##
# type
# xcb_x_print_print_get_document_data_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# status_code*: uint32
# finished_flag*: uint32
# dataLen*: uint32
# pad1*: array[12, uint8]
# ## * Opcode for xcb_x_print_print_start_page.
# const
# XCB_X_PRINT_PRINT_START_PAGE* = 13
# ## *
# ## @brief xcb_x_print_print_start_page_request_t
# ##
# type
# xcb_x_print_print_start_page_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_x_print_print_end_page.
# const
# XCB_X_PRINT_PRINT_END_PAGE* = 14
# ## *
# ## @brief xcb_x_print_print_end_page_request_t
# ##
# type
# xcb_x_print_print_end_page_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# cancel*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_x_print_print_select_input.
# const
# XCB_X_PRINT_PRINT_SELECT_INPUT* = 15
# ## *
# ## @brief xcb_x_print_print_select_input_request_t
# ##
# type
# xcb_x_print_print_select_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# event_mask*: uint32
# ## *
# ## @brief xcb_x_print_print_input_selected_cookie_t
# ##
# type
# xcb_x_print_print_input_selected_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_input_selected.
# const
# XCB_X_PRINT_PRINT_INPUT_SELECTED* = 16
# ## *
# ## @brief xcb_x_print_print_input_selected_request_t
# ##
# type
# xcb_x_print_print_input_selected_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# ## *
# ## @brief xcb_x_print_print_input_selected_reply_t
# ##
# type
# xcb_x_print_print_input_selected_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# event_mask*: uint32
# all_events_mask*: uint32
# ## *
# ## @brief xcb_x_print_print_get_attributes_cookie_t
# ##
# type
# xcb_x_print_print_get_attributes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_attributes.
# const
# XCB_X_PRINT_PRINT_GET_ATTRIBUTES* = 17
# ## *
# ## @brief xcb_x_print_print_get_attributes_request_t
# ##
# type
# xcb_x_print_print_get_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# pool*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_x_print_print_get_attributes_reply_t
# ##
# type
# xcb_x_print_print_get_attributes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# stringLen*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_x_print_print_get_one_attributes_cookie_t
# ##
# type
# xcb_x_print_print_get_one_attributes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_one_attributes.
# const
# XCB_X_PRINT_PRINT_GET_ONE_ATTRIBUTES* = 19
# ## *
# ## @brief xcb_x_print_print_get_one_attributes_request_t
# ##
# type
# xcb_x_print_print_get_one_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# nameLen*: uint32
# pool*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_x_print_print_get_one_attributes_reply_t
# ##
# type
# xcb_x_print_print_get_one_attributes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# valueLen*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_x_print_print_set_attributes.
# const
# XCB_X_PRINT_PRINT_SET_ATTRIBUTES* = 18
# ## *
# ## @brief xcb_x_print_print_set_attributes_request_t
# ##
# type
# xcb_x_print_print_set_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# stringLen*: uint32
# pool*: uint8
# rule*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_x_print_print_get_page_dimensions_cookie_t
# ##
# type
# xcb_x_print_print_get_page_dimensions_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_page_dimensions.
# const
# XCB_X_PRINT_PRINT_GET_PAGE_DIMENSIONS* = 21
# ## *
# ## @brief xcb_x_print_print_get_page_dimensions_request_t
# ##
# type
# xcb_x_print_print_get_page_dimensions_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# ## *
# ## @brief xcb_x_print_print_get_page_dimensions_reply_t
# ##
# type
# xcb_x_print_print_get_page_dimensions_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint16
# height*: uint16
# offset_x*: uint16
# offset_y*: uint16
# reproducible_width*: uint16
# reproducible_height*: uint16
# ## *
# ## @brief xcb_x_print_print_query_screens_cookie_t
# ##
# type
# xcb_x_print_print_query_screens_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_query_screens.
# const
# XCB_X_PRINT_PRINT_QUERY_SCREENS* = 22
# ## *
# ## @brief xcb_x_print_print_query_screens_request_t
# ##
# type
# xcb_x_print_print_query_screens_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_x_print_print_query_screens_reply_t
# ##
# type
# xcb_x_print_print_query_screens_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# listCount*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_x_print_print_set_image_resolution_cookie_t
# ##
# type
# xcb_x_print_print_set_image_resolution_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_set_image_resolution.
# const
# XCB_X_PRINT_PRINT_SET_IMAGE_RESOLUTION* = 23
# ## *
# ## @brief xcb_x_print_print_set_image_resolution_request_t
# ##
# type
# xcb_x_print_print_set_image_resolution_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# image_resolution*: uint16
# ## *
# ## @brief xcb_x_print_print_set_image_resolution_reply_t
# ##
# type
# xcb_x_print_print_set_image_resolution_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# previous_resolutions*: uint16
# ## *
# ## @brief xcb_x_print_print_get_image_resolution_cookie_t
# ##
# type
# xcb_x_print_print_get_image_resolution_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_x_print_print_get_image_resolution.
# const
# XCB_X_PRINT_PRINT_GET_IMAGE_RESOLUTION* = 24
# ## *
# ## @brief xcb_x_print_print_get_image_resolution_request_t
# ##
# type
# xcb_x_print_print_get_image_resolution_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context*: xcb_x_print_pcontext_t
# ## *
# ## @brief xcb_x_print_print_get_image_resolution_reply_t
# ##
# type
# xcb_x_print_print_get_image_resolution_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# image_resolution*: uint16
# ## * Opcode for xcb_x_print_notify.
# const
# XCB_X_PRINT_NOTIFY* = 0
# ## *
# ## @brief xcb_x_print_notify_event_t
# ##
# type
# xcb_x_print_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# context*: xcb_x_print_pcontext_t
# cancel*: uint8
# ## * Opcode for xcb_x_print_attribut_notify.
# const
# XCB_X_PRINT_ATTRIBUT_NOTIFY* = 1
# ## *
# ## @brief xcb_x_print_attribut_notify_event_t
# ##
# type
# xcb_x_print_attribut_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# context*: xcb_x_print_pcontext_t
# ## * Opcode for xcb_x_print_bad_context.
# const
# XCB_X_PRINT_BAD_CONTEXT* = 0
# ## *
# ## @brief xcb_x_print_bad_context_error_t
# ##
# type
# xcb_x_print_bad_context_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_x_print_bad_sequence.
# const
# XCB_X_PRINT_BAD_SEQUENCE* = 1
# ## *
# ## @brief xcb_x_print_bad_sequence_error_t
# ##
# type
# xcb_x_print_bad_sequence_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_x_print_string8_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_x_print_string8_t)
# ##
# proc xcb_x_print_string8_next*(i: ptr xcb_x_print_string8_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_x_print_string8_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_x_print_string8_end*(i: xcb_x_print_string8_iterator_t): xcb_generic_iterator_t
# proc xcb_x_print_printer_serialize*(_buffer: ptr pointer;
# _aux: ptr xcb_x_print_printer_t;
# name: ptr xcb_x_print_string8_t;
# description: ptr xcb_x_print_string8_t): cint
# proc xcb_x_print_printer_unserialize*(_buffer: pointer;
# _aux: ptr ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_sizeof*(_buffer: pointer): cint
# proc xcb_x_print_printer_name*(R: ptr xcb_x_print_printer_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_printer_name_length*(R: ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_name_end*(R: ptr xcb_x_print_printer_t): xcb_generic_iterator_t
# proc xcb_x_print_printer_description*(R: ptr xcb_x_print_printer_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_printer_description_length*(R: ptr xcb_x_print_printer_t): cint
# proc xcb_x_print_printer_description_end*(R: ptr xcb_x_print_printer_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_x_print_printer_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_x_print_printer_t)
# ##
# proc xcb_x_print_printer_next*(i: ptr xcb_x_print_printer_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_x_print_printer_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_x_print_printer_end*(i: xcb_x_print_printer_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_x_print_pcontext_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_x_print_pcontext_t)
# ##
# proc xcb_x_print_pcontext_next*(i: ptr xcb_x_print_pcontext_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_x_print_pcontext_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_x_print_pcontext_end*(i: xcb_x_print_pcontext_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_query_version*(c: ptr xcb_connection_t): xcb_x_print_print_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_query_version_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_query_version_reply_t
# proc xcb_x_print_print_get_printer_list_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_printer_list*(c: ptr xcb_connection_t;
# printerNameLen: uint32;
# localeLen: uint32; printer_name: ptr xcb_x_print_string8_t;
# locale: ptr xcb_x_print_string8_t): xcb_x_print_print_get_printer_list_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_printer_list_unchecked*(c: ptr xcb_connection_t;
# printerNameLen: uint32; localeLen: uint32;
# printer_name: ptr xcb_x_print_string8_t; locale: ptr xcb_x_print_string8_t): xcb_x_print_print_get_printer_list_cookie_t
# proc xcb_x_print_print_get_printer_list_printers_length*(
# R: ptr xcb_x_print_print_get_printer_list_reply_t): cint
# proc xcb_x_print_print_get_printer_list_printers_iterator*(
# R: ptr xcb_x_print_print_get_printer_list_reply_t): xcb_x_print_printer_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_printer_list_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_printer_list_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_printer_list_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_printer_list_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_rehash_printer_list_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_rehash_printer_list*(c: ptr xcb_connection_t): xcb_void_cookie_t
# proc xcb_x_print_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_create_context_checked*(c: ptr xcb_connection_t;
# context_id: uint32;
# printerNameLen: uint32;
# localeLen: uint32;
# printerName: ptr xcb_x_print_string8_t;
# locale: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_create_context*(c: ptr xcb_connection_t; context_id: uint32;
# printerNameLen: uint32; localeLen: uint32;
# printerName: ptr xcb_x_print_string8_t;
# locale: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_create_context_printer_name*(
# R: ptr xcb_x_print_create_context_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_create_context_printer_name_length*(
# R: ptr xcb_x_print_create_context_request_t): cint
# proc xcb_x_print_create_context_printer_name_end*(
# R: ptr xcb_x_print_create_context_request_t): xcb_generic_iterator_t
# proc xcb_x_print_create_context_locale*(R: ptr xcb_x_print_create_context_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_create_context_locale_length*(
# R: ptr xcb_x_print_create_context_request_t): cint
# proc xcb_x_print_create_context_locale_end*(
# R: ptr xcb_x_print_create_context_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_set_context_checked*(c: ptr xcb_connection_t;
# context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_set_context*(c: ptr xcb_connection_t; context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_context*(c: ptr xcb_connection_t): xcb_x_print_print_get_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_context_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_get_context_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_context_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_context_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_destroy_context_checked*(c: ptr xcb_connection_t;
# context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_destroy_context*(c: ptr xcb_connection_t; context: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_screen_of_context*(c: ptr xcb_connection_t): xcb_x_print_print_get_screen_of_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_screen_of_context_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_get_screen_of_context_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_screen_of_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_screen_of_context_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_screen_of_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_screen_of_context_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_start_job_checked*(c: ptr xcb_connection_t;
# output_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_start_job*(c: ptr xcb_connection_t; output_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_end_job_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_end_job*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_start_doc_checked*(c: ptr xcb_connection_t;
# driver_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_start_doc*(c: ptr xcb_connection_t; driver_mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_end_doc_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_end_doc*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# proc xcb_x_print_print_put_document_data_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_put_document_data_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; len_data: uint32; len_fmt: uint16;
# len_options: uint16; data: ptr uint8; doc_format: ptr xcb_x_print_string8_t;
# options: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_put_document_data*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; len_data: uint32; len_fmt: uint16;
# len_options: uint16; data: ptr uint8; doc_format: ptr xcb_x_print_string8_t;
# options: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_print_put_document_data_data*(
# R: ptr xcb_x_print_print_put_document_data_request_t): ptr uint8
# proc xcb_x_print_print_put_document_data_data_length*(
# R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_data_end*(
# R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_put_document_data_doc_format*(
# R: ptr xcb_x_print_print_put_document_data_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_put_document_data_doc_format_length*(
# R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_doc_format_end*(
# R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_put_document_data_options*(
# R: ptr xcb_x_print_print_put_document_data_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_put_document_data_options_length*(
# R: ptr xcb_x_print_print_put_document_data_request_t): cint
# proc xcb_x_print_print_put_document_data_options_end*(
# R: ptr xcb_x_print_print_put_document_data_request_t): xcb_generic_iterator_t
# proc xcb_x_print_print_get_document_data_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_document_data*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; max_bytes: uint32): xcb_x_print_print_get_document_data_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_document_data_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; max_bytes: uint32): xcb_x_print_print_get_document_data_cookie_t
# proc xcb_x_print_print_get_document_data_data*(
# R: ptr xcb_x_print_print_get_document_data_reply_t): ptr uint8
# proc xcb_x_print_print_get_document_data_data_length*(
# R: ptr xcb_x_print_print_get_document_data_reply_t): cint
# proc xcb_x_print_print_get_document_data_data_end*(
# R: ptr xcb_x_print_print_get_document_data_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_document_data_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_document_data_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_document_data_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_document_data_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_start_page_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_start_page*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_end_page_checked*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_end_page*(c: ptr xcb_connection_t; cancel: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_select_input_checked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_select_input*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t;
# event_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_input_selected*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_input_selected_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_input_selected_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_input_selected_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_input_selected_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_input_selected_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_input_selected_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_input_selected_reply_t
# proc xcb_x_print_print_get_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_attributes*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t;
# pool: uint8): xcb_x_print_print_get_attributes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_attributes_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; pool: uint8): xcb_x_print_print_get_attributes_cookie_t
# proc xcb_x_print_print_get_attributes_attributes*(
# R: ptr xcb_x_print_print_get_attributes_reply_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_get_attributes_attributes_length*(
# R: ptr xcb_x_print_print_get_attributes_reply_t): cint
# proc xcb_x_print_print_get_attributes_attributes_end*(
# R: ptr xcb_x_print_print_get_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_attributes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_attributes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_attributes_reply_t
# proc xcb_x_print_print_get_one_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_one_attributes*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; nameLen: uint32; pool: uint8;
# name: ptr xcb_x_print_string8_t): xcb_x_print_print_get_one_attributes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_one_attributes_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; nameLen: uint32; pool: uint8;
# name: ptr xcb_x_print_string8_t): xcb_x_print_print_get_one_attributes_cookie_t
# proc xcb_x_print_print_get_one_attributes_value*(
# R: ptr xcb_x_print_print_get_one_attributes_reply_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_get_one_attributes_value_length*(
# R: ptr xcb_x_print_print_get_one_attributes_reply_t): cint
# proc xcb_x_print_print_get_one_attributes_value_end*(
# R: ptr xcb_x_print_print_get_one_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_one_attributes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_one_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_one_attributes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_one_attributes_reply_t
# proc xcb_x_print_print_set_attributes_sizeof*(_buffer: pointer;
# attributes_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_x_print_print_set_attributes_checked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; stringLen: uint32; pool: uint8;
# rule: uint8; attributes_len: uint32; attributes: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_set_attributes*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t;
# stringLen: uint32; pool: uint8;
# rule: uint8; attributes_len: uint32;
# attributes: ptr xcb_x_print_string8_t): xcb_void_cookie_t
# proc xcb_x_print_print_set_attributes_attributes*(
# R: ptr xcb_x_print_print_set_attributes_request_t): ptr xcb_x_print_string8_t
# proc xcb_x_print_print_set_attributes_attributes_length*(
# R: ptr xcb_x_print_print_set_attributes_request_t): cint
# proc xcb_x_print_print_set_attributes_attributes_end*(
# R: ptr xcb_x_print_print_set_attributes_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_page_dimensions*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_get_page_dimensions_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_page_dimensions_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_get_page_dimensions_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_page_dimensions_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_page_dimensions_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_page_dimensions_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_page_dimensions_reply_t
# proc xcb_x_print_print_query_screens_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_query_screens*(c: ptr xcb_connection_t): xcb_x_print_print_query_screens_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_query_screens_unchecked*(c: ptr xcb_connection_t): xcb_x_print_print_query_screens_cookie_t
# proc xcb_x_print_print_query_screens_roots*(
# R: ptr xcb_x_print_print_query_screens_reply_t): ptr xcb_window_t
# proc xcb_x_print_print_query_screens_roots_length*(
# R: ptr xcb_x_print_print_query_screens_reply_t): cint
# proc xcb_x_print_print_query_screens_roots_end*(
# R: ptr xcb_x_print_print_query_screens_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_query_screens_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_query_screens_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_query_screens_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_query_screens_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_set_image_resolution*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; image_resolution: uint16): xcb_x_print_print_set_image_resolution_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_set_image_resolution_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t; image_resolution: uint16): xcb_x_print_print_set_image_resolution_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_set_image_resolution_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_set_image_resolution_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_set_image_resolution_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_set_image_resolution_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_x_print_print_get_image_resolution*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_get_image_resolution_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_x_print_print_get_image_resolution_unchecked*(c: ptr xcb_connection_t;
# context: xcb_x_print_pcontext_t): xcb_x_print_print_get_image_resolution_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_x_print_print_get_image_resolution_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_x_print_print_get_image_resolution_reply*(c: ptr xcb_connection_t; cookie: xcb_x_print_print_get_image_resolution_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_x_print_print_get_image_resolution_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xproto.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB__API XCB API
# ## @brief XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb
# ## *
# ## @brief xcb_char2b_t
# ##
# type
# xcb_char2b_t* {.bycopy.} = object
# byte1*: uint8
# byte2*: uint8
# ## *
# ## @brief xcb_char2b_iterator_t
# ##
# type
# xcb_char2b_iterator_t* {.bycopy.} = object
# data*: ptr xcb_char2b_t
# rem*: cint
# index*: cint
# xcb_window_t* = uint32
# ## *
# ## @brief xcb_window_iterator_t
# ##
# type
# xcb_window_iterator_t* {.bycopy.} = object
# data*: ptr xcb_window_t
# rem*: cint
# index*: cint
# xcb_pixmap_t* = uint32
# ## *
# ## @brief xcb_pixmap_iterator_t
# ##
# type
# xcb_pixmap_iterator_t* {.bycopy.} = object
# data*: ptr xcb_pixmap_t
# rem*: cint
# index*: cint
# xcb_cursor_t* = uint32
# ## *
# ## @brief xcb_cursor_iterator_t
# ##
# type
# xcb_cursor_iterator_t* {.bycopy.} = object
# data*: ptr xcb_cursor_t
# rem*: cint
# index*: cint
# xcb_font_t* = uint32
# ## *
# ## @brief xcb_font_iterator_t
# ##
# type
# xcb_font_iterator_t* {.bycopy.} = object
# data*: ptr xcb_font_t
# rem*: cint
# index*: cint
# xcb_gcontext_t* = uint32
# ## *
# ## @brief xcb_gcontext_iterator_t
# ##
# type
# xcb_gcontext_iterator_t* {.bycopy.} = object
# data*: ptr xcb_gcontext_t
# rem*: cint
# index*: cint
# xcb_colormap_t* = uint32
# ## *
# ## @brief xcb_colormap_iterator_t
# ##
# type
# xcb_colormap_iterator_t* {.bycopy.} = object
# data*: ptr xcb_colormap_t
# rem*: cint
# index*: cint
# xcb_atom_t* = uint32
# ## *
# ## @brief xcb_atom_iterator_t
# ##
# type
# xcb_atom_iterator_t* {.bycopy.} = object
# data*: ptr xcb_atom_t
# rem*: cint
# index*: cint
# xcb_drawable_t* = uint32
# ## *
# ## @brief xcb_drawable_iterator_t
# ##
# type
# xcb_drawable_iterator_t* {.bycopy.} = object
# data*: ptr xcb_drawable_t
# rem*: cint
# index*: cint
# xcb_fontable_t* = uint32
# ## *
# ## @brief xcb_fontable_iterator_t
# ##
# type
# xcb_fontable_iterator_t* {.bycopy.} = object
# data*: ptr xcb_fontable_t
# rem*: cint
# index*: cint
# xcb_bool32_t* = uint32
# ## *
# ## @brief xcb_bool32_iterator_t
# ##
# type
# xcb_bool32_iterator_t* {.bycopy.} = object
# data*: ptr xcb_bool32_t
# rem*: cint
# index*: cint
# xcb_visualid_t* = uint32
# ## *
# ## @brief xcb_visualid_iterator_t
# ##
# type
# xcb_visualid_iterator_t* {.bycopy.} = object
# data*: ptr xcb_visualid_t
# rem*: cint
# index*: cint
# xcb_timestamp_t* = uint32
# ## *
# ## @brief xcb_timestamp_iterator_t
# ##
# type
# xcb_timestamp_iterator_t* {.bycopy.} = object
# data*: ptr xcb_timestamp_t
# rem*: cint
# index*: cint
# xcb_keysym_t* = uint32
# ## *
# ## @brief xcb_keysym_iterator_t
# ##
# type
# xcb_keysym_iterator_t* {.bycopy.} = object
# data*: ptr xcb_keysym_t
# rem*: cint
# index*: cint
# xcb_keycode_t* = uint8
# ## *
# ## @brief xcb_keycode_iterator_t
# ##
# type
# xcb_keycode_iterator_t* {.bycopy.} = object
# data*: ptr xcb_keycode_t
# rem*: cint
# index*: cint
# xcb_keycode32_t* = uint32
# ## *
# ## @brief xcb_keycode32_iterator_t
# ##
# type
# xcb_keycode32_iterator_t* {.bycopy.} = object
# data*: ptr xcb_keycode32_t
# rem*: cint
# index*: cint
# xcb_button_t* = uint8
# ## *
# ## @brief xcb_button_iterator_t
# ##
# type
# xcb_button_iterator_t* {.bycopy.} = object
# data*: ptr xcb_button_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_point_t
# ##
# type
# xcb_point_t* {.bycopy.} = object
# x*: int16
# y*: int16
# ## *
# ## @brief xcb_point_iterator_t
# ##
# type
# xcb_point_iterator_t* {.bycopy.} = object
# data*: ptr xcb_point_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_rectangle_t
# ##
# type
# xcb_rectangle_t* {.bycopy.} = object
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_rectangle_iterator_t
# ##
# type
# xcb_rectangle_iterator_t* {.bycopy.} = object
# data*: ptr xcb_rectangle_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_arc_t
# ##
# type
# xcb_arc_t* {.bycopy.} = object
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# angle1*: int16
# angle2*: int16
# ## *
# ## @brief xcb_arc_iterator_t
# ##
# type
# xcb_arc_iterator_t* {.bycopy.} = object
# data*: ptr xcb_arc_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_format_t
# ##
# type
# xcb_format_t* {.bycopy.} = object
# depth*: uint8
# bits_per_pixel*: uint8
# scanline_pad*: uint8
# pad0*: array[5, uint8]
# ## *
# ## @brief xcb_format_iterator_t
# ##
# type
# xcb_format_iterator_t* {.bycopy.} = object
# data*: ptr xcb_format_t
# rem*: cint
# index*: cint
# xcb_visual_class_t* = enum
# XCB_VISUAL_CLASS_STATIC_GRAY = 0, XCB_VISUAL_CLASS_GRAY_SCALE = 1,
# XCB_VISUAL_CLASS_STATIC_COLOR = 2, XCB_VISUAL_CLASS_PSEUDO_COLOR = 3,
# XCB_VISUAL_CLASS_TRUE_COLOR = 4, XCB_VISUAL_CLASS_DIRECT_COLOR = 5
# ## *
# ## @brief xcb_visualtype_t
# ##
# type
# xcb_visualtype_t* {.bycopy.} = object
# visual_id*: xcb_visualid_t
# _class*: uint8
# bits_per_rgb_value*: uint8
# colormap_entries*: uint16
# red_mask*: uint32
# green_mask*: uint32
# blue_mask*: uint32
# pad0*: array[4, uint8]
# ## *
# ## @brief xcb_visualtype_iterator_t
# ##
# type
# xcb_visualtype_iterator_t* {.bycopy.} = object
# data*: ptr xcb_visualtype_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_depth_t
# ##
# type
# xcb_depth_t* {.bycopy.} = object
# depth*: uint8
# pad0*: uint8
# visuals_len*: uint16
# pad1*: array[4, uint8]
# ## *
# ## @brief xcb_depth_iterator_t
# ##
# type
# xcb_depth_iterator_t* {.bycopy.} = object
# data*: ptr xcb_depth_t
# rem*: cint
# index*: cint
# xcb_event_mask_t* = enum
# XCB_EVENT_MASK_NO_EVENT = 0, XCB_EVENT_MASK_KEY_PRESS = 1,
# XCB_EVENT_MASK_KEY_RELEASE = 2, XCB_EVENT_MASK_BUTTON_PRESS = 4,
# XCB_EVENT_MASK_BUTTON_RELEASE = 8, XCB_EVENT_MASK_ENTER_WINDOW = 16,
# XCB_EVENT_MASK_LEAVE_WINDOW = 32, XCB_EVENT_MASK_POINTER_MOTION = 64,
# XCB_EVENT_MASK_POINTER_MOTION_HINT = 128, XCB_EVENT_MASK_BUTTON_1_MOTION = 256,
# XCB_EVENT_MASK_BUTTON_2_MOTION = 512, XCB_EVENT_MASK_BUTTON_3_MOTION = 1024,
# XCB_EVENT_MASK_BUTTON_4_MOTION = 2048, XCB_EVENT_MASK_BUTTON_5_MOTION = 4096,
# XCB_EVENT_MASK_BUTTON_MOTION = 8192, XCB_EVENT_MASK_KEYMAP_STATE = 16384,
# XCB_EVENT_MASK_EXPOSURE = 32768, XCB_EVENT_MASK_VISIBILITY_CHANGE = 65536,
# XCB_EVENT_MASK_STRUCTURE_NOTIFY = 131072,
# XCB_EVENT_MASK_RESIZE_REDIRECT = 262144,
# XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY = 524288,
# XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT = 1048576,
# XCB_EVENT_MASK_FOCUS_CHANGE = 2097152,
# XCB_EVENT_MASK_PROPERTY_CHANGE = 4194304,
# XCB_EVENT_MASK_COLOR_MAP_CHANGE = 8388608,
# XCB_EVENT_MASK_OWNER_GRAB_BUTTON = 16777216
# xcb_backing_store_t* = enum
# XCB_BACKING_STORE_NOT_USEFUL = 0, XCB_BACKING_STORE_WHEN_MAPPED = 1,
# XCB_BACKING_STORE_ALWAYS = 2
# ## *
# ## @brief xcb_screen_t
# ##
# type
# xcb_screen_t* {.bycopy.} = object
# root*: xcb_window_t
# default_colormap*: xcb_colormap_t
# white_pixel*: uint32
# black_pixel*: uint32
# current_input_masks*: uint32
# width_in_pixels*: uint16
# height_in_pixels*: uint16
# width_in_millimeters*: uint16
# height_in_millimeters*: uint16
# min_installed_maps*: uint16
# max_installed_maps*: uint16
# root_visual*: xcb_visualid_t
# backing_stores*: uint8
# save_unders*: uint8
# root_depth*: uint8
# allowed_depths_len*: uint8
# ## *
# ## @brief xcb_screen_iterator_t
# ##
# type
# xcb_screen_iterator_t* {.bycopy.} = object
# data*: ptr xcb_screen_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_setup_request_t
# ##
# type
# xcb_setup_request_t* {.bycopy.} = object
# byte_order*: uint8
# pad0*: uint8
# protocol_major_version*: uint16
# protocol_minor_version*: uint16
# authorization_protocol_name_len*: uint16
# authorization_protocol_data_len*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_setup_request_iterator_t
# ##
# type
# xcb_setup_request_iterator_t* {.bycopy.} = object
# data*: ptr xcb_setup_request_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_setup_failed_t
# ##
# type
# xcb_setup_failed_t* {.bycopy.} = object
# status*: uint8
# reason_len*: uint8
# protocol_major_version*: uint16
# protocol_minor_version*: uint16
# length*: uint16
# ## *
# ## @brief xcb_setup_failed_iterator_t
# ##
# type
# xcb_setup_failed_iterator_t* {.bycopy.} = object
# data*: ptr xcb_setup_failed_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_setup_authenticate_t
# ##
# type
# xcb_setup_authenticate_t* {.bycopy.} = object
# status*: uint8
# pad0*: array[5, uint8]
# length*: uint16
# ## *
# ## @brief xcb_setup_authenticate_iterator_t
# ##
# type
# xcb_setup_authenticate_iterator_t* {.bycopy.} = object
# data*: ptr xcb_setup_authenticate_t
# rem*: cint
# index*: cint
# xcb_image_order_t* = enum
# XCB_IMAGE_ORDER_LSB_FIRST = 0, XCB_IMAGE_ORDER_MSB_FIRST = 1
# ## *
# ## @brief xcb_setup_t
# ##
# type
# xcb_setup_t* {.bycopy.} = object
# status*: uint8
# pad0*: uint8
# protocol_major_version*: uint16
# protocol_minor_version*: uint16
# length*: uint16
# release_number*: uint32
# resource_id_base*: uint32
# resource_id_mask*: uint32
# motion_buffer_size*: uint32
# vendor_len*: uint16
# maximum_request_length*: uint16
# roots_len*: uint8
# pixmap_formats_len*: uint8
# image_byte_order*: uint8
# bitmap_format_bit_order*: uint8
# bitmap_format_scanline_unit*: uint8
# bitmap_format_scanline_pad*: uint8
# min_keycode*: xcb_keycode_t
# max_keycode*: xcb_keycode_t
# pad1*: array[4, uint8]
# ## *
# ## @brief xcb_setup_iterator_t
# ##
# type
# xcb_setup_iterator_t* {.bycopy.} = object
# data*: ptr xcb_setup_t
# rem*: cint
# index*: cint
# xcb_mod_mask_t* = enum
# XCB_MOD_MASK_SHIFT = 1, XCB_MOD_MASK_LOCK = 2, XCB_MOD_MASK_CONTROL = 4,
# XCB_MOD_MASK_1 = 8, XCB_MOD_MASK_2 = 16, XCB_MOD_MASK_3 = 32, XCB_MOD_MASK_4 = 64,
# XCB_MOD_MASK_5 = 128, XCB_MOD_MASK_ANY = 32768
# xcb_key_but_mask_t* = enum
# XCB_KEY_BUT_MASK_SHIFT = 1, XCB_KEY_BUT_MASK_LOCK = 2,
# XCB_KEY_BUT_MASK_CONTROL = 4, XCB_KEY_BUT_MASK_MOD_1 = 8,
# XCB_KEY_BUT_MASK_MOD_2 = 16, XCB_KEY_BUT_MASK_MOD_3 = 32,
# XCB_KEY_BUT_MASK_MOD_4 = 64, XCB_KEY_BUT_MASK_MOD_5 = 128,
# XCB_KEY_BUT_MASK_BUTTON_1 = 256, XCB_KEY_BUT_MASK_BUTTON_2 = 512,
# XCB_KEY_BUT_MASK_BUTTON_3 = 1024, XCB_KEY_BUT_MASK_BUTTON_4 = 2048,
# XCB_KEY_BUT_MASK_BUTTON_5 = 4096
# xcb_window_enum_t* = enum
# XCB_WINDOW_NONE = 0
# ## * Opcode for xcb_key_press.
# const
# XCB_KEY_PRESS* = 2
# ## *
# ## @brief xcb_key_press_event_t
# ##
# type
# xcb_key_press_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: xcb_keycode_t
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# event_x*: int16
# event_y*: int16
# state*: uint16
# same_screen*: uint8
# pad0*: uint8
# ## * Opcode for xcb_key_release.
# const
# XCB_KEY_RELEASE* = 3
# type
# xcb_key_release_event_t* = xcb_key_press_event_t
# xcb_button_mask_t* = enum
# XCB_BUTTON_MASK_1 = 256, XCB_BUTTON_MASK_2 = 512, XCB_BUTTON_MASK_3 = 1024,
# XCB_BUTTON_MASK_4 = 2048, XCB_BUTTON_MASK_5 = 4096, XCB_BUTTON_MASK_ANY = 32768
# ## * Opcode for xcb_button_press.
# const
# XCB_BUTTON_PRESS* = 4
# ## *
# ## @brief xcb_button_press_event_t
# ##
# type
# xcb_button_press_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: xcb_button_t
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# event_x*: int16
# event_y*: int16
# state*: uint16
# same_screen*: uint8
# pad0*: uint8
# ## * Opcode for xcb_button_release.
# const
# XCB_BUTTON_RELEASE* = 5
# type
# xcb_button_release_event_t* = xcb_button_press_event_t
# xcb_motion_t* = enum
# XCB_MOTION_NORMAL = 0, XCB_MOTION_HINT = 1
# ## * Opcode for xcb_motion_notify.
# const
# XCB_MOTION_NOTIFY* = 6
# ## *
# ## @brief xcb_motion_notify_event_t
# ##
# type
# xcb_motion_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# event_x*: int16
# event_y*: int16
# state*: uint16
# same_screen*: uint8
# pad0*: uint8
# xcb_notify_detail_t* = enum
# XCB_NOTIFY_DETAIL_ANCESTOR = 0, XCB_NOTIFY_DETAIL_VIRTUAL = 1,
# XCB_NOTIFY_DETAIL_INFERIOR = 2, XCB_NOTIFY_DETAIL_NONLINEAR = 3,
# XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4, XCB_NOTIFY_DETAIL_POINTER = 5,
# XCB_NOTIFY_DETAIL_POINTER_ROOT = 6, XCB_NOTIFY_DETAIL_NONE = 7
# xcb_notify_mode_t* = enum
# XCB_NOTIFY_MODE_NORMAL = 0, XCB_NOTIFY_MODE_GRAB = 1, XCB_NOTIFY_MODE_UNGRAB = 2,
# XCB_NOTIFY_MODE_WHILE_GRABBED = 3
# ## * Opcode for xcb_enter_notify.
# const
# XCB_ENTER_NOTIFY* = 7
# ## *
# ## @brief xcb_enter_notify_event_t
# ##
# type
# xcb_enter_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# root*: xcb_window_t
# event*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# event_x*: int16
# event_y*: int16
# state*: uint16
# mode*: uint8
# same_screen_focus*: uint8
# ## * Opcode for xcb_leave_notify.
# const
# XCB_LEAVE_NOTIFY* = 8
# type
# xcb_leave_notify_event_t* = xcb_enter_notify_event_t
# ## * Opcode for xcb_focus_in.
# const
# XCB_FOCUS_IN* = 9
# ## *
# ## @brief xcb_focus_in_event_t
# ##
# type
# xcb_focus_in_event_t* {.bycopy.} = object
# response_type*: uint8
# detail*: uint8
# sequence*: uint16
# event*: xcb_window_t
# mode*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_focus_out.
# const
# XCB_FOCUS_OUT* = 10
# type
# xcb_focus_out_event_t* = xcb_focus_in_event_t
# ## * Opcode for xcb_keymap_notify.
# const
# XCB_KEYMAP_NOTIFY* = 11
# ## *
# ## @brief xcb_keymap_notify_event_t
# ##
# type
# xcb_keymap_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# keys*: array[31, uint8]
# ## * Opcode for xcb_expose.
# const
# XCB_EXPOSE* = 12
# ## *
# ## @brief xcb_expose_event_t
# ##
# type
# xcb_expose_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# window*: xcb_window_t
# x*: uint16
# y*: uint16
# width*: uint16
# height*: uint16
# count*: uint16
# pad1*: array[2, uint8]
# ## * Opcode for xcb_graphics_exposure.
# const
# XCB_GRAPHICS_EXPOSURE* = 13
# ## *
# ## @brief xcb_graphics_exposure_event_t
# ##
# type
# xcb_graphics_exposure_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# drawable*: xcb_drawable_t
# x*: uint16
# y*: uint16
# width*: uint16
# height*: uint16
# minor_opcode*: uint16
# count*: uint16
# major_opcode*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_no_exposure.
# const
# XCB_NO_EXPOSURE* = 14
# ## *
# ## @brief xcb_no_exposure_event_t
# ##
# type
# xcb_no_exposure_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# drawable*: xcb_drawable_t
# minor_opcode*: uint16
# major_opcode*: uint8
# pad1*: uint8
# xcb_visibility_t* = enum
# XCB_VISIBILITY_UNOBSCURED = 0, XCB_VISIBILITY_PARTIALLY_OBSCURED = 1,
# XCB_VISIBILITY_FULLY_OBSCURED = 2
# ## * Opcode for xcb_visibility_notify.
# const
# XCB_VISIBILITY_NOTIFY* = 15
# ## *
# ## @brief xcb_visibility_notify_event_t
# ##
# type
# xcb_visibility_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# window*: xcb_window_t
# state*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_create_notify.
# const
# XCB_CREATE_NOTIFY* = 16
# ## *
# ## @brief xcb_create_notify_event_t
# ##
# type
# xcb_create_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# parent*: xcb_window_t
# window*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# override_redirect*: uint8
# pad1*: uint8
# ## * Opcode for xcb_destroy_notify.
# const
# XCB_DESTROY_NOTIFY* = 17
# ## *
# ## @brief xcb_destroy_notify_event_t
# ##
# type
# xcb_destroy_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# ## * Opcode for xcb_unmap_notify.
# const
# XCB_UNMAP_NOTIFY* = 18
# ## *
# ## @brief xcb_unmap_notify_event_t
# ##
# type
# xcb_unmap_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# from_configure*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_map_notify.
# const
# XCB_MAP_NOTIFY* = 19
# ## *
# ## @brief xcb_map_notify_event_t
# ##
# type
# xcb_map_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# override_redirect*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_map_request.
# const
# XCB_MAP_REQUEST* = 20
# ## *
# ## @brief xcb_map_request_event_t
# ##
# type
# xcb_map_request_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# parent*: xcb_window_t
# window*: xcb_window_t
# ## * Opcode for xcb_reparent_notify.
# const
# XCB_REPARENT_NOTIFY* = 21
# ## *
# ## @brief xcb_reparent_notify_event_t
# ##
# type
# xcb_reparent_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# parent*: xcb_window_t
# x*: int16
# y*: int16
# override_redirect*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_configure_notify.
# const
# XCB_CONFIGURE_NOTIFY* = 22
# ## *
# ## @brief xcb_configure_notify_event_t
# ##
# type
# xcb_configure_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# above_sibling*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# override_redirect*: uint8
# pad1*: uint8
# ## * Opcode for xcb_configure_request.
# const
# XCB_CONFIGURE_REQUEST* = 23
# ## *
# ## @brief xcb_configure_request_event_t
# ##
# type
# xcb_configure_request_event_t* {.bycopy.} = object
# response_type*: uint8
# stack_mode*: uint8
# sequence*: uint16
# parent*: xcb_window_t
# window*: xcb_window_t
# sibling*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# value_mask*: uint16
# ## * Opcode for xcb_gravity_notify.
# const
# XCB_GRAVITY_NOTIFY* = 24
# ## *
# ## @brief xcb_gravity_notify_event_t
# ##
# type
# xcb_gravity_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# x*: int16
# y*: int16
# ## * Opcode for xcb_resize_request.
# const
# XCB_RESIZE_REQUEST* = 25
# ## *
# ## @brief xcb_resize_request_event_t
# ##
# type
# xcb_resize_request_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# window*: xcb_window_t
# width*: uint16
# height*: uint16
# xcb_place_t* = enum
# XCB_PLACE_ON_TOP = 0, ## *< The window is now on top of all siblings.
# XCB_PLACE_ON_BOTTOM = 1
# ## * Opcode for xcb_circulate_notify.
# const
# XCB_CIRCULATE_NOTIFY* = 26
# ## *
# ## @brief xcb_circulate_notify_event_t
# ##
# type
# xcb_circulate_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# event*: xcb_window_t
# window*: xcb_window_t
# pad1*: array[4, uint8]
# place*: uint8
# pad2*: array[3, uint8]
# ## * Opcode for xcb_circulate_request.
# const
# XCB_CIRCULATE_REQUEST* = 27
# type
# xcb_circulate_request_event_t* = xcb_circulate_notify_event_t
# xcb_property_t* = enum
# XCB_PROPERTY_NEW_VALUE = 0, XCB_PROPERTY_DELETE = 1
# ## * Opcode for xcb_property_notify.
# const
# XCB_PROPERTY_NOTIFY* = 28
# ## *
# ## @brief xcb_property_notify_event_t
# ##
# type
# xcb_property_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# window*: xcb_window_t
# atom*: xcb_atom_t
# time*: xcb_timestamp_t
# state*: uint8
# pad1*: array[3, uint8]
# ## * Opcode for xcb_selection_clear.
# const
# XCB_SELECTION_CLEAR* = 29
# ## *
# ## @brief xcb_selection_clear_event_t
# ##
# type
# xcb_selection_clear_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# owner*: xcb_window_t
# selection*: xcb_atom_t
# xcb_time_t* = enum
# XCB_TIME_CURRENT_TIME = 0
# const
# XCB_ATOM_ANY = XCB_ATOM_NONE
# ## * Opcode for xcb_selection_request.
# const
# XCB_SELECTION_REQUEST* = 30
# ## *
# ## @brief xcb_selection_request_event_t
# ##
# type
# xcb_selection_request_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# owner*: xcb_window_t
# requestor*: xcb_window_t
# selection*: xcb_atom_t
# target*: xcb_atom_t
# property*: xcb_atom_t
# ## * Opcode for xcb_selection_notify.
# const
# XCB_SELECTION_NOTIFY* = 31
# ## *
# ## @brief xcb_selection_notify_event_t
# ##
# type
# xcb_selection_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# requestor*: xcb_window_t
# selection*: xcb_atom_t
# target*: xcb_atom_t
# property*: xcb_atom_t
# xcb_colormap_state_t* = enum
# XCB_COLORMAP_STATE_UNINSTALLED = 0, ## *< The colormap was uninstalled.
# XCB_COLORMAP_STATE_INSTALLED = 1
# xcb_colormap_enum_t* = enum
# XCB_COLORMAP_NONE = 0
# ## * Opcode for xcb_colormap_notify.
# const
# XCB_COLORMAP_NOTIFY* = 32
# ## *
# ## @brief xcb_colormap_notify_event_t
# ##
# type
# xcb_colormap_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# window*: xcb_window_t
# colormap*: xcb_colormap_t
# _new*: uint8
# state*: uint8
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_client_message_data_t
# ##
# type
# xcb_client_message_data_t* {.bycopy.} = object {.union.}
# data8*: array[20, uint8]
# data16*: array[10, uint16]
# data32*: array[5, uint32]
# ## *
# ## @brief xcb_client_message_data_iterator_t
# ##
# type
# xcb_client_message_data_iterator_t* {.bycopy.} = object
# data*: ptr xcb_client_message_data_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_client_message.
# const
# XCB_CLIENT_MESSAGE* = 33
# ## *
# ## @brief xcb_client_message_event_t
# ##
# type
# xcb_client_message_event_t* {.bycopy.} = object
# response_type*: uint8
# format*: uint8
# sequence*: uint16
# window*: xcb_window_t
# `type`*: xcb_atom_t
# data*: xcb_client_message_data_t
# xcb_mapping_t* = enum
# XCB_MAPPING_MODIFIER = 0, XCB_MAPPING_KEYBOARD = 1, XCB_MAPPING_POINTER = 2
# ## * Opcode for xcb_mapping_notify.
# const
# XCB_MAPPING_NOTIFY* = 34
# ## *
# ## @brief xcb_mapping_notify_event_t
# ##
# type
# xcb_mapping_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# request*: uint8
# first_keycode*: xcb_keycode_t
# count*: uint8
# pad1*: uint8
# ## * Opcode for xcb_ge_generic.
# const
# XCB_GE_GENERIC* = 35
# ## *
# ## @brief xcb_ge_generic_event_t
# ##
# type
# xcb_ge_generic_event_t* {.bycopy.} = object
# response_type*: uint8
# extension*: uint8
# sequence*: uint16
# length*: uint32
# event_type*: uint16
# pad0*: array[22, uint8]
# full_sequence*: uint32
# ## * Opcode for xcb_request.
# const
# XCB_REQUEST* = 1
# ## *
# ## @brief xcb_request_error_t
# ##
# type
# xcb_request_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# bad_value*: uint32
# minor_opcode*: uint16
# major_opcode*: uint8
# pad0*: uint8
# ## * Opcode for xcb_value.
# const
# XCB_VALUE* = 2
# ## *
# ## @brief xcb_value_error_t
# ##
# type
# xcb_value_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# bad_value*: uint32
# minor_opcode*: uint16
# major_opcode*: uint8
# pad0*: uint8
# ## * Opcode for xcb_window.
# const
# XCB_WINDOW* = 3
# type
# xcb_window_error_t* = xcb_value_error_t
# ## * Opcode for xcb_pixmap.
# const
# XCB_PIXMAP* = 4
# type
# xcb_pixmap_error_t* = xcb_value_error_t
# ## * Opcode for xcb_atom.
# const
# XCB_ATOM* = 5
# type
# xcb_atom_error_t* = xcb_value_error_t
# ## * Opcode for xcb_cursor.
# const
# XCB_CURSOR* = 6
# type
# xcb_cursor_error_t* = xcb_value_error_t
# ## * Opcode for xcb_font.
# const
# XCB_FONT* = 7
# type
# xcb_font_error_t* = xcb_value_error_t
# ## * Opcode for xcb_match.
# const
# XCB_MATCH* = 8
# type
# xcb_match_error_t* = xcb_request_error_t
# ## * Opcode for xcb_drawable.
# const
# XCB_DRAWABLE* = 9
# type
# xcb_drawable_error_t* = xcb_value_error_t
# ## * Opcode for xcb_access.
# const
# XCB_ACCESS* = 10
# type
# xcb_access_error_t* = xcb_request_error_t
# ## * Opcode for xcb_alloc.
# const
# XCB_ALLOC* = 11
# type
# xcb_alloc_error_t* = xcb_request_error_t
# ## * Opcode for xcb_colormap.
# const
# XCB_COLORMAP* = 12
# type
# xcb_colormap_error_t* = xcb_value_error_t
# ## * Opcode for xcb_g_context.
# const
# XCB_G_CONTEXT* = 13
# type
# xcb_g_context_error_t* = xcb_value_error_t
# ## * Opcode for xcb_id_choice.
# const
# XCB_ID_CHOICE* = 14
# type
# xcb_id_choice_error_t* = xcb_value_error_t
# ## * Opcode for xcb_name.
# const
# XCB_NAME* = 15
# type
# xcb_name_error_t* = xcb_request_error_t
# ## * Opcode for xcb_length.
# const
# XCB_LENGTH* = 16
# type
# xcb_length_error_t* = xcb_request_error_t
# ## * Opcode for xcb_implementation.
# const
# XCB_IMPLEMENTATION* = 17
# type
# xcb_implementation_error_t* = xcb_request_error_t
# xcb_window_class_t* = enum
# XCB_WINDOW_CLASS_COPY_FROM_PARENT = 0, XCB_WINDOW_CLASS_INPUT_OUTPUT = 1,
# XCB_WINDOW_CLASS_INPUT_ONLY = 2
# xcb_cw_t* = enum
# XCB_CW_BACK_PIXMAP = 1, ## *< Overrides the default background-pixmap. The background pixmap and window must
# ## have the same root and same depth. Any size pixmap can be used, although some
# ## sizes may be faster than others.
# ##
# ## If `XCB_BACK_PIXMAP_NONE` is specified, the window has no defined background.
# ## The server may fill the contents with the previous screen contents or with
# ## contents of its own choosing.
# ##
# ## If `XCB_BACK_PIXMAP_PARENT_RELATIVE` is specified, the parent's background is
# ## used, but the window must have the same depth as the parent (or a Match error
# ## results). The parent's background is tracked, and the current version is
# ## used each time the window background is required.
# XCB_CW_BACK_PIXEL = 2, ## *< Overrides `BackPixmap`. A pixmap of undefined size filled with the specified
# ## background pixel is used for the background. Range-checking is not performed,
# ## the background pixel is truncated to the appropriate number of bits.
# XCB_CW_BORDER_PIXMAP = 4, ## *< Overrides the default border-pixmap. The border pixmap and window must have the
# ## same root and the same depth. Any size pixmap can be used, although some sizes
# ## may be faster than others.
# ##
# ## The special value `XCB_COPY_FROM_PARENT` means the parent's border pixmap is
# ## copied (subsequent changes to the parent's border attribute do not affect the
# ## child), but the window must have the same depth as the parent.
# XCB_CW_BORDER_PIXEL = 8, ## *< Overrides `BorderPixmap`. A pixmap of undefined size filled with the specified
# ## border pixel is used for the border. Range checking is not performed on the
# ## border-pixel value, it is truncated to the appropriate number of bits.
# XCB_CW_BIT_GRAVITY = 16, ## *< Defines which region of the window should be retained if the window is resized.
# XCB_CW_WIN_GRAVITY = 32, ## *< Defines how the window should be repositioned if the parent is resized (see
# ## `ConfigureWindow`).
# XCB_CW_BACKING_STORE = 64, ## *< A backing-store of `WhenMapped` advises the server that maintaining contents of
# ## obscured regions when the window is mapped would be beneficial. A backing-store
# ## of `Always` advises the server that maintaining contents even when the window
# ## is unmapped would be beneficial. In this case, the server may generate an
# ## exposure event when the window is created. A value of `NotUseful` advises the
# ## server that maintaining contents is unnecessary, although a server may still
# ## choose to maintain contents while the window is mapped. Note that if the server
# ## maintains contents, then the server should maintain complete contents not just
# ## the region within the parent boundaries, even if the window is larger than its
# ## parent. While the server maintains contents, exposure events will not normally
# ## be generated, but the server may stop maintaining contents at any time.
# XCB_CW_BACKING_PLANES = 128, ## *< The backing-planes indicates (with bits set to 1) which bit planes of the
# ## window hold dynamic data that must be preserved in backing-stores and during
# ## save-unders.
# XCB_CW_BACKING_PIXEL = 256, ## *< The backing-pixel specifies what value to use in planes not covered by
# ## backing-planes. The server is free to save only the specified bit planes in the
# ## backing-store or save-under and regenerate the remaining planes with the
# ## specified pixel value. Any bits beyond the specified depth of the window in
# ## these values are simply ignored.
# XCB_CW_OVERRIDE_REDIRECT = 512, ## *< The override-redirect specifies whether map and configure requests on this
# ## window should override a SubstructureRedirect on the parent, typically to
# ## inform a window manager not to tamper with the window.
# XCB_CW_SAVE_UNDER = 1024, ## *< If 1, the server is advised that when this window is mapped, saving the
# ## contents of windows it obscures would be beneficial.
# XCB_CW_EVENT_MASK = 2048, ## *< The event-mask defines which events the client is interested in for this window
# ## (or for some event types, inferiors of the window).
# XCB_CW_DONT_PROPAGATE = 4096, ## *< The do-not-propagate-mask defines which events should not be propagated to
# ## ancestor windows when no client has the event type selected in this window.
# XCB_CW_COLORMAP = 8192, ## *< The colormap specifies the colormap that best reflects the true colors of the window. Servers
# ## capable of supporting multiple hardware colormaps may use this information, and window man-
# ## agers may use it for InstallColormap requests. The colormap must have the same visual type
# ## and root as the window (or a Match error results). If CopyFromParent is specified, the parent's
# ## colormap is copied (subsequent changes to the parent's colormap attribute do not affect the child).
# ## However, the window must have the same visual type as the parent (or a Match error results),
# ## and the parent must not have a colormap of None (or a Match error results). For an explanation
# ## of None, see FreeColormap request. The colormap is copied by sharing the colormap object
# ## between the child and the parent, not by making a complete copy of the colormap contents.
# XCB_CW_CURSOR = 16384
# xcb_back_pixmap_t* = enum
# XCB_BACK_PIXMAP_NONE = 0, XCB_BACK_PIXMAP_PARENT_RELATIVE = 1
# xcb_gravity_t* = enum
# XCB_GRAVITY_BIT_FORGET = 0, XCB_GRAVITY_NORTH_WEST = 1, XCB_GRAVITY_NORTH = 2,
# XCB_GRAVITY_NORTH_EAST = 3, XCB_GRAVITY_WEST = 4, XCB_GRAVITY_CENTER = 5,
# XCB_GRAVITY_EAST = 6, XCB_GRAVITY_SOUTH_WEST = 7, XCB_GRAVITY_SOUTH = 8,
# XCB_GRAVITY_SOUTH_EAST = 9, XCB_GRAVITY_STATIC = 10
# const
# XCB_GRAVITY_WIN_UNMAP = XCB_GRAVITY_BIT_FORGET
# ## *
# ## @brief xcb_create_window_value_list_t
# ##
# type
# xcb_create_window_value_list_t* {.bycopy.} = object
# background_pixmap*: xcb_pixmap_t
# background_pixel*: uint32
# border_pixmap*: xcb_pixmap_t
# border_pixel*: uint32
# bit_gravity*: uint32
# win_gravity*: uint32
# backing_store*: uint32
# backing_planes*: uint32
# backing_pixel*: uint32
# override_redirect*: xcb_bool32_t
# save_under*: xcb_bool32_t
# event_mask*: uint32
# do_not_propogate_mask*: uint32
# colormap*: xcb_colormap_t
# cursor*: xcb_cursor_t
# ## * Opcode for xcb_create_window.
# const
# XCB_CREATE_WINDOW* = 1
# ## *
# ## @brief xcb_create_window_request_t
# ##
# type
# xcb_create_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# depth*: uint8
# length*: uint16
# wid*: xcb_window_t
# parent*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# _class*: uint16
# visual*: xcb_visualid_t
# value_mask*: uint32
# ## *
# ## @brief xcb_change_window_attributes_value_list_t
# ##
# type
# xcb_change_window_attributes_value_list_t* {.bycopy.} = object
# background_pixmap*: xcb_pixmap_t
# background_pixel*: uint32
# border_pixmap*: xcb_pixmap_t
# border_pixel*: uint32
# bit_gravity*: uint32
# win_gravity*: uint32
# backing_store*: uint32
# backing_planes*: uint32
# backing_pixel*: uint32
# override_redirect*: xcb_bool32_t
# save_under*: xcb_bool32_t
# event_mask*: uint32
# do_not_propogate_mask*: uint32
# colormap*: xcb_colormap_t
# cursor*: xcb_cursor_t
# ## * Opcode for xcb_change_window_attributes.
# const
# XCB_CHANGE_WINDOW_ATTRIBUTES* = 2
# ## *
# ## @brief xcb_change_window_attributes_request_t
# ##
# type
# xcb_change_window_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# value_mask*: uint32
# xcb_map_state_t* = enum
# XCB_MAP_STATE_UNMAPPED = 0, XCB_MAP_STATE_UNVIEWABLE = 1,
# XCB_MAP_STATE_VIEWABLE = 2
# ## *
# ## @brief xcb_get_window_attributes_cookie_t
# ##
# type
# xcb_get_window_attributes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_window_attributes.
# const
# XCB_GET_WINDOW_ATTRIBUTES* = 3
# ## *
# ## @brief xcb_get_window_attributes_request_t
# ##
# type
# xcb_get_window_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_get_window_attributes_reply_t
# ##
# type
# xcb_get_window_attributes_reply_t* {.bycopy.} = object
# response_type*: uint8
# backing_store*: uint8
# sequence*: uint16
# length*: uint32
# visual*: xcb_visualid_t
# _class*: uint16
# bit_gravity*: uint8
# win_gravity*: uint8
# backing_planes*: uint32
# backing_pixel*: uint32
# save_under*: uint8
# map_is_installed*: uint8
# map_state*: uint8
# override_redirect*: uint8
# colormap*: xcb_colormap_t
# all_event_masks*: uint32
# your_event_mask*: uint32
# do_not_propagate_mask*: uint16
# pad0*: array[2, uint8]
# ## * Opcode for xcb_destroy_window.
# const
# XCB_DESTROY_WINDOW* = 4
# ## *
# ## @brief xcb_destroy_window_request_t
# ##
# type
# xcb_destroy_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_destroy_subwindows.
# const
# XCB_DESTROY_SUBWINDOWS* = 5
# ## *
# ## @brief xcb_destroy_subwindows_request_t
# ##
# type
# xcb_destroy_subwindows_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# xcb_set_mode_t* = enum
# XCB_SET_MODE_INSERT = 0, XCB_SET_MODE_DELETE = 1
# ## * Opcode for xcb_change_save_set.
# const
# XCB_CHANGE_SAVE_SET* = 6
# ## *
# ## @brief xcb_change_save_set_request_t
# ##
# type
# xcb_change_save_set_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_reparent_window.
# const
# XCB_REPARENT_WINDOW* = 7
# ## *
# ## @brief xcb_reparent_window_request_t
# ##
# type
# xcb_reparent_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# parent*: xcb_window_t
# x*: int16
# y*: int16
# ## * Opcode for xcb_map_window.
# const
# XCB_MAP_WINDOW* = 8
# ## *
# ## @brief xcb_map_window_request_t
# ##
# type
# xcb_map_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_map_subwindows.
# const
# XCB_MAP_SUBWINDOWS* = 9
# ## *
# ## @brief xcb_map_subwindows_request_t
# ##
# type
# xcb_map_subwindows_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_unmap_window.
# const
# XCB_UNMAP_WINDOW* = 10
# ## *
# ## @brief xcb_unmap_window_request_t
# ##
# type
# xcb_unmap_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## * Opcode for xcb_unmap_subwindows.
# const
# XCB_UNMAP_SUBWINDOWS* = 11
# ## *
# ## @brief xcb_unmap_subwindows_request_t
# ##
# type
# xcb_unmap_subwindows_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# xcb_config_window_t* = enum
# XCB_CONFIG_WINDOW_X = 1, XCB_CONFIG_WINDOW_Y = 2, XCB_CONFIG_WINDOW_WIDTH = 4,
# XCB_CONFIG_WINDOW_HEIGHT = 8, XCB_CONFIG_WINDOW_BORDER_WIDTH = 16,
# XCB_CONFIG_WINDOW_SIBLING = 32, XCB_CONFIG_WINDOW_STACK_MODE = 64
# xcb_stack_mode_t* = enum
# XCB_STACK_MODE_ABOVE = 0, XCB_STACK_MODE_BELOW = 1, XCB_STACK_MODE_TOP_IF = 2,
# XCB_STACK_MODE_BOTTOM_IF = 3, XCB_STACK_MODE_OPPOSITE = 4
# ## *
# ## @brief xcb_configure_window_value_list_t
# ##
# type
# xcb_configure_window_value_list_t* {.bycopy.} = object
# x*: int32
# y*: int32
# width*: uint32
# height*: uint32
# border_width*: uint32
# sibling*: xcb_window_t
# stack_mode*: uint32
# ## * Opcode for xcb_configure_window.
# const
# XCB_CONFIGURE_WINDOW* = 12
# ## *
# ## @brief xcb_configure_window_request_t
# ##
# type
# xcb_configure_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# value_mask*: uint16
# pad1*: array[2, uint8]
# xcb_circulate_t* = enum
# XCB_CIRCULATE_RAISE_LOWEST = 0, XCB_CIRCULATE_LOWER_HIGHEST = 1
# ## * Opcode for xcb_circulate_window.
# const
# XCB_CIRCULATE_WINDOW* = 13
# ## *
# ## @brief xcb_circulate_window_request_t
# ##
# type
# xcb_circulate_window_request_t* {.bycopy.} = object
# major_opcode*: uint8
# direction*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_get_geometry_cookie_t
# ##
# type
# xcb_get_geometry_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_geometry.
# const
# XCB_GET_GEOMETRY* = 14
# ## *
# ## @brief xcb_get_geometry_request_t
# ##
# type
# xcb_get_geometry_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# ## *
# ## @brief xcb_get_geometry_reply_t
# ##
# type
# xcb_get_geometry_reply_t* {.bycopy.} = object
# response_type*: uint8
# depth*: uint8
# sequence*: uint16
# length*: uint32
# root*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# border_width*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_query_tree_cookie_t
# ##
# type
# xcb_query_tree_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_tree.
# const
# XCB_QUERY_TREE* = 15
# ## *
# ## @brief xcb_query_tree_request_t
# ##
# type
# xcb_query_tree_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_query_tree_reply_t
# ##
# type
# xcb_query_tree_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# root*: xcb_window_t
# parent*: xcb_window_t
# children_len*: uint16
# pad1*: array[14, uint8]
# ## *
# ## @brief xcb_intern_atom_cookie_t
# ##
# type
# xcb_intern_atom_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_intern_atom.
# const
# XCB_INTERN_ATOM* = 16
# ## *
# ## @brief xcb_intern_atom_request_t
# ##
# type
# xcb_intern_atom_request_t* {.bycopy.} = object
# major_opcode*: uint8
# only_if_exists*: uint8
# length*: uint16
# name_len*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_intern_atom_reply_t
# ##
# type
# xcb_intern_atom_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# atom*: xcb_atom_t
# ## *
# ## @brief xcb_get_atom_name_cookie_t
# ##
# type
# xcb_get_atom_name_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_atom_name.
# const
# XCB_GET_ATOM_NAME* = 17
# ## *
# ## @brief xcb_get_atom_name_request_t
# ##
# type
# xcb_get_atom_name_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# atom*: xcb_atom_t
# ## *
# ## @brief xcb_get_atom_name_reply_t
# ##
# type
# xcb_get_atom_name_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# name_len*: uint16
# pad1*: array[22, uint8]
# xcb_prop_mode_t* = enum
# XCB_PROP_MODE_REPLACE = 0, ## *< Discard the previous property value and store the new data.
# XCB_PROP_MODE_PREPEND = 1, ## *< Insert the new data before the beginning of existing data. The `format` must
# ## match existing property value. If the property is undefined, it is treated as
# ## defined with the correct type and format with zero-length data.
# XCB_PROP_MODE_APPEND = 2
# ## * Opcode for xcb_change_property.
# const
# XCB_CHANGE_PROPERTY* = 18
# ## *
# ## @brief xcb_change_property_request_t
# ##
# type
# xcb_change_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# window*: xcb_window_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# format*: uint8
# pad0*: array[3, uint8]
# data_len*: uint32
# ## * Opcode for xcb_delete_property.
# const
# XCB_DELETE_PROPERTY* = 19
# ## *
# ## @brief xcb_delete_property_request_t
# ##
# type
# xcb_delete_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# property*: xcb_atom_t
# xcb_get_property_type_t* = enum
# XCB_GET_PROPERTY_TYPE_ANY = 0
# ## *
# ## @brief xcb_get_property_cookie_t
# ##
# type
# xcb_get_property_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_property.
# const
# XCB_GET_PROPERTY* = 20
# ## *
# ## @brief xcb_get_property_request_t
# ##
# type
# xcb_get_property_request_t* {.bycopy.} = object
# major_opcode*: uint8
# _delete*: uint8
# length*: uint16
# window*: xcb_window_t
# property*: xcb_atom_t
# `type`*: xcb_atom_t
# long_offset*: uint32
# long_length*: uint32
# ## *
# ## @brief xcb_get_property_reply_t
# ##
# type
# xcb_get_property_reply_t* {.bycopy.} = object
# response_type*: uint8
# format*: uint8
# sequence*: uint16
# length*: uint32
# `type`*: xcb_atom_t
# bytes_after*: uint32
# value_len*: uint32
# pad0*: array[12, uint8]
# ## *
# ## @brief xcb_list_properties_cookie_t
# ##
# type
# xcb_list_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_properties.
# const
# XCB_LIST_PROPERTIES* = 21
# ## *
# ## @brief xcb_list_properties_request_t
# ##
# type
# xcb_list_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_list_properties_reply_t
# ##
# type
# xcb_list_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# atoms_len*: uint16
# pad1*: array[22, uint8]
# ## * Opcode for xcb_set_selection_owner.
# const
# XCB_SET_SELECTION_OWNER* = 22
# ## *
# ## @brief xcb_set_selection_owner_request_t
# ##
# type
# xcb_set_selection_owner_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# owner*: xcb_window_t
# selection*: xcb_atom_t
# time*: xcb_timestamp_t
# ## *
# ## @brief xcb_get_selection_owner_cookie_t
# ##
# type
# xcb_get_selection_owner_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_selection_owner.
# const
# XCB_GET_SELECTION_OWNER* = 23
# ## *
# ## @brief xcb_get_selection_owner_request_t
# ##
# type
# xcb_get_selection_owner_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# selection*: xcb_atom_t
# ## *
# ## @brief xcb_get_selection_owner_reply_t
# ##
# type
# xcb_get_selection_owner_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# owner*: xcb_window_t
# ## * Opcode for xcb_convert_selection.
# const
# XCB_CONVERT_SELECTION* = 24
# ## *
# ## @brief xcb_convert_selection_request_t
# ##
# type
# xcb_convert_selection_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# requestor*: xcb_window_t
# selection*: xcb_atom_t
# target*: xcb_atom_t
# property*: xcb_atom_t
# time*: xcb_timestamp_t
# xcb_send_event_dest_t* = enum
# XCB_SEND_EVENT_DEST_POINTER_WINDOW = 0, XCB_SEND_EVENT_DEST_ITEM_FOCUS = 1
# ## * Opcode for xcb_send_event.
# const
# XCB_SEND_EVENT* = 25
# ## *
# ## @brief xcb_send_event_request_t
# ##
# type
# xcb_send_event_request_t* {.bycopy.} = object
# major_opcode*: uint8
# propagate*: uint8
# length*: uint16
# destination*: xcb_window_t
# event_mask*: uint32
# event*: array[32, char]
# xcb_grab_mode_t* = enum
# XCB_GRAB_MODE_SYNC = 0, ## *< The state of the keyboard appears to freeze: No further keyboard events are
# ## generated by the server until the grabbing client issues a releasing
# ## `AllowEvents` request or until the keyboard grab is released.
# XCB_GRAB_MODE_ASYNC = 1
# xcb_grab_status_t* = enum
# XCB_GRAB_STATUS_SUCCESS = 0, XCB_GRAB_STATUS_ALREADY_GRABBED = 1,
# XCB_GRAB_STATUS_INVALID_TIME = 2, XCB_GRAB_STATUS_NOT_VIEWABLE = 3,
# XCB_GRAB_STATUS_FROZEN = 4
# xcb_cursor_enum_t* = enum
# XCB_CURSOR_NONE = 0
# ## *
# ## @brief xcb_grab_pointer_cookie_t
# ##
# type
# xcb_grab_pointer_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_grab_pointer.
# const
# XCB_GRAB_POINTER* = 26
# ## *
# ## @brief xcb_grab_pointer_request_t
# ##
# type
# xcb_grab_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# owner_events*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# event_mask*: uint16
# pointer_mode*: uint8
# keyboard_mode*: uint8
# confine_to*: xcb_window_t
# cursor*: xcb_cursor_t
# time*: xcb_timestamp_t
# ## *
# ## @brief xcb_grab_pointer_reply_t
# ##
# type
# xcb_grab_pointer_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# ## * Opcode for xcb_ungrab_pointer.
# const
# XCB_UNGRAB_POINTER* = 27
# ## *
# ## @brief xcb_ungrab_pointer_request_t
# ##
# type
# xcb_ungrab_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# xcb_button_index_t* = enum
# XCB_BUTTON_INDEX_ANY = 0, ## *< Any of the following (or none):
# XCB_BUTTON_INDEX_1 = 1, ## *< The left mouse button.
# XCB_BUTTON_INDEX_2 = 2, ## *< The right mouse button.
# XCB_BUTTON_INDEX_3 = 3, ## *< The middle mouse button.
# XCB_BUTTON_INDEX_4 = 4, ## *< Scroll wheel. TODO: direction?
# XCB_BUTTON_INDEX_5 = 5
# ## * Opcode for xcb_grab_button.
# const
# XCB_GRAB_BUTTON* = 28
# ## *
# ## @brief xcb_grab_button_request_t
# ##
# type
# xcb_grab_button_request_t* {.bycopy.} = object
# major_opcode*: uint8
# owner_events*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# event_mask*: uint16
# pointer_mode*: uint8
# keyboard_mode*: uint8
# confine_to*: xcb_window_t
# cursor*: xcb_cursor_t
# button*: uint8
# pad0*: uint8
# modifiers*: uint16
# ## * Opcode for xcb_ungrab_button.
# const
# XCB_UNGRAB_BUTTON* = 29
# ## *
# ## @brief xcb_ungrab_button_request_t
# ##
# type
# xcb_ungrab_button_request_t* {.bycopy.} = object
# major_opcode*: uint8
# button*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# modifiers*: uint16
# pad0*: array[2, uint8]
# ## * Opcode for xcb_change_active_pointer_grab.
# const
# XCB_CHANGE_ACTIVE_POINTER_GRAB* = 30
# ## *
# ## @brief xcb_change_active_pointer_grab_request_t
# ##
# type
# xcb_change_active_pointer_grab_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cursor*: xcb_cursor_t
# time*: xcb_timestamp_t
# event_mask*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_grab_keyboard_cookie_t
# ##
# type
# xcb_grab_keyboard_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_grab_keyboard.
# const
# XCB_GRAB_KEYBOARD* = 31
# ## *
# ## @brief xcb_grab_keyboard_request_t
# ##
# type
# xcb_grab_keyboard_request_t* {.bycopy.} = object
# major_opcode*: uint8
# owner_events*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# time*: xcb_timestamp_t
# pointer_mode*: uint8
# keyboard_mode*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_grab_keyboard_reply_t
# ##
# type
# xcb_grab_keyboard_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# ## * Opcode for xcb_ungrab_keyboard.
# const
# XCB_UNGRAB_KEYBOARD* = 32
# ## *
# ## @brief xcb_ungrab_keyboard_request_t
# ##
# type
# xcb_ungrab_keyboard_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# xcb_grab_t* = enum
# XCB_GRAB_ANY = 0
# ## * Opcode for xcb_grab_key.
# const
# XCB_GRAB_KEY* = 33
# ## *
# ## @brief xcb_grab_key_request_t
# ##
# type
# xcb_grab_key_request_t* {.bycopy.} = object
# major_opcode*: uint8
# owner_events*: uint8
# length*: uint16
# grab_window*: xcb_window_t
# modifiers*: uint16
# key*: xcb_keycode_t
# pointer_mode*: uint8
# keyboard_mode*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_ungrab_key.
# const
# XCB_UNGRAB_KEY* = 34
# ## *
# ## @brief xcb_ungrab_key_request_t
# ##
# type
# xcb_ungrab_key_request_t* {.bycopy.} = object
# major_opcode*: uint8
# key*: xcb_keycode_t
# length*: uint16
# grab_window*: xcb_window_t
# modifiers*: uint16
# pad0*: array[2, uint8]
# xcb_allow_t* = enum
# XCB_ALLOW_ASYNC_POINTER = 0, ## *< For AsyncPointer, if the pointer is frozen by the client, pointer event
# ## processing continues normally. If the pointer is frozen twice by the client on
# ## behalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no
# ## effect if the pointer is not frozen by the client, but the pointer need not be
# ## grabbed by the client.
# ##
# ## TODO: rewrite this in more understandable terms.
# XCB_ALLOW_SYNC_POINTER = 1, ## *< For SyncPointer, if the pointer is frozen and actively grabbed by the client,
# ## pointer event processing continues normally until the next ButtonPress or
# ## ButtonRelease event is reported to the client, at which time the pointer again
# ## appears to freeze. However, if the reported event causes the pointer grab to be
# ## released, then the pointer does not freeze. SyncPointer has no effect if the
# ## pointer is not frozen by the client or if the pointer is not grabbed by the
# ## client.
# XCB_ALLOW_REPLAY_POINTER = 2, ## *< For ReplayPointer, if the pointer is actively grabbed by the client and is
# ## frozen as the result of an event having been sent to the client (either from
# ## the activation of a GrabButton or from a previous AllowEvents with mode
# ## SyncPointer but not from a GrabPointer), then the pointer grab is released and
# ## that event is completely reprocessed, this time ignoring any passive grabs at
# ## or above (towards the root) the grab-window of the grab just released. The
# ## request has no effect if the pointer is not grabbed by the client or if the
# ## pointer is not frozen as the result of an event.
# XCB_ALLOW_ASYNC_KEYBOARD = 3, ## *< For AsyncKeyboard, if the keyboard is frozen by the client, keyboard event
# ## processing continues normally. If the keyboard is frozen twice by the client on
# ## behalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has
# ## no effect if the keyboard is not frozen by the client, but the keyboard need
# ## not be grabbed by the client.
# XCB_ALLOW_SYNC_KEYBOARD = 4, ## *< For SyncKeyboard, if the keyboard is frozen and actively grabbed by the client,
# ## keyboard event processing continues normally until the next KeyPress or
# ## KeyRelease event is reported to the client, at which time the keyboard again
# ## appears to freeze. However, if the reported event causes the keyboard grab to
# ## be released, then the keyboard does not freeze. SyncKeyboard has no effect if
# ## the keyboard is not frozen by the client or if the keyboard is not grabbed by
# ## the client.
# XCB_ALLOW_REPLAY_KEYBOARD = 5, ## *< For ReplayKeyboard, if the keyboard is actively grabbed by the client and is
# ## frozen as the result of an event having been sent to the client (either from
# ## the activation of a GrabKey or from a previous AllowEvents with mode
# ## SyncKeyboard but not from a GrabKeyboard), then the keyboard grab is released
# ## and that event is completely reprocessed, this time ignoring any passive grabs
# ## at or above (towards the root) the grab-window of the grab just released. The
# ## request has no effect if the keyboard is not grabbed by the client or if the
# ## keyboard is not frozen as the result of an event.
# XCB_ALLOW_ASYNC_BOTH = 6, ## *< For AsyncBoth, if the pointer and the keyboard are frozen by the client, event
# ## processing for both devices continues normally. If a device is frozen twice by
# ## the client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth
# ## has no effect unless both pointer and keyboard are frozen by the client.
# XCB_ALLOW_SYNC_BOTH = 7
# ## * Opcode for xcb_allow_events.
# const
# XCB_ALLOW_EVENTS* = 35
# ## *
# ## @brief xcb_allow_events_request_t
# ##
# type
# xcb_allow_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# time*: xcb_timestamp_t
# ## * Opcode for xcb_grab_server.
# const
# XCB_GRAB_SERVER* = 36
# ## *
# ## @brief xcb_grab_server_request_t
# ##
# type
# xcb_grab_server_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## * Opcode for xcb_ungrab_server.
# const
# XCB_UNGRAB_SERVER* = 37
# ## *
# ## @brief xcb_ungrab_server_request_t
# ##
# type
# xcb_ungrab_server_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_query_pointer_cookie_t
# ##
# type
# xcb_query_pointer_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_pointer.
# const
# XCB_QUERY_POINTER* = 38
# ## *
# ## @brief xcb_query_pointer_request_t
# ##
# type
# xcb_query_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_query_pointer_reply_t
# ##
# type
# xcb_query_pointer_reply_t* {.bycopy.} = object
# response_type*: uint8
# same_screen*: uint8
# sequence*: uint16
# length*: uint32
# root*: xcb_window_t
# child*: xcb_window_t
# root_x*: int16
# root_y*: int16
# win_x*: int16
# win_y*: int16
# mask*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_timecoord_t
# ##
# type
# xcb_timecoord_t* {.bycopy.} = object
# time*: xcb_timestamp_t
# x*: int16
# y*: int16
# ## *
# ## @brief xcb_timecoord_iterator_t
# ##
# type
# xcb_timecoord_iterator_t* {.bycopy.} = object
# data*: ptr xcb_timecoord_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_get_motion_events_cookie_t
# ##
# type
# xcb_get_motion_events_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_motion_events.
# const
# XCB_GET_MOTION_EVENTS* = 39
# ## *
# ## @brief xcb_get_motion_events_request_t
# ##
# type
# xcb_get_motion_events_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# start*: xcb_timestamp_t
# stop*: xcb_timestamp_t
# ## *
# ## @brief xcb_get_motion_events_reply_t
# ##
# type
# xcb_get_motion_events_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# events_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_translate_coordinates_cookie_t
# ##
# type
# xcb_translate_coordinates_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_translate_coordinates.
# const
# XCB_TRANSLATE_COORDINATES* = 40
# ## *
# ## @brief xcb_translate_coordinates_request_t
# ##
# type
# xcb_translate_coordinates_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# src_window*: xcb_window_t
# dst_window*: xcb_window_t
# src_x*: int16
# src_y*: int16
# ## *
# ## @brief xcb_translate_coordinates_reply_t
# ##
# type
# xcb_translate_coordinates_reply_t* {.bycopy.} = object
# response_type*: uint8
# same_screen*: uint8
# sequence*: uint16
# length*: uint32
# child*: xcb_window_t
# dst_x*: int16
# dst_y*: int16
# ## * Opcode for xcb_warp_pointer.
# const
# XCB_WARP_POINTER* = 41
# ## *
# ## @brief xcb_warp_pointer_request_t
# ##
# type
# xcb_warp_pointer_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# src_window*: xcb_window_t
# dst_window*: xcb_window_t
# src_x*: int16
# src_y*: int16
# src_width*: uint16
# src_height*: uint16
# dst_x*: int16
# dst_y*: int16
# xcb_input_focus_t* = enum
# XCB_INPUT_FOCUS_NONE = 0, ## *< The focus reverts to `XCB_NONE`, so no window will have the input focus.
# XCB_INPUT_FOCUS_POINTER_ROOT = 1, ## *< The focus reverts to `XCB_POINTER_ROOT` respectively. When the focus reverts,
# ## FocusIn and FocusOut events are generated, but the last-focus-change time is
# ## not changed.
# XCB_INPUT_FOCUS_PARENT = 2, ## *< The focus reverts to the parent (or closest viewable ancestor) and the new
# ## revert_to value is `XCB_INPUT_FOCUS_NONE`.
# XCB_INPUT_FOCUS_FOLLOW_KEYBOARD = 3
# ## * Opcode for xcb_set_input_focus.
# const
# XCB_SET_INPUT_FOCUS* = 42
# ## *
# ## @brief xcb_set_input_focus_request_t
# ##
# type
# xcb_set_input_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# revert_to*: uint8
# length*: uint16
# focus*: xcb_window_t
# time*: xcb_timestamp_t
# ## *
# ## @brief xcb_get_input_focus_cookie_t
# ##
# type
# xcb_get_input_focus_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_input_focus.
# const
# XCB_GET_INPUT_FOCUS* = 43
# ## *
# ## @brief xcb_get_input_focus_request_t
# ##
# type
# xcb_get_input_focus_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_input_focus_reply_t
# ##
# type
# xcb_get_input_focus_reply_t* {.bycopy.} = object
# response_type*: uint8
# revert_to*: uint8
# sequence*: uint16
# length*: uint32
# focus*: xcb_window_t
# ## *
# ## @brief xcb_query_keymap_cookie_t
# ##
# type
# xcb_query_keymap_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_keymap.
# const
# XCB_QUERY_KEYMAP* = 44
# ## *
# ## @brief xcb_query_keymap_request_t
# ##
# type
# xcb_query_keymap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_query_keymap_reply_t
# ##
# type
# xcb_query_keymap_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# keys*: array[32, uint8]
# ## * Opcode for xcb_open_font.
# const
# XCB_OPEN_FONT* = 45
# ## *
# ## @brief xcb_open_font_request_t
# ##
# type
# xcb_open_font_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# fid*: xcb_font_t
# name_len*: uint16
# pad1*: array[2, uint8]
# ## * Opcode for xcb_close_font.
# const
# XCB_CLOSE_FONT* = 46
# ## *
# ## @brief xcb_close_font_request_t
# ##
# type
# xcb_close_font_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# font*: xcb_font_t
# xcb_font_draw_t* = enum
# XCB_FONT_DRAW_LEFT_TO_RIGHT = 0, XCB_FONT_DRAW_RIGHT_TO_LEFT = 1
# ## *
# ## @brief xcb_fontprop_t
# ##
# type
# xcb_fontprop_t* {.bycopy.} = object
# name*: xcb_atom_t
# value*: uint32
# ## *
# ## @brief xcb_fontprop_iterator_t
# ##
# type
# xcb_fontprop_iterator_t* {.bycopy.} = object
# data*: ptr xcb_fontprop_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_charinfo_t
# ##
# type
# xcb_charinfo_t* {.bycopy.} = object
# left_side_bearing*: int16
# right_side_bearing*: int16
# character_width*: int16
# ascent*: int16
# descent*: int16
# attributes*: uint16
# ## *
# ## @brief xcb_charinfo_iterator_t
# ##
# type
# xcb_charinfo_iterator_t* {.bycopy.} = object
# data*: ptr xcb_charinfo_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_query_font_cookie_t
# ##
# type
# xcb_query_font_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_font.
# const
# XCB_QUERY_FONT* = 47
# ## *
# ## @brief xcb_query_font_request_t
# ##
# type
# xcb_query_font_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# font*: xcb_fontable_t
# ## *
# ## @brief xcb_query_font_reply_t
# ##
# type
# xcb_query_font_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# min_bounds*: xcb_charinfo_t
# pad1*: array[4, uint8]
# max_bounds*: xcb_charinfo_t
# pad2*: array[4, uint8]
# min_char_or_byte2*: uint16
# max_char_or_byte2*: uint16
# default_char*: uint16
# properties_len*: uint16
# draw_direction*: uint8
# min_byte1*: uint8
# max_byte1*: uint8
# all_chars_exist*: uint8
# font_ascent*: int16
# font_descent*: int16
# char_infos_len*: uint32
# ## *
# ## @brief xcb_query_text_extents_cookie_t
# ##
# type
# xcb_query_text_extents_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_text_extents.
# const
# XCB_QUERY_TEXT_EXTENTS* = 48
# ## *
# ## @brief xcb_query_text_extents_request_t
# ##
# type
# xcb_query_text_extents_request_t* {.bycopy.} = object
# major_opcode*: uint8
# odd_length*: uint8
# length*: uint16
# font*: xcb_fontable_t
# ## *
# ## @brief xcb_query_text_extents_reply_t
# ##
# type
# xcb_query_text_extents_reply_t* {.bycopy.} = object
# response_type*: uint8
# draw_direction*: uint8
# sequence*: uint16
# length*: uint32
# font_ascent*: int16
# font_descent*: int16
# overall_ascent*: int16
# overall_descent*: int16
# overall_width*: int32
# overall_left*: int32
# overall_right*: int32
# ## *
# ## @brief xcb_str_t
# ##
# type
# xcb_str_t* {.bycopy.} = object
# name_len*: uint8
# ## *
# ## @brief xcb_str_iterator_t
# ##
# type
# xcb_str_iterator_t* {.bycopy.} = object
# data*: ptr xcb_str_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_list_fonts_cookie_t
# ##
# type
# xcb_list_fonts_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_fonts.
# const
# XCB_LIST_FONTS* = 49
# ## *
# ## @brief xcb_list_fonts_request_t
# ##
# type
# xcb_list_fonts_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# max_names*: uint16
# pattern_len*: uint16
# ## *
# ## @brief xcb_list_fonts_reply_t
# ##
# type
# xcb_list_fonts_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# names_len*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_list_fonts_with_info_cookie_t
# ##
# type
# xcb_list_fonts_with_info_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_fonts_with_info.
# const
# XCB_LIST_FONTS_WITH_INFO* = 50
# ## *
# ## @brief xcb_list_fonts_with_info_request_t
# ##
# type
# xcb_list_fonts_with_info_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# max_names*: uint16
# pattern_len*: uint16
# ## *
# ## @brief xcb_list_fonts_with_info_reply_t
# ##
# type
# xcb_list_fonts_with_info_reply_t* {.bycopy.} = object
# response_type*: uint8
# name_len*: uint8
# sequence*: uint16
# length*: uint32
# min_bounds*: xcb_charinfo_t
# pad0*: array[4, uint8]
# max_bounds*: xcb_charinfo_t
# pad1*: array[4, uint8]
# min_char_or_byte2*: uint16
# max_char_or_byte2*: uint16
# default_char*: uint16
# properties_len*: uint16
# draw_direction*: uint8
# min_byte1*: uint8
# max_byte1*: uint8
# all_chars_exist*: uint8
# font_ascent*: int16
# font_descent*: int16
# replies_hint*: uint32
# ## * Opcode for xcb_set_font_path.
# const
# XCB_SET_FONT_PATH* = 51
# ## *
# ## @brief xcb_set_font_path_request_t
# ##
# type
# xcb_set_font_path_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# font_qty*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_get_font_path_cookie_t
# ##
# type
# xcb_get_font_path_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_font_path.
# const
# XCB_GET_FONT_PATH* = 52
# ## *
# ## @brief xcb_get_font_path_request_t
# ##
# type
# xcb_get_font_path_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_font_path_reply_t
# ##
# type
# xcb_get_font_path_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# path_len*: uint16
# pad1*: array[22, uint8]
# ## * Opcode for xcb_create_pixmap.
# const
# XCB_CREATE_PIXMAP* = 53
# ## *
# ## @brief xcb_create_pixmap_request_t
# ##
# type
# xcb_create_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# depth*: uint8
# length*: uint16
# pid*: xcb_pixmap_t
# drawable*: xcb_drawable_t
# width*: uint16
# height*: uint16
# ## * Opcode for xcb_free_pixmap.
# const
# XCB_FREE_PIXMAP* = 54
# ## *
# ## @brief xcb_free_pixmap_request_t
# ##
# type
# xcb_free_pixmap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# pixmap*: xcb_pixmap_t
# xcb_gc_t* = enum
# XCB_GC_FUNCTION = 1, ## *< TODO: Refer to GX
# XCB_GC_PLANE_MASK = 2, ## *< In graphics operations, given a source and destination pixel, the result is
# ## computed bitwise on corresponding bits of the pixels; that is, a Boolean
# ## operation is performed in each bit plane. The plane-mask restricts the
# ## operation to a subset of planes, so the result is:
# ##
# ## ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
# XCB_GC_FOREGROUND = 4, ## *< Foreground colorpixel.
# XCB_GC_BACKGROUND = 8, ## *< Background colorpixel.
# XCB_GC_LINE_WIDTH = 16, ## *< The line-width is measured in pixels and can be greater than or equal to one, a wide line, or the
# ## special value zero, a thin line.
# XCB_GC_LINE_STYLE = 32, ## *< The line-style defines which sections of a line are drawn:
# ## Solid The full path of the line is drawn.
# ## DoubleDash The full path of the line is drawn, but the even dashes are filled differently
# ## than the odd dashes (see fill-style), with Butt cap-style used where even and
# ## odd dashes meet.
# ## OnOffDash Only the even dashes are drawn, and cap-style applies to all internal ends of
# ## the individual dashes (except NotLast is treated as Butt).
# XCB_GC_CAP_STYLE = 64, ## *< The cap-style defines how the endpoints of a path are drawn:
# ## NotLast The result is equivalent to Butt, except that for a line-width of zero the final
# ## endpoint is not drawn.
# ## Butt The result is square at the endpoint (perpendicular to the slope of the line)
# ## with no projection beyond.
# ## Round The result is a circular arc with its diameter equal to the line-width, centered
# ## on the endpoint; it is equivalent to Butt for line-width zero.
# ## Projecting The result is square at the end, but the path continues beyond the endpoint for
# ## a distance equal to half the line-width; it is equivalent to Butt for line-width
# ## zero.
# XCB_GC_JOIN_STYLE = 128, ## *< The join-style defines how corners are drawn for wide lines:
# ## Miter The outer edges of the two lines extend to meet at an angle. However, if the
# ## angle is less than 11 degrees, a Bevel join-style is used instead.
# ## Round The result is a circular arc with a diameter equal to the line-width, centered
# ## on the joinpoint.
# ## Bevel The result is Butt endpoint styles, and then the triangular notch is filled.
# XCB_GC_FILL_STYLE = 256, ## *< The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill
# ## requests (for example, PolyText8, PolyText16, PolyFillRectangle, FillPoly, and PolyFillArc)
# ## as well as for line requests with line-style Solid, (for example, PolyLine, PolySegment,
# ## PolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash
# ## or DoubleDash:
# ## Solid Foreground
# ## Tiled Tile
# ## OpaqueStippled A tile with the same width and height as stipple but with background
# ## everywhere stipple has a zero and with foreground everywhere stipple
# ## has a one
# ## Stippled Foreground masked by stipple
# ## For the odd dashes for line requests with line-style DoubleDash:
# ## Solid Background
# ## Tiled Same as for even dashes
# ## OpaqueStippled Same as for even dashes
# ## Stippled Background masked by stipple
# XCB_GC_FILL_RULE = 512, ## *<
# XCB_GC_TILE = 1024, ## *< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
# ## dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
# ## the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
# ## specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
# ## origin of whatever destination drawable is specified in a graphics request.
# ## The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
# ## The stipple pixmap must have depth one and must have the same root as the gcontext (or a
# ## Match error results). For fill-style Stippled (but not fill-style
# ## OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
# ## additional clip mask to be ANDed with the clip-mask.
# ## Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
# ## others.
# XCB_GC_STIPPLE = 2048, ## *< The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all
# ## dimensions. When that plane is superimposed on the drawable for use in a graphics operation,
# ## the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable
# ## specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the
# ## origin of whatever destination drawable is specified in a graphics request.
# ## The tile pixmap must have the same root and depth as the gcontext (or a Match error results).
# ## The stipple pixmap must have depth one and must have the same root as the gcontext (or a
# ## Match error results). For fill-style Stippled (but not fill-style
# ## OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an
# ## additional clip mask to be ANDed with the clip-mask.
# ## Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than
# ## others.
# XCB_GC_TILE_STIPPLE_ORIGIN_X = 4096, ## *< TODO
# XCB_GC_TILE_STIPPLE_ORIGIN_Y = 8192, ## *< TODO
# XCB_GC_FONT = 16384, ## *< Which font to use for the `ImageText8` and `ImageText16` requests.
# XCB_GC_SUBWINDOW_MODE = 32768, ## *< For ClipByChildren, both source and destination windows are additionally
# ## clipped by all viewable InputOutput children. For IncludeInferiors, neither
# ## source nor destination window is
# ## clipped by inferiors. This will result in including subwindow contents in the source and drawing
# ## through subwindow boundaries of the destination. The use of IncludeInferiors with a source or
# ## destination window of one depth with mapped inferiors of differing depth is not illegal, but the
# ## semantics is undefined by the core protocol.
# XCB_GC_GRAPHICS_EXPOSURES = 65536, ## *< Whether ExposureEvents should be generated (1) or not (0).
# ##
# ## The default is 1.
# XCB_GC_CLIP_ORIGIN_X = 131072, ## *< TODO
# XCB_GC_CLIP_ORIGIN_Y = 262144, ## *< TODO
# XCB_GC_CLIP_MASK = 524288, ## *< The clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has
# ## bits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where
# ## the clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip
# ## sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. If a pixmap is specified as the clip-mask, it must have
# ## depth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None,
# ## then pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the
# ## SetClipRectangles request.
# XCB_GC_DASH_OFFSET = 1048576, ## *< TODO
# XCB_GC_DASH_LIST = 2097152, ## *< TODO
# XCB_GC_ARC_MODE = 4194304
# xcb_gx_t* = enum
# XCB_GX_CLEAR = 0, XCB_GX_AND = 1, XCB_GX_AND_REVERSE = 2, XCB_GX_COPY = 3,
# XCB_GX_AND_INVERTED = 4, XCB_GX_NOOP = 5, XCB_GX_XOR = 6, XCB_GX_OR = 7, XCB_GX_NOR = 8,
# XCB_GX_EQUIV = 9, XCB_GX_INVERT = 10, XCB_GX_OR_REVERSE = 11,
# XCB_GX_COPY_INVERTED = 12, XCB_GX_OR_INVERTED = 13, XCB_GX_NAND = 14, XCB_GX_SET = 15
# xcb_line_style_t* = enum
# XCB_LINE_STYLE_SOLID = 0, XCB_LINE_STYLE_ON_OFF_DASH = 1,
# XCB_LINE_STYLE_DOUBLE_DASH = 2
# xcb_cap_style_t* = enum
# XCB_CAP_STYLE_NOT_LAST = 0, XCB_CAP_STYLE_BUTT = 1, XCB_CAP_STYLE_ROUND = 2,
# XCB_CAP_STYLE_PROJECTING = 3
# xcb_join_style_t* = enum
# XCB_JOIN_STYLE_MITER = 0, XCB_JOIN_STYLE_ROUND = 1, XCB_JOIN_STYLE_BEVEL = 2
# xcb_fill_style_t* = enum
# XCB_FILL_STYLE_SOLID = 0, XCB_FILL_STYLE_TILED = 1, XCB_FILL_STYLE_STIPPLED = 2,
# XCB_FILL_STYLE_OPAQUE_STIPPLED = 3
# xcb_fill_rule_t* = enum
# XCB_FILL_RULE_EVEN_ODD = 0, XCB_FILL_RULE_WINDING = 1
# xcb_subwindow_mode_t* = enum
# XCB_SUBWINDOW_MODE_CLIP_BY_CHILDREN = 0,
# XCB_SUBWINDOW_MODE_INCLUDE_INFERIORS = 1
# xcb_arc_mode_t* = enum
# XCB_ARC_MODE_CHORD = 0, XCB_ARC_MODE_PIE_SLICE = 1
# ## *
# ## @brief xcb_create_gc_value_list_t
# ##
# type
# xcb_create_gc_value_list_t* {.bycopy.} = object
# function*: uint32
# plane_mask*: uint32
# foreground*: uint32
# background*: uint32
# line_width*: uint32
# line_style*: uint32
# cap_style*: uint32
# join_style*: uint32
# fill_style*: uint32
# fill_rule*: uint32
# tile*: xcb_pixmap_t
# stipple*: xcb_pixmap_t
# tile_stipple_x_origin*: int32
# tile_stipple_y_origin*: int32
# font*: xcb_font_t
# subwindow_mode*: uint32
# graphics_exposures*: xcb_bool32_t
# clip_x_origin*: int32
# clip_y_origin*: int32
# clip_mask*: xcb_pixmap_t
# dash_offset*: uint32
# dashes*: uint32
# arc_mode*: uint32
# ## * Opcode for xcb_create_gc.
# const
# XCB_CREATE_GC* = 55
# ## *
# ## @brief xcb_create_gc_request_t
# ##
# type
# xcb_create_gc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cid*: xcb_gcontext_t
# drawable*: xcb_drawable_t
# value_mask*: uint32
# ## *
# ## @brief xcb_change_gc_value_list_t
# ##
# type
# xcb_change_gc_value_list_t* {.bycopy.} = object
# function*: uint32
# plane_mask*: uint32
# foreground*: uint32
# background*: uint32
# line_width*: uint32
# line_style*: uint32
# cap_style*: uint32
# join_style*: uint32
# fill_style*: uint32
# fill_rule*: uint32
# tile*: xcb_pixmap_t
# stipple*: xcb_pixmap_t
# tile_stipple_x_origin*: int32
# tile_stipple_y_origin*: int32
# font*: xcb_font_t
# subwindow_mode*: uint32
# graphics_exposures*: xcb_bool32_t
# clip_x_origin*: int32
# clip_y_origin*: int32
# clip_mask*: xcb_pixmap_t
# dash_offset*: uint32
# dashes*: uint32
# arc_mode*: uint32
# ## * Opcode for xcb_change_gc.
# const
# XCB_CHANGE_GC* = 56
# ## *
# ## @brief xcb_change_gc_request_t
# ##
# type
# xcb_change_gc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# gc*: xcb_gcontext_t
# value_mask*: uint32
# ## * Opcode for xcb_copy_gc.
# const
# XCB_COPY_GC* = 57
# ## *
# ## @brief xcb_copy_gc_request_t
# ##
# type
# xcb_copy_gc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# src_gc*: xcb_gcontext_t
# dst_gc*: xcb_gcontext_t
# value_mask*: uint32
# ## * Opcode for xcb_set_dashes.
# const
# XCB_SET_DASHES* = 58
# ## *
# ## @brief xcb_set_dashes_request_t
# ##
# type
# xcb_set_dashes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# gc*: xcb_gcontext_t
# dash_offset*: uint16
# dashes_len*: uint16
# xcb_clip_ordering_t* = enum
# XCB_CLIP_ORDERING_UNSORTED = 0, XCB_CLIP_ORDERING_Y_SORTED = 1,
# XCB_CLIP_ORDERING_YX_SORTED = 2, XCB_CLIP_ORDERING_YX_BANDED = 3
# ## * Opcode for xcb_set_clip_rectangles.
# const
# XCB_SET_CLIP_RECTANGLES* = 59
# ## *
# ## @brief xcb_set_clip_rectangles_request_t
# ##
# type
# xcb_set_clip_rectangles_request_t* {.bycopy.} = object
# major_opcode*: uint8
# ordering*: uint8
# length*: uint16
# gc*: xcb_gcontext_t
# clip_x_origin*: int16
# clip_y_origin*: int16
# ## * Opcode for xcb_free_gc.
# const
# XCB_FREE_GC* = 60
# ## *
# ## @brief xcb_free_gc_request_t
# ##
# type
# xcb_free_gc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_clear_area.
# const
# XCB_CLEAR_AREA* = 61
# ## *
# ## @brief xcb_clear_area_request_t
# ##
# type
# xcb_clear_area_request_t* {.bycopy.} = object
# major_opcode*: uint8
# exposures*: uint8
# length*: uint16
# window*: xcb_window_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# ## * Opcode for xcb_copy_area.
# const
# XCB_COPY_AREA* = 62
# ## *
# ## @brief xcb_copy_area_request_t
# ##
# type
# xcb_copy_area_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# src_drawable*: xcb_drawable_t
# dst_drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# src_x*: int16
# src_y*: int16
# dst_x*: int16
# dst_y*: int16
# width*: uint16
# height*: uint16
# ## * Opcode for xcb_copy_plane.
# const
# XCB_COPY_PLANE* = 63
# ## *
# ## @brief xcb_copy_plane_request_t
# ##
# type
# xcb_copy_plane_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# src_drawable*: xcb_drawable_t
# dst_drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# src_x*: int16
# src_y*: int16
# dst_x*: int16
# dst_y*: int16
# width*: uint16
# height*: uint16
# bit_plane*: uint32
# xcb_coord_mode_t* = enum
# XCB_COORD_MODE_ORIGIN = 0, ## *< Treats all coordinates as relative to the origin.
# XCB_COORD_MODE_PREVIOUS = 1
# ## * Opcode for xcb_poly_point.
# const
# XCB_POLY_POINT* = 64
# ## *
# ## @brief xcb_poly_point_request_t
# ##
# type
# xcb_poly_point_request_t* {.bycopy.} = object
# major_opcode*: uint8
# coordinate_mode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_poly_line.
# const
# XCB_POLY_LINE* = 65
# ## *
# ## @brief xcb_poly_line_request_t
# ##
# type
# xcb_poly_line_request_t* {.bycopy.} = object
# major_opcode*: uint8
# coordinate_mode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# ## *
# ## @brief xcb_segment_t
# ##
# type
# xcb_segment_t* {.bycopy.} = object
# x1*: int16
# y1*: int16
# x2*: int16
# y2*: int16
# ## *
# ## @brief xcb_segment_iterator_t
# ##
# type
# xcb_segment_iterator_t* {.bycopy.} = object
# data*: ptr xcb_segment_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_poly_segment.
# const
# XCB_POLY_SEGMENT* = 66
# ## *
# ## @brief xcb_poly_segment_request_t
# ##
# type
# xcb_poly_segment_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_poly_rectangle.
# const
# XCB_POLY_RECTANGLE* = 67
# ## *
# ## @brief xcb_poly_rectangle_request_t
# ##
# type
# xcb_poly_rectangle_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_poly_arc.
# const
# XCB_POLY_ARC* = 68
# ## *
# ## @brief xcb_poly_arc_request_t
# ##
# type
# xcb_poly_arc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# xcb_poly_shape_t* = enum
# XCB_POLY_SHAPE_COMPLEX = 0, XCB_POLY_SHAPE_NONCONVEX = 1,
# XCB_POLY_SHAPE_CONVEX = 2
# ## * Opcode for xcb_fill_poly.
# const
# XCB_FILL_POLY* = 69
# ## *
# ## @brief xcb_fill_poly_request_t
# ##
# type
# xcb_fill_poly_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# shape*: uint8
# coordinate_mode*: uint8
# pad1*: array[2, uint8]
# ## * Opcode for xcb_poly_fill_rectangle.
# const
# XCB_POLY_FILL_RECTANGLE* = 70
# ## *
# ## @brief xcb_poly_fill_rectangle_request_t
# ##
# type
# xcb_poly_fill_rectangle_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# ## * Opcode for xcb_poly_fill_arc.
# const
# XCB_POLY_FILL_ARC* = 71
# ## *
# ## @brief xcb_poly_fill_arc_request_t
# ##
# type
# xcb_poly_fill_arc_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# xcb_image_format_t* = enum
# XCB_IMAGE_FORMAT_XY_BITMAP = 0, XCB_IMAGE_FORMAT_XY_PIXMAP = 1,
# XCB_IMAGE_FORMAT_Z_PIXMAP = 2
# ## * Opcode for xcb_put_image.
# const
# XCB_PUT_IMAGE* = 72
# ## *
# ## @brief xcb_put_image_request_t
# ##
# type
# xcb_put_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# format*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# width*: uint16
# height*: uint16
# dst_x*: int16
# dst_y*: int16
# left_pad*: uint8
# depth*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_get_image_cookie_t
# ##
# type
# xcb_get_image_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_image.
# const
# XCB_GET_IMAGE* = 73
# ## *
# ## @brief xcb_get_image_request_t
# ##
# type
# xcb_get_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# format*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# x*: int16
# y*: int16
# width*: uint16
# height*: uint16
# plane_mask*: uint32
# ## *
# ## @brief xcb_get_image_reply_t
# ##
# type
# xcb_get_image_reply_t* {.bycopy.} = object
# response_type*: uint8
# depth*: uint8
# sequence*: uint16
# length*: uint32
# visual*: xcb_visualid_t
# pad0*: array[20, uint8]
# ## * Opcode for xcb_poly_text_8.
# const
# XCB_POLY_TEXT_8* = 74
# ## *
# ## @brief xcb_poly_text_8_request_t
# ##
# type
# xcb_poly_text_8_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# x*: int16
# y*: int16
# ## * Opcode for xcb_poly_text_16.
# const
# XCB_POLY_TEXT_16* = 75
# ## *
# ## @brief xcb_poly_text_16_request_t
# ##
# type
# xcb_poly_text_16_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# x*: int16
# y*: int16
# ## * Opcode for xcb_image_text_8.
# const
# XCB_IMAGE_TEXT_8* = 76
# ## *
# ## @brief xcb_image_text_8_request_t
# ##
# type
# xcb_image_text_8_request_t* {.bycopy.} = object
# major_opcode*: uint8
# string_len*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# x*: int16
# y*: int16
# ## * Opcode for xcb_image_text_16.
# const
# XCB_IMAGE_TEXT_16* = 77
# ## *
# ## @brief xcb_image_text_16_request_t
# ##
# type
# xcb_image_text_16_request_t* {.bycopy.} = object
# major_opcode*: uint8
# string_len*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# x*: int16
# y*: int16
# xcb_colormap_alloc_t* = enum
# XCB_COLORMAP_ALLOC_NONE = 0, XCB_COLORMAP_ALLOC_ALL = 1
# ## * Opcode for xcb_create_colormap.
# const
# XCB_CREATE_COLORMAP* = 78
# ## *
# ## @brief xcb_create_colormap_request_t
# ##
# type
# xcb_create_colormap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# alloc*: uint8
# length*: uint16
# mid*: xcb_colormap_t
# window*: xcb_window_t
# visual*: xcb_visualid_t
# ## * Opcode for xcb_free_colormap.
# const
# XCB_FREE_COLORMAP* = 79
# ## *
# ## @brief xcb_free_colormap_request_t
# ##
# type
# xcb_free_colormap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# ## * Opcode for xcb_copy_colormap_and_free.
# const
# XCB_COPY_COLORMAP_AND_FREE* = 80
# ## *
# ## @brief xcb_copy_colormap_and_free_request_t
# ##
# type
# xcb_copy_colormap_and_free_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# mid*: xcb_colormap_t
# src_cmap*: xcb_colormap_t
# ## * Opcode for xcb_install_colormap.
# const
# XCB_INSTALL_COLORMAP* = 81
# ## *
# ## @brief xcb_install_colormap_request_t
# ##
# type
# xcb_install_colormap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# ## * Opcode for xcb_uninstall_colormap.
# const
# XCB_UNINSTALL_COLORMAP* = 82
# ## *
# ## @brief xcb_uninstall_colormap_request_t
# ##
# type
# xcb_uninstall_colormap_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# ## *
# ## @brief xcb_list_installed_colormaps_cookie_t
# ##
# type
# xcb_list_installed_colormaps_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_installed_colormaps.
# const
# XCB_LIST_INSTALLED_COLORMAPS* = 83
# ## *
# ## @brief xcb_list_installed_colormaps_request_t
# ##
# type
# xcb_list_installed_colormaps_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_list_installed_colormaps_reply_t
# ##
# type
# xcb_list_installed_colormaps_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# cmaps_len*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_alloc_color_cookie_t
# ##
# type
# xcb_alloc_color_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_alloc_color.
# const
# XCB_ALLOC_COLOR* = 84
# ## *
# ## @brief xcb_alloc_color_request_t
# ##
# type
# xcb_alloc_color_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# red*: uint16
# green*: uint16
# blue*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_alloc_color_reply_t
# ##
# type
# xcb_alloc_color_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# red*: uint16
# green*: uint16
# blue*: uint16
# pad1*: array[2, uint8]
# pixel*: uint32
# ## *
# ## @brief xcb_alloc_named_color_cookie_t
# ##
# type
# xcb_alloc_named_color_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_alloc_named_color.
# const
# XCB_ALLOC_NAMED_COLOR* = 85
# ## *
# ## @brief xcb_alloc_named_color_request_t
# ##
# type
# xcb_alloc_named_color_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# name_len*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_alloc_named_color_reply_t
# ##
# type
# xcb_alloc_named_color_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pixel*: uint32
# exact_red*: uint16
# exact_green*: uint16
# exact_blue*: uint16
# visual_red*: uint16
# visual_green*: uint16
# visual_blue*: uint16
# ## *
# ## @brief xcb_alloc_color_cells_cookie_t
# ##
# type
# xcb_alloc_color_cells_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_alloc_color_cells.
# const
# XCB_ALLOC_COLOR_CELLS* = 86
# ## *
# ## @brief xcb_alloc_color_cells_request_t
# ##
# type
# xcb_alloc_color_cells_request_t* {.bycopy.} = object
# major_opcode*: uint8
# contiguous*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# colors*: uint16
# planes*: uint16
# ## *
# ## @brief xcb_alloc_color_cells_reply_t
# ##
# type
# xcb_alloc_color_cells_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pixels_len*: uint16
# masks_len*: uint16
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_alloc_color_planes_cookie_t
# ##
# type
# xcb_alloc_color_planes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_alloc_color_planes.
# const
# XCB_ALLOC_COLOR_PLANES* = 87
# ## *
# ## @brief xcb_alloc_color_planes_request_t
# ##
# type
# xcb_alloc_color_planes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# contiguous*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# colors*: uint16
# reds*: uint16
# greens*: uint16
# blues*: uint16
# ## *
# ## @brief xcb_alloc_color_planes_reply_t
# ##
# type
# xcb_alloc_color_planes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pixels_len*: uint16
# pad1*: array[2, uint8]
# red_mask*: uint32
# green_mask*: uint32
# blue_mask*: uint32
# pad2*: array[8, uint8]
# ## * Opcode for xcb_free_colors.
# const
# XCB_FREE_COLORS* = 88
# ## *
# ## @brief xcb_free_colors_request_t
# ##
# type
# xcb_free_colors_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# plane_mask*: uint32
# xcb_color_flag_t* = enum
# XCB_COLOR_FLAG_RED = 1, XCB_COLOR_FLAG_GREEN = 2, XCB_COLOR_FLAG_BLUE = 4
# ## *
# ## @brief xcb_coloritem_t
# ##
# type
# xcb_coloritem_t* {.bycopy.} = object
# pixel*: uint32
# red*: uint16
# green*: uint16
# blue*: uint16
# flags*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_coloritem_iterator_t
# ##
# type
# xcb_coloritem_iterator_t* {.bycopy.} = object
# data*: ptr xcb_coloritem_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_store_colors.
# const
# XCB_STORE_COLORS* = 89
# ## *
# ## @brief xcb_store_colors_request_t
# ##
# type
# xcb_store_colors_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# ## * Opcode for xcb_store_named_color.
# const
# XCB_STORE_NAMED_COLOR* = 90
# ## *
# ## @brief xcb_store_named_color_request_t
# ##
# type
# xcb_store_named_color_request_t* {.bycopy.} = object
# major_opcode*: uint8
# flags*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# pixel*: uint32
# name_len*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_rgb_t
# ##
# type
# xcb_rgb_t* {.bycopy.} = object
# red*: uint16
# green*: uint16
# blue*: uint16
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_rgb_iterator_t
# ##
# type
# xcb_rgb_iterator_t* {.bycopy.} = object
# data*: ptr xcb_rgb_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_query_colors_cookie_t
# ##
# type
# xcb_query_colors_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_colors.
# const
# XCB_QUERY_COLORS* = 91
# ## *
# ## @brief xcb_query_colors_request_t
# ##
# type
# xcb_query_colors_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# ## *
# ## @brief xcb_query_colors_reply_t
# ##
# type
# xcb_query_colors_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# colors_len*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_lookup_color_cookie_t
# ##
# type
# xcb_lookup_color_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_lookup_color.
# const
# XCB_LOOKUP_COLOR* = 92
# ## *
# ## @brief xcb_lookup_color_request_t
# ##
# type
# xcb_lookup_color_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cmap*: xcb_colormap_t
# name_len*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_lookup_color_reply_t
# ##
# type
# xcb_lookup_color_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# exact_red*: uint16
# exact_green*: uint16
# exact_blue*: uint16
# visual_red*: uint16
# visual_green*: uint16
# visual_blue*: uint16
# xcb_pixmap_enum_t* = enum
# XCB_PIXMAP_NONE = 0
# ## * Opcode for xcb_create_cursor.
# const
# XCB_CREATE_CURSOR* = 93
# ## *
# ## @brief xcb_create_cursor_request_t
# ##
# type
# xcb_create_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cid*: xcb_cursor_t
# source*: xcb_pixmap_t
# mask*: xcb_pixmap_t
# fore_red*: uint16
# fore_green*: uint16
# fore_blue*: uint16
# back_red*: uint16
# back_green*: uint16
# back_blue*: uint16
# x*: uint16
# y*: uint16
# xcb_font_enum_t* = enum
# XCB_FONT_NONE = 0
# ## * Opcode for xcb_create_glyph_cursor.
# const
# XCB_CREATE_GLYPH_CURSOR* = 94
# ## *
# ## @brief xcb_create_glyph_cursor_request_t
# ##
# type
# xcb_create_glyph_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cid*: xcb_cursor_t
# source_font*: xcb_font_t
# mask_font*: xcb_font_t
# source_char*: uint16
# mask_char*: uint16
# fore_red*: uint16
# fore_green*: uint16
# fore_blue*: uint16
# back_red*: uint16
# back_green*: uint16
# back_blue*: uint16
# ## * Opcode for xcb_free_cursor.
# const
# XCB_FREE_CURSOR* = 95
# ## *
# ## @brief xcb_free_cursor_request_t
# ##
# type
# xcb_free_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cursor*: xcb_cursor_t
# ## * Opcode for xcb_recolor_cursor.
# const
# XCB_RECOLOR_CURSOR* = 96
# ## *
# ## @brief xcb_recolor_cursor_request_t
# ##
# type
# xcb_recolor_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# cursor*: xcb_cursor_t
# fore_red*: uint16
# fore_green*: uint16
# fore_blue*: uint16
# back_red*: uint16
# back_green*: uint16
# back_blue*: uint16
# xcb_query_shape_of_t* = enum
# XCB_QUERY_SHAPE_OF_LARGEST_CURSOR = 0, XCB_QUERY_SHAPE_OF_FASTEST_TILE = 1,
# XCB_QUERY_SHAPE_OF_FASTEST_STIPPLE = 2
# ## *
# ## @brief xcb_query_best_size_cookie_t
# ##
# type
# xcb_query_best_size_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_best_size.
# const
# XCB_QUERY_BEST_SIZE* = 97
# ## *
# ## @brief xcb_query_best_size_request_t
# ##
# type
# xcb_query_best_size_request_t* {.bycopy.} = object
# major_opcode*: uint8
# _class*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_query_best_size_reply_t
# ##
# type
# xcb_query_best_size_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_query_extension_cookie_t
# ##
# type
# xcb_query_extension_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_query_extension.
# const
# XCB_QUERY_EXTENSION* = 98
# ## *
# ## @brief xcb_query_extension_request_t
# ##
# type
# xcb_query_extension_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# name_len*: uint16
# pad1*: array[2, uint8]
# ## *
# ## @brief xcb_query_extension_reply_t
# ##
# type
# xcb_query_extension_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# present*: uint8
# major_opcode*: uint8
# first_event*: uint8
# first_error*: uint8
# ## *
# ## @brief xcb_list_extensions_cookie_t
# ##
# type
# xcb_list_extensions_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_extensions.
# const
# XCB_LIST_EXTENSIONS* = 99
# ## *
# ## @brief xcb_list_extensions_request_t
# ##
# type
# xcb_list_extensions_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_list_extensions_reply_t
# ##
# type
# xcb_list_extensions_reply_t* {.bycopy.} = object
# response_type*: uint8
# names_len*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## * Opcode for xcb_change_keyboard_mapping.
# const
# XCB_CHANGE_KEYBOARD_MAPPING* = 100
# ## *
# ## @brief xcb_change_keyboard_mapping_request_t
# ##
# type
# xcb_change_keyboard_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# keycode_count*: uint8
# length*: uint16
# first_keycode*: xcb_keycode_t
# keysyms_per_keycode*: uint8
# pad0*: array[2, uint8]
# ## *
# ## @brief xcb_get_keyboard_mapping_cookie_t
# ##
# type
# xcb_get_keyboard_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_keyboard_mapping.
# const
# XCB_GET_KEYBOARD_MAPPING* = 101
# ## *
# ## @brief xcb_get_keyboard_mapping_request_t
# ##
# type
# xcb_get_keyboard_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# first_keycode*: xcb_keycode_t
# count*: uint8
# ## *
# ## @brief xcb_get_keyboard_mapping_reply_t
# ##
# type
# xcb_get_keyboard_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# keysyms_per_keycode*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# xcb_kb_t* = enum
# XCB_KB_KEY_CLICK_PERCENT = 1, XCB_KB_BELL_PERCENT = 2, XCB_KB_BELL_PITCH = 4,
# XCB_KB_BELL_DURATION = 8, XCB_KB_LED = 16, XCB_KB_LED_MODE = 32, XCB_KB_KEY = 64,
# XCB_KB_AUTO_REPEAT_MODE = 128
# xcb_led_mode_t* = enum
# XCB_LED_MODE_OFF = 0, XCB_LED_MODE_ON = 1
# xcb_auto_repeat_mode_t* = enum
# XCB_AUTO_REPEAT_MODE_OFF = 0, XCB_AUTO_REPEAT_MODE_ON = 1,
# XCB_AUTO_REPEAT_MODE_DEFAULT = 2
# ## *
# ## @brief xcb_change_keyboard_control_value_list_t
# ##
# type
# xcb_change_keyboard_control_value_list_t* {.bycopy.} = object
# key_click_percent*: int32
# bell_percent*: int32
# bell_pitch*: int32
# bell_duration*: int32
# led*: uint32
# led_mode*: uint32
# key*: xcb_keycode32_t
# auto_repeat_mode*: uint32
# ## * Opcode for xcb_change_keyboard_control.
# const
# XCB_CHANGE_KEYBOARD_CONTROL* = 102
# ## *
# ## @brief xcb_change_keyboard_control_request_t
# ##
# type
# xcb_change_keyboard_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# value_mask*: uint32
# ## *
# ## @brief xcb_get_keyboard_control_cookie_t
# ##
# type
# xcb_get_keyboard_control_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_keyboard_control.
# const
# XCB_GET_KEYBOARD_CONTROL* = 103
# ## *
# ## @brief xcb_get_keyboard_control_request_t
# ##
# type
# xcb_get_keyboard_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_keyboard_control_reply_t
# ##
# type
# xcb_get_keyboard_control_reply_t* {.bycopy.} = object
# response_type*: uint8
# global_auto_repeat*: uint8
# sequence*: uint16
# length*: uint32
# led_mask*: uint32
# key_click_percent*: uint8
# bell_percent*: uint8
# bell_pitch*: uint16
# bell_duration*: uint16
# pad0*: array[2, uint8]
# auto_repeats*: array[32, uint8]
# ## * Opcode for xcb_bell.
# const
# XCB_BELL* = 104
# ## *
# ## @brief xcb_bell_request_t
# ##
# type
# xcb_bell_request_t* {.bycopy.} = object
# major_opcode*: uint8
# percent*: int8
# length*: uint16
# ## * Opcode for xcb_change_pointer_control.
# const
# XCB_CHANGE_POINTER_CONTROL* = 105
# ## *
# ## @brief xcb_change_pointer_control_request_t
# ##
# type
# xcb_change_pointer_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# acceleration_numerator*: int16
# acceleration_denominator*: int16
# threshold*: int16
# do_acceleration*: uint8
# do_threshold*: uint8
# ## *
# ## @brief xcb_get_pointer_control_cookie_t
# ##
# type
# xcb_get_pointer_control_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_pointer_control.
# const
# XCB_GET_POINTER_CONTROL* = 106
# ## *
# ## @brief xcb_get_pointer_control_request_t
# ##
# type
# xcb_get_pointer_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_pointer_control_reply_t
# ##
# type
# xcb_get_pointer_control_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# acceleration_numerator*: uint16
# acceleration_denominator*: uint16
# threshold*: uint16
# pad1*: array[18, uint8]
# xcb_blanking_t* = enum
# XCB_BLANKING_NOT_PREFERRED = 0, XCB_BLANKING_PREFERRED = 1,
# XCB_BLANKING_DEFAULT = 2
# xcb_exposures_t* = enum
# XCB_EXPOSURES_NOT_ALLOWED = 0, XCB_EXPOSURES_ALLOWED = 1,
# XCB_EXPOSURES_DEFAULT = 2
# ## * Opcode for xcb_set_screen_saver.
# const
# XCB_SET_SCREEN_SAVER* = 107
# ## *
# ## @brief xcb_set_screen_saver_request_t
# ##
# type
# xcb_set_screen_saver_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# timeout*: int16
# interval*: int16
# prefer_blanking*: uint8
# allow_exposures*: uint8
# ## *
# ## @brief xcb_get_screen_saver_cookie_t
# ##
# type
# xcb_get_screen_saver_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_screen_saver.
# const
# XCB_GET_SCREEN_SAVER* = 108
# ## *
# ## @brief xcb_get_screen_saver_request_t
# ##
# type
# xcb_get_screen_saver_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_screen_saver_reply_t
# ##
# type
# xcb_get_screen_saver_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# timeout*: uint16
# interval*: uint16
# prefer_blanking*: uint8
# allow_exposures*: uint8
# pad1*: array[18, uint8]
# xcb_host_mode_t* = enum
# XCB_HOST_MODE_INSERT = 0, XCB_HOST_MODE_DELETE = 1
# xcb_family_t* = enum
# XCB_FAMILY_INTERNET = 0, XCB_FAMILY_DECNET = 1, XCB_FAMILY_CHAOS = 2,
# XCB_FAMILY_SERVER_INTERPRETED = 5, XCB_FAMILY_INTERNET_6 = 6
# ## * Opcode for xcb_change_hosts.
# const
# XCB_CHANGE_HOSTS* = 109
# ## *
# ## @brief xcb_change_hosts_request_t
# ##
# type
# xcb_change_hosts_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# family*: uint8
# pad0*: uint8
# address_len*: uint16
# ## *
# ## @brief xcb_host_t
# ##
# type
# xcb_host_t* {.bycopy.} = object
# family*: uint8
# pad0*: uint8
# address_len*: uint16
# ## *
# ## @brief xcb_host_iterator_t
# ##
# type
# xcb_host_iterator_t* {.bycopy.} = object
# data*: ptr xcb_host_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_list_hosts_cookie_t
# ##
# type
# xcb_list_hosts_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_list_hosts.
# const
# XCB_LIST_HOSTS* = 110
# ## *
# ## @brief xcb_list_hosts_request_t
# ##
# type
# xcb_list_hosts_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_list_hosts_reply_t
# ##
# type
# xcb_list_hosts_reply_t* {.bycopy.} = object
# response_type*: uint8
# mode*: uint8
# sequence*: uint16
# length*: uint32
# hosts_len*: uint16
# pad0*: array[22, uint8]
# xcb_access_control_t* = enum
# XCB_ACCESS_CONTROL_DISABLE = 0, XCB_ACCESS_CONTROL_ENABLE = 1
# ## * Opcode for xcb_set_access_control.
# const
# XCB_SET_ACCESS_CONTROL* = 111
# ## *
# ## @brief xcb_set_access_control_request_t
# ##
# type
# xcb_set_access_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# xcb_close_down_t* = enum
# XCB_CLOSE_DOWN_DESTROY_ALL = 0, XCB_CLOSE_DOWN_RETAIN_PERMANENT = 1,
# XCB_CLOSE_DOWN_RETAIN_TEMPORARY = 2
# ## * Opcode for xcb_set_close_down_mode.
# const
# XCB_SET_CLOSE_DOWN_MODE* = 112
# ## *
# ## @brief xcb_set_close_down_mode_request_t
# ##
# type
# xcb_set_close_down_mode_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# xcb_kill_t* = enum
# XCB_KILL_ALL_TEMPORARY = 0
# ## * Opcode for xcb_kill_client.
# const
# XCB_KILL_CLIENT* = 113
# ## *
# ## @brief xcb_kill_client_request_t
# ##
# type
# xcb_kill_client_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# resource*: uint32
# ## * Opcode for xcb_rotate_properties.
# const
# XCB_ROTATE_PROPERTIES* = 114
# ## *
# ## @brief xcb_rotate_properties_request_t
# ##
# type
# xcb_rotate_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# window*: xcb_window_t
# atoms_len*: uint16
# delta*: int16
# xcb_screen_saver_t* = enum
# XCB_SCREEN_SAVER_RESET = 0, XCB_SCREEN_SAVER_ACTIVE = 1
# ## * Opcode for xcb_force_screen_saver.
# const
# XCB_FORCE_SCREEN_SAVER* = 115
# ## *
# ## @brief xcb_force_screen_saver_request_t
# ##
# type
# xcb_force_screen_saver_request_t* {.bycopy.} = object
# major_opcode*: uint8
# mode*: uint8
# length*: uint16
# xcb_mapping_status_t* = enum
# XCB_MAPPING_STATUS_SUCCESS = 0, XCB_MAPPING_STATUS_BUSY = 1,
# XCB_MAPPING_STATUS_FAILURE = 2
# ## *
# ## @brief xcb_set_pointer_mapping_cookie_t
# ##
# type
# xcb_set_pointer_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_set_pointer_mapping.
# const
# XCB_SET_POINTER_MAPPING* = 116
# ## *
# ## @brief xcb_set_pointer_mapping_request_t
# ##
# type
# xcb_set_pointer_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# map_len*: uint8
# length*: uint16
# ## *
# ## @brief xcb_set_pointer_mapping_reply_t
# ##
# type
# xcb_set_pointer_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# ## *
# ## @brief xcb_get_pointer_mapping_cookie_t
# ##
# type
# xcb_get_pointer_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_pointer_mapping.
# const
# XCB_GET_POINTER_MAPPING* = 117
# ## *
# ## @brief xcb_get_pointer_mapping_request_t
# ##
# type
# xcb_get_pointer_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_pointer_mapping_reply_t
# ##
# type
# xcb_get_pointer_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# map_len*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# xcb_map_index_t* = enum
# XCB_MAP_INDEX_SHIFT = 0, XCB_MAP_INDEX_LOCK = 1, XCB_MAP_INDEX_CONTROL = 2,
# XCB_MAP_INDEX_1 = 3, XCB_MAP_INDEX_2 = 4, XCB_MAP_INDEX_3 = 5, XCB_MAP_INDEX_4 = 6,
# XCB_MAP_INDEX_5 = 7
# ## *
# ## @brief xcb_set_modifier_mapping_cookie_t
# ##
# type
# xcb_set_modifier_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_set_modifier_mapping.
# const
# XCB_SET_MODIFIER_MAPPING* = 118
# ## *
# ## @brief xcb_set_modifier_mapping_request_t
# ##
# type
# xcb_set_modifier_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# keycodes_per_modifier*: uint8
# length*: uint16
# ## *
# ## @brief xcb_set_modifier_mapping_reply_t
# ##
# type
# xcb_set_modifier_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# status*: uint8
# sequence*: uint16
# length*: uint32
# ## *
# ## @brief xcb_get_modifier_mapping_cookie_t
# ##
# type
# xcb_get_modifier_mapping_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_get_modifier_mapping.
# const
# XCB_GET_MODIFIER_MAPPING* = 119
# ## *
# ## @brief xcb_get_modifier_mapping_request_t
# ##
# type
# xcb_get_modifier_mapping_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## @brief xcb_get_modifier_mapping_reply_t
# ##
# type
# xcb_get_modifier_mapping_reply_t* {.bycopy.} = object
# response_type*: uint8
# keycodes_per_modifier*: uint8
# sequence*: uint16
# length*: uint32
# pad0*: array[24, uint8]
# ## * Opcode for xcb_no_operation.
# const
# XCB_NO_OPERATION* = 127
# ## *
# ## @brief xcb_no_operation_request_t
# ##
# type
# xcb_no_operation_request_t* {.bycopy.} = object
# major_opcode*: uint8
# pad0*: uint8
# length*: uint16
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_char2b_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_char2b_t)
# ##
# proc xcb_char2b_next*(i: ptr xcb_char2b_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_char2b_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_char2b_end*(i: xcb_char2b_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_window_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_window_t)
# ##
# proc xcb_window_next*(i: ptr xcb_window_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_window_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_window_end*(i: xcb_window_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_pixmap_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_pixmap_t)
# ##
# proc xcb_pixmap_next*(i: ptr xcb_pixmap_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_pixmap_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_pixmap_end*(i: xcb_pixmap_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_cursor_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_cursor_t)
# ##
# proc xcb_cursor_next*(i: ptr xcb_cursor_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_cursor_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_cursor_end*(i: xcb_cursor_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_font_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_font_t)
# ##
# proc xcb_font_next*(i: ptr xcb_font_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_font_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_font_end*(i: xcb_font_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_gcontext_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_gcontext_t)
# ##
# proc xcb_gcontext_next*(i: ptr xcb_gcontext_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_gcontext_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_gcontext_end*(i: xcb_gcontext_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_colormap_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_colormap_t)
# ##
# proc xcb_colormap_next*(i: ptr xcb_colormap_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_colormap_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_colormap_end*(i: xcb_colormap_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_atom_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_atom_t)
# ##
# proc xcb_atom_next*(i: ptr xcb_atom_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_atom_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_atom_end*(i: xcb_atom_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_drawable_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_drawable_t)
# ##
# proc xcb_drawable_next*(i: ptr xcb_drawable_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_drawable_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_drawable_end*(i: xcb_drawable_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_fontable_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_fontable_t)
# ##
# proc xcb_fontable_next*(i: ptr xcb_fontable_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_fontable_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_fontable_end*(i: xcb_fontable_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_bool32_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_bool32_t)
# ##
# proc xcb_bool32_next*(i: ptr xcb_bool32_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_bool32_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_bool32_end*(i: xcb_bool32_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_visualid_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_visualid_t)
# ##
# proc xcb_visualid_next*(i: ptr xcb_visualid_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_visualid_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_visualid_end*(i: xcb_visualid_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_timestamp_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_timestamp_t)
# ##
# proc xcb_timestamp_next*(i: ptr xcb_timestamp_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_timestamp_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_timestamp_end*(i: xcb_timestamp_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_keysym_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_keysym_t)
# ##
# proc xcb_keysym_next*(i: ptr xcb_keysym_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_keysym_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_keysym_end*(i: xcb_keysym_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_keycode_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_keycode_t)
# ##
# proc xcb_keycode_next*(i: ptr xcb_keycode_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_keycode_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_keycode_end*(i: xcb_keycode_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_keycode32_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_keycode32_t)
# ##
# proc xcb_keycode32_next*(i: ptr xcb_keycode32_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_keycode32_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_keycode32_end*(i: xcb_keycode32_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_button_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_button_t)
# ##
# proc xcb_button_next*(i: ptr xcb_button_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_button_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_button_end*(i: xcb_button_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_point_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_point_t)
# ##
# proc xcb_point_next*(i: ptr xcb_point_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_point_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_point_end*(i: xcb_point_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_rectangle_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_rectangle_t)
# ##
# proc xcb_rectangle_next*(i: ptr xcb_rectangle_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_rectangle_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_rectangle_end*(i: xcb_rectangle_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_arc_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_arc_t)
# ##
# proc xcb_arc_next*(i: ptr xcb_arc_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_arc_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_arc_end*(i: xcb_arc_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_format_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_format_t)
# ##
# proc xcb_format_next*(i: ptr xcb_format_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_format_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_format_end*(i: xcb_format_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_visualtype_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_visualtype_t)
# ##
# proc xcb_visualtype_next*(i: ptr xcb_visualtype_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_visualtype_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_visualtype_end*(i: xcb_visualtype_iterator_t): xcb_generic_iterator_t
# proc xcb_depth_sizeof*(_buffer: pointer): cint
# proc xcb_depth_visuals*(R: ptr xcb_depth_t): ptr xcb_visualtype_t
# proc xcb_depth_visuals_length*(R: ptr xcb_depth_t): cint
# proc xcb_depth_visuals_iterator*(R: ptr xcb_depth_t): xcb_visualtype_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_depth_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_depth_t)
# ##
# proc xcb_depth_next*(i: ptr xcb_depth_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_depth_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_depth_end*(i: xcb_depth_iterator_t): xcb_generic_iterator_t
# proc xcb_screen_sizeof*(_buffer: pointer): cint
# proc xcb_screen_allowed_depths_length*(R: ptr xcb_screen_t): cint
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_screen_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_screen_t)
# ##
# proc xcb_screen_next*(i: ptr xcb_screen_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_screen_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_screen_end*(i: xcb_screen_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_request_sizeof*(_buffer: pointer): cint
# proc xcb_setup_request_authorization_protocol_name*(R: ptr xcb_setup_request_t): cstring
# proc xcb_setup_request_authorization_protocol_name_length*(
# R: ptr xcb_setup_request_t): cint
# proc xcb_setup_request_authorization_protocol_name_end*(
# R: ptr xcb_setup_request_t): xcb_generic_iterator_t
# proc xcb_setup_request_authorization_protocol_data*(R: ptr xcb_setup_request_t): cstring
# proc xcb_setup_request_authorization_protocol_data_length*(
# R: ptr xcb_setup_request_t): cint
# proc xcb_setup_request_authorization_protocol_data_end*(
# R: ptr xcb_setup_request_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_setup_request_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_setup_request_t)
# ##
# proc xcb_setup_request_next*(i: ptr xcb_setup_request_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_setup_request_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_setup_request_end*(i: xcb_setup_request_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_failed_sizeof*(_buffer: pointer): cint
# proc xcb_setup_failed_reason*(R: ptr xcb_setup_failed_t): cstring
# proc xcb_setup_failed_reason_length*(R: ptr xcb_setup_failed_t): cint
# proc xcb_setup_failed_reason_end*(R: ptr xcb_setup_failed_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_setup_failed_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_setup_failed_t)
# ##
# proc xcb_setup_failed_next*(i: ptr xcb_setup_failed_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_setup_failed_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_setup_failed_end*(i: xcb_setup_failed_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_authenticate_sizeof*(_buffer: pointer): cint
# proc xcb_setup_authenticate_reason*(R: ptr xcb_setup_authenticate_t): cstring
# proc xcb_setup_authenticate_reason_length*(R: ptr xcb_setup_authenticate_t): cint
# proc xcb_setup_authenticate_reason_end*(R: ptr xcb_setup_authenticate_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_setup_authenticate_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_setup_authenticate_t)
# ##
# proc xcb_setup_authenticate_next*(i: ptr xcb_setup_authenticate_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_setup_authenticate_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_setup_authenticate_end*(i: xcb_setup_authenticate_iterator_t): xcb_generic_iterator_t
# proc xcb_setup_sizeof*(_buffer: pointer): cint
# proc xcb_setup_vendor*(R: ptr xcb_setup_t): cstring
# proc xcb_setup_vendor_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_vendor_end*(R: ptr xcb_setup_t): xcb_generic_iterator_t
# proc xcb_setup_pixmap_formats*(R: ptr xcb_setup_t): ptr xcb_format_t
# proc xcb_setup_pixmap_formats_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_pixmap_formats_iterator*(R: ptr xcb_setup_t): xcb_format_iterator_t
# proc xcb_setup_roots_length*(R: ptr xcb_setup_t): cint
# proc xcb_setup_roots_iterator*(R: ptr xcb_setup_t): xcb_screen_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_setup_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_setup_t)
# ##
# proc xcb_setup_next*(i: ptr xcb_setup_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_setup_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_setup_end*(i: xcb_setup_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_client_message_data_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_client_message_data_t)
# ##
# proc xcb_client_message_data_next*(i: ptr xcb_client_message_data_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_client_message_data_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_client_message_data_end*(i: xcb_client_message_data_iterator_t): xcb_generic_iterator_t
# proc xcb_create_window_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_create_window_value_list_t): cint
# proc xcb_create_window_value_list_unpack*(_buffer: pointer; value_mask: uint32;
# _aux: ptr xcb_create_window_value_list_t): cint
# proc xcb_create_window_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_create_window_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Creates a window
# ##
# ## @param c The connection
# ## @param depth Specifies the new window's depth (TODO: what unit?).
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ## \a parent window.
# ## @param wid The ID with which you will refer to the new window, created by
# ## `xcb_generate_id`.
# ## @param parent The parent window of the new window.
# ## @param x The X coordinate of the new window.
# ## @param y The Y coordinate of the new window.
# ## @param width The width of the new window.
# ## @param height The height of the new window.
# ## @param border_width TODO:
# ## \n
# ## Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ## @param _class A bitmask of #xcb_window_class_t values.
# ## @param _class \n
# ## @param visual Specifies the id for the new window's visual.
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ## \a parent window.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @return A cookie
# ##
# ## Creates an unmapped window as child of the specified \a parent window. A
# ## CreateNotify event will be generated. The new window is placed on top in the
# ## stacking order with respect to siblings.
# ##
# ## The coordinate system has the X axis horizontal and the Y axis vertical with
# ## the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ## of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ## coordinate system. For a window, the origin is inside the border at the inside,
# ## upper-left corner.
# ##
# ## The created window is not yet displayed (mapped), call `xcb_map_window` to
# ## display it.
# ##
# ## The created window will initially use the same cursor as its parent.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_window_checked*(c: ptr xcb_connection_t; depth: uint8;
# wid: xcb_window_t; parent: xcb_window_t; x: int16;
# y: int16; width: uint16; height: uint16;
# border_width: uint16; _class: uint16;
# visual: xcb_visualid_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief Creates a window
# ##
# ## @param c The connection
# ## @param depth Specifies the new window's depth (TODO: what unit?).
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ## \a parent window.
# ## @param wid The ID with which you will refer to the new window, created by
# ## `xcb_generate_id`.
# ## @param parent The parent window of the new window.
# ## @param x The X coordinate of the new window.
# ## @param y The Y coordinate of the new window.
# ## @param width The width of the new window.
# ## @param height The height of the new window.
# ## @param border_width TODO:
# ## \n
# ## Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ## @param _class A bitmask of #xcb_window_class_t values.
# ## @param _class \n
# ## @param visual Specifies the id for the new window's visual.
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ## \a parent window.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @return A cookie
# ##
# ## Creates an unmapped window as child of the specified \a parent window. A
# ## CreateNotify event will be generated. The new window is placed on top in the
# ## stacking order with respect to siblings.
# ##
# ## The coordinate system has the X axis horizontal and the Y axis vertical with
# ## the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ## of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ## coordinate system. For a window, the origin is inside the border at the inside,
# ## upper-left corner.
# ##
# ## The created window is not yet displayed (mapped), call `xcb_map_window` to
# ## display it.
# ##
# ## The created window will initially use the same cursor as its parent.
# ##
# ##
# proc xcb_create_window*(c: ptr xcb_connection_t; depth: uint8; wid: xcb_window_t;
# parent: xcb_window_t; x: int16; y: int16; width: uint16;
# height: uint16; border_width: uint16; _class: uint16;
# visual: xcb_visualid_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief Creates a window
# ##
# ## @param c The connection
# ## @param depth Specifies the new window's depth (TODO: what unit?).
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ## \a parent window.
# ## @param wid The ID with which you will refer to the new window, created by
# ## `xcb_generate_id`.
# ## @param parent The parent window of the new window.
# ## @param x The X coordinate of the new window.
# ## @param y The Y coordinate of the new window.
# ## @param width The width of the new window.
# ## @param height The height of the new window.
# ## @param border_width TODO:
# ## \n
# ## Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ## @param _class A bitmask of #xcb_window_class_t values.
# ## @param _class \n
# ## @param visual Specifies the id for the new window's visual.
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ## \a parent window.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @return A cookie
# ##
# ## Creates an unmapped window as child of the specified \a parent window. A
# ## CreateNotify event will be generated. The new window is placed on top in the
# ## stacking order with respect to siblings.
# ##
# ## The coordinate system has the X axis horizontal and the Y axis vertical with
# ## the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ## of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ## coordinate system. For a window, the origin is inside the border at the inside,
# ## upper-left corner.
# ##
# ## The created window is not yet displayed (mapped), call `xcb_map_window` to
# ## display it.
# ##
# ## The created window will initially use the same cursor as its parent.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_window_aux_checked*(c: ptr xcb_connection_t; depth: uint8;
# wid: xcb_window_t; parent: xcb_window_t;
# x: int16; y: int16; width: uint16;
# height: uint16; border_width: uint16;
# _class: uint16; visual: xcb_visualid_t;
# value_mask: uint32; value_list: ptr xcb_create_window_value_list_t): xcb_void_cookie_t
# ## *
# ## @brief Creates a window
# ##
# ## @param c The connection
# ## @param depth Specifies the new window's depth (TODO: what unit?).
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the
# ## \a parent window.
# ## @param wid The ID with which you will refer to the new window, created by
# ## `xcb_generate_id`.
# ## @param parent The parent window of the new window.
# ## @param x The X coordinate of the new window.
# ## @param y The Y coordinate of the new window.
# ## @param width The width of the new window.
# ## @param height The height of the new window.
# ## @param border_width TODO:
# ## \n
# ## Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.
# ## @param _class A bitmask of #xcb_window_class_t values.
# ## @param _class \n
# ## @param visual Specifies the id for the new window's visual.
# ## \n
# ## The special value `XCB_COPY_FROM_PARENT` means the visual is taken from the
# ## \a parent window.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @return A cookie
# ##
# ## Creates an unmapped window as child of the specified \a parent window. A
# ## CreateNotify event will be generated. The new window is placed on top in the
# ## stacking order with respect to siblings.
# ##
# ## The coordinate system has the X axis horizontal and the Y axis vertical with
# ## the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms
# ## of pixels, and coincide with pixel centers. Each window and pixmap has its own
# ## coordinate system. For a window, the origin is inside the border at the inside,
# ## upper-left corner.
# ##
# ## The created window is not yet displayed (mapped), call `xcb_map_window` to
# ## display it.
# ##
# ## The created window will initially use the same cursor as its parent.
# ##
# ##
# proc xcb_create_window_aux*(c: ptr xcb_connection_t; depth: uint8;
# wid: xcb_window_t; parent: xcb_window_t; x: int16;
# y: int16; width: uint16; height: uint16;
# border_width: uint16; _class: uint16;
# visual: xcb_visualid_t; value_mask: uint32;
# value_list: ptr xcb_create_window_value_list_t): xcb_void_cookie_t
# proc xcb_create_window_value_list*(R: ptr xcb_create_window_request_t): pointer
# proc xcb_change_window_attributes_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_change_window_attributes_value_list_t): cint
# proc xcb_change_window_attributes_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_change_window_attributes_value_list_t): cint
# proc xcb_change_window_attributes_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_change_window_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief change window attributes
# ##
# ## @param c The connection
# ## @param window The window to change.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the attributes specified by \a value_mask for the specified \a window.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_window_attributes_aux_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; value_mask: uint32;
# value_list: ptr xcb_change_window_attributes_value_list_t): xcb_void_cookie_t
# ## *
# ## @brief change window attributes
# ##
# ## @param c The connection
# ## @param window The window to change.
# ## @param value_mask A bitmask of #xcb_cw_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the attributes specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the attributes specified by \a value_mask for the specified \a window.
# ##
# ##
# proc xcb_change_window_attributes_aux*(c: ptr xcb_connection_t;
# window: xcb_window_t; value_mask: uint32;
# value_list: ptr xcb_change_window_attributes_value_list_t): xcb_void_cookie_t
# proc xcb_change_window_attributes_value_list*(
# R: ptr xcb_change_window_attributes_request_t): pointer
# ## *
# ## @brief Gets window attributes
# ##
# ## @param c The connection
# ## @param window The window to get the attributes from.
# ## @return A cookie
# ##
# ## Gets the current attributes for the specified \a window.
# ##
# ##
# proc xcb_get_window_attributes*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_get_window_attributes_cookie_t
# ## *
# ## @brief Gets window attributes
# ##
# ## @param c The connection
# ## @param window The window to get the attributes from.
# ## @return A cookie
# ##
# ## Gets the current attributes for the specified \a window.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_window_attributes_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_get_window_attributes_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_window_attributes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_window_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_get_window_attributes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_window_attributes_reply_t
# ## *
# ## @brief Destroys a window
# ##
# ## @param c The connection
# ## @param window The window to destroy.
# ## @return A cookie
# ##
# ## Destroys the specified window and all of its subwindows. A DestroyNotify event
# ## is generated for each destroyed window (a DestroyNotify event is first generated
# ## for any given window's inferiors). If the window was mapped, it will be
# ## automatically unmapped before destroying.
# ##
# ## Calling DestroyWindow on the root window will do nothing.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_destroy_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Destroys a window
# ##
# ## @param c The connection
# ## @param window The window to destroy.
# ## @return A cookie
# ##
# ## Destroys the specified window and all of its subwindows. A DestroyNotify event
# ## is generated for each destroyed window (a DestroyNotify event is first generated
# ## for any given window's inferiors). If the window was mapped, it will be
# ## automatically unmapped before destroying.
# ##
# ## Calling DestroyWindow on the root window will do nothing.
# ##
# ##
# proc xcb_destroy_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_destroy_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_destroy_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Changes a client's save set
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_set_mode_t values.
# ## @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
# ## @param window The window to add or delete to/from your save set.
# ## @return A cookie
# ##
# ## TODO: explain what the save set is for.
# ##
# ## This function either adds or removes the specified window to the client's (your
# ## application's) save set.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_save_set_checked*(c: ptr xcb_connection_t; mode: uint8;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Changes a client's save set
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_set_mode_t values.
# ## @param mode Insert to add the specified window to the save set or Delete to delete it from the save set.
# ## @param window The window to add or delete to/from your save set.
# ## @return A cookie
# ##
# ## TODO: explain what the save set is for.
# ##
# ## This function either adds or removes the specified window to the client's (your
# ## application's) save set.
# ##
# ##
# proc xcb_change_save_set*(c: ptr xcb_connection_t; mode: uint8; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Reparents a window
# ##
# ## @param c The connection
# ## @param window The window to reparent.
# ## @param parent The new parent of the window.
# ## @param x The X position of the window within its new parent.
# ## @param y The Y position of the window within its new parent.
# ## @return A cookie
# ##
# ## Makes the specified window a child of the specified parent window. If the
# ## window is mapped, it will automatically be unmapped before reparenting and
# ## re-mapped after reparenting. The window is placed in the stacking order on top
# ## with respect to sibling windows.
# ##
# ## After reparenting, a ReparentNotify event is generated.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_reparent_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# parent: xcb_window_t; x: int16; y: int16): xcb_void_cookie_t
# ## *
# ## @brief Reparents a window
# ##
# ## @param c The connection
# ## @param window The window to reparent.
# ## @param parent The new parent of the window.
# ## @param x The X position of the window within its new parent.
# ## @param y The Y position of the window within its new parent.
# ## @return A cookie
# ##
# ## Makes the specified window a child of the specified parent window. If the
# ## window is mapped, it will automatically be unmapped before reparenting and
# ## re-mapped after reparenting. The window is placed in the stacking order on top
# ## with respect to sibling windows.
# ##
# ## After reparenting, a ReparentNotify event is generated.
# ##
# ##
# proc xcb_reparent_window*(c: ptr xcb_connection_t; window: xcb_window_t;
# parent: xcb_window_t; x: int16; y: int16): xcb_void_cookie_t
# ## *
# ## @brief Makes a window visible
# ##
# ## @param c The connection
# ## @param window The window to make visible.
# ## @return A cookie
# ##
# ## Maps the specified window. This means making the window visible (as long as its
# ## parent is visible).
# ##
# ## This MapWindow request will be translated to a MapRequest request if a window
# ## manager is running. The window manager then decides to either map the window or
# ## not. Set the override-redirect window attribute to true if you want to bypass
# ## this mechanism.
# ##
# ## If the window manager decides to map the window (or if no window manager is
# ## running), a MapNotify event is generated.
# ##
# ## If the window becomes viewable and no earlier contents for it are remembered,
# ## the X server tiles the window with its background. If the window's background
# ## is undefined, the existing screen contents are not altered, and the X server
# ## generates zero or more Expose events.
# ##
# ## If the window type is InputOutput, an Expose event will be generated when the
# ## window becomes visible. The normal response to an Expose event should be to
# ## repaint the window.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_map_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Makes a window visible
# ##
# ## @param c The connection
# ## @param window The window to make visible.
# ## @return A cookie
# ##
# ## Maps the specified window. This means making the window visible (as long as its
# ## parent is visible).
# ##
# ## This MapWindow request will be translated to a MapRequest request if a window
# ## manager is running. The window manager then decides to either map the window or
# ## not. Set the override-redirect window attribute to true if you want to bypass
# ## this mechanism.
# ##
# ## If the window manager decides to map the window (or if no window manager is
# ## running), a MapNotify event is generated.
# ##
# ## If the window becomes viewable and no earlier contents for it are remembered,
# ## the X server tiles the window with its background. If the window's background
# ## is undefined, the existing screen contents are not altered, and the X server
# ## generates zero or more Expose events.
# ##
# ## If the window type is InputOutput, an Expose event will be generated when the
# ## window becomes visible. The normal response to an Expose event should be to
# ## repaint the window.
# ##
# ##
# proc xcb_map_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_map_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_map_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Makes a window invisible
# ##
# ## @param c The connection
# ## @param window The window to make invisible.
# ## @return A cookie
# ##
# ## Unmaps the specified window. This means making the window invisible (and all
# ## its child windows).
# ##
# ## Unmapping a window leads to the `UnmapNotify` event being generated. Also,
# ## `Expose` events are generated for formerly obscured windows.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_unmap_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Makes a window invisible
# ##
# ## @param c The connection
# ## @param window The window to make invisible.
# ## @return A cookie
# ##
# ## Unmaps the specified window. This means making the window invisible (and all
# ## its child windows).
# ##
# ## Unmapping a window leads to the `UnmapNotify` event being generated. Also,
# ## `Expose` events are generated for formerly obscured windows.
# ##
# ##
# proc xcb_unmap_window*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_unmap_subwindows_checked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_unmap_subwindows*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_void_cookie_t
# proc xcb_configure_window_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint16; _aux: ptr xcb_configure_window_value_list_t): cint
# proc xcb_configure_window_value_list_unpack*(_buffer: pointer;
# value_mask: uint16; _aux: ptr xcb_configure_window_value_list_t): cint
# proc xcb_configure_window_value_list_sizeof*(_buffer: pointer; value_mask: uint16): cint
# proc xcb_configure_window_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Configures window attributes
# ##
# ## @param c The connection
# ## @param window The window to configure.
# ## @param value_mask Bitmask of attributes to change.
# ## @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ## correspond to the order of possible \a value_mask bits. See the example.
# ## @return A cookie
# ##
# ## Configures a window's size, position, border width and stacking order.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_configure_window_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# value_mask: uint16; value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief Configures window attributes
# ##
# ## @param c The connection
# ## @param window The window to configure.
# ## @param value_mask Bitmask of attributes to change.
# ## @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ## correspond to the order of possible \a value_mask bits. See the example.
# ## @return A cookie
# ##
# ## Configures a window's size, position, border width and stacking order.
# ##
# ##
# proc xcb_configure_window_aux_checked*(c: ptr xcb_connection_t;
# window: xcb_window_t; value_mask: uint16;
# value_list: ptr xcb_configure_window_value_list_t): xcb_void_cookie_t
# ## *
# ## @brief Configures window attributes
# ##
# ## @param c The connection
# ## @param window The window to configure.
# ## @param value_mask Bitmask of attributes to change.
# ## @param value_list New values, corresponding to the attributes in value_mask. The order has to
# ## correspond to the order of possible \a value_mask bits. See the example.
# ## @return A cookie
# ##
# ## Configures a window's size, position, border width and stacking order.
# ##
# ##
# proc xcb_configure_window_aux*(c: ptr xcb_connection_t; window: xcb_window_t;
# value_mask: uint16;
# value_list: ptr xcb_configure_window_value_list_t): xcb_void_cookie_t
# proc xcb_configure_window_value_list*(R: ptr xcb_configure_window_request_t): pointer
# ## *
# ## @brief Change window stacking order
# ##
# ## @param c The connection
# ## @param direction A bitmask of #xcb_circulate_t values.
# ## @param direction \n
# ## @param window The window to raise/lower (depending on \a direction).
# ## @return A cookie
# ##
# ## If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
# ## any) will be raised to the top of the stack.
# ##
# ## If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
# ## be lowered to the bottom of the stack.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_circulate_window_checked*(c: ptr xcb_connection_t; direction: uint8;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Change window stacking order
# ##
# ## @param c The connection
# ## @param direction A bitmask of #xcb_circulate_t values.
# ## @param direction \n
# ## @param window The window to raise/lower (depending on \a direction).
# ## @return A cookie
# ##
# ## If \a direction is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if
# ## any) will be raised to the top of the stack.
# ##
# ## If \a direction is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will
# ## be lowered to the bottom of the stack.
# ##
# ##
# proc xcb_circulate_window*(c: ptr xcb_connection_t; direction: uint8;
# window: xcb_window_t): xcb_void_cookie_t
# ## *
# ## @brief Get current window geometry
# ##
# ## @param c The connection
# ## @param drawable The drawable (`Window` or `Pixmap`) of which the geometry will be received.
# ## @return A cookie
# ##
# ## Gets the current geometry of the specified drawable (either `Window` or `Pixmap`).
# ##
# ##
# proc xcb_query_tree_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief query the window tree
# ##
# ## @param c The connection
# ## @param window The \a window to query.
# ## @return A cookie
# ##
# ## Gets the root window ID, parent window ID and list of children windows for the
# ## specified \a window. The children are listed in bottom-to-top stacking order.
# ##
# ##
# proc xcb_query_tree*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_query_tree_cookie_t
# ## *
# ## @brief query the window tree
# ##
# ## @param c The connection
# ## @param window The \a window to query.
# ## @return A cookie
# ##
# ## Gets the root window ID, parent window ID and list of children windows for the
# ## specified \a window. The children are listed in bottom-to-top stacking order.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_tree_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_query_tree_cookie_t
# proc xcb_query_tree_children*(R: ptr xcb_query_tree_reply_t): ptr xcb_window_t
# proc xcb_query_tree_children_length*(R: ptr xcb_query_tree_reply_t): cint
# proc xcb_query_tree_children_end*(R: ptr xcb_query_tree_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_tree_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_tree_reply*(c: ptr xcb_connection_t; cookie: xcb_query_tree_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_tree_reply_t
# proc xcb_intern_atom_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Get atom identifier by name
# ##
# ## @param c The connection
# ## @param only_if_exists Return a valid atom id only if the atom already exists.
# ## @param name_len The length of the following \a name.
# ## @param name The name of the atom.
# ## @return A cookie
# ##
# ## Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
# ## name. Atoms are used in protocols like EWMH, for example to store window titles
# ## (`_NET_WM_NAME` atom) as property of a window.
# ##
# ## If \a only_if_exists is 0, the atom will be created if it does not already exist.
# ## If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
# ## not yet exist.
# ##
# ##
# proc xcb_intern_atom*(c: ptr xcb_connection_t; only_if_exists: uint8;
# name_len: uint16; name: cstring): xcb_intern_atom_cookie_t
# ## *
# ## @brief Get atom identifier by name
# ##
# ## @param c The connection
# ## @param only_if_exists Return a valid atom id only if the atom already exists.
# ## @param name_len The length of the following \a name.
# ## @param name The name of the atom.
# ## @return A cookie
# ##
# ## Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified
# ## name. Atoms are used in protocols like EWMH, for example to store window titles
# ## (`_NET_WM_NAME` atom) as property of a window.
# ##
# ## If \a only_if_exists is 0, the atom will be created if it does not already exist.
# ## If \a only_if_exists is 1, `XCB_ATOM_NONE` will be returned if the atom does
# ## not yet exist.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_intern_atom_unchecked*(c: ptr xcb_connection_t; only_if_exists: uint8;
# name_len: uint16; name: cstring): xcb_intern_atom_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_intern_atom_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_intern_atom_reply*(c: ptr xcb_connection_t; cookie: xcb_intern_atom_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_intern_atom_reply_t
# proc xcb_get_atom_name_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_atom_name_unchecked*(c: ptr xcb_connection_t; atom: xcb_atom_t): xcb_get_atom_name_cookie_t
# proc xcb_get_atom_name_name_length*(R: ptr xcb_get_atom_name_reply_t): cint
# proc xcb_get_atom_name_name_end*(R: ptr xcb_get_atom_name_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_atom_name_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_change_property_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Changes a window property
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_prop_mode_t values.
# ## @param mode \n
# ## @param window The window whose property you want to change.
# ## @param property The property you want to change (an atom).
# ## @param type The type of the property you want to change (an atom).
# ## @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
# ## 32-bit quantities. Possible values are 8, 16 and 32. This information allows
# ## the X server to correctly perform byte-swap operations as necessary.
# ## @param data_len Specifies the number of elements (see \a format).
# ## @param data The property data.
# ## @return A cookie
# ##
# ## Sets or updates a property on the specified \a window. Properties are for
# ## example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ## Protocols such as EWMH also use properties - for example EWMH defines the
# ## window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_property_checked*(c: ptr xcb_connection_t; mode: uint8;
# window: xcb_window_t; property: xcb_atom_t;
# `type`: xcb_atom_t; format: uint8;
# data_len: uint32; data: pointer): xcb_void_cookie_t
# ## *
# ## @brief Changes a window property
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_prop_mode_t values.
# ## @param mode \n
# ## @param window The window whose property you want to change.
# ## @param property The property you want to change (an atom).
# ## @param type The type of the property you want to change (an atom).
# ## @param format Specifies whether the data should be viewed as a list of 8-bit, 16-bit or
# ## 32-bit quantities. Possible values are 8, 16 and 32. This information allows
# ## the X server to correctly perform byte-swap operations as necessary.
# ## @param data_len Specifies the number of elements (see \a format).
# ## @param data The property data.
# ## @return A cookie
# ##
# ## Sets or updates a property on the specified \a window. Properties are for
# ## example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ## Protocols such as EWMH also use properties - for example EWMH defines the
# ## window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ##
# proc xcb_change_property*(c: ptr xcb_connection_t; mode: uint8;
# window: xcb_window_t; property: xcb_atom_t;
# `type`: xcb_atom_t; format: uint8; data_len: uint32;
# data: pointer): xcb_void_cookie_t
# proc xcb_change_property_data*(R: ptr xcb_change_property_request_t): pointer
# proc xcb_change_property_data_length*(R: ptr xcb_change_property_request_t): cint
# proc xcb_change_property_data_end*(R: ptr xcb_change_property_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_delete_property_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# property: xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_delete_property*(c: ptr xcb_connection_t; window: xcb_window_t;
# property: xcb_atom_t): xcb_void_cookie_t
# proc xcb_get_property_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Gets a window property
# ##
# ## @param c The connection
# ## @param _delete Whether the property should actually be deleted. For deleting a property, the
# ## specified \a type has to match the actual property type.
# ## @param window The window whose property you want to get.
# ## @param property The property you want to get (an atom).
# ## @param type The type of the property you want to get (an atom).
# ## @param long_offset Specifies the offset (in 32-bit multiples) in the specified property where the
# ## data is to be retrieved.
# ## @param long_length Specifies how many 32-bit multiples of data should be retrieved (e.g. if you
# ## set \a long_length to 4, you will receive 16 bytes of data).
# ## @return A cookie
# ##
# ## Gets the specified \a property from the specified \a window. Properties are for
# ## example the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`).
# ## Protocols such as EWMH also use properties - for example EWMH defines the
# ## window title, encoded as UTF-8 string, in the `_NET_WM_NAME` property.
# ##
# ## TODO: talk about \a type
# ##
# ## TODO: talk about `delete`
# ##
# ## TODO: talk about the offset/length thing. what's a valid use case?
# ##
# ##
# proc xcb_get_property_value_end*(R: ptr xcb_get_property_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_property_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_properties_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_list_properties_cookie_t
# proc xcb_list_properties_atoms_end*(R: ptr xcb_list_properties_reply_t): xcb_generic_iterator_t
# proc xcb_set_selection_owner_checked*(c: ptr xcb_connection_t; owner: xcb_window_t;
# selection: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Sets the owner of a selection
# ##
# ## @param c The connection
# ## @param owner The new owner of the selection.
# ## \n
# ## The special value `XCB_NONE` means that the selection will have no owner.
# ## @param selection The selection.
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The selection will not be changed if \a time is earlier than the current
# ## last-change time of the \a selection or is later than the current X server time.
# ## Otherwise, the last-change time is set to the specified time.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Makes `window` the owner of the selection \a selection and updates the
# ## last-change time of the specified selection.
# ##
# ## TODO: briefly explain what a selection is.
# ##
# ##
# proc xcb_set_selection_owner*(c: ptr xcb_connection_t; owner: xcb_window_t;
# selection: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Gets the owner of a selection
# ##
# ## @param c The connection
# ## @param selection The selection.
# ## @return A cookie
# ##
# ## Gets the owner of the specified selection.
# ##
# ## TODO: briefly explain what a selection is.
# ##
# ##
# proc xcb_get_selection_owner*(c: ptr xcb_connection_t; selection: xcb_atom_t): xcb_get_selection_owner_cookie_t
# ## *
# ## @brief Gets the owner of a selection
# ##
# ## @param c The connection
# ## @param selection The selection.
# ## @return A cookie
# ##
# ## Gets the owner of the specified selection.
# ##
# ## TODO: briefly explain what a selection is.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_selection_owner_unchecked*(c: ptr xcb_connection_t;
# selection: xcb_atom_t): xcb_get_selection_owner_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_selection_owner_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_selection_owner_reply*(c: ptr xcb_connection_t; cookie: xcb_get_selection_owner_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_selection_owner_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_convert_selection_checked*(c: ptr xcb_connection_t;
# requestor: xcb_window_t; selection: xcb_atom_t;
# target: xcb_atom_t; property: xcb_atom_t;
# time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_convert_selection*(c: ptr xcb_connection_t; requestor: xcb_window_t;
# selection: xcb_atom_t; target: xcb_atom_t;
# property: xcb_atom_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief send an event
# ##
# ## @param c The connection
# ## @param propagate If \a propagate is true and no clients have selected any event on \a destination,
# ## the destination is replaced with the closest ancestor of \a destination for
# ## which some client has selected a type in \a event_mask and for which no
# ## intervening window has that type in its do-not-propagate-mask. If no such
# ## window exists or if the window is an ancestor of the focus window and
# ## `InputFocus` was originally specified as the destination, the event is not sent
# ## to any clients. Otherwise, the event is reported to every client selecting on
# ## the final destination any of the types specified in \a event_mask.
# ## @param destination The window to send this event to. Every client which selects any event within
# ## \a event_mask on \a destination will get the event.
# ## \n
# ## The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
# ## that contains the mouse pointer.
# ## \n
# ## The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
# ## has the keyboard focus.
# ## @param event_mask Event_mask for determining which clients should receive the specified event.
# ## See \a destination and \a propagate.
# ## @param event The event to send to the specified \a destination.
# ## @return A cookie
# ##
# ## Identifies the \a destination window, determines which clients should receive
# ## the specified event and ignores any active grabs.
# ##
# ## The \a event must be one of the core events or an event defined by an extension,
# ## so that the X server can correctly byte-swap the contents as necessary. The
# ## contents of \a event are otherwise unaltered and unchecked except for the
# ## `send_event` field which is forced to 'true'.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_send_event_checked*(c: ptr xcb_connection_t; propagate: uint8;
# destination: xcb_window_t; event_mask: uint32;
# event: cstring): xcb_void_cookie_t
# ## *
# ## @brief send an event
# ##
# ## @param c The connection
# ## @param propagate If \a propagate is true and no clients have selected any event on \a destination,
# ## the destination is replaced with the closest ancestor of \a destination for
# ## which some client has selected a type in \a event_mask and for which no
# ## intervening window has that type in its do-not-propagate-mask. If no such
# ## window exists or if the window is an ancestor of the focus window and
# ## `InputFocus` was originally specified as the destination, the event is not sent
# ## to any clients. Otherwise, the event is reported to every client selecting on
# ## the final destination any of the types specified in \a event_mask.
# ## @param destination The window to send this event to. Every client which selects any event within
# ## \a event_mask on \a destination will get the event.
# ## \n
# ## The special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window
# ## that contains the mouse pointer.
# ## \n
# ## The special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which
# ## has the keyboard focus.
# ## @param event_mask Event_mask for determining which clients should receive the specified event.
# ## See \a destination and \a propagate.
# ## @param event The event to send to the specified \a destination.
# ## @return A cookie
# ##
# ## Identifies the \a destination window, determines which clients should receive
# ## the specified event and ignores any active grabs.
# ##
# ## The \a event must be one of the core events or an event defined by an extension,
# ## so that the X server can correctly byte-swap the contents as necessary. The
# ## contents of \a event are otherwise unaltered and unchecked except for the
# ## `send_event` field which is forced to 'true'.
# ##
# ##
# proc xcb_send_event*(c: ptr xcb_connection_t; propagate: uint8;
# destination: xcb_window_t; event_mask: uint32; event: cstring): xcb_void_cookie_t
# ## *
# ## @brief Grab the pointer
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param event_mask Specifies which pointer events are reported to the client.
# ## \n
# ## TODO: which values?
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ## move the pointer out of that window).
# ## \n
# ## The special value `XCB_NONE` means don't confine the pointer.
# ## @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ## cursor.
# ## @param time The time argument allows you to avoid certain circumstances that come up if
# ## applications take a long time to respond or if there are long network delays.
# ## Consider a situation where you have two applications, both of which normally
# ## grab the pointer when clicked on. If both applications specify the timestamp
# ## from the event, the second application may wake up faster and successfully grab
# ## the pointer before the first application. The first application then will get
# ## an indication that the other application grabbed the pointer before its request
# ## was processed.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
# ##
# ##
# ## *
# ## @brief Grab the pointer
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param event_mask Specifies which pointer events are reported to the client.
# ## \n
# ## TODO: which values?
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ## move the pointer out of that window).
# ## \n
# ## The special value `XCB_NONE` means don't confine the pointer.
# ## @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ## cursor.
# ## @param time The time argument allows you to avoid certain circumstances that come up if
# ## applications take a long time to respond or if there are long network delays.
# ## Consider a situation where you have two applications, both of which normally
# ## grab the pointer when clicked on. If both applications specify the timestamp
# ## from the event, the second application may wake up faster and successfully grab
# ## the pointer before the first application. The first application then will get
# ## an indication that the other application grabbed the pointer before its request
# ## was processed.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_grab_pointer_unchecked*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; event_mask: uint16;
# pointer_mode: uint8; keyboard_mode: uint8;
# confine_to: xcb_window_t; cursor: xcb_cursor_t;
# time: xcb_timestamp_t): xcb_grab_pointer_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_grab_pointer_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_grab_pointer_reply*(c: ptr xcb_connection_t; cookie: xcb_grab_pointer_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_grab_pointer_reply_t
# ## *
# ## @brief release the pointer
# ##
# ## @param c The connection
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The pointer will not be released if \a time is earlier than the
# ## last-pointer-grab time or later than the current X server time.
# ## @return A cookie
# ##
# ## Releases the pointer and any queued events if you actively grabbed the pointer
# ## before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
# ## press.
# ##
# ## EnterNotify and LeaveNotify events are generated.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_ungrab_pointer_checked*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief release the pointer
# ##
# ## @param c The connection
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The pointer will not be released if \a time is earlier than the
# ## last-pointer-grab time or later than the current X server time.
# ## @return A cookie
# ##
# ## Releases the pointer and any queued events if you actively grabbed the pointer
# ## before using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button
# ## press.
# ##
# ## EnterNotify and LeaveNotify events are generated.
# ##
# ##
# proc xcb_ungrab_pointer*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Grab pointer button(s)
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param event_mask Specifies which pointer events are reported to the client.
# ## \n
# ## TODO: which values?
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ## move the pointer out of that window).
# ## \n
# ## The special value `XCB_NONE` means don't confine the pointer.
# ## @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ## cursor.
# ## @param button A bitmask of #xcb_button_index_t values.
# ## @param button \n
# ## @param modifiers The modifiers to grab.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ## possible modifier combinations.
# ## @return A cookie
# ##
# ## This request establishes a passive grab. The pointer is actively grabbed as
# ## described in GrabPointer, the last-pointer-grab time is set to the time at
# ## which the button was pressed (as transmitted in the ButtonPress event), and the
# ## ButtonPress event is reported if all of the following conditions are true:
# ##
# ## The pointer is not grabbed and the specified button is logically pressed when
# ## the specified modifier keys are logically down, and no other buttons or
# ## modifier keys are logically down.
# ##
# ## The grab-window contains the pointer.
# ##
# ## The confine-to window (if any) is viewable.
# ##
# ## A passive grab on the same button/key combination does not exist on any
# ## ancestor of grab-window.
# ##
# ## The interpretation of the remaining arguments is the same as for GrabPointer.
# ## The active grab is terminated automatically when the logical state of the
# ## pointer has all buttons released, independent of the logical state of modifier
# ## keys. Note that the logical state of a device (as seen by means of the
# ## protocol) may lag the physical state if device event processing is frozen. This
# ## request overrides all previous passive grabs by the same client on the same
# ## button/key combinations on the same window. A modifier of AnyModifier is
# ## equivalent to issuing the request for all possible modifier combinations
# ## (including the combination of no modifiers). It is not required that all
# ## specified modifiers have currently assigned keycodes. A button of AnyButton is
# ## equivalent to issuing the request for all possible buttons. Otherwise, it is
# ## not required that the button specified currently be assigned to a physical
# ## button.
# ##
# ## An Access error is generated if some other client has already issued a
# ## GrabButton request with the same button/key combination on the same window.
# ## When using AnyModifier or AnyButton, the request fails completely (no grabs are
# ## established), and an Access error is generated if there is a conflicting grab
# ## for any combination. The request has no effect on an active grab.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_grab_button_checked*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; event_mask: uint16;
# pointer_mode: uint8; keyboard_mode: uint8;
# confine_to: xcb_window_t; cursor: xcb_cursor_t;
# button: uint8; modifiers: uint16): xcb_void_cookie_t
# ## *
# ## @brief Grab pointer button(s)
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param event_mask Specifies which pointer events are reported to the client.
# ## \n
# ## TODO: which values?
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @param confine_to Specifies the window to confine the pointer in (the user will not be able to
# ## move the pointer out of that window).
# ## \n
# ## The special value `XCB_NONE` means don't confine the pointer.
# ## @param cursor Specifies the cursor that should be displayed or `XCB_NONE` to not change the
# ## cursor.
# ## @param button A bitmask of #xcb_button_index_t values.
# ## @param button \n
# ## @param modifiers The modifiers to grab.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ## possible modifier combinations.
# ## @return A cookie
# ##
# ## This request establishes a passive grab. The pointer is actively grabbed as
# ## described in GrabPointer, the last-pointer-grab time is set to the time at
# ## which the button was pressed (as transmitted in the ButtonPress event), and the
# ## ButtonPress event is reported if all of the following conditions are true:
# ##
# ## The pointer is not grabbed and the specified button is logically pressed when
# ## the specified modifier keys are logically down, and no other buttons or
# ## modifier keys are logically down.
# ##
# ## The grab-window contains the pointer.
# ##
# ## The confine-to window (if any) is viewable.
# ##
# ## A passive grab on the same button/key combination does not exist on any
# ## ancestor of grab-window.
# ##
# ## The interpretation of the remaining arguments is the same as for GrabPointer.
# ## The active grab is terminated automatically when the logical state of the
# ## pointer has all buttons released, independent of the logical state of modifier
# ## keys. Note that the logical state of a device (as seen by means of the
# ## protocol) may lag the physical state if device event processing is frozen. This
# ## request overrides all previous passive grabs by the same client on the same
# ## button/key combinations on the same window. A modifier of AnyModifier is
# ## equivalent to issuing the request for all possible modifier combinations
# ## (including the combination of no modifiers). It is not required that all
# ## specified modifiers have currently assigned keycodes. A button of AnyButton is
# ## equivalent to issuing the request for all possible buttons. Otherwise, it is
# ## not required that the button specified currently be assigned to a physical
# ## button.
# ##
# ## An Access error is generated if some other client has already issued a
# ## GrabButton request with the same button/key combination on the same window.
# ## When using AnyModifier or AnyButton, the request fails completely (no grabs are
# ## established), and an Access error is generated if there is a conflicting grab
# ## for any combination. The request has no effect on an active grab.
# ##
# ##
# proc xcb_grab_button*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; event_mask: uint16;
# pointer_mode: uint8; keyboard_mode: uint8;
# confine_to: xcb_window_t; cursor: xcb_cursor_t;
# button: uint8; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_ungrab_button_checked*(c: ptr xcb_connection_t; button: uint8;
# grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_ungrab_button*(c: ptr xcb_connection_t; button: uint8;
# grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_active_pointer_grab_checked*(c: ptr xcb_connection_t;
# cursor: xcb_cursor_t; time: xcb_timestamp_t; event_mask: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_active_pointer_grab*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
# time: xcb_timestamp_t; event_mask: uint16): xcb_void_cookie_t
# ## *
# ## @brief Grab the keyboard
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @return A cookie
# ##
# ## Actively grabs control of the keyboard and generates FocusIn and FocusOut
# ## events. Further key events are reported only to the grabbing client.
# ##
# ## Any active keyboard grab by this client is overridden. If the keyboard is
# ## actively grabbed by some other client, `AlreadyGrabbed` is returned. If
# ## \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
# ## is frozen by an active grab of another client, `GrabFrozen` is returned. If the
# ## specified \a time is earlier than the last-keyboard-grab time or later than the
# ## current X server time, `GrabInvalidTime` is returned. Otherwise, the
# ## last-keyboard-grab time is set to the specified time.
# ##
# ##
# proc xcb_grab_keyboard*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; time: xcb_timestamp_t;
# pointer_mode: uint8; keyboard_mode: uint8): xcb_grab_keyboard_cookie_t
# ## *
# ## @brief Grab the keyboard
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @return A cookie
# ##
# ## Actively grabs control of the keyboard and generates FocusIn and FocusOut
# ## events. Further key events are reported only to the grabbing client.
# ##
# ## Any active keyboard grab by this client is overridden. If the keyboard is
# ## actively grabbed by some other client, `AlreadyGrabbed` is returned. If
# ## \a grab_window is not viewable, `GrabNotViewable` is returned. If the keyboard
# ## is frozen by an active grab of another client, `GrabFrozen` is returned. If the
# ## specified \a time is earlier than the last-keyboard-grab time or later than the
# ## current X server time, `GrabInvalidTime` is returned. Otherwise, the
# ## last-keyboard-grab time is set to the specified time.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_grab_keyboard_unchecked*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; time: xcb_timestamp_t;
# pointer_mode: uint8; keyboard_mode: uint8): xcb_grab_keyboard_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_grab_keyboard_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_grab_keyboard_reply*(c: ptr xcb_connection_t; cookie: xcb_grab_keyboard_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_grab_keyboard_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_ungrab_keyboard_checked*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_ungrab_keyboard*(c: ptr xcb_connection_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Grab keyboard key(s)
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param modifiers The modifiers to grab.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ## possible modifier combinations.
# ## @param key The keycode of the key to grab.
# ## \n
# ## The special value `XCB_GRAB_ANY` means grab any key.
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @return A cookie
# ##
# ## Establishes a passive grab on the keyboard. In the future, the keyboard is
# ## actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
# ## the time at which the key was pressed (as transmitted in the KeyPress event),
# ## and the KeyPress event is reported if all of the following conditions are true:
# ##
# ## The keyboard is not grabbed and the specified key (which can itself be a
# ## modifier key) is logically pressed when the specified modifier keys are
# ## logically down, and no other modifier keys are logically down.
# ##
# ## Either the grab_window is an ancestor of (or is) the focus window, or the
# ## grab_window is a descendant of the focus window and contains the pointer.
# ##
# ## A passive grab on the same key combination does not exist on any ancestor of
# ## grab_window.
# ##
# ## The interpretation of the remaining arguments is as for XGrabKeyboard. The active grab is terminated
# ## automatically when the logical state of the keyboard has the specified key released (independent of the
# ## logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
# ##
# ## Note that the logical state of a device (as seen by client applications) may lag the physical state if
# ## device event processing is frozen.
# ##
# ## A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified
# ## have currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for
# ## all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode
# ## and max_keycode in the connection setup, or a BadValue error results.
# ##
# ## If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
# ## error results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
# ## results (no grabs are established) if there is a conflicting grab for any combination.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_grab_key_checked*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; modifiers: uint16;
# key: xcb_keycode_t; pointer_mode: uint8;
# keyboard_mode: uint8): xcb_void_cookie_t
# ## *
# ## @brief Grab keyboard key(s)
# ##
# ## @param c The connection
# ## @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
# ## reported to the \a grab_window.
# ## @param grab_window Specifies the window on which the pointer should be grabbed.
# ## @param modifiers The modifiers to grab.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
# ## possible modifier combinations.
# ## @param key The keycode of the key to grab.
# ## \n
# ## The special value `XCB_GRAB_ANY` means grab any key.
# ## @param pointer_mode A bitmask of #xcb_grab_mode_t values.
# ## @param pointer_mode \n
# ## @param keyboard_mode A bitmask of #xcb_grab_mode_t values.
# ## @param keyboard_mode \n
# ## @return A cookie
# ##
# ## Establishes a passive grab on the keyboard. In the future, the keyboard is
# ## actively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to
# ## the time at which the key was pressed (as transmitted in the KeyPress event),
# ## and the KeyPress event is reported if all of the following conditions are true:
# ##
# ## The keyboard is not grabbed and the specified key (which can itself be a
# ## modifier key) is logically pressed when the specified modifier keys are
# ## logically down, and no other modifier keys are logically down.
# ##
# ## Either the grab_window is an ancestor of (or is) the focus window, or the
# ## grab_window is a descendant of the focus window and contains the pointer.
# ##
# ## A passive grab on the same key combination does not exist on any ancestor of
# ## grab_window.
# ##
# ## The interpretation of the remaining arguments is as for XGrabKeyboard. The active grab is terminated
# ## automatically when the logical state of the keyboard has the specified key released (independent of the
# ## logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
# ##
# ## Note that the logical state of a device (as seen by client applications) may lag the physical state if
# ## device event processing is frozen.
# ##
# ## A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified
# ## have currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for
# ## all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode
# ## and max_keycode in the connection setup, or a BadValue error results.
# ##
# ## If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess
# ## error results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error
# ## results (no grabs are established) if there is a conflicting grab for any combination.
# ##
# ##
# proc xcb_grab_key*(c: ptr xcb_connection_t; owner_events: uint8;
# grab_window: xcb_window_t; modifiers: uint16;
# key: xcb_keycode_t; pointer_mode: uint8; keyboard_mode: uint8): xcb_void_cookie_t
# ## *
# ## @brief release a key combination
# ##
# ## @param c The connection
# ## @param key The keycode of the specified key combination.
# ## \n
# ## Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
# ## @param grab_window The window on which the grabbed key combination will be released.
# ## @param modifiers The modifiers of the specified key combination.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
# ## with every possible modifier combination.
# ## @return A cookie
# ##
# ## Releases the key combination on \a grab_window if you grabbed it using
# ## `xcb_grab_key` before.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_ungrab_key_checked*(c: ptr xcb_connection_t; key: xcb_keycode_t;
# grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ## @brief release a key combination
# ##
# ## @param c The connection
# ## @param key The keycode of the specified key combination.
# ## \n
# ## Using the special value `XCB_GRAB_ANY` means releasing all possible key codes.
# ## @param grab_window The window on which the grabbed key combination will be released.
# ## @param modifiers The modifiers of the specified key combination.
# ## \n
# ## Using the special value `XCB_MOD_MASK_ANY` means releasing the key combination
# ## with every possible modifier combination.
# ## @return A cookie
# ##
# ## Releases the key combination on \a grab_window if you grabbed it using
# ## `xcb_grab_key` before.
# ##
# ##
# proc xcb_ungrab_key*(c: ptr xcb_connection_t; key: xcb_keycode_t;
# grab_window: xcb_window_t; modifiers: uint16): xcb_void_cookie_t
# ## *
# ## @brief release queued events
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_allow_t values.
# ## @param mode \n
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Releases queued events if the client has caused a device (pointer/keyboard) to
# ## freeze due to grabbing it actively. This request has no effect if \a time is
# ## earlier than the last-grab time of the most recent active grab for this client
# ## or if \a time is later than the current X server time.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_allow_events_checked*(c: ptr xcb_connection_t; mode: uint8;
# time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief release queued events
# ##
# ## @param c The connection
# ## @param mode A bitmask of #xcb_allow_t values.
# ## @param mode \n
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Releases queued events if the client has caused a device (pointer/keyboard) to
# ## freeze due to grabbing it actively. This request has no effect if \a time is
# ## earlier than the last-grab time of the most recent active grab for this client
# ## or if \a time is later than the current X server time.
# ##
# ##
# proc xcb_allow_events*(c: ptr xcb_connection_t; mode: uint8; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_grab_server_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_grab_server*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_ungrab_server_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_ungrab_server*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ## @brief get pointer coordinates
# ##
# ## @param c The connection
# ## @param window A window to check if the pointer is on the same screen as \a window (see the
# ## `same_screen` field in the reply).
# ## @return A cookie
# ##
# ## Gets the root window the pointer is logically on and the pointer coordinates
# ## relative to the root window's origin.
# ##
# proc xcb_timecoord_next*(i: ptr xcb_timecoord_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_timecoord_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_timecoord_end*(i: xcb_timecoord_iterator_t): xcb_generic_iterator_t
# proc xcb_get_motion_events_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_motion_events*(c: ptr xcb_connection_t; window: xcb_window_t;
# start: xcb_timestamp_t; stop: xcb_timestamp_t): xcb_get_motion_events_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_motion_events_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t;
# start: xcb_timestamp_t; stop: xcb_timestamp_t): xcb_get_motion_events_cookie_t
# proc xcb_get_motion_events_events*(R: ptr xcb_get_motion_events_reply_t): ptr xcb_timecoord_t
# proc xcb_get_motion_events_events_length*(R: ptr xcb_get_motion_events_reply_t): cint
# proc xcb_get_motion_events_events_iterator*(R: ptr xcb_get_motion_events_reply_t): xcb_timecoord_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_motion_events_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_motion_events_reply*(c: ptr xcb_connection_t; cookie: xcb_get_motion_events_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_motion_events_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_translate_coordinates*(c: ptr xcb_connection_t; src_window: xcb_window_t;
# dst_window: xcb_window_t; src_x: int16;
# src_y: int16): xcb_translate_coordinates_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_translate_coordinates_unchecked*(c: ptr xcb_connection_t;
# src_window: xcb_window_t; dst_window: xcb_window_t; src_x: int16; src_y: int16): xcb_translate_coordinates_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_translate_coordinates_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_translate_coordinates_reply*(c: ptr xcb_connection_t; cookie: xcb_translate_coordinates_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_translate_coordinates_reply_t
# ## *
# ## @brief move mouse pointer
# ##
# ## @param c The connection
# ## @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ## pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ## \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ## \a src_window.
# ## @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ## offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ## `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ## relative to the current position of the pointer.
# ## @return A cookie
# ##
# ## Moves the mouse pointer to the specified position.
# ##
# ## If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ## pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ## \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ## \a src_window.
# ##
# ## If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ## offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ## `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ## relative to the current position of the pointer.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_warp_pointer_checked*(c: ptr xcb_connection_t; src_window: xcb_window_t;
# dst_window: xcb_window_t; src_x: int16;
# src_y: int16; src_width: uint16;
# src_height: uint16; dst_x: int16; dst_y: int16): xcb_void_cookie_t
# ## *
# ## @brief move mouse pointer
# ##
# ## @param c The connection
# ## @param src_window If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ## pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ## \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ## \a src_window.
# ## @param dst_window If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ## offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ## `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ## relative to the current position of the pointer.
# ## @return A cookie
# ##
# ## Moves the mouse pointer to the specified position.
# ##
# ## If \a src_window is not `XCB_NONE` (TODO), the move will only take place if the
# ## pointer is inside \a src_window and within the rectangle specified by (\a src_x,
# ## \a src_y, \a src_width, \a src_height). The rectangle coordinates are relative to
# ## \a src_window.
# ##
# ## If \a dst_window is not `XCB_NONE` (TODO), the pointer will be moved to the
# ## offsets (\a dst_x, \a dst_y) relative to \a dst_window. If \a dst_window is
# ## `XCB_NONE` (TODO), the pointer will be moved by the offsets (\a dst_x, \a dst_y)
# ## relative to the current position of the pointer.
# ##
# ##
# proc xcb_warp_pointer*(c: ptr xcb_connection_t; src_window: xcb_window_t;
# dst_window: xcb_window_t; src_x: int16; src_y: int16;
# src_width: uint16; src_height: uint16; dst_x: int16;
# dst_y: int16): xcb_void_cookie_t
# ## *
# ## @brief Sets input focus
# ##
# ## @param c The connection
# ## @param revert_to A bitmask of #xcb_input_focus_t values.
# ## @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
# ## is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
# ## @param focus The window to focus. All keyboard events will be reported to this window. The
# ## window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
# ## \n
# ## If \a focus is `XCB_NONE` (TODO), all keyboard events are
# ## discarded until a new focus window is set.
# ## \n
# ## If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
# ## screen on which the pointer is on currently.
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Changes the input focus and the last-focus-change time. If the specified \a time
# ## is earlier than the current last-focus-change time, the request is ignored (to
# ## avoid race conditions when running X over the network).
# ##
# ## A FocusIn and FocusOut event is generated when focus is changed.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_input_focus_checked*(c: ptr xcb_connection_t; revert_to: uint8;
# focus: xcb_window_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ## @brief Sets input focus
# ##
# ## @param c The connection
# ## @param revert_to A bitmask of #xcb_input_focus_t values.
# ## @param revert_to Specifies what happens when the \a focus window becomes unviewable (if \a focus
# ## is neither `XCB_NONE` nor `XCB_POINTER_ROOT`).
# ## @param focus The window to focus. All keyboard events will be reported to this window. The
# ## window must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO).
# ## \n
# ## If \a focus is `XCB_NONE` (TODO), all keyboard events are
# ## discarded until a new focus window is set.
# ## \n
# ## If \a focus is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the
# ## screen on which the pointer is on currently.
# ## @param time Timestamp to avoid race conditions when running X over the network.
# ## \n
# ## The special value `XCB_CURRENT_TIME` will be replaced with the current server
# ## time.
# ## @return A cookie
# ##
# ## Changes the input focus and the last-focus-change time. If the specified \a time
# ## is earlier than the current last-focus-change time, the request is ignored (to
# ## avoid race conditions when running X over the network).
# ##
# ## A FocusIn and FocusOut event is generated when focus is changed.
# ##
# ##
# proc xcb_set_input_focus*(c: ptr xcb_connection_t; revert_to: uint8;
# focus: xcb_window_t; time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_input_focus*(c: ptr xcb_connection_t): xcb_get_input_focus_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_input_focus_unchecked*(c: ptr xcb_connection_t): xcb_get_input_focus_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_input_focus_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_input_focus_reply*(c: ptr xcb_connection_t; cookie: xcb_get_input_focus_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_input_focus_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_query_keymap*(c: ptr xcb_connection_t): xcb_query_keymap_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_keymap_unchecked*(c: ptr xcb_connection_t): xcb_query_keymap_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_keymap_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_keymap_reply*(c: ptr xcb_connection_t; cookie: xcb_query_keymap_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_keymap_reply_t
# proc xcb_open_font_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief opens a font
# ##
# ## @param c The connection
# ## @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
# ## @param name_len Length (in bytes) of \a name.
# ## @param name A pattern describing an X core font.
# ## @return A cookie
# ##
# ## Opens any X core font matching the given \a name (for example "-misc-fixed-*").
# ##
# ## Note that X core fonts are deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_open_font_checked*(c: ptr xcb_connection_t; fid: xcb_font_t;
# name_len: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ## @brief opens a font
# ##
# ## @param c The connection
# ## @param fid The ID with which you will refer to the font, created by `xcb_generate_id`.
# ## @param name_len Length (in bytes) of \a name.
# ## @param name A pattern describing an X core font.
# ## @return A cookie
# ##
# ## Opens any X core font matching the given \a name (for example "-misc-fixed-*").
# ##
# ## Note that X core fonts are deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ##
# proc xcb_open_font*(c: ptr xcb_connection_t; fid: xcb_font_t; name_len: uint16;
# name: cstring): xcb_void_cookie_t
# proc xcb_open_font_name*(R: ptr xcb_open_font_request_t): cstring
# proc xcb_open_font_name_length*(R: ptr xcb_open_font_request_t): cint
# proc xcb_open_font_name_end*(R: ptr xcb_open_font_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_close_font_checked*(c: ptr xcb_connection_t; font: xcb_font_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_close_font*(c: ptr xcb_connection_t; font: xcb_font_t): xcb_void_cookie_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_fontprop_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_fontprop_t)
# ##
# proc xcb_fontprop_next*(i: ptr xcb_fontprop_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_fontprop_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_fontprop_end*(i: xcb_fontprop_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_charinfo_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_charinfo_t)
# ##
# proc xcb_charinfo_next*(i: ptr xcb_charinfo_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_charinfo_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_charinfo_end*(i: xcb_charinfo_iterator_t): xcb_generic_iterator_t
# proc xcb_query_font_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief query font metrics
# ##
# ## @param c The connection
# ## @param font The fontable (Font or Graphics Context) to query.
# ## @return A cookie
# ##
# ## Queries information associated with the font.
# ##
# ##
# proc xcb_query_font*(c: ptr xcb_connection_t; font: xcb_fontable_t): xcb_query_font_cookie_t
# ## *
# ## @brief query font metrics
# ##
# ## @param c The connection
# ## @param font The fontable (Font or Graphics Context) to query.
# ## @return A cookie
# ##
# ## Queries information associated with the font.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_font_unchecked*(c: ptr xcb_connection_t; font: xcb_fontable_t): xcb_query_font_cookie_t
# proc xcb_query_font_properties*(R: ptr xcb_query_font_reply_t): ptr xcb_fontprop_t
# proc xcb_query_font_properties_length*(R: ptr xcb_query_font_reply_t): cint
# proc xcb_query_font_properties_iterator*(R: ptr xcb_query_font_reply_t): xcb_fontprop_iterator_t
# proc xcb_query_font_char_infos*(R: ptr xcb_query_font_reply_t): ptr xcb_charinfo_t
# proc xcb_query_font_char_infos_length*(R: ptr xcb_query_font_reply_t): cint
# proc xcb_query_font_char_infos_iterator*(R: ptr xcb_query_font_reply_t): xcb_charinfo_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_font_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_font_reply*(c: ptr xcb_connection_t; cookie: xcb_query_font_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_font_reply_t
# proc xcb_query_text_extents_sizeof*(_buffer: pointer; string_len: uint32): cint
# ## *
# ## @brief get text extents
# ##
# ## @param c The connection
# ## @param font The \a font to calculate text extents in. You can also pass a graphics context.
# ## @param string_len The number of characters in \a string.
# ## @param string The text to get text extents for.
# ## @return A cookie
# ##
# ## Query text extents from the X11 server. This request returns the bounding box
# ## of the specified 16-bit character string in the specified \a font or the font
# ## contained in the specified graphics context.
# ##
# ## `font_ascent` is set to the maximum of the ascent metrics of all characters in
# ## the string. `font_descent` is set to the maximum of the descent metrics.
# ## `overall_width` is set to the sum of the character-width metrics of all
# ## characters in the string. For each character in the string, let W be the sum of
# ## the character-width metrics of all characters preceding it in the string. Let L
# ## be the left-side-bearing metric of the character plus W. Let R be the
# ## right-side-bearing metric of the character plus W. The lbearing member is set
# ## to the minimum L of all characters in the string. The rbearing member is set to
# ## the maximum R.
# ##
# ## For fonts defined with linear indexing rather than 2-byte matrix indexing, each
# ## `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
# ## most significant byte. If the font has no defined default character, undefined
# ## characters in the string are taken to have all zero metrics.
# ##
# ## Characters with all zero metrics are ignored. If the font has no defined
# ## default_char, the undefined characters in the string are also ignored.
# ##
# ##
# proc xcb_query_text_extents*(c: ptr xcb_connection_t; font: xcb_fontable_t;
# string_len: uint32; string: ptr xcb_char2b_t): xcb_query_text_extents_cookie_t
# ## *
# ## @brief get text extents
# ##
# ## @param c The connection
# ## @param font The \a font to calculate text extents in. You can also pass a graphics context.
# ## @param string_len The number of characters in \a string.
# ## @param string The text to get text extents for.
# ## @return A cookie
# ##
# ## Query text extents from the X11 server. This request returns the bounding box
# ## of the specified 16-bit character string in the specified \a font or the font
# ## contained in the specified graphics context.
# ##
# ## `font_ascent` is set to the maximum of the ascent metrics of all characters in
# ## the string. `font_descent` is set to the maximum of the descent metrics.
# ## `overall_width` is set to the sum of the character-width metrics of all
# ## characters in the string. For each character in the string, let W be the sum of
# ## the character-width metrics of all characters preceding it in the string. Let L
# ## be the left-side-bearing metric of the character plus W. Let R be the
# ## right-side-bearing metric of the character plus W. The lbearing member is set
# ## to the minimum L of all characters in the string. The rbearing member is set to
# ## the maximum R.
# ##
# ## For fonts defined with linear indexing rather than 2-byte matrix indexing, each
# ## `xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the
# ## most significant byte. If the font has no defined default character, undefined
# ## characters in the string are taken to have all zero metrics.
# ##
# ## Characters with all zero metrics are ignored. If the font has no defined
# ## default_char, the undefined characters in the string are also ignored.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_text_extents_unchecked*(c: ptr xcb_connection_t;
# font: xcb_fontable_t; string_len: uint32;
# string: ptr xcb_char2b_t): xcb_query_text_extents_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_text_extents_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_text_extents_reply*(c: ptr xcb_connection_t; cookie: xcb_query_text_extents_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_text_extents_reply_t
# proc xcb_str_sizeof*(_buffer: pointer): cint
# proc xcb_str_name*(R: ptr xcb_str_t): cstring
# proc xcb_str_name_length*(R: ptr xcb_str_t): cint
# proc xcb_str_name_end*(R: ptr xcb_str_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_str_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_str_t)
# ##
# proc xcb_str_next*(i: ptr xcb_str_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_str_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_str_end*(i: xcb_str_iterator_t): xcb_generic_iterator_t
# proc xcb_list_fonts_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief get matching font names
# ##
# ## @param c The connection
# ## @param max_names The maximum number of fonts to be returned.
# ## @param pattern_len The length (in bytes) of \a pattern.
# ## @param pattern A font pattern, for example "-misc-fixed-*".
# ## \n
# ## The asterisk (*) is a wildcard for any number of characters. The question mark
# ## (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ## not matter.
# ## @return A cookie
# ##
# ## Gets a list of available font names which match the given \a pattern.
# ##
# ##
# proc xcb_list_fonts*(c: ptr xcb_connection_t; max_names: uint16;
# pattern_len: uint16; pattern: cstring): xcb_list_fonts_cookie_t
# ## *
# ## @brief get matching font names
# ##
# ## @param c The connection
# ## @param max_names The maximum number of fonts to be returned.
# ## @param pattern_len The length (in bytes) of \a pattern.
# ## @param pattern A font pattern, for example "-misc-fixed-*".
# ## \n
# ## The asterisk (*) is a wildcard for any number of characters. The question mark
# ## (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ## not matter.
# ## @return A cookie
# ##
# ## Gets a list of available font names which match the given \a pattern.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_fonts_unchecked*(c: ptr xcb_connection_t; max_names: uint16;
# pattern_len: uint16; pattern: cstring): xcb_list_fonts_cookie_t
# proc xcb_list_fonts_names_length*(R: ptr xcb_list_fonts_reply_t): cint
# proc xcb_list_fonts_names_iterator*(R: ptr xcb_list_fonts_reply_t): xcb_str_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_list_fonts_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_list_fonts_reply*(c: ptr xcb_connection_t; cookie: xcb_list_fonts_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_list_fonts_reply_t
# proc xcb_list_fonts_with_info_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief get matching font names and information
# ##
# ## @param c The connection
# ## @param max_names The maximum number of fonts to be returned.
# ## @param pattern_len The length (in bytes) of \a pattern.
# ## @param pattern A font pattern, for example "-misc-fixed-*".
# ## \n
# ## The asterisk (*) is a wildcard for any number of characters. The question mark
# ## (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ## not matter.
# ## @return A cookie
# ##
# ## Gets a list of available font names which match the given \a pattern.
# ##
# ##
# proc xcb_list_fonts_with_info*(c: ptr xcb_connection_t; max_names: uint16;
# pattern_len: uint16; pattern: cstring): xcb_list_fonts_with_info_cookie_t
# ## *
# ## @brief get matching font names and information
# ##
# ## @param c The connection
# ## @param max_names The maximum number of fonts to be returned.
# ## @param pattern_len The length (in bytes) of \a pattern.
# ## @param pattern A font pattern, for example "-misc-fixed-*".
# ## \n
# ## The asterisk (*) is a wildcard for any number of characters. The question mark
# ## (?) is a wildcard for a single character. Use of uppercase or lowercase does
# ## not matter.
# ## @return A cookie
# ##
# ## Gets a list of available font names which match the given \a pattern.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_fonts_with_info_unchecked*(c: ptr xcb_connection_t;
# max_names: uint16;
# pattern_len: uint16; pattern: cstring): xcb_list_fonts_with_info_cookie_t
# proc xcb_list_fonts_with_info_properties*(R: ptr xcb_list_fonts_with_info_reply_t): ptr xcb_fontprop_t
# proc xcb_list_fonts_with_info_properties_length*(
# R: ptr xcb_list_fonts_with_info_reply_t): cint
# proc xcb_list_fonts_with_info_properties_iterator*(
# R: ptr xcb_list_fonts_with_info_reply_t): xcb_fontprop_iterator_t
# proc xcb_list_fonts_with_info_name*(R: ptr xcb_list_fonts_with_info_reply_t): cstring
# proc xcb_list_fonts_with_info_name_length*(
# R: ptr xcb_list_fonts_with_info_reply_t): cint
# proc xcb_list_fonts_with_info_name_end*(R: ptr xcb_list_fonts_with_info_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_list_fonts_with_info_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_list_fonts_with_info_reply*(c: ptr xcb_connection_t; cookie: xcb_list_fonts_with_info_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_list_fonts_with_info_reply_t
# proc xcb_set_font_path_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_font_path_checked*(c: ptr xcb_connection_t; font_qty: uint16;
# font: ptr xcb_str_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_font_path*(c: ptr xcb_connection_t; font_qty: uint16;
# font: ptr xcb_str_t): xcb_void_cookie_t
# proc xcb_set_font_path_font_length*(R: ptr xcb_set_font_path_request_t): cint
# proc xcb_set_font_path_font_iterator*(R: ptr xcb_set_font_path_request_t): xcb_str_iterator_t
# proc xcb_get_font_path_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_font_path*(c: ptr xcb_connection_t): xcb_get_font_path_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_font_path_unchecked*(c: ptr xcb_connection_t): xcb_get_font_path_cookie_t
# proc xcb_get_font_path_path_length*(R: ptr xcb_get_font_path_reply_t): cint
# proc xcb_get_font_path_path_iterator*(R: ptr xcb_get_font_path_reply_t): xcb_str_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_font_path_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_font_path_reply*(c: ptr xcb_connection_t; cookie: xcb_get_font_path_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_font_path_reply_t
# ## *
# ## @brief Creates a pixmap
# ##
# ## @param c The connection
# ## @param depth TODO
# ## @param pid The ID with which you will refer to the new pixmap, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the screen from.
# ## @param width The width of the new pixmap.
# ## @param height The height of the new pixmap.
# ## @return A cookie
# ##
# ## Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
# ## is on and only with drawables of the same \a depth.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_pixmap_checked*(c: ptr xcb_connection_t; depth: uint8;
# pid: xcb_pixmap_t; drawable: xcb_drawable_t;
# width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ## @brief Creates a pixmap
# ##
# ## @param c The connection
# ## @param depth TODO
# ## @param pid The ID with which you will refer to the new pixmap, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the screen from.
# ## @param width The width of the new pixmap.
# ## @param height The height of the new pixmap.
# ## @return A cookie
# ##
# ## Creates a pixmap. The pixmap can only be used on the same screen as \a drawable
# ## is on and only with drawables of the same \a depth.
# ##
# ##
# proc xcb_create_pixmap*(c: ptr xcb_connection_t; depth: uint8; pid: xcb_pixmap_t;
# drawable: xcb_drawable_t; width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ## @brief Destroys a pixmap
# ##
# ## @param c The connection
# ## @param pixmap The pixmap to destroy.
# ## @return A cookie
# ##
# ## Deletes the association between the pixmap ID and the pixmap. The pixmap
# ## storage will be freed when there are no more references to it.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_free_pixmap_checked*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# ## *
# ## @brief Destroys a pixmap
# ##
# ## @param c The connection
# ## @param pixmap The pixmap to destroy.
# ## @return A cookie
# ##
# ## Deletes the association between the pixmap ID and the pixmap. The pixmap
# ## storage will be freed when there are no more references to it.
# ##
# ##
# proc xcb_free_pixmap*(c: ptr xcb_connection_t; pixmap: xcb_pixmap_t): xcb_void_cookie_t
# proc xcb_create_gc_value_list_serialize*(_buffer: ptr pointer; value_mask: uint32;
# _aux: ptr xcb_create_gc_value_list_t): cint
# proc xcb_create_gc_value_list_unpack*(_buffer: pointer; value_mask: uint32;
# _aux: ptr xcb_create_gc_value_list_t): cint
# proc xcb_create_gc_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_create_gc_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Creates a graphics context
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the graphics context, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the root/depth from.
# ## @return A cookie
# ##
# ## Creates a graphics context. The graphics context can be used with any drawable
# ## that has the same root and depth as the specified drawable.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_gc_checked*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
# drawable: xcb_drawable_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief Creates a graphics context
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the graphics context, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the root/depth from.
# ## @return A cookie
# ##
# ## Creates a graphics context. The graphics context can be used with any drawable
# ## that has the same root and depth as the specified drawable.
# ##
# ##
# proc xcb_create_gc*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
# drawable: xcb_drawable_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t {.importc, cdecl.}
# ## *
# ## @brief Creates a graphics context
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the graphics context, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the root/depth from.
# ## @return A cookie
# ##
# ## Creates a graphics context. The graphics context can be used with any drawable
# ## that has the same root and depth as the specified drawable.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_gc_aux_checked*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
# drawable: xcb_drawable_t; value_mask: uint32;
# value_list: ptr xcb_create_gc_value_list_t): xcb_void_cookie_t
# ## *
# ## @brief Creates a graphics context
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the graphics context, created by
# ## `xcb_generate_id`.
# ## @param drawable Drawable to get the root/depth from.
# ## @return A cookie
# ##
# ## Creates a graphics context. The graphics context can be used with any drawable
# ## that has the same root and depth as the specified drawable.
# ##
# ##
# proc xcb_create_gc_aux*(c: ptr xcb_connection_t; cid: xcb_gcontext_t;
# drawable: xcb_drawable_t; value_mask: uint32;
# value_list: ptr xcb_create_gc_value_list_t): xcb_void_cookie_t
# proc xcb_create_gc_value_list*(R: ptr xcb_create_gc_request_t): pointer
# proc xcb_change_gc_value_list_serialize*(_buffer: ptr pointer; value_mask: uint32;
# _aux: ptr xcb_change_gc_value_list_t): cint
# proc xcb_change_gc_value_list_unpack*(_buffer: pointer; value_mask: uint32;
# _aux: ptr xcb_change_gc_value_list_t): cint
# proc xcb_change_gc_value_list_sizeof*(_buffer: pointer; value_mask: uint32): cint
# proc xcb_change_gc_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief change graphics context components
# ##
# ## @param c The connection
# ## @param gc The graphics context to change.
# ## @param value_mask A bitmask of #xcb_gc_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief change graphics context components
# ##
# ## @param c The connection
# ## @param gc The graphics context to change.
# ## @param value_mask A bitmask of #xcb_gc_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##
# proc xcb_change_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t
# ## *
# ## @brief change graphics context components
# ##
# ## @param c The connection
# ## @param gc The graphics context to change.
# ## @param value_mask A bitmask of #xcb_gc_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_gc_aux_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# value_mask: uint32;
# value_list: ptr xcb_change_gc_value_list_t): xcb_void_cookie_t
# ## *
# ## @brief change graphics context components
# ##
# ## @param c The connection
# ## @param gc The graphics context to change.
# ## @param value_mask A bitmask of #xcb_gc_t values.
# ## @param value_mask \n
# ## @param value_list Values for each of the components specified in the bitmask \a value_mask. The
# ## order has to correspond to the order of possible \a value_mask bits. See the
# ## example.
# ## @return A cookie
# ##
# ## Changes the components specified by \a value_mask for the specified graphics context.
# ##
# ##
# proc xcb_change_gc_aux*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# value_mask: uint32;
# value_list: ptr xcb_change_gc_value_list_t): xcb_void_cookie_t
# proc xcb_change_gc_value_list*(R: ptr xcb_change_gc_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_copy_gc_checked*(c: ptr xcb_connection_t; src_gc: xcb_gcontext_t;
# dst_gc: xcb_gcontext_t; value_mask: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_copy_gc*(c: ptr xcb_connection_t; src_gc: xcb_gcontext_t;
# dst_gc: xcb_gcontext_t; value_mask: uint32): xcb_void_cookie_t
# proc xcb_set_dashes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_dashes_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# dash_offset: uint16; dashes_len: uint16;
# dashes: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_dashes*(c: ptr xcb_connection_t; gc: xcb_gcontext_t;
# dash_offset: uint16; dashes_len: uint16; dashes: ptr uint8): xcb_void_cookie_t
# proc xcb_set_dashes_dashes*(R: ptr xcb_set_dashes_request_t): ptr uint8
# proc xcb_set_dashes_dashes_length*(R: ptr xcb_set_dashes_request_t): cint
# proc xcb_set_dashes_dashes_end*(R: ptr xcb_set_dashes_request_t): xcb_generic_iterator_t
# proc xcb_set_clip_rectangles_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_clip_rectangles_checked*(c: ptr xcb_connection_t; ordering: uint8;
# gc: xcb_gcontext_t; clip_x_origin: int16;
# clip_y_origin: int16;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_clip_rectangles*(c: ptr xcb_connection_t; ordering: uint8;
# gc: xcb_gcontext_t; clip_x_origin: int16;
# clip_y_origin: int16; rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_set_clip_rectangles_rectangles*(R: ptr xcb_set_clip_rectangles_request_t): ptr xcb_rectangle_t
# proc xcb_set_clip_rectangles_rectangles_length*(
# R: ptr xcb_set_clip_rectangles_request_t): cint
# proc xcb_set_clip_rectangles_rectangles_iterator*(
# R: ptr xcb_set_clip_rectangles_request_t): xcb_rectangle_iterator_t
# ## *
# ## @brief Destroys a graphics context
# ##
# ## @param c The connection
# ## @param gc The graphics context to destroy.
# ## @return A cookie
# ##
# ## Destroys the specified \a gc and all associated storage.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_free_gc_checked*(c: ptr xcb_connection_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ## @brief Destroys a graphics context
# ##
# ## @param c The connection
# ## @param gc The graphics context to destroy.
# ## @return A cookie
# ##
# ## Destroys the specified \a gc and all associated storage.
# ##
# ##
# proc xcb_free_gc*(c: ptr xcb_connection_t; gc: xcb_gcontext_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_clear_area_checked*(c: ptr xcb_connection_t; exposures: uint8;
# window: xcb_window_t; x: int16; y: int16;
# width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_clear_area*(c: ptr xcb_connection_t; exposures: uint8;
# window: xcb_window_t; x: int16; y: int16; width: uint16;
# height: uint16): xcb_void_cookie_t
# ## *
# ## @brief copy areas
# ##
# ## @param c The connection
# ## @param src_drawable The source drawable (Window or Pixmap).
# ## @param dst_drawable The destination drawable (Window or Pixmap).
# ## @param gc The graphics context to use.
# ## @param src_x The source X coordinate.
# ## @param src_y The source Y coordinate.
# ## @param dst_x The destination X coordinate.
# ## @param dst_y The destination Y coordinate.
# ## @param width The width of the area to copy (in pixels).
# ## @param height The height of the area to copy (in pixels).
# ## @return A cookie
# ##
# ## Copies the specified rectangle from \a src_drawable to \a dst_drawable.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_copy_area_checked*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
# dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# src_x: int16; src_y: int16; dst_x: int16;
# dst_y: int16; width: uint16; height: uint16): xcb_void_cookie_t
# ## *
# ## @brief copy areas
# ##
# ## @param c The connection
# ## @param src_drawable The source drawable (Window or Pixmap).
# ## @param dst_drawable The destination drawable (Window or Pixmap).
# ## @param gc The graphics context to use.
# ## @param src_x The source X coordinate.
# ## @param src_y The source Y coordinate.
# ## @param dst_x The destination X coordinate.
# ## @param dst_y The destination Y coordinate.
# ## @param width The width of the area to copy (in pixels).
# ## @param height The height of the area to copy (in pixels).
# ## @return A cookie
# ##
# ## Copies the specified rectangle from \a src_drawable to \a dst_drawable.
# ##
# ##
# proc xcb_copy_area*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
# dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t; src_x: int16;
# src_y: int16; dst_x: int16; dst_y: int16; width: uint16;
# height: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_copy_plane_checked*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
# dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# src_x: int16; src_y: int16; dst_x: int16;
# dst_y: int16; width: uint16; height: uint16;
# bit_plane: uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_copy_plane*(c: ptr xcb_connection_t; src_drawable: xcb_drawable_t;
# dst_drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# src_x: int16; src_y: int16; dst_x: int16; dst_y: int16;
# width: uint16; height: uint16; bit_plane: uint32): xcb_void_cookie_t
# proc xcb_poly_point_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_point_checked*(c: ptr xcb_connection_t; coordinate_mode: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_point*(c: ptr xcb_connection_t; coordinate_mode: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_poly_point_points*(R: ptr xcb_poly_point_request_t): ptr xcb_point_t
# proc xcb_poly_point_points_length*(R: ptr xcb_poly_point_request_t): cint
# proc xcb_poly_point_points_iterator*(R: ptr xcb_poly_point_request_t): xcb_point_iterator_t
# proc xcb_poly_line_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ## @brief draw lines
# ##
# ## @param c The connection
# ## @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
# ## @param coordinate_mode \n
# ## @param drawable The drawable to draw the line(s) on.
# ## @param gc The graphics context to use.
# ## @param points_len The number of `xcb_point_t` structures in \a points.
# ## @param points An array of points.
# ## @return A cookie
# ##
# ## Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
# ## in the \a points array. The lines are drawn in the order listed in the array.
# ## They join correctly at all intermediate points, and if the first and last
# ## points coincide, the first and last lines also join correctly. For any given
# ## line, a pixel is not drawn more than once. If thin (zero line-width) lines
# ## intersect, the intersecting pixels are drawn multiple times. If wide lines
# ## intersect, the intersecting pixels are drawn only once, as though the entire
# ## request were a single, filled shape.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_line_checked*(c: ptr xcb_connection_t; coordinate_mode: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ## @brief draw lines
# ##
# ## @param c The connection
# ## @param coordinate_mode A bitmask of #xcb_coord_mode_t values.
# ## @param coordinate_mode \n
# ## @param drawable The drawable to draw the line(s) on.
# ## @param gc The graphics context to use.
# ## @param points_len The number of `xcb_point_t` structures in \a points.
# ## @param points An array of points.
# ## @return A cookie
# ##
# ## Draws \a points_len-1 lines between each pair of points (point[i], point[i+1])
# ## in the \a points array. The lines are drawn in the order listed in the array.
# ## They join correctly at all intermediate points, and if the first and last
# ## points coincide, the first and last lines also join correctly. For any given
# ## line, a pixel is not drawn more than once. If thin (zero line-width) lines
# ## intersect, the intersecting pixels are drawn multiple times. If wide lines
# ## intersect, the intersecting pixels are drawn only once, as though the entire
# ## request were a single, filled shape.
# ##
# ##
# proc xcb_poly_line*(c: ptr xcb_connection_t; coordinate_mode: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_poly_line_points*(R: ptr xcb_poly_line_request_t): ptr xcb_point_t
# proc xcb_poly_line_points_length*(R: ptr xcb_poly_line_request_t): cint
# proc xcb_poly_line_points_iterator*(R: ptr xcb_poly_line_request_t): xcb_point_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_segment_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_segment_t)
# ##
# proc xcb_segment_next*(i: ptr xcb_segment_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_segment_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_segment_end*(i: xcb_segment_iterator_t): xcb_generic_iterator_t
# proc xcb_poly_segment_sizeof*(_buffer: pointer; segments_len: uint32): cint
# ## *
# ## @brief draw lines
# ##
# ## @param c The connection
# ## @param drawable A drawable (Window or Pixmap) to draw on.
# ## @param gc The graphics context to use.
# ## \n
# ## TODO: document which attributes of a gc are used
# ## @param segments_len The number of `xcb_segment_t` structures in \a segments.
# ## @param segments An array of `xcb_segment_t` structures.
# ## @return A cookie
# ##
# ## Draws multiple, unconnected lines. For each segment, a line is drawn between
# ## (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
# ## `xcb_segment_t` structures and does not perform joining at coincident
# ## endpoints. For any given line, a pixel is not drawn more than once. If lines
# ## intersect, the intersecting pixels are drawn multiple times.
# ##
# ## TODO: include the xcb_segment_t data structure
# ##
# ## TODO: an example
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_segment_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; segments_len: uint32;
# segments: ptr xcb_segment_t): xcb_void_cookie_t
# ## *
# ## @brief draw lines
# ##
# ## @param c The connection
# ## @param drawable A drawable (Window or Pixmap) to draw on.
# ## @param gc The graphics context to use.
# ## \n
# ## TODO: document which attributes of a gc are used
# ## @param segments_len The number of `xcb_segment_t` structures in \a segments.
# ## @param segments An array of `xcb_segment_t` structures.
# ## @return A cookie
# ##
# ## Draws multiple, unconnected lines. For each segment, a line is drawn between
# ## (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of
# ## `xcb_segment_t` structures and does not perform joining at coincident
# ## endpoints. For any given line, a pixel is not drawn more than once. If lines
# ## intersect, the intersecting pixels are drawn multiple times.
# ##
# ## TODO: include the xcb_segment_t data structure
# ##
# ## TODO: an example
# ##
# ##
# proc xcb_poly_segment*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; segments_len: uint32;
# segments: ptr xcb_segment_t): xcb_void_cookie_t
# proc xcb_poly_segment_segments*(R: ptr xcb_poly_segment_request_t): ptr xcb_segment_t
# proc xcb_poly_segment_segments_length*(R: ptr xcb_poly_segment_request_t): cint
# proc xcb_poly_segment_segments_iterator*(R: ptr xcb_poly_segment_request_t): xcb_segment_iterator_t
# proc xcb_poly_rectangle_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_rectangle_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_rectangle*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_poly_rectangle_rectangles*(R: ptr xcb_poly_rectangle_request_t): ptr xcb_rectangle_t
# proc xcb_poly_rectangle_rectangles_length*(R: ptr xcb_poly_rectangle_request_t): cint
# proc xcb_poly_rectangle_rectangles_iterator*(R: ptr xcb_poly_rectangle_request_t): xcb_rectangle_iterator_t
# proc xcb_poly_arc_sizeof*(_buffer: pointer; arcs_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_arc_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; arcs_len: uint32;
# arcs: ptr xcb_arc_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_arc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; arcs_len: uint32; arcs: ptr xcb_arc_t): xcb_void_cookie_t
# proc xcb_poly_arc_arcs*(R: ptr xcb_poly_arc_request_t): ptr xcb_arc_t
# proc xcb_poly_arc_arcs_length*(R: ptr xcb_poly_arc_request_t): cint
# proc xcb_poly_arc_arcs_iterator*(R: ptr xcb_poly_arc_request_t): xcb_arc_iterator_t
# proc xcb_fill_poly_sizeof*(_buffer: pointer; points_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_fill_poly_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; shape: uint8;
# coordinate_mode: uint8; points_len: uint32;
# points: ptr xcb_point_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_fill_poly*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; shape: uint8; coordinate_mode: uint8;
# points_len: uint32; points: ptr xcb_point_t): xcb_void_cookie_t
# proc xcb_fill_poly_points*(R: ptr xcb_fill_poly_request_t): ptr xcb_point_t
# proc xcb_fill_poly_points_length*(R: ptr xcb_fill_poly_request_t): cint
# proc xcb_fill_poly_points_iterator*(R: ptr xcb_fill_poly_request_t): xcb_point_iterator_t
# proc xcb_poly_fill_rectangle_sizeof*(_buffer: pointer; rectangles_len: uint32): cint
# ## *
# ## @brief Fills rectangles
# ##
# ## @param c The connection
# ## @param drawable The drawable (Window or Pixmap) to draw on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: function, plane-mask,
# ## fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## \n
# ## The following graphics context mode-dependent components are used:
# ## foreground, background, tile, stipple, tile-stipple-x-origin, and
# ## tile-stipple-y-origin.
# ## @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
# ## @param rectangles The rectangles to fill.
# ## @return A cookie
# ##
# ## Fills the specified rectangle(s) in the order listed in the array. For any
# ## given rectangle, each pixel is not drawn more than once. If rectangles
# ## intersect, the intersecting pixels are drawn multiple times.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_fill_rectangle_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# ## *
# ## @brief Fills rectangles
# ##
# ## @param c The connection
# ## @param drawable The drawable (Window or Pixmap) to draw on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: function, plane-mask,
# ## fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## \n
# ## The following graphics context mode-dependent components are used:
# ## foreground, background, tile, stipple, tile-stipple-x-origin, and
# ## tile-stipple-y-origin.
# ## @param rectangles_len The number of `xcb_rectangle_t` structures in \a rectangles.
# ## @param rectangles The rectangles to fill.
# ## @return A cookie
# ##
# ## Fills the specified rectangle(s) in the order listed in the array. For any
# ## given rectangle, each pixel is not drawn more than once. If rectangles
# ## intersect, the intersecting pixels are drawn multiple times.
# ##
# ##
# proc xcb_poly_fill_rectangle*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; rectangles_len: uint32;
# rectangles: ptr xcb_rectangle_t): xcb_void_cookie_t
# proc xcb_poly_fill_rectangle_rectangles*(R: ptr xcb_poly_fill_rectangle_request_t): ptr xcb_rectangle_t
# proc xcb_poly_fill_rectangle_rectangles_length*(
# R: ptr xcb_poly_fill_rectangle_request_t): cint
# proc xcb_poly_fill_rectangle_rectangles_iterator*(
# R: ptr xcb_poly_fill_rectangle_request_t): xcb_rectangle_iterator_t
# proc xcb_poly_fill_arc_sizeof*(_buffer: pointer; arcs_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_fill_arc_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; arcs_len: uint32;
# arcs: ptr xcb_arc_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_fill_arc*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; arcs_len: uint32; arcs: ptr xcb_arc_t): xcb_void_cookie_t
# proc xcb_poly_fill_arc_arcs*(R: ptr xcb_poly_fill_arc_request_t): ptr xcb_arc_t
# proc xcb_poly_fill_arc_arcs_length*(R: ptr xcb_poly_fill_arc_request_t): cint
# proc xcb_poly_fill_arc_arcs_iterator*(R: ptr xcb_poly_fill_arc_request_t): xcb_arc_iterator_t
# proc xcb_put_image_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_put_image_checked*(c: ptr xcb_connection_t; format: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# width: uint16; height: uint16; dst_x: int16;
# dst_y: int16; left_pad: uint8; depth: uint8;
# data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_put_image*(c: ptr xcb_connection_t; format: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; width: uint16;
# height: uint16; dst_x: int16; dst_y: int16;
# left_pad: uint8; depth: uint8; data_len: uint32;
# data: ptr uint8): xcb_void_cookie_t
# proc xcb_put_image_data*(R: ptr xcb_put_image_request_t): ptr uint8
# proc xcb_put_image_data_length*(R: ptr xcb_put_image_request_t): cint
# proc xcb_put_image_data_end*(R: ptr xcb_put_image_request_t): xcb_generic_iterator_t
# proc xcb_get_image_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_image*(c: ptr xcb_connection_t; format: uint8;
# drawable: xcb_drawable_t; x: int16; y: int16; width: uint16;
# height: uint16; plane_mask: uint32): xcb_get_image_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_image_unchecked*(c: ptr xcb_connection_t; format: uint8;
# drawable: xcb_drawable_t; x: int16; y: int16;
# width: uint16; height: uint16; plane_mask: uint32): xcb_get_image_cookie_t
# proc xcb_get_image_data*(R: ptr xcb_get_image_reply_t): ptr uint8
# proc xcb_get_image_data_length*(R: ptr xcb_get_image_reply_t): cint
# proc xcb_get_image_data_end*(R: ptr xcb_get_image_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_image_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_image_reply*(c: ptr xcb_connection_t; cookie: xcb_get_image_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_image_reply_t
# proc xcb_poly_text_8_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_text_8_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; x: int16; y: int16;
# items_len: uint32; items: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_text_8*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; x: int16; y: int16; items_len: uint32;
# items: ptr uint8): xcb_void_cookie_t
# proc xcb_poly_text_8_items*(R: ptr xcb_poly_text_8_request_t): ptr uint8
# proc xcb_poly_text_8_items_length*(R: ptr xcb_poly_text_8_request_t): cint
# proc xcb_poly_text_8_items_end*(R: ptr xcb_poly_text_8_request_t): xcb_generic_iterator_t
# proc xcb_poly_text_16_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_poly_text_16_checked*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; x: int16; y: int16;
# items_len: uint32; items: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_poly_text_16*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# gc: xcb_gcontext_t; x: int16; y: int16; items_len: uint32;
# items: ptr uint8): xcb_void_cookie_t
# proc xcb_poly_text_16_items*(R: ptr xcb_poly_text_16_request_t): ptr uint8
# proc xcb_poly_text_16_items_length*(R: ptr xcb_poly_text_16_request_t): cint
# proc xcb_poly_text_16_items_end*(R: ptr xcb_poly_text_16_request_t): xcb_generic_iterator_t
# proc xcb_image_text_8_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Draws text
# ##
# ## @param c The connection
# ## @param string_len The length of the \a string. Note that this parameter limited by 255 due to
# ## using 8 bits!
# ## @param drawable The drawable (Window or Pixmap) to draw text on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: plane-mask, foreground,
# ## background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ## @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ## @param string The string to draw. Only the first 255 characters are relevant due to the data
# ## type of \a string_len.
# ## @return A cookie
# ##
# ## Fills the destination rectangle with the background pixel from \a gc, then
# ## paints the text with the foreground pixel from \a gc. The upper-left corner of
# ## the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ## the height is font-ascent + font-descent. The overall-width, font-ascent and
# ## font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ## Note that using X core fonts is deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_image_text_8_checked*(c: ptr xcb_connection_t; string_len: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# x: int16; y: int16; string: cstring): xcb_void_cookie_t
# ## *
# ## @brief Draws text
# ##
# ## @param c The connection
# ## @param string_len The length of the \a string. Note that this parameter limited by 255 due to
# ## using 8 bits!
# ## @param drawable The drawable (Window or Pixmap) to draw text on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: plane-mask, foreground,
# ## background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ## @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ## @param string The string to draw. Only the first 255 characters are relevant due to the data
# ## type of \a string_len.
# ## @return A cookie
# ##
# ## Fills the destination rectangle with the background pixel from \a gc, then
# ## paints the text with the foreground pixel from \a gc. The upper-left corner of
# ## the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ## the height is font-ascent + font-descent. The overall-width, font-ascent and
# ## font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ## Note that using X core fonts is deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ##
# proc xcb_image_text_8*(c: ptr xcb_connection_t; string_len: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; x: int16;
# y: int16; string: cstring): xcb_void_cookie_t
# proc xcb_image_text_8_string*(R: ptr xcb_image_text_8_request_t): cstring
# proc xcb_image_text_8_string_length*(R: ptr xcb_image_text_8_request_t): cint
# proc xcb_image_text_8_string_end*(R: ptr xcb_image_text_8_request_t): xcb_generic_iterator_t
# proc xcb_image_text_16_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief Draws text
# ##
# ## @param c The connection
# ## @param string_len The length of the \a string in characters. Note that this parameter limited by
# ## 255 due to using 8 bits!
# ## @param drawable The drawable (Window or Pixmap) to draw text on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: plane-mask, foreground,
# ## background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ## @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ## @param string The string to draw. Only the first 255 characters are relevant due to the data
# ## type of \a string_len. Every character uses 2 bytes (hence the 16 in this
# ## request's name).
# ## @return A cookie
# ##
# ## Fills the destination rectangle with the background pixel from \a gc, then
# ## paints the text with the foreground pixel from \a gc. The upper-left corner of
# ## the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ## the height is font-ascent + font-descent. The overall-width, font-ascent and
# ## font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ## Note that using X core fonts is deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_image_text_16_checked*(c: ptr xcb_connection_t; string_len: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# x: int16; y: int16; string: ptr xcb_char2b_t): xcb_void_cookie_t
# ## *
# ## @brief Draws text
# ##
# ## @param c The connection
# ## @param string_len The length of the \a string in characters. Note that this parameter limited by
# ## 255 due to using 8 bits!
# ## @param drawable The drawable (Window or Pixmap) to draw text on.
# ## @param gc The graphics context to use.
# ## \n
# ## The following graphics context components are used: plane-mask, foreground,
# ## background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
# ## @param x The x coordinate of the first character, relative to the origin of \a drawable.
# ## @param y The y coordinate of the first character, relative to the origin of \a drawable.
# ## @param string The string to draw. Only the first 255 characters are relevant due to the data
# ## type of \a string_len. Every character uses 2 bytes (hence the 16 in this
# ## request's name).
# ## @return A cookie
# ##
# ## Fills the destination rectangle with the background pixel from \a gc, then
# ## paints the text with the foreground pixel from \a gc. The upper-left corner of
# ## the filled rectangle is at [x, y - font-ascent]. The width is overall-width,
# ## the height is font-ascent + font-descent. The overall-width, font-ascent and
# ## font-descent are as returned by `xcb_query_text_extents` (TODO).
# ##
# ## Note that using X core fonts is deprecated (but still supported) in favor of
# ## client-side rendering using Xft.
# ##
# ##
# proc xcb_image_text_16*(c: ptr xcb_connection_t; string_len: uint8;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; x: int16;
# y: int16; string: ptr xcb_char2b_t): xcb_void_cookie_t
# proc xcb_image_text_16_string*(R: ptr xcb_image_text_16_request_t): ptr xcb_char2b_t
# proc xcb_image_text_16_string_length*(R: ptr xcb_image_text_16_request_t): cint
# proc xcb_image_text_16_string_iterator*(R: ptr xcb_image_text_16_request_t): xcb_char2b_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_colormap_checked*(c: ptr xcb_connection_t; alloc: uint8;
# mid: xcb_colormap_t; window: xcb_window_t;
# visual: xcb_visualid_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_create_colormap*(c: ptr xcb_connection_t; alloc: uint8;
# mid: xcb_colormap_t; window: xcb_window_t;
# visual: xcb_visualid_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_free_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_free_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_copy_colormap_and_free_checked*(c: ptr xcb_connection_t;
# mid: xcb_colormap_t;
# src_cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_copy_colormap_and_free*(c: ptr xcb_connection_t; mid: xcb_colormap_t;
# src_cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_install_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_install_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_uninstall_colormap_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_uninstall_colormap*(c: ptr xcb_connection_t; cmap: xcb_colormap_t): xcb_void_cookie_t
# proc xcb_list_installed_colormaps_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_list_installed_colormaps*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_list_installed_colormaps_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_installed_colormaps_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_list_installed_colormaps_cookie_t
# proc xcb_list_installed_colormaps_cmaps*(R: ptr xcb_list_installed_colormaps_reply_t): ptr xcb_colormap_t
# proc xcb_list_installed_colormaps_cmaps_length*(
# R: ptr xcb_list_installed_colormaps_reply_t): cint
# proc xcb_list_installed_colormaps_cmaps_end*(
# R: ptr xcb_list_installed_colormaps_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_list_installed_colormaps_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_list_installed_colormaps_reply*(c: ptr xcb_connection_t; cookie: xcb_list_installed_colormaps_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_list_installed_colormaps_reply_t
# ## *
# ## @brief Allocate a color
# ##
# ## @param c The connection
# ## @param cmap TODO
# ## @param red The red value of your color.
# ## @param green The green value of your color.
# ## @param blue The blue value of your color.
# ## @return A cookie
# ##
# ## Allocates a read-only colormap entry corresponding to the closest RGB value
# ## supported by the hardware. If you are using TrueColor, you can take a shortcut
# ## and directly calculate the color pixel value to avoid the round trip. But, for
# ## example, on 16-bit color setups (VNC), you can easily get the closest supported
# ## RGB value to the RGB value you are specifying.
# ##
# ##
# proc xcb_alloc_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t; red: uint16;
# green: uint16; blue: uint16): xcb_alloc_color_cookie_t
# ## *
# ## @brief Allocate a color
# ##
# ## @param c The connection
# ## @param cmap TODO
# ## @param red The red value of your color.
# ## @param green The green value of your color.
# ## @param blue The blue value of your color.
# ## @return A cookie
# ##
# ## Allocates a read-only colormap entry corresponding to the closest RGB value
# ## supported by the hardware. If you are using TrueColor, you can take a shortcut
# ## and directly calculate the color pixel value to avoid the round trip. But, for
# ## example, on 16-bit color setups (VNC), you can easily get the closest supported
# ## RGB value to the RGB value you are specifying.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_alloc_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# red: uint16; green: uint16; blue: uint16): xcb_alloc_color_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_alloc_color_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_alloc_color_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_reply_t
# proc xcb_alloc_named_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_alloc_named_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# name_len: uint16; name: cstring): xcb_alloc_named_color_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_alloc_named_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# name_len: uint16; name: cstring): xcb_alloc_named_color_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_alloc_named_color_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_alloc_named_color_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_named_color_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_named_color_reply_t
# proc xcb_alloc_color_cells_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_alloc_color_cells*(c: ptr xcb_connection_t; contiguous: uint8;
# cmap: xcb_colormap_t; colors: uint16; planes: uint16): xcb_alloc_color_cells_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_alloc_color_cells_unchecked*(c: ptr xcb_connection_t; contiguous: uint8;
# cmap: xcb_colormap_t; colors: uint16;
# planes: uint16): xcb_alloc_color_cells_cookie_t
# proc xcb_alloc_color_cells_pixels*(R: ptr xcb_alloc_color_cells_reply_t): ptr uint32
# proc xcb_alloc_color_cells_pixels_length*(R: ptr xcb_alloc_color_cells_reply_t): cint
# proc xcb_alloc_color_cells_pixels_end*(R: ptr xcb_alloc_color_cells_reply_t): xcb_generic_iterator_t
# proc xcb_alloc_color_cells_masks*(R: ptr xcb_alloc_color_cells_reply_t): ptr uint32
# proc xcb_alloc_color_cells_masks_length*(R: ptr xcb_alloc_color_cells_reply_t): cint
# proc xcb_alloc_color_cells_masks_end*(R: ptr xcb_alloc_color_cells_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_alloc_color_cells_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_alloc_color_cells_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_cells_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_cells_reply_t
# proc xcb_alloc_color_planes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_alloc_color_planes*(c: ptr xcb_connection_t; contiguous: uint8;
# cmap: xcb_colormap_t; colors: uint16; reds: uint16;
# greens: uint16; blues: uint16): xcb_alloc_color_planes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_alloc_color_planes_unchecked*(c: ptr xcb_connection_t; contiguous: uint8;
# cmap: xcb_colormap_t; colors: uint16;
# reds: uint16; greens: uint16;
# blues: uint16): xcb_alloc_color_planes_cookie_t
# proc xcb_alloc_color_planes_pixels*(R: ptr xcb_alloc_color_planes_reply_t): ptr uint32
# proc xcb_alloc_color_planes_pixels_length*(R: ptr xcb_alloc_color_planes_reply_t): cint
# proc xcb_alloc_color_planes_pixels_end*(R: ptr xcb_alloc_color_planes_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_alloc_color_planes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_alloc_color_planes_reply*(c: ptr xcb_connection_t; cookie: xcb_alloc_color_planes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_alloc_color_planes_reply_t
# proc xcb_free_colors_sizeof*(_buffer: pointer; pixels_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_free_colors_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# plane_mask: uint32; pixels_len: uint32;
# pixels: ptr uint32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_free_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# plane_mask: uint32; pixels_len: uint32;
# pixels: ptr uint32): xcb_void_cookie_t
# proc xcb_free_colors_pixels*(R: ptr xcb_free_colors_request_t): ptr uint32
# proc xcb_free_colors_pixels_length*(R: ptr xcb_free_colors_request_t): cint
# proc xcb_free_colors_pixels_end*(R: ptr xcb_free_colors_request_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_coloritem_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_coloritem_t)
# ##
# proc xcb_coloritem_next*(i: ptr xcb_coloritem_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_coloritem_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_coloritem_end*(i: xcb_coloritem_iterator_t): xcb_generic_iterator_t
# proc xcb_store_colors_sizeof*(_buffer: pointer; items_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_store_colors_checked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# items_len: uint32; items: ptr xcb_coloritem_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_store_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# items_len: uint32; items: ptr xcb_coloritem_t): xcb_void_cookie_t
# proc xcb_store_colors_items*(R: ptr xcb_store_colors_request_t): ptr xcb_coloritem_t
# proc xcb_store_colors_items_length*(R: ptr xcb_store_colors_request_t): cint
# proc xcb_store_colors_items_iterator*(R: ptr xcb_store_colors_request_t): xcb_coloritem_iterator_t
# proc xcb_store_named_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_store_named_color_checked*(c: ptr xcb_connection_t; flags: uint8;
# cmap: xcb_colormap_t; pixel: uint32;
# name_len: uint16; name: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_store_named_color*(c: ptr xcb_connection_t; flags: uint8;
# cmap: xcb_colormap_t; pixel: uint32;
# name_len: uint16; name: cstring): xcb_void_cookie_t
# proc xcb_store_named_color_name*(R: ptr xcb_store_named_color_request_t): cstring
# proc xcb_store_named_color_name_length*(R: ptr xcb_store_named_color_request_t): cint
# proc xcb_store_named_color_name_end*(R: ptr xcb_store_named_color_request_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_rgb_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_rgb_t)
# ##
# proc xcb_rgb_next*(i: ptr xcb_rgb_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_rgb_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_rgb_end*(i: xcb_rgb_iterator_t): xcb_generic_iterator_t
# proc xcb_query_colors_sizeof*(_buffer: pointer; pixels_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_query_colors*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# pixels_len: uint32; pixels: ptr uint32): xcb_query_colors_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_colors_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# pixels_len: uint32; pixels: ptr uint32): xcb_query_colors_cookie_t
# proc xcb_query_colors_colors*(R: ptr xcb_query_colors_reply_t): ptr xcb_rgb_t
# proc xcb_query_colors_colors_length*(R: ptr xcb_query_colors_reply_t): cint
# proc xcb_query_colors_colors_iterator*(R: ptr xcb_query_colors_reply_t): xcb_rgb_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_colors_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_colors_reply*(c: ptr xcb_connection_t; cookie: xcb_query_colors_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_colors_reply_t
# proc xcb_lookup_color_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_lookup_color*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# name_len: uint16; name: cstring): xcb_lookup_color_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_lookup_color_unchecked*(c: ptr xcb_connection_t; cmap: xcb_colormap_t;
# name_len: uint16; name: cstring): xcb_lookup_color_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_lookup_color_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_lookup_color_reply*(c: ptr xcb_connection_t; cookie: xcb_lookup_color_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_lookup_color_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source: xcb_pixmap_t; mask: xcb_pixmap_t;
# fore_red: uint16; fore_green: uint16;
# fore_blue: uint16; back_red: uint16;
# back_green: uint16; back_blue: uint16;
# x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_create_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source: xcb_pixmap_t; mask: xcb_pixmap_t; fore_red: uint16;
# fore_green: uint16; fore_blue: uint16;
# back_red: uint16; back_green: uint16;
# back_blue: uint16; x: uint16; y: uint16): xcb_void_cookie_t
# ## *
# ## @brief create cursor
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
# ## @param source_font In which font to look for the cursor glyph.
# ## @param mask_font In which font to look for the mask glyph.
# ## @param source_char The glyph of \a source_font to use.
# ## @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
# ## which source pixels are displayed. All pixels which are set to 0 are not
# ## displayed.
# ## @param fore_red The red value of the foreground color.
# ## @param fore_green The green value of the foreground color.
# ## @param fore_blue The blue value of the foreground color.
# ## @param back_red The red value of the background color.
# ## @param back_green The green value of the background color.
# ## @param back_blue The blue value of the background color.
# ## @return A cookie
# ##
# ## Creates a cursor from a font glyph. X provides a set of standard cursor shapes
# ## in a special font named cursor. Applications are encouraged to use this
# ## interface for their cursors because the font can be customized for the
# ## individual display type.
# ##
# ## All pixels which are set to 1 in the source will use the foreground color (as
# ## specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
# ## will use the background color (as specified by \a back_red, \a back_green and
# ## \a back_blue).
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_create_glyph_cursor_checked*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source_font: xcb_font_t;
# mask_font: xcb_font_t; source_char: uint16;
# mask_char: uint16; fore_red: uint16;
# fore_green: uint16; fore_blue: uint16;
# back_red: uint16; back_green: uint16;
# back_blue: uint16): xcb_void_cookie_t
# ## *
# ## @brief create cursor
# ##
# ## @param c The connection
# ## @param cid The ID with which you will refer to the cursor, created by `xcb_generate_id`.
# ## @param source_font In which font to look for the cursor glyph.
# ## @param mask_font In which font to look for the mask glyph.
# ## @param source_char The glyph of \a source_font to use.
# ## @param mask_char The glyph of \a mask_font to use as a mask: Pixels which are set to 1 define
# ## which source pixels are displayed. All pixels which are set to 0 are not
# ## displayed.
# ## @param fore_red The red value of the foreground color.
# ## @param fore_green The green value of the foreground color.
# ## @param fore_blue The blue value of the foreground color.
# ## @param back_red The red value of the background color.
# ## @param back_green The green value of the background color.
# ## @param back_blue The blue value of the background color.
# ## @return A cookie
# ##
# ## Creates a cursor from a font glyph. X provides a set of standard cursor shapes
# ## in a special font named cursor. Applications are encouraged to use this
# ## interface for their cursors because the font can be customized for the
# ## individual display type.
# ##
# ## All pixels which are set to 1 in the source will use the foreground color (as
# ## specified by \a fore_red, \a fore_green and \a fore_blue). All pixels set to 0
# ## will use the background color (as specified by \a back_red, \a back_green and
# ## \a back_blue).
# ##
# ##
# proc xcb_create_glyph_cursor*(c: ptr xcb_connection_t; cid: xcb_cursor_t;
# source_font: xcb_font_t; mask_font: xcb_font_t;
# source_char: uint16; mask_char: uint16;
# fore_red: uint16; fore_green: uint16;
# fore_blue: uint16; back_red: uint16;
# back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ## @brief Deletes a cursor
# ##
# ## @param c The connection
# ## @param cursor The cursor to destroy.
# ## @return A cookie
# ##
# ## Deletes the association between the cursor resource ID and the specified
# ## cursor. The cursor is freed when no other resource references it.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_free_cursor_checked*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ## @brief Deletes a cursor
# ##
# ## @param c The connection
# ## @param cursor The cursor to destroy.
# ## @return A cookie
# ##
# ## Deletes the association between the cursor resource ID and the specified
# ## cursor. The cursor is freed when no other resource references it.
# ##
# ##
# proc xcb_free_cursor*(c: ptr xcb_connection_t; cursor: xcb_cursor_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_recolor_cursor_checked*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
# fore_red: uint16; fore_green: uint16;
# fore_blue: uint16; back_red: uint16;
# back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_recolor_cursor*(c: ptr xcb_connection_t; cursor: xcb_cursor_t;
# fore_red: uint16; fore_green: uint16;
# fore_blue: uint16; back_red: uint16;
# back_green: uint16; back_blue: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_query_best_size*(c: ptr xcb_connection_t; _class: uint8;
# drawable: xcb_drawable_t; width: uint16; height: uint16): xcb_query_best_size_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_best_size_unchecked*(c: ptr xcb_connection_t; _class: uint8;
# drawable: xcb_drawable_t; width: uint16;
# height: uint16): xcb_query_best_size_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_best_size_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_best_size_reply*(c: ptr xcb_connection_t; cookie: xcb_query_best_size_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_best_size_reply_t
# proc xcb_query_extension_sizeof*(_buffer: pointer): cint
# ## *
# ## @brief check if extension is present
# ##
# ## @param c The connection
# ## @param name_len The length of \a name in bytes.
# ## @param name The name of the extension to query, for example "RANDR". This is case
# ## sensitive!
# ## @return A cookie
# ##
# ## Determines if the specified extension is present on this X11 server.
# ##
# ## Every extension has a unique `major_opcode` to identify requests, the minor
# ## opcodes and request formats are extension-specific. If the extension provides
# ## events and errors, the `first_event` and `first_error` fields in the reply are
# ## set accordingly.
# ##
# ## There should rarely be a need to use this request directly, XCB provides the
# ## `xcb_get_extension_data` function instead.
# ##
# ##
# proc xcb_query_extension*(c: ptr xcb_connection_t; name_len: uint16; name: cstring): xcb_query_extension_cookie_t
# ## *
# ## @brief check if extension is present
# ##
# ## @param c The connection
# ## @param name_len The length of \a name in bytes.
# ## @param name The name of the extension to query, for example "RANDR". This is case
# ## sensitive!
# ## @return A cookie
# ##
# ## Determines if the specified extension is present on this X11 server.
# ##
# ## Every extension has a unique `major_opcode` to identify requests, the minor
# ## opcodes and request formats are extension-specific. If the extension provides
# ## events and errors, the `first_event` and `first_error` fields in the reply are
# ## set accordingly.
# ##
# ## There should rarely be a need to use this request directly, XCB provides the
# ## `xcb_get_extension_data` function instead.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_query_extension_unchecked*(c: ptr xcb_connection_t; name_len: uint16;
# name: cstring): xcb_query_extension_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_query_extension_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_query_extension_reply*(c: ptr xcb_connection_t; cookie: xcb_query_extension_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_query_extension_reply_t
# proc xcb_list_extensions_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_list_extensions*(c: ptr xcb_connection_t): xcb_list_extensions_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_extensions_unchecked*(c: ptr xcb_connection_t): xcb_list_extensions_cookie_t
# proc xcb_list_extensions_names_length*(R: ptr xcb_list_extensions_reply_t): cint
# proc xcb_list_extensions_names_iterator*(R: ptr xcb_list_extensions_reply_t): xcb_str_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_list_extensions_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_list_extensions_reply*(c: ptr xcb_connection_t; cookie: xcb_list_extensions_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_list_extensions_reply_t
# proc xcb_change_keyboard_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_keyboard_mapping_checked*(c: ptr xcb_connection_t;
# keycode_count: uint8; first_keycode: xcb_keycode_t;
# keysyms_per_keycode: uint8; keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_keyboard_mapping*(c: ptr xcb_connection_t; keycode_count: uint8;
# first_keycode: xcb_keycode_t;
# keysyms_per_keycode: uint8;
# keysyms: ptr xcb_keysym_t): xcb_void_cookie_t
# proc xcb_change_keyboard_mapping_keysyms*(
# R: ptr xcb_change_keyboard_mapping_request_t): ptr xcb_keysym_t
# proc xcb_change_keyboard_mapping_keysyms_length*(
# R: ptr xcb_change_keyboard_mapping_request_t): cint
# proc xcb_change_keyboard_mapping_keysyms_end*(
# R: ptr xcb_change_keyboard_mapping_request_t): xcb_generic_iterator_t
# proc xcb_get_keyboard_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_keyboard_mapping_unchecked*(c: ptr xcb_connection_t;
# first_keycode: xcb_keycode_t;
# count: uint8): xcb_get_keyboard_mapping_cookie_t
# proc xcb_get_keyboard_mapping_keysyms*(R: ptr xcb_get_keyboard_mapping_reply_t): ptr xcb_keysym_t
# proc xcb_get_keyboard_mapping_keysyms_length*(
# R: ptr xcb_get_keyboard_mapping_reply_t): cint
# proc xcb_get_keyboard_mapping_keysyms_end*(
# R: ptr xcb_get_keyboard_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_keyboard_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_change_keyboard_control_value_list_serialize*(_buffer: ptr pointer;
# value_mask: uint32; _aux: ptr xcb_change_keyboard_control_value_list_t): cint
# proc xcb_change_keyboard_control_value_list_unpack*(_buffer: pointer;
# value_mask: uint32; _aux: ptr xcb_change_keyboard_control_value_list_t): cint
# proc xcb_change_keyboard_control_value_list_sizeof*(_buffer: pointer;
# value_mask: uint32): cint
# proc xcb_change_keyboard_control_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_keyboard_control_checked*(c: ptr xcb_connection_t;
# value_mask: uint32; value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_keyboard_control*(c: ptr xcb_connection_t; value_mask: uint32;
# value_list: pointer): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_keyboard_control_aux_checked*(c: ptr xcb_connection_t;
# value_mask: uint32; value_list: ptr xcb_change_keyboard_control_value_list_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_keyboard_control_aux*(c: ptr xcb_connection_t; value_mask: uint32;
# value_list: ptr xcb_change_keyboard_control_value_list_t): xcb_void_cookie_t
# proc xcb_change_keyboard_control_value_list*(
# R: ptr xcb_change_keyboard_control_request_t): pointer
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_keyboard_control*(c: ptr xcb_connection_t): xcb_get_keyboard_control_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_keyboard_control_unchecked*(c: ptr xcb_connection_t): xcb_get_keyboard_control_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_keyboard_control_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_keyboard_control_reply*(c: ptr xcb_connection_t; cookie: xcb_get_keyboard_control_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_keyboard_control_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_bell_checked*(c: ptr xcb_connection_t; percent: int8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_bell*(c: ptr xcb_connection_t; percent: int8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_pointer_control_checked*(c: ptr xcb_connection_t;
# acceleration_numerator: int16;
# acceleration_denominator: int16;
# threshold: int16;
# do_acceleration: uint8;
# do_threshold: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_pointer_control*(c: ptr xcb_connection_t;
# acceleration_numerator: int16;
# acceleration_denominator: int16;
# threshold: int16; do_acceleration: uint8;
# do_threshold: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_pointer_control*(c: ptr xcb_connection_t): xcb_get_pointer_control_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_pointer_control_unchecked*(c: ptr xcb_connection_t): xcb_get_pointer_control_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_pointer_control_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_pointer_control_reply*(c: ptr xcb_connection_t; cookie: xcb_get_pointer_control_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_pointer_control_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_screen_saver_checked*(c: ptr xcb_connection_t; timeout: int16;
# interval: int16; prefer_blanking: uint8;
# allow_exposures: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_screen_saver*(c: ptr xcb_connection_t; timeout: int16;
# interval: int16; prefer_blanking: uint8;
# allow_exposures: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_screen_saver*(c: ptr xcb_connection_t): xcb_get_screen_saver_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_screen_saver_unchecked*(c: ptr xcb_connection_t): xcb_get_screen_saver_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_screen_saver_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_screen_saver_reply*(c: ptr xcb_connection_t; cookie: xcb_get_screen_saver_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_screen_saver_reply_t
# proc xcb_change_hosts_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_change_hosts_checked*(c: ptr xcb_connection_t; mode: uint8;
# family: uint8; address_len: uint16;
# address: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_change_hosts*(c: ptr xcb_connection_t; mode: uint8; family: uint8;
# address_len: uint16; address: ptr uint8): xcb_void_cookie_t
# proc xcb_change_hosts_address*(R: ptr xcb_change_hosts_request_t): ptr uint8
# proc xcb_change_hosts_address_length*(R: ptr xcb_change_hosts_request_t): cint
# proc xcb_change_hosts_address_end*(R: ptr xcb_change_hosts_request_t): xcb_generic_iterator_t
# proc xcb_host_sizeof*(_buffer: pointer): cint
# proc xcb_host_address*(R: ptr xcb_host_t): ptr uint8
# proc xcb_host_address_length*(R: ptr xcb_host_t): cint
# proc xcb_host_address_end*(R: ptr xcb_host_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_host_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_host_t)
# ##
# proc xcb_host_next*(i: ptr xcb_host_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_host_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_host_end*(i: xcb_host_iterator_t): xcb_generic_iterator_t
# proc xcb_list_hosts_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_list_hosts*(c: ptr xcb_connection_t): xcb_list_hosts_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_list_hosts_unchecked*(c: ptr xcb_connection_t): xcb_list_hosts_cookie_t
# proc xcb_list_hosts_hosts_length*(R: ptr xcb_list_hosts_reply_t): cint
# proc xcb_list_hosts_hosts_iterator*(R: ptr xcb_list_hosts_reply_t): xcb_host_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_list_hosts_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_list_hosts_reply*(c: ptr xcb_connection_t; cookie: xcb_list_hosts_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_list_hosts_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_access_control_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_access_control*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_set_close_down_mode_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_close_down_mode*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ## @brief kills a client
# ##
# ## @param c The connection
# ## @param resource Any resource belonging to the client (for example a Window), used to identify
# ## the client connection.
# ## \n
# ## The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
# ## that have terminated in `RetainTemporary` (TODO) are destroyed.
# ## @return A cookie
# ##
# ## Forces a close down of the client that created the specified \a resource.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_kill_client_checked*(c: ptr xcb_connection_t; resource: uint32): xcb_void_cookie_t
# ## *
# ## @brief kills a client
# ##
# ## @param c The connection
# ## @param resource Any resource belonging to the client (for example a Window), used to identify
# ## the client connection.
# ## \n
# ## The special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients
# ## that have terminated in `RetainTemporary` (TODO) are destroyed.
# ## @return A cookie
# ##
# ## Forces a close down of the client that created the specified \a resource.
# ##
# ##
# proc xcb_kill_client*(c: ptr xcb_connection_t; resource: uint32): xcb_void_cookie_t
# proc xcb_rotate_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_rotate_properties_checked*(c: ptr xcb_connection_t; window: xcb_window_t;
# atoms_len: uint16; delta: int16;
# atoms: ptr xcb_atom_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_rotate_properties*(c: ptr xcb_connection_t; window: xcb_window_t;
# atoms_len: uint16; delta: int16;
# atoms: ptr xcb_atom_t): xcb_void_cookie_t
# proc xcb_rotate_properties_atoms*(R: ptr xcb_rotate_properties_request_t): ptr xcb_atom_t
# proc xcb_rotate_properties_atoms_length*(R: ptr xcb_rotate_properties_request_t): cint
# proc xcb_rotate_properties_atoms_end*(R: ptr xcb_rotate_properties_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_force_screen_saver_checked*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_force_screen_saver*(c: ptr xcb_connection_t; mode: uint8): xcb_void_cookie_t
# proc xcb_set_pointer_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_pointer_mapping*(c: ptr xcb_connection_t; map_len: uint8;
# map: ptr uint8): xcb_set_pointer_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_set_pointer_mapping_unchecked*(c: ptr xcb_connection_t; map_len: uint8;
# map: ptr uint8): xcb_set_pointer_mapping_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_set_pointer_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_set_pointer_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_set_pointer_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_set_pointer_mapping_reply_t
# proc xcb_get_pointer_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_pointer_mapping*(c: ptr xcb_connection_t): xcb_get_pointer_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_pointer_mapping_unchecked*(c: ptr xcb_connection_t): xcb_get_pointer_mapping_cookie_t
# proc xcb_get_pointer_mapping_map*(R: ptr xcb_get_pointer_mapping_reply_t): ptr uint8
# proc xcb_get_pointer_mapping_map_length*(R: ptr xcb_get_pointer_mapping_reply_t): cint
# proc xcb_get_pointer_mapping_map_end*(R: ptr xcb_get_pointer_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_pointer_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_pointer_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_get_pointer_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_pointer_mapping_reply_t
# proc xcb_set_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_set_modifier_mapping*(c: ptr xcb_connection_t;
# keycodes_per_modifier: uint8;
# keycodes: ptr xcb_keycode_t): xcb_set_modifier_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_set_modifier_mapping_unchecked*(c: ptr xcb_connection_t;
# keycodes_per_modifier: uint8;
# keycodes: ptr xcb_keycode_t): xcb_set_modifier_mapping_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_set_modifier_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_set_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_set_modifier_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_set_modifier_mapping_reply_t
# proc xcb_get_modifier_mapping_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_get_modifier_mapping*(c: ptr xcb_connection_t): xcb_get_modifier_mapping_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_get_modifier_mapping_unchecked*(c: ptr xcb_connection_t): xcb_get_modifier_mapping_cookie_t
# proc xcb_get_modifier_mapping_keycodes*(R: ptr xcb_get_modifier_mapping_reply_t): ptr xcb_keycode_t
# proc xcb_get_modifier_mapping_keycodes_length*(
# R: ptr xcb_get_modifier_mapping_reply_t): cint
# proc xcb_get_modifier_mapping_keycodes_end*(
# R: ptr xcb_get_modifier_mapping_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_get_modifier_mapping_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_get_modifier_mapping_reply*(c: ptr xcb_connection_t; cookie: xcb_get_modifier_mapping_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_get_modifier_mapping_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_no_operation_checked*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_no_operation*(c: ptr xcb_connection_t): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xselinux.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_SELinux_API XCB SELinux API
# ## @brief SELinux XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_SELINUX_MAJOR_VERSION* = 1
# XCB_SELINUX_MINOR_VERSION* = 0
# var xcb_selinux_id*: xcb_extension_t
# ## *
# ## @brief xcb_selinux_query_version_cookie_t
# ##
# type
# xcb_selinux_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_query_version.
# const
# XCB_SELINUX_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_selinux_query_version_request_t
# ##
# type
# xcb_selinux_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# client_major*: uint8
# client_minor*: uint8
# ## *
# ## @brief xcb_selinux_query_version_reply_t
# ##
# type
# xcb_selinux_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# server_major*: uint16
# server_minor*: uint16
# ## * Opcode for xcb_selinux_set_device_create_context.
# const
# XCB_SELINUX_SET_DEVICE_CREATE_CONTEXT* = 1
# ## *
# ## @brief xcb_selinux_set_device_create_context_request_t
# ##
# type
# xcb_selinux_set_device_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_device_create_context_cookie_t
# ##
# type
# xcb_selinux_get_device_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_device_create_context.
# const
# XCB_SELINUX_GET_DEVICE_CREATE_CONTEXT* = 2
# ## *
# ## @brief xcb_selinux_get_device_create_context_request_t
# ##
# type
# xcb_selinux_get_device_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_device_create_context_reply_t
# ##
# type
# xcb_selinux_get_device_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_selinux_set_device_context.
# const
# XCB_SELINUX_SET_DEVICE_CONTEXT* = 3
# ## *
# ## @brief xcb_selinux_set_device_context_request_t
# ##
# type
# xcb_selinux_set_device_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device*: uint32
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_device_context_cookie_t
# ##
# type
# xcb_selinux_get_device_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_device_context.
# const
# XCB_SELINUX_GET_DEVICE_CONTEXT* = 4
# ## *
# ## @brief xcb_selinux_get_device_context_request_t
# ##
# type
# xcb_selinux_get_device_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# device*: uint32
# ## *
# ## @brief xcb_selinux_get_device_context_reply_t
# ##
# type
# xcb_selinux_get_device_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_selinux_set_window_create_context.
# const
# XCB_SELINUX_SET_WINDOW_CREATE_CONTEXT* = 5
# ## *
# ## @brief xcb_selinux_set_window_create_context_request_t
# ##
# type
# xcb_selinux_set_window_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_window_create_context_cookie_t
# ##
# type
# xcb_selinux_get_window_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_window_create_context.
# const
# XCB_SELINUX_GET_WINDOW_CREATE_CONTEXT* = 6
# ## *
# ## @brief xcb_selinux_get_window_create_context_request_t
# ##
# type
# xcb_selinux_get_window_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_window_create_context_reply_t
# ##
# type
# xcb_selinux_get_window_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_window_context_cookie_t
# ##
# type
# xcb_selinux_get_window_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_window_context.
# const
# XCB_SELINUX_GET_WINDOW_CONTEXT* = 7
# ## *
# ## @brief xcb_selinux_get_window_context_request_t
# ##
# type
# xcb_selinux_get_window_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_selinux_get_window_context_reply_t
# ##
# type
# xcb_selinux_get_window_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_list_item_t
# ##
# type
# xcb_selinux_list_item_t* {.bycopy.} = object
# name*: xcb_atom_t
# object_context_len*: uint32
# data_context_len*: uint32
# ## *
# ## @brief xcb_selinux_list_item_iterator_t
# ##
# type
# xcb_selinux_list_item_iterator_t* {.bycopy.} = object
# data*: ptr xcb_selinux_list_item_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_selinux_set_property_create_context.
# const
# XCB_SELINUX_SET_PROPERTY_CREATE_CONTEXT* = 8
# ## *
# ## @brief xcb_selinux_set_property_create_context_request_t
# ##
# type
# xcb_selinux_set_property_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_property_create_context_cookie_t
# ##
# type
# xcb_selinux_get_property_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_property_create_context.
# const
# XCB_SELINUX_GET_PROPERTY_CREATE_CONTEXT* = 9
# ## *
# ## @brief xcb_selinux_get_property_create_context_request_t
# ##
# type
# xcb_selinux_get_property_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_property_create_context_reply_t
# ##
# type
# xcb_selinux_get_property_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_selinux_set_property_use_context.
# const
# XCB_SELINUX_SET_PROPERTY_USE_CONTEXT* = 10
# ## *
# ## @brief xcb_selinux_set_property_use_context_request_t
# ##
# type
# xcb_selinux_set_property_use_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_property_use_context_cookie_t
# ##
# type
# xcb_selinux_get_property_use_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_property_use_context.
# const
# XCB_SELINUX_GET_PROPERTY_USE_CONTEXT* = 11
# ## *
# ## @brief xcb_selinux_get_property_use_context_request_t
# ##
# type
# xcb_selinux_get_property_use_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_property_use_context_reply_t
# ##
# type
# xcb_selinux_get_property_use_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_property_context_cookie_t
# ##
# type
# xcb_selinux_get_property_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_property_context.
# const
# XCB_SELINUX_GET_PROPERTY_CONTEXT* = 12
# ## *
# ## @brief xcb_selinux_get_property_context_request_t
# ##
# type
# xcb_selinux_get_property_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# property*: xcb_atom_t
# ## *
# ## @brief xcb_selinux_get_property_context_reply_t
# ##
# type
# xcb_selinux_get_property_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_property_data_context_cookie_t
# ##
# type
# xcb_selinux_get_property_data_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_property_data_context.
# const
# XCB_SELINUX_GET_PROPERTY_DATA_CONTEXT* = 13
# ## *
# ## @brief xcb_selinux_get_property_data_context_request_t
# ##
# type
# xcb_selinux_get_property_data_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# property*: xcb_atom_t
# ## *
# ## @brief xcb_selinux_get_property_data_context_reply_t
# ##
# type
# xcb_selinux_get_property_data_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_list_properties_cookie_t
# ##
# type
# xcb_selinux_list_properties_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_list_properties.
# const
# XCB_SELINUX_LIST_PROPERTIES* = 14
# ## *
# ## @brief xcb_selinux_list_properties_request_t
# ##
# type
# xcb_selinux_list_properties_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_selinux_list_properties_reply_t
# ##
# type
# xcb_selinux_list_properties_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# properties_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_selinux_set_selection_create_context.
# const
# XCB_SELINUX_SET_SELECTION_CREATE_CONTEXT* = 15
# ## *
# ## @brief xcb_selinux_set_selection_create_context_request_t
# ##
# type
# xcb_selinux_set_selection_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_selection_create_context_cookie_t
# ##
# type
# xcb_selinux_get_selection_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_selection_create_context.
# const
# XCB_SELINUX_GET_SELECTION_CREATE_CONTEXT* = 16
# ## *
# ## @brief xcb_selinux_get_selection_create_context_request_t
# ##
# type
# xcb_selinux_get_selection_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_selection_create_context_reply_t
# ##
# type
# xcb_selinux_get_selection_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_selinux_set_selection_use_context.
# const
# XCB_SELINUX_SET_SELECTION_USE_CONTEXT* = 17
# ## *
# ## @brief xcb_selinux_set_selection_use_context_request_t
# ##
# type
# xcb_selinux_set_selection_use_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_len*: uint32
# ## *
# ## @brief xcb_selinux_get_selection_use_context_cookie_t
# ##
# type
# xcb_selinux_get_selection_use_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_selection_use_context.
# const
# XCB_SELINUX_GET_SELECTION_USE_CONTEXT* = 18
# ## *
# ## @brief xcb_selinux_get_selection_use_context_request_t
# ##
# type
# xcb_selinux_get_selection_use_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_get_selection_use_context_reply_t
# ##
# type
# xcb_selinux_get_selection_use_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_selection_context_cookie_t
# ##
# type
# xcb_selinux_get_selection_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_selection_context.
# const
# XCB_SELINUX_GET_SELECTION_CONTEXT* = 19
# ## *
# ## @brief xcb_selinux_get_selection_context_request_t
# ##
# type
# xcb_selinux_get_selection_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# selection*: xcb_atom_t
# ## *
# ## @brief xcb_selinux_get_selection_context_reply_t
# ##
# type
# xcb_selinux_get_selection_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_selection_data_context_cookie_t
# ##
# type
# xcb_selinux_get_selection_data_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_selection_data_context.
# const
# XCB_SELINUX_GET_SELECTION_DATA_CONTEXT* = 20
# ## *
# ## @brief xcb_selinux_get_selection_data_context_request_t
# ##
# type
# xcb_selinux_get_selection_data_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# selection*: xcb_atom_t
# ## *
# ## @brief xcb_selinux_get_selection_data_context_reply_t
# ##
# type
# xcb_selinux_get_selection_data_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_list_selections_cookie_t
# ##
# type
# xcb_selinux_list_selections_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_list_selections.
# const
# XCB_SELINUX_LIST_SELECTIONS* = 21
# ## *
# ## @brief xcb_selinux_list_selections_request_t
# ##
# type
# xcb_selinux_list_selections_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_selinux_list_selections_reply_t
# ##
# type
# xcb_selinux_list_selections_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# selections_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_selinux_get_client_context_cookie_t
# ##
# type
# xcb_selinux_get_client_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_selinux_get_client_context.
# const
# XCB_SELINUX_GET_CLIENT_CONTEXT* = 22
# ## *
# ## @brief xcb_selinux_get_client_context_request_t
# ##
# type
# xcb_selinux_get_client_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# resource*: uint32
# ## *
# ## @brief xcb_selinux_get_client_context_reply_t
# ##
# type
# xcb_selinux_get_client_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# context_len*: uint32
# pad1*: array[20, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_query_version*(c: ptr xcb_connection_t; client_major: uint8;
# client_minor: uint8): xcb_selinux_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_query_version_unchecked*(c: ptr xcb_connection_t;
# client_major: uint8; client_minor: uint8): xcb_selinux_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_query_version_reply_t
# proc xcb_selinux_set_device_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_device_create_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_device_create_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_device_create_context_context*(
# R: ptr xcb_selinux_set_device_create_context_request_t): cstring
# proc xcb_selinux_set_device_create_context_context_length*(
# R: ptr xcb_selinux_set_device_create_context_request_t): cint
# proc xcb_selinux_set_device_create_context_context_end*(
# R: ptr xcb_selinux_set_device_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_device_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_device_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_device_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_device_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_device_create_context_cookie_t
# proc xcb_selinux_get_device_create_context_context*(
# R: ptr xcb_selinux_get_device_create_context_reply_t): cstring
# proc xcb_selinux_get_device_create_context_context_length*(
# R: ptr xcb_selinux_get_device_create_context_reply_t): cint
# proc xcb_selinux_get_device_create_context_context_end*(
# R: ptr xcb_selinux_get_device_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_device_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_device_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_device_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_device_create_context_reply_t
# proc xcb_selinux_set_device_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_device_context_checked*(c: ptr xcb_connection_t;
# device: uint32; context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_device_context*(c: ptr xcb_connection_t; device: uint32;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_device_context_context*(
# R: ptr xcb_selinux_set_device_context_request_t): cstring
# proc xcb_selinux_set_device_context_context_length*(
# R: ptr xcb_selinux_set_device_context_request_t): cint
# proc xcb_selinux_set_device_context_context_end*(
# R: ptr xcb_selinux_set_device_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_device_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_device_context*(c: ptr xcb_connection_t; device: uint32): xcb_selinux_get_device_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_device_context_unchecked*(c: ptr xcb_connection_t;
# device: uint32): xcb_selinux_get_device_context_cookie_t
# proc xcb_selinux_get_device_context_context*(
# R: ptr xcb_selinux_get_device_context_reply_t): cstring
# proc xcb_selinux_get_device_context_context_length*(
# R: ptr xcb_selinux_get_device_context_reply_t): cint
# proc xcb_selinux_get_device_context_context_end*(
# R: ptr xcb_selinux_get_device_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_device_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_device_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_device_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_device_context_reply_t
# proc xcb_selinux_set_window_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_window_create_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_window_create_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_window_create_context_context*(
# R: ptr xcb_selinux_set_window_create_context_request_t): cstring
# proc xcb_selinux_set_window_create_context_context_length*(
# R: ptr xcb_selinux_set_window_create_context_request_t): cint
# proc xcb_selinux_set_window_create_context_context_end*(
# R: ptr xcb_selinux_set_window_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_window_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_window_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_window_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_window_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_window_create_context_cookie_t
# proc xcb_selinux_get_window_create_context_context*(
# R: ptr xcb_selinux_get_window_create_context_reply_t): cstring
# proc xcb_selinux_get_window_create_context_context_length*(
# R: ptr xcb_selinux_get_window_create_context_reply_t): cint
# proc xcb_selinux_get_window_create_context_context_end*(
# R: ptr xcb_selinux_get_window_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_window_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_window_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_window_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_window_create_context_reply_t
# proc xcb_selinux_get_window_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_window_context*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_selinux_get_window_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_window_context_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_selinux_get_window_context_cookie_t
# proc xcb_selinux_get_window_context_context*(
# R: ptr xcb_selinux_get_window_context_reply_t): cstring
# proc xcb_selinux_get_window_context_context_length*(
# R: ptr xcb_selinux_get_window_context_reply_t): cint
# proc xcb_selinux_get_window_context_context_end*(
# R: ptr xcb_selinux_get_window_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_window_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_window_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_window_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_window_context_reply_t
# proc xcb_selinux_list_item_sizeof*(_buffer: pointer): cint
# proc xcb_selinux_list_item_object_context*(R: ptr xcb_selinux_list_item_t): cstring
# proc xcb_selinux_list_item_object_context_length*(R: ptr xcb_selinux_list_item_t): cint
# proc xcb_selinux_list_item_object_context_end*(R: ptr xcb_selinux_list_item_t): xcb_generic_iterator_t
# proc xcb_selinux_list_item_data_context*(R: ptr xcb_selinux_list_item_t): cstring
# proc xcb_selinux_list_item_data_context_length*(R: ptr xcb_selinux_list_item_t): cint
# proc xcb_selinux_list_item_data_context_end*(R: ptr xcb_selinux_list_item_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_selinux_list_item_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_selinux_list_item_t)
# ##
# proc xcb_selinux_list_item_next*(i: ptr xcb_selinux_list_item_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_selinux_list_item_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_selinux_list_item_end*(i: xcb_selinux_list_item_iterator_t): xcb_generic_iterator_t
# proc xcb_selinux_set_property_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_property_create_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_property_create_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_property_create_context_context*(
# R: ptr xcb_selinux_set_property_create_context_request_t): cstring
# proc xcb_selinux_set_property_create_context_context_length*(
# R: ptr xcb_selinux_set_property_create_context_request_t): cint
# proc xcb_selinux_set_property_create_context_context_end*(
# R: ptr xcb_selinux_set_property_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_property_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_property_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_property_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_property_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_property_create_context_cookie_t
# proc xcb_selinux_get_property_create_context_context*(
# R: ptr xcb_selinux_get_property_create_context_reply_t): cstring
# proc xcb_selinux_get_property_create_context_context_length*(
# R: ptr xcb_selinux_get_property_create_context_reply_t): cint
# proc xcb_selinux_get_property_create_context_context_end*(
# R: ptr xcb_selinux_get_property_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_property_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_property_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_create_context_reply_t
# proc xcb_selinux_set_property_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_property_use_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_property_use_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_property_use_context_context*(
# R: ptr xcb_selinux_set_property_use_context_request_t): cstring
# proc xcb_selinux_set_property_use_context_context_length*(
# R: ptr xcb_selinux_set_property_use_context_request_t): cint
# proc xcb_selinux_set_property_use_context_context_end*(
# R: ptr xcb_selinux_set_property_use_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_property_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_property_use_context*(c: ptr xcb_connection_t): xcb_selinux_get_property_use_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_property_use_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_property_use_context_cookie_t
# proc xcb_selinux_get_property_use_context_context*(
# R: ptr xcb_selinux_get_property_use_context_reply_t): cstring
# proc xcb_selinux_get_property_use_context_context_length*(
# R: ptr xcb_selinux_get_property_use_context_reply_t): cint
# proc xcb_selinux_get_property_use_context_context_end*(
# R: ptr xcb_selinux_get_property_use_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_property_use_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_property_use_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_use_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_use_context_reply_t
# proc xcb_selinux_get_property_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_property_context*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_property_context_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_context_cookie_t
# proc xcb_selinux_get_property_context_context*(
# R: ptr xcb_selinux_get_property_context_reply_t): cstring
# proc xcb_selinux_get_property_context_context_length*(
# R: ptr xcb_selinux_get_property_context_reply_t): cint
# proc xcb_selinux_get_property_context_context_end*(
# R: ptr xcb_selinux_get_property_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_property_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_property_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_context_reply_t
# proc xcb_selinux_get_property_data_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_property_data_context*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_data_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_property_data_context_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; property: xcb_atom_t): xcb_selinux_get_property_data_context_cookie_t
# proc xcb_selinux_get_property_data_context_context*(
# R: ptr xcb_selinux_get_property_data_context_reply_t): cstring
# proc xcb_selinux_get_property_data_context_context_length*(
# R: ptr xcb_selinux_get_property_data_context_reply_t): cint
# proc xcb_selinux_get_property_data_context_context_end*(
# R: ptr xcb_selinux_get_property_data_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_property_data_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_property_data_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_property_data_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_property_data_context_reply_t
# proc xcb_selinux_list_properties_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_list_properties*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_selinux_list_properties_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_list_properties_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t): xcb_selinux_list_properties_cookie_t
# proc xcb_selinux_list_properties_properties_length*(
# R: ptr xcb_selinux_list_properties_reply_t): cint
# proc xcb_selinux_list_properties_properties_iterator*(
# R: ptr xcb_selinux_list_properties_reply_t): xcb_selinux_list_item_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_list_properties_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_list_properties_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_list_properties_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_list_properties_reply_t
# proc xcb_selinux_set_selection_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_selection_create_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_selection_create_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_selection_create_context_context*(
# R: ptr xcb_selinux_set_selection_create_context_request_t): cstring
# proc xcb_selinux_set_selection_create_context_context_length*(
# R: ptr xcb_selinux_set_selection_create_context_request_t): cint
# proc xcb_selinux_set_selection_create_context_context_end*(
# R: ptr xcb_selinux_set_selection_create_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_selection_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_selection_create_context*(c: ptr xcb_connection_t): xcb_selinux_get_selection_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_selection_create_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_selection_create_context_cookie_t
# proc xcb_selinux_get_selection_create_context_context*(
# R: ptr xcb_selinux_get_selection_create_context_reply_t): cstring
# proc xcb_selinux_get_selection_create_context_context_length*(
# R: ptr xcb_selinux_get_selection_create_context_reply_t): cint
# proc xcb_selinux_get_selection_create_context_context_end*(
# R: ptr xcb_selinux_get_selection_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_selection_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_selection_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_create_context_reply_t
# proc xcb_selinux_set_selection_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_selinux_set_selection_use_context_checked*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_set_selection_use_context*(c: ptr xcb_connection_t;
# context_len: uint32; context: cstring): xcb_void_cookie_t
# proc xcb_selinux_set_selection_use_context_context*(
# R: ptr xcb_selinux_set_selection_use_context_request_t): cstring
# proc xcb_selinux_set_selection_use_context_context_length*(
# R: ptr xcb_selinux_set_selection_use_context_request_t): cint
# proc xcb_selinux_set_selection_use_context_context_end*(
# R: ptr xcb_selinux_set_selection_use_context_request_t): xcb_generic_iterator_t
# proc xcb_selinux_get_selection_use_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_selection_use_context*(c: ptr xcb_connection_t): xcb_selinux_get_selection_use_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_selection_use_context_unchecked*(c: ptr xcb_connection_t): xcb_selinux_get_selection_use_context_cookie_t
# proc xcb_selinux_get_selection_use_context_context*(
# R: ptr xcb_selinux_get_selection_use_context_reply_t): cstring
# proc xcb_selinux_get_selection_use_context_context_length*(
# R: ptr xcb_selinux_get_selection_use_context_reply_t): cint
# proc xcb_selinux_get_selection_use_context_context_end*(
# R: ptr xcb_selinux_get_selection_use_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_selection_use_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_selection_use_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_use_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_use_context_reply_t
# proc xcb_selinux_get_selection_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_selection_context*(c: ptr xcb_connection_t;
# selection: xcb_atom_t): xcb_selinux_get_selection_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_selection_context_unchecked*(c: ptr xcb_connection_t;
# selection: xcb_atom_t): xcb_selinux_get_selection_context_cookie_t
# proc xcb_selinux_get_selection_context_context*(
# R: ptr xcb_selinux_get_selection_context_reply_t): cstring
# proc xcb_selinux_get_selection_context_context_length*(
# R: ptr xcb_selinux_get_selection_context_reply_t): cint
# proc xcb_selinux_get_selection_context_context_end*(
# R: ptr xcb_selinux_get_selection_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_selection_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_selection_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_context_reply_t
# proc xcb_selinux_get_selection_data_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_selection_data_context*(c: ptr xcb_connection_t;
# selection: xcb_atom_t): xcb_selinux_get_selection_data_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_selection_data_context_unchecked*(c: ptr xcb_connection_t;
# selection: xcb_atom_t): xcb_selinux_get_selection_data_context_cookie_t
# proc xcb_selinux_get_selection_data_context_context*(
# R: ptr xcb_selinux_get_selection_data_context_reply_t): cstring
# proc xcb_selinux_get_selection_data_context_context_length*(
# R: ptr xcb_selinux_get_selection_data_context_reply_t): cint
# proc xcb_selinux_get_selection_data_context_context_end*(
# R: ptr xcb_selinux_get_selection_data_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_selection_data_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_selection_data_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_selection_data_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_selection_data_context_reply_t
# proc xcb_selinux_list_selections_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_list_selections*(c: ptr xcb_connection_t): xcb_selinux_list_selections_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_list_selections_unchecked*(c: ptr xcb_connection_t): xcb_selinux_list_selections_cookie_t
# proc xcb_selinux_list_selections_selections_length*(
# R: ptr xcb_selinux_list_selections_reply_t): cint
# proc xcb_selinux_list_selections_selections_iterator*(
# R: ptr xcb_selinux_list_selections_reply_t): xcb_selinux_list_item_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_list_selections_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_list_selections_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_list_selections_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_list_selections_reply_t
# proc xcb_selinux_get_client_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_selinux_get_client_context*(c: ptr xcb_connection_t; resource: uint32): xcb_selinux_get_client_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_selinux_get_client_context_unchecked*(c: ptr xcb_connection_t;
# resource: uint32): xcb_selinux_get_client_context_cookie_t
# proc xcb_selinux_get_client_context_context*(
# R: ptr xcb_selinux_get_client_context_reply_t): cstring
# proc xcb_selinux_get_client_context_context_length*(
# R: ptr xcb_selinux_get_client_context_reply_t): cint
# proc xcb_selinux_get_client_context_context_end*(
# R: ptr xcb_selinux_get_client_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_selinux_get_client_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_selinux_get_client_context_reply*(c: ptr xcb_connection_t; cookie: xcb_selinux_get_client_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_selinux_get_client_context_reply_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xtest.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Test_API XCB Test API
# ## @brief Test XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto
# const
# XCB_TEST_MAJOR_VERSION* = 2
# XCB_TEST_MINOR_VERSION* = 2
# var xcb_test_id*: xcb_extension_t
# ## *
# ## @brief xcb_test_get_version_cookie_t
# ##
# type
# xcb_test_get_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_test_get_version.
# const
# XCB_TEST_GET_VERSION* = 0
# ## *
# ## @brief xcb_test_get_version_request_t
# ##
# type
# xcb_test_get_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# major_version*: uint8
# pad0*: uint8
# minor_version*: uint16
# ## *
# ## @brief xcb_test_get_version_reply_t
# ##
# type
# xcb_test_get_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# major_version*: uint8
# sequence*: uint16
# length*: uint32
# minor_version*: uint16
# xcb_test_cursor_t* = enum
# XCB_TEST_CURSOR_NONE = 0, XCB_TEST_CURSOR_CURRENT = 1
# ## *
# ## @brief xcb_test_compare_cursor_cookie_t
# ##
# type
# xcb_test_compare_cursor_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_test_compare_cursor.
# const
# XCB_TEST_COMPARE_CURSOR* = 1
# ## *
# ## @brief xcb_test_compare_cursor_request_t
# ##
# type
# xcb_test_compare_cursor_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# cursor*: xcb_cursor_t
# ## *
# ## @brief xcb_test_compare_cursor_reply_t
# ##
# type
# xcb_test_compare_cursor_reply_t* {.bycopy.} = object
# response_type*: uint8
# same*: uint8
# sequence*: uint16
# length*: uint32
# ## * Opcode for xcb_test_fake_input.
# const
# XCB_TEST_FAKE_INPUT* = 2
# ## *
# ## @brief xcb_test_fake_input_request_t
# ##
# type
# xcb_test_fake_input_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# `type`*: uint8
# detail*: uint8
# pad0*: array[2, uint8]
# time*: uint32
# root*: xcb_window_t
# pad1*: array[8, uint8]
# rootX*: int16
# rootY*: int16
# pad2*: array[7, uint8]
# deviceid*: uint8
# ## * Opcode for xcb_test_grab_control.
# const
# XCB_TEST_GRAB_CONTROL* = 3
# ## *
# ## @brief xcb_test_grab_control_request_t
# ##
# type
# xcb_test_grab_control_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# impervious*: uint8
# pad0*: array[3, uint8]
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_test_get_version*(c: ptr xcb_connection_t; major_version: uint8;
# minor_version: uint16): xcb_test_get_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_test_get_version_unchecked*(c: ptr xcb_connection_t;
# major_version: uint8;
# minor_version: uint16): xcb_test_get_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_test_get_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_test_get_version_reply*(c: ptr xcb_connection_t; cookie: xcb_test_get_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_test_get_version_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_test_compare_cursor*(c: ptr xcb_connection_t; window: xcb_window_t;
# cursor: xcb_cursor_t): xcb_test_compare_cursor_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_test_compare_cursor_unchecked*(c: ptr xcb_connection_t;
# window: xcb_window_t; cursor: xcb_cursor_t): xcb_test_compare_cursor_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_test_compare_cursor_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_test_compare_cursor_reply*(c: ptr xcb_connection_t; cookie: xcb_test_compare_cursor_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_test_compare_cursor_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_test_fake_input_checked*(c: ptr xcb_connection_t; `type`: uint8;
# detail: uint8; time: uint32;
# root: xcb_window_t; rootX: int16; rootY: int16;
# deviceid: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_test_fake_input*(c: ptr xcb_connection_t; `type`: uint8; detail: uint8;
# time: uint32; root: xcb_window_t; rootX: int16;
# rootY: int16; deviceid: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_test_grab_control_checked*(c: ptr xcb_connection_t; impervious: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_test_grab_control*(c: ptr xcb_connection_t; impervious: uint8): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xv.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_Xv_API XCB Xv API
# ## @brief Xv XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xproto, shm
# const
# XCB_XV_MAJOR_VERSION* = 2
# XCB_XV_MINOR_VERSION* = 2
# var xcb_xv_id*: xcb_extension_t
# type
# xcb_xv_port_t* = uint32
# ## *
# ## @brief xcb_xv_port_iterator_t
# ##
# type
# xcb_xv_port_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_port_t
# rem*: cint
# index*: cint
# xcb_xv_encoding_t* = uint32
# ## *
# ## @brief xcb_xv_encoding_iterator_t
# ##
# type
# xcb_xv_encoding_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_encoding_t
# rem*: cint
# index*: cint
# xcb_xv_type_t* = enum
# XCB_XV_TYPE_INPUT_MASK = 1, XCB_XV_TYPE_OUTPUT_MASK = 2,
# XCB_XV_TYPE_VIDEO_MASK = 4, XCB_XV_TYPE_STILL_MASK = 8,
# XCB_XV_TYPE_IMAGE_MASK = 16
# xcb_xv_image_format_info_type_t* = enum
# XCB_XV_IMAGE_FORMAT_INFO_TYPE_RGB = 0, XCB_XV_IMAGE_FORMAT_INFO_TYPE_YUV = 1
# xcb_xv_image_format_info_format_t* = enum
# XCB_XV_IMAGE_FORMAT_INFO_FORMAT_PACKED = 0,
# XCB_XV_IMAGE_FORMAT_INFO_FORMAT_PLANAR = 1
# xcb_xv_attribute_flag_t* = enum
# XCB_XV_ATTRIBUTE_FLAG_GETTABLE = 1, XCB_XV_ATTRIBUTE_FLAG_SETTABLE = 2
# xcb_xv_video_notify_reason_t* = enum
# XCB_XV_VIDEO_NOTIFY_REASON_STARTED = 0, XCB_XV_VIDEO_NOTIFY_REASON_STOPPED = 1,
# XCB_XV_VIDEO_NOTIFY_REASON_BUSY = 2, XCB_XV_VIDEO_NOTIFY_REASON_PREEMPTED = 3,
# XCB_XV_VIDEO_NOTIFY_REASON_HARD_ERROR = 4
# xcb_xv_scanline_order_t* = enum
# XCB_XV_SCANLINE_ORDER_TOP_TO_BOTTOM = 0,
# XCB_XV_SCANLINE_ORDER_BOTTOM_TO_TOP = 1
# xcb_xv_grab_port_status_t* = enum
# XCB_XV_GRAB_PORT_STATUS_SUCCESS = 0, XCB_XV_GRAB_PORT_STATUS_BAD_EXTENSION = 1,
# XCB_XV_GRAB_PORT_STATUS_ALREADY_GRABBED = 2,
# XCB_XV_GRAB_PORT_STATUS_INVALID_TIME = 3,
# XCB_XV_GRAB_PORT_STATUS_BAD_REPLY = 4, XCB_XV_GRAB_PORT_STATUS_BAD_ALLOC = 5
# ## *
# ## @brief xcb_xv_rational_t
# ##
# type
# xcb_xv_rational_t* {.bycopy.} = object
# numerator*: int32
# denominator*: int32
# ## *
# ## @brief xcb_xv_rational_iterator_t
# ##
# type
# xcb_xv_rational_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_rational_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_format_t
# ##
# type
# xcb_xv_format_t* {.bycopy.} = object
# visual*: xcb_visualid_t
# depth*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_xv_format_iterator_t
# ##
# type
# xcb_xv_format_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_format_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_adaptor_info_t
# ##
# type
# xcb_xv_adaptor_info_t* {.bycopy.} = object
# base_id*: xcb_xv_port_t
# name_size*: uint16
# num_ports*: uint16
# num_formats*: uint16
# `type`*: uint8
# pad0*: uint8
# ## *
# ## @brief xcb_xv_adaptor_info_iterator_t
# ##
# type
# xcb_xv_adaptor_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_adaptor_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_encoding_info_t
# ##
# type
# xcb_xv_encoding_info_t* {.bycopy.} = object
# encoding*: xcb_xv_encoding_t
# name_size*: uint16
# width*: uint16
# height*: uint16
# pad0*: array[2, uint8]
# rate*: xcb_xv_rational_t
# ## *
# ## @brief xcb_xv_encoding_info_iterator_t
# ##
# type
# xcb_xv_encoding_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_encoding_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_image_t
# ##
# type
# xcb_xv_image_t* {.bycopy.} = object
# id*: uint32
# width*: uint16
# height*: uint16
# data_size*: uint32
# num_planes*: uint32
# ## *
# ## @brief xcb_xv_image_iterator_t
# ##
# type
# xcb_xv_image_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_image_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_attribute_info_t
# ##
# type
# xcb_xv_attribute_info_t* {.bycopy.} = object
# flags*: uint32
# min*: int32
# max*: int32
# size*: uint32
# ## *
# ## @brief xcb_xv_attribute_info_iterator_t
# ##
# type
# xcb_xv_attribute_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_attribute_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xv_image_format_info_t
# ##
# type
# xcb_xv_image_format_info_t* {.bycopy.} = object
# id*: uint32
# `type`*: uint8
# byte_order*: uint8
# pad0*: array[2, uint8]
# guid*: array[16, uint8]
# bpp*: uint8
# num_planes*: uint8
# pad1*: array[2, uint8]
# depth*: uint8
# pad2*: array[3, uint8]
# red_mask*: uint32
# green_mask*: uint32
# blue_mask*: uint32
# format*: uint8
# pad3*: array[3, uint8]
# y_sample_bits*: uint32
# u_sample_bits*: uint32
# v_sample_bits*: uint32
# vhorz_y_period*: uint32
# vhorz_u_period*: uint32
# vhorz_v_period*: uint32
# vvert_y_period*: uint32
# vvert_u_period*: uint32
# vvert_v_period*: uint32
# vcomp_order*: array[32, uint8]
# vscanline_order*: uint8
# pad4*: array[11, uint8]
# ## *
# ## @brief xcb_xv_image_format_info_iterator_t
# ##
# type
# xcb_xv_image_format_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xv_image_format_info_t
# rem*: cint
# index*: cint
# ## * Opcode for xcb_xv_bad_port.
# const
# XCB_XV_BAD_PORT* = 0
# ## *
# ## @brief xcb_xv_bad_port_error_t
# ##
# type
# xcb_xv_bad_port_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_xv_bad_encoding.
# const
# XCB_XV_BAD_ENCODING* = 1
# ## *
# ## @brief xcb_xv_bad_encoding_error_t
# ##
# type
# xcb_xv_bad_encoding_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_xv_bad_control.
# const
# XCB_XV_BAD_CONTROL* = 2
# ## *
# ## @brief xcb_xv_bad_control_error_t
# ##
# type
# xcb_xv_bad_control_error_t* {.bycopy.} = object
# response_type*: uint8
# error_code*: uint8
# sequence*: uint16
# ## * Opcode for xcb_xv_video_notify.
# const
# XCB_XV_VIDEO_NOTIFY* = 0
# ## *
# ## @brief xcb_xv_video_notify_event_t
# ##
# type
# xcb_xv_video_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# reason*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# drawable*: xcb_drawable_t
# port*: xcb_xv_port_t
# ## * Opcode for xcb_xv_port_notify.
# const
# XCB_XV_PORT_NOTIFY* = 1
# ## *
# ## @brief xcb_xv_port_notify_event_t
# ##
# type
# xcb_xv_port_notify_event_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# time*: xcb_timestamp_t
# port*: xcb_xv_port_t
# attribute*: xcb_atom_t
# value*: int32
# ## *
# ## @brief xcb_xv_query_extension_cookie_t
# ##
# type
# xcb_xv_query_extension_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_extension.
# const
# XCB_XV_QUERY_EXTENSION* = 0
# ## *
# ## @brief xcb_xv_query_extension_request_t
# ##
# type
# xcb_xv_query_extension_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xv_query_extension_reply_t
# ##
# type
# xcb_xv_query_extension_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major*: uint16
# minor*: uint16
# ## *
# ## @brief xcb_xv_query_adaptors_cookie_t
# ##
# type
# xcb_xv_query_adaptors_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_adaptors.
# const
# XCB_XV_QUERY_ADAPTORS* = 1
# ## *
# ## @brief xcb_xv_query_adaptors_request_t
# ##
# type
# xcb_xv_query_adaptors_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# window*: xcb_window_t
# ## *
# ## @brief xcb_xv_query_adaptors_reply_t
# ##
# type
# xcb_xv_query_adaptors_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_adaptors*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_xv_query_encodings_cookie_t
# ##
# type
# xcb_xv_query_encodings_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_encodings.
# const
# XCB_XV_QUERY_ENCODINGS* = 2
# ## *
# ## @brief xcb_xv_query_encodings_request_t
# ##
# type
# xcb_xv_query_encodings_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# ## *
# ## @brief xcb_xv_query_encodings_reply_t
# ##
# type
# xcb_xv_query_encodings_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_encodings*: uint16
# pad1*: array[22, uint8]
# ## *
# ## @brief xcb_xv_grab_port_cookie_t
# ##
# type
# xcb_xv_grab_port_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_grab_port.
# const
# XCB_XV_GRAB_PORT* = 3
# ## *
# ## @brief xcb_xv_grab_port_request_t
# ##
# type
# xcb_xv_grab_port_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# time*: xcb_timestamp_t
# ## *
# ## @brief xcb_xv_grab_port_reply_t
# ##
# type
# xcb_xv_grab_port_reply_t* {.bycopy.} = object
# response_type*: uint8
# result*: uint8
# sequence*: uint16
# length*: uint32
# ## * Opcode for xcb_xv_ungrab_port.
# const
# XCB_XV_UNGRAB_PORT* = 4
# ## *
# ## @brief xcb_xv_ungrab_port_request_t
# ##
# type
# xcb_xv_ungrab_port_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# time*: xcb_timestamp_t
# ## * Opcode for xcb_xv_put_video.
# const
# XCB_XV_PUT_VIDEO* = 5
# ## *
# ## @brief xcb_xv_put_video_request_t
# ##
# type
# xcb_xv_put_video_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# vid_x*: int16
# vid_y*: int16
# vid_w*: uint16
# vid_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# ## * Opcode for xcb_xv_put_still.
# const
# XCB_XV_PUT_STILL* = 6
# ## *
# ## @brief xcb_xv_put_still_request_t
# ##
# type
# xcb_xv_put_still_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# vid_x*: int16
# vid_y*: int16
# vid_w*: uint16
# vid_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# ## * Opcode for xcb_xv_get_video.
# const
# XCB_XV_GET_VIDEO* = 7
# ## *
# ## @brief xcb_xv_get_video_request_t
# ##
# type
# xcb_xv_get_video_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# vid_x*: int16
# vid_y*: int16
# vid_w*: uint16
# vid_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# ## * Opcode for xcb_xv_get_still.
# const
# XCB_XV_GET_STILL* = 8
# ## *
# ## @brief xcb_xv_get_still_request_t
# ##
# type
# xcb_xv_get_still_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# vid_x*: int16
# vid_y*: int16
# vid_w*: uint16
# vid_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# ## * Opcode for xcb_xv_stop_video.
# const
# XCB_XV_STOP_VIDEO* = 9
# ## *
# ## @brief xcb_xv_stop_video_request_t
# ##
# type
# xcb_xv_stop_video_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# ## * Opcode for xcb_xv_select_video_notify.
# const
# XCB_XV_SELECT_VIDEO_NOTIFY* = 10
# ## *
# ## @brief xcb_xv_select_video_notify_request_t
# ##
# type
# xcb_xv_select_video_notify_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# drawable*: xcb_drawable_t
# onoff*: uint8
# pad0*: array[3, uint8]
# ## * Opcode for xcb_xv_select_port_notify.
# const
# XCB_XV_SELECT_PORT_NOTIFY* = 11
# ## *
# ## @brief xcb_xv_select_port_notify_request_t
# ##
# type
# xcb_xv_select_port_notify_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# onoff*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_xv_query_best_size_cookie_t
# ##
# type
# xcb_xv_query_best_size_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_best_size.
# const
# XCB_XV_QUERY_BEST_SIZE* = 12
# ## *
# ## @brief xcb_xv_query_best_size_request_t
# ##
# type
# xcb_xv_query_best_size_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# vid_w*: uint16
# vid_h*: uint16
# drw_w*: uint16
# drw_h*: uint16
# motion*: uint8
# pad0*: array[3, uint8]
# ## *
# ## @brief xcb_xv_query_best_size_reply_t
# ##
# type
# xcb_xv_query_best_size_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# actual_width*: uint16
# actual_height*: uint16
# ## * Opcode for xcb_xv_set_port_attribute.
# const
# XCB_XV_SET_PORT_ATTRIBUTE* = 13
# ## *
# ## @brief xcb_xv_set_port_attribute_request_t
# ##
# type
# xcb_xv_set_port_attribute_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# attribute*: xcb_atom_t
# value*: int32
# ## *
# ## @brief xcb_xv_get_port_attribute_cookie_t
# ##
# type
# xcb_xv_get_port_attribute_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_get_port_attribute.
# const
# XCB_XV_GET_PORT_ATTRIBUTE* = 14
# ## *
# ## @brief xcb_xv_get_port_attribute_request_t
# ##
# type
# xcb_xv_get_port_attribute_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# attribute*: xcb_atom_t
# ## *
# ## @brief xcb_xv_get_port_attribute_reply_t
# ##
# type
# xcb_xv_get_port_attribute_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# value*: int32
# ## *
# ## @brief xcb_xv_query_port_attributes_cookie_t
# ##
# type
# xcb_xv_query_port_attributes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_port_attributes.
# const
# XCB_XV_QUERY_PORT_ATTRIBUTES* = 15
# ## *
# ## @brief xcb_xv_query_port_attributes_request_t
# ##
# type
# xcb_xv_query_port_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# ## *
# ## @brief xcb_xv_query_port_attributes_reply_t
# ##
# type
# xcb_xv_query_port_attributes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_attributes*: uint32
# text_size*: uint32
# pad1*: array[16, uint8]
# ## *
# ## @brief xcb_xv_list_image_formats_cookie_t
# ##
# type
# xcb_xv_list_image_formats_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_list_image_formats.
# const
# XCB_XV_LIST_IMAGE_FORMATS* = 16
# ## *
# ## @brief xcb_xv_list_image_formats_request_t
# ##
# type
# xcb_xv_list_image_formats_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# ## *
# ## @brief xcb_xv_list_image_formats_reply_t
# ##
# type
# xcb_xv_list_image_formats_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_formats*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_xv_query_image_attributes_cookie_t
# ##
# type
# xcb_xv_query_image_attributes_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xv_query_image_attributes.
# const
# XCB_XV_QUERY_IMAGE_ATTRIBUTES* = 17
# ## *
# ## @brief xcb_xv_query_image_attributes_request_t
# ##
# type
# xcb_xv_query_image_attributes_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# id*: uint32
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_xv_query_image_attributes_reply_t
# ##
# type
# xcb_xv_query_image_attributes_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num_planes*: uint32
# data_size*: uint32
# width*: uint16
# height*: uint16
# pad1*: array[12, uint8]
# ## * Opcode for xcb_xv_put_image.
# const
# XCB_XV_PUT_IMAGE* = 18
# ## *
# ## @brief xcb_xv_put_image_request_t
# ##
# type
# xcb_xv_put_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# id*: uint32
# src_x*: int16
# src_y*: int16
# src_w*: uint16
# src_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# width*: uint16
# height*: uint16
# ## * Opcode for xcb_xv_shm_put_image.
# const
# XCB_XV_SHM_PUT_IMAGE* = 19
# ## *
# ## @brief xcb_xv_shm_put_image_request_t
# ##
# type
# xcb_xv_shm_put_image_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port*: xcb_xv_port_t
# drawable*: xcb_drawable_t
# gc*: xcb_gcontext_t
# shmseg*: xcb_shm_seg_t
# id*: uint32
# offset*: uint32
# src_x*: int16
# src_y*: int16
# src_w*: uint16
# src_h*: uint16
# drw_x*: int16
# drw_y*: int16
# drw_w*: uint16
# drw_h*: uint16
# width*: uint16
# height*: uint16
# send_event*: uint8
# pad0*: array[3, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_port_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_port_t)
# ##
# proc xcb_xv_port_next*(i: ptr xcb_xv_port_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_port_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_port_end*(i: xcb_xv_port_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_encoding_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_encoding_t)
# ##
# proc xcb_xv_encoding_next*(i: ptr xcb_xv_encoding_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_encoding_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_encoding_end*(i: xcb_xv_encoding_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_rational_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_rational_t)
# ##
# proc xcb_xv_rational_next*(i: ptr xcb_xv_rational_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_rational_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_rational_end*(i: xcb_xv_rational_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_format_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_format_t)
# ##
# proc xcb_xv_format_next*(i: ptr xcb_xv_format_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_format_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_format_end*(i: xcb_xv_format_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_adaptor_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_adaptor_info_name*(R: ptr xcb_xv_adaptor_info_t): cstring
# proc xcb_xv_adaptor_info_name_length*(R: ptr xcb_xv_adaptor_info_t): cint
# proc xcb_xv_adaptor_info_name_end*(R: ptr xcb_xv_adaptor_info_t): xcb_generic_iterator_t
# proc xcb_xv_adaptor_info_formats*(R: ptr xcb_xv_adaptor_info_t): ptr xcb_xv_format_t
# proc xcb_xv_adaptor_info_formats_length*(R: ptr xcb_xv_adaptor_info_t): cint
# proc xcb_xv_adaptor_info_formats_iterator*(R: ptr xcb_xv_adaptor_info_t): xcb_xv_format_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_adaptor_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_adaptor_info_t)
# ##
# proc xcb_xv_adaptor_info_next*(i: ptr xcb_xv_adaptor_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_adaptor_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_adaptor_info_end*(i: xcb_xv_adaptor_info_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_encoding_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_encoding_info_name*(R: ptr xcb_xv_encoding_info_t): cstring
# proc xcb_xv_encoding_info_name_length*(R: ptr xcb_xv_encoding_info_t): cint
# proc xcb_xv_encoding_info_name_end*(R: ptr xcb_xv_encoding_info_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_encoding_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_encoding_info_t)
# ##
# proc xcb_xv_encoding_info_next*(i: ptr xcb_xv_encoding_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_encoding_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_encoding_info_end*(i: xcb_xv_encoding_info_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_image_sizeof*(_buffer: pointer): cint
# proc xcb_xv_image_pitches*(R: ptr xcb_xv_image_t): ptr uint32
# proc xcb_xv_image_pitches_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_pitches_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# proc xcb_xv_image_offsets*(R: ptr xcb_xv_image_t): ptr uint32
# proc xcb_xv_image_offsets_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_offsets_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# proc xcb_xv_image_data*(R: ptr xcb_xv_image_t): ptr uint8
# proc xcb_xv_image_data_length*(R: ptr xcb_xv_image_t): cint
# proc xcb_xv_image_data_end*(R: ptr xcb_xv_image_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_image_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_image_t)
# ##
# proc xcb_xv_image_next*(i: ptr xcb_xv_image_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_image_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_image_end*(i: xcb_xv_image_iterator_t): xcb_generic_iterator_t
# proc xcb_xv_attribute_info_sizeof*(_buffer: pointer): cint
# proc xcb_xv_attribute_info_name*(R: ptr xcb_xv_attribute_info_t): cstring
# proc xcb_xv_attribute_info_name_length*(R: ptr xcb_xv_attribute_info_t): cint
# proc xcb_xv_attribute_info_name_end*(R: ptr xcb_xv_attribute_info_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_attribute_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_attribute_info_t)
# ##
# proc xcb_xv_attribute_info_next*(i: ptr xcb_xv_attribute_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_attribute_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_attribute_info_end*(i: xcb_xv_attribute_info_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xv_image_format_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xv_image_format_info_t)
# ##
# proc xcb_xv_image_format_info_next*(i: ptr xcb_xv_image_format_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xv_image_format_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xv_image_format_info_end*(i: xcb_xv_image_format_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_extension*(c: ptr xcb_connection_t): xcb_xv_query_extension_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_extension_unchecked*(c: ptr xcb_connection_t): xcb_xv_query_extension_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_extension_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_extension_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_extension_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_extension_reply_t
# proc xcb_xv_query_adaptors_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_adaptors*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xv_query_adaptors_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_adaptors_unchecked*(c: ptr xcb_connection_t; window: xcb_window_t): xcb_xv_query_adaptors_cookie_t
# proc xcb_xv_query_adaptors_info_length*(R: ptr xcb_xv_query_adaptors_reply_t): cint
# proc xcb_xv_query_adaptors_info_iterator*(R: ptr xcb_xv_query_adaptors_reply_t): xcb_xv_adaptor_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_adaptors_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_adaptors_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_adaptors_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_adaptors_reply_t
# proc xcb_xv_query_encodings_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_encodings*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_encodings_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_encodings_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_encodings_cookie_t
# proc xcb_xv_query_encodings_info_length*(R: ptr xcb_xv_query_encodings_reply_t): cint
# proc xcb_xv_query_encodings_info_iterator*(R: ptr xcb_xv_query_encodings_reply_t): xcb_xv_encoding_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_encodings_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_encodings_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_encodings_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_encodings_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_grab_port*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# time: xcb_timestamp_t): xcb_xv_grab_port_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_grab_port_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# time: xcb_timestamp_t): xcb_xv_grab_port_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_grab_port_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_grab_port_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_grab_port_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_grab_port_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_ungrab_port_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_ungrab_port*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# time: xcb_timestamp_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_put_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# vid_x: int16; vid_y: int16; vid_w: uint16;
# vid_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_put_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
# vid_y: int16; vid_w: uint16; vid_h: uint16;
# drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_put_still_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# vid_x: int16; vid_y: int16; vid_w: uint16;
# vid_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_put_still*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
# vid_y: int16; vid_w: uint16; vid_h: uint16;
# drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_get_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# vid_x: int16; vid_y: int16; vid_w: uint16;
# vid_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_get_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
# vid_y: int16; vid_w: uint16; vid_h: uint16;
# drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_get_still_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# vid_x: int16; vid_y: int16; vid_w: uint16;
# vid_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_get_still*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; vid_x: int16;
# vid_y: int16; vid_w: uint16; vid_h: uint16;
# drw_x: int16; drw_y: int16; drw_w: uint16; drw_h: uint16): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_stop_video_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_stop_video*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_select_video_notify_checked*(c: ptr xcb_connection_t;
# drawable: xcb_drawable_t; onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_select_video_notify*(c: ptr xcb_connection_t; drawable: xcb_drawable_t;
# onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_select_port_notify_checked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t; onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_select_port_notify*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# onoff: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_best_size*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# vid_w: uint16; vid_h: uint16; drw_w: uint16;
# drw_h: uint16; motion: uint8): xcb_xv_query_best_size_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_best_size_unchecked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# vid_w: uint16; vid_h: uint16;
# drw_w: uint16; drw_h: uint16;
# motion: uint8): xcb_xv_query_best_size_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_best_size_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_best_size_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_best_size_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_best_size_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_set_port_attribute_checked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t; attribute: xcb_atom_t;
# value: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_set_port_attribute*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# attribute: xcb_atom_t; value: int32): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_get_port_attribute*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# attribute: xcb_atom_t): xcb_xv_get_port_attribute_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_get_port_attribute_unchecked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t; attribute: xcb_atom_t): xcb_xv_get_port_attribute_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_get_port_attribute_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_get_port_attribute_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_get_port_attribute_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_get_port_attribute_reply_t
# proc xcb_xv_query_port_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_port_attributes*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_query_port_attributes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_port_attributes_unchecked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t): xcb_xv_query_port_attributes_cookie_t
# proc xcb_xv_query_port_attributes_attributes_length*(
# R: ptr xcb_xv_query_port_attributes_reply_t): cint
# proc xcb_xv_query_port_attributes_attributes_iterator*(
# R: ptr xcb_xv_query_port_attributes_reply_t): xcb_xv_attribute_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_port_attributes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_port_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_port_attributes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_port_attributes_reply_t
# proc xcb_xv_list_image_formats_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_list_image_formats*(c: ptr xcb_connection_t; port: xcb_xv_port_t): xcb_xv_list_image_formats_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_list_image_formats_unchecked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t): xcb_xv_list_image_formats_cookie_t
# proc xcb_xv_list_image_formats_format*(R: ptr xcb_xv_list_image_formats_reply_t): ptr xcb_xv_image_format_info_t
# proc xcb_xv_list_image_formats_format_length*(
# R: ptr xcb_xv_list_image_formats_reply_t): cint
# proc xcb_xv_list_image_formats_format_iterator*(
# R: ptr xcb_xv_list_image_formats_reply_t): xcb_xv_image_format_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_list_image_formats_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_list_image_formats_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_list_image_formats_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_list_image_formats_reply_t
# proc xcb_xv_query_image_attributes_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_query_image_attributes*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# id: uint32; width: uint16; height: uint16): xcb_xv_query_image_attributes_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xv_query_image_attributes_unchecked*(c: ptr xcb_connection_t;
# port: xcb_xv_port_t; id: uint32; width: uint16; height: uint16): xcb_xv_query_image_attributes_cookie_t
# proc xcb_xv_query_image_attributes_pitches*(
# R: ptr xcb_xv_query_image_attributes_reply_t): ptr uint32
# proc xcb_xv_query_image_attributes_pitches_length*(
# R: ptr xcb_xv_query_image_attributes_reply_t): cint
# proc xcb_xv_query_image_attributes_pitches_end*(
# R: ptr xcb_xv_query_image_attributes_reply_t): xcb_generic_iterator_t
# proc xcb_xv_query_image_attributes_offsets*(
# R: ptr xcb_xv_query_image_attributes_reply_t): ptr uint32
# proc xcb_xv_query_image_attributes_offsets_length*(
# R: ptr xcb_xv_query_image_attributes_reply_t): cint
# proc xcb_xv_query_image_attributes_offsets_end*(
# R: ptr xcb_xv_query_image_attributes_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xv_query_image_attributes_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xv_query_image_attributes_reply*(c: ptr xcb_connection_t; cookie: xcb_xv_query_image_attributes_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xv_query_image_attributes_reply_t
# proc xcb_xv_put_image_sizeof*(_buffer: pointer; data_len: uint32): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_put_image_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# id: uint32; src_x: int16; src_y: int16;
# src_w: uint16; src_h: uint16; drw_x: int16;
# drw_y: int16; drw_w: uint16; drw_h: uint16;
# width: uint16; height: uint16; data_len: uint32;
# data: ptr uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_put_image*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t; id: uint32;
# src_x: int16; src_y: int16; src_w: uint16;
# src_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16; width: uint16;
# height: uint16; data_len: uint32; data: ptr uint8): xcb_void_cookie_t
# proc xcb_xv_put_image_data*(R: ptr xcb_xv_put_image_request_t): ptr uint8
# proc xcb_xv_put_image_data_length*(R: ptr xcb_xv_put_image_request_t): cint
# proc xcb_xv_put_image_data_end*(R: ptr xcb_xv_put_image_request_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xv_shm_put_image_checked*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# shmseg: xcb_shm_seg_t; id: uint32;
# offset: uint32; src_x: int16; src_y: int16;
# src_w: uint16; src_h: uint16; drw_x: int16;
# drw_y: int16; drw_w: uint16; drw_h: uint16;
# width: uint16; height: uint16;
# send_event: uint8): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xv_shm_put_image*(c: ptr xcb_connection_t; port: xcb_xv_port_t;
# drawable: xcb_drawable_t; gc: xcb_gcontext_t;
# shmseg: xcb_shm_seg_t; id: uint32; offset: uint32;
# src_x: int16; src_y: int16; src_w: uint16;
# src_h: uint16; drw_x: int16; drw_y: int16;
# drw_w: uint16; drw_h: uint16; width: uint16;
# height: uint16; send_event: uint8): xcb_void_cookie_t
# ## *
# ## @}
# ##
# ##
# ## This file generated automatically from xvmc.xml by c_client.py.
# ## Edit at your peril.
# ##
# ## *
# ## @defgroup XCB_XvMC_API XCB XvMC API
# ## @brief XvMC XCB Protocol Implementation.
# ## @{
# ##
# import
# xcb, xv
# const
# XCB_XVMC_MAJOR_VERSION* = 1
# XCB_XVMC_MINOR_VERSION* = 1
# var xcb_xvmc_id*: xcb_extension_t
# type
# xcb_xvmc_context_t* = uint32
# ## *
# ## @brief xcb_xvmc_context_iterator_t
# ##
# type
# xcb_xvmc_context_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xvmc_context_t
# rem*: cint
# index*: cint
# xcb_xvmc_surface_t* = uint32
# ## *
# ## @brief xcb_xvmc_surface_iterator_t
# ##
# type
# xcb_xvmc_surface_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xvmc_surface_t
# rem*: cint
# index*: cint
# xcb_xvmc_subpicture_t* = uint32
# ## *
# ## @brief xcb_xvmc_subpicture_iterator_t
# ##
# type
# xcb_xvmc_subpicture_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xvmc_subpicture_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xvmc_surface_info_t
# ##
# type
# xcb_xvmc_surface_info_t* {.bycopy.} = object
# id*: xcb_xvmc_surface_t
# chroma_format*: uint16
# pad0*: uint16
# max_width*: uint16
# max_height*: uint16
# subpicture_max_width*: uint16
# subpicture_max_height*: uint16
# mc_type*: uint32
# flags*: uint32
# ## *
# ## @brief xcb_xvmc_surface_info_iterator_t
# ##
# type
# xcb_xvmc_surface_info_iterator_t* {.bycopy.} = object
# data*: ptr xcb_xvmc_surface_info_t
# rem*: cint
# index*: cint
# ## *
# ## @brief xcb_xvmc_query_version_cookie_t
# ##
# type
# xcb_xvmc_query_version_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_query_version.
# const
# XCB_XVMC_QUERY_VERSION* = 0
# ## *
# ## @brief xcb_xvmc_query_version_request_t
# ##
# type
# xcb_xvmc_query_version_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# ## *
# ## @brief xcb_xvmc_query_version_reply_t
# ##
# type
# xcb_xvmc_query_version_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# major*: uint32
# minor*: uint32
# ## *
# ## @brief xcb_xvmc_list_surface_types_cookie_t
# ##
# type
# xcb_xvmc_list_surface_types_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_list_surface_types.
# const
# XCB_XVMC_LIST_SURFACE_TYPES* = 1
# ## *
# ## @brief xcb_xvmc_list_surface_types_request_t
# ##
# type
# xcb_xvmc_list_surface_types_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port_id*: xcb_xv_port_t
# ## *
# ## @brief xcb_xvmc_list_surface_types_reply_t
# ##
# type
# xcb_xvmc_list_surface_types_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num*: uint32
# pad1*: array[20, uint8]
# ## *
# ## @brief xcb_xvmc_create_context_cookie_t
# ##
# type
# xcb_xvmc_create_context_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_create_context.
# const
# XCB_XVMC_CREATE_CONTEXT* = 2
# ## *
# ## @brief xcb_xvmc_create_context_request_t
# ##
# type
# xcb_xvmc_create_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_id*: xcb_xvmc_context_t
# port_id*: xcb_xv_port_t
# surface_id*: xcb_xvmc_surface_t
# width*: uint16
# height*: uint16
# flags*: uint32
# ## *
# ## @brief xcb_xvmc_create_context_reply_t
# ##
# type
# xcb_xvmc_create_context_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width_actual*: uint16
# height_actual*: uint16
# flags_return*: uint32
# pad1*: array[20, uint8]
# ## * Opcode for xcb_xvmc_destroy_context.
# const
# XCB_XVMC_DESTROY_CONTEXT* = 3
# ## *
# ## @brief xcb_xvmc_destroy_context_request_t
# ##
# type
# xcb_xvmc_destroy_context_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# context_id*: xcb_xvmc_context_t
# ## *
# ## @brief xcb_xvmc_create_surface_cookie_t
# ##
# type
# xcb_xvmc_create_surface_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_create_surface.
# const
# XCB_XVMC_CREATE_SURFACE* = 4
# ## *
# ## @brief xcb_xvmc_create_surface_request_t
# ##
# type
# xcb_xvmc_create_surface_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# surface_id*: xcb_xvmc_surface_t
# context_id*: xcb_xvmc_context_t
# ## *
# ## @brief xcb_xvmc_create_surface_reply_t
# ##
# type
# xcb_xvmc_create_surface_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# pad1*: array[24, uint8]
# ## * Opcode for xcb_xvmc_destroy_surface.
# const
# XCB_XVMC_DESTROY_SURFACE* = 5
# ## *
# ## @brief xcb_xvmc_destroy_surface_request_t
# ##
# type
# xcb_xvmc_destroy_surface_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# surface_id*: xcb_xvmc_surface_t
# ## *
# ## @brief xcb_xvmc_create_subpicture_cookie_t
# ##
# type
# xcb_xvmc_create_subpicture_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_create_subpicture.
# const
# XCB_XVMC_CREATE_SUBPICTURE* = 6
# ## *
# ## @brief xcb_xvmc_create_subpicture_request_t
# ##
# type
# xcb_xvmc_create_subpicture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# subpicture_id*: xcb_xvmc_subpicture_t
# context*: xcb_xvmc_context_t
# xvimage_id*: uint32
# width*: uint16
# height*: uint16
# ## *
# ## @brief xcb_xvmc_create_subpicture_reply_t
# ##
# type
# xcb_xvmc_create_subpicture_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# width_actual*: uint16
# height_actual*: uint16
# num_palette_entries*: uint16
# entry_bytes*: uint16
# component_order*: array[4, uint8]
# pad1*: array[12, uint8]
# ## * Opcode for xcb_xvmc_destroy_subpicture.
# const
# XCB_XVMC_DESTROY_SUBPICTURE* = 7
# ## *
# ## @brief xcb_xvmc_destroy_subpicture_request_t
# ##
# type
# xcb_xvmc_destroy_subpicture_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# subpicture_id*: xcb_xvmc_subpicture_t
# ## *
# ## @brief xcb_xvmc_list_subpicture_types_cookie_t
# ##
# type
# xcb_xvmc_list_subpicture_types_cookie_t* {.bycopy.} = object
# sequence*: uint8
# ## * Opcode for xcb_xvmc_list_subpicture_types.
# const
# XCB_XVMC_LIST_SUBPICTURE_TYPES* = 8
# ## *
# ## @brief xcb_xvmc_list_subpicture_types_request_t
# ##
# type
# xcb_xvmc_list_subpicture_types_request_t* {.bycopy.} = object
# major_opcode*: uint8
# minor_opcode*: uint8
# length*: uint16
# port_id*: xcb_xv_port_t
# surface_id*: xcb_xvmc_surface_t
# ## *
# ## @brief xcb_xvmc_list_subpicture_types_reply_t
# ##
# type
# xcb_xvmc_list_subpicture_types_reply_t* {.bycopy.} = object
# response_type*: uint8
# pad0*: uint8
# sequence*: uint16
# length*: uint32
# num*: uint32
# pad1*: array[20, uint8]
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xvmc_context_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xvmc_context_t)
# ##
# proc xcb_xvmc_context_next*(i: ptr xcb_xvmc_context_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xvmc_context_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xvmc_context_end*(i: xcb_xvmc_context_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xvmc_surface_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xvmc_surface_t)
# ##
# proc xcb_xvmc_surface_next*(i: ptr xcb_xvmc_surface_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xvmc_surface_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xvmc_surface_end*(i: xcb_xvmc_surface_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xvmc_subpicture_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xvmc_subpicture_t)
# ##
# proc xcb_xvmc_subpicture_next*(i: ptr xcb_xvmc_subpicture_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xvmc_subpicture_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xvmc_subpicture_end*(i: xcb_xvmc_subpicture_iterator_t): xcb_generic_iterator_t
# ## *
# ## Get the next element of the iterator
# ## @param i Pointer to a xcb_xvmc_surface_info_iterator_t
# ##
# ## Get the next element in the iterator. The member rem is
# ## decreased by one. The member data points to the next
# ## element. The member index is increased by sizeof(xcb_xvmc_surface_info_t)
# ##
# proc xcb_xvmc_surface_info_next*(i: ptr xcb_xvmc_surface_info_iterator_t)
# ## *
# ## Return the iterator pointing to the last element
# ## @param i An xcb_xvmc_surface_info_iterator_t
# ## @return The iterator pointing to the last element
# ##
# ## Set the current element in the iterator to the last element.
# ## The member rem is set to 0. The member data points to the
# ## last element.
# ##
# proc xcb_xvmc_surface_info_end*(i: xcb_xvmc_surface_info_iterator_t): xcb_generic_iterator_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_query_version*(c: ptr xcb_connection_t): xcb_xvmc_query_version_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_query_version_unchecked*(c: ptr xcb_connection_t): xcb_xvmc_query_version_cookie_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_query_version_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_query_version_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_query_version_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_query_version_reply_t
# proc xcb_xvmc_list_surface_types_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_list_surface_types*(c: ptr xcb_connection_t; port_id: xcb_xv_port_t): xcb_xvmc_list_surface_types_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_list_surface_types_unchecked*(c: ptr xcb_connection_t;
# port_id: xcb_xv_port_t): xcb_xvmc_list_surface_types_cookie_t
# proc xcb_xvmc_list_surface_types_surfaces*(
# R: ptr xcb_xvmc_list_surface_types_reply_t): ptr xcb_xvmc_surface_info_t
# proc xcb_xvmc_list_surface_types_surfaces_length*(
# R: ptr xcb_xvmc_list_surface_types_reply_t): cint
# proc xcb_xvmc_list_surface_types_surfaces_iterator*(
# R: ptr xcb_xvmc_list_surface_types_reply_t): xcb_xvmc_surface_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_list_surface_types_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_list_surface_types_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_list_surface_types_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_list_surface_types_reply_t
# proc xcb_xvmc_create_context_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_create_context*(c: ptr xcb_connection_t;
# context_id: xcb_xvmc_context_t;
# port_id: xcb_xv_port_t;
# surface_id: xcb_xvmc_surface_t; width: uint16;
# height: uint16; flags: uint32): xcb_xvmc_create_context_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_create_context_unchecked*(c: ptr xcb_connection_t;
# context_id: xcb_xvmc_context_t;
# port_id: xcb_xv_port_t;
# surface_id: xcb_xvmc_surface_t;
# width: uint16; height: uint16;
# flags: uint32): xcb_xvmc_create_context_cookie_t
# proc xcb_xvmc_create_context_priv_data*(R: ptr xcb_xvmc_create_context_reply_t): ptr uint32
# proc xcb_xvmc_create_context_priv_data_length*(
# R: ptr xcb_xvmc_create_context_reply_t): cint
# proc xcb_xvmc_create_context_priv_data_end*(
# R: ptr xcb_xvmc_create_context_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_create_context_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_create_context_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_context_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_context_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xvmc_destroy_context_checked*(c: ptr xcb_connection_t;
# context_id: xcb_xvmc_context_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_destroy_context*(c: ptr xcb_connection_t;
# context_id: xcb_xvmc_context_t): xcb_void_cookie_t
# proc xcb_xvmc_create_surface_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_create_surface*(c: ptr xcb_connection_t;
# surface_id: xcb_xvmc_surface_t;
# context_id: xcb_xvmc_context_t): xcb_xvmc_create_surface_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_create_surface_unchecked*(c: ptr xcb_connection_t;
# surface_id: xcb_xvmc_surface_t;
# context_id: xcb_xvmc_context_t): xcb_xvmc_create_surface_cookie_t
# proc xcb_xvmc_create_surface_priv_data*(R: ptr xcb_xvmc_create_surface_reply_t): ptr uint32
# proc xcb_xvmc_create_surface_priv_data_length*(
# R: ptr xcb_xvmc_create_surface_reply_t): cint
# proc xcb_xvmc_create_surface_priv_data_end*(
# R: ptr xcb_xvmc_create_surface_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_create_surface_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_create_surface_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_surface_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_surface_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xvmc_destroy_surface_checked*(c: ptr xcb_connection_t;
# surface_id: xcb_xvmc_surface_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_destroy_surface*(c: ptr xcb_connection_t;
# surface_id: xcb_xvmc_surface_t): xcb_void_cookie_t
# proc xcb_xvmc_create_subpicture_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_create_subpicture*(c: ptr xcb_connection_t;
# subpicture_id: xcb_xvmc_subpicture_t;
# context: xcb_xvmc_context_t; xvimage_id: uint32;
# width: uint16; height: uint16): xcb_xvmc_create_subpicture_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_create_subpicture_unchecked*(c: ptr xcb_connection_t;
# subpicture_id: xcb_xvmc_subpicture_t; context: xcb_xvmc_context_t;
# xvimage_id: uint32; width: uint16; height: uint16): xcb_xvmc_create_subpicture_cookie_t
# proc xcb_xvmc_create_subpicture_priv_data*(
# R: ptr xcb_xvmc_create_subpicture_reply_t): ptr uint32
# proc xcb_xvmc_create_subpicture_priv_data_length*(
# R: ptr xcb_xvmc_create_subpicture_reply_t): cint
# proc xcb_xvmc_create_subpicture_priv_data_end*(
# R: ptr xcb_xvmc_create_subpicture_reply_t): xcb_generic_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_create_subpicture_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_create_subpicture_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_create_subpicture_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_create_subpicture_reply_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will not cause
# ## a reply to be generated. Any returned error will be
# ## saved for handling by xcb_request_check().
# ##
# proc xcb_xvmc_destroy_subpicture_checked*(c: ptr xcb_connection_t;
# subpicture_id: xcb_xvmc_subpicture_t): xcb_void_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_destroy_subpicture*(c: ptr xcb_connection_t;
# subpicture_id: xcb_xvmc_subpicture_t): xcb_void_cookie_t
# proc xcb_xvmc_list_subpicture_types_sizeof*(_buffer: pointer): cint
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ##
# proc xcb_xvmc_list_subpicture_types*(c: ptr xcb_connection_t;
# port_id: xcb_xv_port_t;
# surface_id: xcb_xvmc_surface_t): xcb_xvmc_list_subpicture_types_cookie_t
# ## *
# ##
# ## @param c The connection
# ## @return A cookie
# ##
# ## Delivers a request to the X server.
# ##
# ## This form can be used only if the request will cause
# ## a reply to be generated. Any returned error will be
# ## placed in the event queue.
# ##
# proc xcb_xvmc_list_subpicture_types_unchecked*(c: ptr xcb_connection_t;
# port_id: xcb_xv_port_t; surface_id: xcb_xvmc_surface_t): xcb_xvmc_list_subpicture_types_cookie_t
# proc xcb_xvmc_list_subpicture_types_types*(
# R: ptr xcb_xvmc_list_subpicture_types_reply_t): ptr xcb_xv_image_format_info_t
# proc xcb_xvmc_list_subpicture_types_types_length*(
# R: ptr xcb_xvmc_list_subpicture_types_reply_t): cint
# proc xcb_xvmc_list_subpicture_types_types_iterator*(
# R: ptr xcb_xvmc_list_subpicture_types_reply_t): xcb_xv_image_format_info_iterator_t
# ## *
# ## Return the reply
# ## @param c The connection
# ## @param cookie The cookie
# ## @param e The xcb_generic_error_t supplied
# ##
# ## Returns the reply of the request asked by
# ##
# ## The parameter @p e supplied to this function must be NULL if
# ## xcb_xvmc_list_subpicture_types_unchecked(). is used.
# ## Otherwise, it stores the error if any.
# ##
# ## The returned value must be freed by the caller using free().
# ##
# proc xcb_xvmc_list_subpicture_types_reply*(c: ptr xcb_connection_t; cookie: xcb_xvmc_list_subpicture_types_cookie_t; ## *<
# e: ptr ptr xcb_generic_error_t): ptr xcb_xvmc_list_subpicture_types_reply_t
# ## *
# ## @}
# ##
# 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)
#
# THIS IS A GENERATED FILE
#
# Do not change! Changing this file implies a protocol change!
#
import
x
const
XA_PRIMARY* = Atom(1)
XA_SECONDARY* = Atom(2)
XA_ARC* = Atom(3)
XA_ATOM* = Atom(4)
XA_BITMAP* = Atom(5)
XA_CARDINAL* = Atom(6)
XA_COLORMAP* = Atom(7)
XA_CURSOR* = Atom(8)
XA_CUT_BUFFER0* = Atom(9)
XA_CUT_BUFFER1* = Atom(10)
XA_CUT_BUFFER2* = Atom(11)
XA_CUT_BUFFER3* = Atom(12)
XA_CUT_BUFFER4* = Atom(13)
XA_CUT_BUFFER5* = Atom(14)
XA_CUT_BUFFER6* = Atom(15)
XA_CUT_BUFFER7* = Atom(16)
XA_DRAWABLE* = Atom(17)
XA_FONT* = Atom(18)
XA_INTEGER* = Atom(19)
XA_PIXMAP* = Atom(20)
XA_POINT* = Atom(21)
XA_RECTANGLE* = Atom(22)
XA_RESOURCE_MANAGER* = Atom(23)
XA_RGB_COLOR_MAP* = Atom(24)
XA_RGB_BEST_MAP* = Atom(25)
XA_RGB_BLUE_MAP* = Atom(26)
XA_RGB_DEFAULT_MAP* = Atom(27)
XA_RGB_GRAY_MAP* = Atom(28)
XA_RGB_GREEN_MAP* = Atom(29)
XA_RGB_RED_MAP* = Atom(30)
XA_STRING* = Atom(31)
XA_VISUALID* = Atom(32)
XA_WINDOW* = Atom(33)
XA_WM_COMMAND* = Atom(34)
XA_WM_HINTS* = Atom(35)
XA_WM_CLIENT_MACHINE* = Atom(36)
XA_WM_ICON_NAME* = Atom(37)
XA_WM_ICON_SIZE* = Atom(38)
XA_WM_NAME* = Atom(39)
XA_WM_NORMAL_HINTS* = Atom(40)
XA_WM_SIZE_HINTS* = Atom(41)
XA_WM_ZOOM_HINTS* = Atom(42)
XA_MIN_SPACE* = Atom(43)
XA_NORM_SPACE* = Atom(44)
XA_MAX_SPACE* = Atom(45)
XA_END_SPACE* = Atom(46)
XA_SUPERSCRIPT_X* = Atom(47)
XA_SUPERSCRIPT_Y* = Atom(48)
XA_SUBSCRIPT_X* = Atom(49)
XA_SUBSCRIPT_Y* = Atom(50)
XA_UNDERLINE_POSITION* = Atom(51)
XA_UNDERLINE_THICKNESS* = Atom(52)
XA_STRIKEOUT_ASCENT* = Atom(53)
XA_STRIKEOUT_DESCENT* = Atom(54)
XA_ITALIC_ANGLE* = Atom(55)
XA_X_HEIGHT* = Atom(56)
XA_QUAD_WIDTH* = Atom(57)
XA_WEIGHT* = Atom(58)
XA_POINT_SIZE* = Atom(59)
XA_RESOLUTION* = Atom(60)
XA_COPYRIGHT* = Atom(61)
XA_NOTICE* = Atom(62)
XA_FONT_NAME* = Atom(63)
XA_FAMILY_NAME* = Atom(64)
XA_FULL_NAME* = Atom(65)
XA_CAP_HEIGHT* = Atom(66)
XA_WM_CLASS* = Atom(67)
XA_WM_TRANSIENT_FOR* = Atom(68)
XA_LAST_PREDEFINED* = Atom(68)
# implementation
# included from xlib bindings
when defined(use_pkg_config) or defined(use_pkg_config_static):
{.pragma: libx11, cdecl, importc.}
{.pragma: libx11c, cdecl.}
when defined(use_pkg_config_static):
{.passl: gorge("pkg-config x11 --static --libs").}
else:
{.passl: gorge("pkg-config x11 --libs").}
else:
when defined(macosx):
const
libX11* = "libX11.dylib"
else:
const
libX11* = "libX11.so(|.6)"
{.pragma: libx11, cdecl, dynlib: libX11, importc.}
{.pragma: libx11c, cdecl, dynlib: libX11.}
#
# Automatically converted by H2Pas 0.99.15 from x.h
# The following command line parameters were used:
# -p
# -T
# -S
# -d
# -c
# x.h
#
# Pointers to basic pascal types, inserted by h2pas conversion program.
const
X_PROTOCOL* = 11
X_PROTOCOL_REVISION* = 0
type
PXID* = ptr XID
XID* = culong
PMask* = ptr Mask
Mask* = culong
PPAtom* = ptr PAtom
PAtom* = ptr Atom
Atom* = culong
PVisualID* = ptr VisualID
VisualID* = culong
PTime* = ptr Time
Time* = culong
PPWindow* = ptr PWindow
PWindow* = ptr Window
Window* = XID
PDrawable* = ptr Drawable
Drawable* = XID
PFont* = ptr Font
Font* = XID
PPixmap* = ptr Pixmap
Pixmap* = XID
PCursor* = ptr Cursor
Cursor* = XID
PColormap* = ptr Colormap
Colormap* = XID
PGContext* = ptr GContext
GContext* = XID
PKeySym* = ptr KeySym
KeySym* = XID
PKeyCode* = ptr KeyCode
KeyCode* = char
{.deprecated: [TXID: XID].}
{.deprecated: [TMask: Mask].}
{.deprecated: [TAtom: Atom].}
{.deprecated: [TVisualID: VisualID].}
{.deprecated: [TTime: Time].}
{.deprecated: [TWindow: Window].}
{.deprecated: [TDrawable: Drawable].}
{.deprecated: [TFont: Font].}
{.deprecated: [TPixmap: Pixmap].}
{.deprecated: [TCursor: Cursor].}
{.deprecated: [TColormap: Colormap].}
{.deprecated: [TGContext: GContext].}
{.deprecated: [TKeySym: KeySym].}
{.deprecated: [TKeyCode: KeyCode].}
const
None* = 0
ParentRelative* = 1
CopyFromParent* = 0
PointerWindow* = 0
InputFocus* = 1
PointerRoot* = 1
AnyPropertyType* = 0
AnyKey* = 0
AnyButton* = 0
AllTemporary* = 0
CurrentTime* = 0
NoSymbol* = 0
NoEventMask* = 0
KeyPressMask* = 1 shl 0
KeyReleaseMask* = 1 shl 1
ButtonPressMask* = 1 shl 2
ButtonReleaseMask* = 1 shl 3
EnterWindowMask* = 1 shl 4
LeaveWindowMask* = 1 shl 5
PointerMotionMask* = 1 shl 6
PointerMotionHintMask* = 1 shl 7
Button1MotionMask* = 1 shl 8
Button2MotionMask* = 1 shl 9
Button3MotionMask* = 1 shl 10
Button4MotionMask* = 1 shl 11
Button5MotionMask* = 1 shl 12
ButtonMotionMask* = 1 shl 13
KeymapStateMask* = 1 shl 14
ExposureMask* = 1 shl 15
VisibilityChangeMask* = 1 shl 16
StructureNotifyMask* = 1 shl 17
ResizeRedirectMask* = 1 shl 18
SubstructureNotifyMask* = 1 shl 19
SubstructureRedirectMask* = 1 shl 20
FocusChangeMask* = 1 shl 21
PropertyChangeMask* = 1 shl 22
ColormapChangeMask* = 1 shl 23
OwnerGrabButtonMask* = 1 shl 24
KeyPress* = 2
KeyRelease* = 3
ButtonPress* = 4
ButtonRelease* = 5
MotionNotify* = 6
EnterNotify* = 7
LeaveNotify* = 8
FocusIn* = 9
FocusOut* = 10
KeymapNotify* = 11
Expose* = 12
GraphicsExpose* = 13
NoExpose* = 14
VisibilityNotify* = 15
CreateNotify* = 16
DestroyNotify* = 17
UnmapNotify* = 18
MapNotify* = 19
MapRequest* = 20
ReparentNotify* = 21
ConfigureNotify* = 22
ConfigureRequest* = 23
GravityNotify* = 24
ResizeRequest* = 25
CirculateNotify* = 26
CirculateRequest* = 27
PropertyNotify* = 28
SelectionClear* = 29
SelectionRequest* = 30
SelectionNotify* = 31
ColormapNotify* = 32
ClientMessage* = 33
MappingNotify* = 34
GenericEvent* = 35
LASTEvent* = 36
ShiftMask* = 1 shl 0
LockMask* = 1 shl 1
ControlMask* = 1 shl 2
Mod1Mask* = 1 shl 3
Mod2Mask* = 1 shl 4
Mod3Mask* = 1 shl 5
Mod4Mask* = 1 shl 6
Mod5Mask* = 1 shl 7
ShiftMapIndex* = 0
LockMapIndex* = 1
ControlMapIndex* = 2
Mod1MapIndex* = 3
Mod2MapIndex* = 4
Mod3MapIndex* = 5
Mod4MapIndex* = 6
Mod5MapIndex* = 7
Button1Mask* = 1 shl 8
Button2Mask* = 1 shl 9
Button3Mask* = 1 shl 10
Button4Mask* = 1 shl 11
Button5Mask* = 1 shl 12
AnyModifier* = 1 shl 15
Button1* = 1
Button2* = 2
Button3* = 3
Button4* = 4
Button5* = 5
NotifyNormal* = 0
NotifyGrab* = 1
NotifyUngrab* = 2
NotifyWhileGrabbed* = 3
NotifyHint* = 1
NotifyAncestor* = 0
NotifyVirtual* = 1
NotifyInferior* = 2
NotifyNonlinear* = 3
NotifyNonlinearVirtual* = 4
NotifyPointer* = 5
NotifyPointerRoot* = 6
NotifyDetailNone* = 7
VisibilityUnobscured* = 0
VisibilityPartiallyObscured* = 1
VisibilityFullyObscured* = 2
PlaceOnTop* = 0
PlaceOnBottom* = 1
FamilyInternet* = 0
FamilyDECnet* = 1
FamilyChaos* = 2
FamilyInternet6* = 6
FamilyServerInterpreted* = 5
PropertyNewValue* = 0
PropertyDelete* = 1
ColormapUninstalled* = 0
ColormapInstalled* = 1
GrabModeSync* = 0
GrabModeAsync* = 1
GrabSuccess* = 0
AlreadyGrabbed* = 1
GrabInvalidTime* = 2
GrabNotViewable* = 3
GrabFrozen* = 4
AsyncPointer* = 0
SyncPointer* = 1
ReplayPointer* = 2
AsyncKeyboard* = 3
SyncKeyboard* = 4
ReplayKeyboard* = 5
AsyncBoth* = 6
SyncBoth* = 7
RevertToNone* = None
RevertToPointerRoot* = PointerRoot
RevertToParent* = 2
Success* = 0
BadRequest* = 1
BadValue* = 2
BadWindow* = 3
BadPixmap* = 4
BadAtom* = 5
BadCursor* = 6
BadFont* = 7
BadMatch* = 8
BadDrawable* = 9
BadAccess* = 10
BadAlloc* = 11
BadColor* = 12
BadGC* = 13
BadIDChoice* = 14
BadName* = 15
BadLength* = 16
BadImplementation* = 17
FirstExtensionError* = 128
LastExtensionError* = 255
InputOutput* = 1
InputOnly* = 2
CWBackPixmap* = 1 shl 0
CWBackPixel* = 1 shl 1
CWBorderPixmap* = 1 shl 2
CWBorderPixel* = 1 shl 3
CWBitGravity* = 1 shl 4
CWWinGravity* = 1 shl 5
CWBackingStore* = 1 shl 6
CWBackingPlanes* = 1 shl 7
CWBackingPixel* = 1 shl 8
CWOverrideRedirect* = 1 shl 9
CWSaveUnder* = 1 shl 10
CWEventMask* = 1 shl 11
CWDontPropagate* = 1 shl 12
CWColormap* = 1 shl 13
CWCursor* = 1 shl 14
CWX* = 1 shl 0
CWY* = 1 shl 1
CWWidth* = 1 shl 2
CWHeight* = 1 shl 3
CWBorderWidth* = 1 shl 4
CWSibling* = 1 shl 5
CWStackMode* = 1 shl 6
ForgetGravity* = 0
NorthWestGravity* = 1
NorthGravity* = 2
NorthEastGravity* = 3
WestGravity* = 4
CenterGravity* = 5
EastGravity* = 6
SouthWestGravity* = 7
SouthGravity* = 8
SouthEastGravity* = 9
StaticGravity* = 10
UnmapGravity* = 0
NotUseful* = 0
WhenMapped* = 1
Always* = 2
IsUnmapped* = 0
IsUnviewable* = 1
IsViewable* = 2
SetModeInsert* = 0
SetModeDelete* = 1
DestroyAll* = 0
RetainPermanent* = 1
RetainTemporary* = 2
Above* = 0
Below* = 1
TopIf* = 2
BottomIf* = 3
Opposite* = 4
RaiseLowest* = 0
LowerHighest* = 1
PropModeReplace* = 0
PropModePrepend* = 1
PropModeAppend* = 2
GXclear* = 0x00000000
GXand* = 0x00000001
GXandReverse* = 0x00000002
GXcopy* = 0x00000003
GXandInverted* = 0x00000004
GXnoop* = 0x00000005
GXxor* = 0x00000006
GXor* = 0x00000007
GXnor* = 0x00000008
GXequiv* = 0x00000009
GXinvert* = 0x0000000A
GXorReverse* = 0x0000000B
GXcopyInverted* = 0x0000000C
GXorInverted* = 0x0000000D
GXnand* = 0x0000000E
GXset* = 0x0000000F
LineSolid* = 0
LineOnOffDash* = 1
LineDoubleDash* = 2
CapNotLast* = 0
CapButt* = 1
CapRound* = 2
CapProjecting* = 3
JoinMiter* = 0
JoinRound* = 1
JoinBevel* = 2
FillSolid* = 0
FillTiled* = 1
FillStippled* = 2
FillOpaqueStippled* = 3
EvenOddRule* = 0
WindingRule* = 1
ClipByChildren* = 0
IncludeInferiors* = 1
Unsorted* = 0
YSorted* = 1
YXSorted* = 2
YXBanded* = 3
CoordModeOrigin* = 0
CoordModePrevious* = 1
Complex* = 0
Nonconvex* = 1
Convex* = 2
ArcChord* = 0
ArcPieSlice* = 1
GCFunction* = 1 shl 0
GCPlaneMask* = 1 shl 1
GCForeground* = 1 shl 2
GCBackground* = 1 shl 3
GCLineWidth* = 1 shl 4
GCLineStyle* = 1 shl 5
GCCapStyle* = 1 shl 6
GCJoinStyle* = 1 shl 7
GCFillStyle* = 1 shl 8
GCFillRule* = 1 shl 9
GCTile* = 1 shl 10
GCStipple* = 1 shl 11
GCTileStipXOrigin* = 1 shl 12
GCTileStipYOrigin* = 1 shl 13
GCFont* = 1 shl 14
GCSubwindowMode* = 1 shl 15
GCGraphicsExposures* = 1 shl 16
GCClipXOrigin* = 1 shl 17
GCClipYOrigin* = 1 shl 18
GCClipMask* = 1 shl 19
GCDashOffset* = 1 shl 20
GCDashList* = 1 shl 21
GCArcMode* = 1 shl 22
GCLastBit* = 22
FontLeftToRight* = 0
FontRightToLeft* = 1
FontChange* = 255
XYBitmap* = 0
XYPixmap* = 1
ZPixmap* = 2
AllocNone* = 0
AllocAll* = 1
DoRed* = 1 shl 0
DoGreen* = 1 shl 1
DoBlue* = 1 shl 2
CursorShape* = 0
TileShape* = 1
StippleShape* = 2
AutoRepeatModeOff* = 0
AutoRepeatModeOn* = 1
AutoRepeatModeDefault* = 2
LedModeOff* = 0
LedModeOn* = 1
KBKeyClickPercent* = 1 shl 0
KBBellPercent* = 1 shl 1
KBBellPitch* = 1 shl 2
KBBellDuration* = 1 shl 3
KBLed* = 1 shl 4
KBLedMode* = 1 shl 5
KBKey* = 1 shl 6
KBAutoRepeatMode* = 1 shl 7
MappingSuccess* = 0
MappingBusy* = 1
MappingFailed* = 2
MappingModifier* = 0
MappingKeyboard* = 1
MappingPointer* = 2
DontPreferBlanking* = 0
PreferBlanking* = 1
DefaultBlanking* = 2
DisableScreenSaver* = 0
DisableScreenInterval* = 0
DontAllowExposures* = 0
AllowExposures* = 1
DefaultExposures* = 2
ScreenSaverReset* = 0
ScreenSaverActive* = 1
HostInsert* = 0
HostDelete* = 1
EnableAccess* = 1
DisableAccess* = 0
StaticGray* = 0
GrayScale* = 1
StaticColor* = 2
PseudoColor* = 3
TrueColor* = 4
DirectColor* = 5
LSBFirst* = 0
MSBFirst* = 1
# implementation
{.deadCodeElim: on.}
## The "X11 Window System Protocol" standard defines in Appendix A the
## keysym codes. These 29-bit integer values identify characters or
## functions associated with each key (e.g., via the visible
## engraving) of a keyboard layout. This file assigns mnemonic macro
## names for these keysyms.
##
## This file is also compiled (by xc/lib/X11/util/makekeys.c) into
## hash tables that can be accessed with X11 library functions such as
## XStringToKeysym() and XKeysymToString().
##
## Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
## character, this is noted in a comment that provides both the U+xxxx
## Unicode position, as well as the official Unicode name of the
## character.
##
## Where the correspondence is either not one-to-one or semantically
## unclear, the Unicode position and name are enclosed in
## parentheses. Such legacy keysyms should be considered deprecated
## and are not recommended for use in future keyboard mappings.
##
## For any future extension of the keysyms with characters already
## found in ISO 10646 / Unicode, the following algorithm shall be
## used. The new keysym code position will simply be the character's
## Unicode number plus 0x01000000. The keysym values in the range
## 0x01000100 to 0x0110ffff are reserved to represent Unicode
## characters in the range U+0100 to U+10FFFF.
##
## While most newer Unicode-based X11 clients do already accept
## Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
## will remain necessary for clients -- in the interest of
## compatibility with existing servers -- to also understand the
## existing legacy keysym values in the range 0x0100 to 0x20ff.
##
## Where several mnemonic names are defined for the same keysym in this
## file, all but the first one listed should be considered deprecated.
##
## Mnemonic names for keysyms are defined in this file with lines
## that match one of these Perl regular expressions:
##
## /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
## /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
## /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
##
## When adding new keysyms to this file, do not forget to also update the
## mappings in xc/lib/X11/KeyBind.c and the protocol specification in
## xc/doc/specs/XProtocol/X11.keysyms.
##
#KeySym -> ScanCode table
const
XK_VoidSymbol* = 0xffffff
##
## TTY function keys, cleverly chosen to map to ASCII, for convenience of
## programming, but could have been arbitrary (at the cost of lookup
## tables in client code).
##
const
XK_BackSpace* = 0xff08
XK_Tab* = 0xff09
XK_Linefeed* = 0xff0a
XK_Clear* = 0xff0b
XK_Return* = 0xff0d
XK_Pause* = 0xff13
XK_Scroll_Lock* = 0xff14
XK_Sys_Req* = 0xff15
XK_Escape* = 0xff1b
XK_Delete* = 0xffff
## International & multi-key character composition
const
XK_Multi_key* = 0xff20
XK_Codeinput* = 0xff37
XK_SingleCandidate* = 0xff3c
XK_MultipleCandidate* = 0xff3d
XK_PreviousCandidate* = 0xff3e
## Japanese keyboard support
const
XK_Kanji* = 0xff21
XK_Muhenkan* = 0xff22
XK_Henkan_Mode* = 0xff23
XK_Henkan* = 0xff23
XK_Romaji* = 0xff24
XK_Hiragana* = 0xff25
XK_Katakana* = 0xff26
XK_Hiragana_Katakana* = 0xff27
XK_Zenkaku* = 0xff28
XK_Hankaku* = 0xff29
XK_Zenkaku_Hankaku* = 0xff2a
XK_Touroku* = 0xff2b
XK_Massyo* = 0xff2c
XK_Kana_Lock* = 0xff2d
XK_Kana_Shift* = 0xff2e
XK_Eisu_Shift* = 0xff2f
XK_Eisu_toggle* = 0xff30
XK_Kanji_Bangou* = 0xff37
XK_Zen_Koho* = 0xff3d
XK_Mae_Koho* = 0xff3e
## 0xff31 thru 0xff3f are under XK_KOREAN
## Cursor control & motion
const
XK_Home* = 0xff50
XK_Left* = 0xff51
XK_Up* = 0xff52
XK_Right* = 0xff53
XK_Down* = 0xff54
XK_Prior* = 0xff55
XK_Page_Up* = 0xff55
XK_Next* = 0xff56
XK_Page_Down* = 0xff56
XK_End* = 0xff57
XK_Begin* = 0xff58
## Misc functions
const
XK_Select* = 0xff60
XK_Print* = 0xff61
XK_Execute* = 0xff62
XK_Insert* = 0xff63
XK_Undo* = 0xff65
XK_Redo* = 0xff66
XK_Menu* = 0xff67
XK_Find* = 0xff68
XK_Cancel* = 0xff69
XK_Help* = 0xff6a
XK_Break* = 0xff6b
XK_Mode_switch* = 0xff7e
XK_script_switch* = 0xff7e
XK_Num_Lock* = 0xff7f
## Keypad functions, keypad numbers cleverly chosen to map to ASCII
const
XK_KP_Space* = 0xff80
XK_KP_Tab* = 0xff89
XK_KP_Enter* = 0xff8d
XK_KP_F1* = 0xff91
XK_KP_F2* = 0xff92
XK_KP_F3* = 0xff93
XK_KP_F4* = 0xff94
XK_KP_Home* = 0xff95
XK_KP_Left* = 0xff96
XK_KP_Up* = 0xff97
XK_KP_Right* = 0xff98
XK_KP_Down* = 0xff99
XK_KP_Prior* = 0xff9a
XK_KP_Page_Up* = 0xff9a
XK_KP_Next* = 0xff9b
XK_KP_Page_Down* = 0xff9b
XK_KP_End* = 0xff9c
XK_KP_Begin* = 0xff9d
XK_KP_Insert* = 0xff9e
XK_KP_Delete* = 0xff9f
XK_KP_Equal* = 0xffbd
XK_KP_Multiply* = 0xffaa
XK_KP_Add* = 0xffab
XK_KP_Separator* = 0xffac
XK_KP_Subtract* = 0xffad
XK_KP_Decimal* = 0xffae
XK_KP_Divide* = 0xffaf
XK_KP_0* = 0xffb0
XK_KP_1* = 0xffb1
XK_KP_2* = 0xffb2
XK_KP_3* = 0xffb3
XK_KP_4* = 0xffb4
XK_KP_5* = 0xffb5
XK_KP_6* = 0xffb6
XK_KP_7* = 0xffb7
XK_KP_8* = 0xffb8
XK_KP_9* = 0xffb9
##
## Auxilliary functions; note the duplicate definitions for left and right
## function keys; Sun keyboards and a few other manufactures have such
## function key groups on the left and/or right sides of the keyboard.
## We've not found a keyboard with more than 35 function keys total.
##
const
XK_F1* = 0xffbe
XK_F2* = 0xffbf
XK_F3* = 0xffc0
XK_F4* = 0xffc1
XK_F5* = 0xffc2
XK_F6* = 0xffc3
XK_F7* = 0xffc4
XK_F8* = 0xffc5
XK_F9* = 0xffc6
XK_F10* = 0xffc7
XK_F11* = 0xffc8
XK_L1* = 0xffc8
XK_F12* = 0xffc9
XK_L2* = 0xffc9
XK_F13* = 0xffca
XK_L3* = 0xffca
XK_F14* = 0xffcb
XK_L4* = 0xffcb
XK_F15* = 0xffcc
XK_L5* = 0xffcc
XK_F16* = 0xffcd
XK_L6* = 0xffcd
XK_F17* = 0xffce
XK_L7* = 0xffce
XK_F18* = 0xffcf
XK_L8* = 0xffcf
XK_F19* = 0xffd0
XK_L9* = 0xffd0
XK_F20* = 0xffd1
XK_L10* = 0xffd1
XK_F21* = 0xffd2
XK_R1* = 0xffd2
XK_F22* = 0xffd3
XK_R2* = 0xffd3
XK_F23* = 0xffd4
XK_R3* = 0xffd4
XK_F24* = 0xffd5
XK_R4* = 0xffd5
XK_F25* = 0xffd6
XK_R5* = 0xffd6
XK_F26* = 0xffd7
XK_R6* = 0xffd7
XK_F27* = 0xffd8
XK_R7* = 0xffd8
XK_F28* = 0xffd9
XK_R8* = 0xffd9
XK_F29* = 0xffda
XK_R9* = 0xffda
XK_F30* = 0xffdb
XK_R10* = 0xffdb
XK_F31* = 0xffdc
XK_R11* = 0xffdc
XK_F32* = 0xffdd
XK_R12* = 0xffdd
XK_F33* = 0xffde
XK_R13* = 0xffde
XK_F34* = 0xffdf
XK_R14* = 0xffdf
XK_F35* = 0xffe0
XK_R15* = 0xffe0
## Modifiers
const
XK_Shift_L* = 0xffe1
XK_Shift_R* = 0xffe2
XK_Control_L* = 0xffe3
XK_Control_R* = 0xffe4
XK_Caps_Lock* = 0xffe5
XK_Shift_Lock* = 0xffe6
XK_Meta_L* = 0xffe7
XK_Meta_R* = 0xffe8
XK_Alt_L* = 0xffe9
XK_Alt_R* = 0xffea
XK_Super_L* = 0xffeb
XK_Super_R* = 0xffec
XK_Hyper_L* = 0xffed
XK_Hyper_R* = 0xffee
# Keyboard (XKB) Extension function and modifier keys
# (from Appendix C of "The X Keyboard Extension: Protocol Specification")
## Byte 3 = 0xfe
##
when defined(XK_XKB_KEYS):
const
XK_ISO_Lock* = 0xfe01
XK_ISO_Level2_Latch* = 0xfe02
XK_ISO_Level3_Shift* = 0xfe03
XK_ISO_Level3_Latch* = 0xfe04
XK_ISO_Level3_Lock* = 0xfe05
XK_ISO_Group_Shift* = 0xff7e
XK_ISO_Group_Latch* = 0xfe06
XK_ISO_Group_Lock* = 0xfe07
XK_ISO_Next_Group* = 0xfe08
XK_ISO_Next_Group_Lock* = 0xfe09
XK_ISO_Prev_Group* = 0xfe0a
XK_ISO_Prev_Group_Lock* = 0xfe0b
XK_ISO_First_Group* = 0xfe0c
XK_ISO_First_Group_Lock* = 0xfe0d
XK_ISO_Last_Group* = 0xfe0e
XK_ISO_Last_Group_Lock* = 0xfe0f
XK_ISO_Left_Tab* = 0xfe20
XK_ISO_Move_Line_Up* = 0xfe21
XK_ISO_Move_Line_Down* = 0xfe22
XK_ISO_Partial_Line_Up* = 0xfe23
XK_ISO_Partial_Line_Down* = 0xfe24
XK_ISO_Partial_Space_Left* = 0xfe25
XK_ISO_Partial_Space_Right* = 0xfe26
XK_ISO_Set_Margin_Left* = 0xfe27
XK_ISO_Set_Margin_Right* = 0xfe28
XK_ISO_Release_Margin_Left* = 0xfe29
XK_ISO_Release_Margin_Right* = 0xfe2a
XK_ISO_Release_Both_Margins* = 0xfe2b
XK_ISO_Fast_Cursor_Left* = 0xfe2c
XK_ISO_Fast_Cursor_Right* = 0xfe2d
XK_ISO_Fast_Cursor_Up* = 0xfe2e
XK_ISO_Fast_Cursor_Down* = 0xfe2f
XK_ISO_Continuous_Underline* = 0xfe30
XK_ISO_Discontinuous_Underline* = 0xfe31
XK_ISO_Emphasize* = 0xfe32
XK_ISO_Center_Object* = 0xfe33
XK_ISO_Enter* = 0xfe34
XK_dead_grave* = 0xfe50
XK_dead_acute* = 0xfe51
XK_dead_circumflex* = 0xfe52
XK_dead_tilde* = 0xfe53
XK_dead_macron* = 0xfe54
XK_dead_breve* = 0xfe55
XK_dead_abovedot* = 0xfe56
XK_dead_diaeresis* = 0xfe57
XK_dead_abovering* = 0xfe58
XK_dead_doubleacute* = 0xfe59
XK_dead_caron* = 0xfe5a
XK_dead_cedilla* = 0xfe5b
XK_dead_ogonek* = 0xfe5c
XK_dead_iota* = 0xfe5d
XK_dead_voiced_sound* = 0xfe5e
XK_dead_semivoiced_sound* = 0xfe5f
XK_dead_belowdot* = 0xfe60
XK_dead_hook* = 0xfe61
XK_dead_horn* = 0xfe62
XK_First_Virtual_Screen* = 0xfed0
XK_Prev_Virtual_Screen* = 0xfed1
XK_Next_Virtual_Screen* = 0xfed2
XK_Last_Virtual_Screen* = 0xfed4
XK_Terminate_Server* = 0xfed5
XK_AccessX_Enable* = 0xfe70
XK_AccessX_Feedback_Enable* = 0xfe71
XK_RepeatKeys_Enable* = 0xfe72
XK_SlowKeys_Enable* = 0xfe73
XK_BounceKeys_Enable* = 0xfe74
XK_StickyKeys_Enable* = 0xfe75
XK_MouseKeys_Enable* = 0xfe76
XK_MouseKeys_Accel_Enable* = 0xfe77
XK_Overlay1_Enable* = 0xfe78
XK_Overlay2_Enable* = 0xfe79
XK_AudibleBell_Enable* = 0xfe7a
XK_Pointer_Left* = 0xfee0
XK_Pointer_Right* = 0xfee1
XK_Pointer_Up* = 0xfee2
XK_Pointer_Down* = 0xfee3
XK_Pointer_UpLeft* = 0xfee4
XK_Pointer_UpRight* = 0xfee5
XK_Pointer_DownLeft* = 0xfee6
XK_Pointer_DownRight* = 0xfee7
XK_Pointer_Button_Dflt* = 0xfee8
XK_Pointer_Button1* = 0xfee9
XK_Pointer_Button2* = 0xfeea
XK_Pointer_Button3* = 0xfeeb
XK_Pointer_Button4* = 0xfeec
XK_Pointer_Button5* = 0xfeed
XK_Pointer_DblClick_Dflt* = 0xfeee
XK_Pointer_DblClick1* = 0xfeef
XK_Pointer_DblClick2* = 0xfef0
XK_Pointer_DblClick3* = 0xfef1
XK_Pointer_DblClick4* = 0xfef2
XK_Pointer_DblClick5* = 0xfef3
XK_Pointer_Drag_Dflt* = 0xfef4
XK_Pointer_Drag1* = 0xfef5
XK_Pointer_Drag2* = 0xfef6
XK_Pointer_Drag3* = 0xfef7
XK_Pointer_Drag4* = 0xfef8
XK_Pointer_Drag5* = 0xfefd
XK_Pointer_EnableKeys* = 0xfef9
XK_Pointer_Accelerate* = 0xfefa
XK_Pointer_DfltBtnNext* = 0xfefb
XK_Pointer_DfltBtnPrev* = 0xfefc
##
## 3270 Terminal Keys
## Byte 3 = 0xfd
##
when defined(XK_3270):
const
XK_3270_Duplicate* = 0xfd01
XK_3270_FieldMark* = 0xfd02
XK_3270_Right2* = 0xfd03
XK_3270_Left2* = 0xfd04
XK_3270_BackTab* = 0xfd05
XK_3270_EraseEOF* = 0xfd06
XK_3270_EraseInput* = 0xfd07
XK_3270_Reset* = 0xfd08
XK_3270_Quit* = 0xfd09
XK_3270_PA1* = 0xfd0a
XK_3270_PA2* = 0xfd0b
XK_3270_PA3* = 0xfd0c
XK_3270_Test* = 0xfd0d
XK_3270_Attn* = 0xfd0e
XK_3270_CursorBlink* = 0xfd0f
XK_3270_AltCursor* = 0xfd10
XK_3270_KeyClick* = 0xfd11
XK_3270_Jump* = 0xfd12
XK_3270_Ident* = 0xfd13
XK_3270_Rule* = 0xfd14
XK_3270_Copy* = 0xfd15
XK_3270_Play* = 0xfd16
XK_3270_Setup* = 0xfd17
XK_3270_Record* = 0xfd18
XK_3270_ChangeScreen* = 0xfd19
XK_3270_DeleteWord* = 0xfd1a
XK_3270_ExSelect* = 0xfd1b
XK_3270_CursorSelect* = 0xfd1c
XK_3270_PrintScreen* = 0xfd1d
XK_3270_Enter* = 0xfd1e
##
## Latin 1
## (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
## Byte 3 = 0
##
const
XK_space* = 0x0020
XK_exclam* = 0x0021
XK_quotedbl* = 0x0022
XK_numbersign* = 0x0023
XK_dollar* = 0x0024
XK_percent* = 0x0025
XK_ampersand* = 0x0026
XK_apostrophe* = 0x0027
XK_quoteright* = 0x0027
XK_parenleft* = 0x0028
XK_parenright* = 0x0029
XK_asterisk* = 0x002a
XK_plus* = 0x002b
XK_comma* = 0x002c
XK_minus* = 0x002d
XK_period* = 0x002e
XK_slash* = 0x002f
XK_0* = 0x0030
XK_1* = 0x0031
XK_2* = 0x0032
XK_3* = 0x0033
XK_4* = 0x0034
XK_5* = 0x0035
XK_6* = 0x0036
XK_7* = 0x0037
XK_8* = 0x0038
XK_9* = 0x0039
XK_colon* = 0x003a
XK_semicolon* = 0x003b
XK_less* = 0x003c
XK_equal* = 0x003d
XK_greater* = 0x003e
XK_question* = 0x003f
XK_at* = 0x0040
XK_A* = 0x0041
XK_B* = 0x0042
XK_C* = 0x0043
XK_D* = 0x0044
XK_E* = 0x0045
XK_F* = 0x0046
XK_G* = 0x0047
XK_H* = 0x0048
XK_I* = 0x0049
XK_J* = 0x004a
XK_K* = 0x004b
XK_L* = 0x004c
XK_M* = 0x004d
XK_N* = 0x004e
XK_O* = 0x004f
XK_P* = 0x0050
XK_Q* = 0x0051
XK_R* = 0x0052
XK_S* = 0x0053
XK_T* = 0x0054
XK_U* = 0x0055
XK_V* = 0x0056
XK_W* = 0x0057
XK_X* = 0x0058
XK_Y* = 0x0059
XK_Z* = 0x005a
XK_bracketleft* = 0x005b
XK_backslash* = 0x005c
XK_bracketright* = 0x005d
XK_asciicircum* = 0x005e
XK_underscore* = 0x005f
XK_grave* = 0x0060
XK_quoteleft* = 0x0060
# Because nim devs are stupid stupid stupid
# and the language has case-insensitivity (among other naming things) that causes XK_a and XK_A to be considered the """"""""""""""same""""""""""""
XK_aa* = 0x0061
XK_bb* = 0x0062
XK_cc* = 0x0063
XK_dd* = 0x0064
XK_ee* = 0x0065
XK_ff* = 0x0066
XK_gg* = 0x0067
XK_hh* = 0x0068
XK_ii* = 0x0069
XK_jj* = 0x006a
XK_kk* = 0x006b
XK_ll* = 0x006c
XK_mm* = 0x006d
XK_nn* = 0x006e
XK_oo* = 0x006f
XK_pp* = 0x0070
XK_qq* = 0x0071
XK_rr* = 0x0072
XK_ss* = 0x0073
XK_tt* = 0x0074
XK_uu* = 0x0075
XK_vv* = 0x0076
XK_ww* = 0x0077
XK_xx* = 0x0078
XK_yy* = 0x0079
XK_zz* = 0x007a
XK_braceleft* = 0x007b
XK_bar* = 0x007c
XK_braceright* = 0x007d
XK_asciitilde* = 0x007e
XK_nobreakspace* = 0x00a0
# XK_exclamdown* = 0x00a1
# XK_cent* = 0x00a2
# XK_sterling* = 0x00a3
# XK_currency* = 0x00a4
# XK_yen* = 0x00a5
# XK_brokenbar* = 0x00a6
# XK_section* = 0x00a7
# XK_diaeresis* = 0x00a8
# XK_copyright* = 0x00a9
# XK_ordfeminine* = 0x00aa
# XK_guillemotleft* = 0x00ab
# XK_notsign* = 0x00ac
# XK_hyphen* = 0x00ad
# XK_registered* = 0x00ae
# XK_macron* = 0x00af
# XK_degree* = 0x00b0
# XK_plusminus* = 0x00b1
# XK_twosuperior* = 0x00b2
# XK_threesuperior* = 0x00b3
# XK_acute* = 0x00b4
# XK_mu* = 0x00b5
# XK_paragraph* = 0x00b6
# XK_periodcentered* = 0x00b7
# XK_cedilla* = 0x00b8
# XK_onesuperior* = 0x00b9
# XK_masculine* = 0x00ba
# XK_guillemotright* = 0x00bb
# XK_onequarter* = 0x00bc
# XK_onehalf* = 0x00bd
# XK_threequarters* = 0x00be
# XK_questiondown* = 0x00bf
# XK_Agrave* = 0x00c0
# XK_Aacute* = 0x00c1
# XK_Acircumflex* = 0x00c2
# XK_Atilde* = 0x00c3
# XK_Adiaeresis* = 0x00c4
# XK_Aring* = 0x00c5
# XK_AE* = 0x00c6
# XK_Ccedilla* = 0x00c7
# XK_Egrave* = 0x00c8
# XK_Eacute* = 0x00c9
# XK_Ecircumflex* = 0x00ca
# XK_Ediaeresis* = 0x00cb
# XK_Igrave* = 0x00cc
# XK_Iacute* = 0x00cd
# XK_Icircumflex* = 0x00ce
# XK_Idiaeresis* = 0x00cf
# XK_ETH* = 0x00d0
# XK_Ethh* = 0x00d0
# XK_Ntilde* = 0x00d1
# XK_Ograve* = 0x00d2
# XK_Oacute* = 0x00d3
# XK_Ocircumflex* = 0x00d4
# XK_Otilde* = 0x00d5
# XK_Odiaeresis* = 0x00d6
# XK_multiply* = 0x00d7
# XK_Oslash* = 0x00d8
# XK_Ooblique* = 0x00d8
# XK_Ugrave* = 0x00d9
# XK_Uacute* = 0x00da
# XK_Ucircumflex* = 0x00db
# XK_Udiaeresis* = 0x00dc
# XK_Yacute* = 0x00dd
# XK_THORN* = 0x00de
# XK_Thornn* = 0x00de
# XK_ssharp* = 0x00df
# XK_agravee* = 0x00e0
# XK_aacutee* = 0x00e1
# XK_acircumflexx* = 0x00e2
# XK_atildee* = 0x00e3
# XK_adiaeresiss* = 0x00e4
# XK_aringg* = 0x00e5
# XK_aee* = 0x00e6
# when you uncomment these, you will probably get a lot of redefinition errors because
# stupid stupid stupid nim devs
# XK_ccedilla* = 0x00e7
# XK_egrave* = 0x00e8
# XK_eacute* = 0x00e9
# XK_ecircumflex* = 0x00ea
# XK_ediaeresis* = 0x00eb
# XK_igrave* = 0x00ec
# XK_iacute* = 0x00ed
# XK_icircumflex* = 0x00ee
# XK_idiaeresis* = 0x00ef
# XK_eth* = 0x00f0
# XK_ntilde* = 0x00f1
# XK_ograve* = 0x00f2
# XK_oacute* = 0x00f3
# XK_ocircumflex* = 0x00f4
# XK_otilde* = 0x00f5
# XK_odiaeresis* = 0x00f6
# XK_division* = 0x00f7
# XK_oslash* = 0x00f8
# XK_ooblique* = 0x00f8
# XK_ugrave* = 0x00f9
# XK_uacute* = 0x00fa
# XK_ucircumflex* = 0x00fb
# XK_udiaeresis* = 0x00fc
# XK_yacute* = 0x00fd
# XK_thorn* = 0x00fe
# XK_ydiaeresis* = 0x00ff
##
## Latin 2
## Byte 3 = 1
##
# when defined(XK_LATIN2):
# const
# XK_Aogonek* = 0x01a1
# XK_breve* = 0x01a2
# XK_Lstroke* = 0x01a3
# XK_Lcaron* = 0x01a5
# XK_Sacute* = 0x01a6
# XK_Scaron* = 0x01a9
# XK_Scedilla* = 0x01aa
# XK_Tcaron* = 0x01ab
# XK_Zacute* = 0x01ac
# XK_Zcaron* = 0x01ae
# XK_Zabovedot* = 0x01af
# XK_aogonek* = 0x01b1
# XK_ogonek* = 0x01b2
# XK_lstroke* = 0x01b3
# XK_lcaron* = 0x01b5
# XK_sacute* = 0x01b6
# XK_caron* = 0x01b7
# XK_scaron* = 0x01b9
# XK_scedilla* = 0x01ba
# XK_tcaron* = 0x01bb
# XK_zacute* = 0x01bc
# XK_doubleacute* = 0x01bd
# XK_zcaron* = 0x01be
# XK_zabovedot* = 0x01bf
# XK_Racute* = 0x01c0
# XK_Abreve* = 0x01c3
# XK_Lacute* = 0x01c5
# XK_Cacute* = 0x01c6
# XK_Ccaron* = 0x01c8
# XK_Eogonek* = 0x01ca
# XK_Ecaron* = 0x01cc
# XK_Dcaron* = 0x01cf
# XK_Dstroke* = 0x01d0
# XK_Nacute* = 0x01d1
# XK_Ncaron* = 0x01d2
# XK_Odoubleacute* = 0x01d5
# XK_Rcaron* = 0x01d8
# XK_Uring* = 0x01d9
# XK_Udoubleacute* = 0x01db
# XK_Tcedilla* = 0x01de
# XK_racute* = 0x01e0
# XK_abreve* = 0x01e3
# XK_lacute* = 0x01e5
# XK_cacute* = 0x01e6
# XK_ccaron* = 0x01e8
# XK_eogonek* = 0x01ea
# XK_ecaron* = 0x01ec
# XK_dcaron* = 0x01ef
# XK_dstroke* = 0x01f0
# XK_nacute* = 0x01f1
# XK_ncaron* = 0x01f2
# XK_odoubleacute* = 0x01f5
# XK_udoubleacute* = 0x01fb
# XK_rcaron* = 0x01f8
# XK_uring* = 0x01f9
# XK_tcedilla* = 0x01fe
# XK_abovedot* = 0x01ff
# ##
# ## Latin 3
# ## Byte 3 = 2
# ##
# when defined(XK_LATIN3):
# const
# XK_Hstroke* = 0x02a1
# XK_Hcircumflex* = 0x02a6
# XK_Iabovedot* = 0x02a9
# XK_Gbreve* = 0x02ab
# XK_Jcircumflex* = 0x02ac
# XK_hstroke* = 0x02b1
# XK_hcircumflex* = 0x02b6
# XK_idotless* = 0x02b9
# XK_gbreve* = 0x02bb
# XK_jcircumflex* = 0x02bc
# XK_Cabovedot* = 0x02c5
# XK_Ccircumflex* = 0x02c6
# XK_Gabovedot* = 0x02d5
# XK_Gcircumflex* = 0x02d8
# XK_Ubreve* = 0x02dd
# XK_Scircumflex* = 0x02de
# XK_cabovedot* = 0x02e5
# XK_ccircumflex* = 0x02e6
# XK_gabovedot* = 0x02f5
# XK_gcircumflex* = 0x02f8
# XK_ubreve* = 0x02fd
# XK_scircumflex* = 0x02fe
# ##
# ## Latin 4
# ## Byte 3 = 3
# ##
# when defined(XK_LATIN4):
# const
# XK_kra* = 0x03a2
# XK_kappa* = 0x03a2
# XK_Rcedilla* = 0x03a3
# XK_Itilde* = 0x03a5
# XK_Lcedilla* = 0x03a6
# XK_Emacron* = 0x03aa
# XK_Gcedilla* = 0x03ab
# XK_Tslash* = 0x03ac
# XK_rcedilla* = 0x03b3
# XK_itilde* = 0x03b5
# XK_lcedilla* = 0x03b6
# XK_emacron* = 0x03ba
# XK_gcedilla* = 0x03bb
# XK_tslash* = 0x03bc
# XK_ENG* = 0x03bd
# XK_eng* = 0x03bf
# XK_Amacron* = 0x03c0
# XK_Iogonek* = 0x03c7
# XK_Eabovedot* = 0x03cc
# XK_Imacron* = 0x03cf
# XK_Ncedilla* = 0x03d1
# XK_Omacron* = 0x03d2
# XK_Kcedilla* = 0x03d3
# XK_Uogonek* = 0x03d9
# XK_Utilde* = 0x03dd
# XK_Umacron* = 0x03de
# XK_amacron* = 0x03e0
# XK_iogonek* = 0x03e7
# XK_eabovedot* = 0x03ec
# XK_imacron* = 0x03ef
# XK_ncedilla* = 0x03f1
# XK_omacron* = 0x03f2
# XK_kcedilla* = 0x03f3
# XK_uogonek* = 0x03f9
# XK_utilde* = 0x03fd
# XK_umacron* = 0x03fe
# ##
# ## Latin 8
# ##
# when defined(XK_LATIN8):
# const
# XK_Babovedot* = 0x1001e02
# XK_babovedot* = 0x1001e03
# XK_Dabovedot* = 0x1001e0a
# XK_Wgrave* = 0x1001e80
# XK_Wacute* = 0x1001e82
# XK_dabovedot* = 0x1001e0b
# XK_Ygrave* = 0x1001ef2
# XK_Fabovedot* = 0x1001e1e
# XK_fabovedot* = 0x1001e1f
# XK_Mabovedot* = 0x1001e40
# XK_mabovedot* = 0x1001e41
# XK_Pabovedot* = 0x1001e56
# XK_wgrave* = 0x1001e81
# XK_pabovedot* = 0x1001e57
# XK_wacute* = 0x1001e83
# XK_Sabovedot* = 0x1001e60
# XK_ygrave* = 0x1001ef3
# XK_Wdiaeresis* = 0x1001e84
# XK_wdiaeresis* = 0x1001e85
# XK_sabovedot* = 0x1001e61
# XK_Wcircumflex* = 0x1000174
# XK_Tabovedot* = 0x1001e6a
# XK_Ycircumflex* = 0x1000176
# XK_wcircumflex* = 0x1000175
# XK_tabovedot* = 0x1001e6b
# XK_ycircumflex* = 0x1000177
# ##
# ## Latin 9
# ## Byte 3 = 0x13
# ##
# when defined(XK_LATIN9):
# const
# XK_OE* = 0x13bc
# XK_oe* = 0x13bd
# XK_Ydiaeresis* = 0x13be
# ##
# ## Katakana
# ## Byte 3 = 4
# ##
# when defined(XK_KATAKANA):
# const
# XK_overline* = 0x047e
# XK_kana_fullstop* = 0x04a1
# XK_kana_openingbracket* = 0x04a2
# XK_kana_closingbracket* = 0x04a3
# XK_kana_comma* = 0x04a4
# XK_kana_conjunctive* = 0x04a5
# XK_kana_middledot* = 0x04a5
# XK_kana_WO* = 0x04a6
# XK_kana_a* = 0x04a7
# XK_kana_i* = 0x04a8
# XK_kana_u* = 0x04a9
# XK_kana_e* = 0x04aa
# XK_kana_o* = 0x04ab
# XK_kana_ya* = 0x04ac
# XK_kana_yu* = 0x04ad
# XK_kana_yo* = 0x04ae
# XK_kana_tsu* = 0x04af
# XK_kana_tu* = 0x04af
# XK_prolongedsound* = 0x04b0
# XK_kana_A* = 0x04b1
# XK_kana_I* = 0x04b2
# XK_kana_U* = 0x04b3
# XK_kana_E* = 0x04b4
# XK_kana_O* = 0x04b5
# XK_kana_KA* = 0x04b6
# XK_kana_KI* = 0x04b7
# XK_kana_KU* = 0x04b8
# XK_kana_KE* = 0x04b9
# XK_kana_KO* = 0x04ba
# XK_kana_SA* = 0x04bb
# XK_kana_SHI* = 0x04bc
# XK_kana_SU* = 0x04bd
# XK_kana_SE* = 0x04be
# XK_kana_SO* = 0x04bf
# XK_kana_TA* = 0x04c0
# XK_kana_CHI* = 0x04c1
# XK_kana_TI* = 0x04c1
# XK_kana_TSU* = 0x04c2
# XK_kana_TU* = 0x04c2
# XK_kana_TE* = 0x04c3
# XK_kana_TO* = 0x04c4
# XK_kana_NA* = 0x04c5
# XK_kana_NI* = 0x04c6
# XK_kana_NU* = 0x04c7
# XK_kana_NE* = 0x04c8
# XK_kana_NO* = 0x04c9
# XK_kana_HA* = 0x04ca
# XK_kana_HI* = 0x04cb
# XK_kana_FU* = 0x04cc
# XK_kana_HU* = 0x04cc
# XK_kana_HE* = 0x04cd
# XK_kana_HO* = 0x04ce
# XK_kana_MA* = 0x04cf
# XK_kana_MI* = 0x04d0
# XK_kana_MU* = 0x04d1
# XK_kana_ME* = 0x04d2
# XK_kana_MO* = 0x04d3
# XK_kana_YA* = 0x04d4
# XK_kana_YU* = 0x04d5
# XK_kana_YO* = 0x04d6
# XK_kana_RA* = 0x04d7
# XK_kana_RI* = 0x04d8
# XK_kana_RU* = 0x04d9
# XK_kana_RE* = 0x04da
# XK_kana_RO* = 0x04db
# XK_kana_WA* = 0x04dc
# XK_kana_N* = 0x04dd
# XK_voicedsound* = 0x04de
# XK_semivoicedsound* = 0x04df
# XK_kana_switch* = 0xff7e
# ##
# ## Arabic
# ## Byte 3 = 5
# ##
# when defined(XK_ARABIC):
# const
# XK_Farsi_0* = 0x10006f0
# XK_Farsi_1* = 0x10006f1
# XK_Farsi_2* = 0x10006f2
# XK_Farsi_3* = 0x10006f3
# XK_Farsi_4* = 0x10006f4
# XK_Farsi_5* = 0x10006f5
# XK_Farsi_6* = 0x10006f6
# XK_Farsi_7* = 0x10006f7
# XK_Farsi_8* = 0x10006f8
# XK_Farsi_9* = 0x10006f9
# XK_Arabic_percent* = 0x100066a
# XK_Arabic_superscript_alef* = 0x1000670
# XK_Arabic_tteh* = 0x1000679
# XK_Arabic_peh* = 0x100067e
# XK_Arabic_tcheh* = 0x1000686
# XK_Arabic_ddal* = 0x1000688
# XK_Arabic_rreh* = 0x1000691
# XK_Arabic_comma* = 0x05ac
# XK_Arabic_fullstop* = 0x10006d4
# XK_Arabic_0* = 0x1000660
# XK_Arabic_1* = 0x1000661
# XK_Arabic_2* = 0x1000662
# XK_Arabic_3* = 0x1000663
# XK_Arabic_4* = 0x1000664
# XK_Arabic_5* = 0x1000665
# XK_Arabic_6* = 0x1000666
# XK_Arabic_7* = 0x1000667
# XK_Arabic_8* = 0x1000668
# XK_Arabic_9* = 0x1000669
# XK_Arabic_semicolon* = 0x05bb
# XK_Arabic_question_mark* = 0x05bf
# XK_Arabic_hamza* = 0x05c1
# XK_Arabic_maddaonalef* = 0x05c2
# XK_Arabic_hamzaonalef* = 0x05c3
# XK_Arabic_hamzaonwaw* = 0x05c4
# XK_Arabic_hamzaunderalef* = 0x05c5
# XK_Arabic_hamzaonyeh* = 0x05c6
# XK_Arabic_alef* = 0x05c7
# XK_Arabic_beh* = 0x05c8
# XK_Arabic_tehmarbuta* = 0x05c9
# XK_Arabic_teh* = 0x05ca
# XK_Arabic_theh* = 0x05cb
# XK_Arabic_jeem* = 0x05cc
# XK_Arabic_hah* = 0x05cd
# XK_Arabic_khah* = 0x05ce
# XK_Arabic_dal* = 0x05cf
# XK_Arabic_thal* = 0x05d0
# XK_Arabic_ra* = 0x05d1
# XK_Arabic_zain* = 0x05d2
# XK_Arabic_seen* = 0x05d3
# XK_Arabic_sheen* = 0x05d4
# XK_Arabic_sad* = 0x05d5
# XK_Arabic_dad* = 0x05d6
# XK_Arabic_tah* = 0x05d7
# XK_Arabic_zah* = 0x05d8
# XK_Arabic_ain* = 0x05d9
# XK_Arabic_ghain* = 0x05da
# XK_Arabic_tatweel* = 0x05e0
# XK_Arabic_feh* = 0x05e1
# XK_Arabic_qaf* = 0x05e2
# XK_Arabic_kaf* = 0x05e3
# XK_Arabic_lam* = 0x05e4
# XK_Arabic_meem* = 0x05e5
# XK_Arabic_noon* = 0x05e6
# XK_Arabic_ha* = 0x05e7
# XK_Arabic_heh* = 0x05e7
# XK_Arabic_waw* = 0x05e8
# XK_Arabic_alefmaksura* = 0x05e9
# XK_Arabic_yeh* = 0x05ea
# XK_Arabic_fathatan* = 0x05eb
# XK_Arabic_dammatan* = 0x05ec
# XK_Arabic_kasratan* = 0x05ed
# XK_Arabic_fatha* = 0x05ee
# XK_Arabic_damma* = 0x05ef
# XK_Arabic_kasra* = 0x05f0
# XK_Arabic_shadda* = 0x05f1
# XK_Arabic_sukun* = 0x05f2
# XK_Arabic_madda_above* = 0x1000653
# XK_Arabic_hamza_above* = 0x1000654
# XK_Arabic_hamza_below* = 0x1000655
# XK_Arabic_jeh* = 0x1000698
# XK_Arabic_veh* = 0x10006a4
# XK_Arabic_keheh* = 0x10006a9
# XK_Arabic_gaf* = 0x10006af
# XK_Arabic_noon_ghunna* = 0x10006ba
# XK_Arabic_heh_doachashmee* = 0x10006be
# XK_Farsi_yeh* = 0x10006cc
# XK_Arabic_farsi_yeh* = 0x10006cc
# XK_Arabic_yeh_baree* = 0x10006d2
# XK_Arabic_heh_goal* = 0x10006c1
# XK_Arabic_switch* = 0xff7e
# ##
# ## Cyrillic
# ## Byte 3 = 6
# ##
# when defined(XK_CYRILLIC):
# const
# XK_Cyrillic_GHE_bar* = 0x1000492
# XK_Cyrillic_ghe_bar* = 0x1000493
# XK_Cyrillic_ZHE_descender* = 0x1000496
# XK_Cyrillic_zhe_descender* = 0x1000497
# XK_Cyrillic_KA_descender* = 0x100049a
# XK_Cyrillic_ka_descender* = 0x100049b
# XK_Cyrillic_KA_vertstroke* = 0x100049c
# XK_Cyrillic_ka_vertstroke* = 0x100049d
# XK_Cyrillic_EN_descender* = 0x10004a2
# XK_Cyrillic_en_descender* = 0x10004a3
# XK_Cyrillic_U_straight* = 0x10004ae
# XK_Cyrillic_u_straight* = 0x10004af
# XK_Cyrillic_U_straight_bar* = 0x10004b0
# XK_Cyrillic_u_straight_bar* = 0x10004b1
# XK_Cyrillic_HA_descender* = 0x10004b2
# XK_Cyrillic_ha_descender* = 0x10004b3
# XK_Cyrillic_CHE_descender* = 0x10004b6
# XK_Cyrillic_che_descender* = 0x10004b7
# XK_Cyrillic_CHE_vertstroke* = 0x10004b8
# XK_Cyrillic_che_vertstroke* = 0x10004b9
# XK_Cyrillic_SHHA* = 0x10004ba
# XK_Cyrillic_shha* = 0x10004bb
# XK_Cyrillic_SCHWA* = 0x10004d8
# XK_Cyrillic_schwa* = 0x10004d9
# XK_Cyrillic_I_macron* = 0x10004e2
# XK_Cyrillic_i_macron* = 0x10004e3
# XK_Cyrillic_O_bar* = 0x10004e8
# XK_Cyrillic_o_bar* = 0x10004e9
# XK_Cyrillic_U_macron* = 0x10004ee
# XK_Cyrillic_u_macron* = 0x10004ef
# XK_Serbian_dje* = 0x06a1
# XK_Macedonia_gje* = 0x06a2
# XK_Cyrillic_io* = 0x06a3
# XK_Ukrainian_ie* = 0x06a4
# XK_Ukranian_je* = 0x06a4
# XK_Macedonia_dse* = 0x06a5
# XK_Ukrainian_i* = 0x06a6
# XK_Ukranian_i* = 0x06a6
# XK_Ukrainian_yi* = 0x06a7
# XK_Ukranian_yi* = 0x06a7
# XK_Cyrillic_je* = 0x06a8
# XK_Serbian_je* = 0x06a8
# XK_Cyrillic_lje* = 0x06a9
# XK_Serbian_lje* = 0x06a9
# XK_Cyrillic_nje* = 0x06aa
# XK_Serbian_nje* = 0x06aa
# XK_Serbian_tshe* = 0x06ab
# XK_Macedonia_kje* = 0x06ac
# XK_Ukrainian_ghe_with_upturn* = 0x06ad
# XK_Byelorussian_shortu* = 0x06ae
# XK_Cyrillic_dzhe* = 0x06af
# XK_Serbian_dze* = 0x06af
# XK_numerosign* = 0x06b0
# XK_Serbian_DJE* = 0x06b1
# XK_Macedonia_GJE* = 0x06b2
# XK_Cyrillic_IO* = 0x06b3
# XK_Ukrainian_IE* = 0x06b4
# XK_Ukranian_JE* = 0x06b4
# XK_Macedonia_DSE* = 0x06b5
# XK_Ukrainian_I* = 0x06b6
# XK_Ukranian_I* = 0x06b6
# XK_Ukrainian_YI* = 0x06b7
# XK_Ukranian_YI* = 0x06b7
# XK_Cyrillic_JE* = 0x06b8
# XK_Serbian_JE* = 0x06b8
# XK_Cyrillic_LJE* = 0x06b9
# XK_Serbian_LJE* = 0x06b9
# XK_Cyrillic_NJE* = 0x06ba
# XK_Serbian_NJE* = 0x06ba
# XK_Serbian_TSHE* = 0x06bb
# XK_Macedonia_KJE* = 0x06bc
# XK_Ukrainian_GHE_WITH_UPTURN* = 0x06bd
# XK_Byelorussian_SHORTU* = 0x06be
# XK_Cyrillic_DZHE* = 0x06bf
# XK_Serbian_DZE* = 0x06bf
# XK_Cyrillic_yu* = 0x06c0
# XK_Cyrillic_a* = 0x06c1
# XK_Cyrillic_be* = 0x06c2
# XK_Cyrillic_tse* = 0x06c3
# XK_Cyrillic_de* = 0x06c4
# XK_Cyrillic_ie* = 0x06c5
# XK_Cyrillic_ef* = 0x06c6
# XK_Cyrillic_ghe* = 0x06c7
# XK_Cyrillic_ha* = 0x06c8
# XK_Cyrillic_i* = 0x06c9
# XK_Cyrillic_shorti* = 0x06ca
# XK_Cyrillic_ka* = 0x06cb
# XK_Cyrillic_el* = 0x06cc
# XK_Cyrillic_em* = 0x06cd
# XK_Cyrillic_en* = 0x06ce
# XK_Cyrillic_o* = 0x06cf
# XK_Cyrillic_pe* = 0x06d0
# XK_Cyrillic_ya* = 0x06d1
# XK_Cyrillic_er* = 0x06d2
# XK_Cyrillic_es* = 0x06d3
# XK_Cyrillic_te* = 0x06d4
# XK_Cyrillic_u* = 0x06d5
# XK_Cyrillic_zhe* = 0x06d6
# XK_Cyrillic_ve* = 0x06d7
# XK_Cyrillic_softsign* = 0x06d8
# XK_Cyrillic_yeru* = 0x06d9
# XK_Cyrillic_ze* = 0x06da
# XK_Cyrillic_sha* = 0x06db
# XK_Cyrillic_e* = 0x06dc
# XK_Cyrillic_shcha* = 0x06dd
# XK_Cyrillic_che* = 0x06de
# XK_Cyrillic_hardsign* = 0x06df
# XK_Cyrillic_YU* = 0x06e0
# XK_Cyrillic_A* = 0x06e1
# XK_Cyrillic_BE* = 0x06e2
# XK_Cyrillic_TSE* = 0x06e3
# XK_Cyrillic_DE* = 0x06e4
# XK_Cyrillic_IE* = 0x06e5
# XK_Cyrillic_EF* = 0x06e6
# XK_Cyrillic_GHE* = 0x06e7
# XK_Cyrillic_HA* = 0x06e8
# XK_Cyrillic_I* = 0x06e9
# XK_Cyrillic_SHORTI* = 0x06ea
# XK_Cyrillic_KA* = 0x06eb
# XK_Cyrillic_EL* = 0x06ec
# XK_Cyrillic_EM* = 0x06ed
# XK_Cyrillic_EN* = 0x06ee
# XK_Cyrillic_O* = 0x06ef
# XK_Cyrillic_PE* = 0x06f0
# XK_Cyrillic_YA* = 0x06f1
# XK_Cyrillic_ER* = 0x06f2
# XK_Cyrillic_ES* = 0x06f3
# XK_Cyrillic_TE* = 0x06f4
# XK_Cyrillic_U* = 0x06f5
# XK_Cyrillic_ZHE* = 0x06f6
# XK_Cyrillic_VE* = 0x06f7
# XK_Cyrillic_SOFTSIGN* = 0x06f8
# XK_Cyrillic_YERU* = 0x06f9
# XK_Cyrillic_ZE* = 0x06fa
# XK_Cyrillic_SHA* = 0x06fb
# XK_Cyrillic_E* = 0x06fc
# XK_Cyrillic_SHCHA* = 0x06fd
# XK_Cyrillic_CHE* = 0x06fe
# XK_Cyrillic_HARDSIGN* = 0x06ff
# ##
# ## Greek
# ## (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
# ## Byte 3 = 7
# ##
# when defined(XK_GREEK):
# const
# XK_Greek_ALPHAaccent* = 0x07a1
# XK_Greek_EPSILONaccent* = 0x07a2
# XK_Greek_ETAaccent* = 0x07a3
# XK_Greek_IOTAaccent* = 0x07a4
# XK_Greek_IOTAdieresis* = 0x07a5
# XK_Greek_IOTAdiaeresis* = 0x07a5
# XK_Greek_OMICRONaccent* = 0x07a7
# XK_Greek_UPSILONaccent* = 0x07a8
# XK_Greek_UPSILONdieresis* = 0x07a9
# XK_Greek_OMEGAaccent* = 0x07ab
# XK_Greek_accentdieresis* = 0x07ae
# XK_Greek_horizbar* = 0x07af
# XK_Greek_alphaaccent* = 0x07b1
# XK_Greek_epsilonaccent* = 0x07b2
# XK_Greek_etaaccent* = 0x07b3
# XK_Greek_iotaaccent* = 0x07b4
# XK_Greek_iotadieresis* = 0x07b5
# XK_Greek_iotaaccentdieresis* = 0x07b6
# XK_Greek_omicronaccent* = 0x07b7
# XK_Greek_upsilonaccent* = 0x07b8
# XK_Greek_upsilondieresis* = 0x07b9
# XK_Greek_upsilonaccentdieresis* = 0x07ba
# XK_Greek_omegaaccent* = 0x07bb
# XK_Greek_ALPHA* = 0x07c1
# XK_Greek_BETA* = 0x07c2
# XK_Greek_GAMMA* = 0x07c3
# XK_Greek_DELTA* = 0x07c4
# XK_Greek_EPSILON* = 0x07c5
# XK_Greek_ZETA* = 0x07c6
# XK_Greek_ETA* = 0x07c7
# XK_Greek_THETA* = 0x07c8
# XK_Greek_IOTA* = 0x07c9
# XK_Greek_KAPPA* = 0x07ca
# XK_Greek_LAMDA* = 0x07cb
# XK_Greek_LAMBDA* = 0x07cb
# XK_Greek_MU* = 0x07cc
# XK_Greek_NU* = 0x07cd
# XK_Greek_XI* = 0x07ce
# XK_Greek_OMICRON* = 0x07cf
# XK_Greek_PI* = 0x07d0
# XK_Greek_RHO* = 0x07d1
# XK_Greek_SIGMA* = 0x07d2
# XK_Greek_TAU* = 0x07d4
# XK_Greek_UPSILON* = 0x07d5
# XK_Greek_PHI* = 0x07d6
# XK_Greek_CHI* = 0x07d7
# XK_Greek_PSI* = 0x07d8
# XK_Greek_OMEGA* = 0x07d9
# XK_Greek_alpha* = 0x07e1
# XK_Greek_beta* = 0x07e2
# XK_Greek_gamma* = 0x07e3
# XK_Greek_delta* = 0x07e4
# XK_Greek_epsilon* = 0x07e5
# XK_Greek_zeta* = 0x07e6
# XK_Greek_eta* = 0x07e7
# XK_Greek_theta* = 0x07e8
# XK_Greek_iota* = 0x07e9
# XK_Greek_kappa* = 0x07ea
# XK_Greek_lamda* = 0x07eb
# XK_Greek_lambda* = 0x07eb
# XK_Greek_mu* = 0x07ec
# XK_Greek_nu* = 0x07ed
# XK_Greek_xi* = 0x07ee
# XK_Greek_omicron* = 0x07ef
# XK_Greek_pi* = 0x07f0
# XK_Greek_rho* = 0x07f1
# XK_Greek_sigma* = 0x07f2
# XK_Greek_finalsmallsigma* = 0x07f3
# XK_Greek_tau* = 0x07f4
# XK_Greek_upsilon* = 0x07f5
# XK_Greek_phi* = 0x07f6
# XK_Greek_chi* = 0x07f7
# XK_Greek_psi* = 0x07f8
# XK_Greek_omega* = 0x07f9
# XK_Greek_switch* = 0xff7e
# ##
# ## Technical
# ## (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
# ## Byte 3 = 8
# ##
# when defined(XK_TECHNICAL):
# const
# XK_leftradical* = 0x08a1
# XK_topleftradical* = 0x08a2
# XK_horizconnector* = 0x08a3
# XK_topintegral* = 0x08a4
# XK_botintegral* = 0x08a5
# XK_vertconnector* = 0x08a6
# XK_topleftsqbracket* = 0x08a7
# XK_botleftsqbracket* = 0x08a8
# XK_toprightsqbracket* = 0x08a9
# XK_botrightsqbracket* = 0x08aa
# XK_topleftparens* = 0x08ab
# XK_botleftparens* = 0x08ac
# XK_toprightparens* = 0x08ad
# XK_botrightparens* = 0x08ae
# XK_leftmiddlecurlybrace* = 0x08af
# XK_rightmiddlecurlybrace* = 0x08b0
# XK_topleftsummation* = 0x08b1
# XK_botleftsummation* = 0x08b2
# XK_topvertsummationconnector* = 0x08b3
# XK_botvertsummationconnector* = 0x08b4
# XK_toprightsummation* = 0x08b5
# XK_botrightsummation* = 0x08b6
# XK_rightmiddlesummation* = 0x08b7
# XK_lessthanequal* = 0x08bc
# XK_notequal* = 0x08bd
# XK_greaterthanequal* = 0x08be
# XK_integral* = 0x08bf
# XK_therefore* = 0x08c0
# XK_variation* = 0x08c1
# XK_infinity* = 0x08c2
# XK_nabla* = 0x08c5
# XK_approximate* = 0x08c8
# XK_similarequal* = 0x08c9
# XK_ifonlyif* = 0x08cd
# XK_implies* = 0x08ce
# XK_identical* = 0x08cf
# XK_radical* = 0x08d6
# XK_includedin* = 0x08da
# XK_includes* = 0x08db
# XK_intersection* = 0x08dc
# XK_union* = 0x08dd
# XK_logicaland* = 0x08de
# XK_logicalor* = 0x08df
# XK_partialderivative* = 0x08ef
# XK_function* = 0x08f6
# XK_leftarrow* = 0x08fb
# XK_uparrow* = 0x08fc
# XK_rightarrow* = 0x08fd
# XK_downarrow* = 0x08fe
# ##
# ## Special
# ## (from the DEC VT100 Special Graphics Character Set)
# ## Byte 3 = 9
# ##
# when defined(XK_SPECIAL):
# const
# XK_blank* = 0x09df
# XK_soliddiamond* = 0x09e0
# XK_checkerboard* = 0x09e1
# XK_ht* = 0x09e2
# XK_ff* = 0x09e3
# XK_cr* = 0x09e4
# XK_lf* = 0x09e5
# XK_nl* = 0x09e8
# XK_vt* = 0x09e9
# XK_lowrightcorner* = 0x09ea
# XK_uprightcorner* = 0x09eb
# XK_upleftcorner* = 0x09ec
# XK_lowleftcorner* = 0x09ed
# XK_crossinglines* = 0x09ee
# XK_horizlinescan1* = 0x09ef
# XK_horizlinescan3* = 0x09f0
# XK_horizlinescan5* = 0x09f1
# XK_horizlinescan7* = 0x09f2
# XK_horizlinescan9* = 0x09f3
# XK_leftt* = 0x09f4
# XK_rightt* = 0x09f5
# XK_bott* = 0x09f6
# XK_topt* = 0x09f7
# XK_vertbar* = 0x09f8
# ##
# ## Publishing
# ## (these are probably from a long forgotten DEC Publishing
# ## font that once shipped with DECwrite)
# ## Byte 3 = 0x0a
# ##
# when defined(XK_PUBLISHING):
# const
# XK_emspace* = 0x0aa1
# XK_enspace* = 0x0aa2
# XK_em3space* = 0x0aa3
# XK_em4space* = 0x0aa4
# XK_digitspace* = 0x0aa5
# XK_punctspace* = 0x0aa6
# XK_thinspace* = 0x0aa7
# XK_hairspace* = 0x0aa8
# XK_emdash* = 0x0aa9
# XK_endash* = 0x0aaa
# XK_signifblank* = 0x0aac
# XK_ellipsis* = 0x0aae
# XK_doubbaselinedot* = 0x0aaf
# XK_onethird* = 0x0ab0
# XK_twothirds* = 0x0ab1
# XK_onefifth* = 0x0ab2
# XK_twofifths* = 0x0ab3
# XK_threefifths* = 0x0ab4
# XK_fourfifths* = 0x0ab5
# XK_onesixth* = 0x0ab6
# XK_fivesixths* = 0x0ab7
# XK_careof* = 0x0ab8
# XK_figdash* = 0x0abb
# XK_leftanglebracket* = 0x0abc
# XK_decimalpoint* = 0x0abd
# XK_rightanglebracket* = 0x0abe
# XK_marker* = 0x0abf
# XK_oneeighth* = 0x0ac3
# XK_threeeighths* = 0x0ac4
# XK_fiveeighths* = 0x0ac5
# XK_seveneighths* = 0x0ac6
# XK_trademark* = 0x0ac9
# XK_signaturemark* = 0x0aca
# XK_trademarkincircle* = 0x0acb
# XK_leftopentriangle* = 0x0acc
# XK_rightopentriangle* = 0x0acd
# XK_emopencircle* = 0x0ace
# XK_emopenrectangle* = 0x0acf
# XK_leftsinglequotemark* = 0x0ad0
# XK_rightsinglequotemark* = 0x0ad1
# XK_leftdoublequotemark* = 0x0ad2
# XK_rightdoublequotemark* = 0x0ad3
# XK_prescription* = 0x0ad4
# XK_minutes* = 0x0ad6
# XK_seconds* = 0x0ad7
# XK_latincross* = 0x0ad9
# XK_hexagram* = 0x0ada
# XK_filledrectbullet* = 0x0adb
# XK_filledlefttribullet* = 0x0adc
# XK_filledrighttribullet* = 0x0add
# XK_emfilledcircle* = 0x0ade
# XK_emfilledrect* = 0x0adf
# XK_enopencircbullet* = 0x0ae0
# XK_enopensquarebullet* = 0x0ae1
# XK_openrectbullet* = 0x0ae2
# XK_opentribulletup* = 0x0ae3
# XK_opentribulletdown* = 0x0ae4
# XK_openstar* = 0x0ae5
# XK_enfilledcircbullet* = 0x0ae6
# XK_enfilledsqbullet* = 0x0ae7
# XK_filledtribulletup* = 0x0ae8
# XK_filledtribulletdown* = 0x0ae9
# XK_leftpointer* = 0x0aea
# XK_rightpointer* = 0x0aeb
# XK_club* = 0x0aec
# XK_diamond* = 0x0aed
# XK_heart* = 0x0aee
# XK_maltesecross* = 0x0af0
# XK_dagger* = 0x0af1
# XK_doubledagger* = 0x0af2
# XK_checkmark* = 0x0af3
# XK_ballotcross* = 0x0af4
# XK_musicalsharp* = 0x0af5
# XK_musicalflat* = 0x0af6
# XK_malesymbol* = 0x0af7
# XK_femalesymbol* = 0x0af8
# XK_telephone* = 0x0af9
# XK_telephonerecorder* = 0x0afa
# XK_phonographcopyright* = 0x0afb
# XK_caret* = 0x0afc
# XK_singlelowquotemark* = 0x0afd
# XK_doublelowquotemark* = 0x0afe
# XK_cursor* = 0x0aff
# ##
# ## APL
# ## Byte 3 = 0x0b
# ##
# when defined(XK_APL):
# const
# XK_leftcaret* = 0x0ba3
# XK_rightcaret* = 0x0ba6
# XK_downcaret* = 0x0ba8
# XK_upcaret* = 0x0ba9
# XK_overbar* = 0x0bc0
# XK_downtack* = 0x0bc2
# XK_upshoe* = 0x0bc3
# XK_downstile* = 0x0bc4
# XK_underbar* = 0x0bc6
# XK_jot* = 0x0bca
# XK_quad* = 0x0bcc
# XK_uptack* = 0x0bce
# XK_circle* = 0x0bcf
# XK_upstile* = 0x0bd3
# XK_downshoe* = 0x0bd6
# XK_rightshoe* = 0x0bd8
# XK_leftshoe* = 0x0bda
# XK_lefttack* = 0x0bdc
# XK_righttack* = 0x0bfc
# ##
# ## Hebrew
# ## Byte 3 = 0x0c
# ##
# when defined(XK_HEBREW):
# const
# XK_hebrew_doublelowline* = 0x0cdf
# XK_hebrew_aleph* = 0x0ce0
# XK_hebrew_bet* = 0x0ce1
# XK_hebrew_beth* = 0x0ce1
# XK_hebrew_gimel* = 0x0ce2
# XK_hebrew_gimmel* = 0x0ce2
# XK_hebrew_dalet* = 0x0ce3
# XK_hebrew_daleth* = 0x0ce3
# XK_hebrew_he* = 0x0ce4
# XK_hebrew_waw* = 0x0ce5
# XK_hebrew_zain* = 0x0ce6
# XK_hebrew_zayin* = 0x0ce6
# XK_hebrew_chet* = 0x0ce7
# XK_hebrew_het* = 0x0ce7
# XK_hebrew_tet* = 0x0ce8
# XK_hebrew_teth* = 0x0ce8
# XK_hebrew_yod* = 0x0ce9
# XK_hebrew_finalkaph* = 0x0cea
# XK_hebrew_kaph* = 0x0ceb
# XK_hebrew_lamed* = 0x0cec
# XK_hebrew_finalmem* = 0x0ced
# XK_hebrew_mem* = 0x0cee
# XK_hebrew_finalnun* = 0x0cef
# XK_hebrew_nun* = 0x0cf0
# XK_hebrew_samech* = 0x0cf1
# XK_hebrew_samekh* = 0x0cf1
# XK_hebrew_ayin* = 0x0cf2
# XK_hebrew_finalpe* = 0x0cf3
# XK_hebrew_pe* = 0x0cf4
# XK_hebrew_finalzade* = 0x0cf5
# XK_hebrew_finalzadi* = 0x0cf5
# XK_hebrew_zade* = 0x0cf6
# XK_hebrew_zadi* = 0x0cf6
# XK_hebrew_qoph* = 0x0cf7
# XK_hebrew_kuf* = 0x0cf7
# XK_hebrew_resh* = 0x0cf8
# XK_hebrew_shin* = 0x0cf9
# XK_hebrew_taw* = 0x0cfa
# XK_hebrew_taf* = 0x0cfa
# XK_Hebrew_switch* = 0xff7e
# ##
# ## Thai
# ## Byte 3 = 0x0d
# ##
# when defined(XK_THAI):
# const
# XK_Thai_kokai* = 0x0da1
# XK_Thai_khokhai* = 0x0da2
# XK_Thai_khokhuat* = 0x0da3
# XK_Thai_khokhwai* = 0x0da4
# XK_Thai_khokhon* = 0x0da5
# XK_Thai_khorakhang* = 0x0da6
# XK_Thai_ngongu* = 0x0da7
# XK_Thai_chochan* = 0x0da8
# XK_Thai_choching* = 0x0da9
# XK_Thai_chochang* = 0x0daa
# XK_Thai_soso* = 0x0dab
# XK_Thai_chochoe* = 0x0dac
# XK_Thai_yoying* = 0x0dad
# XK_Thai_dochada* = 0x0dae
# XK_Thai_topatak* = 0x0daf
# XK_Thai_thothan* = 0x0db0
# XK_Thai_thonangmontho* = 0x0db1
# XK_Thai_thophuthao* = 0x0db2
# XK_Thai_nonen* = 0x0db3
# XK_Thai_dodek* = 0x0db4
# XK_Thai_totao* = 0x0db5
# XK_Thai_thothung* = 0x0db6
# XK_Thai_thothahan* = 0x0db7
# XK_Thai_thothong* = 0x0db8
# XK_Thai_nonu* = 0x0db9
# XK_Thai_bobaimai* = 0x0dba
# XK_Thai_popla* = 0x0dbb
# XK_Thai_phophung* = 0x0dbc
# XK_Thai_fofa* = 0x0dbd
# XK_Thai_phophan* = 0x0dbe
# XK_Thai_fofan* = 0x0dbf
# XK_Thai_phosamphao* = 0x0dc0
# XK_Thai_moma* = 0x0dc1
# XK_Thai_yoyak* = 0x0dc2
# XK_Thai_rorua* = 0x0dc3
# XK_Thai_ru* = 0x0dc4
# XK_Thai_loling* = 0x0dc5
# XK_Thai_lu* = 0x0dc6
# XK_Thai_wowaen* = 0x0dc7
# XK_Thai_sosala* = 0x0dc8
# XK_Thai_sorusi* = 0x0dc9
# XK_Thai_sosua* = 0x0dca
# XK_Thai_hohip* = 0x0dcb
# XK_Thai_lochula* = 0x0dcc
# XK_Thai_oang* = 0x0dcd
# XK_Thai_honokhuk* = 0x0dce
# XK_Thai_paiyannoi* = 0x0dcf
# XK_Thai_saraa* = 0x0dd0
# XK_Thai_maihanakat* = 0x0dd1
# XK_Thai_saraaa* = 0x0dd2
# XK_Thai_saraam* = 0x0dd3
# XK_Thai_sarai* = 0x0dd4
# XK_Thai_saraii* = 0x0dd5
# XK_Thai_saraue* = 0x0dd6
# XK_Thai_sarauee* = 0x0dd7
# XK_Thai_sarau* = 0x0dd8
# XK_Thai_sarauu* = 0x0dd9
# XK_Thai_phinthu* = 0x0dda
# XK_Thai_maihanakat_maitho* = 0x0dde
# XK_Thai_baht* = 0x0ddf
# XK_Thai_sarae* = 0x0de0
# XK_Thai_saraae* = 0x0de1
# XK_Thai_sarao* = 0x0de2
# XK_Thai_saraaimaimuan* = 0x0de3
# XK_Thai_saraaimaimalai* = 0x0de4
# XK_Thai_lakkhangyao* = 0x0de5
# XK_Thai_maiyamok* = 0x0de6
# XK_Thai_maitaikhu* = 0x0de7
# XK_Thai_maiek* = 0x0de8
# XK_Thai_maitho* = 0x0de9
# XK_Thai_maitri* = 0x0dea
# XK_Thai_maichattawa* = 0x0deb
# XK_Thai_thanthakhat* = 0x0dec
# XK_Thai_nikhahit* = 0x0ded
# XK_Thai_leksun* = 0x0df0
# XK_Thai_leknung* = 0x0df1
# XK_Thai_leksong* = 0x0df2
# XK_Thai_leksam* = 0x0df3
# XK_Thai_leksi* = 0x0df4
# XK_Thai_lekha* = 0x0df5
# XK_Thai_lekhok* = 0x0df6
# XK_Thai_lekchet* = 0x0df7
# XK_Thai_lekpaet* = 0x0df8
# XK_Thai_lekkao* = 0x0df9
# ##
# ## Korean
# ## Byte 3 = 0x0e
# ##
# when defined(XK_KOREAN):
# const
# XK_Hangul* = 0xff31
# XK_Hangul_Start* = 0xff32
# XK_Hangul_End* = 0xff33
# XK_Hangul_Hanja* = 0xff34
# XK_Hangul_Jamo* = 0xff35
# XK_Hangul_Romaja* = 0xff36
# XK_Hangul_Codeinput* = 0xff37
# XK_Hangul_Jeonja* = 0xff38
# XK_Hangul_Banja* = 0xff39
# XK_Hangul_PreHanja* = 0xff3a
# XK_Hangul_PostHanja* = 0xff3b
# XK_Hangul_SingleCandidate* = 0xff3c
# XK_Hangul_MultipleCandidate* = 0xff3d
# XK_Hangul_PreviousCandidate* = 0xff3e
# XK_Hangul_Special* = 0xff3f
# XK_Hangul_switch* = 0xff7e
# ## Hangul Consonant Characters
# const
# XK_Hangul_Kiyeog* = 0x0ea1
# XK_Hangul_SsangKiyeog* = 0x0ea2
# XK_Hangul_KiyeogSios* = 0x0ea3
# XK_Hangul_Nieun* = 0x0ea4
# XK_Hangul_NieunJieuj* = 0x0ea5
# XK_Hangul_NieunHieuh* = 0x0ea6
# XK_Hangul_Dikeud* = 0x0ea7
# XK_Hangul_SsangDikeud* = 0x0ea8
# XK_Hangul_Rieul* = 0x0ea9
# XK_Hangul_RieulKiyeog* = 0x0eaa
# XK_Hangul_RieulMieum* = 0x0eab
# XK_Hangul_RieulPieub* = 0x0eac
# XK_Hangul_RieulSios* = 0x0ead
# XK_Hangul_RieulTieut* = 0x0eae
# XK_Hangul_RieulPhieuf* = 0x0eaf
# XK_Hangul_RieulHieuh* = 0x0eb0
# XK_Hangul_Mieum* = 0x0eb1
# XK_Hangul_Pieub* = 0x0eb2
# XK_Hangul_SsangPieub* = 0x0eb3
# XK_Hangul_PieubSios* = 0x0eb4
# XK_Hangul_Sios* = 0x0eb5
# XK_Hangul_SsangSios* = 0x0eb6
# XK_Hangul_Ieung* = 0x0eb7
# XK_Hangul_Jieuj* = 0x0eb8
# XK_Hangul_SsangJieuj* = 0x0eb9
# XK_Hangul_Cieuc* = 0x0eba
# XK_Hangul_Khieuq* = 0x0ebb
# XK_Hangul_Tieut* = 0x0ebc
# XK_Hangul_Phieuf* = 0x0ebd
# XK_Hangul_Hieuh* = 0x0ebe
# ## Hangul Vowel Characters
# const
# XK_Hangul_A* = 0x0ebf
# XK_Hangul_AE* = 0x0ec0
# XK_Hangul_YA* = 0x0ec1
# XK_Hangul_YAE* = 0x0ec2
# XK_Hangul_EO* = 0x0ec3
# XK_Hangul_E* = 0x0ec4
# XK_Hangul_YEO* = 0x0ec5
# XK_Hangul_YE* = 0x0ec6
# XK_Hangul_O* = 0x0ec7
# XK_Hangul_WA* = 0x0ec8
# XK_Hangul_WAE* = 0x0ec9
# XK_Hangul_OE* = 0x0eca
# XK_Hangul_YO* = 0x0ecb
# XK_Hangul_U* = 0x0ecc
# XK_Hangul_WEO* = 0x0ecd
# XK_Hangul_WE* = 0x0ece
# XK_Hangul_WI* = 0x0ecf
# XK_Hangul_YU* = 0x0ed0
# XK_Hangul_EU* = 0x0ed1
# XK_Hangul_YI* = 0x0ed2
# XK_Hangul_I* = 0x0ed3
# ## Hangul syllable-final (JongSeong) Characters
# const
# XK_Hangul_J_Kiyeog* = 0x0ed4
# XK_Hangul_J_SsangKiyeog* = 0x0ed5
# XK_Hangul_J_KiyeogSios* = 0x0ed6
# XK_Hangul_J_Nieun* = 0x0ed7
# XK_Hangul_J_NieunJieuj* = 0x0ed8
# XK_Hangul_J_NieunHieuh* = 0x0ed9
# XK_Hangul_J_Dikeud* = 0x0eda
# XK_Hangul_J_Rieul* = 0x0edb
# XK_Hangul_J_RieulKiyeog* = 0x0edc
# XK_Hangul_J_RieulMieum* = 0x0edd
# XK_Hangul_J_RieulPieub* = 0x0ede
# XK_Hangul_J_RieulSios* = 0x0edf
# XK_Hangul_J_RieulTieut* = 0x0ee0
# XK_Hangul_J_RieulPhieuf* = 0x0ee1
# XK_Hangul_J_RieulHieuh* = 0x0ee2
# XK_Hangul_J_Mieum* = 0x0ee3
# XK_Hangul_J_Pieub* = 0x0ee4
# XK_Hangul_J_PieubSios* = 0x0ee5
# XK_Hangul_J_Sios* = 0x0ee6
# XK_Hangul_J_SsangSios* = 0x0ee7
# XK_Hangul_J_Ieung* = 0x0ee8
# XK_Hangul_J_Jieuj* = 0x0ee9
# XK_Hangul_J_Cieuc* = 0x0eea
# XK_Hangul_J_Khieuq* = 0x0eeb
# XK_Hangul_J_Tieut* = 0x0eec
# XK_Hangul_J_Phieuf* = 0x0eed
# XK_Hangul_J_Hieuh* = 0x0eee
# ## Ancient Hangul Consonant Characters
# const
# XK_Hangul_RieulYeorinHieuh* = 0x0eef
# XK_Hangul_SunkyeongeumMieum* = 0x0ef0
# XK_Hangul_SunkyeongeumPieub* = 0x0ef1
# XK_Hangul_PanSios* = 0x0ef2
# XK_Hangul_KkogjiDalrinIeung* = 0x0ef3
# XK_Hangul_SunkyeongeumPhieuf* = 0x0ef4
# XK_Hangul_YeorinHieuh* = 0x0ef5
# ## Ancient Hangul Vowel Characters
# const
# XK_Hangul_AraeA* = 0x0ef6
# XK_Hangul_AraeAE* = 0x0ef7
# ## Ancient Hangul syllable-final (JongSeong) Characters
# const
# XK_Hangul_J_PanSios* = 0x0ef8
# XK_Hangul_J_KkogjiDalrinIeung* = 0x0ef9
# XK_Hangul_J_YeorinHieuh* = 0x0efa
# ## Korean currency symbol
# const
# XK_Korean_Won* = 0x0eff
# ##
# ## Armenian
# ##
# when defined(XK_ARMENIAN):
# const
# XK_Armenian_ligature_ew* = 0x1000587
# XK_Armenian_full_stop* = 0x1000589
# XK_Armenian_verjaket* = 0x1000589
# XK_Armenian_separation_mark* = 0x100055d
# XK_Armenian_but* = 0x100055d
# XK_Armenian_hyphen* = 0x100058a
# XK_Armenian_yentamna* = 0x100058a
# XK_Armenian_exclam* = 0x100055c
# XK_Armenian_amanak* = 0x100055c
# XK_Armenian_accent* = 0x100055b
# XK_Armenian_shesht* = 0x100055b
# XK_Armenian_question* = 0x100055e
# XK_Armenian_paruyk* = 0x100055e
# XK_Armenian_AYB* = 0x1000531
# XK_Armenian_ayb* = 0x1000561
# XK_Armenian_BEN* = 0x1000532
# XK_Armenian_ben* = 0x1000562
# XK_Armenian_GIM* = 0x1000533
# XK_Armenian_gim* = 0x1000563
# XK_Armenian_DA* = 0x1000534
# XK_Armenian_da* = 0x1000564
# XK_Armenian_YECH* = 0x1000535
# XK_Armenian_yech* = 0x1000565
# XK_Armenian_ZA* = 0x1000536
# XK_Armenian_za* = 0x1000566
# XK_Armenian_E* = 0x1000537
# XK_Armenian_e* = 0x1000567
# XK_Armenian_AT* = 0x1000538
# XK_Armenian_at* = 0x1000568
# XK_Armenian_TO* = 0x1000539
# XK_Armenian_to* = 0x1000569
# XK_Armenian_ZHE* = 0x100053a
# XK_Armenian_zhe* = 0x100056a
# XK_Armenian_INI* = 0x100053b
# XK_Armenian_ini* = 0x100056b
# XK_Armenian_LYUN* = 0x100053c
# XK_Armenian_lyun* = 0x100056c
# XK_Armenian_KHE* = 0x100053d
# XK_Armenian_khe* = 0x100056d
# XK_Armenian_TSA* = 0x100053e
# XK_Armenian_tsa* = 0x100056e
# XK_Armenian_KEN* = 0x100053f
# XK_Armenian_ken* = 0x100056f
# XK_Armenian_HO* = 0x1000540
# XK_Armenian_ho* = 0x1000570
# XK_Armenian_DZA* = 0x1000541
# XK_Armenian_dza* = 0x1000571
# XK_Armenian_GHAT* = 0x1000542
# XK_Armenian_ghat* = 0x1000572
# XK_Armenian_TCHE* = 0x1000543
# XK_Armenian_tche* = 0x1000573
# XK_Armenian_MEN* = 0x1000544
# XK_Armenian_men* = 0x1000574
# XK_Armenian_HI* = 0x1000545
# XK_Armenian_hi* = 0x1000575
# XK_Armenian_NU* = 0x1000546
# XK_Armenian_nu* = 0x1000576
# XK_Armenian_SHA* = 0x1000547
# XK_Armenian_sha* = 0x1000577
# XK_Armenian_VO* = 0x1000548
# XK_Armenian_vo* = 0x1000578
# XK_Armenian_CHA* = 0x1000549
# XK_Armenian_cha* = 0x1000579
# XK_Armenian_PE* = 0x100054a
# XK_Armenian_pe* = 0x100057a
# XK_Armenian_JE* = 0x100054b
# XK_Armenian_je* = 0x100057b
# XK_Armenian_RA* = 0x100054c
# XK_Armenian_ra* = 0x100057c
# XK_Armenian_SE* = 0x100054d
# XK_Armenian_se* = 0x100057d
# XK_Armenian_VEV* = 0x100054e
# XK_Armenian_vev* = 0x100057e
# XK_Armenian_TYUN* = 0x100054f
# XK_Armenian_tyun* = 0x100057f
# XK_Armenian_RE* = 0x1000550
# XK_Armenian_re* = 0x1000580
# XK_Armenian_TSO* = 0x1000551
# XK_Armenian_tso* = 0x1000581
# XK_Armenian_VYUN* = 0x1000552
# XK_Armenian_vyun* = 0x1000582
# XK_Armenian_PYUR* = 0x1000553
# XK_Armenian_pyur* = 0x1000583
# XK_Armenian_KE* = 0x1000554
# XK_Armenian_ke* = 0x1000584
# XK_Armenian_O* = 0x1000555
# XK_Armenian_o* = 0x1000585
# XK_Armenian_FE* = 0x1000556
# XK_Armenian_fe* = 0x1000586
# XK_Armenian_apostrophe* = 0x100055a
# ##
# ## Georgian
# ##
# when defined(XK_GEORGIAN):
# const
# XK_Georgian_an* = 0x10010d0
# XK_Georgian_ban* = 0x10010d1
# XK_Georgian_gan* = 0x10010d2
# XK_Georgian_don* = 0x10010d3
# XK_Georgian_en* = 0x10010d4
# XK_Georgian_vin* = 0x10010d5
# XK_Georgian_zen* = 0x10010d6
# XK_Georgian_tan* = 0x10010d7
# XK_Georgian_in* = 0x10010d8
# XK_Georgian_kan* = 0x10010d9
# XK_Georgian_las* = 0x10010da
# XK_Georgian_man* = 0x10010db
# XK_Georgian_nar* = 0x10010dc
# XK_Georgian_on* = 0x10010dd
# XK_Georgian_par* = 0x10010de
# XK_Georgian_zhar* = 0x10010df
# XK_Georgian_rae* = 0x10010e0
# XK_Georgian_san* = 0x10010e1
# XK_Georgian_tar* = 0x10010e2
# XK_Georgian_un* = 0x10010e3
# XK_Georgian_phar* = 0x10010e4
# XK_Georgian_khar* = 0x10010e5
# XK_Georgian_ghan* = 0x10010e6
# XK_Georgian_qar* = 0x10010e7
# XK_Georgian_shin* = 0x10010e8
# XK_Georgian_chin* = 0x10010e9
# XK_Georgian_can* = 0x10010ea
# XK_Georgian_jil* = 0x10010eb
# XK_Georgian_cil* = 0x10010ec
# XK_Georgian_char* = 0x10010ed
# XK_Georgian_xan* = 0x10010ee
# XK_Georgian_jhan* = 0x10010ef
# XK_Georgian_hae* = 0x10010f0
# XK_Georgian_he* = 0x10010f1
# XK_Georgian_hie* = 0x10010f2
# XK_Georgian_we* = 0x10010f3
# XK_Georgian_har* = 0x10010f4
# XK_Georgian_hoe* = 0x10010f5
# XK_Georgian_fi* = 0x10010f6
# ##
# ## Azeri (and other Turkic or Caucasian languages)
# ##
# when defined(XK_CAUCASUS):
# ## latin
# const
# XK_Xabovedot* = 0x1001e8a
# XK_Ibreve* = 0x100012c
# XK_Zstroke* = 0x10001b5
# XK_Gcaron* = 0x10001e6
# XK_Ocaron* = 0x10001d1
# XK_Obarred* = 0x100019f
# XK_xabovedot* = 0x1001e8b
# XK_ibreve* = 0x100012d
# XK_zstroke* = 0x10001b6
# XK_gcaron* = 0x10001e7
# XK_ocaron* = 0x10001d2
# XK_obarred* = 0x1000275
# XK_SCHWA* = 0x100018f
# XK_schwa* = 0x1000259
# ## those are not really Caucasus
# ## For Inupiak
# const
# XK_Lbelowdot* = 0x1001e36
# XK_lbelowdot* = 0x1001e37
# ##
# ## Vietnamese
# ##
# when defined(XK_VIETNAMESE):
# const
# XK_Abelowdot* = 0x1001ea0
# XK_abelowdot* = 0x1001ea1
# XK_Ahook* = 0x1001ea2
# XK_ahook* = 0x1001ea3
# XK_Acircumflexacute* = 0x1001ea4
# XK_acircumflexacute* = 0x1001ea5
# XK_Acircumflexgrave* = 0x1001ea6
# XK_acircumflexgrave* = 0x1001ea7
# XK_Acircumflexhook* = 0x1001ea8
# XK_acircumflexhook* = 0x1001ea9
# XK_Acircumflextilde* = 0x1001eaa
# XK_acircumflextilde* = 0x1001eab
# XK_Acircumflexbelowdot* = 0x1001eac
# XK_acircumflexbelowdot* = 0x1001ead
# XK_Abreveacute* = 0x1001eae
# XK_abreveacute* = 0x1001eaf
# XK_Abrevegrave* = 0x1001eb0
# XK_abrevegrave* = 0x1001eb1
# XK_Abrevehook* = 0x1001eb2
# XK_abrevehook* = 0x1001eb3
# XK_Abrevetilde* = 0x1001eb4
# XK_abrevetilde* = 0x1001eb5
# XK_Abrevebelowdot* = 0x1001eb6
# XK_abrevebelowdot* = 0x1001eb7
# XK_Ebelowdot* = 0x1001eb8
# XK_ebelowdot* = 0x1001eb9
# XK_Ehook* = 0x1001eba
# XK_ehook* = 0x1001ebb
# XK_Etilde* = 0x1001ebc
# XK_etilde* = 0x1001ebd
# XK_Ecircumflexacute* = 0x1001ebe
# XK_ecircumflexacute* = 0x1001ebf
# XK_Ecircumflexgrave* = 0x1001ec0
# XK_ecircumflexgrave* = 0x1001ec1
# XK_Ecircumflexhook* = 0x1001ec2
# XK_ecircumflexhook* = 0x1001ec3
# XK_Ecircumflextilde* = 0x1001ec4
# XK_ecircumflextilde* = 0x1001ec5
# XK_Ecircumflexbelowdot* = 0x1001ec6
# XK_ecircumflexbelowdot* = 0x1001ec7
# XK_Ihook* = 0x1001ec8
# XK_ihook* = 0x1001ec9
# XK_Ibelowdot* = 0x1001eca
# XK_ibelowdot* = 0x1001ecb
# XK_Obelowdot* = 0x1001ecc
# XK_obelowdot* = 0x1001ecd
# XK_Ohook* = 0x1001ece
# XK_ohook* = 0x1001ecf
# XK_Ocircumflexacute* = 0x1001ed0
# XK_ocircumflexacute* = 0x1001ed1
# XK_Ocircumflexgrave* = 0x1001ed2
# XK_ocircumflexgrave* = 0x1001ed3
# XK_Ocircumflexhook* = 0x1001ed4
# XK_ocircumflexhook* = 0x1001ed5
# XK_Ocircumflextilde* = 0x1001ed6
# XK_ocircumflextilde* = 0x1001ed7
# XK_Ocircumflexbelowdot* = 0x1001ed8
# XK_ocircumflexbelowdot* = 0x1001ed9
# XK_Ohornacute* = 0x1001eda
# XK_ohornacute* = 0x1001edb
# XK_Ohorngrave* = 0x1001edc
# XK_ohorngrave* = 0x1001edd
# XK_Ohornhook* = 0x1001ede
# XK_ohornhook* = 0x1001edf
# XK_Ohorntilde* = 0x1001ee0
# XK_ohorntilde* = 0x1001ee1
# XK_Ohornbelowdot* = 0x1001ee2
# XK_ohornbelowdot* = 0x1001ee3
# XK_Ubelowdot* = 0x1001ee4
# XK_ubelowdot* = 0x1001ee5
# XK_Uhook* = 0x1001ee6
# XK_uhook* = 0x1001ee7
# XK_Uhornacute* = 0x1001ee8
# XK_uhornacute* = 0x1001ee9
# XK_Uhorngrave* = 0x1001eea
# XK_uhorngrave* = 0x1001eeb
# XK_Uhornhook* = 0x1001eec
# XK_uhornhook* = 0x1001eed
# XK_Uhorntilde* = 0x1001eee
# XK_uhorntilde* = 0x1001eef
# XK_Uhornbelowdot* = 0x1001ef0
# XK_uhornbelowdot* = 0x1001ef1
# XK_Ybelowdot* = 0x1001ef4
# XK_ybelowdot* = 0x1001ef5
# XK_Yhook* = 0x1001ef6
# XK_yhook* = 0x1001ef7
# XK_Ytilde* = 0x1001ef8
# XK_ytilde* = 0x1001ef9
# XK_Ohorn* = 0x10001a0
# XK_ohorn* = 0x10001a1
# XK_Uhorn* = 0x10001af
# XK_uhorn* = 0x10001b0
# when defined(XK_CURRENCY):
# const
# XK_EcuSign* = 0x10020a0
# XK_ColonSign* = 0x10020a1
# XK_CruzeiroSign* = 0x10020a2
# XK_FFrancSign* = 0x10020a3
# XK_LiraSign* = 0x10020a4
# XK_MillSign* = 0x10020a5
# XK_NairaSign* = 0x10020a6
# XK_PesetaSign* = 0x10020a7
# XK_RupeeSign* = 0x10020a8
# XK_WonSign* = 0x10020a9
# XK_NewSheqelSign* = 0x10020aa
# XK_DongSign* = 0x10020ab
# XK_EuroSign* = 0x20ac
/*
* The "X11 Window System Protocol" standard defines in Appendix A the
* keysym codes. These 29-bit integer values identify characters or
* functions associated with each key (e.g., via the visible
* engraving) of a keyboard layout. This file assigns mnemonic macro
* names for these keysyms.
*
* This file is also compiled (by xc/lib/X11/util/makekeys.c) into
* hash tables that can be accessed with X11 library functions such as
* XStringToKeysym() and XKeysymToString().
*
* Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
* character, this is noted in a comment that provides both the U+xxxx
* Unicode position, as well as the official Unicode name of the
* character.
*
* Where the correspondence is either not one-to-one or semantically
* unclear, the Unicode position and name are enclosed in
* parentheses. Such legacy keysyms should be considered deprecated
* and are not recommended for use in future keyboard mappings.
*
* For any future extension of the keysyms with characters already
* found in ISO 10646 / Unicode, the following algorithm shall be
* used. The new keysym code position will simply be the character's
* Unicode number plus 0x01000000. The keysym values in the range
* 0x01000100 to 0x0110ffff are reserved to represent Unicode
* characters in the range U+0100 to U+10FFFF.
*
* While most newer Unicode-based X11 clients do already accept
* Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
* will remain necessary for clients -- in the interest of
* compatibility with existing servers -- to also understand the
* existing legacy keysym values in the range 0x0100 to 0x20ff.
*
* Where several mnemonic names are defined for the same keysym in this
* file, all but the first one listed should be considered deprecated.
*
* Mnemonic names for keysyms are defined in this file with lines
* that match one of these Perl regular expressions:
*
* /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
* /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
* /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
*
* When adding new keysyms to this file, do not forget to also update the
* mappings in xc/lib/X11/KeyBind.c and the protocol specification in
* xc/doc/specs/XProtocol/X11.keysyms.
*/
#define XK_VoidSymbol 0xffffff /* Void symbol */
#ifdef XK_MISCELLANY
/*
* TTY function keys, cleverly chosen to map to ASCII, for convenience of
* programming, but could have been arbitrary (at the cost of lookup
* tables in client code).
*/
#define XK_BackSpace 0xff08 /* Back space, back char */
#define XK_Tab 0xff09
#define XK_Linefeed 0xff0a /* Linefeed, LF */
#define XK_Clear 0xff0b
#define XK_Return 0xff0d /* Return, enter */
#define XK_Pause 0xff13 /* Pause, hold */
#define XK_Scroll_Lock 0xff14
#define XK_Sys_Req 0xff15
#define XK_Escape 0xff1b
#define XK_Delete 0xffff /* Delete, rubout */
/* International & multi-key character composition */
#define XK_Multi_key 0xff20 /* Multi-key character compose */
#define XK_Codeinput 0xff37
#define XK_SingleCandidate 0xff3c
#define XK_MultipleCandidate 0xff3d
#define XK_PreviousCandidate 0xff3e
/* Japanese keyboard support */
#define XK_Kanji 0xff21 /* Kanji, Kanji convert */
#define XK_Muhenkan 0xff22 /* Cancel Conversion */
#define XK_Henkan_Mode 0xff23 /* Start/Stop Conversion */
#define XK_Henkan 0xff23 /* Alias for Henkan_Mode */
#define XK_Romaji 0xff24 /* to Romaji */
#define XK_Hiragana 0xff25 /* to Hiragana */
#define XK_Katakana 0xff26 /* to Katakana */
#define XK_Hiragana_Katakana 0xff27 /* Hiragana/Katakana toggle */
#define XK_Zenkaku 0xff28 /* to Zenkaku */
#define XK_Hankaku 0xff29 /* to Hankaku */
#define XK_Zenkaku_Hankaku 0xff2a /* Zenkaku/Hankaku toggle */
#define XK_Touroku 0xff2b /* Add to Dictionary */
#define XK_Massyo 0xff2c /* Delete from Dictionary */
#define XK_Kana_Lock 0xff2d /* Kana Lock */
#define XK_Kana_Shift 0xff2e /* Kana Shift */
#define XK_Eisu_Shift 0xff2f /* Alphanumeric Shift */
#define XK_Eisu_toggle 0xff30 /* Alphanumeric toggle */
#define XK_Kanji_Bangou 0xff37 /* Codeinput */
#define XK_Zen_Koho 0xff3d /* Multiple/All Candidate(s) */
#define XK_Mae_Koho 0xff3e /* Previous Candidate */
/* 0xff31 thru 0xff3f are under XK_KOREAN */
/* Cursor control & motion */
#define XK_Home 0xff50
#define XK_Left 0xff51 /* Move left, left arrow */
#define XK_Up 0xff52 /* Move up, up arrow */
#define XK_Right 0xff53 /* Move right, right arrow */
#define XK_Down 0xff54 /* Move down, down arrow */
#define XK_Prior 0xff55 /* Prior, previous */
#define XK_Page_Up 0xff55
#define XK_Next 0xff56 /* Next */
#define XK_Page_Down 0xff56
#define XK_End 0xff57 /* EOL */
#define XK_Begin 0xff58 /* BOL */
/* Misc functions */
#define XK_Select 0xff60 /* Select, mark */
#define XK_Print 0xff61
#define XK_Execute 0xff62 /* Execute, run, do */
#define XK_Insert 0xff63 /* Insert, insert here */
#define XK_Undo 0xff65
#define XK_Redo 0xff66 /* Redo, again */
#define XK_Menu 0xff67
#define XK_Find 0xff68 /* Find, search */
#define XK_Cancel 0xff69 /* Cancel, stop, abort, exit */
#define XK_Help 0xff6a /* Help */
#define XK_Break 0xff6b
#define XK_Mode_switch 0xff7e /* Character set switch */
#define XK_script_switch 0xff7e /* Alias for mode_switch */
#define XK_Num_Lock 0xff7f
/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
#define XK_KP_Space 0xff80 /* Space */
#define XK_KP_Tab 0xff89
#define XK_KP_Enter 0xff8d /* Enter */
#define XK_KP_F1 0xff91 /* PF1, KP_A, ... */
#define XK_KP_F2 0xff92
#define XK_KP_F3 0xff93
#define XK_KP_F4 0xff94
#define XK_KP_Home 0xff95
#define XK_KP_Left 0xff96
#define XK_KP_Up 0xff97
#define XK_KP_Right 0xff98
#define XK_KP_Down 0xff99
#define XK_KP_Prior 0xff9a
#define XK_KP_Page_Up 0xff9a
#define XK_KP_Next 0xff9b
#define XK_KP_Page_Down 0xff9b
#define XK_KP_End 0xff9c
#define XK_KP_Begin 0xff9d
#define XK_KP_Insert 0xff9e
#define XK_KP_Delete 0xff9f
#define XK_KP_Equal 0xffbd /* Equals */
#define XK_KP_Multiply 0xffaa
#define XK_KP_Add 0xffab
#define XK_KP_Separator 0xffac /* Separator, often comma */
#define XK_KP_Subtract 0xffad
#define XK_KP_Decimal 0xffae
#define XK_KP_Divide 0xffaf
#define XK_KP_0 0xffb0
#define XK_KP_1 0xffb1
#define XK_KP_2 0xffb2
#define XK_KP_3 0xffb3
#define XK_KP_4 0xffb4
#define XK_KP_5 0xffb5
#define XK_KP_6 0xffb6
#define XK_KP_7 0xffb7
#define XK_KP_8 0xffb8
#define XK_KP_9 0xffb9
/*
* Auxilliary functions; note the duplicate definitions for left and right
* function keys; Sun keyboards and a few other manufactures have such
* function key groups on the left and/or right sides of the keyboard.
* We've not found a keyboard with more than 35 function keys total.
*/
#define XK_F1 0xffbe
#define XK_F2 0xffbf
#define XK_F3 0xffc0
#define XK_F4 0xffc1
#define XK_F5 0xffc2
#define XK_F6 0xffc3
#define XK_F7 0xffc4
#define XK_F8 0xffc5
#define XK_F9 0xffc6
#define XK_F10 0xffc7
#define XK_F11 0xffc8
#define XK_L1 0xffc8
#define XK_F12 0xffc9
#define XK_L2 0xffc9
#define XK_F13 0xffca
#define XK_L3 0xffca
#define XK_F14 0xffcb
#define XK_L4 0xffcb
#define XK_F15 0xffcc
#define XK_L5 0xffcc
#define XK_F16 0xffcd
#define XK_L6 0xffcd
#define XK_F17 0xffce
#define XK_L7 0xffce
#define XK_F18 0xffcf
#define XK_L8 0xffcf
#define XK_F19 0xffd0
#define XK_L9 0xffd0
#define XK_F20 0xffd1
#define XK_L10 0xffd1
#define XK_F21 0xffd2
#define XK_R1 0xffd2
#define XK_F22 0xffd3
#define XK_R2 0xffd3
#define XK_F23 0xffd4
#define XK_R3 0xffd4
#define XK_F24 0xffd5
#define XK_R4 0xffd5
#define XK_F25 0xffd6
#define XK_R5 0xffd6
#define XK_F26 0xffd7
#define XK_R6 0xffd7
#define XK_F27 0xffd8
#define XK_R7 0xffd8
#define XK_F28 0xffd9
#define XK_R8 0xffd9
#define XK_F29 0xffda
#define XK_R9 0xffda
#define XK_F30 0xffdb
#define XK_R10 0xffdb
#define XK_F31 0xffdc
#define XK_R11 0xffdc
#define XK_F32 0xffdd
#define XK_R12 0xffdd
#define XK_F33 0xffde
#define XK_R13 0xffde
#define XK_F34 0xffdf
#define XK_R14 0xffdf
#define XK_F35 0xffe0
#define XK_R15 0xffe0
/* Modifiers */
#define XK_Shift_L 0xffe1 /* Left shift */
#define XK_Shift_R 0xffe2 /* Right shift */
#define XK_Control_L 0xffe3 /* Left control */
#define XK_Control_R 0xffe4 /* Right control */
#define XK_Caps_Lock 0xffe5 /* Caps lock */
#define XK_Shift_Lock 0xffe6 /* Shift lock */
#define XK_Meta_L 0xffe7 /* Left meta */
#define XK_Meta_R 0xffe8 /* Right meta */
#define XK_Alt_L 0xffe9 /* Left alt */
#define XK_Alt_R 0xffea /* Right alt */
#define XK_Super_L 0xffeb /* Left super */
#define XK_Super_R 0xffec /* Right super */
#define XK_Hyper_L 0xffed /* Left hyper */
#define XK_Hyper_R 0xffee /* Right hyper */
#endif /* XK_MISCELLANY */
/*
* Keyboard (XKB) Extension function and modifier keys
* (from Appendix C of "The X Keyboard Extension: Protocol Specification")
* Byte 3 = 0xfe
*/
#ifdef XK_XKB_KEYS
#define XK_ISO_Lock 0xfe01
#define XK_ISO_Level2_Latch 0xfe02
#define XK_ISO_Level3_Shift 0xfe03
#define XK_ISO_Level3_Latch 0xfe04
#define XK_ISO_Level3_Lock 0xfe05
#define XK_ISO_Group_Shift 0xff7e /* Alias for mode_switch */
#define XK_ISO_Group_Latch 0xfe06
#define XK_ISO_Group_Lock 0xfe07
#define XK_ISO_Next_Group 0xfe08
#define XK_ISO_Next_Group_Lock 0xfe09
#define XK_ISO_Prev_Group 0xfe0a
#define XK_ISO_Prev_Group_Lock 0xfe0b
#define XK_ISO_First_Group 0xfe0c
#define XK_ISO_First_Group_Lock 0xfe0d
#define XK_ISO_Last_Group 0xfe0e
#define XK_ISO_Last_Group_Lock 0xfe0f
#define XK_ISO_Left_Tab 0xfe20
#define XK_ISO_Move_Line_Up 0xfe21
#define XK_ISO_Move_Line_Down 0xfe22
#define XK_ISO_Partial_Line_Up 0xfe23
#define XK_ISO_Partial_Line_Down 0xfe24
#define XK_ISO_Partial_Space_Left 0xfe25
#define XK_ISO_Partial_Space_Right 0xfe26
#define XK_ISO_Set_Margin_Left 0xfe27
#define XK_ISO_Set_Margin_Right 0xfe28
#define XK_ISO_Release_Margin_Left 0xfe29
#define XK_ISO_Release_Margin_Right 0xfe2a
#define XK_ISO_Release_Both_Margins 0xfe2b
#define XK_ISO_Fast_Cursor_Left 0xfe2c
#define XK_ISO_Fast_Cursor_Right 0xfe2d
#define XK_ISO_Fast_Cursor_Up 0xfe2e
#define XK_ISO_Fast_Cursor_Down 0xfe2f
#define XK_ISO_Continuous_Underline 0xfe30
#define XK_ISO_Discontinuous_Underline 0xfe31
#define XK_ISO_Emphasize 0xfe32
#define XK_ISO_Center_Object 0xfe33
#define XK_ISO_Enter 0xfe34
#define XK_dead_grave 0xfe50
#define XK_dead_acute 0xfe51
#define XK_dead_circumflex 0xfe52
#define XK_dead_tilde 0xfe53
#define XK_dead_macron 0xfe54
#define XK_dead_breve 0xfe55
#define XK_dead_abovedot 0xfe56
#define XK_dead_diaeresis 0xfe57
#define XK_dead_abovering 0xfe58
#define XK_dead_doubleacute 0xfe59
#define XK_dead_caron 0xfe5a
#define XK_dead_cedilla 0xfe5b
#define XK_dead_ogonek 0xfe5c
#define XK_dead_iota 0xfe5d
#define XK_dead_voiced_sound 0xfe5e
#define XK_dead_semivoiced_sound 0xfe5f
#define XK_dead_belowdot 0xfe60
#define XK_dead_hook 0xfe61
#define XK_dead_horn 0xfe62
#define XK_First_Virtual_Screen 0xfed0
#define XK_Prev_Virtual_Screen 0xfed1
#define XK_Next_Virtual_Screen 0xfed2
#define XK_Last_Virtual_Screen 0xfed4
#define XK_Terminate_Server 0xfed5
#define XK_AccessX_Enable 0xfe70
#define XK_AccessX_Feedback_Enable 0xfe71
#define XK_RepeatKeys_Enable 0xfe72
#define XK_SlowKeys_Enable 0xfe73
#define XK_BounceKeys_Enable 0xfe74
#define XK_StickyKeys_Enable 0xfe75
#define XK_MouseKeys_Enable 0xfe76
#define XK_MouseKeys_Accel_Enable 0xfe77
#define XK_Overlay1_Enable 0xfe78
#define XK_Overlay2_Enable 0xfe79
#define XK_AudibleBell_Enable 0xfe7a
#define XK_Pointer_Left 0xfee0
#define XK_Pointer_Right 0xfee1
#define XK_Pointer_Up 0xfee2
#define XK_Pointer_Down 0xfee3
#define XK_Pointer_UpLeft 0xfee4
#define XK_Pointer_UpRight 0xfee5
#define XK_Pointer_DownLeft 0xfee6
#define XK_Pointer_DownRight 0xfee7
#define XK_Pointer_Button_Dflt 0xfee8
#define XK_Pointer_Button1 0xfee9
#define XK_Pointer_Button2 0xfeea
#define XK_Pointer_Button3 0xfeeb
#define XK_Pointer_Button4 0xfeec
#define XK_Pointer_Button5 0xfeed
#define XK_Pointer_DblClick_Dflt 0xfeee
#define XK_Pointer_DblClick1 0xfeef
#define XK_Pointer_DblClick2 0xfef0
#define XK_Pointer_DblClick3 0xfef1
#define XK_Pointer_DblClick4 0xfef2
#define XK_Pointer_DblClick5 0xfef3
#define XK_Pointer_Drag_Dflt 0xfef4
#define XK_Pointer_Drag1 0xfef5
#define XK_Pointer_Drag2 0xfef6
#define XK_Pointer_Drag3 0xfef7
#define XK_Pointer_Drag4 0xfef8
#define XK_Pointer_Drag5 0xfefd
#define XK_Pointer_EnableKeys 0xfef9
#define XK_Pointer_Accelerate 0xfefa
#define XK_Pointer_DfltBtnNext 0xfefb
#define XK_Pointer_DfltBtnPrev 0xfefc
#endif /* XK_XKB_KEYS */
/*
* 3270 Terminal Keys
* Byte 3 = 0xfd
*/
#ifdef XK_3270
#define XK_3270_Duplicate 0xfd01
#define XK_3270_FieldMark 0xfd02
#define XK_3270_Right2 0xfd03
#define XK_3270_Left2 0xfd04
#define XK_3270_BackTab 0xfd05
#define XK_3270_EraseEOF 0xfd06
#define XK_3270_EraseInput 0xfd07
#define XK_3270_Reset 0xfd08
#define XK_3270_Quit 0xfd09
#define XK_3270_PA1 0xfd0a
#define XK_3270_PA2 0xfd0b
#define XK_3270_PA3 0xfd0c
#define XK_3270_Test 0xfd0d
#define XK_3270_Attn 0xfd0e
#define XK_3270_CursorBlink 0xfd0f
#define XK_3270_AltCursor 0xfd10
#define XK_3270_KeyClick 0xfd11
#define XK_3270_Jump 0xfd12
#define XK_3270_Ident 0xfd13
#define XK_3270_Rule 0xfd14
#define XK_3270_Copy 0xfd15
#define XK_3270_Play 0xfd16
#define XK_3270_Setup 0xfd17
#define XK_3270_Record 0xfd18
#define XK_3270_ChangeScreen 0xfd19
#define XK_3270_DeleteWord 0xfd1a
#define XK_3270_ExSelect 0xfd1b
#define XK_3270_CursorSelect 0xfd1c
#define XK_3270_PrintScreen 0xfd1d
#define XK_3270_Enter 0xfd1e
#endif /* XK_3270 */
/*
* Latin 1
* (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
* Byte 3 = 0
*/
#ifdef XK_LATIN1
#define XK_space 0x0020 /* U+0020 SPACE */
#define XK_exclam 0x0021 /* U+0021 EXCLAMATION MARK */
#define XK_quotedbl 0x0022 /* U+0022 QUOTATION MARK */
#define XK_numbersign 0x0023 /* U+0023 NUMBER SIGN */
#define XK_dollar 0x0024 /* U+0024 DOLLAR SIGN */
#define XK_percent 0x0025 /* U+0025 PERCENT SIGN */
#define XK_ampersand 0x0026 /* U+0026 AMPERSAND */
#define XK_apostrophe 0x0027 /* U+0027 APOSTROPHE */
#define XK_quoteright 0x0027 /* deprecated */
#define XK_parenleft 0x0028 /* U+0028 LEFT PARENTHESIS */
#define XK_parenright 0x0029 /* U+0029 RIGHT PARENTHESIS */
#define XK_asterisk 0x002a /* U+002A ASTERISK */
#define XK_plus 0x002b /* U+002B PLUS SIGN */
#define XK_comma 0x002c /* U+002C COMMA */
#define XK_minus 0x002d /* U+002D HYPHEN-MINUS */
#define XK_period 0x002e /* U+002E FULL STOP */
#define XK_slash 0x002f /* U+002F SOLIDUS */
#define XK_0 0x0030 /* U+0030 DIGIT ZERO */
#define XK_1 0x0031 /* U+0031 DIGIT ONE */
#define XK_2 0x0032 /* U+0032 DIGIT TWO */
#define XK_3 0x0033 /* U+0033 DIGIT THREE */
#define XK_4 0x0034 /* U+0034 DIGIT FOUR */
#define XK_5 0x0035 /* U+0035 DIGIT FIVE */
#define XK_6 0x0036 /* U+0036 DIGIT SIX */
#define XK_7 0x0037 /* U+0037 DIGIT SEVEN */
#define XK_8 0x0038 /* U+0038 DIGIT EIGHT */
#define XK_9 0x0039 /* U+0039 DIGIT NINE */
#define XK_colon 0x003a /* U+003A COLON */
#define XK_semicolon 0x003b /* U+003B SEMICOLON */
#define XK_less 0x003c /* U+003C LESS-THAN SIGN */
#define XK_equal 0x003d /* U+003D EQUALS SIGN */
#define XK_greater 0x003e /* U+003E GREATER-THAN SIGN */
#define XK_question 0x003f /* U+003F QUESTION MARK */
#define XK_at 0x0040 /* U+0040 COMMERCIAL AT */
#define XK_A 0x0041 /* U+0041 LATIN CAPITAL LETTER A */
#define XK_B 0x0042 /* U+0042 LATIN CAPITAL LETTER B */
#define XK_C 0x0043 /* U+0043 LATIN CAPITAL LETTER C */
#define XK_D 0x0044 /* U+0044 LATIN CAPITAL LETTER D */
#define XK_E 0x0045 /* U+0045 LATIN CAPITAL LETTER E */
#define XK_F 0x0046 /* U+0046 LATIN CAPITAL LETTER F */
#define XK_G 0x0047 /* U+0047 LATIN CAPITAL LETTER G */
#define XK_H 0x0048 /* U+0048 LATIN CAPITAL LETTER H */
#define XK_I 0x0049 /* U+0049 LATIN CAPITAL LETTER I */
#define XK_J 0x004a /* U+004A LATIN CAPITAL LETTER J */
#define XK_K 0x004b /* U+004B LATIN CAPITAL LETTER K */
#define XK_L 0x004c /* U+004C LATIN CAPITAL LETTER L */
#define XK_M 0x004d /* U+004D LATIN CAPITAL LETTER M */
#define XK_N 0x004e /* U+004E LATIN CAPITAL LETTER N */
#define XK_O 0x004f /* U+004F LATIN CAPITAL LETTER O */
#define XK_P 0x0050 /* U+0050 LATIN CAPITAL LETTER P */
#define XK_Q 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */
#define XK_R 0x0052 /* U+0052 LATIN CAPITAL LETTER R */
#define XK_S 0x0053 /* U+0053 LATIN CAPITAL LETTER S */
#define XK_T 0x0054 /* U+0054 LATIN CAPITAL LETTER T */
#define XK_U 0x0055 /* U+0055 LATIN CAPITAL LETTER U */
#define XK_V 0x0056 /* U+0056 LATIN CAPITAL LETTER V */
#define XK_W 0x0057 /* U+0057 LATIN CAPITAL LETTER W */
#define XK_X 0x0058 /* U+0058 LATIN CAPITAL LETTER X */
#define XK_Y 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */
#define XK_Z 0x005a /* U+005A LATIN CAPITAL LETTER Z */
#define XK_bracketleft 0x005b /* U+005B LEFT SQUARE BRACKET */
#define XK_backslash 0x005c /* U+005C REVERSE SOLIDUS */
#define XK_bracketright 0x005d /* U+005D RIGHT SQUARE BRACKET */
#define XK_asciicircum 0x005e /* U+005E CIRCUMFLEX ACCENT */
#define XK_underscore 0x005f /* U+005F LOW LINE */
#define XK_grave 0x0060 /* U+0060 GRAVE ACCENT */
#define XK_quoteleft 0x0060 /* deprecated */
#define XK_a 0x0061 /* U+0061 LATIN SMALL LETTER A */
#define XK_b 0x0062 /* U+0062 LATIN SMALL LETTER B */
#define XK_c 0x0063 /* U+0063 LATIN SMALL LETTER C */
#define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
#define XK_e 0x0065 /* U+0065 LATIN SMALL LETTER E */
#define XK_f 0x0066 /* U+0066 LATIN SMALL LETTER F */
#define XK_g 0x0067 /* U+0067 LATIN SMALL LETTER G */
#define XK_h 0x0068 /* U+0068 LATIN SMALL LETTER H */
#define XK_i 0x0069 /* U+0069 LATIN SMALL LETTER I */
#define XK_j 0x006a /* U+006A LATIN SMALL LETTER J */
#define XK_k 0x006b /* U+006B LATIN SMALL LETTER K */
#define XK_l 0x006c /* U+006C LATIN SMALL LETTER L */
#define XK_m 0x006d /* U+006D LATIN SMALL LETTER M */
#define XK_n 0x006e /* U+006E LATIN SMALL LETTER N */
#define XK_o 0x006f /* U+006F LATIN SMALL LETTER O */
#define XK_p 0x0070 /* U+0070 LATIN SMALL LETTER P */
#define XK_q 0x0071 /* U+0071 LATIN SMALL LETTER Q */
#define XK_r 0x0072 /* U+0072 LATIN SMALL LETTER R */
#define XK_s 0x0073 /* U+0073 LATIN SMALL LETTER S */
#define XK_t 0x0074 /* U+0074 LATIN SMALL LETTER T */
#define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
#define XK_v 0x0076 /* U+0076 LATIN SMALL LETTER V */
#define XK_w 0x0077 /* U+0077 LATIN SMALL LETTER W */
#define XK_x 0x0078 /* U+0078 LATIN SMALL LETTER X */
#define XK_y 0x0079 /* U+0079 LATIN SMALL LETTER Y */
#define XK_z 0x007a /* U+007A LATIN SMALL LETTER Z */
#define XK_braceleft 0x007b /* U+007B LEFT CURLY BRACKET */
#define XK_bar 0x007c /* U+007C VERTICAL LINE */
#define XK_braceright 0x007d /* U+007D RIGHT CURLY BRACKET */
#define XK_asciitilde 0x007e /* U+007E TILDE */
#define XK_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */
#define XK_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */
#define XK_cent 0x00a2 /* U+00A2 CENT SIGN */
#define XK_sterling 0x00a3 /* U+00A3 POUND SIGN */
#define XK_currency 0x00a4 /* U+00A4 CURRENCY SIGN */
#define XK_yen 0x00a5 /* U+00A5 YEN SIGN */
#define XK_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */
#define XK_section 0x00a7 /* U+00A7 SECTION SIGN */
#define XK_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
#define XK_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
#define XK_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
#define XK_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XK_notsign 0x00ac /* U+00AC NOT SIGN */
#define XK_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
#define XK_registered 0x00ae /* U+00AE REGISTERED SIGN */
#define XK_macron 0x00af /* U+00AF MACRON */
#define XK_degree 0x00b0 /* U+00B0 DEGREE SIGN */
#define XK_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */
#define XK_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */
#define XK_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */
#define XK_acute 0x00b4 /* U+00B4 ACUTE ACCENT */
#define XK_mu 0x00b5 /* U+00B5 MICRO SIGN */
#define XK_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */
#define XK_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
#define XK_cedilla 0x00b8 /* U+00B8 CEDILLA */
#define XK_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
#define XK_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
#define XK_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XK_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
#define XK_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
#define XK_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */
#define XK_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */
#define XK_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */
#define XK_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */
#define XK_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
#define XK_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */
#define XK_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */
#define XK_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */
#define XK_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */
#define XK_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */
#define XK_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */
#define XK_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
#define XK_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
#define XK_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */
#define XK_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */
#define XK_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */
#define XK_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
#define XK_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */
#define XK_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */
#define XK_Eth 0x00d0 /* deprecated */
#define XK_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */
#define XK_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */
#define XK_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */
#define XK_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
#define XK_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */
#define XK_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */
#define XK_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */
#define XK_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
#define XK_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
#define XK_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */
#define XK_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */
#define XK_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
#define XK_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */
#define XK_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */
#define XK_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */
#define XK_Thorn 0x00de /* deprecated */
#define XK_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */
#define XK_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */
#define XK_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */
#define XK_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */
#define XK_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */
#define XK_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */
#define XK_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */
#define XK_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */
#define XK_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */
#define XK_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */
#define XK_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
#define XK_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */
#define XK_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */
#define XK_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */
#define XK_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */
#define XK_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */
#define XK_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */
#define XK_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */
#define XK_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */
#define XK_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */
#define XK_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */
#define XK_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */
#define XK_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */
#define XK_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */
#define XK_division 0x00f7 /* U+00F7 DIVISION SIGN */
#define XK_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
#define XK_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
#define XK_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */
#define XK_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */
#define XK_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */
#define XK_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */
#define XK_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */
#define XK_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */
#define XK_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
#endif /* XK_LATIN1 */
/*
* Latin 2
* Byte 3 = 1
*/
#ifdef XK_LATIN2
#define XK_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */
#define XK_breve 0x01a2 /* U+02D8 BREVE */
#define XK_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
#define XK_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */
#define XK_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */
#define XK_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */
#define XK_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */
#define XK_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */
#define XK_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */
#define XK_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */
#define XK_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */
#define XK_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */
#define XK_ogonek 0x01b2 /* U+02DB OGONEK */
#define XK_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */
#define XK_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */
#define XK_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */
#define XK_caron 0x01b7 /* U+02C7 CARON */
#define XK_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */
#define XK_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */
#define XK_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */
#define XK_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */
#define XK_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */
#define XK_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */
#define XK_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */
#define XK_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */
#define XK_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */
#define XK_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */
#define XK_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */
#define XK_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */
#define XK_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */
#define XK_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */
#define XK_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */
#define XK_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */
#define XK_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */
#define XK_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */
#define XK_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
#define XK_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */
#define XK_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */
#define XK_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
#define XK_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */
#define XK_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */
#define XK_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */
#define XK_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */
#define XK_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */
#define XK_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */
#define XK_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */
#define XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */
#define XK_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */
#define XK_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */
#define XK_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */
#define XK_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */
#define XK_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */
#define XK_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */
#define XK_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */
#define XK_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */
#define XK_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */
#define XK_abovedot 0x01ff /* U+02D9 DOT ABOVE */
#endif /* XK_LATIN2 */
/*
* Latin 3
* Byte 3 = 2
*/
#ifdef XK_LATIN3
#define XK_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */
#define XK_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
#define XK_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */
#define XK_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */
#define XK_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
#define XK_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */
#define XK_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */
#define XK_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */
#define XK_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */
#define XK_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */
#define XK_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */
#define XK_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
#define XK_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */
#define XK_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
#define XK_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */
#define XK_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
#define XK_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */
#define XK_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */
#define XK_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */
#define XK_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */
#define XK_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */
#define XK_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */
#endif /* XK_LATIN3 */
/*
* Latin 4
* Byte 3 = 3
*/
#ifdef XK_LATIN4
#define XK_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */
#define XK_kappa 0x03a2 /* deprecated */
#define XK_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */
#define XK_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */
#define XK_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */
#define XK_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */
#define XK_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */
#define XK_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */
#define XK_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */
#define XK_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */
#define XK_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */
#define XK_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */
#define XK_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */
#define XK_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */
#define XK_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */
#define XK_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */
#define XK_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */
#define XK_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */
#define XK_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */
#define XK_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */
#define XK_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */
#define XK_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */
#define XK_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */
#define XK_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */
#define XK_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */
#define XK_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */
#define XK_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */
#define XK_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */
#define XK_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */
#define XK_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */
#define XK_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */
#define XK_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */
#define XK_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */
#define XK_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */
#define XK_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */
#define XK_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */
#endif /* XK_LATIN4 */
/*
* Latin 8
*/
#ifdef XK_LATIN8
#define XK_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */
#define XK_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */
#define XK_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */
#define XK_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */
#define XK_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */
#define XK_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */
#define XK_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */
#define XK_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */
#define XK_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */
#define XK_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */
#define XK_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */
#define XK_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */
#define XK_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */
#define XK_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */
#define XK_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */
#define XK_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */
#define XK_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */
#define XK_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */
#define XK_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */
#define XK_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */
#define XK_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
#define XK_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */
#define XK_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
#define XK_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */
#define XK_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */
#define XK_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */
#endif /* XK_LATIN8 */
/*
* Latin 9
* Byte 3 = 0x13
*/
#ifdef XK_LATIN9
#define XK_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */
#define XK_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */
#define XK_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */
#endif /* XK_LATIN9 */
/*
* Katakana
* Byte 3 = 4
*/
#ifdef XK_KATAKANA
#define XK_overline 0x047e /* U+203E OVERLINE */
#define XK_kana_fullstop 0x04a1 /* U+3002 IDEOGRAPHIC FULL STOP */
#define XK_kana_openingbracket 0x04a2 /* U+300C LEFT CORNER BRACKET */
#define XK_kana_closingbracket 0x04a3 /* U+300D RIGHT CORNER BRACKET */
#define XK_kana_comma 0x04a4 /* U+3001 IDEOGRAPHIC COMMA */
#define XK_kana_conjunctive 0x04a5 /* U+30FB KATAKANA MIDDLE DOT */
#define XK_kana_middledot 0x04a5 /* deprecated */
#define XK_kana_WO 0x04a6 /* U+30F2 KATAKANA LETTER WO */
#define XK_kana_a 0x04a7 /* U+30A1 KATAKANA LETTER SMALL A */
#define XK_kana_i 0x04a8 /* U+30A3 KATAKANA LETTER SMALL I */
#define XK_kana_u 0x04a9 /* U+30A5 KATAKANA LETTER SMALL U */
#define XK_kana_e 0x04aa /* U+30A7 KATAKANA LETTER SMALL E */
#define XK_kana_o 0x04ab /* U+30A9 KATAKANA LETTER SMALL O */
#define XK_kana_ya 0x04ac /* U+30E3 KATAKANA LETTER SMALL YA */
#define XK_kana_yu 0x04ad /* U+30E5 KATAKANA LETTER SMALL YU */
#define XK_kana_yo 0x04ae /* U+30E7 KATAKANA LETTER SMALL YO */
#define XK_kana_tsu 0x04af /* U+30C3 KATAKANA LETTER SMALL TU */
#define XK_kana_tu 0x04af /* deprecated */
#define XK_prolongedsound 0x04b0 /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */
#define XK_kana_A 0x04b1 /* U+30A2 KATAKANA LETTER A */
#define XK_kana_I 0x04b2 /* U+30A4 KATAKANA LETTER I */
#define XK_kana_U 0x04b3 /* U+30A6 KATAKANA LETTER U */
#define XK_kana_E 0x04b4 /* U+30A8 KATAKANA LETTER E */
#define XK_kana_O 0x04b5 /* U+30AA KATAKANA LETTER O */
#define XK_kana_KA 0x04b6 /* U+30AB KATAKANA LETTER KA */
#define XK_kana_KI 0x04b7 /* U+30AD KATAKANA LETTER KI */
#define XK_kana_KU 0x04b8 /* U+30AF KATAKANA LETTER KU */
#define XK_kana_KE 0x04b9 /* U+30B1 KATAKANA LETTER KE */
#define XK_kana_KO 0x04ba /* U+30B3 KATAKANA LETTER KO */
#define XK_kana_SA 0x04bb /* U+30B5 KATAKANA LETTER SA */
#define XK_kana_SHI 0x04bc /* U+30B7 KATAKANA LETTER SI */
#define XK_kana_SU 0x04bd /* U+30B9 KATAKANA LETTER SU */
#define XK_kana_SE 0x04be /* U+30BB KATAKANA LETTER SE */
#define XK_kana_SO 0x04bf /* U+30BD KATAKANA LETTER SO */
#define XK_kana_TA 0x04c0 /* U+30BF KATAKANA LETTER TA */
#define XK_kana_CHI 0x04c1 /* U+30C1 KATAKANA LETTER TI */
#define XK_kana_TI 0x04c1 /* deprecated */
#define XK_kana_TSU 0x04c2 /* U+30C4 KATAKANA LETTER TU */
#define XK_kana_TU 0x04c2 /* deprecated */
#define XK_kana_TE 0x04c3 /* U+30C6 KATAKANA LETTER TE */
#define XK_kana_TO 0x04c4 /* U+30C8 KATAKANA LETTER TO */
#define XK_kana_NA 0x04c5 /* U+30CA KATAKANA LETTER NA */
#define XK_kana_NI 0x04c6 /* U+30CB KATAKANA LETTER NI */
#define XK_kana_NU 0x04c7 /* U+30CC KATAKANA LETTER NU */
#define XK_kana_NE 0x04c8 /* U+30CD KATAKANA LETTER NE */
#define XK_kana_NO 0x04c9 /* U+30CE KATAKANA LETTER NO */
#define XK_kana_HA 0x04ca /* U+30CF KATAKANA LETTER HA */
#define XK_kana_HI 0x04cb /* U+30D2 KATAKANA LETTER HI */
#define XK_kana_FU 0x04cc /* U+30D5 KATAKANA LETTER HU */
#define XK_kana_HU 0x04cc /* deprecated */
#define XK_kana_HE 0x04cd /* U+30D8 KATAKANA LETTER HE */
#define XK_kana_HO 0x04ce /* U+30DB KATAKANA LETTER HO */
#define XK_kana_MA 0x04cf /* U+30DE KATAKANA LETTER MA */
#define XK_kana_MI 0x04d0 /* U+30DF KATAKANA LETTER MI */
#define XK_kana_MU 0x04d1 /* U+30E0 KATAKANA LETTER MU */
#define XK_kana_ME 0x04d2 /* U+30E1 KATAKANA LETTER ME */
#define XK_kana_MO 0x04d3 /* U+30E2 KATAKANA LETTER MO */
#define XK_kana_YA 0x04d4 /* U+30E4 KATAKANA LETTER YA */
#define XK_kana_YU 0x04d5 /* U+30E6 KATAKANA LETTER YU */
#define XK_kana_YO 0x04d6 /* U+30E8 KATAKANA LETTER YO */
#define XK_kana_RA 0x04d7 /* U+30E9 KATAKANA LETTER RA */
#define XK_kana_RI 0x04d8 /* U+30EA KATAKANA LETTER RI */
#define XK_kana_RU 0x04d9 /* U+30EB KATAKANA LETTER RU */
#define XK_kana_RE 0x04da /* U+30EC KATAKANA LETTER RE */
#define XK_kana_RO 0x04db /* U+30ED KATAKANA LETTER RO */
#define XK_kana_WA 0x04dc /* U+30EF KATAKANA LETTER WA */
#define XK_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */
#define XK_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
#define XK_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
#define XK_kana_switch 0xff7e /* Alias for mode_switch */
#endif /* XK_KATAKANA */
/*
* Arabic
* Byte 3 = 5
*/
#ifdef XK_ARABIC
#define XK_Farsi_0 0x10006f0 /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */
#define XK_Farsi_1 0x10006f1 /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */
#define XK_Farsi_2 0x10006f2 /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */
#define XK_Farsi_3 0x10006f3 /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */
#define XK_Farsi_4 0x10006f4 /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */
#define XK_Farsi_5 0x10006f5 /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */
#define XK_Farsi_6 0x10006f6 /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */
#define XK_Farsi_7 0x10006f7 /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */
#define XK_Farsi_8 0x10006f8 /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */
#define XK_Farsi_9 0x10006f9 /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */
#define XK_Arabic_percent 0x100066a /* U+066A ARABIC PERCENT SIGN */
#define XK_Arabic_superscript_alef 0x1000670 /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */
#define XK_Arabic_tteh 0x1000679 /* U+0679 ARABIC LETTER TTEH */
#define XK_Arabic_peh 0x100067e /* U+067E ARABIC LETTER PEH */
#define XK_Arabic_tcheh 0x1000686 /* U+0686 ARABIC LETTER TCHEH */
#define XK_Arabic_ddal 0x1000688 /* U+0688 ARABIC LETTER DDAL */
#define XK_Arabic_rreh 0x1000691 /* U+0691 ARABIC LETTER RREH */
#define XK_Arabic_comma 0x05ac /* U+060C ARABIC COMMA */
#define XK_Arabic_fullstop 0x10006d4 /* U+06D4 ARABIC FULL STOP */
#define XK_Arabic_0 0x1000660 /* U+0660 ARABIC-INDIC DIGIT ZERO */
#define XK_Arabic_1 0x1000661 /* U+0661 ARABIC-INDIC DIGIT ONE */
#define XK_Arabic_2 0x1000662 /* U+0662 ARABIC-INDIC DIGIT TWO */
#define XK_Arabic_3 0x1000663 /* U+0663 ARABIC-INDIC DIGIT THREE */
#define XK_Arabic_4 0x1000664 /* U+0664 ARABIC-INDIC DIGIT FOUR */
#define XK_Arabic_5 0x1000665 /* U+0665 ARABIC-INDIC DIGIT FIVE */
#define XK_Arabic_6 0x1000666 /* U+0666 ARABIC-INDIC DIGIT SIX */
#define XK_Arabic_7 0x1000667 /* U+0667 ARABIC-INDIC DIGIT SEVEN */
#define XK_Arabic_8 0x1000668 /* U+0668 ARABIC-INDIC DIGIT EIGHT */
#define XK_Arabic_9 0x1000669 /* U+0669 ARABIC-INDIC DIGIT NINE */
#define XK_Arabic_semicolon 0x05bb /* U+061B ARABIC SEMICOLON */
#define XK_Arabic_question_mark 0x05bf /* U+061F ARABIC QUESTION MARK */
#define XK_Arabic_hamza 0x05c1 /* U+0621 ARABIC LETTER HAMZA */
#define XK_Arabic_maddaonalef 0x05c2 /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */
#define XK_Arabic_hamzaonalef 0x05c3 /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */
#define XK_Arabic_hamzaonwaw 0x05c4 /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */
#define XK_Arabic_hamzaunderalef 0x05c5 /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */
#define XK_Arabic_hamzaonyeh 0x05c6 /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */
#define XK_Arabic_alef 0x05c7 /* U+0627 ARABIC LETTER ALEF */
#define XK_Arabic_beh 0x05c8 /* U+0628 ARABIC LETTER BEH */
#define XK_Arabic_tehmarbuta 0x05c9 /* U+0629 ARABIC LETTER TEH MARBUTA */
#define XK_Arabic_teh 0x05ca /* U+062A ARABIC LETTER TEH */
#define XK_Arabic_theh 0x05cb /* U+062B ARABIC LETTER THEH */
#define XK_Arabic_jeem 0x05cc /* U+062C ARABIC LETTER JEEM */
#define XK_Arabic_hah 0x05cd /* U+062D ARABIC LETTER HAH */
#define XK_Arabic_khah 0x05ce /* U+062E ARABIC LETTER KHAH */
#define XK_Arabic_dal 0x05cf /* U+062F ARABIC LETTER DAL */
#define XK_Arabic_thal 0x05d0 /* U+0630 ARABIC LETTER THAL */
#define XK_Arabic_ra 0x05d1 /* U+0631 ARABIC LETTER REH */
#define XK_Arabic_zain 0x05d2 /* U+0632 ARABIC LETTER ZAIN */
#define XK_Arabic_seen 0x05d3 /* U+0633 ARABIC LETTER SEEN */
#define XK_Arabic_sheen 0x05d4 /* U+0634 ARABIC LETTER SHEEN */
#define XK_Arabic_sad 0x05d5 /* U+0635 ARABIC LETTER SAD */
#define XK_Arabic_dad 0x05d6 /* U+0636 ARABIC LETTER DAD */
#define XK_Arabic_tah 0x05d7 /* U+0637 ARABIC LETTER TAH */
#define XK_Arabic_zah 0x05d8 /* U+0638 ARABIC LETTER ZAH */
#define XK_Arabic_ain 0x05d9 /* U+0639 ARABIC LETTER AIN */
#define XK_Arabic_ghain 0x05da /* U+063A ARABIC LETTER GHAIN */
#define XK_Arabic_tatweel 0x05e0 /* U+0640 ARABIC TATWEEL */
#define XK_Arabic_feh 0x05e1 /* U+0641 ARABIC LETTER FEH */
#define XK_Arabic_qaf 0x05e2 /* U+0642 ARABIC LETTER QAF */
#define XK_Arabic_kaf 0x05e3 /* U+0643 ARABIC LETTER KAF */
#define XK_Arabic_lam 0x05e4 /* U+0644 ARABIC LETTER LAM */
#define XK_Arabic_meem 0x05e5 /* U+0645 ARABIC LETTER MEEM */
#define XK_Arabic_noon 0x05e6 /* U+0646 ARABIC LETTER NOON */
#define XK_Arabic_ha 0x05e7 /* U+0647 ARABIC LETTER HEH */
#define XK_Arabic_heh 0x05e7 /* deprecated */
#define XK_Arabic_waw 0x05e8 /* U+0648 ARABIC LETTER WAW */
#define XK_Arabic_alefmaksura 0x05e9 /* U+0649 ARABIC LETTER ALEF MAKSURA */
#define XK_Arabic_yeh 0x05ea /* U+064A ARABIC LETTER YEH */
#define XK_Arabic_fathatan 0x05eb /* U+064B ARABIC FATHATAN */
#define XK_Arabic_dammatan 0x05ec /* U+064C ARABIC DAMMATAN */
#define XK_Arabic_kasratan 0x05ed /* U+064D ARABIC KASRATAN */
#define XK_Arabic_fatha 0x05ee /* U+064E ARABIC FATHA */
#define XK_Arabic_damma 0x05ef /* U+064F ARABIC DAMMA */
#define XK_Arabic_kasra 0x05f0 /* U+0650 ARABIC KASRA */
#define XK_Arabic_shadda 0x05f1 /* U+0651 ARABIC SHADDA */
#define XK_Arabic_sukun 0x05f2 /* U+0652 ARABIC SUKUN */
#define XK_Arabic_madda_above 0x1000653 /* U+0653 ARABIC MADDAH ABOVE */
#define XK_Arabic_hamza_above 0x1000654 /* U+0654 ARABIC HAMZA ABOVE */
#define XK_Arabic_hamza_below 0x1000655 /* U+0655 ARABIC HAMZA BELOW */
#define XK_Arabic_jeh 0x1000698 /* U+0698 ARABIC LETTER JEH */
#define XK_Arabic_veh 0x10006a4 /* U+06A4 ARABIC LETTER VEH */
#define XK_Arabic_keheh 0x10006a9 /* U+06A9 ARABIC LETTER KEHEH */
#define XK_Arabic_gaf 0x10006af /* U+06AF ARABIC LETTER GAF */
#define XK_Arabic_noon_ghunna 0x10006ba /* U+06BA ARABIC LETTER NOON GHUNNA */
#define XK_Arabic_heh_doachashmee 0x10006be /* U+06BE ARABIC LETTER HEH DOACHASHMEE */
#define XK_Farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
#define XK_Arabic_farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
#define XK_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */
#define XK_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */
#define XK_Arabic_switch 0xff7e /* Alias for mode_switch */
#endif /* XK_ARABIC */
/*
* Cyrillic
* Byte 3 = 6
*/
#ifdef XK_CYRILLIC
#define XK_Cyrillic_GHE_bar 0x1000492 /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */
#define XK_Cyrillic_ghe_bar 0x1000493 /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */
#define XK_Cyrillic_ZHE_descender 0x1000496 /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
#define XK_Cyrillic_zhe_descender 0x1000497 /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
#define XK_Cyrillic_KA_descender 0x100049a /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
#define XK_Cyrillic_ka_descender 0x100049b /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */
#define XK_Cyrillic_KA_vertstroke 0x100049c /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
#define XK_Cyrillic_ka_vertstroke 0x100049d /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
#define XK_Cyrillic_EN_descender 0x10004a2 /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
#define XK_Cyrillic_en_descender 0x10004a3 /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */
#define XK_Cyrillic_U_straight 0x10004ae /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */
#define XK_Cyrillic_u_straight 0x10004af /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */
#define XK_Cyrillic_U_straight_bar 0x10004b0 /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
#define XK_Cyrillic_u_straight_bar 0x10004b1 /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
#define XK_Cyrillic_HA_descender 0x10004b2 /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
#define XK_Cyrillic_ha_descender 0x10004b3 /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */
#define XK_Cyrillic_CHE_descender 0x10004b6 /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
#define XK_Cyrillic_che_descender 0x10004b7 /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */
#define XK_Cyrillic_CHE_vertstroke 0x10004b8 /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
#define XK_Cyrillic_che_vertstroke 0x10004b9 /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
#define XK_Cyrillic_SHHA 0x10004ba /* U+04BA CYRILLIC CAPITAL LETTER SHHA */
#define XK_Cyrillic_shha 0x10004bb /* U+04BB CYRILLIC SMALL LETTER SHHA */
#define XK_Cyrillic_SCHWA 0x10004d8 /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */
#define XK_Cyrillic_schwa 0x10004d9 /* U+04D9 CYRILLIC SMALL LETTER SCHWA */
#define XK_Cyrillic_I_macron 0x10004e2 /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */
#define XK_Cyrillic_i_macron 0x10004e3 /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */
#define XK_Cyrillic_O_bar 0x10004e8 /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */
#define XK_Cyrillic_o_bar 0x10004e9 /* U+04E9 CYRILLIC SMALL LETTER BARRED O */
#define XK_Cyrillic_U_macron 0x10004ee /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */
#define XK_Cyrillic_u_macron 0x10004ef /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */
#define XK_Serbian_dje 0x06a1 /* U+0452 CYRILLIC SMALL LETTER DJE */
#define XK_Macedonia_gje 0x06a2 /* U+0453 CYRILLIC SMALL LETTER GJE */
#define XK_Cyrillic_io 0x06a3 /* U+0451 CYRILLIC SMALL LETTER IO */
#define XK_Ukrainian_ie 0x06a4 /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */
#define XK_Ukranian_je 0x06a4 /* deprecated */
#define XK_Macedonia_dse 0x06a5 /* U+0455 CYRILLIC SMALL LETTER DZE */
#define XK_Ukrainian_i 0x06a6 /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
#define XK_Ukranian_i 0x06a6 /* deprecated */
#define XK_Ukrainian_yi 0x06a7 /* U+0457 CYRILLIC SMALL LETTER YI */
#define XK_Ukranian_yi 0x06a7 /* deprecated */
#define XK_Cyrillic_je 0x06a8 /* U+0458 CYRILLIC SMALL LETTER JE */
#define XK_Serbian_je 0x06a8 /* deprecated */
#define XK_Cyrillic_lje 0x06a9 /* U+0459 CYRILLIC SMALL LETTER LJE */
#define XK_Serbian_lje 0x06a9 /* deprecated */
#define XK_Cyrillic_nje 0x06aa /* U+045A CYRILLIC SMALL LETTER NJE */
#define XK_Serbian_nje 0x06aa /* deprecated */
#define XK_Serbian_tshe 0x06ab /* U+045B CYRILLIC SMALL LETTER TSHE */
#define XK_Macedonia_kje 0x06ac /* U+045C CYRILLIC SMALL LETTER KJE */
#define XK_Ukrainian_ghe_with_upturn 0x06ad /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */
#define XK_Byelorussian_shortu 0x06ae /* U+045E CYRILLIC SMALL LETTER SHORT U */
#define XK_Cyrillic_dzhe 0x06af /* U+045F CYRILLIC SMALL LETTER DZHE */
#define XK_Serbian_dze 0x06af /* deprecated */
#define XK_numerosign 0x06b0 /* U+2116 NUMERO SIGN */
#define XK_Serbian_DJE 0x06b1 /* U+0402 CYRILLIC CAPITAL LETTER DJE */
#define XK_Macedonia_GJE 0x06b2 /* U+0403 CYRILLIC CAPITAL LETTER GJE */
#define XK_Cyrillic_IO 0x06b3 /* U+0401 CYRILLIC CAPITAL LETTER IO */
#define XK_Ukrainian_IE 0x06b4 /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
#define XK_Ukranian_JE 0x06b4 /* deprecated */
#define XK_Macedonia_DSE 0x06b5 /* U+0405 CYRILLIC CAPITAL LETTER DZE */
#define XK_Ukrainian_I 0x06b6 /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
#define XK_Ukranian_I 0x06b6 /* deprecated */
#define XK_Ukrainian_YI 0x06b7 /* U+0407 CYRILLIC CAPITAL LETTER YI */
#define XK_Ukranian_YI 0x06b7 /* deprecated */
#define XK_Cyrillic_JE 0x06b8 /* U+0408 CYRILLIC CAPITAL LETTER JE */
#define XK_Serbian_JE 0x06b8 /* deprecated */
#define XK_Cyrillic_LJE 0x06b9 /* U+0409 CYRILLIC CAPITAL LETTER LJE */
#define XK_Serbian_LJE 0x06b9 /* deprecated */
#define XK_Cyrillic_NJE 0x06ba /* U+040A CYRILLIC CAPITAL LETTER NJE */
#define XK_Serbian_NJE 0x06ba /* deprecated */
#define XK_Serbian_TSHE 0x06bb /* U+040B CYRILLIC CAPITAL LETTER TSHE */
#define XK_Macedonia_KJE 0x06bc /* U+040C CYRILLIC CAPITAL LETTER KJE */
#define XK_Ukrainian_GHE_WITH_UPTURN 0x06bd /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
#define XK_Byelorussian_SHORTU 0x06be /* U+040E CYRILLIC CAPITAL LETTER SHORT U */
#define XK_Cyrillic_DZHE 0x06bf /* U+040F CYRILLIC CAPITAL LETTER DZHE */
#define XK_Serbian_DZE 0x06bf /* deprecated */
#define XK_Cyrillic_yu 0x06c0 /* U+044E CYRILLIC SMALL LETTER YU */
#define XK_Cyrillic_a 0x06c1 /* U+0430 CYRILLIC SMALL LETTER A */
#define XK_Cyrillic_be 0x06c2 /* U+0431 CYRILLIC SMALL LETTER BE */
#define XK_Cyrillic_tse 0x06c3 /* U+0446 CYRILLIC SMALL LETTER TSE */
#define XK_Cyrillic_de 0x06c4 /* U+0434 CYRILLIC SMALL LETTER DE */
#define XK_Cyrillic_ie 0x06c5 /* U+0435 CYRILLIC SMALL LETTER IE */
#define XK_Cyrillic_ef 0x06c6 /* U+0444 CYRILLIC SMALL LETTER EF */
#define XK_Cyrillic_ghe 0x06c7 /* U+0433 CYRILLIC SMALL LETTER GHE */
#define XK_Cyrillic_ha 0x06c8 /* U+0445 CYRILLIC SMALL LETTER HA */
#define XK_Cyrillic_i 0x06c9 /* U+0438 CYRILLIC SMALL LETTER I */
#define XK_Cyrillic_shorti 0x06ca /* U+0439 CYRILLIC SMALL LETTER SHORT I */
#define XK_Cyrillic_ka 0x06cb /* U+043A CYRILLIC SMALL LETTER KA */
#define XK_Cyrillic_el 0x06cc /* U+043B CYRILLIC SMALL LETTER EL */
#define XK_Cyrillic_em 0x06cd /* U+043C CYRILLIC SMALL LETTER EM */
#define XK_Cyrillic_en 0x06ce /* U+043D CYRILLIC SMALL LETTER EN */
#define XK_Cyrillic_o 0x06cf /* U+043E CYRILLIC SMALL LETTER O */
#define XK_Cyrillic_pe 0x06d0 /* U+043F CYRILLIC SMALL LETTER PE */
#define XK_Cyrillic_ya 0x06d1 /* U+044F CYRILLIC SMALL LETTER YA */
#define XK_Cyrillic_er 0x06d2 /* U+0440 CYRILLIC SMALL LETTER ER */
#define XK_Cyrillic_es 0x06d3 /* U+0441 CYRILLIC SMALL LETTER ES */
#define XK_Cyrillic_te 0x06d4 /* U+0442 CYRILLIC SMALL LETTER TE */
#define XK_Cyrillic_u 0x06d5 /* U+0443 CYRILLIC SMALL LETTER U */
#define XK_Cyrillic_zhe 0x06d6 /* U+0436 CYRILLIC SMALL LETTER ZHE */
#define XK_Cyrillic_ve 0x06d7 /* U+0432 CYRILLIC SMALL LETTER VE */
#define XK_Cyrillic_softsign 0x06d8 /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */
#define XK_Cyrillic_yeru 0x06d9 /* U+044B CYRILLIC SMALL LETTER YERU */
#define XK_Cyrillic_ze 0x06da /* U+0437 CYRILLIC SMALL LETTER ZE */
#define XK_Cyrillic_sha 0x06db /* U+0448 CYRILLIC SMALL LETTER SHA */
#define XK_Cyrillic_e 0x06dc /* U+044D CYRILLIC SMALL LETTER E */
#define XK_Cyrillic_shcha 0x06dd /* U+0449 CYRILLIC SMALL LETTER SHCHA */
#define XK_Cyrillic_che 0x06de /* U+0447 CYRILLIC SMALL LETTER CHE */
#define XK_Cyrillic_hardsign 0x06df /* U+044A CYRILLIC SMALL LETTER HARD SIGN */
#define XK_Cyrillic_YU 0x06e0 /* U+042E CYRILLIC CAPITAL LETTER YU */
#define XK_Cyrillic_A 0x06e1 /* U+0410 CYRILLIC CAPITAL LETTER A */
#define XK_Cyrillic_BE 0x06e2 /* U+0411 CYRILLIC CAPITAL LETTER BE */
#define XK_Cyrillic_TSE 0x06e3 /* U+0426 CYRILLIC CAPITAL LETTER TSE */
#define XK_Cyrillic_DE 0x06e4 /* U+0414 CYRILLIC CAPITAL LETTER DE */
#define XK_Cyrillic_IE 0x06e5 /* U+0415 CYRILLIC CAPITAL LETTER IE */
#define XK_Cyrillic_EF 0x06e6 /* U+0424 CYRILLIC CAPITAL LETTER EF */
#define XK_Cyrillic_GHE 0x06e7 /* U+0413 CYRILLIC CAPITAL LETTER GHE */
#define XK_Cyrillic_HA 0x06e8 /* U+0425 CYRILLIC CAPITAL LETTER HA */
#define XK_Cyrillic_I 0x06e9 /* U+0418 CYRILLIC CAPITAL LETTER I */
#define XK_Cyrillic_SHORTI 0x06ea /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */
#define XK_Cyrillic_KA 0x06eb /* U+041A CYRILLIC CAPITAL LETTER KA */
#define XK_Cyrillic_EL 0x06ec /* U+041B CYRILLIC CAPITAL LETTER EL */
#define XK_Cyrillic_EM 0x06ed /* U+041C CYRILLIC CAPITAL LETTER EM */
#define XK_Cyrillic_EN 0x06ee /* U+041D CYRILLIC CAPITAL LETTER EN */
#define XK_Cyrillic_O 0x06ef /* U+041E CYRILLIC CAPITAL LETTER O */
#define XK_Cyrillic_PE 0x06f0 /* U+041F CYRILLIC CAPITAL LETTER PE */
#define XK_Cyrillic_YA 0x06f1 /* U+042F CYRILLIC CAPITAL LETTER YA */
#define XK_Cyrillic_ER 0x06f2 /* U+0420 CYRILLIC CAPITAL LETTER ER */
#define XK_Cyrillic_ES 0x06f3 /* U+0421 CYRILLIC CAPITAL LETTER ES */
#define XK_Cyrillic_TE 0x06f4 /* U+0422 CYRILLIC CAPITAL LETTER TE */
#define XK_Cyrillic_U 0x06f5 /* U+0423 CYRILLIC CAPITAL LETTER U */
#define XK_Cyrillic_ZHE 0x06f6 /* U+0416 CYRILLIC CAPITAL LETTER ZHE */
#define XK_Cyrillic_VE 0x06f7 /* U+0412 CYRILLIC CAPITAL LETTER VE */
#define XK_Cyrillic_SOFTSIGN 0x06f8 /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */
#define XK_Cyrillic_YERU 0x06f9 /* U+042B CYRILLIC CAPITAL LETTER YERU */
#define XK_Cyrillic_ZE 0x06fa /* U+0417 CYRILLIC CAPITAL LETTER ZE */
#define XK_Cyrillic_SHA 0x06fb /* U+0428 CYRILLIC CAPITAL LETTER SHA */
#define XK_Cyrillic_E 0x06fc /* U+042D CYRILLIC CAPITAL LETTER E */
#define XK_Cyrillic_SHCHA 0x06fd /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
#define XK_Cyrillic_CHE 0x06fe /* U+0427 CYRILLIC CAPITAL LETTER CHE */
#define XK_Cyrillic_HARDSIGN 0x06ff /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */
#endif /* XK_CYRILLIC */
/*
* Greek
* (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
* Byte 3 = 7
*/
#ifdef XK_GREEK
#define XK_Greek_ALPHAaccent 0x07a1 /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */
#define XK_Greek_EPSILONaccent 0x07a2 /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */
#define XK_Greek_ETAaccent 0x07a3 /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */
#define XK_Greek_IOTAaccent 0x07a4 /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */
#define XK_Greek_IOTAdieresis 0x07a5 /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
#define XK_Greek_IOTAdiaeresis 0x07a5 /* old typo */
#define XK_Greek_OMICRONaccent 0x07a7 /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */
#define XK_Greek_UPSILONaccent 0x07a8 /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */
#define XK_Greek_UPSILONdieresis 0x07a9 /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
#define XK_Greek_OMEGAaccent 0x07ab /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */
#define XK_Greek_accentdieresis 0x07ae /* U+0385 GREEK DIALYTIKA TONOS */
#define XK_Greek_horizbar 0x07af /* U+2015 HORIZONTAL BAR */
#define XK_Greek_alphaaccent 0x07b1 /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */
#define XK_Greek_epsilonaccent 0x07b2 /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */
#define XK_Greek_etaaccent 0x07b3 /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */
#define XK_Greek_iotaaccent 0x07b4 /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */
#define XK_Greek_iotadieresis 0x07b5 /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */
#define XK_Greek_iotaaccentdieresis 0x07b6 /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
#define XK_Greek_omicronaccent 0x07b7 /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */
#define XK_Greek_upsilonaccent 0x07b8 /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */
#define XK_Greek_upsilondieresis 0x07b9 /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
#define XK_Greek_upsilonaccentdieresis 0x07ba /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
#define XK_Greek_omegaaccent 0x07bb /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */
#define XK_Greek_ALPHA 0x07c1 /* U+0391 GREEK CAPITAL LETTER ALPHA */
#define XK_Greek_BETA 0x07c2 /* U+0392 GREEK CAPITAL LETTER BETA */
#define XK_Greek_GAMMA 0x07c3 /* U+0393 GREEK CAPITAL LETTER GAMMA */
#define XK_Greek_DELTA 0x07c4 /* U+0394 GREEK CAPITAL LETTER DELTA */
#define XK_Greek_EPSILON 0x07c5 /* U+0395 GREEK CAPITAL LETTER EPSILON */
#define XK_Greek_ZETA 0x07c6 /* U+0396 GREEK CAPITAL LETTER ZETA */
#define XK_Greek_ETA 0x07c7 /* U+0397 GREEK CAPITAL LETTER ETA */
#define XK_Greek_THETA 0x07c8 /* U+0398 GREEK CAPITAL LETTER THETA */
#define XK_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */
#define XK_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */
#define XK_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
#define XK_Greek_LAMBDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
#define XK_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */
#define XK_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */
#define XK_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */
#define XK_Greek_OMICRON 0x07cf /* U+039F GREEK CAPITAL LETTER OMICRON */
#define XK_Greek_PI 0x07d0 /* U+03A0 GREEK CAPITAL LETTER PI */
#define XK_Greek_RHO 0x07d1 /* U+03A1 GREEK CAPITAL LETTER RHO */
#define XK_Greek_SIGMA 0x07d2 /* U+03A3 GREEK CAPITAL LETTER SIGMA */
#define XK_Greek_TAU 0x07d4 /* U+03A4 GREEK CAPITAL LETTER TAU */
#define XK_Greek_UPSILON 0x07d5 /* U+03A5 GREEK CAPITAL LETTER UPSILON */
#define XK_Greek_PHI 0x07d6 /* U+03A6 GREEK CAPITAL LETTER PHI */
#define XK_Greek_CHI 0x07d7 /* U+03A7 GREEK CAPITAL LETTER CHI */
#define XK_Greek_PSI 0x07d8 /* U+03A8 GREEK CAPITAL LETTER PSI */
#define XK_Greek_OMEGA 0x07d9 /* U+03A9 GREEK CAPITAL LETTER OMEGA */
#define XK_Greek_alpha 0x07e1 /* U+03B1 GREEK SMALL LETTER ALPHA */
#define XK_Greek_beta 0x07e2 /* U+03B2 GREEK SMALL LETTER BETA */
#define XK_Greek_gamma 0x07e3 /* U+03B3 GREEK SMALL LETTER GAMMA */
#define XK_Greek_delta 0x07e4 /* U+03B4 GREEK SMALL LETTER DELTA */
#define XK_Greek_epsilon 0x07e5 /* U+03B5 GREEK SMALL LETTER EPSILON */
#define XK_Greek_zeta 0x07e6 /* U+03B6 GREEK SMALL LETTER ZETA */
#define XK_Greek_eta 0x07e7 /* U+03B7 GREEK SMALL LETTER ETA */
#define XK_Greek_theta 0x07e8 /* U+03B8 GREEK SMALL LETTER THETA */
#define XK_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */
#define XK_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */
#define XK_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
#define XK_Greek_lambda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
#define XK_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */
#define XK_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */
#define XK_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */
#define XK_Greek_omicron 0x07ef /* U+03BF GREEK SMALL LETTER OMICRON */
#define XK_Greek_pi 0x07f0 /* U+03C0 GREEK SMALL LETTER PI */
#define XK_Greek_rho 0x07f1 /* U+03C1 GREEK SMALL LETTER RHO */
#define XK_Greek_sigma 0x07f2 /* U+03C3 GREEK SMALL LETTER SIGMA */
#define XK_Greek_finalsmallsigma 0x07f3 /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */
#define XK_Greek_tau 0x07f4 /* U+03C4 GREEK SMALL LETTER TAU */
#define XK_Greek_upsilon 0x07f5 /* U+03C5 GREEK SMALL LETTER UPSILON */
#define XK_Greek_phi 0x07f6 /* U+03C6 GREEK SMALL LETTER PHI */
#define XK_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */
#define XK_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */
#define XK_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */
#define XK_Greek_switch 0xff7e /* Alias for mode_switch */
#endif /* XK_GREEK */
/*
* Technical
* (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
* Byte 3 = 8
*/
#ifdef XK_TECHNICAL
#define XK_leftradical 0x08a1 /* U+23B7 RADICAL SYMBOL BOTTOM */
#define XK_topleftradical 0x08a2 /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/
#define XK_horizconnector 0x08a3 /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/
#define XK_topintegral 0x08a4 /* U+2320 TOP HALF INTEGRAL */
#define XK_botintegral 0x08a5 /* U+2321 BOTTOM HALF INTEGRAL */
#define XK_vertconnector 0x08a6 /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/
#define XK_topleftsqbracket 0x08a7 /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */
#define XK_botleftsqbracket 0x08a8 /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */
#define XK_toprightsqbracket 0x08a9 /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */
#define XK_botrightsqbracket 0x08aa /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */
#define XK_topleftparens 0x08ab /* U+239B LEFT PARENTHESIS UPPER HOOK */
#define XK_botleftparens 0x08ac /* U+239D LEFT PARENTHESIS LOWER HOOK */
#define XK_toprightparens 0x08ad /* U+239E RIGHT PARENTHESIS UPPER HOOK */
#define XK_botrightparens 0x08ae /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */
#define XK_leftmiddlecurlybrace 0x08af /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */
#define XK_rightmiddlecurlybrace 0x08b0 /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */
#define XK_topleftsummation 0x08b1
#define XK_botleftsummation 0x08b2
#define XK_topvertsummationconnector 0x08b3
#define XK_botvertsummationconnector 0x08b4
#define XK_toprightsummation 0x08b5
#define XK_botrightsummation 0x08b6
#define XK_rightmiddlesummation 0x08b7
#define XK_lessthanequal 0x08bc /* U+2264 LESS-THAN OR EQUAL TO */
#define XK_notequal 0x08bd /* U+2260 NOT EQUAL TO */
#define XK_greaterthanequal 0x08be /* U+2265 GREATER-THAN OR EQUAL TO */
#define XK_integral 0x08bf /* U+222B INTEGRAL */
#define XK_therefore 0x08c0 /* U+2234 THEREFORE */
#define XK_variation 0x08c1 /* U+221D PROPORTIONAL TO */
#define XK_infinity 0x08c2 /* U+221E INFINITY */
#define XK_nabla 0x08c5 /* U+2207 NABLA */
#define XK_approximate 0x08c8 /* U+223C TILDE OPERATOR */
#define XK_similarequal 0x08c9 /* U+2243 ASYMPTOTICALLY EQUAL TO */
#define XK_ifonlyif 0x08cd /* U+21D4 LEFT RIGHT DOUBLE ARROW */
#define XK_implies 0x08ce /* U+21D2 RIGHTWARDS DOUBLE ARROW */
#define XK_identical 0x08cf /* U+2261 IDENTICAL TO */
#define XK_radical 0x08d6 /* U+221A SQUARE ROOT */
#define XK_includedin 0x08da /* U+2282 SUBSET OF */
#define XK_includes 0x08db /* U+2283 SUPERSET OF */
#define XK_intersection 0x08dc /* U+2229 INTERSECTION */
#define XK_union 0x08dd /* U+222A UNION */
#define XK_logicaland 0x08de /* U+2227 LOGICAL AND */
#define XK_logicalor 0x08df /* U+2228 LOGICAL OR */
#define XK_partialderivative 0x08ef /* U+2202 PARTIAL DIFFERENTIAL */
#define XK_function 0x08f6 /* U+0192 LATIN SMALL LETTER F WITH HOOK */
#define XK_leftarrow 0x08fb /* U+2190 LEFTWARDS ARROW */
#define XK_uparrow 0x08fc /* U+2191 UPWARDS ARROW */
#define XK_rightarrow 0x08fd /* U+2192 RIGHTWARDS ARROW */
#define XK_downarrow 0x08fe /* U+2193 DOWNWARDS ARROW */
#endif /* XK_TECHNICAL */
/*
* Special
* (from the DEC VT100 Special Graphics Character Set)
* Byte 3 = 9
*/
#ifdef XK_SPECIAL
#define XK_blank 0x09df
#define XK_soliddiamond 0x09e0 /* U+25C6 BLACK DIAMOND */
#define XK_checkerboard 0x09e1 /* U+2592 MEDIUM SHADE */
#define XK_ht 0x09e2 /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */
#define XK_ff 0x09e3 /* U+240C SYMBOL FOR FORM FEED */
#define XK_cr 0x09e4 /* U+240D SYMBOL FOR CARRIAGE RETURN */
#define XK_lf 0x09e5 /* U+240A SYMBOL FOR LINE FEED */
#define XK_nl 0x09e8 /* U+2424 SYMBOL FOR NEWLINE */
#define XK_vt 0x09e9 /* U+240B SYMBOL FOR VERTICAL TABULATION */
#define XK_lowrightcorner 0x09ea /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */
#define XK_uprightcorner 0x09eb /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */
#define XK_upleftcorner 0x09ec /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */
#define XK_lowleftcorner 0x09ed /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */
#define XK_crossinglines 0x09ee /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
#define XK_horizlinescan1 0x09ef /* U+23BA HORIZONTAL SCAN LINE-1 */
#define XK_horizlinescan3 0x09f0 /* U+23BB HORIZONTAL SCAN LINE-3 */
#define XK_horizlinescan5 0x09f1 /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */
#define XK_horizlinescan7 0x09f2 /* U+23BC HORIZONTAL SCAN LINE-7 */
#define XK_horizlinescan9 0x09f3 /* U+23BD HORIZONTAL SCAN LINE-9 */
#define XK_leftt 0x09f4 /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
#define XK_rightt 0x09f5 /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */
#define XK_bott 0x09f6 /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */
#define XK_topt 0x09f7 /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
#define XK_vertbar 0x09f8 /* U+2502 BOX DRAWINGS LIGHT VERTICAL */
#endif /* XK_SPECIAL */
/*
* Publishing
* (these are probably from a long forgotten DEC Publishing
* font that once shipped with DECwrite)
* Byte 3 = 0x0a
*/
#ifdef XK_PUBLISHING
#define XK_emspace 0x0aa1 /* U+2003 EM SPACE */
#define XK_enspace 0x0aa2 /* U+2002 EN SPACE */
#define XK_em3space 0x0aa3 /* U+2004 THREE-PER-EM SPACE */
#define XK_em4space 0x0aa4 /* U+2005 FOUR-PER-EM SPACE */
#define XK_digitspace 0x0aa5 /* U+2007 FIGURE SPACE */
#define XK_punctspace 0x0aa6 /* U+2008 PUNCTUATION SPACE */
#define XK_thinspace 0x0aa7 /* U+2009 THIN SPACE */
#define XK_hairspace 0x0aa8 /* U+200A HAIR SPACE */
#define XK_emdash 0x0aa9 /* U+2014 EM DASH */
#define XK_endash 0x0aaa /* U+2013 EN DASH */
#define XK_signifblank 0x0aac /*(U+2423 OPEN BOX)*/
#define XK_ellipsis 0x0aae /* U+2026 HORIZONTAL ELLIPSIS */
#define XK_doubbaselinedot 0x0aaf /* U+2025 TWO DOT LEADER */
#define XK_onethird 0x0ab0 /* U+2153 VULGAR FRACTION ONE THIRD */
#define XK_twothirds 0x0ab1 /* U+2154 VULGAR FRACTION TWO THIRDS */
#define XK_onefifth 0x0ab2 /* U+2155 VULGAR FRACTION ONE FIFTH */
#define XK_twofifths 0x0ab3 /* U+2156 VULGAR FRACTION TWO FIFTHS */
#define XK_threefifths 0x0ab4 /* U+2157 VULGAR FRACTION THREE FIFTHS */
#define XK_fourfifths 0x0ab5 /* U+2158 VULGAR FRACTION FOUR FIFTHS */
#define XK_onesixth 0x0ab6 /* U+2159 VULGAR FRACTION ONE SIXTH */
#define XK_fivesixths 0x0ab7 /* U+215A VULGAR FRACTION FIVE SIXTHS */
#define XK_careof 0x0ab8 /* U+2105 CARE OF */
#define XK_figdash 0x0abb /* U+2012 FIGURE DASH */
#define XK_leftanglebracket 0x0abc /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/
#define XK_decimalpoint 0x0abd /*(U+002E FULL STOP)*/
#define XK_rightanglebracket 0x0abe /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/
#define XK_marker 0x0abf
#define XK_oneeighth 0x0ac3 /* U+215B VULGAR FRACTION ONE EIGHTH */
#define XK_threeeighths 0x0ac4 /* U+215C VULGAR FRACTION THREE EIGHTHS */
#define XK_fiveeighths 0x0ac5 /* U+215D VULGAR FRACTION FIVE EIGHTHS */
#define XK_seveneighths 0x0ac6 /* U+215E VULGAR FRACTION SEVEN EIGHTHS */
#define XK_trademark 0x0ac9 /* U+2122 TRADE MARK SIGN */
#define XK_signaturemark 0x0aca /*(U+2613 SALTIRE)*/
#define XK_trademarkincircle 0x0acb
#define XK_leftopentriangle 0x0acc /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/
#define XK_rightopentriangle 0x0acd /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/
#define XK_emopencircle 0x0ace /*(U+25CB WHITE CIRCLE)*/
#define XK_emopenrectangle 0x0acf /*(U+25AF WHITE VERTICAL RECTANGLE)*/
#define XK_leftsinglequotemark 0x0ad0 /* U+2018 LEFT SINGLE QUOTATION MARK */
#define XK_rightsinglequotemark 0x0ad1 /* U+2019 RIGHT SINGLE QUOTATION MARK */
#define XK_leftdoublequotemark 0x0ad2 /* U+201C LEFT DOUBLE QUOTATION MARK */
#define XK_rightdoublequotemark 0x0ad3 /* U+201D RIGHT DOUBLE QUOTATION MARK */
#define XK_prescription 0x0ad4 /* U+211E PRESCRIPTION TAKE */
#define XK_minutes 0x0ad6 /* U+2032 PRIME */
#define XK_seconds 0x0ad7 /* U+2033 DOUBLE PRIME */
#define XK_latincross 0x0ad9 /* U+271D LATIN CROSS */
#define XK_hexagram 0x0ada
#define XK_filledrectbullet 0x0adb /*(U+25AC BLACK RECTANGLE)*/
#define XK_filledlefttribullet 0x0adc /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/
#define XK_filledrighttribullet 0x0add /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/
#define XK_emfilledcircle 0x0ade /*(U+25CF BLACK CIRCLE)*/
#define XK_emfilledrect 0x0adf /*(U+25AE BLACK VERTICAL RECTANGLE)*/
#define XK_enopencircbullet 0x0ae0 /*(U+25E6 WHITE BULLET)*/
#define XK_enopensquarebullet 0x0ae1 /*(U+25AB WHITE SMALL SQUARE)*/
#define XK_openrectbullet 0x0ae2 /*(U+25AD WHITE RECTANGLE)*/
#define XK_opentribulletup 0x0ae3 /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/
#define XK_opentribulletdown 0x0ae4 /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/
#define XK_openstar 0x0ae5 /*(U+2606 WHITE STAR)*/
#define XK_enfilledcircbullet 0x0ae6 /*(U+2022 BULLET)*/
#define XK_enfilledsqbullet 0x0ae7 /*(U+25AA BLACK SMALL SQUARE)*/
#define XK_filledtribulletup 0x0ae8 /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/
#define XK_filledtribulletdown 0x0ae9 /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/
#define XK_leftpointer 0x0aea /*(U+261C WHITE LEFT POINTING INDEX)*/
#define XK_rightpointer 0x0aeb /*(U+261E WHITE RIGHT POINTING INDEX)*/
#define XK_club 0x0aec /* U+2663 BLACK CLUB SUIT */
#define XK_diamond 0x0aed /* U+2666 BLACK DIAMOND SUIT */
#define XK_heart 0x0aee /* U+2665 BLACK HEART SUIT */
#define XK_maltesecross 0x0af0 /* U+2720 MALTESE CROSS */
#define XK_dagger 0x0af1 /* U+2020 DAGGER */
#define XK_doubledagger 0x0af2 /* U+2021 DOUBLE DAGGER */
#define XK_checkmark 0x0af3 /* U+2713 CHECK MARK */
#define XK_ballotcross 0x0af4 /* U+2717 BALLOT X */
#define XK_musicalsharp 0x0af5 /* U+266F MUSIC SHARP SIGN */
#define XK_musicalflat 0x0af6 /* U+266D MUSIC FLAT SIGN */
#define XK_malesymbol 0x0af7 /* U+2642 MALE SIGN */
#define XK_femalesymbol 0x0af8 /* U+2640 FEMALE SIGN */
#define XK_telephone 0x0af9 /* U+260E BLACK TELEPHONE */
#define XK_telephonerecorder 0x0afa /* U+2315 TELEPHONE RECORDER */
#define XK_phonographcopyright 0x0afb /* U+2117 SOUND RECORDING COPYRIGHT */
#define XK_caret 0x0afc /* U+2038 CARET */
#define XK_singlelowquotemark 0x0afd /* U+201A SINGLE LOW-9 QUOTATION MARK */
#define XK_doublelowquotemark 0x0afe /* U+201E DOUBLE LOW-9 QUOTATION MARK */
#define XK_cursor 0x0aff
#endif /* XK_PUBLISHING */
/*
* APL
* Byte 3 = 0x0b
*/
#ifdef XK_APL
#define XK_leftcaret 0x0ba3 /*(U+003C LESS-THAN SIGN)*/
#define XK_rightcaret 0x0ba6 /*(U+003E GREATER-THAN SIGN)*/
#define XK_downcaret 0x0ba8 /*(U+2228 LOGICAL OR)*/
#define XK_upcaret 0x0ba9 /*(U+2227 LOGICAL AND)*/
#define XK_overbar 0x0bc0 /*(U+00AF MACRON)*/
#define XK_downtack 0x0bc2 /* U+22A5 UP TACK */
#define XK_upshoe 0x0bc3 /*(U+2229 INTERSECTION)*/
#define XK_downstile 0x0bc4 /* U+230A LEFT FLOOR */
#define XK_underbar 0x0bc6 /*(U+005F LOW LINE)*/
#define XK_jot 0x0bca /* U+2218 RING OPERATOR */
#define XK_quad 0x0bcc /* U+2395 APL FUNCTIONAL SYMBOL QUAD */
#define XK_uptack 0x0bce /* U+22A4 DOWN TACK */
#define XK_circle 0x0bcf /* U+25CB WHITE CIRCLE */
#define XK_upstile 0x0bd3 /* U+2308 LEFT CEILING */
#define XK_downshoe 0x0bd6 /*(U+222A UNION)*/
#define XK_rightshoe 0x0bd8 /*(U+2283 SUPERSET OF)*/
#define XK_leftshoe 0x0bda /*(U+2282 SUBSET OF)*/
#define XK_lefttack 0x0bdc /* U+22A2 RIGHT TACK */
#define XK_righttack 0x0bfc /* U+22A3 LEFT TACK */
#endif /* XK_APL */
/*
* Hebrew
* Byte 3 = 0x0c
*/
#ifdef XK_HEBREW
#define XK_hebrew_doublelowline 0x0cdf /* U+2017 DOUBLE LOW LINE */
#define XK_hebrew_aleph 0x0ce0 /* U+05D0 HEBREW LETTER ALEF */
#define XK_hebrew_bet 0x0ce1 /* U+05D1 HEBREW LETTER BET */
#define XK_hebrew_beth 0x0ce1 /* deprecated */
#define XK_hebrew_gimel 0x0ce2 /* U+05D2 HEBREW LETTER GIMEL */
#define XK_hebrew_gimmel 0x0ce2 /* deprecated */
#define XK_hebrew_dalet 0x0ce3 /* U+05D3 HEBREW LETTER DALET */
#define XK_hebrew_daleth 0x0ce3 /* deprecated */
#define XK_hebrew_he 0x0ce4 /* U+05D4 HEBREW LETTER HE */
#define XK_hebrew_waw 0x0ce5 /* U+05D5 HEBREW LETTER VAV */
#define XK_hebrew_zain 0x0ce6 /* U+05D6 HEBREW LETTER ZAYIN */
#define XK_hebrew_zayin 0x0ce6 /* deprecated */
#define XK_hebrew_chet 0x0ce7 /* U+05D7 HEBREW LETTER HET */
#define XK_hebrew_het 0x0ce7 /* deprecated */
#define XK_hebrew_tet 0x0ce8 /* U+05D8 HEBREW LETTER TET */
#define XK_hebrew_teth 0x0ce8 /* deprecated */
#define XK_hebrew_yod 0x0ce9 /* U+05D9 HEBREW LETTER YOD */
#define XK_hebrew_finalkaph 0x0cea /* U+05DA HEBREW LETTER FINAL KAF */
#define XK_hebrew_kaph 0x0ceb /* U+05DB HEBREW LETTER KAF */
#define XK_hebrew_lamed 0x0cec /* U+05DC HEBREW LETTER LAMED */
#define XK_hebrew_finalmem 0x0ced /* U+05DD HEBREW LETTER FINAL MEM */
#define XK_hebrew_mem 0x0cee /* U+05DE HEBREW LETTER MEM */
#define XK_hebrew_finalnun 0x0cef /* U+05DF HEBREW LETTER FINAL NUN */
#define XK_hebrew_nun 0x0cf0 /* U+05E0 HEBREW LETTER NUN */
#define XK_hebrew_samech 0x0cf1 /* U+05E1 HEBREW LETTER SAMEKH */
#define XK_hebrew_samekh 0x0cf1 /* deprecated */
#define XK_hebrew_ayin 0x0cf2 /* U+05E2 HEBREW LETTER AYIN */
#define XK_hebrew_finalpe 0x0cf3 /* U+05E3 HEBREW LETTER FINAL PE */
#define XK_hebrew_pe 0x0cf4 /* U+05E4 HEBREW LETTER PE */
#define XK_hebrew_finalzade 0x0cf5 /* U+05E5 HEBREW LETTER FINAL TSADI */
#define XK_hebrew_finalzadi 0x0cf5 /* deprecated */
#define XK_hebrew_zade 0x0cf6 /* U+05E6 HEBREW LETTER TSADI */
#define XK_hebrew_zadi 0x0cf6 /* deprecated */
#define XK_hebrew_qoph 0x0cf7 /* U+05E7 HEBREW LETTER QOF */
#define XK_hebrew_kuf 0x0cf7 /* deprecated */
#define XK_hebrew_resh 0x0cf8 /* U+05E8 HEBREW LETTER RESH */
#define XK_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */
#define XK_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */
#define XK_hebrew_taf 0x0cfa /* deprecated */
#define XK_Hebrew_switch 0xff7e /* Alias for mode_switch */
#endif /* XK_HEBREW */
/*
* Thai
* Byte 3 = 0x0d
*/
#ifdef XK_THAI
#define XK_Thai_kokai 0x0da1 /* U+0E01 THAI CHARACTER KO KAI */
#define XK_Thai_khokhai 0x0da2 /* U+0E02 THAI CHARACTER KHO KHAI */
#define XK_Thai_khokhuat 0x0da3 /* U+0E03 THAI CHARACTER KHO KHUAT */
#define XK_Thai_khokhwai 0x0da4 /* U+0E04 THAI CHARACTER KHO KHWAI */
#define XK_Thai_khokhon 0x0da5 /* U+0E05 THAI CHARACTER KHO KHON */
#define XK_Thai_khorakhang 0x0da6 /* U+0E06 THAI CHARACTER KHO RAKHANG */
#define XK_Thai_ngongu 0x0da7 /* U+0E07 THAI CHARACTER NGO NGU */
#define XK_Thai_chochan 0x0da8 /* U+0E08 THAI CHARACTER CHO CHAN */
#define XK_Thai_choching 0x0da9 /* U+0E09 THAI CHARACTER CHO CHING */
#define XK_Thai_chochang 0x0daa /* U+0E0A THAI CHARACTER CHO CHANG */
#define XK_Thai_soso 0x0dab /* U+0E0B THAI CHARACTER SO SO */
#define XK_Thai_chochoe 0x0dac /* U+0E0C THAI CHARACTER CHO CHOE */
#define XK_Thai_yoying 0x0dad /* U+0E0D THAI CHARACTER YO YING */
#define XK_Thai_dochada 0x0dae /* U+0E0E THAI CHARACTER DO CHADA */
#define XK_Thai_topatak 0x0daf /* U+0E0F THAI CHARACTER TO PATAK */
#define XK_Thai_thothan 0x0db0 /* U+0E10 THAI CHARACTER THO THAN */
#define XK_Thai_thonangmontho 0x0db1 /* U+0E11 THAI CHARACTER THO NANGMONTHO */
#define XK_Thai_thophuthao 0x0db2 /* U+0E12 THAI CHARACTER THO PHUTHAO */
#define XK_Thai_nonen 0x0db3 /* U+0E13 THAI CHARACTER NO NEN */
#define XK_Thai_dodek 0x0db4 /* U+0E14 THAI CHARACTER DO DEK */
#define XK_Thai_totao 0x0db5 /* U+0E15 THAI CHARACTER TO TAO */
#define XK_Thai_thothung 0x0db6 /* U+0E16 THAI CHARACTER THO THUNG */
#define XK_Thai_thothahan 0x0db7 /* U+0E17 THAI CHARACTER THO THAHAN */
#define XK_Thai_thothong 0x0db8 /* U+0E18 THAI CHARACTER THO THONG */
#define XK_Thai_nonu 0x0db9 /* U+0E19 THAI CHARACTER NO NU */
#define XK_Thai_bobaimai 0x0dba /* U+0E1A THAI CHARACTER BO BAIMAI */
#define XK_Thai_popla 0x0dbb /* U+0E1B THAI CHARACTER PO PLA */
#define XK_Thai_phophung 0x0dbc /* U+0E1C THAI CHARACTER PHO PHUNG */
#define XK_Thai_fofa 0x0dbd /* U+0E1D THAI CHARACTER FO FA */
#define XK_Thai_phophan 0x0dbe /* U+0E1E THAI CHARACTER PHO PHAN */
#define XK_Thai_fofan 0x0dbf /* U+0E1F THAI CHARACTER FO FAN */
#define XK_Thai_phosamphao 0x0dc0 /* U+0E20 THAI CHARACTER PHO SAMPHAO */
#define XK_Thai_moma 0x0dc1 /* U+0E21 THAI CHARACTER MO MA */
#define XK_Thai_yoyak 0x0dc2 /* U+0E22 THAI CHARACTER YO YAK */
#define XK_Thai_rorua 0x0dc3 /* U+0E23 THAI CHARACTER RO RUA */
#define XK_Thai_ru 0x0dc4 /* U+0E24 THAI CHARACTER RU */
#define XK_Thai_loling 0x0dc5 /* U+0E25 THAI CHARACTER LO LING */
#define XK_Thai_lu 0x0dc6 /* U+0E26 THAI CHARACTER LU */
#define XK_Thai_wowaen 0x0dc7 /* U+0E27 THAI CHARACTER WO WAEN */
#define XK_Thai_sosala 0x0dc8 /* U+0E28 THAI CHARACTER SO SALA */
#define XK_Thai_sorusi 0x0dc9 /* U+0E29 THAI CHARACTER SO RUSI */
#define XK_Thai_sosua 0x0dca /* U+0E2A THAI CHARACTER SO SUA */
#define XK_Thai_hohip 0x0dcb /* U+0E2B THAI CHARACTER HO HIP */
#define XK_Thai_lochula 0x0dcc /* U+0E2C THAI CHARACTER LO CHULA */
#define XK_Thai_oang 0x0dcd /* U+0E2D THAI CHARACTER O ANG */
#define XK_Thai_honokhuk 0x0dce /* U+0E2E THAI CHARACTER HO NOKHUK */
#define XK_Thai_paiyannoi 0x0dcf /* U+0E2F THAI CHARACTER PAIYANNOI */
#define XK_Thai_saraa 0x0dd0 /* U+0E30 THAI CHARACTER SARA A */
#define XK_Thai_maihanakat 0x0dd1 /* U+0E31 THAI CHARACTER MAI HAN-AKAT */
#define XK_Thai_saraaa 0x0dd2 /* U+0E32 THAI CHARACTER SARA AA */
#define XK_Thai_saraam 0x0dd3 /* U+0E33 THAI CHARACTER SARA AM */
#define XK_Thai_sarai 0x0dd4 /* U+0E34 THAI CHARACTER SARA I */
#define XK_Thai_saraii 0x0dd5 /* U+0E35 THAI CHARACTER SARA II */
#define XK_Thai_saraue 0x0dd6 /* U+0E36 THAI CHARACTER SARA UE */
#define XK_Thai_sarauee 0x0dd7 /* U+0E37 THAI CHARACTER SARA UEE */
#define XK_Thai_sarau 0x0dd8 /* U+0E38 THAI CHARACTER SARA U */
#define XK_Thai_sarauu 0x0dd9 /* U+0E39 THAI CHARACTER SARA UU */
#define XK_Thai_phinthu 0x0dda /* U+0E3A THAI CHARACTER PHINTHU */
#define XK_Thai_maihanakat_maitho 0x0dde
#define XK_Thai_baht 0x0ddf /* U+0E3F THAI CURRENCY SYMBOL BAHT */
#define XK_Thai_sarae 0x0de0 /* U+0E40 THAI CHARACTER SARA E */
#define XK_Thai_saraae 0x0de1 /* U+0E41 THAI CHARACTER SARA AE */
#define XK_Thai_sarao 0x0de2 /* U+0E42 THAI CHARACTER SARA O */
#define XK_Thai_saraaimaimuan 0x0de3 /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */
#define XK_Thai_saraaimaimalai 0x0de4 /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */
#define XK_Thai_lakkhangyao 0x0de5 /* U+0E45 THAI CHARACTER LAKKHANGYAO */
#define XK_Thai_maiyamok 0x0de6 /* U+0E46 THAI CHARACTER MAIYAMOK */
#define XK_Thai_maitaikhu 0x0de7 /* U+0E47 THAI CHARACTER MAITAIKHU */
#define XK_Thai_maiek 0x0de8 /* U+0E48 THAI CHARACTER MAI EK */
#define XK_Thai_maitho 0x0de9 /* U+0E49 THAI CHARACTER MAI THO */
#define XK_Thai_maitri 0x0dea /* U+0E4A THAI CHARACTER MAI TRI */
#define XK_Thai_maichattawa 0x0deb /* U+0E4B THAI CHARACTER MAI CHATTAWA */
#define XK_Thai_thanthakhat 0x0dec /* U+0E4C THAI CHARACTER THANTHAKHAT */
#define XK_Thai_nikhahit 0x0ded /* U+0E4D THAI CHARACTER NIKHAHIT */
#define XK_Thai_leksun 0x0df0 /* U+0E50 THAI DIGIT ZERO */
#define XK_Thai_leknung 0x0df1 /* U+0E51 THAI DIGIT ONE */
#define XK_Thai_leksong 0x0df2 /* U+0E52 THAI DIGIT TWO */
#define XK_Thai_leksam 0x0df3 /* U+0E53 THAI DIGIT THREE */
#define XK_Thai_leksi 0x0df4 /* U+0E54 THAI DIGIT FOUR */
#define XK_Thai_lekha 0x0df5 /* U+0E55 THAI DIGIT FIVE */
#define XK_Thai_lekhok 0x0df6 /* U+0E56 THAI DIGIT SIX */
#define XK_Thai_lekchet 0x0df7 /* U+0E57 THAI DIGIT SEVEN */
#define XK_Thai_lekpaet 0x0df8 /* U+0E58 THAI DIGIT EIGHT */
#define XK_Thai_lekkao 0x0df9 /* U+0E59 THAI DIGIT NINE */
#endif /* XK_THAI */
/*
* Korean
* Byte 3 = 0x0e
*/
#ifdef XK_KOREAN
#define XK_Hangul 0xff31 /* Hangul start/stop(toggle) */
#define XK_Hangul_Start 0xff32 /* Hangul start */
#define XK_Hangul_End 0xff33 /* Hangul end, English start */
#define XK_Hangul_Hanja 0xff34 /* Start Hangul->Hanja Conversion */
#define XK_Hangul_Jamo 0xff35 /* Hangul Jamo mode */
#define XK_Hangul_Romaja 0xff36 /* Hangul Romaja mode */
#define XK_Hangul_Codeinput 0xff37 /* Hangul code input mode */
#define XK_Hangul_Jeonja 0xff38 /* Jeonja mode */
#define XK_Hangul_Banja 0xff39 /* Banja mode */
#define XK_Hangul_PreHanja 0xff3a /* Pre Hanja conversion */
#define XK_Hangul_PostHanja 0xff3b /* Post Hanja conversion */
#define XK_Hangul_SingleCandidate 0xff3c /* Single candidate */
#define XK_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */
#define XK_Hangul_PreviousCandidate 0xff3e /* Previous candidate */
#define XK_Hangul_Special 0xff3f /* Special symbols */
#define XK_Hangul_switch 0xff7e /* Alias for mode_switch */
/* Hangul Consonant Characters */
#define XK_Hangul_Kiyeog 0x0ea1
#define XK_Hangul_SsangKiyeog 0x0ea2
#define XK_Hangul_KiyeogSios 0x0ea3
#define XK_Hangul_Nieun 0x0ea4
#define XK_Hangul_NieunJieuj 0x0ea5
#define XK_Hangul_NieunHieuh 0x0ea6
#define XK_Hangul_Dikeud 0x0ea7
#define XK_Hangul_SsangDikeud 0x0ea8
#define XK_Hangul_Rieul 0x0ea9
#define XK_Hangul_RieulKiyeog 0x0eaa
#define XK_Hangul_RieulMieum 0x0eab
#define XK_Hangul_RieulPieub 0x0eac
#define XK_Hangul_RieulSios 0x0ead
#define XK_Hangul_RieulTieut 0x0eae
#define XK_Hangul_RieulPhieuf 0x0eaf
#define XK_Hangul_RieulHieuh 0x0eb0
#define XK_Hangul_Mieum 0x0eb1
#define XK_Hangul_Pieub 0x0eb2
#define XK_Hangul_SsangPieub 0x0eb3
#define XK_Hangul_PieubSios 0x0eb4
#define XK_Hangul_Sios 0x0eb5
#define XK_Hangul_SsangSios 0x0eb6
#define XK_Hangul_Ieung 0x0eb7
#define XK_Hangul_Jieuj 0x0eb8
#define XK_Hangul_SsangJieuj 0x0eb9
#define XK_Hangul_Cieuc 0x0eba
#define XK_Hangul_Khieuq 0x0ebb
#define XK_Hangul_Tieut 0x0ebc
#define XK_Hangul_Phieuf 0x0ebd
#define XK_Hangul_Hieuh 0x0ebe
/* Hangul Vowel Characters */
#define XK_Hangul_A 0x0ebf
#define XK_Hangul_AE 0x0ec0
#define XK_Hangul_YA 0x0ec1
#define XK_Hangul_YAE 0x0ec2
#define XK_Hangul_EO 0x0ec3
#define XK_Hangul_E 0x0ec4
#define XK_Hangul_YEO 0x0ec5
#define XK_Hangul_YE 0x0ec6
#define XK_Hangul_O 0x0ec7
#define XK_Hangul_WA 0x0ec8
#define XK_Hangul_WAE 0x0ec9
#define XK_Hangul_OE 0x0eca
#define XK_Hangul_YO 0x0ecb
#define XK_Hangul_U 0x0ecc
#define XK_Hangul_WEO 0x0ecd
#define XK_Hangul_WE 0x0ece
#define XK_Hangul_WI 0x0ecf
#define XK_Hangul_YU 0x0ed0
#define XK_Hangul_EU 0x0ed1
#define XK_Hangul_YI 0x0ed2
#define XK_Hangul_I 0x0ed3
/* Hangul syllable-final (JongSeong) Characters */
#define XK_Hangul_J_Kiyeog 0x0ed4
#define XK_Hangul_J_SsangKiyeog 0x0ed5
#define XK_Hangul_J_KiyeogSios 0x0ed6
#define XK_Hangul_J_Nieun 0x0ed7
#define XK_Hangul_J_NieunJieuj 0x0ed8
#define XK_Hangul_J_NieunHieuh 0x0ed9
#define XK_Hangul_J_Dikeud 0x0eda
#define XK_Hangul_J_Rieul 0x0edb
#define XK_Hangul_J_RieulKiyeog 0x0edc
#define XK_Hangul_J_RieulMieum 0x0edd
#define XK_Hangul_J_RieulPieub 0x0ede
#define XK_Hangul_J_RieulSios 0x0edf
#define XK_Hangul_J_RieulTieut 0x0ee0
#define XK_Hangul_J_RieulPhieuf 0x0ee1
#define XK_Hangul_J_RieulHieuh 0x0ee2
#define XK_Hangul_J_Mieum 0x0ee3
#define XK_Hangul_J_Pieub 0x0ee4
#define XK_Hangul_J_PieubSios 0x0ee5
#define XK_Hangul_J_Sios 0x0ee6
#define XK_Hangul_J_SsangSios 0x0ee7
#define XK_Hangul_J_Ieung 0x0ee8
#define XK_Hangul_J_Jieuj 0x0ee9
#define XK_Hangul_J_Cieuc 0x0eea
#define XK_Hangul_J_Khieuq 0x0eeb
#define XK_Hangul_J_Tieut 0x0eec
#define XK_Hangul_J_Phieuf 0x0eed
#define XK_Hangul_J_Hieuh 0x0eee
/* Ancient Hangul Consonant Characters */
#define XK_Hangul_RieulYeorinHieuh 0x0eef
#define XK_Hangul_SunkyeongeumMieum 0x0ef0
#define XK_Hangul_SunkyeongeumPieub 0x0ef1
#define XK_Hangul_PanSios 0x0ef2
#define XK_Hangul_KkogjiDalrinIeung 0x0ef3
#define XK_Hangul_SunkyeongeumPhieuf 0x0ef4
#define XK_Hangul_YeorinHieuh 0x0ef5
/* Ancient Hangul Vowel Characters */
#define XK_Hangul_AraeA 0x0ef6
#define XK_Hangul_AraeAE 0x0ef7
/* Ancient Hangul syllable-final (JongSeong) Characters */
#define XK_Hangul_J_PanSios 0x0ef8
#define XK_Hangul_J_KkogjiDalrinIeung 0x0ef9
#define XK_Hangul_J_YeorinHieuh 0x0efa
/* Korean currency symbol */
#define XK_Korean_Won 0x0eff /*(U+20A9 WON SIGN)*/
#endif /* XK_KOREAN */
/*
* Armenian
*/
#ifdef XK_ARMENIAN
#define XK_Armenian_ligature_ew 0x1000587 /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */
#define XK_Armenian_full_stop 0x1000589 /* U+0589 ARMENIAN FULL STOP */
#define XK_Armenian_verjaket 0x1000589 /* U+0589 ARMENIAN FULL STOP */
#define XK_Armenian_separation_mark 0x100055d /* U+055D ARMENIAN COMMA */
#define XK_Armenian_but 0x100055d /* U+055D ARMENIAN COMMA */
#define XK_Armenian_hyphen 0x100058a /* U+058A ARMENIAN HYPHEN */
#define XK_Armenian_yentamna 0x100058a /* U+058A ARMENIAN HYPHEN */
#define XK_Armenian_exclam 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
#define XK_Armenian_amanak 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
#define XK_Armenian_accent 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
#define XK_Armenian_shesht 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
#define XK_Armenian_question 0x100055e /* U+055E ARMENIAN QUESTION MARK */
#define XK_Armenian_paruyk 0x100055e /* U+055E ARMENIAN QUESTION MARK */
#define XK_Armenian_AYB 0x1000531 /* U+0531 ARMENIAN CAPITAL LETTER AYB */
#define XK_Armenian_ayb 0x1000561 /* U+0561 ARMENIAN SMALL LETTER AYB */
#define XK_Armenian_BEN 0x1000532 /* U+0532 ARMENIAN CAPITAL LETTER BEN */
#define XK_Armenian_ben 0x1000562 /* U+0562 ARMENIAN SMALL LETTER BEN */
#define XK_Armenian_GIM 0x1000533 /* U+0533 ARMENIAN CAPITAL LETTER GIM */
#define XK_Armenian_gim 0x1000563 /* U+0563 ARMENIAN SMALL LETTER GIM */
#define XK_Armenian_DA 0x1000534 /* U+0534 ARMENIAN CAPITAL LETTER DA */
#define XK_Armenian_da 0x1000564 /* U+0564 ARMENIAN SMALL LETTER DA */
#define XK_Armenian_YECH 0x1000535 /* U+0535 ARMENIAN CAPITAL LETTER ECH */
#define XK_Armenian_yech 0x1000565 /* U+0565 ARMENIAN SMALL LETTER ECH */
#define XK_Armenian_ZA 0x1000536 /* U+0536 ARMENIAN CAPITAL LETTER ZA */
#define XK_Armenian_za 0x1000566 /* U+0566 ARMENIAN SMALL LETTER ZA */
#define XK_Armenian_E 0x1000537 /* U+0537 ARMENIAN CAPITAL LETTER EH */
#define XK_Armenian_e 0x1000567 /* U+0567 ARMENIAN SMALL LETTER EH */
#define XK_Armenian_AT 0x1000538 /* U+0538 ARMENIAN CAPITAL LETTER ET */
#define XK_Armenian_at 0x1000568 /* U+0568 ARMENIAN SMALL LETTER ET */
#define XK_Armenian_TO 0x1000539 /* U+0539 ARMENIAN CAPITAL LETTER TO */
#define XK_Armenian_to 0x1000569 /* U+0569 ARMENIAN SMALL LETTER TO */
#define XK_Armenian_ZHE 0x100053a /* U+053A ARMENIAN CAPITAL LETTER ZHE */
#define XK_Armenian_zhe 0x100056a /* U+056A ARMENIAN SMALL LETTER ZHE */
#define XK_Armenian_INI 0x100053b /* U+053B ARMENIAN CAPITAL LETTER INI */
#define XK_Armenian_ini 0x100056b /* U+056B ARMENIAN SMALL LETTER INI */
#define XK_Armenian_LYUN 0x100053c /* U+053C ARMENIAN CAPITAL LETTER LIWN */
#define XK_Armenian_lyun 0x100056c /* U+056C ARMENIAN SMALL LETTER LIWN */
#define XK_Armenian_KHE 0x100053d /* U+053D ARMENIAN CAPITAL LETTER XEH */
#define XK_Armenian_khe 0x100056d /* U+056D ARMENIAN SMALL LETTER XEH */
#define XK_Armenian_TSA 0x100053e /* U+053E ARMENIAN CAPITAL LETTER CA */
#define XK_Armenian_tsa 0x100056e /* U+056E ARMENIAN SMALL LETTER CA */
#define XK_Armenian_KEN 0x100053f /* U+053F ARMENIAN CAPITAL LETTER KEN */
#define XK_Armenian_ken 0x100056f /* U+056F ARMENIAN SMALL LETTER KEN */
#define XK_Armenian_HO 0x1000540 /* U+0540 ARMENIAN CAPITAL LETTER HO */
#define XK_Armenian_ho 0x1000570 /* U+0570 ARMENIAN SMALL LETTER HO */
#define XK_Armenian_DZA 0x1000541 /* U+0541 ARMENIAN CAPITAL LETTER JA */
#define XK_Armenian_dza 0x1000571 /* U+0571 ARMENIAN SMALL LETTER JA */
#define XK_Armenian_GHAT 0x1000542 /* U+0542 ARMENIAN CAPITAL LETTER GHAD */
#define XK_Armenian_ghat 0x1000572 /* U+0572 ARMENIAN SMALL LETTER GHAD */
#define XK_Armenian_TCHE 0x1000543 /* U+0543 ARMENIAN CAPITAL LETTER CHEH */
#define XK_Armenian_tche 0x1000573 /* U+0573 ARMENIAN SMALL LETTER CHEH */
#define XK_Armenian_MEN 0x1000544 /* U+0544 ARMENIAN CAPITAL LETTER MEN */
#define XK_Armenian_men 0x1000574 /* U+0574 ARMENIAN SMALL LETTER MEN */
#define XK_Armenian_HI 0x1000545 /* U+0545 ARMENIAN CAPITAL LETTER YI */
#define XK_Armenian_hi 0x1000575 /* U+0575 ARMENIAN SMALL LETTER YI */
#define XK_Armenian_NU 0x1000546 /* U+0546 ARMENIAN CAPITAL LETTER NOW */
#define XK_Armenian_nu 0x1000576 /* U+0576 ARMENIAN SMALL LETTER NOW */
#define XK_Armenian_SHA 0x1000547 /* U+0547 ARMENIAN CAPITAL LETTER SHA */
#define XK_Armenian_sha 0x1000577 /* U+0577 ARMENIAN SMALL LETTER SHA */
#define XK_Armenian_VO 0x1000548 /* U+0548 ARMENIAN CAPITAL LETTER VO */
#define XK_Armenian_vo 0x1000578 /* U+0578 ARMENIAN SMALL LETTER VO */
#define XK_Armenian_CHA 0x1000549 /* U+0549 ARMENIAN CAPITAL LETTER CHA */
#define XK_Armenian_cha 0x1000579 /* U+0579 ARMENIAN SMALL LETTER CHA */
#define XK_Armenian_PE 0x100054a /* U+054A ARMENIAN CAPITAL LETTER PEH */
#define XK_Armenian_pe 0x100057a /* U+057A ARMENIAN SMALL LETTER PEH */
#define XK_Armenian_JE 0x100054b /* U+054B ARMENIAN CAPITAL LETTER JHEH */
#define XK_Armenian_je 0x100057b /* U+057B ARMENIAN SMALL LETTER JHEH */
#define XK_Armenian_RA 0x100054c /* U+054C ARMENIAN CAPITAL LETTER RA */
#define XK_Armenian_ra 0x100057c /* U+057C ARMENIAN SMALL LETTER RA */
#define XK_Armenian_SE 0x100054d /* U+054D ARMENIAN CAPITAL LETTER SEH */
#define XK_Armenian_se 0x100057d /* U+057D ARMENIAN SMALL LETTER SEH */
#define XK_Armenian_VEV 0x100054e /* U+054E ARMENIAN CAPITAL LETTER VEW */
#define XK_Armenian_vev 0x100057e /* U+057E ARMENIAN SMALL LETTER VEW */
#define XK_Armenian_TYUN 0x100054f /* U+054F ARMENIAN CAPITAL LETTER TIWN */
#define XK_Armenian_tyun 0x100057f /* U+057F ARMENIAN SMALL LETTER TIWN */
#define XK_Armenian_RE 0x1000550 /* U+0550 ARMENIAN CAPITAL LETTER REH */
#define XK_Armenian_re 0x1000580 /* U+0580 ARMENIAN SMALL LETTER REH */
#define XK_Armenian_TSO 0x1000551 /* U+0551 ARMENIAN CAPITAL LETTER CO */
#define XK_Armenian_tso 0x1000581 /* U+0581 ARMENIAN SMALL LETTER CO */
#define XK_Armenian_VYUN 0x1000552 /* U+0552 ARMENIAN CAPITAL LETTER YIWN */
#define XK_Armenian_vyun 0x1000582 /* U+0582 ARMENIAN SMALL LETTER YIWN */
#define XK_Armenian_PYUR 0x1000553 /* U+0553 ARMENIAN CAPITAL LETTER PIWR */
#define XK_Armenian_pyur 0x1000583 /* U+0583 ARMENIAN SMALL LETTER PIWR */
#define XK_Armenian_KE 0x1000554 /* U+0554 ARMENIAN CAPITAL LETTER KEH */
#define XK_Armenian_ke 0x1000584 /* U+0584 ARMENIAN SMALL LETTER KEH */
#define XK_Armenian_O 0x1000555 /* U+0555 ARMENIAN CAPITAL LETTER OH */
#define XK_Armenian_o 0x1000585 /* U+0585 ARMENIAN SMALL LETTER OH */
#define XK_Armenian_FE 0x1000556 /* U+0556 ARMENIAN CAPITAL LETTER FEH */
#define XK_Armenian_fe 0x1000586 /* U+0586 ARMENIAN SMALL LETTER FEH */
#define XK_Armenian_apostrophe 0x100055a /* U+055A ARMENIAN APOSTROPHE */
#endif /* XK_ARMENIAN */
/*
* Georgian
*/
#ifdef XK_GEORGIAN
#define XK_Georgian_an 0x10010d0 /* U+10D0 GEORGIAN LETTER AN */
#define XK_Georgian_ban 0x10010d1 /* U+10D1 GEORGIAN LETTER BAN */
#define XK_Georgian_gan 0x10010d2 /* U+10D2 GEORGIAN LETTER GAN */
#define XK_Georgian_don 0x10010d3 /* U+10D3 GEORGIAN LETTER DON */
#define XK_Georgian_en 0x10010d4 /* U+10D4 GEORGIAN LETTER EN */
#define XK_Georgian_vin 0x10010d5 /* U+10D5 GEORGIAN LETTER VIN */
#define XK_Georgian_zen 0x10010d6 /* U+10D6 GEORGIAN LETTER ZEN */
#define XK_Georgian_tan 0x10010d7 /* U+10D7 GEORGIAN LETTER TAN */
#define XK_Georgian_in 0x10010d8 /* U+10D8 GEORGIAN LETTER IN */
#define XK_Georgian_kan 0x10010d9 /* U+10D9 GEORGIAN LETTER KAN */
#define XK_Georgian_las 0x10010da /* U+10DA GEORGIAN LETTER LAS */
#define XK_Georgian_man 0x10010db /* U+10DB GEORGIAN LETTER MAN */
#define XK_Georgian_nar 0x10010dc /* U+10DC GEORGIAN LETTER NAR */
#define XK_Georgian_on 0x10010dd /* U+10DD GEORGIAN LETTER ON */
#define XK_Georgian_par 0x10010de /* U+10DE GEORGIAN LETTER PAR */
#define XK_Georgian_zhar 0x10010df /* U+10DF GEORGIAN LETTER ZHAR */
#define XK_Georgian_rae 0x10010e0 /* U+10E0 GEORGIAN LETTER RAE */
#define XK_Georgian_san 0x10010e1 /* U+10E1 GEORGIAN LETTER SAN */
#define XK_Georgian_tar 0x10010e2 /* U+10E2 GEORGIAN LETTER TAR */
#define XK_Georgian_un 0x10010e3 /* U+10E3 GEORGIAN LETTER UN */
#define XK_Georgian_phar 0x10010e4 /* U+10E4 GEORGIAN LETTER PHAR */
#define XK_Georgian_khar 0x10010e5 /* U+10E5 GEORGIAN LETTER KHAR */
#define XK_Georgian_ghan 0x10010e6 /* U+10E6 GEORGIAN LETTER GHAN */
#define XK_Georgian_qar 0x10010e7 /* U+10E7 GEORGIAN LETTER QAR */
#define XK_Georgian_shin 0x10010e8 /* U+10E8 GEORGIAN LETTER SHIN */
#define XK_Georgian_chin 0x10010e9 /* U+10E9 GEORGIAN LETTER CHIN */
#define XK_Georgian_can 0x10010ea /* U+10EA GEORGIAN LETTER CAN */
#define XK_Georgian_jil 0x10010eb /* U+10EB GEORGIAN LETTER JIL */
#define XK_Georgian_cil 0x10010ec /* U+10EC GEORGIAN LETTER CIL */
#define XK_Georgian_char 0x10010ed /* U+10ED GEORGIAN LETTER CHAR */
#define XK_Georgian_xan 0x10010ee /* U+10EE GEORGIAN LETTER XAN */
#define XK_Georgian_jhan 0x10010ef /* U+10EF GEORGIAN LETTER JHAN */
#define XK_Georgian_hae 0x10010f0 /* U+10F0 GEORGIAN LETTER HAE */
#define XK_Georgian_he 0x10010f1 /* U+10F1 GEORGIAN LETTER HE */
#define XK_Georgian_hie 0x10010f2 /* U+10F2 GEORGIAN LETTER HIE */
#define XK_Georgian_we 0x10010f3 /* U+10F3 GEORGIAN LETTER WE */
#define XK_Georgian_har 0x10010f4 /* U+10F4 GEORGIAN LETTER HAR */
#define XK_Georgian_hoe 0x10010f5 /* U+10F5 GEORGIAN LETTER HOE */
#define XK_Georgian_fi 0x10010f6 /* U+10F6 GEORGIAN LETTER FI */
#endif /* XK_GEORGIAN */
/*
* Azeri (and other Turkic or Caucasian languages)
*/
#ifdef XK_CAUCASUS
/* latin */
#define XK_Xabovedot 0x1001e8a /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */
#define XK_Ibreve 0x100012c /* U+012C LATIN CAPITAL LETTER I WITH BREVE */
#define XK_Zstroke 0x10001b5 /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */
#define XK_Gcaron 0x10001e6 /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */
#define XK_Ocaron 0x10001d1 /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */
#define XK_Obarred 0x100019f /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
#define XK_xabovedot 0x1001e8b /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */
#define XK_ibreve 0x100012d /* U+012D LATIN SMALL LETTER I WITH BREVE */
#define XK_zstroke 0x10001b6 /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */
#define XK_gcaron 0x10001e7 /* U+01E7 LATIN SMALL LETTER G WITH CARON */
#define XK_ocaron 0x10001d2 /* U+01D2 LATIN SMALL LETTER O WITH CARON */
#define XK_obarred 0x1000275 /* U+0275 LATIN SMALL LETTER BARRED O */
#define XK_SCHWA 0x100018f /* U+018F LATIN CAPITAL LETTER SCHWA */
#define XK_schwa 0x1000259 /* U+0259 LATIN SMALL LETTER SCHWA */
/* those are not really Caucasus */
/* For Inupiak */
#define XK_Lbelowdot 0x1001e36 /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */
#define XK_lbelowdot 0x1001e37 /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */
#endif /* XK_CAUCASUS */
/*
* Vietnamese
*/
#ifdef XK_VIETNAMESE
#define XK_Abelowdot 0x1001ea0 /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */
#define XK_abelowdot 0x1001ea1 /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */
#define XK_Ahook 0x1001ea2 /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */
#define XK_ahook 0x1001ea3 /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */
#define XK_Acircumflexacute 0x1001ea4 /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
#define XK_acircumflexacute 0x1001ea5 /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
#define XK_Acircumflexgrave 0x1001ea6 /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
#define XK_acircumflexgrave 0x1001ea7 /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
#define XK_Acircumflexhook 0x1001ea8 /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_acircumflexhook 0x1001ea9 /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_Acircumflextilde 0x1001eaa /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
#define XK_acircumflextilde 0x1001eab /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
#define XK_Acircumflexbelowdot 0x1001eac /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
#define XK_acircumflexbelowdot 0x1001ead /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
#define XK_Abreveacute 0x1001eae /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
#define XK_abreveacute 0x1001eaf /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */
#define XK_Abrevegrave 0x1001eb0 /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
#define XK_abrevegrave 0x1001eb1 /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */
#define XK_Abrevehook 0x1001eb2 /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
#define XK_abrevehook 0x1001eb3 /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
#define XK_Abrevetilde 0x1001eb4 /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
#define XK_abrevetilde 0x1001eb5 /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */
#define XK_Abrevebelowdot 0x1001eb6 /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
#define XK_abrevebelowdot 0x1001eb7 /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
#define XK_Ebelowdot 0x1001eb8 /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */
#define XK_ebelowdot 0x1001eb9 /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */
#define XK_Ehook 0x1001eba /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */
#define XK_ehook 0x1001ebb /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */
#define XK_Etilde 0x1001ebc /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */
#define XK_etilde 0x1001ebd /* U+1EBD LATIN SMALL LETTER E WITH TILDE */
#define XK_Ecircumflexacute 0x1001ebe /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
#define XK_ecircumflexacute 0x1001ebf /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
#define XK_Ecircumflexgrave 0x1001ec0 /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
#define XK_ecircumflexgrave 0x1001ec1 /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
#define XK_Ecircumflexhook 0x1001ec2 /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_ecircumflexhook 0x1001ec3 /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_Ecircumflextilde 0x1001ec4 /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
#define XK_ecircumflextilde 0x1001ec5 /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
#define XK_Ecircumflexbelowdot 0x1001ec6 /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
#define XK_ecircumflexbelowdot 0x1001ec7 /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
#define XK_Ihook 0x1001ec8 /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */
#define XK_ihook 0x1001ec9 /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */
#define XK_Ibelowdot 0x1001eca /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */
#define XK_ibelowdot 0x1001ecb /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */
#define XK_Obelowdot 0x1001ecc /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */
#define XK_obelowdot 0x1001ecd /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */
#define XK_Ohook 0x1001ece /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */
#define XK_ohook 0x1001ecf /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */
#define XK_Ocircumflexacute 0x1001ed0 /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
#define XK_ocircumflexacute 0x1001ed1 /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
#define XK_Ocircumflexgrave 0x1001ed2 /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
#define XK_ocircumflexgrave 0x1001ed3 /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
#define XK_Ocircumflexhook 0x1001ed4 /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_ocircumflexhook 0x1001ed5 /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
#define XK_Ocircumflextilde 0x1001ed6 /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
#define XK_ocircumflextilde 0x1001ed7 /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
#define XK_Ocircumflexbelowdot 0x1001ed8 /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
#define XK_ocircumflexbelowdot 0x1001ed9 /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
#define XK_Ohornacute 0x1001eda /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
#define XK_ohornacute 0x1001edb /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */
#define XK_Ohorngrave 0x1001edc /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
#define XK_ohorngrave 0x1001edd /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */
#define XK_Ohornhook 0x1001ede /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
#define XK_ohornhook 0x1001edf /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
#define XK_Ohorntilde 0x1001ee0 /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */
#define XK_ohorntilde 0x1001ee1 /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */
#define XK_Ohornbelowdot 0x1001ee2 /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
#define XK_ohornbelowdot 0x1001ee3 /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
#define XK_Ubelowdot 0x1001ee4 /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */
#define XK_ubelowdot 0x1001ee5 /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */
#define XK_Uhook 0x1001ee6 /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */
#define XK_uhook 0x1001ee7 /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */
#define XK_Uhornacute 0x1001ee8 /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
#define XK_uhornacute 0x1001ee9 /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */
#define XK_Uhorngrave 0x1001eea /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
#define XK_uhorngrave 0x1001eeb /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */
#define XK_Uhornhook 0x1001eec /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
#define XK_uhornhook 0x1001eed /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
#define XK_Uhorntilde 0x1001eee /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */
#define XK_uhorntilde 0x1001eef /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */
#define XK_Uhornbelowdot 0x1001ef0 /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
#define XK_uhornbelowdot 0x1001ef1 /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
#define XK_Ybelowdot 0x1001ef4 /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */
#define XK_ybelowdot 0x1001ef5 /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */
#define XK_Yhook 0x1001ef6 /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
#define XK_yhook 0x1001ef7 /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */
#define XK_Ytilde 0x1001ef8 /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */
#define XK_ytilde 0x1001ef9 /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */
#define XK_Ohorn 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */
#define XK_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */
#define XK_Uhorn 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */
#define XK_uhorn 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */
#endif /* XK_VIETNAMESE */
#ifdef XK_CURRENCY
#define XK_EcuSign 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */
#define XK_ColonSign 0x10020a1 /* U+20A1 COLON SIGN */
#define XK_CruzeiroSign 0x10020a2 /* U+20A2 CRUZEIRO SIGN */
#define XK_FFrancSign 0x10020a3 /* U+20A3 FRENCH FRANC SIGN */
#define XK_LiraSign 0x10020a4 /* U+20A4 LIRA SIGN */
#define XK_MillSign 0x10020a5 /* U+20A5 MILL SIGN */
#define XK_NairaSign 0x10020a6 /* U+20A6 NAIRA SIGN */
#define XK_PesetaSign 0x10020a7 /* U+20A7 PESETA SIGN */
#define XK_RupeeSign 0x10020a8 /* U+20A8 RUPEE SIGN */
#define XK_WonSign 0x10020a9 /* U+20A9 WON SIGN */
#define XK_NewSheqelSign 0x10020aa /* U+20AA NEW SHEQEL SIGN */
#define XK_DongSign 0x10020ab /* U+20AB DONG SIGN */
#define XK_EuroSign 0x20ac /* U+20AC EURO SIGN */
#endif /* XK_CURRENCY */
{.deadCodeElim: on.}
#
#Converted from X11/keysym.h and X11/keysymdef.h
#
#Capital letter consts renamed from XK_... to XKc_...
# (since Pascal isn't case-sensitive)
#
#i.e.
#C Pascal
#XK_a XK_a
#XK_A XKc_A
#
#* default keysyms *
import x
const
XK_VoidSymbol*: KeySym = 0x00FFFFFF # void symbol
when defined(XK_MISCELLANY) or true:
const
#*
# * TTY Functions, cleverly chosen to map to ascii, for convenience of
# * programming, but could have been arbitrary (at the cost of lookup
# * tables in client code.
# *
XK_BackSpace*: KeySym = 0x0000FF08 # back space, back char
XK_Tab*: KeySym = 0x0000FF09
XK_Linefeed*: KeySym = 0x0000FF0A # Linefeed, LF
XK_Clear*: KeySym = 0x0000FF0B
XK_Return*: KeySym = 0x0000FF0D # Return, enter
XK_Pause*: KeySym = 0x0000FF13 # Pause, hold
XK_Scroll_Lock*: KeySym = 0x0000FF14
XK_Sys_Req*: KeySym = 0x0000FF15
XK_Escape*: KeySym = 0x0000FF1B
XK_Delete*: KeySym = 0x0000FFFF # Delete, rubout \
# International & multi-key character composition
XK_Multi_key*: KeySym = 0x0000FF20 # Multi-key character compose
XK_Codeinput*: KeySym = 0x0000FF37
XK_SingleCandidate*: KeySym = 0x0000FF3C
XK_MultipleCandidate*: KeySym = 0x0000FF3D
XK_PreviousCandidate*: KeySym = 0x0000FF3E # Japanese keyboard support
XK_Kanji*: KeySym = 0x0000FF21 # Kanji, Kanji convert
XK_Muhenkan*: KeySym = 0x0000FF22 # Cancel Conversion
XK_Henkan_Mode*: KeySym = 0x0000FF23 # Start/Stop Conversion
XK_Henkan*: KeySym = 0x0000FF23 # Alias for Henkan_Mode
XK_Romaji*: KeySym = 0x0000FF24 # to Romaji
XK_Hiragana*: KeySym = 0x0000FF25 # to Hiragana
XK_Katakana*: KeySym = 0x0000FF26 # to Katakana
XK_Hiragana_Katakana*: KeySym = 0x0000FF27 # Hiragana/Katakana toggle
XK_Zenkaku*: KeySym = 0x0000FF28 # to Zenkaku
XK_Hankaku*: KeySym = 0x0000FF29 # to Hankaku
XK_Zenkaku_Hankaku*: KeySym = 0x0000FF2A # Zenkaku/Hankaku toggle
XK_Touroku*: KeySym = 0x0000FF2B # Add to Dictionary
XK_Massyo*: KeySym = 0x0000FF2C # Delete from Dictionary
XK_Kana_Lock*: KeySym = 0x0000FF2D # Kana Lock
XK_Kana_Shift*: KeySym = 0x0000FF2E # Kana Shift
XK_Eisu_Shift*: KeySym = 0x0000FF2F # Alphanumeric Shift
XK_Eisu_toggle*: KeySym = 0x0000FF30 # Alphanumeric toggle
XK_Kanji_Bangou*: KeySym = 0x0000FF37 # Codeinput
XK_Zen_Koho*: KeySym = 0x0000FF3D # Multiple/All Candidate(s)
XK_Mae_Koho*: KeySym = 0x0000FF3E # Previous Candidate \
# = $FF31 thru = $FF3F are under XK_KOREAN
# Cursor control & motion
XK_Home*: KeySym = 0x0000FF50
XK_Left*: KeySym = 0x0000FF51 # Move left, left arrow
XK_Up*: KeySym = 0x0000FF52 # Move up, up arrow
XK_Right*: KeySym = 0x0000FF53 # Move right, right arrow
XK_Down*: KeySym = 0x0000FF54 # Move down, down arrow
XK_Prior*: KeySym = 0x0000FF55 # Prior, previous
XK_Page_Up*: KeySym = 0x0000FF55
XK_Next*: KeySym = 0x0000FF56 # Next
XK_Page_Down*: KeySym = 0x0000FF56
XK_End*: KeySym = 0x0000FF57 # EOL
XK_Begin*: KeySym = 0x0000FF58 # BOL \
# Misc Functions
XK_Select*: KeySym = 0x0000FF60 # Select, mark
XK_Print*: KeySym = 0x0000FF61
XK_Execute*: KeySym = 0x0000FF62 # Execute, run, do
XK_Insert*: KeySym = 0x0000FF63 # Insert, insert here
XK_Undo*: KeySym = 0x0000FF65 # Undo, oops
XK_Redo*: KeySym = 0x0000FF66 # redo, again
XK_Menu*: KeySym = 0x0000FF67
XK_Find*: KeySym = 0x0000FF68 # Find, search
XK_Cancel*: KeySym = 0x0000FF69 # Cancel, stop, abort, exit
XK_Help*: KeySym = 0x0000FF6A # Help
XK_Break*: KeySym = 0x0000FF6B
XK_Mode_switch*: KeySym = 0x0000FF7E # Character set switch
XK_script_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
XK_Num_Lock*: KeySym = 0x0000FF7F # Keypad Functions, keypad numbers cleverly chosen to map to ascii
XK_KP_Space*: KeySym = 0x0000FF80 # space
XK_KP_Tab*: KeySym = 0x0000FF89
XK_KP_Enter*: KeySym = 0x0000FF8D # enter
XK_KP_F1*: KeySym = 0x0000FF91 # PF1, KP_A, ...
XK_KP_F2*: KeySym = 0x0000FF92
XK_KP_F3*: KeySym = 0x0000FF93
XK_KP_F4*: KeySym = 0x0000FF94
XK_KP_Home*: KeySym = 0x0000FF95
XK_KP_Left*: KeySym = 0x0000FF96
XK_KP_Up*: KeySym = 0x0000FF97
XK_KP_Right*: KeySym = 0x0000FF98
XK_KP_Down*: KeySym = 0x0000FF99
XK_KP_Prior*: KeySym = 0x0000FF9A
XK_KP_Page_Up*: KeySym = 0x0000FF9A
XK_KP_Next*: KeySym = 0x0000FF9B
XK_KP_Page_Down*: KeySym = 0x0000FF9B
XK_KP_End*: KeySym = 0x0000FF9C
XK_KP_Begin*: KeySym = 0x0000FF9D
XK_KP_Insert*: KeySym = 0x0000FF9E
XK_KP_Delete*: KeySym = 0x0000FF9F
XK_KP_Equal*: KeySym = 0x0000FFBD # equals
XK_KP_Multiply*: KeySym = 0x0000FFAA
XK_KP_Add*: KeySym = 0x0000FFAB
XK_KP_Separator*: KeySym = 0x0000FFAC # separator, often comma
XK_KP_Subtract*: KeySym = 0x0000FFAD
XK_KP_Decimal*: KeySym = 0x0000FFAE
XK_KP_Divide*: KeySym = 0x0000FFAF
XK_KP_0*: KeySym = 0x0000FFB0
XK_KP_1*: KeySym = 0x0000FFB1
XK_KP_2*: KeySym = 0x0000FFB2
XK_KP_3*: KeySym = 0x0000FFB3
XK_KP_4*: KeySym = 0x0000FFB4
XK_KP_5*: KeySym = 0x0000FFB5
XK_KP_6*: KeySym = 0x0000FFB6
XK_KP_7*: KeySym = 0x0000FFB7
XK_KP_8*: KeySym = 0x0000FFB8
XK_KP_9*: KeySym = 0x0000FFB9 #*\
# * Auxilliary Functions; note the duplicate definitions for left and right
# * function keys; Sun keyboards and a few other manufactures have such
# * function key groups on the left and/or right sides of the keyboard.
# * We've not found a keyboard with more than 35 function keys total.
# *
XK_F1*: KeySym = 0x0000FFBE
XK_F2*: KeySym = 0x0000FFBF
XK_F3*: KeySym = 0x0000FFC0
XK_F4*: KeySym = 0x0000FFC1
XK_F5*: KeySym = 0x0000FFC2
XK_F6*: KeySym = 0x0000FFC3
XK_F7*: KeySym = 0x0000FFC4
XK_F8*: KeySym = 0x0000FFC5
XK_F9*: KeySym = 0x0000FFC6
XK_F10*: KeySym = 0x0000FFC7
XK_F11*: KeySym = 0x0000FFC8
XK_L1*: KeySym = 0x0000FFC8
XK_F12*: KeySym = 0x0000FFC9
XK_L2*: KeySym = 0x0000FFC9
XK_F13*: KeySym = 0x0000FFCA
XK_L3*: KeySym = 0x0000FFCA
XK_F14*: KeySym = 0x0000FFCB
XK_L4*: KeySym = 0x0000FFCB
XK_F15*: KeySym = 0x0000FFCC
XK_L5*: KeySym = 0x0000FFCC
XK_F16*: KeySym = 0x0000FFCD
XK_L6*: KeySym = 0x0000FFCD
XK_F17*: KeySym = 0x0000FFCE
XK_L7*: KeySym = 0x0000FFCE
XK_F18*: KeySym = 0x0000FFCF
XK_L8*: KeySym = 0x0000FFCF
XK_F19*: KeySym = 0x0000FFD0
XK_L9*: KeySym = 0x0000FFD0
XK_F20*: KeySym = 0x0000FFD1
XK_L10*: KeySym = 0x0000FFD1
XK_F21*: KeySym = 0x0000FFD2
XK_R1*: KeySym = 0x0000FFD2
XK_F22*: KeySym = 0x0000FFD3
XK_R2*: KeySym = 0x0000FFD3
XK_F23*: KeySym = 0x0000FFD4
XK_R3*: KeySym = 0x0000FFD4
XK_F24*: KeySym = 0x0000FFD5
XK_R4*: KeySym = 0x0000FFD5
XK_F25*: KeySym = 0x0000FFD6
XK_R5*: KeySym = 0x0000FFD6
XK_F26*: KeySym = 0x0000FFD7
XK_R6*: KeySym = 0x0000FFD7
XK_F27*: KeySym = 0x0000FFD8
XK_R7*: KeySym = 0x0000FFD8
XK_F28*: KeySym = 0x0000FFD9
XK_R8*: KeySym = 0x0000FFD9
XK_F29*: KeySym = 0x0000FFDA
XK_R9*: KeySym = 0x0000FFDA
XK_F30*: KeySym = 0x0000FFDB
XK_R10*: KeySym = 0x0000FFDB
XK_F31*: KeySym = 0x0000FFDC
XK_R11*: KeySym = 0x0000FFDC
XK_F32*: KeySym = 0x0000FFDD
XK_R12*: KeySym = 0x0000FFDD
XK_F33*: KeySym = 0x0000FFDE
XK_R13*: KeySym = 0x0000FFDE
XK_F34*: KeySym = 0x0000FFDF
XK_R14*: KeySym = 0x0000FFDF
XK_F35*: KeySym = 0x0000FFE0
XK_R15*: KeySym = 0x0000FFE0 # Modifiers
XK_Shift_L*: KeySym = 0x0000FFE1 # Left shift
XK_Shift_R*: KeySym = 0x0000FFE2 # Right shift
XK_Control_L*: KeySym = 0x0000FFE3 # Left control
XK_Control_R*: KeySym = 0x0000FFE4 # Right control
XK_Caps_Lock*: KeySym = 0x0000FFE5 # Caps lock
XK_Shift_Lock*: KeySym = 0x0000FFE6 # Shift lock
XK_Meta_L*: KeySym = 0x0000FFE7 # Left meta
XK_Meta_R*: KeySym = 0x0000FFE8 # Right meta
XK_Alt_L*: KeySym = 0x0000FFE9 # Left alt
XK_Alt_R*: KeySym = 0x0000FFEA # Right alt
XK_Super_L*: KeySym = 0x0000FFEB # Left super
XK_Super_R*: KeySym = 0x0000FFEC # Right super
XK_Hyper_L*: KeySym = 0x0000FFED # Left hyper
XK_Hyper_R*: KeySym = 0x0000FFEE # Right hyper
# XK_MISCELLANY
#*
# * ISO 9995 Function and Modifier Keys
# * Byte 3 = = $FE
# *
when defined(XK_XKB_KEYS) or true:
const
XK_ISO_Lock*: KeySym = 0x0000FE01
XK_ISO_Level2_Latch*: KeySym = 0x0000FE02
XK_ISO_Level3_Shift*: KeySym = 0x0000FE03
XK_ISO_Level3_Latch*: KeySym = 0x0000FE04
XK_ISO_Level3_Lock*: KeySym = 0x0000FE05
XK_ISO_Group_Shift*: KeySym = 0x0000FF7E # Alias for mode_switch
XK_ISO_Group_Latch*: KeySym = 0x0000FE06
XK_ISO_Group_Lock*: KeySym = 0x0000FE07
XK_ISO_Next_Group*: KeySym = 0x0000FE08
XK_ISO_Next_Group_Lock*: KeySym = 0x0000FE09
XK_ISO_Prev_Group*: KeySym = 0x0000FE0A
XK_ISO_Prev_Group_Lock*: KeySym = 0x0000FE0B
XK_ISO_First_Group*: KeySym = 0x0000FE0C
XK_ISO_First_Group_Lock*: KeySym = 0x0000FE0D
XK_ISO_Last_Group*: KeySym = 0x0000FE0E
XK_ISO_Last_Group_Lock*: KeySym = 0x0000FE0F
XK_ISO_Left_Tab*: KeySym = 0x0000FE20
XK_ISO_Move_Line_Up*: KeySym = 0x0000FE21
XK_ISO_Move_Line_Down*: KeySym = 0x0000FE22
XK_ISO_Partial_Line_Up*: KeySym = 0x0000FE23
XK_ISO_Partial_Line_Down*: KeySym = 0x0000FE24
XK_ISO_Partial_Space_Left*: KeySym = 0x0000FE25
XK_ISO_Partial_Space_Right*: KeySym = 0x0000FE26
XK_ISO_Set_Margin_Left*: KeySym = 0x0000FE27
XK_ISO_Set_Margin_Right*: KeySym = 0x0000FE28
XK_ISO_Release_Margin_Left*: KeySym = 0x0000FE29
XK_ISO_Release_Margin_Right*: KeySym = 0x0000FE2A
XK_ISO_Release_Both_Margins*: KeySym = 0x0000FE2B
XK_ISO_Fast_Cursor_Left*: KeySym = 0x0000FE2C
XK_ISO_Fast_Cursor_Right*: KeySym = 0x0000FE2D
XK_ISO_Fast_Cursor_Up*: KeySym = 0x0000FE2E
XK_ISO_Fast_Cursor_Down*: KeySym = 0x0000FE2F
XK_ISO_Continuous_Underline*: KeySym = 0x0000FE30
XK_ISO_Discontinuous_Underline*: KeySym = 0x0000FE31
XK_ISO_Emphasize*: KeySym = 0x0000FE32
XK_ISO_Center_Object*: KeySym = 0x0000FE33
XK_ISO_Enter*: KeySym = 0x0000FE34
XK_dead_grave*: KeySym = 0x0000FE50
XK_dead_acute*: KeySym = 0x0000FE51
XK_dead_circumflex*: KeySym = 0x0000FE52
XK_dead_tilde*: KeySym = 0x0000FE53
XK_dead_macron*: KeySym = 0x0000FE54
XK_dead_breve*: KeySym = 0x0000FE55
XK_dead_abovedot*: KeySym = 0x0000FE56
XK_dead_diaeresis*: KeySym = 0x0000FE57
XK_dead_abovering*: KeySym = 0x0000FE58
XK_dead_doubleacute*: KeySym = 0x0000FE59
XK_dead_caron*: KeySym = 0x0000FE5A
XK_dead_cedilla*: KeySym = 0x0000FE5B
XK_dead_ogonek*: KeySym = 0x0000FE5C
XK_dead_iota*: KeySym = 0x0000FE5D
XK_dead_voiced_sound*: KeySym = 0x0000FE5E
XK_dead_semivoiced_sound*: KeySym = 0x0000FE5F
XK_dead_belowdot*: KeySym = 0x0000FE60
XK_dead_hook*: KeySym = 0x0000FE61
XK_dead_horn*: KeySym = 0x0000FE62
XK_First_Virtual_Screen*: KeySym = 0x0000FED0
XK_Prev_Virtual_Screen*: KeySym = 0x0000FED1
XK_Next_Virtual_Screen*: KeySym = 0x0000FED2
XK_Last_Virtual_Screen*: KeySym = 0x0000FED4
XK_Terminate_Server*: KeySym = 0x0000FED5
XK_AccessX_Enable*: KeySym = 0x0000FE70
XK_AccessX_Feedback_Enable*: KeySym = 0x0000FE71
XK_RepeatKeys_Enable*: KeySym = 0x0000FE72
XK_SlowKeys_Enable*: KeySym = 0x0000FE73
XK_BounceKeys_Enable*: KeySym = 0x0000FE74
XK_StickyKeys_Enable*: KeySym = 0x0000FE75
XK_MouseKeys_Enable*: KeySym = 0x0000FE76
XK_MouseKeys_Accel_Enable*: KeySym = 0x0000FE77
XK_Overlay1_Enable*: KeySym = 0x0000FE78
XK_Overlay2_Enable*: KeySym = 0x0000FE79
XK_AudibleBell_Enable*: KeySym = 0x0000FE7A
XK_Pointer_Left*: KeySym = 0x0000FEE0
XK_Pointer_Right*: KeySym = 0x0000FEE1
XK_Pointer_Up*: KeySym = 0x0000FEE2
XK_Pointer_Down*: KeySym = 0x0000FEE3
XK_Pointer_UpLeft*: KeySym = 0x0000FEE4
XK_Pointer_UpRight*: KeySym = 0x0000FEE5
XK_Pointer_DownLeft*: KeySym = 0x0000FEE6
XK_Pointer_DownRight*: KeySym = 0x0000FEE7
XK_Pointer_Button_Dflt*: KeySym = 0x0000FEE8
XK_Pointer_Button1*: KeySym = 0x0000FEE9
XK_Pointer_Button2*: KeySym = 0x0000FEEA
XK_Pointer_Button3*: KeySym = 0x0000FEEB
XK_Pointer_Button4*: KeySym = 0x0000FEEC
XK_Pointer_Button5*: KeySym = 0x0000FEED
XK_Pointer_DblClick_Dflt*: KeySym = 0x0000FEEE
XK_Pointer_DblClick1*: KeySym = 0x0000FEEF
XK_Pointer_DblClick2*: KeySym = 0x0000FEF0
XK_Pointer_DblClick3*: KeySym = 0x0000FEF1
XK_Pointer_DblClick4*: KeySym = 0x0000FEF2
XK_Pointer_DblClick5*: KeySym = 0x0000FEF3
XK_Pointer_Drag_Dflt*: KeySym = 0x0000FEF4
XK_Pointer_Drag1*: KeySym = 0x0000FEF5
XK_Pointer_Drag2*: KeySym = 0x0000FEF6
XK_Pointer_Drag3*: KeySym = 0x0000FEF7
XK_Pointer_Drag4*: KeySym = 0x0000FEF8
XK_Pointer_Drag5*: KeySym = 0x0000FEFD
XK_Pointer_EnableKeys*: KeySym = 0x0000FEF9
XK_Pointer_Accelerate*: KeySym = 0x0000FEFA
XK_Pointer_DfltBtnNext*: KeySym = 0x0000FEFB
XK_Pointer_DfltBtnPrev*: KeySym = 0x0000FEFC
#*
# * 3270 Terminal Keys
# * Byte 3 = = $FD
# *
when defined(XK_3270) or true:
const
XK_3270_Duplicate*: KeySym = 0x0000FD01
XK_3270_FieldMark*: KeySym = 0x0000FD02
XK_3270_Right2*: KeySym = 0x0000FD03
XK_3270_Left2*: KeySym = 0x0000FD04
XK_3270_BackTab*: KeySym = 0x0000FD05
XK_3270_EraseEOF*: KeySym = 0x0000FD06
XK_3270_EraseInput*: KeySym = 0x0000FD07
XK_3270_Reset*: KeySym = 0x0000FD08
XK_3270_Quit*: KeySym = 0x0000FD09
XK_3270_PA1*: KeySym = 0x0000FD0A
XK_3270_PA2*: KeySym = 0x0000FD0B
XK_3270_PA3*: KeySym = 0x0000FD0C
XK_3270_Test*: KeySym = 0x0000FD0D
XK_3270_Attn*: KeySym = 0x0000FD0E
XK_3270_CursorBlink*: KeySym = 0x0000FD0F
XK_3270_AltCursor*: KeySym = 0x0000FD10
XK_3270_KeyClick*: KeySym = 0x0000FD11
XK_3270_Jump*: KeySym = 0x0000FD12
XK_3270_Ident*: KeySym = 0x0000FD13
XK_3270_Rule*: KeySym = 0x0000FD14
XK_3270_Copy*: KeySym = 0x0000FD15
XK_3270_Play*: KeySym = 0x0000FD16
XK_3270_Setup*: KeySym = 0x0000FD17
XK_3270_Record*: KeySym = 0x0000FD18
XK_3270_ChangeScreen*: KeySym = 0x0000FD19
XK_3270_DeleteWord*: KeySym = 0x0000FD1A
XK_3270_ExSelect*: KeySym = 0x0000FD1B
XK_3270_CursorSelect*: KeySym = 0x0000FD1C
XK_3270_PrintScreen*: KeySym = 0x0000FD1D
XK_3270_Enter*: KeySym = 0x0000FD1E
#*
# * Latin 1
# * Byte 3 = 0
# *
when defined(XK_LATIN1) or true:
const
XK_space*: KeySym = 0x00000020
XK_exclam*: KeySym = 0x00000021
XK_quotedbl*: KeySym = 0x00000022
XK_numbersign*: KeySym = 0x00000023
XK_dollar*: KeySym = 0x00000024
XK_percent*: KeySym = 0x00000025
XK_ampersand*: KeySym = 0x00000026
XK_apostrophe*: KeySym = 0x00000027
XK_quoteright*: KeySym = 0x00000027 # deprecated
XK_parenleft*: KeySym = 0x00000028
XK_parenright*: KeySym = 0x00000029
XK_asterisk*: KeySym = 0x0000002A
XK_plus*: KeySym = 0x0000002B
XK_comma*: KeySym = 0x0000002C
XK_minus*: KeySym = 0x0000002D
XK_period*: KeySym = 0x0000002E
XK_slash*: KeySym = 0x0000002F
XK_0*: KeySym = 0x00000030
XK_1*: KeySym = 0x00000031
XK_2*: KeySym = 0x00000032
XK_3*: KeySym = 0x00000033
XK_4*: KeySym = 0x00000034
XK_5*: KeySym = 0x00000035
XK_6*: KeySym = 0x00000036
XK_7*: KeySym = 0x00000037
XK_8*: KeySym = 0x00000038
XK_9*: KeySym = 0x00000039
XK_colon*: KeySym = 0x0000003A
XK_semicolon*: KeySym = 0x0000003B
XK_less*: KeySym = 0x0000003C
XK_equal*: KeySym = 0x0000003D
XK_greater*: KeySym = 0x0000003E
XK_question*: KeySym = 0x0000003F
XK_at*: KeySym = 0x00000040
XKc_A*: KeySym = 0x00000041
XKc_B*: KeySym = 0x00000042
XKc_C*: KeySym = 0x00000043
XKc_D*: KeySym = 0x00000044
XKc_E*: KeySym = 0x00000045
XKc_F*: KeySym = 0x00000046
XKc_G*: KeySym = 0x00000047
XKc_H*: KeySym = 0x00000048
XKc_I*: KeySym = 0x00000049
XKc_J*: KeySym = 0x0000004A
XKc_K*: KeySym = 0x0000004B
XKc_L*: KeySym = 0x0000004C
XKc_M*: KeySym = 0x0000004D
XKc_N*: KeySym = 0x0000004E
XKc_O*: KeySym = 0x0000004F
XKc_P*: KeySym = 0x00000050
XKc_Q*: KeySym = 0x00000051
XKc_R*: KeySym = 0x00000052
XKc_S*: KeySym = 0x00000053
XKc_T*: KeySym = 0x00000054
XKc_U*: KeySym = 0x00000055
XKc_V*: KeySym = 0x00000056
XKc_W*: KeySym = 0x00000057
XKc_X*: KeySym = 0x00000058
XKc_Y*: KeySym = 0x00000059
XKc_Z*: KeySym = 0x0000005A
XK_bracketleft*: KeySym = 0x0000005B
XK_backslash*: KeySym = 0x0000005C
XK_bracketright*: KeySym = 0x0000005D
XK_asciicircum*: KeySym = 0x0000005E
XK_underscore*: KeySym = 0x0000005F
XK_grave*: KeySym = 0x00000060
XK_quoteleft*: KeySym = 0x00000060 # deprecated
XK_a*: KeySym = 0x00000061
XK_b*: KeySym = 0x00000062
XK_c*: KeySym = 0x00000063
XK_d*: KeySym = 0x00000064
XK_e*: KeySym = 0x00000065
XK_f*: KeySym = 0x00000066
XK_g*: KeySym = 0x00000067
XK_h*: KeySym = 0x00000068
XK_i*: KeySym = 0x00000069
XK_j*: KeySym = 0x0000006A
XK_k*: KeySym = 0x0000006B
XK_l*: KeySym = 0x0000006C
XK_m*: KeySym = 0x0000006D
XK_n*: KeySym = 0x0000006E
XK_o*: KeySym = 0x0000006F
XK_p*: KeySym = 0x00000070
XK_q*: KeySym = 0x00000071
XK_r*: KeySym = 0x00000072
XK_s*: KeySym = 0x00000073
XK_t*: KeySym = 0x00000074
XK_u*: KeySym = 0x00000075
XK_v*: KeySym = 0x00000076
XK_w*: KeySym = 0x00000077
XK_x*: KeySym = 0x00000078
XK_y*: KeySym = 0x00000079
XK_z*: KeySym = 0x0000007A
XK_braceleft*: KeySym = 0x0000007B
XK_bar*: KeySym = 0x0000007C
XK_braceright*: KeySym = 0x0000007D
XK_asciitilde*: KeySym = 0x0000007E
XK_nobreakspace*: KeySym = 0x000000A0
XK_exclamdown*: KeySym = 0x000000A1
XK_cent*: KeySym = 0x000000A2
XK_sterling*: KeySym = 0x000000A3
XK_currency*: KeySym = 0x000000A4
XK_yen*: KeySym = 0x000000A5
XK_brokenbar*: KeySym = 0x000000A6
XK_section*: KeySym = 0x000000A7
XK_diaeresis*: KeySym = 0x000000A8
XK_copyright*: KeySym = 0x000000A9
XK_ordfeminine*: KeySym = 0x000000AA
XK_guillemotleft*: KeySym = 0x000000AB # left angle quotation mark
XK_notsign*: KeySym = 0x000000AC
XK_hyphen*: KeySym = 0x000000AD
XK_registered*: KeySym = 0x000000AE
XK_macron*: KeySym = 0x000000AF
XK_degree*: KeySym = 0x000000B0
XK_plusminus*: KeySym = 0x000000B1
XK_twosuperior*: KeySym = 0x000000B2
XK_threesuperior*: KeySym = 0x000000B3
XK_acute*: KeySym = 0x000000B4
XK_mu*: KeySym = 0x000000B5
XK_paragraph*: KeySym = 0x000000B6
XK_periodcentered*: KeySym = 0x000000B7
XK_cedilla*: KeySym = 0x000000B8
XK_onesuperior*: KeySym = 0x000000B9
XK_masculine*: KeySym = 0x000000BA
XK_guillemotright*: KeySym = 0x000000BB # right angle quotation mark
XK_onequarter*: KeySym = 0x000000BC
XK_onehalf*: KeySym = 0x000000BD
XK_threequarters*: KeySym = 0x000000BE
XK_questiondown*: KeySym = 0x000000BF
XKc_Agrave*: KeySym = 0x000000C0
XKc_Aacute*: KeySym = 0x000000C1
XKc_Acircumflex*: KeySym = 0x000000C2
XKc_Atilde*: KeySym = 0x000000C3
XKc_Adiaeresis*: KeySym = 0x000000C4
XKc_Aring*: KeySym = 0x000000C5
XKc_AE*: KeySym = 0x000000C6
XKc_Ccedilla*: KeySym = 0x000000C7
XKc_Egrave*: KeySym = 0x000000C8
XKc_Eacute*: KeySym = 0x000000C9
XKc_Ecircumflex*: KeySym = 0x000000CA
XKc_Ediaeresis*: KeySym = 0x000000CB
XKc_Igrave*: KeySym = 0x000000CC
XKc_Iacute*: KeySym = 0x000000CD
XKc_Icircumflex*: KeySym = 0x000000CE
XKc_Idiaeresis*: KeySym = 0x000000CF
XKc_ETH*: KeySym = 0x000000D0
XKc_Ntilde*: KeySym = 0x000000D1
XKc_Ograve*: KeySym = 0x000000D2
XKc_Oacute*: KeySym = 0x000000D3
XKc_Ocircumflex*: KeySym = 0x000000D4
XKc_Otilde*: KeySym = 0x000000D5
XKc_Odiaeresis*: KeySym = 0x000000D6
XK_multiply*: KeySym = 0x000000D7
XKc_Ooblique*: KeySym = 0x000000D8
XKc_Oslash*: KeySym = XKc_Ooblique
XKc_Ugrave*: KeySym = 0x000000D9
XKc_Uacute*: KeySym = 0x000000DA
XKc_Ucircumflex*: KeySym = 0x000000DB
XKc_Udiaeresis*: KeySym = 0x000000DC
XKc_Yacute*: KeySym = 0x000000DD
XKc_THORN*: KeySym = 0x000000DE
XK_ssharp*: KeySym = 0x000000DF
XK_agrave*: KeySym = 0x000000E0
XK_aacute*: KeySym = 0x000000E1
XK_acircumflex*: KeySym = 0x000000E2
XK_atilde*: KeySym = 0x000000E3
XK_adiaeresis*: KeySym = 0x000000E4
XK_aring*: KeySym = 0x000000E5
XK_ae*: KeySym = 0x000000E6
XK_ccedilla*: KeySym = 0x000000E7
XK_egrave*: KeySym = 0x000000E8
XK_eacute*: KeySym = 0x000000E9
XK_ecircumflex*: KeySym = 0x000000EA
XK_ediaeresis*: KeySym = 0x000000EB
XK_igrave*: KeySym = 0x000000EC
XK_iacute*: KeySym = 0x000000ED
XK_icircumflex*: KeySym = 0x000000EE
XK_idiaeresis*: KeySym = 0x000000EF
XK_eth*: KeySym = 0x000000F0
XK_ntilde*: KeySym = 0x000000F1
XK_ograve*: KeySym = 0x000000F2
XK_oacute*: KeySym = 0x000000F3
XK_ocircumflex*: KeySym = 0x000000F4
XK_otilde*: KeySym = 0x000000F5
XK_odiaeresis*: KeySym = 0x000000F6
XK_division*: KeySym = 0x000000F7
XK_oslash*: KeySym = 0x000000F8
XK_ooblique*: KeySym = XK_oslash
XK_ugrave*: KeySym = 0x000000F9
XK_uacute*: KeySym = 0x000000FA
XK_ucircumflex*: KeySym = 0x000000FB
XK_udiaeresis*: KeySym = 0x000000FC
XK_yacute*: KeySym = 0x000000FD
XK_thorn*: KeySym = 0x000000FE
XK_ydiaeresis*: KeySym = 0x000000FF
# XK_LATIN1
#*
# * Latin 2
# * Byte 3 = 1
# *
when defined(XK_LATIN2) or true:
const
XKc_Aogonek*: KeySym = 0x000001A1
XK_breve*: KeySym = 0x000001A2
XKc_Lstroke*: KeySym = 0x000001A3
XKc_Lcaron*: KeySym = 0x000001A5
XKc_Sacute*: KeySym = 0x000001A6
XKc_Scaron*: KeySym = 0x000001A9
XKc_Scedilla*: KeySym = 0x000001AA
XKc_Tcaron*: KeySym = 0x000001AB
XKc_Zacute*: KeySym = 0x000001AC
XKc_Zcaron*: KeySym = 0x000001AE
XKc_Zabovedot*: KeySym = 0x000001AF
XK_aogonek*: KeySym = 0x000001B1
XK_ogonek*: KeySym = 0x000001B2
XK_lstroke*: KeySym = 0x000001B3
XK_lcaron*: KeySym = 0x000001B5
XK_sacute*: KeySym = 0x000001B6
XK_caron*: KeySym = 0x000001B7
XK_scaron*: KeySym = 0x000001B9
XK_scedilla*: KeySym = 0x000001BA
XK_tcaron*: KeySym = 0x000001BB
XK_zacute*: KeySym = 0x000001BC
XK_doubleacute*: KeySym = 0x000001BD
XK_zcaron*: KeySym = 0x000001BE
XK_zabovedot*: KeySym = 0x000001BF
XKc_Racute*: KeySym = 0x000001C0
XKc_Abreve*: KeySym = 0x000001C3
XKc_Lacute*: KeySym = 0x000001C5
XKc_Cacute*: KeySym = 0x000001C6
XKc_Ccaron*: KeySym = 0x000001C8
XKc_Eogonek*: KeySym = 0x000001CA
XKc_Ecaron*: KeySym = 0x000001CC
XKc_Dcaron*: KeySym = 0x000001CF
XKc_Dstroke*: KeySym = 0x000001D0
XKc_Nacute*: KeySym = 0x000001D1
XKc_Ncaron*: KeySym = 0x000001D2
XKc_Odoubleacute*: KeySym = 0x000001D5
XKc_Rcaron*: KeySym = 0x000001D8
XKc_Uring*: KeySym = 0x000001D9
XKc_Udoubleacute*: KeySym = 0x000001DB
XKc_Tcedilla*: KeySym = 0x000001DE
XK_racute*: KeySym = 0x000001E0
XK_abreve*: KeySym = 0x000001E3
XK_lacute*: KeySym = 0x000001E5
XK_cacute*: KeySym = 0x000001E6
XK_ccaron*: KeySym = 0x000001E8
XK_eogonek*: KeySym = 0x000001EA
XK_ecaron*: KeySym = 0x000001EC
XK_dcaron*: KeySym = 0x000001EF
XK_dstroke*: KeySym = 0x000001F0
XK_nacute*: KeySym = 0x000001F1
XK_ncaron*: KeySym = 0x000001F2
XK_odoubleacute*: KeySym = 0x000001F5
XK_udoubleacute*: KeySym = 0x000001FB
XK_rcaron*: KeySym = 0x000001F8
XK_uring*: KeySym = 0x000001F9
XK_tcedilla*: KeySym = 0x000001FE
XK_abovedot*: KeySym = 0x000001FF
# XK_LATIN2
#*
# * Latin 3
# * Byte 3 = 2
# *
when defined(XK_LATIN3) or true:
const
XKc_Hstroke*: KeySym = 0x000002A1
XKc_Hcircumflex*: KeySym = 0x000002A6
XKc_Iabovedot*: KeySym = 0x000002A9
XKc_Gbreve*: KeySym = 0x000002AB
XKc_Jcircumflex*: KeySym = 0x000002AC
XK_hstroke*: KeySym = 0x000002B1
XK_hcircumflex*: KeySym = 0x000002B6
XK_idotless*: KeySym = 0x000002B9
XK_gbreve*: KeySym = 0x000002BB
XK_jcircumflex*: KeySym = 0x000002BC
XKc_Cabovedot*: KeySym = 0x000002C5
XKc_Ccircumflex*: KeySym = 0x000002C6
XKc_Gabovedot*: KeySym = 0x000002D5
XKc_Gcircumflex*: KeySym = 0x000002D8
XKc_Ubreve*: KeySym = 0x000002DD
XKc_Scircumflex*: KeySym = 0x000002DE
XK_cabovedot*: KeySym = 0x000002E5
XK_ccircumflex*: KeySym = 0x000002E6
XK_gabovedot*: KeySym = 0x000002F5
XK_gcircumflex*: KeySym = 0x000002F8
XK_ubreve*: KeySym = 0x000002FD
XK_scircumflex*: KeySym = 0x000002FE
# XK_LATIN3
#*
# * Latin 4
# * Byte 3 = 3
# *
when defined(XK_LATIN4) or true:
const
XK_kra*: KeySym = 0x000003A2
XK_kappa*: KeySym = 0x000003A2 # deprecated
XKc_Rcedilla*: KeySym = 0x000003A3
XKc_Itilde*: KeySym = 0x000003A5
XKc_Lcedilla*: KeySym = 0x000003A6
XKc_Emacron*: KeySym = 0x000003AA
XKc_Gcedilla*: KeySym = 0x000003AB
XKc_Tslash*: KeySym = 0x000003AC
XK_rcedilla*: KeySym = 0x000003B3
XK_itilde*: KeySym = 0x000003B5
XK_lcedilla*: KeySym = 0x000003B6
XK_emacron*: KeySym = 0x000003BA
XK_gcedilla*: KeySym = 0x000003BB
XK_tslash*: KeySym = 0x000003BC
XKc_ENG*: KeySym = 0x000003BD
XK_eng*: KeySym = 0x000003BF
XKc_Amacron*: KeySym = 0x000003C0
XKc_Iogonek*: KeySym = 0x000003C7
XKc_Eabovedot*: KeySym = 0x000003CC
XKc_Imacron*: KeySym = 0x000003CF
XKc_Ncedilla*: KeySym = 0x000003D1
XKc_Omacron*: KeySym = 0x000003D2
XKc_Kcedilla*: KeySym = 0x000003D3
XKc_Uogonek*: KeySym = 0x000003D9
XKc_Utilde*: KeySym = 0x000003DD
XKc_Umacron*: KeySym = 0x000003DE
XK_amacron*: KeySym = 0x000003E0
XK_iogonek*: KeySym = 0x000003E7
XK_eabovedot*: KeySym = 0x000003EC
XK_imacron*: KeySym = 0x000003EF
XK_ncedilla*: KeySym = 0x000003F1
XK_omacron*: KeySym = 0x000003F2
XK_kcedilla*: KeySym = 0x000003F3
XK_uogonek*: KeySym = 0x000003F9
XK_utilde*: KeySym = 0x000003FD
XK_umacron*: KeySym = 0x000003FE
# XK_LATIN4
#*
# * Latin-8
# * Byte 3 = 18
# *
when defined(XK_LATIN8) or true:
const
XKc_Babovedot*: KeySym = 0x000012A1
XK_babovedot*: KeySym = 0x000012A2
XKc_Dabovedot*: KeySym = 0x000012A6
XKc_Wgrave*: KeySym = 0x000012A8
XKc_Wacute*: KeySym = 0x000012AA
XK_dabovedot*: KeySym = 0x000012AB
XKc_Ygrave*: KeySym = 0x000012AC
XKc_Fabovedot*: KeySym = 0x000012B0
XK_fabovedot*: KeySym = 0x000012B1
XKc_Mabovedot*: KeySym = 0x000012B4
XK_mabovedot*: KeySym = 0x000012B5
XKc_Pabovedot*: KeySym = 0x000012B7
XK_wgrave*: KeySym = 0x000012B8
XK_pabovedot*: KeySym = 0x000012B9
XK_wacute*: KeySym = 0x000012BA
XKc_Sabovedot*: KeySym = 0x000012BB
XK_ygrave*: KeySym = 0x000012BC
XKc_Wdiaeresis*: KeySym = 0x000012BD
XK_wdiaeresis*: KeySym = 0x000012BE
XK_sabovedot*: KeySym = 0x000012BF
XKc_Wcircumflex*: KeySym = 0x000012D0
XKc_Tabovedot*: KeySym = 0x000012D7
XKc_Ycircumflex*: KeySym = 0x000012DE
XK_wcircumflex*: KeySym = 0x000012F0
XK_tabovedot*: KeySym = 0x000012F7
XK_ycircumflex*: KeySym = 0x000012FE
# XK_LATIN8
#*
# * Latin-9 (a.k.a. Latin-0)
# * Byte 3 = 19
# *
when defined(XK_LATIN9) or true:
const
XKc_OE*: KeySym = 0x000013BC
XK_oe*: KeySym = 0x000013BD
XKc_Ydiaeresis*: KeySym = 0x000013BE
# XK_LATIN9
#*
# * Katakana
# * Byte 3 = 4
# *
when defined(XK_KATAKANA) or true:
const
XK_overline*: KeySym = 0x0000047E
XK_kana_fullstop*: KeySym = 0x000004A1
XK_kana_openingbracket*: KeySym = 0x000004A2
XK_kana_closingbracket*: KeySym = 0x000004A3
XK_kana_comma*: KeySym = 0x000004A4
XK_kana_conjunctive*: KeySym = 0x000004A5
XK_kana_middledot*: KeySym = 0x000004A5 # deprecated
XKc_kana_WO*: KeySym = 0x000004A6
XK_kana_a*: KeySym = 0x000004A7
XK_kana_i*: KeySym = 0x000004A8
XK_kana_u*: KeySym = 0x000004A9
XK_kana_e*: KeySym = 0x000004AA
XK_kana_o*: KeySym = 0x000004AB
XK_kana_ya*: KeySym = 0x000004AC
XK_kana_yu*: KeySym = 0x000004AD
XK_kana_yo*: KeySym = 0x000004AE
XK_kana_tsu*: KeySym = 0x000004AF
XK_kana_tu*: KeySym = 0x000004AF # deprecated
XK_prolongedsound*: KeySym = 0x000004B0
XKc_kana_A*: KeySym = 0x000004B1
XKc_kana_I*: KeySym = 0x000004B2
XKc_kana_U*: KeySym = 0x000004B3
XKc_kana_E*: KeySym = 0x000004B4
XKc_kana_O*: KeySym = 0x000004B5
XKc_kana_KA*: KeySym = 0x000004B6
XKc_kana_KI*: KeySym = 0x000004B7
XKc_kana_KU*: KeySym = 0x000004B8
XKc_kana_KE*: KeySym = 0x000004B9
XKc_kana_KO*: KeySym = 0x000004BA
XKc_kana_SA*: KeySym = 0x000004BB
XKc_kana_SHI*: KeySym = 0x000004BC
XKc_kana_SU*: KeySym = 0x000004BD
XKc_kana_SE*: KeySym = 0x000004BE
XKc_kana_SO*: KeySym = 0x000004BF
XKc_kana_TA*: KeySym = 0x000004C0
XKc_kana_CHI*: KeySym = 0x000004C1
XKc_kana_TI*: KeySym = 0x000004C1 # deprecated
XKc_kana_TSU*: KeySym = 0x000004C2
XKc_kana_TU*: KeySym = 0x000004C2 # deprecated
XKc_kana_TE*: KeySym = 0x000004C3
XKc_kana_TO*: KeySym = 0x000004C4
XKc_kana_NA*: KeySym = 0x000004C5
XKc_kana_NI*: KeySym = 0x000004C6
XKc_kana_NU*: KeySym = 0x000004C7
XKc_kana_NE*: KeySym = 0x000004C8
XKc_kana_NO*: KeySym = 0x000004C9
XKc_kana_HA*: KeySym = 0x000004CA
XKc_kana_HI*: KeySym = 0x000004CB
XKc_kana_FU*: KeySym = 0x000004CC
XKc_kana_HU*: KeySym = 0x000004CC # deprecated
XKc_kana_HE*: KeySym = 0x000004CD
XKc_kana_HO*: KeySym = 0x000004CE
XKc_kana_MA*: KeySym = 0x000004CF
XKc_kana_MI*: KeySym = 0x000004D0
XKc_kana_MU*: KeySym = 0x000004D1
XKc_kana_ME*: KeySym = 0x000004D2
XKc_kana_MO*: KeySym = 0x000004D3
XKc_kana_YA*: KeySym = 0x000004D4
XKc_kana_YU*: KeySym = 0x000004D5
XKc_kana_YO*: KeySym = 0x000004D6
XKc_kana_RA*: KeySym = 0x000004D7
XKc_kana_RI*: KeySym = 0x000004D8
XKc_kana_RU*: KeySym = 0x000004D9
XKc_kana_RE*: KeySym = 0x000004DA
XKc_kana_RO*: KeySym = 0x000004DB
XKc_kana_WA*: KeySym = 0x000004DC
XKc_kana_N*: KeySym = 0x000004DD
XK_voicedsound*: KeySym = 0x000004DE
XK_semivoicedsound*: KeySym = 0x000004DF
XK_kana_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
# XK_KATAKANA
#*
# * Arabic
# * Byte 3 = 5
# *
when defined(XK_ARABIC) or true:
const
XK_Farsi_0*: KeySym = 0x00000590
XK_Farsi_1*: KeySym = 0x00000591
XK_Farsi_2*: KeySym = 0x00000592
XK_Farsi_3*: KeySym = 0x00000593
XK_Farsi_4*: KeySym = 0x00000594
XK_Farsi_5*: KeySym = 0x00000595
XK_Farsi_6*: KeySym = 0x00000596
XK_Farsi_7*: KeySym = 0x00000597
XK_Farsi_8*: KeySym = 0x00000598
XK_Farsi_9*: KeySym = 0x00000599
XK_Arabic_percent*: KeySym = 0x000005A5
XK_Arabic_superscript_alef*: KeySym = 0x000005A6
XK_Arabic_tteh*: KeySym = 0x000005A7
XK_Arabic_peh*: KeySym = 0x000005A8
XK_Arabic_tcheh*: KeySym = 0x000005A9
XK_Arabic_ddal*: KeySym = 0x000005AA
XK_Arabic_rreh*: KeySym = 0x000005AB
XK_Arabic_comma*: KeySym = 0x000005AC
XK_Arabic_fullstop*: KeySym = 0x000005AE
XK_Arabic_0*: KeySym = 0x000005B0
XK_Arabic_1*: KeySym = 0x000005B1
XK_Arabic_2*: KeySym = 0x000005B2
XK_Arabic_3*: KeySym = 0x000005B3
XK_Arabic_4*: KeySym = 0x000005B4
XK_Arabic_5*: KeySym = 0x000005B5
XK_Arabic_6*: KeySym = 0x000005B6
XK_Arabic_7*: KeySym = 0x000005B7
XK_Arabic_8*: KeySym = 0x000005B8
XK_Arabic_9*: KeySym = 0x000005B9
XK_Arabic_semicolon*: KeySym = 0x000005BB
XK_Arabic_question_mark*: KeySym = 0x000005BF
XK_Arabic_hamza*: KeySym = 0x000005C1
XK_Arabic_maddaonalef*: KeySym = 0x000005C2
XK_Arabic_hamzaonalef*: KeySym = 0x000005C3
XK_Arabic_hamzaonwaw*: KeySym = 0x000005C4
XK_Arabic_hamzaunderalef*: KeySym = 0x000005C5
XK_Arabic_hamzaonyeh*: KeySym = 0x000005C6
XK_Arabic_alef*: KeySym = 0x000005C7
XK_Arabic_beh*: KeySym = 0x000005C8
XK_Arabic_tehmarbuta*: KeySym = 0x000005C9
XK_Arabic_teh*: KeySym = 0x000005CA
XK_Arabic_theh*: KeySym = 0x000005CB
XK_Arabic_jeem*: KeySym = 0x000005CC
XK_Arabic_hah*: KeySym = 0x000005CD
XK_Arabic_khah*: KeySym = 0x000005CE
XK_Arabic_dal*: KeySym = 0x000005CF
XK_Arabic_thal*: KeySym = 0x000005D0
XK_Arabic_ra*: KeySym = 0x000005D1
XK_Arabic_zain*: KeySym = 0x000005D2
XK_Arabic_seen*: KeySym = 0x000005D3
XK_Arabic_sheen*: KeySym = 0x000005D4
XK_Arabic_sad*: KeySym = 0x000005D5
XK_Arabic_dad*: KeySym = 0x000005D6
XK_Arabic_tah*: KeySym = 0x000005D7
XK_Arabic_zah*: KeySym = 0x000005D8
XK_Arabic_ain*: KeySym = 0x000005D9
XK_Arabic_ghain*: KeySym = 0x000005DA
XK_Arabic_tatweel*: KeySym = 0x000005E0
XK_Arabic_feh*: KeySym = 0x000005E1
XK_Arabic_qaf*: KeySym = 0x000005E2
XK_Arabic_kaf*: KeySym = 0x000005E3
XK_Arabic_lam*: KeySym = 0x000005E4
XK_Arabic_meem*: KeySym = 0x000005E5
XK_Arabic_noon*: KeySym = 0x000005E6
XK_Arabic_ha*: KeySym = 0x000005E7
XK_Arabic_heh*: KeySym = 0x000005E7 # deprecated
XK_Arabic_waw*: KeySym = 0x000005E8
XK_Arabic_alefmaksura*: KeySym = 0x000005E9
XK_Arabic_yeh*: KeySym = 0x000005EA
XK_Arabic_fathatan*: KeySym = 0x000005EB
XK_Arabic_dammatan*: KeySym = 0x000005EC
XK_Arabic_kasratan*: KeySym = 0x000005ED
XK_Arabic_fatha*: KeySym = 0x000005EE
XK_Arabic_damma*: KeySym = 0x000005EF
XK_Arabic_kasra*: KeySym = 0x000005F0
XK_Arabic_shadda*: KeySym = 0x000005F1
XK_Arabic_sukun*: KeySym = 0x000005F2
XK_Arabic_madda_above*: KeySym = 0x000005F3
XK_Arabic_hamza_above*: KeySym = 0x000005F4
XK_Arabic_hamza_below*: KeySym = 0x000005F5
XK_Arabic_jeh*: KeySym = 0x000005F6
XK_Arabic_veh*: KeySym = 0x000005F7
XK_Arabic_keheh*: KeySym = 0x000005F8
XK_Arabic_gaf*: KeySym = 0x000005F9
XK_Arabic_noon_ghunna*: KeySym = 0x000005FA
XK_Arabic_heh_doachashmee*: KeySym = 0x000005FB
XK_Farsi_yeh*: KeySym = 0x000005FC
XK_Arabic_farsi_yeh*: KeySym = XK_Farsi_yeh
XK_Arabic_yeh_baree*: KeySym = 0x000005FD
XK_Arabic_heh_goal*: KeySym = 0x000005FE
XK_Arabic_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
# XK_ARABIC
#*
# * Cyrillic
# * Byte 3 = 6
# *
when defined(XK_CYRILLIC) or true:
const
XKc_Cyrillic_GHE_bar*: KeySym = 0x00000680
XK_Cyrillic_ghe_bar*: KeySym = 0x00000690
XKc_Cyrillic_ZHE_descender*: KeySym = 0x00000681
XK_Cyrillic_zhe_descender*: KeySym = 0x00000691
XKc_Cyrillic_KA_descender*: KeySym = 0x00000682
XK_Cyrillic_ka_descender*: KeySym = 0x00000692
XKc_Cyrillic_KA_vertstroke*: KeySym = 0x00000683
XK_Cyrillic_ka_vertstroke*: KeySym = 0x00000693
XKc_Cyrillic_EN_descender*: KeySym = 0x00000684
XK_Cyrillic_en_descender*: KeySym = 0x00000694
XKc_Cyrillic_U_straight*: KeySym = 0x00000685
XK_Cyrillic_u_straight*: KeySym = 0x00000695
XKc_Cyrillic_U_straight_bar*: KeySym = 0x00000686
XK_Cyrillic_u_straight_bar*: KeySym = 0x00000696
XKc_Cyrillic_HA_descender*: KeySym = 0x00000687
XK_Cyrillic_ha_descender*: KeySym = 0x00000697
XKc_Cyrillic_CHE_descender*: KeySym = 0x00000688
XK_Cyrillic_che_descender*: KeySym = 0x00000698
XKc_Cyrillic_CHE_vertstroke*: KeySym = 0x00000689
XK_Cyrillic_che_vertstroke*: KeySym = 0x00000699
XKc_Cyrillic_SHHA*: KeySym = 0x0000068A
XK_Cyrillic_shha*: KeySym = 0x0000069A
XKc_Cyrillic_SCHWA*: KeySym = 0x0000068C
XK_Cyrillic_schwa*: KeySym = 0x0000069C
XKc_Cyrillic_I_macron*: KeySym = 0x0000068D
XK_Cyrillic_i_macron*: KeySym = 0x0000069D
XKc_Cyrillic_O_bar*: KeySym = 0x0000068E
XK_Cyrillic_o_bar*: KeySym = 0x0000069E
XKc_Cyrillic_U_macron*: KeySym = 0x0000068F
XK_Cyrillic_u_macron*: KeySym = 0x0000069F
XK_Serbian_dje*: KeySym = 0x000006A1
XK_Macedonia_gje*: KeySym = 0x000006A2
XK_Cyrillic_io*: KeySym = 0x000006A3
XK_Ukrainian_ie*: KeySym = 0x000006A4
XK_Ukranian_je*: KeySym = 0x000006A4 # deprecated
XK_Macedonia_dse*: KeySym = 0x000006A5
XK_Ukrainian_i*: KeySym = 0x000006A6
XK_Ukranian_i*: KeySym = 0x000006A6 # deprecated
XK_Ukrainian_yi*: KeySym = 0x000006A7
XK_Ukranian_yi*: KeySym = 0x000006A7 # deprecated
XK_Cyrillic_je*: KeySym = 0x000006A8
XK_Serbian_je*: KeySym = 0x000006A8 # deprecated
XK_Cyrillic_lje*: KeySym = 0x000006A9
XK_Serbian_lje*: KeySym = 0x000006A9 # deprecated
XK_Cyrillic_nje*: KeySym = 0x000006AA
XK_Serbian_nje*: KeySym = 0x000006AA # deprecated
XK_Serbian_tshe*: KeySym = 0x000006AB
XK_Macedonia_kje*: KeySym = 0x000006AC
XK_Ukrainian_ghe_with_upturn*: KeySym = 0x000006AD
XK_Byelorussian_shortu*: KeySym = 0x000006AE
XK_Cyrillic_dzhe*: KeySym = 0x000006AF
XK_Serbian_dze*: KeySym = 0x000006AF # deprecated
XK_numerosign*: KeySym = 0x000006B0
XKc_Serbian_DJE*: KeySym = 0x000006B1
XKc_Macedonia_GJE*: KeySym = 0x000006B2
XKc_Cyrillic_IO*: KeySym = 0x000006B3
XKc_Ukrainian_IE*: KeySym = 0x000006B4
XKc_Ukranian_JE*: KeySym = 0x000006B4 # deprecated
XKc_Macedonia_DSE*: KeySym = 0x000006B5
XKc_Ukrainian_I*: KeySym = 0x000006B6
XKc_Ukranian_I*: KeySym = 0x000006B6 # deprecated
XKc_Ukrainian_YI*: KeySym = 0x000006B7
XKc_Ukranian_YI*: KeySym = 0x000006B7 # deprecated
XKc_Cyrillic_JE*: KeySym = 0x000006B8
XKc_Serbian_JE*: KeySym = 0x000006B8 # deprecated
XKc_Cyrillic_LJE*: KeySym = 0x000006B9
XKc_Serbian_LJE*: KeySym = 0x000006B9 # deprecated
XKc_Cyrillic_NJE*: KeySym = 0x000006BA
XKc_Serbian_NJE*: KeySym = 0x000006BA # deprecated
XKc_Serbian_TSHE*: KeySym = 0x000006BB
XKc_Macedonia_KJE*: KeySym = 0x000006BC
XKc_Ukrainian_GHE_WITH_UPTURN*: KeySym = 0x000006BD
XKc_Byelorussian_SHORTU*: KeySym = 0x000006BE
XKc_Cyrillic_DZHE*: KeySym = 0x000006BF
XKc_Serbian_DZE*: KeySym = 0x000006BF # deprecated
XK_Cyrillic_yu*: KeySym = 0x000006C0
XK_Cyrillic_a*: KeySym = 0x000006C1
XK_Cyrillic_be*: KeySym = 0x000006C2
XK_Cyrillic_tse*: KeySym = 0x000006C3
XK_Cyrillic_de*: KeySym = 0x000006C4
XK_Cyrillic_ie*: KeySym = 0x000006C5
XK_Cyrillic_ef*: KeySym = 0x000006C6
XK_Cyrillic_ghe*: KeySym = 0x000006C7
XK_Cyrillic_ha*: KeySym = 0x000006C8
XK_Cyrillic_i*: KeySym = 0x000006C9
XK_Cyrillic_shorti*: KeySym = 0x000006CA
XK_Cyrillic_ka*: KeySym = 0x000006CB
XK_Cyrillic_el*: KeySym = 0x000006CC
XK_Cyrillic_em*: KeySym = 0x000006CD
XK_Cyrillic_en*: KeySym = 0x000006CE
XK_Cyrillic_o*: KeySym = 0x000006CF
XK_Cyrillic_pe*: KeySym = 0x000006D0
XK_Cyrillic_ya*: KeySym = 0x000006D1
XK_Cyrillic_er*: KeySym = 0x000006D2
XK_Cyrillic_es*: KeySym = 0x000006D3
XK_Cyrillic_te*: KeySym = 0x000006D4
XK_Cyrillic_u*: KeySym = 0x000006D5
XK_Cyrillic_zhe*: KeySym = 0x000006D6
XK_Cyrillic_ve*: KeySym = 0x000006D7
XK_Cyrillic_softsign*: KeySym = 0x000006D8
XK_Cyrillic_yeru*: KeySym = 0x000006D9
XK_Cyrillic_ze*: KeySym = 0x000006DA
XK_Cyrillic_sha*: KeySym = 0x000006DB
XK_Cyrillic_e*: KeySym = 0x000006DC
XK_Cyrillic_shcha*: KeySym = 0x000006DD
XK_Cyrillic_che*: KeySym = 0x000006DE
XK_Cyrillic_hardsign*: KeySym = 0x000006DF
XKc_Cyrillic_YU*: KeySym = 0x000006E0
XKc_Cyrillic_A*: KeySym = 0x000006E1
XKc_Cyrillic_BE*: KeySym = 0x000006E2
XKc_Cyrillic_TSE*: KeySym = 0x000006E3
XKc_Cyrillic_DE*: KeySym = 0x000006E4
XKc_Cyrillic_IE*: KeySym = 0x000006E5
XKc_Cyrillic_EF*: KeySym = 0x000006E6
XKc_Cyrillic_GHE*: KeySym = 0x000006E7
XKc_Cyrillic_HA*: KeySym = 0x000006E8
XKc_Cyrillic_I*: KeySym = 0x000006E9
XKc_Cyrillic_SHORTI*: KeySym = 0x000006EA
XKc_Cyrillic_KA*: KeySym = 0x000006EB
XKc_Cyrillic_EL*: KeySym = 0x000006EC
XKc_Cyrillic_EM*: KeySym = 0x000006ED
XKc_Cyrillic_EN*: KeySym = 0x000006EE
XKc_Cyrillic_O*: KeySym = 0x000006EF
XKc_Cyrillic_PE*: KeySym = 0x000006F0
XKc_Cyrillic_YA*: KeySym = 0x000006F1
XKc_Cyrillic_ER*: KeySym = 0x000006F2
XKc_Cyrillic_ES*: KeySym = 0x000006F3
XKc_Cyrillic_TE*: KeySym = 0x000006F4
XKc_Cyrillic_U*: KeySym = 0x000006F5
XKc_Cyrillic_ZHE*: KeySym = 0x000006F6
XKc_Cyrillic_VE*: KeySym = 0x000006F7
XKc_Cyrillic_SOFTSIGN*: KeySym = 0x000006F8
XKc_Cyrillic_YERU*: KeySym = 0x000006F9
XKc_Cyrillic_ZE*: KeySym = 0x000006FA
XKc_Cyrillic_SHA*: KeySym = 0x000006FB
XKc_Cyrillic_E*: KeySym = 0x000006FC
XKc_Cyrillic_SHCHA*: KeySym = 0x000006FD
XKc_Cyrillic_CHE*: KeySym = 0x000006FE
XKc_Cyrillic_HARDSIGN*: KeySym = 0x000006FF
# XK_CYRILLIC
#*
# * Greek
# * Byte 3 = 7
# *
when defined(XK_GREEK) or true:
const
XKc_Greek_ALPHAaccent*: KeySym = 0x000007A1
XKc_Greek_EPSILONaccent*: KeySym = 0x000007A2
XKc_Greek_ETAaccent*: KeySym = 0x000007A3
XKc_Greek_IOTAaccent*: KeySym = 0x000007A4
XKc_Greek_IOTAdieresis*: KeySym = 0x000007A5
XKc_Greek_IOTAdiaeresis*: KeySym = XKc_Greek_IOTAdieresis # old typo
XKc_Greek_OMICRONaccent*: KeySym = 0x000007A7
XKc_Greek_UPSILONaccent*: KeySym = 0x000007A8
XKc_Greek_UPSILONdieresis*: KeySym = 0x000007A9
XKc_Greek_OMEGAaccent*: KeySym = 0x000007AB
XK_Greek_accentdieresis*: KeySym = 0x000007AE
XK_Greek_horizbar*: KeySym = 0x000007AF
XK_Greek_alphaaccent*: KeySym = 0x000007B1
XK_Greek_epsilonaccent*: KeySym = 0x000007B2
XK_Greek_etaaccent*: KeySym = 0x000007B3
XK_Greek_iotaaccent*: KeySym = 0x000007B4
XK_Greek_iotadieresis*: KeySym = 0x000007B5
XK_Greek_iotaaccentdieresis*: KeySym = 0x000007B6
XK_Greek_omicronaccent*: KeySym = 0x000007B7
XK_Greek_upsilonaccent*: KeySym = 0x000007B8
XK_Greek_upsilondieresis*: KeySym = 0x000007B9
XK_Greek_upsilonaccentdieresis*: KeySym = 0x000007BA
XK_Greek_omegaaccent*: KeySym = 0x000007BB
XKc_Greek_ALPHA*: KeySym = 0x000007C1
XKc_Greek_BETA*: KeySym = 0x000007C2
XKc_Greek_GAMMA*: KeySym = 0x000007C3
XKc_Greek_DELTA*: KeySym = 0x000007C4
XKc_Greek_EPSILON*: KeySym = 0x000007C5
XKc_Greek_ZETA*: KeySym = 0x000007C6
XKc_Greek_ETA*: KeySym = 0x000007C7
XKc_Greek_THETA*: KeySym = 0x000007C8
XKc_Greek_IOTA*: KeySym = 0x000007C9
XKc_Greek_KAPPA*: KeySym = 0x000007CA
XKc_Greek_LAMDA*: KeySym = 0x000007CB
XKc_Greek_LAMBDA*: KeySym = 0x000007CB
XKc_Greek_MU*: KeySym = 0x000007CC
XKc_Greek_NU*: KeySym = 0x000007CD
XKc_Greek_XI*: KeySym = 0x000007CE
XKc_Greek_OMICRON*: KeySym = 0x000007CF
XKc_Greek_PI*: KeySym = 0x000007D0
XKc_Greek_RHO*: KeySym = 0x000007D1
XKc_Greek_SIGMA*: KeySym = 0x000007D2
XKc_Greek_TAU*: KeySym = 0x000007D4
XKc_Greek_UPSILON*: KeySym = 0x000007D5
XKc_Greek_PHI*: KeySym = 0x000007D6
XKc_Greek_CHI*: KeySym = 0x000007D7
XKc_Greek_PSI*: KeySym = 0x000007D8
XKc_Greek_OMEGA*: KeySym = 0x000007D9
XK_Greek_alpha*: KeySym = 0x000007E1
XK_Greek_beta*: KeySym = 0x000007E2
XK_Greek_gamma*: KeySym = 0x000007E3
XK_Greek_delta*: KeySym = 0x000007E4
XK_Greek_epsilon*: KeySym = 0x000007E5
XK_Greek_zeta*: KeySym = 0x000007E6
XK_Greek_eta*: KeySym = 0x000007E7
XK_Greek_theta*: KeySym = 0x000007E8
XK_Greek_iota*: KeySym = 0x000007E9
XK_Greek_kappa*: KeySym = 0x000007EA
XK_Greek_lamda*: KeySym = 0x000007EB
XK_Greek_lambda*: KeySym = 0x000007EB
XK_Greek_mu*: KeySym = 0x000007EC
XK_Greek_nu*: KeySym = 0x000007ED
XK_Greek_xi*: KeySym = 0x000007EE
XK_Greek_omicron*: KeySym = 0x000007EF
XK_Greek_pi*: KeySym = 0x000007F0
XK_Greek_rho*: KeySym = 0x000007F1
XK_Greek_sigma*: KeySym = 0x000007F2
XK_Greek_finalsmallsigma*: KeySym = 0x000007F3
XK_Greek_tau*: KeySym = 0x000007F4
XK_Greek_upsilon*: KeySym = 0x000007F5
XK_Greek_phi*: KeySym = 0x000007F6
XK_Greek_chi*: KeySym = 0x000007F7
XK_Greek_psi*: KeySym = 0x000007F8
XK_Greek_omega*: KeySym = 0x000007F9
XK_Greek_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
# XK_GREEK
#*
# * Technical
# * Byte 3 = 8
# *
when defined(XK_TECHNICAL) or true:
const
XK_leftradical*: KeySym = 0x000008A1
XK_topleftradical*: KeySym = 0x000008A2
XK_horizconnector*: KeySym = 0x000008A3
XK_topintegral*: KeySym = 0x000008A4
XK_botintegral*: KeySym = 0x000008A5
XK_vertconnector*: KeySym = 0x000008A6
XK_topleftsqbracket*: KeySym = 0x000008A7
XK_botleftsqbracket*: KeySym = 0x000008A8
XK_toprightsqbracket*: KeySym = 0x000008A9
XK_botrightsqbracket*: KeySym = 0x000008AA
XK_topleftparens*: KeySym = 0x000008AB
XK_botleftparens*: KeySym = 0x000008AC
XK_toprightparens*: KeySym = 0x000008AD
XK_botrightparens*: KeySym = 0x000008AE
XK_leftmiddlecurlybrace*: KeySym = 0x000008AF
XK_rightmiddlecurlybrace*: KeySym = 0x000008B0
XK_topleftsummation*: KeySym = 0x000008B1
XK_botleftsummation*: KeySym = 0x000008B2
XK_topvertsummationconnector*: KeySym = 0x000008B3
XK_botvertsummationconnector*: KeySym = 0x000008B4
XK_toprightsummation*: KeySym = 0x000008B5
XK_botrightsummation*: KeySym = 0x000008B6
XK_rightmiddlesummation*: KeySym = 0x000008B7
XK_lessthanequal*: KeySym = 0x000008BC
XK_notequal*: KeySym = 0x000008BD
XK_greaterthanequal*: KeySym = 0x000008BE
XK_integral*: KeySym = 0x000008BF
XK_therefore*: KeySym = 0x000008C0
XK_variation*: KeySym = 0x000008C1
XK_infinity*: KeySym = 0x000008C2
XK_nabla*: KeySym = 0x000008C5
XK_approximate*: KeySym = 0x000008C8
XK_similarequal*: KeySym = 0x000008C9
XK_ifonlyif*: KeySym = 0x000008CD
XK_implies*: KeySym = 0x000008CE
XK_identical*: KeySym = 0x000008CF
XK_radical*: KeySym = 0x000008D6
XK_includedin*: KeySym = 0x000008DA
XK_includes*: KeySym = 0x000008DB
XK_intersection*: KeySym = 0x000008DC
XK_union*: KeySym = 0x000008DD
XK_logicaland*: KeySym = 0x000008DE
XK_logicalor*: KeySym = 0x000008DF
XK_partialderivative*: KeySym = 0x000008EF
XK_function*: KeySym = 0x000008F6
XK_leftarrow*: KeySym = 0x000008FB
XK_uparrow*: KeySym = 0x000008FC
XK_rightarrow*: KeySym = 0x000008FD
XK_downarrow*: KeySym = 0x000008FE
# XK_TECHNICAL
#*
# * Special
# * Byte 3 = 9
# *
when defined(XK_SPECIAL):
const
XK_blank*: KeySym = 0x000009DF
XK_soliddiamond*: KeySym = 0x000009E0
XK_checkerboard*: KeySym = 0x000009E1
XK_ht*: KeySym = 0x000009E2
XK_ff*: KeySym = 0x000009E3
XK_cr*: KeySym = 0x000009E4
XK_lf*: KeySym = 0x000009E5
XK_nl*: KeySym = 0x000009E8
XK_vt*: KeySym = 0x000009E9
XK_lowrightcorner*: KeySym = 0x000009EA
XK_uprightcorner*: KeySym = 0x000009EB
XK_upleftcorner*: KeySym = 0x000009EC
XK_lowleftcorner*: KeySym = 0x000009ED
XK_crossinglines*: KeySym = 0x000009EE
XK_horizlinescan1*: KeySym = 0x000009EF
XK_horizlinescan3*: KeySym = 0x000009F0
XK_horizlinescan5*: KeySym = 0x000009F1
XK_horizlinescan7*: KeySym = 0x000009F2
XK_horizlinescan9*: KeySym = 0x000009F3
XK_leftt*: KeySym = 0x000009F4
XK_rightt*: KeySym = 0x000009F5
XK_bott*: KeySym = 0x000009F6
XK_topt*: KeySym = 0x000009F7
XK_vertbar*: KeySym = 0x000009F8
# XK_SPECIAL
#*
# * Publishing
# * Byte 3 = a
# *
when defined(XK_PUBLISHING) or true:
const
XK_emspace*: KeySym = 0x00000AA1
XK_enspace*: KeySym = 0x00000AA2
XK_em3space*: KeySym = 0x00000AA3
XK_em4space*: KeySym = 0x00000AA4
XK_digitspace*: KeySym = 0x00000AA5
XK_punctspace*: KeySym = 0x00000AA6
XK_thinspace*: KeySym = 0x00000AA7
XK_hairspace*: KeySym = 0x00000AA8
XK_emdash*: KeySym = 0x00000AA9
XK_endash*: KeySym = 0x00000AAA
XK_signifblank*: KeySym = 0x00000AAC
XK_ellipsis*: KeySym = 0x00000AAE
XK_doubbaselinedot*: KeySym = 0x00000AAF
XK_onethird*: KeySym = 0x00000AB0
XK_twothirds*: KeySym = 0x00000AB1
XK_onefifth*: KeySym = 0x00000AB2
XK_twofifths*: KeySym = 0x00000AB3
XK_threefifths*: KeySym = 0x00000AB4
XK_fourfifths*: KeySym = 0x00000AB5
XK_onesixth*: KeySym = 0x00000AB6
XK_fivesixths*: KeySym = 0x00000AB7
XK_careof*: KeySym = 0x00000AB8
XK_figdash*: KeySym = 0x00000ABB
XK_leftanglebracket*: KeySym = 0x00000ABC
XK_decimalpoint*: KeySym = 0x00000ABD
XK_rightanglebracket*: KeySym = 0x00000ABE
XK_marker*: KeySym = 0x00000ABF
XK_oneeighth*: KeySym = 0x00000AC3
XK_threeeighths*: KeySym = 0x00000AC4
XK_fiveeighths*: KeySym = 0x00000AC5
XK_seveneighths*: KeySym = 0x00000AC6
XK_trademark*: KeySym = 0x00000AC9
XK_signaturemark*: KeySym = 0x00000ACA
XK_trademarkincircle*: KeySym = 0x00000ACB
XK_leftopentriangle*: KeySym = 0x00000ACC
XK_rightopentriangle*: KeySym = 0x00000ACD
XK_emopencircle*: KeySym = 0x00000ACE
XK_emopenrectangle*: KeySym = 0x00000ACF
XK_leftsinglequotemark*: KeySym = 0x00000AD0
XK_rightsinglequotemark*: KeySym = 0x00000AD1
XK_leftdoublequotemark*: KeySym = 0x00000AD2
XK_rightdoublequotemark*: KeySym = 0x00000AD3
XK_prescription*: KeySym = 0x00000AD4
XK_minutes*: KeySym = 0x00000AD6
XK_seconds*: KeySym = 0x00000AD7
XK_latincross*: KeySym = 0x00000AD9
XK_hexagram*: KeySym = 0x00000ADA
XK_filledrectbullet*: KeySym = 0x00000ADB
XK_filledlefttribullet*: KeySym = 0x00000ADC
XK_filledrighttribullet*: KeySym = 0x00000ADD
XK_emfilledcircle*: KeySym = 0x00000ADE
XK_emfilledrect*: KeySym = 0x00000ADF
XK_enopencircbullet*: KeySym = 0x00000AE0
XK_enopensquarebullet*: KeySym = 0x00000AE1
XK_openrectbullet*: KeySym = 0x00000AE2
XK_opentribulletup*: KeySym = 0x00000AE3
XK_opentribulletdown*: KeySym = 0x00000AE4
XK_openstar*: KeySym = 0x00000AE5
XK_enfilledcircbullet*: KeySym = 0x00000AE6
XK_enfilledsqbullet*: KeySym = 0x00000AE7
XK_filledtribulletup*: KeySym = 0x00000AE8
XK_filledtribulletdown*: KeySym = 0x00000AE9
XK_leftpointer*: KeySym = 0x00000AEA
XK_rightpointer*: KeySym = 0x00000AEB
XK_club*: KeySym = 0x00000AEC
XK_diamond*: KeySym = 0x00000AED
XK_heart*: KeySym = 0x00000AEE
XK_maltesecross*: KeySym = 0x00000AF0
XK_dagger*: KeySym = 0x00000AF1
XK_doubledagger*: KeySym = 0x00000AF2
XK_checkmark*: KeySym = 0x00000AF3
XK_ballotcross*: KeySym = 0x00000AF4
XK_musicalsharp*: KeySym = 0x00000AF5
XK_musicalflat*: KeySym = 0x00000AF6
XK_malesymbol*: KeySym = 0x00000AF7
XK_femalesymbol*: KeySym = 0x00000AF8
XK_telephone*: KeySym = 0x00000AF9
XK_telephonerecorder*: KeySym = 0x00000AFA
XK_phonographcopyright*: KeySym = 0x00000AFB
XK_caret*: KeySym = 0x00000AFC
XK_singlelowquotemark*: KeySym = 0x00000AFD
XK_doublelowquotemark*: KeySym = 0x00000AFE
XK_cursor*: KeySym = 0x00000AFF
# XK_PUBLISHING
#*
# * APL
# * Byte 3 = b
# *
when defined(XK_APL) or true:
const
XK_leftcaret*: KeySym = 0x00000BA3
XK_rightcaret*: KeySym = 0x00000BA6
XK_downcaret*: KeySym = 0x00000BA8
XK_upcaret*: KeySym = 0x00000BA9
XK_overbar*: KeySym = 0x00000BC0
XK_downtack*: KeySym = 0x00000BC2
XK_upshoe*: KeySym = 0x00000BC3
XK_downstile*: KeySym = 0x00000BC4
XK_underbar*: KeySym = 0x00000BC6
XK_jot*: KeySym = 0x00000BCA
XK_quad*: KeySym = 0x00000BCC
XK_uptack*: KeySym = 0x00000BCE
XK_circle*: KeySym = 0x00000BCF
XK_upstile*: KeySym = 0x00000BD3
XK_downshoe*: KeySym = 0x00000BD6
XK_rightshoe*: KeySym = 0x00000BD8
XK_leftshoe*: KeySym = 0x00000BDA
XK_lefttack*: KeySym = 0x00000BDC
XK_righttack*: KeySym = 0x00000BFC
# XK_APL
#*
# * Hebrew
# * Byte 3 = c
# *
when defined(XK_HEBREW) or true:
const
XK_hebrew_doublelowline*: KeySym = 0x00000CDF
XK_hebrew_aleph*: KeySym = 0x00000CE0
XK_hebrew_bet*: KeySym = 0x00000CE1
XK_hebrew_beth*: KeySym = 0x00000CE1 # deprecated
XK_hebrew_gimel*: KeySym = 0x00000CE2
XK_hebrew_gimmel*: KeySym = 0x00000CE2 # deprecated
XK_hebrew_dalet*: KeySym = 0x00000CE3
XK_hebrew_daleth*: KeySym = 0x00000CE3 # deprecated
XK_hebrew_he*: KeySym = 0x00000CE4
XK_hebrew_waw*: KeySym = 0x00000CE5
XK_hebrew_zain*: KeySym = 0x00000CE6
XK_hebrew_zayin*: KeySym = 0x00000CE6 # deprecated
XK_hebrew_chet*: KeySym = 0x00000CE7
XK_hebrew_het*: KeySym = 0x00000CE7 # deprecated
XK_hebrew_tet*: KeySym = 0x00000CE8
XK_hebrew_teth*: KeySym = 0x00000CE8 # deprecated
XK_hebrew_yod*: KeySym = 0x00000CE9
XK_hebrew_finalkaph*: KeySym = 0x00000CEA
XK_hebrew_kaph*: KeySym = 0x00000CEB
XK_hebrew_lamed*: KeySym = 0x00000CEC
XK_hebrew_finalmem*: KeySym = 0x00000CED
XK_hebrew_mem*: KeySym = 0x00000CEE
XK_hebrew_finalnun*: KeySym = 0x00000CEF
XK_hebrew_nun*: KeySym = 0x00000CF0
XK_hebrew_samech*: KeySym = 0x00000CF1
XK_hebrew_samekh*: KeySym = 0x00000CF1 # deprecated
XK_hebrew_ayin*: KeySym = 0x00000CF2
XK_hebrew_finalpe*: KeySym = 0x00000CF3
XK_hebrew_pe*: KeySym = 0x00000CF4
XK_hebrew_finalzade*: KeySym = 0x00000CF5
XK_hebrew_finalzadi*: KeySym = 0x00000CF5 # deprecated
XK_hebrew_zade*: KeySym = 0x00000CF6
XK_hebrew_zadi*: KeySym = 0x00000CF6 # deprecated
XK_hebrew_qoph*: KeySym = 0x00000CF7
XK_hebrew_kuf*: KeySym = 0x00000CF7 # deprecated
XK_hebrew_resh*: KeySym = 0x00000CF8
XK_hebrew_shin*: KeySym = 0x00000CF9
XK_hebrew_taw*: KeySym = 0x00000CFA
XK_hebrew_taf*: KeySym = 0x00000CFA # deprecated
XK_Hebrew_switch*: KeySym = 0x0000FF7E # Alias for mode_switch
# XK_HEBREW
#*
# * Thai
# * Byte 3 = d
# *
when defined(XK_THAI) or true:
const
XK_Thai_kokai*: KeySym = 0x00000DA1
XK_Thai_khokhai*: KeySym = 0x00000DA2
XK_Thai_khokhuat*: KeySym = 0x00000DA3
XK_Thai_khokhwai*: KeySym = 0x00000DA4
XK_Thai_khokhon*: KeySym = 0x00000DA5
XK_Thai_khorakhang*: KeySym = 0x00000DA6
XK_Thai_ngongu*: KeySym = 0x00000DA7
XK_Thai_chochan*: KeySym = 0x00000DA8
XK_Thai_choching*: KeySym = 0x00000DA9
XK_Thai_chochang*: KeySym = 0x00000DAA
XK_Thai_soso*: KeySym = 0x00000DAB
XK_Thai_chochoe*: KeySym = 0x00000DAC
XK_Thai_yoying*: KeySym = 0x00000DAD
XK_Thai_dochada*: KeySym = 0x00000DAE
XK_Thai_topatak*: KeySym = 0x00000DAF
XK_Thai_thothan*: KeySym = 0x00000DB0
XK_Thai_thonangmontho*: KeySym = 0x00000DB1
XK_Thai_thophuthao*: KeySym = 0x00000DB2
XK_Thai_nonen*: KeySym = 0x00000DB3
XK_Thai_dodek*: KeySym = 0x00000DB4
XK_Thai_totao*: KeySym = 0x00000DB5
XK_Thai_thothung*: KeySym = 0x00000DB6
XK_Thai_thothahan*: KeySym = 0x00000DB7
XK_Thai_thothong*: KeySym = 0x00000DB8
XK_Thai_nonu*: KeySym = 0x00000DB9
XK_Thai_bobaimai*: KeySym = 0x00000DBA
XK_Thai_popla*: KeySym = 0x00000DBB
XK_Thai_phophung*: KeySym = 0x00000DBC
XK_Thai_fofa*: KeySym = 0x00000DBD
XK_Thai_phophan*: KeySym = 0x00000DBE
XK_Thai_fofan*: KeySym = 0x00000DBF
XK_Thai_phosamphao*: KeySym = 0x00000DC0
XK_Thai_moma*: KeySym = 0x00000DC1
XK_Thai_yoyak*: KeySym = 0x00000DC2
XK_Thai_rorua*: KeySym = 0x00000DC3
XK_Thai_ru*: KeySym = 0x00000DC4
XK_Thai_loling*: KeySym = 0x00000DC5
XK_Thai_lu*: KeySym = 0x00000DC6
XK_Thai_wowaen*: KeySym = 0x00000DC7
XK_Thai_sosala*: KeySym = 0x00000DC8
XK_Thai_sorusi*: KeySym = 0x00000DC9
XK_Thai_sosua*: KeySym = 0x00000DCA
XK_Thai_hohip*: KeySym = 0x00000DCB
XK_Thai_lochula*: KeySym = 0x00000DCC
XK_Thai_oang*: KeySym = 0x00000DCD
XK_Thai_honokhuk*: KeySym = 0x00000DCE
XK_Thai_paiyannoi*: KeySym = 0x00000DCF
XK_Thai_saraa*: KeySym = 0x00000DD0
XK_Thai_maihanakat*: KeySym = 0x00000DD1
XK_Thai_saraaa*: KeySym = 0x00000DD2
XK_Thai_saraam*: KeySym = 0x00000DD3
XK_Thai_sarai*: KeySym = 0x00000DD4
XK_Thai_saraii*: KeySym = 0x00000DD5
XK_Thai_saraue*: KeySym = 0x00000DD6
XK_Thai_sarauee*: KeySym = 0x00000DD7
XK_Thai_sarau*: KeySym = 0x00000DD8
XK_Thai_sarauu*: KeySym = 0x00000DD9
XK_Thai_phinthu*: KeySym = 0x00000DDA
XK_Thai_maihanakat_maitho*: KeySym = 0x00000DDE
XK_Thai_baht*: KeySym = 0x00000DDF
XK_Thai_sarae*: KeySym = 0x00000DE0
XK_Thai_saraae*: KeySym = 0x00000DE1
XK_Thai_sarao*: KeySym = 0x00000DE2
XK_Thai_saraaimaimuan*: KeySym = 0x00000DE3
XK_Thai_saraaimaimalai*: KeySym = 0x00000DE4
XK_Thai_lakkhangyao*: KeySym = 0x00000DE5
XK_Thai_maiyamok*: KeySym = 0x00000DE6
XK_Thai_maitaikhu*: KeySym = 0x00000DE7
XK_Thai_maiek*: KeySym = 0x00000DE8
XK_Thai_maitho*: KeySym = 0x00000DE9
XK_Thai_maitri*: KeySym = 0x00000DEA
XK_Thai_maichattawa*: KeySym = 0x00000DEB
XK_Thai_thanthakhat*: KeySym = 0x00000DEC
XK_Thai_nikhahit*: KeySym = 0x00000DED
XK_Thai_leksun*: KeySym = 0x00000DF0
XK_Thai_leknung*: KeySym = 0x00000DF1
XK_Thai_leksong*: KeySym = 0x00000DF2
XK_Thai_leksam*: KeySym = 0x00000DF3
XK_Thai_leksi*: KeySym = 0x00000DF4
XK_Thai_lekha*: KeySym = 0x00000DF5
XK_Thai_lekhok*: KeySym = 0x00000DF6
XK_Thai_lekchet*: KeySym = 0x00000DF7
XK_Thai_lekpaet*: KeySym = 0x00000DF8
XK_Thai_lekkao*: KeySym = 0x00000DF9
# XK_THAI
#*
# * Korean
# * Byte 3 = e
# *
when defined(XK_KOREAN) or true:
const
XK_Hangul*: KeySym = 0x0000FF31 # Hangul start/stop(toggle)
XK_Hangul_Start*: KeySym = 0x0000FF32 # Hangul start
XK_Hangul_End*: KeySym = 0x0000FF33 # Hangul end, English start
XK_Hangul_Hanja*: KeySym = 0x0000FF34 # Start Hangul->Hanja Conversion
XK_Hangul_Jamo*: KeySym = 0x0000FF35 # Hangul Jamo mode
XK_Hangul_Romaja*: KeySym = 0x0000FF36 # Hangul Romaja mode
XK_Hangul_Codeinput*: KeySym = 0x0000FF37 # Hangul code input mode
XK_Hangul_Jeonja*: KeySym = 0x0000FF38 # Jeonja mode
XK_Hangul_Banja*: KeySym = 0x0000FF39 # Banja mode
XK_Hangul_PreHanja*: KeySym = 0x0000FF3A # Pre Hanja conversion
XK_Hangul_PostHanja*: KeySym = 0x0000FF3B # Post Hanja conversion
XK_Hangul_SingleCandidate*: KeySym = 0x0000FF3C # Single candidate
XK_Hangul_MultipleCandidate*: KeySym = 0x0000FF3D # Multiple candidate
XK_Hangul_PreviousCandidate*: KeySym = 0x0000FF3E # Previous candidate
XK_Hangul_Special*: KeySym = 0x0000FF3F # Special symbols
XK_Hangul_switch*: KeySym = 0x0000FF7E # Alias for mode_switch \
# Hangul Consonant Characters
XK_Hangul_Kiyeog*: KeySym = 0x00000EA1
XK_Hangul_SsangKiyeog*: KeySym = 0x00000EA2
XK_Hangul_KiyeogSios*: KeySym = 0x00000EA3
XK_Hangul_Nieun*: KeySym = 0x00000EA4
XK_Hangul_NieunJieuj*: KeySym = 0x00000EA5
XK_Hangul_NieunHieuh*: KeySym = 0x00000EA6
XK_Hangul_Dikeud*: KeySym = 0x00000EA7
XK_Hangul_SsangDikeud*: KeySym = 0x00000EA8
XK_Hangul_Rieul*: KeySym = 0x00000EA9
XK_Hangul_RieulKiyeog*: KeySym = 0x00000EAA
XK_Hangul_RieulMieum*: KeySym = 0x00000EAB
XK_Hangul_RieulPieub*: KeySym = 0x00000EAC
XK_Hangul_RieulSios*: KeySym = 0x00000EAD
XK_Hangul_RieulTieut*: KeySym = 0x00000EAE
XK_Hangul_RieulPhieuf*: KeySym = 0x00000EAF
XK_Hangul_RieulHieuh*: KeySym = 0x00000EB0
XK_Hangul_Mieum*: KeySym = 0x00000EB1
XK_Hangul_Pieub*: KeySym = 0x00000EB2
XK_Hangul_SsangPieub*: KeySym = 0x00000EB3
XK_Hangul_PieubSios*: KeySym = 0x00000EB4
XK_Hangul_Sios*: KeySym = 0x00000EB5
XK_Hangul_SsangSios*: KeySym = 0x00000EB6
XK_Hangul_Ieung*: KeySym = 0x00000EB7
XK_Hangul_Jieuj*: KeySym = 0x00000EB8
XK_Hangul_SsangJieuj*: KeySym = 0x00000EB9
XK_Hangul_Cieuc*: KeySym = 0x00000EBA
XK_Hangul_Khieuq*: KeySym = 0x00000EBB
XK_Hangul_Tieut*: KeySym = 0x00000EBC
XK_Hangul_Phieuf*: KeySym = 0x00000EBD
XK_Hangul_Hieuh*: KeySym = 0x00000EBE # Hangul Vowel Characters
XK_Hangul_A*: KeySym = 0x00000EBF
XK_Hangul_AE*: KeySym = 0x00000EC0
XK_Hangul_YA*: KeySym = 0x00000EC1
XK_Hangul_YAE*: KeySym = 0x00000EC2
XK_Hangul_EO*: KeySym = 0x00000EC3
XK_Hangul_E*: KeySym = 0x00000EC4
XK_Hangul_YEO*: KeySym = 0x00000EC5
XK_Hangul_YE*: KeySym = 0x00000EC6
XK_Hangul_O*: KeySym = 0x00000EC7
XK_Hangul_WA*: KeySym = 0x00000EC8
XK_Hangul_WAE*: KeySym = 0x00000EC9
XK_Hangul_OE*: KeySym = 0x00000ECA
XK_Hangul_YO*: KeySym = 0x00000ECB
XK_Hangul_U*: KeySym = 0x00000ECC
XK_Hangul_WEO*: KeySym = 0x00000ECD
XK_Hangul_WE*: KeySym = 0x00000ECE
XK_Hangul_WI*: KeySym = 0x00000ECF
XK_Hangul_YU*: KeySym = 0x00000ED0
XK_Hangul_EU*: KeySym = 0x00000ED1
XK_Hangul_YI*: KeySym = 0x00000ED2
XK_Hangul_I*: KeySym = 0x00000ED3 # Hangul syllable-final (JongSeong) Characters
XK_Hangul_J_Kiyeog*: KeySym = 0x00000ED4
XK_Hangul_J_SsangKiyeog*: KeySym = 0x00000ED5
XK_Hangul_J_KiyeogSios*: KeySym = 0x00000ED6
XK_Hangul_J_Nieun*: KeySym = 0x00000ED7
XK_Hangul_J_NieunJieuj*: KeySym = 0x00000ED8
XK_Hangul_J_NieunHieuh*: KeySym = 0x00000ED9
XK_Hangul_J_Dikeud*: KeySym = 0x00000EDA
XK_Hangul_J_Rieul*: KeySym = 0x00000EDB
XK_Hangul_J_RieulKiyeog*: KeySym = 0x00000EDC
XK_Hangul_J_RieulMieum*: KeySym = 0x00000EDD
XK_Hangul_J_RieulPieub*: KeySym = 0x00000EDE
XK_Hangul_J_RieulSios*: KeySym = 0x00000EDF
XK_Hangul_J_RieulTieut*: KeySym = 0x00000EE0
XK_Hangul_J_RieulPhieuf*: KeySym = 0x00000EE1
XK_Hangul_J_RieulHieuh*: KeySym = 0x00000EE2
XK_Hangul_J_Mieum*: KeySym = 0x00000EE3
XK_Hangul_J_Pieub*: KeySym = 0x00000EE4
XK_Hangul_J_PieubSios*: KeySym = 0x00000EE5
XK_Hangul_J_Sios*: KeySym = 0x00000EE6
XK_Hangul_J_SsangSios*: KeySym = 0x00000EE7
XK_Hangul_J_Ieung*: KeySym = 0x00000EE8
XK_Hangul_J_Jieuj*: KeySym = 0x00000EE9
XK_Hangul_J_Cieuc*: KeySym = 0x00000EEA
XK_Hangul_J_Khieuq*: KeySym = 0x00000EEB
XK_Hangul_J_Tieut*: KeySym = 0x00000EEC
XK_Hangul_J_Phieuf*: KeySym = 0x00000EED
XK_Hangul_J_Hieuh*: KeySym = 0x00000EEE # Ancient Hangul Consonant Characters
XK_Hangul_RieulYeorinHieuh*: KeySym = 0x00000EEF
XK_Hangul_SunkyeongeumMieum*: KeySym = 0x00000EF0
XK_Hangul_SunkyeongeumPieub*: KeySym = 0x00000EF1
XK_Hangul_PanSios*: KeySym = 0x00000EF2
XK_Hangul_KkogjiDalrinIeung*: KeySym = 0x00000EF3
XK_Hangul_SunkyeongeumPhieuf*: KeySym = 0x00000EF4
XK_Hangul_YeorinHieuh*: KeySym = 0x00000EF5 # Ancient Hangul Vowel Characters
XK_Hangul_AraeA*: KeySym = 0x00000EF6
XK_Hangul_AraeAE*: KeySym = 0x00000EF7 # Ancient Hangul syllable-final (JongSeong) Characters
XK_Hangul_J_PanSios*: KeySym = 0x00000EF8
XK_Hangul_J_KkogjiDalrinIeung*: KeySym = 0x00000EF9
XK_Hangul_J_YeorinHieuh*: KeySym = 0x00000EFA # Korean currency symbol
XK_Korean_Won*: KeySym = 0x00000EFF
# XK_KOREAN
#*
# * Armenian
# * Byte 3 = = $14
# *
when defined(XK_ARMENIAN) or true:
const
XK_Armenian_eternity*: KeySym = 0x000014A1
XK_Armenian_ligature_ew*: KeySym = 0x000014A2
XK_Armenian_full_stop*: KeySym = 0x000014A3
XK_Armenian_verjaket*: KeySym = 0x000014A3
XK_Armenian_parenright*: KeySym = 0x000014A4
XK_Armenian_parenleft*: KeySym = 0x000014A5
XK_Armenian_guillemotright*: KeySym = 0x000014A6
XK_Armenian_guillemotleft*: KeySym = 0x000014A7
XK_Armenian_em_dash*: KeySym = 0x000014A8
XK_Armenian_dot*: KeySym = 0x000014A9
XK_Armenian_mijaket*: KeySym = 0x000014A9
XK_Armenian_separation_mark*: KeySym = 0x000014AA
XK_Armenian_but*: KeySym = 0x000014AA
XK_Armenian_comma*: KeySym = 0x000014AB
XK_Armenian_en_dash*: KeySym = 0x000014AC
XK_Armenian_hyphen*: KeySym = 0x000014AD
XK_Armenian_yentamna*: KeySym = 0x000014AD
XK_Armenian_ellipsis*: KeySym = 0x000014AE
XK_Armenian_exclam*: KeySym = 0x000014AF
XK_Armenian_amanak*: KeySym = 0x000014AF
XK_Armenian_accent*: KeySym = 0x000014B0
XK_Armenian_shesht*: KeySym = 0x000014B0
XK_Armenian_question*: KeySym = 0x000014B1
XK_Armenian_paruyk*: KeySym = 0x000014B1
XKc_Armenian_AYB*: KeySym = 0x000014B2
XK_Armenian_ayb*: KeySym = 0x000014B3
XKc_Armenian_BEN*: KeySym = 0x000014B4
XK_Armenian_ben*: KeySym = 0x000014B5
XKc_Armenian_GIM*: KeySym = 0x000014B6
XK_Armenian_gim*: KeySym = 0x000014B7
XKc_Armenian_DA*: KeySym = 0x000014B8
XK_Armenian_da*: KeySym = 0x000014B9
XKc_Armenian_YECH*: KeySym = 0x000014BA
XK_Armenian_yech*: KeySym = 0x000014BB
XKc_Armenian_ZA*: KeySym = 0x000014BC
XK_Armenian_za*: KeySym = 0x000014BD
XKc_Armenian_E*: KeySym = 0x000014BE
XK_Armenian_e*: KeySym = 0x000014BF
XKc_Armenian_AT*: KeySym = 0x000014C0
XK_Armenian_at*: KeySym = 0x000014C1
XKc_Armenian_TO*: KeySym = 0x000014C2
XK_Armenian_to*: KeySym = 0x000014C3
XKc_Armenian_ZHE*: KeySym = 0x000014C4
XK_Armenian_zhe*: KeySym = 0x000014C5
XKc_Armenian_INI*: KeySym = 0x000014C6
XK_Armenian_ini*: KeySym = 0x000014C7
XKc_Armenian_LYUN*: KeySym = 0x000014C8
XK_Armenian_lyun*: KeySym = 0x000014C9
XKc_Armenian_KHE*: KeySym = 0x000014CA
XK_Armenian_khe*: KeySym = 0x000014CB
XKc_Armenian_TSA*: KeySym = 0x000014CC
XK_Armenian_tsa*: KeySym = 0x000014CD
XKc_Armenian_KEN*: KeySym = 0x000014CE
XK_Armenian_ken*: KeySym = 0x000014CF
XKc_Armenian_HO*: KeySym = 0x000014D0
XK_Armenian_ho*: KeySym = 0x000014D1
XKc_Armenian_DZA*: KeySym = 0x000014D2
XK_Armenian_dza*: KeySym = 0x000014D3
XKc_Armenian_GHAT*: KeySym = 0x000014D4
XK_Armenian_ghat*: KeySym = 0x000014D5
XKc_Armenian_TCHE*: KeySym = 0x000014D6
XK_Armenian_tche*: KeySym = 0x000014D7
XKc_Armenian_MEN*: KeySym = 0x000014D8
XK_Armenian_men*: KeySym = 0x000014D9
XKc_Armenian_HI*: KeySym = 0x000014DA
XK_Armenian_hi*: KeySym = 0x000014DB
XKc_Armenian_NU*: KeySym = 0x000014DC
XK_Armenian_nu*: KeySym = 0x000014DD
XKc_Armenian_SHA*: KeySym = 0x000014DE
XK_Armenian_sha*: KeySym = 0x000014DF
XKc_Armenian_VO*: KeySym = 0x000014E0
XK_Armenian_vo*: KeySym = 0x000014E1
XKc_Armenian_CHA*: KeySym = 0x000014E2
XK_Armenian_cha*: KeySym = 0x000014E3
XKc_Armenian_PE*: KeySym = 0x000014E4
XK_Armenian_pe*: KeySym = 0x000014E5
XKc_Armenian_JE*: KeySym = 0x000014E6
XK_Armenian_je*: KeySym = 0x000014E7
XKc_Armenian_RA*: KeySym = 0x000014E8
XK_Armenian_ra*: KeySym = 0x000014E9
XKc_Armenian_SE*: KeySym = 0x000014EA
XK_Armenian_se*: KeySym = 0x000014EB
XKc_Armenian_VEV*: KeySym = 0x000014EC
XK_Armenian_vev*: KeySym = 0x000014ED
XKc_Armenian_TYUN*: KeySym = 0x000014EE
XK_Armenian_tyun*: KeySym = 0x000014EF
XKc_Armenian_RE*: KeySym = 0x000014F0
XK_Armenian_re*: KeySym = 0x000014F1
XKc_Armenian_TSO*: KeySym = 0x000014F2
XK_Armenian_tso*: KeySym = 0x000014F3
XKc_Armenian_VYUN*: KeySym = 0x000014F4
XK_Armenian_vyun*: KeySym = 0x000014F5
XKc_Armenian_PYUR*: KeySym = 0x000014F6
XK_Armenian_pyur*: KeySym = 0x000014F7
XKc_Armenian_KE*: KeySym = 0x000014F8
XK_Armenian_ke*: KeySym = 0x000014F9
XKc_Armenian_O*: KeySym = 0x000014FA
XK_Armenian_o*: KeySym = 0x000014FB
XKc_Armenian_FE*: KeySym = 0x000014FC
XK_Armenian_fe*: KeySym = 0x000014FD
XK_Armenian_apostrophe*: KeySym = 0x000014FE
XK_Armenian_section_sign*: KeySym = 0x000014FF
# XK_ARMENIAN
#*
# * Georgian
# * Byte 3 = = $15
# *
when defined(XK_GEORGIAN) or true:
const
XK_Georgian_an*: KeySym = 0x000015D0
XK_Georgian_ban*: KeySym = 0x000015D1
XK_Georgian_gan*: KeySym = 0x000015D2
XK_Georgian_don*: KeySym = 0x000015D3
XK_Georgian_en*: KeySym = 0x000015D4
XK_Georgian_vin*: KeySym = 0x000015D5
XK_Georgian_zen*: KeySym = 0x000015D6
XK_Georgian_tan*: KeySym = 0x000015D7
XK_Georgian_in*: KeySym = 0x000015D8
XK_Georgian_kan*: KeySym = 0x000015D9
XK_Georgian_las*: KeySym = 0x000015DA
XK_Georgian_man*: KeySym = 0x000015DB
XK_Georgian_nar*: KeySym = 0x000015DC
XK_Georgian_on*: KeySym = 0x000015DD
XK_Georgian_par*: KeySym = 0x000015DE
XK_Georgian_zhar*: KeySym = 0x000015DF
XK_Georgian_rae*: KeySym = 0x000015E0
XK_Georgian_san*: KeySym = 0x000015E1
XK_Georgian_tar*: KeySym = 0x000015E2
XK_Georgian_un*: KeySym = 0x000015E3
XK_Georgian_phar*: KeySym = 0x000015E4
XK_Georgian_khar*: KeySym = 0x000015E5
XK_Georgian_ghan*: KeySym = 0x000015E6
XK_Georgian_qar*: KeySym = 0x000015E7
XK_Georgian_shin*: KeySym = 0x000015E8
XK_Georgian_chin*: KeySym = 0x000015E9
XK_Georgian_can*: KeySym = 0x000015EA
XK_Georgian_jil*: KeySym = 0x000015EB
XK_Georgian_cil*: KeySym = 0x000015EC
XK_Georgian_char*: KeySym = 0x000015ED
XK_Georgian_xan*: KeySym = 0x000015EE
XK_Georgian_jhan*: KeySym = 0x000015EF
XK_Georgian_hae*: KeySym = 0x000015F0
XK_Georgian_he*: KeySym = 0x000015F1
XK_Georgian_hie*: KeySym = 0x000015F2
XK_Georgian_we*: KeySym = 0x000015F3
XK_Georgian_har*: KeySym = 0x000015F4
XK_Georgian_hoe*: KeySym = 0x000015F5
XK_Georgian_fi*: KeySym = 0x000015F6
# XK_GEORGIAN
#*
# * Azeri (and other Turkic or Caucasian languages of ex-USSR)
# * Byte 3 = = $16
# *
when defined(XK_CAUCASUS) or true:
# latin
const
XKc_Ccedillaabovedot*: KeySym = 0x000016A2
XKc_Xabovedot*: KeySym = 0x000016A3
XKc_Qabovedot*: KeySym = 0x000016A5
XKc_Ibreve*: KeySym = 0x000016A6
XKc_IE*: KeySym = 0x000016A7
XKc_UO*: KeySym = 0x000016A8
XKc_Zstroke*: KeySym = 0x000016A9
XKc_Gcaron*: KeySym = 0x000016AA
XKc_Obarred*: KeySym = 0x000016AF
XK_ccedillaabovedot*: KeySym = 0x000016B2
XK_xabovedot*: KeySym = 0x000016B3
XKc_Ocaron*: KeySym = 0x000016B4
XK_qabovedot*: KeySym = 0x000016B5
XK_ibreve*: KeySym = 0x000016B6
XK_ie*: KeySym = 0x000016B7
XK_uo*: KeySym = 0x000016B8
XK_zstroke*: KeySym = 0x000016B9
XK_gcaron*: KeySym = 0x000016BA
XK_ocaron*: KeySym = 0x000016BD
XK_obarred*: KeySym = 0x000016BF
XKc_SCHWA*: KeySym = 0x000016C6
XK_schwa*: KeySym = 0x000016F6 # those are not really Caucasus, but I put them here for now\
# For Inupiak
XKc_Lbelowdot*: KeySym = 0x000016D1
XKc_Lstrokebelowdot*: KeySym = 0x000016D2
XK_lbelowdot*: KeySym = 0x000016E1
XK_lstrokebelowdot*: KeySym = 0x000016E2 # For Guarani
XKc_Gtilde*: KeySym = 0x000016D3
XK_gtilde*: KeySym = 0x000016E3
# XK_CAUCASUS
#*
# * Vietnamese
# * Byte 3 = = $1e
# *
when defined(XK_VIETNAMESE) or true:
const
XKc_Abelowdot*: KeySym = 0x00001EA0
XK_abelowdot*: KeySym = 0x00001EA1
XKc_Ahook*: KeySym = 0x00001EA2
XK_ahook*: KeySym = 0x00001EA3
XKc_Acircumflexacute*: KeySym = 0x00001EA4
XK_acircumflexacute*: KeySym = 0x00001EA5
XKc_Acircumflexgrave*: KeySym = 0x00001EA6
XK_acircumflexgrave*: KeySym = 0x00001EA7
XKc_Acircumflexhook*: KeySym = 0x00001EA8
XK_acircumflexhook*: KeySym = 0x00001EA9
XKc_Acircumflextilde*: KeySym = 0x00001EAA
XK_acircumflextilde*: KeySym = 0x00001EAB
XKc_Acircumflexbelowdot*: KeySym = 0x00001EAC
XK_acircumflexbelowdot*: KeySym = 0x00001EAD
XKc_Abreveacute*: KeySym = 0x00001EAE
XK_abreveacute*: KeySym = 0x00001EAF
XKc_Abrevegrave*: KeySym = 0x00001EB0
XK_abrevegrave*: KeySym = 0x00001EB1
XKc_Abrevehook*: KeySym = 0x00001EB2
XK_abrevehook*: KeySym = 0x00001EB3
XKc_Abrevetilde*: KeySym = 0x00001EB4
XK_abrevetilde*: KeySym = 0x00001EB5
XKc_Abrevebelowdot*: KeySym = 0x00001EB6
XK_abrevebelowdot*: KeySym = 0x00001EB7
XKc_Ebelowdot*: KeySym = 0x00001EB8
XK_ebelowdot*: KeySym = 0x00001EB9
XKc_Ehook*: KeySym = 0x00001EBA
XK_ehook*: KeySym = 0x00001EBB
XKc_Etilde*: KeySym = 0x00001EBC
XK_etilde*: KeySym = 0x00001EBD
XKc_Ecircumflexacute*: KeySym = 0x00001EBE
XK_ecircumflexacute*: KeySym = 0x00001EBF
XKc_Ecircumflexgrave*: KeySym = 0x00001EC0
XK_ecircumflexgrave*: KeySym = 0x00001EC1
XKc_Ecircumflexhook*: KeySym = 0x00001EC2
XK_ecircumflexhook*: KeySym = 0x00001EC3
XKc_Ecircumflextilde*: KeySym = 0x00001EC4
XK_ecircumflextilde*: KeySym = 0x00001EC5
XKc_Ecircumflexbelowdot*: KeySym = 0x00001EC6
XK_ecircumflexbelowdot*: KeySym = 0x00001EC7
XKc_Ihook*: KeySym = 0x00001EC8
XK_ihook*: KeySym = 0x00001EC9
XKc_Ibelowdot*: KeySym = 0x00001ECA
XK_ibelowdot*: KeySym = 0x00001ECB
XKc_Obelowdot*: KeySym = 0x00001ECC
XK_obelowdot*: KeySym = 0x00001ECD
XKc_Ohook*: KeySym = 0x00001ECE
XK_ohook*: KeySym = 0x00001ECF
XKc_Ocircumflexacute*: KeySym = 0x00001ED0
XK_ocircumflexacute*: KeySym = 0x00001ED1
XKc_Ocircumflexgrave*: KeySym = 0x00001ED2
XK_ocircumflexgrave*: KeySym = 0x00001ED3
XKc_Ocircumflexhook*: KeySym = 0x00001ED4
XK_ocircumflexhook*: KeySym = 0x00001ED5
XKc_Ocircumflextilde*: KeySym = 0x00001ED6
XK_ocircumflextilde*: KeySym = 0x00001ED7
XKc_Ocircumflexbelowdot*: KeySym = 0x00001ED8
XK_ocircumflexbelowdot*: KeySym = 0x00001ED9
XKc_Ohornacute*: KeySym = 0x00001EDA
XK_ohornacute*: KeySym = 0x00001EDB
XKc_Ohorngrave*: KeySym = 0x00001EDC
XK_ohorngrave*: KeySym = 0x00001EDD
XKc_Ohornhook*: KeySym = 0x00001EDE
XK_ohornhook*: KeySym = 0x00001EDF
XKc_Ohorntilde*: KeySym = 0x00001EE0
XK_ohorntilde*: KeySym = 0x00001EE1
XKc_Ohornbelowdot*: KeySym = 0x00001EE2
XK_ohornbelowdot*: KeySym = 0x00001EE3
XKc_Ubelowdot*: KeySym = 0x00001EE4
XK_ubelowdot*: KeySym = 0x00001EE5
XKc_Uhook*: KeySym = 0x00001EE6
XK_uhook*: KeySym = 0x00001EE7
XKc_Uhornacute*: KeySym = 0x00001EE8
XK_uhornacute*: KeySym = 0x00001EE9
XKc_Uhorngrave*: KeySym = 0x00001EEA
XK_uhorngrave*: KeySym = 0x00001EEB
XKc_Uhornhook*: KeySym = 0x00001EEC
XK_uhornhook*: KeySym = 0x00001EED
XKc_Uhorntilde*: KeySym = 0x00001EEE
XK_uhorntilde*: KeySym = 0x00001EEF
XKc_Uhornbelowdot*: KeySym = 0x00001EF0
XK_uhornbelowdot*: KeySym = 0x00001EF1
XKc_Ybelowdot*: KeySym = 0x00001EF4
XK_ybelowdot*: KeySym = 0x00001EF5
XKc_Yhook*: KeySym = 0x00001EF6
XK_yhook*: KeySym = 0x00001EF7
XKc_Ytilde*: KeySym = 0x00001EF8
XK_ytilde*: KeySym = 0x00001EF9
XKc_Ohorn*: KeySym = 0x00001EFA # U+01a0
XK_ohorn*: KeySym = 0x00001EFB # U+01a1
XKc_Uhorn*: KeySym = 0x00001EFC # U+01af
XK_uhorn*: KeySym = 0x00001EFD # U+01b0
XK_combining_tilde*: KeySym = 0x00001E9F # U+0303
XK_combining_grave*: KeySym = 0x00001EF2 # U+0300
XK_combining_acute*: KeySym = 0x00001EF3 # U+0301
XK_combining_hook*: KeySym = 0x00001EFE # U+0309
XK_combining_belowdot*: KeySym = 0x00001EFF # U+0323
# XK_VIETNAMESE
when defined(XK_CURRENCY) or true:
const
XK_EcuSign*: KeySym = 0x000020A0
XK_ColonSign*: KeySym = 0x000020A1
XK_CruzeiroSign*: KeySym = 0x000020A2
XK_FFrancSign*: KeySym = 0x000020A3
XK_LiraSign*: KeySym = 0x000020A4
XK_MillSign*: KeySym = 0x000020A5
XK_NairaSign*: KeySym = 0x000020A6
XK_PesetaSign*: KeySym = 0x000020A7
XK_RupeeSign*: KeySym = 0x000020A8
XK_WonSign*: KeySym = 0x000020A9
XK_NewSheqelSign*: KeySym = 0x000020AA
XK_DongSign*: KeySym = 0x000020AB
XK_EuroSign*: KeySym = 0x000020AC
# implementation
{.deadCodeElim: on.}
const
XC_num_glyphs* = 154
XC_X_cursor* = 0
XC_arrow* = 2
XC_based_arrow_down* = 4
XC_based_arrow_up* = 6
XC_boat* = 8
XC_bogosity* = 10
XC_bottom_left_corner* = 12
XC_bottom_right_corner* = 14
XC_bottom_side* = 16
XC_bottom_tee* = 18
XC_box_spiral* = 20
XC_center_ptr* = 22
XC_circle* = 24
XC_clock* = 26
XC_coffee_mug* = 28
XC_cross* = 30
XC_cross_reverse* = 32
XC_crosshair* = 34
XC_diamond_cross* = 36
XC_dot* = 38
XC_dotbox* = 40
XC_double_arrow* = 42
XC_draft_large* = 44
XC_draft_small* = 46
XC_draped_box* = 48
XC_exchange* = 50
XC_fleur* = 52
XC_gobbler* = 54
XC_gumby* = 56
XC_hand1* = 58
XC_hand2* = 60
XC_heart* = 62
XC_icon* = 64
XC_iron_cross* = 66
XC_left_ptr* = 68
XC_left_side* = 70
XC_left_tee* = 72
XC_leftbutton* = 74
XC_ll_angle* = 76
XC_lr_angle* = 78
XC_man* = 80
XC_middlebutton* = 82
XC_mouse* = 84
XC_pencil* = 86
XC_pirate* = 88
XC_plus* = 90
XC_question_arrow* = 92
XC_right_ptr* = 94
XC_right_side* = 96
XC_right_tee* = 98
XC_rightbutton* = 100
XC_rtl_logo* = 102
XC_sailboat* = 104
XC_sb_down_arrow* = 106
XC_sb_h_double_arrow* = 108
XC_sb_left_arrow* = 110
XC_sb_right_arrow* = 112
XC_sb_up_arrow* = 114
XC_sb_v_double_arrow* = 116
XC_shuttle* = 118
XC_sizing* = 120
XC_spider* = 122
XC_spraycan* = 124
XC_star* = 126
XC_target* = 128
XC_tcross* = 130
XC_top_left_arrow* = 132
XC_top_left_corner* = 134
XC_top_right_corner* = 136
XC_top_side* = 138
XC_top_tee* = 140
XC_trek* = 142
XC_ul_angle* = 144
XC_umbrella* = 146
XC_ur_angle* = 148
XC_watch* = 150
XC_xterm* = 152
# implementation
// typedef struct _XkbRF_VarDefs {
// char * model;
// char * layout;
// char * variant;
// char * options;
// unsigned short sz_extra;
// unsigned short num_extra;
// char * extra_names;
// char ** extra_values;
// } XkbRF_VarDefsRec,*XkbRF_VarDefsPtr;
// typedef struct _XkbRF_VarDesc {
// char * name;
// char * desc;
// } XkbRF_VarDescRec, *XkbRF_VarDescPtr;
// typedef struct _XkbRF_DescribeVars {
// int sz_desc;
// int num_desc;
// XkbRF_VarDescPtr desc;
// } XkbRF_DescribeVarsRec,*XkbRF_DescribeVarsPtr;
// typedef struct _XkbRF_Rule {
// int number;
// int layout_num;
// int variant_num;
// char * model;
// char * layout;
// char * variant;
// char * option;
// /* yields */
// char * keycodes;
// char * symbols;
// char * types;
// char * compat;
// char * geometry;
// char * keymap;
// unsigned flags;
// } XkbRF_RuleRec,*XkbRF_RulePtr;
// typedef struct _XkbRF_Group {
// int number;
// char * name;
// char * words;
// } XkbRF_GroupRec, *XkbRF_GroupPtr;
// #define XkbRF_PendingMatch (1L<<1)
// #define XkbRF_Option (1L<<2)
// #define XkbRF_Append (1L<<3)
// #define XkbRF_Normal (1L<<4)
// #define XkbRF_Invalid (1L<<5)
// typedef struct _XkbRF_Rules {
// XkbRF_DescribeVarsRec models;
// XkbRF_DescribeVarsRec layouts;
// XkbRF_DescribeVarsRec variants;
// XkbRF_DescribeVarsRec options;
// unsigned short sz_extra;
// unsigned short num_extra;
// char ** extra_names;
// XkbRF_DescribeVarsPtr extra;
// unsigned short sz_rules;
// unsigned short num_rules;
// XkbRF_RulePtr rules;
// unsigned short sz_groups;
// unsigned short num_groups;
// XkbRF_GroupPtr groups;
// } XkbRF_RulesRec, *XkbRF_RulesPtr;
// /***====================================================================***/
// _XFUNCPROTOBEGIN
// extern Bool XkbRF_GetComponents(
// XkbRF_RulesPtr /* rules */,
// XkbRF_VarDefsPtr /* var_defs */,
// XkbComponentNamesPtr /* names */
// );
// extern XkbRF_RulePtr XkbRF_AddRule(
// XkbRF_RulesPtr /* rules */
// );
// extern XkbRF_GroupPtr XkbRF_AddGroup(XkbRF_RulesPtr rules);
// extern Bool XkbRF_LoadRules(
// FILE * /* file */,
// XkbRF_RulesPtr /* rules */
// );
// extern Bool XkbRF_LoadRulesByName(
// char * /* base */,
// char * /* locale */,
// XkbRF_RulesPtr /* rules */
// );
// /***====================================================================***/
// extern XkbRF_VarDescPtr XkbRF_AddVarDesc(
// XkbRF_DescribeVarsPtr /* vars */
// );
// extern XkbRF_VarDescPtr XkbRF_AddVarDescCopy(
// XkbRF_DescribeVarsPtr /* vars */,
// XkbRF_VarDescPtr /* copy_from */
// );
// extern XkbRF_DescribeVarsPtr XkbRF_AddVarToDescribe(
// XkbRF_RulesPtr /* rules */,
// char * /* name */
// );
// extern Bool XkbRF_LoadDescriptions(
// FILE * /* file */,
// XkbRF_RulesPtr /* rules */
// );
// extern Bool XkbRF_LoadDescriptionsByName(
// char * /* base */,
// char * /* locale */,
// XkbRF_RulesPtr /* rules */
// );
// extern XkbRF_RulesPtr XkbRF_Load(
// char * /* base */,
// char * /* locale */,
// Bool /* wantDesc */,
// Bool /* wantRules */
// );
// extern XkbRF_RulesPtr XkbRF_Create(
// int /* sz_rules */,
// int /* sz_extra */
// );
// /***====================================================================***/
// extern void XkbRF_Free(
// XkbRF_RulesPtr /* rules */,
// Bool /* freeRules */
// );
// /***====================================================================***/
// #define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
// #define _XKB_RF_NAMES_PROP_MAXLEN 1024
// #ifndef XKB_IN_SERVER
// extern Bool XkbRF_GetNamesProp(
// Display * /* dpy */,
// char ** /* rules_file_rtrn */,
// XkbRF_VarDefsPtr /* var_defs_rtrn */
// );
// extern Bool XkbRF_SetNamesProp(
// Display * /* dpy */,
// char * /* rules_file */,
// XkbRF_VarDefsPtr /* var_defs */
// );
// #endif
// _XFUNCPROTOEND
// #endif /* _XKBRULES_H_ */
import ../vk/vulkan
proc KB_csizet*(amount: int): csize_t = csize_t (amount * 1000)
proc MB_csizet*(amount: int): csize_t = csize_t (amount * 1000 * 1000)
proc GB_csizet*(amount: int): csize_t = csize_t (amount * 1000 * 1000 * 1000)
proc KiB_csizet*(amount: int): csize_t =csize_t (amount * 1024)
proc MiB_csizet*(amount: int): csize_t =csize_t (amount * 1024 * 1024)
proc GiB_csizet*(amount: int): csize_t =csize_t (amount * 1024 * 1024 * 1024)
proc KB_int*(amount: int): int = (amount * 1000)
proc MB_int*(amount: int): int = (amount * 1000 * 1000)
proc GB_int*(amount: int): int = (amount * 1000 * 1000 * 1000)
proc KiB_int*(amount: int): int = (amount * 1024)
proc MiB_int*(amount: int): int = (amount * 1024 * 1024)
proc GiB_int*(amount: int): int = (amount * 1024 * 1024 * 1024)
proc KB_vkds*(amount: int): VkDeviceSize = VkDeviceSize(amount * 1000)
proc MB_vkds*(amount: int): VkDeviceSize = VkDeviceSize(amount * 1000 * 1000)
proc GB_vkds*(amount: int): VkDeviceSize = VkDeviceSize(amount * 1000 * 1000 * 1000)
proc KiB_vkds*(amount: int): VkDeviceSize =VkDeviceSize (amount * 1024)
proc MiB_vkds*(amount: int): VkDeviceSize =VkDeviceSize (amount * 1024 * 1024)
proc GiB_vkds*(amount: int): VkDeviceSize =VkDeviceSize (amount * 1024 * 1024 * 1024)
{.deadCodeElim: on.}
{.experimental: "codeReordering".}
import ktxtypes
, glformat
, math
, bitops
, ../vk/vulkan
, ../vk/[ vulkan_utils
, vkTypes
, vulkan_record
]
, streams
, bitops
, ../drawable/texture
, ../utils/lets
type
KtxInfo = object
endianness*: uint32
glType*: uint32
glTypeSize*: uint32
glFormat*: uint32
glInternalFormat*: uint32
glBaseInternalFormat*: uint32
pixelWidth*: uint32
pixelHeight*: uint32
pixelDepth*: uint32
numberOfArrayElements*: uint32
numberOfFaces*: uint32
numberOfMipmapLevels*: uint32
bytesOfKeyValueData*: uint32
const
identBytes: array[12, uint8] = [0xAB.uint8, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A]
#from std/system/io import open
proc ktxSwapEndian32*(pData32: var uint32, count: int) =
for x in 0 ..< count:
# *pData32++ = (x << 24) | ((x addr 0xFF00) << 8) | ((x addr 0xFF0000) >> 8) | (x >> 24)
pData32 += 1
pdata32 = bitor( (x shl 24)
, ( bitand(x, 0xFF00) shl 8)
, ( bitand(x, 0xFF0000) shr 8)
).uint32
#Equivalent to (n * ceil(nbytes / n)) - nbytes
proc padLen*(n: uint32, nBytes: uint32 ): uint32 =
(n - 1) - (nBytes + ( n - 1 ) and (n-1) ).uint32
#Calculate bytes of of padding needed to reach KTX_GL_UNPACK_ALIGNMENT.
proc padUnpackAlignLen*(rowBytes: uint32): uint32 =
padLen(KTX_GL_UNPACK_ALIGNMENT, rowBytes)
proc padRow*(rowBytes: var uint32) =
var padding: uint32 = padUnpackAlignLen rowBytes
rowBytes += padding
proc aktxTextureImageSize*( texture: KtxTexture, level: uint32): csize_t =
# THIS IS NOT CORRECT
# my levels are not always right
#, so my levelWidth/height are wrong
var
formatInfo: GlFormatSize = texture.formatInfo
bc = BlockCount()
blockSizeInBytes: uint32
rowBytes: uint32
levelWidth = (texture.baseWidth shr level)
levelHeight = (texture.baseHeight shr level)
bc.x = ceil(levelWidth.float / formatInfo.blockWidth.float).uint32
bc.y = ceil(levelHeight.float / formatInfo.blockHeight.float).uint32
bc.x = max(1.uint32, bc.x)
bc.y = max(1.uint32, bc.y)
blockSizeInBytes = (formatInfo.blockSizeInBits.int / 8).uint32
if bitand(formatInfo.flags, 2).bool: # 2 -> GL_FORMAT_SIZE_COMPRESSED_BIT = 0x00000002,
assert texture.isCompressed
return bc.x + bc.y * blockSizeInBytes
else:
assert formatInfo.blockDepth == 1
assert formatInfo.blockDepth == formatinfo.blockHeight
assert formatInfo.blockWidth == formatInfo.blockHeight
rowBytes = bc.x * blockSizeInBytes
padRow rowBytes
return rowBytes * bc.y
proc aktxTextureLayerSize*( texture: KtxTexture, level: uint32): csize_t =
#[
As there are no 3D cubemaps, the image's z block count
will always be 1 for cubemaps and numFaces
will always be 1 for 3D textures so
the multiply is safe. 3D cubemaps, if they existed,
would require imageSize * (blockCount.z + texture.numFaces)
]#
# echo "aktxTextureLayerSize called GIS with level: ", level
var
formatInfo: GlFormatSize = texture.formatInfo
blockCountZ: uint32 = max(1.uint32, (texture.baseDepth.int / formatInfo.blockDepth.int).uint32 shr level)
#the trouble starts here
imageSize: csize_t = aktxTextureImageSize(texture, level)
layerSize: csize_t = imageSize * blockCountZ
#echo "fi.blockdepth:: ", formatInfo.blockDepth
return layerSize * texture.numFaces
proc aktxTextureLevelSize*( texture: KtxTexture, level: uint32): csize_t =
result = aktxTextureLayerSize(texture, level) * texture.numLayers
proc aktxTextureDataSize*( texture: KtxTexture, levels: uint32): csize_t =
var dataSize: csize_t
for i in 0 ..< levels:
# i IS_ corrrect here
var levelSize = texture.aktxTextureLevelSize(i)
#echo("levelSize: ", levelSize)
dataSize += cast[csize_t](levelSize)
dataSize
proc aKtxTextureImageOffset*( texture: KtxTexture
, level: uint32
, layer: uint32
, faceSlice: uint32
, pOffset: var csize_t
) =
if texture.isNil: quit("ERROR: aKtxTextureImageOffset: Texture is nil")
if level >= texture.numLevels: quit("ERROR: aKtxTextureImageOffset: level > texture.numLevels")
if layer >= texture.numLayers: quit("ERROR: aKtxTextureImageOffset: layer > texture.numLevels")
if texture.isCubeMap:
var maxSlice = max(1.uint, (texture.baseDepth shr level))
if faceSlice >= maxSlice: quit("ERROR: aKtxTextureImageOffset: cubemap: faceSlize > maxSlice")
#Get the size of the data up to the start of the indexed level.
pOffSet = aktxTextureDataSize(texture, level)
#All layers, faces & slices within a level are the same size.
if layer != 0:
var ls: csize_t = aktxTextureLayerSize(texture, level)
pOffSet += layer * ls
if faceSlice != 0:
#echo "aKtxTextureImageOffset called GIS with level: ", level
var imageSize: csize_t = aktxTextureImageSize(texture, level)
pOffSet += faceSlice * imageSize
# TODO:
# 1. Right now we just assume Vkmrec.vkRec.queue usage for the copyQueue
# But this is not flexible, so for the future, de-couple pls
proc loadFromFile*( rec: Vulkan_Record
, texture: Texture2D
, texturePath: string = "/run/media/j/ZZZ/Dev/shapes/data/textures/font_sdf_rgba.ktx"
, format: VkFormat = VK_FORMAT_R8G8B8A8_UNORM
, imageUsageFlags: VkImageUsageFlags = VkImageUsageFlags 4
, imageLayout: VkImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
#, VkQueue copyQueue
) =
var
readIdent: array[12, uint8]
info: KtxInfo
p: seq[uint32]
p2: seq[uint8]
imageSize: uint32
kvd: seq[char]
ktxTexture = KtxTexture( extraInfo: KtxExtraInfo()
, formatInfo: GlFormatSize()
, stream: StringStream()
)
loadKTXFile(texturePath, ktxTexture)
let fs = newFileStream "/run/media/j/ZZZ/Dev/shapes/data/textures/font_sdf_rgba.ktx"
#1. Read the 12 byte identifier and make sure it's valid
discard fs.readData(addr readIdent[0], 12)
assert readIdent == identBytes
#2. Parse the 13 uint32 info section into struct
discard fs.readData(addr info, uint32.sizeof * 13)
#handle checking spec-specifics in another fuction
#3 parse key-value meta-data within the size of bytesOfKeyValueData
kvd.setLen info.bytesOfKeyValueData
discard fs.readData(addr kvd[0], info.bytesOfKeyValueData.int)
#4 get image size & create texture buffer
for mip in 0..info.numberOfMipmapLevels:
p.setLen p.len + 1
p.add fs.readuint32
imageSize = p[mip]
p2.setLen p2.len + imageSize.int
for face in 0..info.numberOfFaces - 1:
p2.setLen p2.len + 1
discard fs.readData(addr p2[0], imageSize.int)
texture.width = 512
texture.height = 512
texture.mipLevels = 1
var
#ktxTextureData: ptr uint8 = cast[ptr uint8](ktxTexture.pData) #isNil
ktxTextureSize: csize_t = csize_t (p2.len * uint8.sizeof)
formatProperties: VkFormatProperties
useStaging: bool = true # false if linear tiling ever becomes useful?
memReqs: VkMemoryRequirements
#memAllocInfo = VkMemoryAllocateInfo()
copyCmd: VkCommandBuffer
#cmdBufAllocateInfo = VkCommandBufferAllocateInfo( commandPool: rec.commandPool)
# Get device properties for the requested texture format
vkGetPhysicalDeviceFormatProperties(rec.gpu.handle, format, addr formatProperties)
# Only use linear tiling if requested (and supported by the device)
# Support for linear tiling is mostly limited
# so prefer to use optimal tiling instead
# On most implementations linear tiling will only support a very
# limited amount of formats and features (mip maps, cubemaps, arrays, etc.)
# Use a separate command buffer for texture loading
copyCmd = rec.vk_device.createCommandBuffers( rec.command_pool
, amount = 1
, begin = true
)[0]
if useStaging:
# Create a host-visible staging buffer that contains the raw image data
var
data: pointer
offset: csize_t
bufferCopyRegions: seq[VkBufferImageCopy]
memAllocInfo = VkMemoryAllocateInfo(sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
stagingBuffer: VkBuffer
stagingMemory: VkDeviceMemory
# # This buffer is used as a transfer source for the buffer copy
bufferCreateInfo = VkBufferCreateInfo( sType: VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
, size: VkDevicesize ktxTextureSize
, usage: VkBufferUsageFlags VK_BUFFER_USAGE_TRANSFER_SRC_BIT
, sharingMode : VK_SHARING_MODE_EXCLUSIVE )
discard vkCreateBuffer(rec.vk_device, addr bufferCreateInfo, nil, addr stagingBuffer)
# Get memory requirements for the staging buffer (alignment, memory type bits)
vkGetBufferMemoryRequirements(rec.vk_device, stagingBuffer, addr memReqs)
memAllocInfo.allocationSize = memReqs.size
# Get memory type index for a host visible buffer
memAllocInfo.memoryTypeIndex = rec.gpu.memory_properties.getMemoryType(memReqs.memoryTypeBits, VkMemoryPropertyFlags bitor( ord VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, ord VK_MEMORY_PROPERTY_HOST_COHERENT_BIT))
discard vkAllocateMemory(rec.vk_device, addr memAllocInfo, nil, addr stagingMemory)
discard vkBindBufferMemory(rec.vk_device, stagingBuffer, stagingMemory, vk0)
# Copy texture data into staging buffer
discard vkMapMemory(rec.logicalDevice, stagingMemory, vk0, memReqs.size, VkMemoryMapFlags 0, addr data)
copymem(data, p2[0].addr, ktxTextureSize)
vkUnmapMemory(rec.logicalDevice, stagingMemory)
# Setup buffer copy regions for each mip level
# echo texture.miplevels
for i in 0 ..< texture.mipLevels:
aKtxTextureImageOffset(ktxTexture, i.uint32, 0, 0, offset)
var bufferCopyRegion = VkBufferImageCopy()
bufferCopyRegion.imageSubresource.aspectMask = VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
bufferCopyRegion.imageSubresource.mipLevel = i
bufferCopyRegion.imageSubresource.baseArrayLayer = 0
bufferCopyRegion.imageSubresource.layerCount = 1
bufferCopyRegion.imageExtent.width = max(1.uint, ktxTexture.baseWidth shr i).uint32
bufferCopyRegion.imageExtent.height = max(1.uint, ktxTexture.baseHeight shr i).uint32
bufferCopyRegion.imageExtent.depth = 1
bufferCopyRegion.bufferOffset = VKDeviceSize offset
bufferCopyRegions.add bufferCopyRegion
# Create optimal tiled target image
var imageCreateInfo = VkImageCreateInfo()
imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D
imageCreateInfo.format = format
imageCreateInfo.mipLevels = texture.mipLevels
imageCreateInfo.arrayLayers = 1
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED
imageCreateInfo.extent = VkExtent3d(width: texture.width, height: texture.height, depth: 1)
imageCreateInfo.usage = VkImageUsageFlags bitor(imageUsageFlags.ord, VK_IMAGE_USAGE_TRANSFER_DST_BIT.ord)
# Ensure that the TRANSFER_DST bit is set for staging
#if not(imageCreateInfo.usage addr VK_IMAGE_USAGE_TRANSFER_DST_BIT)):
#imageCreateInfo.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT
discard vkCreateImage(rec.logicalDevice, addr imageCreateInfo, nil, addr texture.image)
vkGetImageMemoryRequirements(rec.logicalDevice, texture.image, addr memReqs)
memAllocInfo.allocationSize = memReqs.size
memAllocInfo.memoryTypeIndex = rec.gpu.memory_properties.getMemoryType(memReqs.memoryTypeBits, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)
discard vkAllocateMemory(rec.logicalDevice, addr memAllocInfo, nil, addr texture.deviceMemory)
discard vkBindImageMemory(rec.logicalDevice, texture.image, texture.deviceMemory, vk0)
var subresourceRange = VkImageSubresourceRange()
subresourceRange.aspectMask = VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
subresourceRange.baseMipLevel = 0
subresourceRange.levelCount = texture.mipLevels
subresourceRange.layerCount = 1
# Image barrier for optimal image (target)
# Optimal image will be used as destination for the copy
setImageLayout( copyCmd
, texture.image
, VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, subresourceRange
, srcStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_TRANSFER_BIT
, dstStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_TRANSFER_BIT
)
# Copy mip levels from staging buffer
vkCmdCopyBufferToImage( copyCmd
, stagingBuffer
, texture.image
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, bufferCopyRegions.len.uint32
, addr bufferCopyRegions[0]
)
# Change texture image layout to shader read after all mip levels have been copied
texture.imageLayout = imageLayout
setImageLayout( copyCmd
, texture.image
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, imageLayout
, subresourceRange
, srcStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_TRANSFER_BIT
, dstStageMask = VkPipelineStageFlags VK_PIPELINE_STAGE_VERTEX_INPUT_BIT.ord or VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT.ord
)
rec.vk_device.flushCommandBuffer(rec.queue
, rec.command_pool
, copyCmd
)
# Clean up staging resources
vkFreeMemory(rec.logicalDevice, stagingMemory, nil)
vkDestroyBuffer(rec.logicalDevice, stagingBuffer, nil)
# Create a default sampler
var samplerCreateInfo = VkSamplerCreateInfo( sType: VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
, magFilter: VK_FILTER_LINEAR
, minFilter: VK_FILTER_LINEAR
, mipmapMode: VK_SAMPLER_MIPMAP_MODE_LINEAR
, addressModeU: VK_SAMPLER_ADDRESS_MODE_REPEAT
, addressModeV: VK_SAMPLER_ADDRESS_MODE_REPEAT
, addressModeW: VK_SAMPLER_ADDRESS_MODE_REPEAT
, mipLodBias: 0.0
, compareOp: VK_COMPARE_OP_NEVER
, minLod: 0.0
, anisotropyEnable: vkfalse
, maxAnisotropy: 1.0
)
# # Max level-of-detail should match mip level count
samplerCreateInfo.maxLod = texture.mipLevels.float32
# Only enable anisotropic filtering if enabled on the device
#samplerCreateInfo.maxAnisotropy = if (rec.deviceFeatures.samplerAnisotropy).bool: rec.deviceProperties.limits.maxSamplerAnisotropy else: 1.0f
#samplerCreateInfo.anisotropyEnable = if (rec.deviceFeatures.samplerAnisotropy).bool: vktrue else: vkfalse
samplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
discard vkCreateSampler(rec.logicalDevice, addr samplerCreateInfo, nil, addr texture.sampler)
# Create image view
# Textures are not directly accessed by the shaders and
# are abstracted by image views containing additional
# information and sub resource ranges
var viewCreateInfo = VkImageViewCreateInfo()
viewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
viewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D
viewCreateInfo.format = format
viewCreateInfo.components = VkComponentMapping( r: VK_COMPONENT_SWIZZLE_R
, g: VK_COMPONENT_SWIZZLE_G
, b: VK_COMPONENT_SWIZZLE_B
, a: VK_COMPONENT_SWIZZLE_A
)
viewCreateInfo.subresourceRange = VkImageSubresourceRange( aspectMask: VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
, baseMipLevel: 0
, levelCount: 1
, baseArrayLayer: 0
, layerCount: 1
)
# Linear tiling usually won't support mip maps
# Only set mip map count if optimal tiling is used
viewCreateInfo.subresourceRange.levelCount = texture.mipLevels
viewCreateInfo.image = texture.image
discard vkCreateImageView(rec.logicalDevice, addr viewCreateInfo, nil, addr texture.view)
# # Update descriptor image info member that can be used for setting up descriptor sets
#updateDescriptor()
texture.descriptor.sampler = texture.sampler
texture.descriptor.imageView = texture.view
texture.descriptor.imageLayout = texture.imageLayout
proc checkKtxHeader( pHeader: ptr KTX_header
, pSuppInfo: var KtxExtraInfo) =
var
# KTX_IDENTIFIER_REF
ident_ref: array[12, uint8] = [0xAB.uint8, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A]
max_dim: uint32
#assert(pHeader != nil and pSuppInfo != nil)
# Compare identifier, is this a KTX file?
if not equalMem(addr pHeader.identifier, addr ident_ref, 12): quit("checkKTXHeader: KTX_UNKNOWN_FILE_FORMAT")
if (pHeader.endianness == endianRefRev):
echo "indian hit"
# Convert endianness of pHeader fields.
ktxSwapEndian32( pHeader.glType, 12)
if (pHeader.glTypeSize != 1) and
(pHeader.glTypeSize != 2) and
(pHeader.glTypeSize != 4):
# Only 8-, 16-, and 32-bit types supported so far.
quit("KTX_FILE_DATA_ERROR")
elif pHeader.endianness != 67305985: # . KTX_ENDIAN_REF (0x04030201)
quit("KTX_FILE_DATA_ERROR[2]")
# Check glType and glFormat
pSuppInfo.compressed = 0
if (pHeader.glType == 0 or pHeader.glFormat == 0):
# either both or none of glType, glFormat must be zero
if (pHeader.glType + pHeader.glFormat != 0): quit("KTX_FILE_DATA_ERROR[3]")
pSuppInfo.compressed = 1
# glInternalFormat is either unsized (which is no longer and should
# never have been supported by libktx) or glFormat is sized.
if (pHeader.glFormat == pHeader.glInternalformat): quit("KTX_FILE_DATA_ERROR[4]")
# Check texture dimensions. KTX files can store 8 types of textures:
# 1D, 2D, 3D, cube, and array variants of these. There is currently
# no GL extension for 3D array textures.
# texture must have width
# texture must have height if it has depth
if ((pHeader.pixelWidth == 0) or (pHeader.pixelDepth > 0 and pHeader.pixelHeight == 0)):
quit("KTX_FILE_DATA_ERROR[5]")
if (pHeader.pixelDepth > 0):
# No 3D array textures yet.
if (pHeader.numberOfArrayElements > 0): quit("KTX_UNSUPPORTED_TEXTURE_TYPE")
pSuppInfo.textureDimension = 3
elif (pHeader.pixelHeight > 0): pSuppInfo.textureDimension = 2
else: pSuppInfo.textureDimension = 1
if (pHeader.numberOfFaces == 6):
# cube map needs 2D faces
if (pSuppInfo.textureDimension != 2): quit("KTX_FILE_DATA_ERROR[6]")
# numberOfFaces must be either 1 or 6
elif (pHeader.numberOfFaces != 1): quit("KTX_FILE_DATA_ERROR[7]")
# Check number of mipmap levels
if (pHeader.numberOfMipmapLevels == 0):
pSuppInfo.generateMipmaps = 1
pHeader.numberOfMipmapLevels = 1
else: pSuppInfo.generateMipmaps = 0
# This test works for arrays too because height or depth will be 0.
max_dim = max(max(pHeader.pixelWidth, pHeader.pixelHeight), pHeader.pixelDepth)
# Can't have more mip levels than 1 + log2(max(width, height, depth))
if (max_dim < (1.uint32 shl (pHeader.numberOfMipmapLevels - 1))): quit("KTX_FILE_DATA_ERROR: mip levels > 1 + log2(max(width, height, depth)) ")
proc loadKTXFile*(filename: string
, target: var KtxTexture
, createFlags: uint32 = 1 # KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT
#[, newTex: KtxTexture]#) =
var
header = KtxHeader()
supp = KtxExtraInfo()
#size: csize_t
fs = newFileStream "/run/media/j/ZZZ/Dev/shapes/data/textures/font_sdf_rgba.ktx"
discard fs.readData(cast[pointer](header), 64) #KTX_HEADER_SIZE 64 )
checkKtxHeader(addr header, supp )
target.glFormat = header.glFormat
target.glInternalformat = header.glInternalformat
target.glType = header.glType
aformatSize(GLFormats target.glInternalformat, target.formatInfo)
target.glBaseInternalformat = header.glBaseInternalformat
target.numDimensions = supp.textureDimension
target.baseWidth = header.pixelWidth
assert(supp.textureDimension > 0 and supp.textureDimension < 4)
case supp.textureDimension:
of 1:
# super->baseHeight = super->baseDepth = 1; (are they <=> ??)
target.baseHeight = 1
target.baseDepth = 1
of 2:
target.baseHeight = header.pixelHeight
target.baseDepth = 1
of 3:
target.baseHeight = header.pixelHeight
target.baseDepth = header.pixelDepth
else: echo "[!] Default case HIT for: `case supp.textureDimension`"
if header.numberOfArrayElements > 0:
target.numLayers = header.numberOfArrayElements
target.isArray = true
else:
target.numLayers = 1
target.isArray = false
target.numFaces = header.numberOfFaces
if header.numberOfFaces == 6: target.isCubemap = true
else: target.isCubemap = false
target.numLevels = header.numberOfMipmapLevels
target.isCompressed = supp.compressed.bool
target.generateMipmaps = supp.generateMipmaps.bool
if header.endianness == endianRefRev:
target.needSwap = true
target.glTypeSize = header.glTypeSize
{.deadCodeElim: on.}
import streams
, glformat
const
KTX_GL_UNPACK_ALIGNMENT* = 4
type
BlockCount* = ref object
x*,y*,z*: uint32
KtxTextureCreateFlagBits* = enum
TextureCreateNoFlags = 0
TextureCreateLoadImageData = 1 # Load the images from the KTX source
TextureCreateRawKVData = 2 # Load the raw key-value data instead of creating a @c ktxHashList from it
TextureCreateSkipKVData = 4 # Skip any key-value data. This overrides the RAW_KVDATA_BIT
KtxExtraInfo* = ref object
compressed*: uint8
generateMipmaps*: uint8
textureDimension*: uint16
KtxHeader* = ref object
identifier*: array[12,uint8]
endianness*: uint32
glType*: uint32
glTypeSize*: uint32
glFormat*: uint32
glInternalformat*: uint32
glBaseInternalformat*: uint32
pixelWidth*: uint32
pixelHeight*: uint32
pixelDepth*: uint32
numberOfArrayElements*: uint32
numberOfFaces*: uint32
numberOfMipmapLevels*: uint32
bytesOfKeyValueData*: uint32
KtxTextureObj = object of RootObj
glFormat*: cuint # Format of the texture data, e.g., GL_RGB.
glInternalformat*: cuint # Internal format of the texture data, e.g., GL_RGB8.
glBaseInternalformat*: cuint # Base format of the texture data, e.g., GL_RGB.
glType*: cuint # Type of the texture data, e.g, GL_UNSIGNED_BYTE.
isArray*: bool # true if the texture is an array texture, i.e, a GL_TEXTURE_*_ARRAY target is to be used.
isCubemap*: bool # true if the texture is a cubemap or cubemap array.
isCompressed*: bool # true if @c glInternalFormat is that of a compressed texture.
generateMipmaps*: bool # true if mipmaps should be generated for the texture by ktxTexture_GLUpload() or ktx_Texture_VkUpload().
baseWidth*: uint # Width of the base level of the texture.
baseHeight*: uint # Height of the base level of the texture.
baseDepth*: uint # Depth of the base level of the texture.
numDimensions*: uint # Number of dimensions in the texture: 1, 2 or 3.
numLevels*: uint # Number of mip levels in the texture. Should be 1, if @c generateMipmaps is true. Can be less than a full pyramid but always starts at the base level.
numLayers*: uint # Number of array layers in the texture.
numFaces*: uint # Number of faces, 6 for cube maps, 1 otherw ise.
createFlags*: uint32
extraInfo*: KtxExtraInfo
formatInfo*: GlFormatSize # Info about the image data format. */
# The following are needed because image data reading can be delayed.
glTypeSize*: uint32 # Size of the image data type in bytes. */
stream*: StringStream # Stream connected to KTX source. */
needSwap*: bool # If KTX_TRUE, image data needs byte swapping. */
# kvDataHead: ktxHashList # hash list of metadata.
kvDataLen: uint # Length of the metadata, if it has been extracted in its raw form, otherwise 0.
# kvData: pointer # Pointer to the metadata, if it has been extracted in its raw form, otherwise NULL.
dataSize*: csize_t # Length of the image data in bytes.
pData*: pointer # Pointer to the image data.
KtxTexture* = ref object of KtxTextureObj
{.deadCodeElim: on.}
const
endianRefRev* = 16909060 # 0x01020304 -> #define KTX_ENDIAN_REF_REV (0x01020304)
type
GlFormatSize* = ref object
paletteSizeInBits*: uint
blockSizeInBits*: uint
blockWidth*: uint# in texels
blockHeight*: uint # in texels
blockDepth*: uint # in texels
flags*: uint
#currently only uncommenting and adding to GlFormats and
# aFormatSize when needed
GlFormats* = enum
# 8 bits per component
#GL_RGB8 = 32849 #0x8051 # same as GL_RGB8_EXT and GL_RGB8_OES
GL_RGBA8 = 32856 # same as GL_RGBA8_EXT and GL_RGBA8_OES
# GL_R8 = 33321 #0x8229 # same as GL_R8_EXT
# GL_RG8 = 33323 #0x822B # same as GL_RG8_EXT
# GL_R8I = 33329 #0x8231
# GL_R8UI = 33330 #0x8232
# GL_RG8I = 33335 #0x8237
# GL_RG8UI = 33336 #0x8238
# GL_SRGB8 = 35905 #0x8C41 # same as GL_SRGB8_EXT
# GL_SRGB8_ALPHA8 = 35907 #0x8C43 # same as GL_SRGB8_ALPHA8_EXT
# GL_RGBA8UI = 36220 #0x8D7C # same as GL_RGBA8UI_EXT
# GL_RGB8UI = 36221 #0x8D7D # same as GL_RGB8UI_EXT
# GL_RGBA8I = 36238 #0x8D8E # same as GL_RGBA8I_EXT
# GL_RGB8I = 36239 # 0x8D8F # same as GL_RGB8I_EXT
# GL_R8_SNORM = 36756 #0x8F94
# GL_RG8_SNORM = 36757 #0x8F95
# GL_RGB8_SNORM = 36758 #0x8F96
# GL_RGBA8_SNORM = 36759 # 0x8F97
# GL_SR8 = 36797 #0x8FBD # same as GL_SR8_EXT
# GL_SRG8 = 36798 #0x8FBE # same as GL_SRG8_EXT
# # 16 bits per component
# GL_R16 = 0x822A # same as GL_R16_EXT
# GL_RG16 = 0x822C # same as GL_RG16_EXT
# GL_RGB16 = 0x8054 # same as GL_RGB16_EXT
# GL_RGBA16 = 0x805B # same as GL_RGBA16_EXT
# GL_R16_SNORM = 0x8F98 # same as GL_R16_SNORM_EXT
# GL_RG16_SNORM = 0x8F99 # same as GL_RG16_SNORM_EXT
# GL_RGB16_SNORM = 0x8F9A # same as GL_RGB16_SNORM_EXT
# GL_RGBA16_SNORM = 0x8F9B # same as GL_RGBA16_SNORM_EXT
# GL_R16UI = 0x8234
# GL_RG16UI = 0x823A
# GL_RGB16UI = 0x8D77 # same as GL_RGB16UI_EXT
# GL_RGBA16UI = 0x8D76 # same as GL_RGBA16UI_EXT
# GL_R16I = 0x8233
# GL_RG16I = 0x8239
# GL_RGB16I = 0x8D89 # same as GL_RGB16I_EXT
# GL_RGBA16I = 0x8D88 # same as GL_RGBA16I_EXT
# GL_R16F = 0x822D # same as GL_R16F_EXT
# GL_RG16F = 0x822F # same as GL_RG16F_EXT
# GL_RGB16F = 0x881B # same as GL_RGB16F_EXT and GL_RGB16F_ARB
# GL_RGBA16F = 0x881A # sama as GL_RGBA16F_EXT and GL_RGBA16F_ARB
# # 32 bits per component
# GL_R32UI = 0x8236
# GL_RG32UI = 0x823C
# GL_RGB32UI = 0x8D71 # same as GL_RGB32UI_EXT
# GL_RGBA32UI = 0x8D70 # same as GL_RGBA32UI_EXT
# GL_R32I = 0x8235
# GL_RG32I = 0x823B
# GL_RGB32I = 0x8D83 # same as GL_RGB32I_EXT
# GL_RGBA32I = 0x8D82 # same as GL_RGBA32I_EXT
# GL_R32F8 = 0x822E # same as GL_R32F_EXT
# GL_RG32F = 0x8230 # same as GL_RG32F_EXT
# GL_RGB32F = 0x8815 # same as GL_RGB32F_EXT and GL_RGB32F_ARB
# GL_RGBA32F = 0x8814 # same as GL_RGBA32F_EXT and GL_RGBA32F_ARB
# # Packed
# GL_R3_G3_B2 = 0x2A10
# GL_RGB4 = 0x804F # same as GL_RGB4_EXT
# GL_RGB5 = 0x8050 # same as GL_RGB5_EXT
# GL_RGB565 = 0x8D62 # same as GL_RGB565_EXT and GL_RGB565_OES
# GL_RGB10 = 0x8052 # same as GL_RGB10_EXT
# GL_RGB12 = 0x8053 # same as GL_RGB12_EXT
# GL_RGBA2 = 0x8055 # same as GL_RGBA2_EXT
# GL_RGBA4 = 0x8056 # same as GL_RGBA4_EXT and GL_RGBA4_OES
# GL_RGBA12 = 0x805A # same as GL_RGBA12_EXT
# GL_RGB5_A1 = 0x8057 # same as GL_RGB5_A1_EXT and GL_RGB5_A1_OES
# GL_RGB10_A2 = 0x8059 # same as GL_RGB10_A2_EXT
# GL_RGB10_A2UI = 0x906F
# GL_R11F_G11F_B10F = 0x8C3A # same as GL_R11F_G11F_B10F_APPLE and GL_R11F_G11F_B10F_EXT
# GL_RGB9_E5 = 0x8C3D # same as GL_RGB9_E5_APPLE and GL_RGB9_E5_EXT
# GL_COMPRESSED_RG 0x8226
# GL_COMPRESSED_RGB 0x84ED # same as GL_COMPRESSED_RGB_ARB
# GL_COMPRESSED_RGBA 0x84EE # same as GL_COMPRESSED_RGBA_ARB
# GL_COMPRESSED_SRGB 0x8C48 # same as GL_COMPRESSED_SRGB_EXT
# GL_COMPRESSED_SRGB_ALPHA 0x8C49 # same as GL_COMPRESSED_SRGB_ALPHA_EXT
# # S3TC/DXT/BC
# GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
# GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
# GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
# GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
# GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
# GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
# GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
# GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
# GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
# GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
# GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
# GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
# GL_COMPRESSED_RED_RGTC1 0x8DBB # same as GL_COMPRESSED_RED_RGTC1_EXT
# GL_COMPRESSED_RG_RGTC2 0x8DBD # same as GL_COMPRESSED_RG_RGTC2_EXT
# GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC # same as GL_COMPRESSED_SIGNED_RED_RGTC1_EXT
# GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE # same as GL_COMPRESSED_SIGNED_RG_RGTC2_EXT
# GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E # same as GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB
# GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F # same as GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB
# GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C # same as GL_COMPRESSED_RGBA_BPTC_UNORM_ARB
# GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D # same as GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB
# #
# # ETC
# #
# GL_ETC1_RGB8_OES 0x8D64
# GL_COMPRESSED_RGB8_ETC2 0x9274
# GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
# GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
# GL_COMPRESSED_SRGB8_ETC2 0x9275
# GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
# GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
# GL_COMPRESSED_R11_EAC 0x9270
# GL_COMPRESSED_RG11_EAC 0x9272
# GL_COMPRESSED_SIGNED_R11_EAC 0x9271
# GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
# #
# # PVRTC
# #
# GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
# GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
# GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
# GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
# GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
# GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
# GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
# GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
# GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
# GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
# GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
# GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
# #
# # ASTC
# #
# GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
# GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
# GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
# GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
# GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
# GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
# GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
# GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
# GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
# GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
# GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
# GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
# GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
# GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
# GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
# GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
# GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
# GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
# GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
# GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
# GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
# GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
# GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
# GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
# GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
# #
# # ATC
# #
# GL_ATC_RGB_AMD 0x8C92
# GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
# GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
# #
# # Palletized (combined palette)
# #
# GL_PALETTE4_RGB8_OES 0x8B90
# GL_PALETTE4_RGBA8_OES 0x8B91
# GL_PALETTE4_R5_G6_B5_OES 0x8B92
# GL_PALETTE4_RGBA4_OES 0x8B93
# GL_PALETTE4_RGB5_A1_OES 0x8B94
# GL_PALETTE8_RGB8_OES 0x8B95
# GL_PALETTE8_RGBA8_OES 0x8B96
# GL_PALETTE8_R5_G6_B5_OES 0x8B97
# GL_PALETTE8_RGBA4_OES 0x8B98
# GL_PALETTE8_RGB5_A1_OES 0x8B99
# #
# # Palletized (separate palette)
# #
# GL_COLOR_INDEX1_EXT 0x80E2 # deprecated
# GL_COLOR_INDEX2_EXT 0x80E3 # deprecated
# GL_COLOR_INDEX4_EXT 0x80E4 # deprecated
# GL_COLOR_INDEX8_EXT 0x80E5 # deprecated
# GL_COLOR_INDEX12_EXT 0x80E6 # deprecated
# GL_COLOR_INDEX16_EXT 0x80E7 # deprecated
# #
# # Depth/stencil
# #
# GL_DEPTH_COMPONENT16 0x81A5 # same as GL_DEPTH_COMPONENT16_SGIX and GL_DEPTH_COMPONENT16_ARB
# GL_DEPTH_COMPONENT24 0x81A6 # same as GL_DEPTH_COMPONENT24_SGIX and GL_DEPTH_COMPONENT24_ARB
# GL_DEPTH_COMPONENT32 0x81A7 # same as GL_DEPTH_COMPONENT32_SGIX and GL_DEPTH_COMPONENT32_ARB and GL_DEPTH_COMPONENT32_OES
# GL_DEPTH_COMPONENT32F 0x8CAC # same as GL_DEPTH_COMPONENT32F_ARB
# GL_DEPTH_COMPONENT32F_NV 0x8DAB # note that this is different from GL_DEPTH_COMPONENT32F
# GL_STENCIL_INDEX1 0x8D46 # same as GL_STENCIL_INDEX1_EXT
# GL_STENCIL_INDEX4 0x8D47 # same as GL_STENCIL_INDEX4_EXT
# GL_STENCIL_INDEX8 0x8D48 # same as GL_STENCIL_INDEX8_EXT
# GL_STENCIL_INDEX16 0x8D49 # same as GL_STENCIL_INDEX16_EXT
# GL_DEPTH24_STENCIL8 0x88F0 # same as GL_DEPTH24_STENCIL8_EXT and GL_DEPTH24_STENCIL8_OES
# GL_DEPTH32F_STENCIL8 0x8CAD # same as GL_DEPTH32F_STENCIL8_ARB
# GL_DEPTH32F_STENCIL8_NV 0x8DAC # note that this is different from GL_DEPTH32F_STENCIL8
#[
Excerpt from the original gl_format.h from https://github.com/SaschaWillems/Vulkan:
in case i accidently messed up the hex converting.
Someday I should probably verify or find a way to get rid of this nonsense
Note: All values marked as deprecated by sascha/whoever in the original .h are not included here, such as GL_LUMINANCE32UI_EXT or GL_ALPHA8_SNORM
-------------------------------------------------------------------------------------------------------------------------------------------------
Internal format to glTexImage2D, glTexImage3D, glCompressedTexImage2D, glCompressedTexImage3D, glTexStorage2D, glTexStorage3D
//
// 8 bits per component
//
#if !defined( GL_R8 )
#define GL_R8 0x8229 // same as GL_R8_EXT
#endif
#if !defined( GL_RG8 )
#define GL_RG8 0x822B // same as GL_RG8_EXT
#endif
#if !defined( GL_RGB8 )
#define GL_RGB8 0x8051 // same as GL_RGB8_EXT and GL_RGB8_OES
#endif
#if !defined( GL_RGBA8 )
#define GL_RGBA8 0x8058 // same as GL_RGBA8_EXT and GL_RGBA8_OES
#endif
#if !defined( GL_R8_SNORM )
#define GL_R8_SNORM 0x8F94
#endif
#if !defined( GL_RG8_SNORM )
#define GL_RG8_SNORM 0x8F95
#endif
#if !defined( GL_RGB8_SNORM )
#define GL_RGB8_SNORM 0x8F96
#endif
#if !defined( GL_RGBA8_SNORM )
#define GL_RGBA8_SNORM 0x8F97
#endif
#if !defined( GL_R8UI )
#define GL_R8UI 0x8232
#endif
#if !defined( GL_RG8UI )
#define GL_RG8UI 0x8238
#endif
#if !defined( GL_RGB8UI )
#define GL_RGB8UI 0x8D7D // same as GL_RGB8UI_EXT
#endif
#if !defined( GL_RGBA8UI )
#define GL_RGBA8UI 0x8D7C // same as GL_RGBA8UI_EXT
#endif
#if !defined( GL_R8I )
#define GL_R8I 0x8231
#endif
#if !defined( GL_RG8I )
#define GL_RG8I 0x8237
#endif
#if !defined( GL_RGB8I )
#define GL_RGB8I 0x8D8F // same as GL_RGB8I_EXT
#endif
#if !defined( GL_RGBA8I )
#define GL_RGBA8I 0x8D8E // same as GL_RGBA8I_EXT
#endif
#if !defined( GL_SR8 )
#define GL_SR8 0x8FBD // same as GL_SR8_EXT
#endif
#if !defined( GL_SRG8 )
#define GL_SRG8 0x8FBE // same as GL_SRG8_EXT
#endif
#if !defined( GL_SRGB8 )
#define GL_SRGB8 0x8C41 // same as GL_SRGB8_EXT
#endif
#if !defined( GL_SRGB8_ALPHA8 )
#define GL_SRGB8_ALPHA8 0x8C43 // same as GL_SRGB8_ALPHA8_EXT
#endif
//
// 16 bits per component
//
#if !defined( GL_R16 )
#define GL_R16 0x822A // same as GL_R16_EXT
#endif
#if !defined( GL_RG16 )
#define GL_RG16 0x822C // same as GL_RG16_EXT
#endif
#if !defined( GL_RGB16 )
#define GL_RGB16 0x8054 // same as GL_RGB16_EXT
#endif
#if !defined( GL_RGBA16 )
#define GL_RGBA16 0x805B // same as GL_RGBA16_EXT
#endif
#if !defined( GL_R16_SNORM )
#define GL_R16_SNORM 0x8F98 // same as GL_R16_SNORM_EXT
#endif
#if !defined( GL_RG16_SNORM )
#define GL_RG16_SNORM 0x8F99 // same as GL_RG16_SNORM_EXT
#endif
#if !defined( GL_RGB16_SNORM )
#define GL_RGB16_SNORM 0x8F9A // same as GL_RGB16_SNORM_EXT
#endif
#if !defined( GL_RGBA16_SNORM )
#define GL_RGBA16_SNORM 0x8F9B // same as GL_RGBA16_SNORM_EXT
#endif
#if !defined( GL_R16UI )
#define GL_R16UI 0x8234
#endif
#if !defined( GL_RG16UI )
#define GL_RG16UI 0x823A
#endif
#if !defined( GL_RGB16UI )
#define GL_RGB16UI 0x8D77 // same as GL_RGB16UI_EXT
#endif
#if !defined( GL_RGBA16UI )
#define GL_RGBA16UI 0x8D76 // same as GL_RGBA16UI_EXT
#endif
#if !defined( GL_R16I )
#define GL_R16I 0x8233
#endif
#if !defined( GL_RG16I )
#define GL_RG16I 0x8239
#endif
#if !defined( GL_RGB16I )
#define GL_RGB16I 0x8D89 // same as GL_RGB16I_EXT
#endif
#if !defined( GL_RGBA16I )
#define GL_RGBA16I 0x8D88 // same as GL_RGBA16I_EXT
#endif
#if !defined( GL_R16F )
#define GL_R16F 0x822D // same as GL_R16F_EXT
#endif
#if !defined( GL_RG16F )
#define GL_RG16F 0x822F // same as GL_RG16F_EXT
#endif
#if !defined( GL_RGB16F )
#define GL_RGB16F 0x881B // same as GL_RGB16F_EXT and GL_RGB16F_ARB
#endif
#if !defined( GL_RGBA16F )
#define GL_RGBA16F 0x881A // sama as GL_RGBA16F_EXT and GL_RGBA16F_ARB
#endif
//
// 32 bits per component
//
#if !defined( GL_R32UI )
#define GL_R32UI 0x8236
#endif
#if !defined( GL_RG32UI )
#define GL_RG32UI 0x823C
#endif
#if !defined( GL_RGB32UI )
#define GL_RGB32UI 0x8D71 // same as GL_RGB32UI_EXT
#endif
#if !defined( GL_RGBA32UI )
#define GL_RGBA32UI 0x8D70 // same as GL_RGBA32UI_EXT
#endif
#if !defined( GL_R32I )
#define GL_R32I 0x8235
#endif
#if !defined( GL_RG32I )
#define GL_RG32I 0x823B
#endif
#if !defined( GL_RGB32I )
#define GL_RGB32I 0x8D83 // same as GL_RGB32I_EXT
#endif
#if !defined( GL_RGBA32I )
#define GL_RGBA32I 0x8D82 // same as GL_RGBA32I_EXT
#endif
#if !defined( GL_R32F )
#define GL_R32F 0x822E // same as GL_R32F_EXT
#endif
#if !defined( GL_RG32F )
#define GL_RG32F 0x8230 // same as GL_RG32F_EXT
#endif
#if !defined( GL_RGB32F )
#define GL_RGB32F 0x8815 // same as GL_RGB32F_EXT and GL_RGB32F_ARB
#endif
#if !defined( GL_RGBA32F )
#define GL_RGBA32F 0x8814 // same as GL_RGBA32F_EXT and GL_RGBA32F_ARB
#endif
//
// Packed
//
#if !defined( GL_R3_G3_B2 )
#define GL_R3_G3_B2 0x2A10
#endif
#if !defined( GL_RGB4 )
#define GL_RGB4 0x804F // same as GL_RGB4_EXT
#endif
#if !defined( GL_RGB5 )
#define GL_RGB5 0x8050 // same as GL_RGB5_EXT
#endif
#if !defined( GL_RGB565 )
#define GL_RGB565 0x8D62 // same as GL_RGB565_EXT and GL_RGB565_OES
#endif
#if !defined( GL_RGB10 )
#define GL_RGB10 0x8052 // same as GL_RGB10_EXT
#endif
#if !defined( GL_RGB12 )
#define GL_RGB12 0x8053 // same as GL_RGB12_EXT
#endif
#if !defined( GL_RGBA2 )
#define GL_RGBA2 0x8055 // same as GL_RGBA2_EXT
#endif
#if !defined( GL_RGBA4 )
#define GL_RGBA4 0x8056 // same as GL_RGBA4_EXT and GL_RGBA4_OES
#endif
#if !defined( GL_RGBA12 )
#define GL_RGBA12 0x805A // same as GL_RGBA12_EXT
#endif
#if !defined( GL_RGB5_A1 )
#define GL_RGB5_A1 0x8057 // same as GL_RGB5_A1_EXT and GL_RGB5_A1_OES
#endif
#if !defined( GL_RGB10_A2 )
#define GL_RGB10_A2 0x8059 // same as GL_RGB10_A2_EXT
#endif
#if !defined( GL_RGB10_A2UI )
#define GL_RGB10_A2UI 0x906F
#endif
#if !defined( GL_R11F_G11F_B10F )
#define GL_R11F_G11F_B10F 0x8C3A // same as GL_R11F_G11F_B10F_APPLE and GL_R11F_G11F_B10F_EXT
#endif
#if !defined( GL_RGB9_E5 )
#define GL_RGB9_E5 0x8C3D // same as GL_RGB9_E5_APPLE and GL_RGB9_E5_EXT
#endif
#if !defined( GL_COMPRESSED_RG )
#define GL_COMPRESSED_RG 0x8226
#endif
#if !defined( GL_COMPRESSED_RGB )
#define GL_COMPRESSED_RGB 0x84ED // same as GL_COMPRESSED_RGB_ARB
#endif
#if !defined( GL_COMPRESSED_RGBA )
#define GL_COMPRESSED_RGBA 0x84EE // same as GL_COMPRESSED_RGBA_ARB
#endif
#if !defined( GL_COMPRESSED_SRGB )
#define GL_COMPRESSED_SRGB 0x8C48 // same as GL_COMPRESSED_SRGB_EXT
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA )
#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 // same as GL_COMPRESSED_SRGB_ALPHA_EXT
#endif
S3TC/DXT/BC
//
#if !defined( GL_COMPRESSED_RGB_S3TC_DXT1_EXT )
#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
#endif
#if !defined( GL_COMPRESSED_RGBA_S3TC_DXT1_EXT )
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#endif
#if !defined( GL_COMPRESSED_RGBA_S3TC_DXT3_EXT )
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#endif
#if !defined( GL_COMPRESSED_RGBA_S3TC_DXT5_EXT )
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#endif
#if !defined( GL_COMPRESSED_SRGB_S3TC_DXT1_EXT )
#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT )
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT )
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT )
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
#endif
#if !defined( GL_COMPRESSED_LUMINANCE_LATC1_EXT )
#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
#endif
#if !defined( GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT )
#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
#endif
#if !defined( GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT )
#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
#endif
#if !defined( GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT )
#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
#endif
#if !defined( GL_COMPRESSED_RED_RGTC1 )
#define GL_COMPRESSED_RED_RGTC1 0x8DBB // same as GL_COMPRESSED_RED_RGTC1_EXT
#endif
#if !defined( GL_COMPRESSED_RG_RGTC2 )
#define GL_COMPRESSED_RG_RGTC2 0x8DBD // same as GL_COMPRESSED_RG_RGTC2_EXT
#endif
#if !defined( GL_COMPRESSED_SIGNED_RED_RGTC1 )
#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC // same as GL_COMPRESSED_SIGNED_RED_RGTC1_EXT
#endif
#if !defined( GL_COMPRESSED_SIGNED_RG_RGTC2 )
#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE // same as GL_COMPRESSED_SIGNED_RG_RGTC2_EXT
#endif
#if !defined( GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT )
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E // same as GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB
#endif
#if !defined( GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT )
#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F // same as GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB
#endif
#if !defined( GL_COMPRESSED_RGBA_BPTC_UNORM )
#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C // same as GL_COMPRESSED_RGBA_BPTC_UNORM_ARB
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM )
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D // same as GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB
#endif
//
// ETC
//
#if !defined( GL_ETC1_RGB8_OES )
#define GL_ETC1_RGB8_OES 0x8D64
#endif
#if !defined( GL_COMPRESSED_RGB8_ETC2 )
#define GL_COMPRESSED_RGB8_ETC2 0x9274
#endif
#if !defined( GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 )
#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
#endif
#if !defined( GL_COMPRESSED_RGBA8_ETC2_EAC )
#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
#endif
#if !defined( GL_COMPRESSED_SRGB8_ETC2 )
#define GL_COMPRESSED_SRGB8_ETC2 0x9275
#endif
#if !defined( GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 )
#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
#endif
#if !defined( GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC )
#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
#endif
#if !defined( GL_COMPRESSED_R11_EAC )
#define GL_COMPRESSED_R11_EAC 0x9270
#endif
#if !defined( GL_COMPRESSED_RG11_EAC )
#define GL_COMPRESSED_RG11_EAC 0x9272
#endif
#if !defined( GL_COMPRESSED_SIGNED_R11_EAC )
#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
#endif
#if !defined( GL_COMPRESSED_SIGNED_RG11_EAC )
#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
#endif
//
// PVRTC
//
#if !defined( GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG )
#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
#endif
#if !defined( GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG )
#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
#endif
#if !defined( GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT )
#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
#endif
#if !defined( GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG )
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
#endif
//
// ASTC
//
#if !defined( GL_COMPRESSED_RGBA_ASTC_4x4_KHR )
#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
#endif
#if !defined( GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR )
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
#endif
#if !defined( GL_COMPRESSED_RGBA_ASTC_3x3x3_OES )
#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
#endif
#if !defined( GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES )
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
#endif
//
// ATC
//
#if !defined( GL_ATC_RGB_AMD )
#define GL_ATC_RGB_AMD 0x8C92
#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
#endif
//
// Palletized (combined palette)
//
#if !defined( GL_PALETTE4_RGB8_OES )
#define GL_PALETTE4_RGB8_OES 0x8B90
#define GL_PALETTE4_RGBA8_OES 0x8B91
#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
#define GL_PALETTE4_RGBA4_OES 0x8B93
#define GL_PALETTE4_RGB5_A1_OES 0x8B94
#define GL_PALETTE8_RGB8_OES 0x8B95
#define GL_PALETTE8_RGBA8_OES 0x8B96
#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
#define GL_PALETTE8_RGBA4_OES 0x8B98
#define GL_PALETTE8_RGB5_A1_OES 0x8B99
Depth/stencil
//
#if !defined( GL_DEPTH_COMPONENT16 )
#define GL_DEPTH_COMPONENT16 0x81A5 // same as GL_DEPTH_COMPONENT16_SGIX and GL_DEPTH_COMPONENT16_ARB
#endif
#if !defined( GL_DEPTH_COMPONENT24 )
#define GL_DEPTH_COMPONENT24 0x81A6 // same as GL_DEPTH_COMPONENT24_SGIX and GL_DEPTH_COMPONENT24_ARB
#endif
#if !defined( GL_DEPTH_COMPONENT32 )
#define GL_DEPTH_COMPONENT32 0x81A7 // same as GL_DEPTH_COMPONENT32_SGIX and GL_DEPTH_COMPONENT32_ARB and GL_DEPTH_COMPONENT32_OES
#endif
#if !defined( GL_DEPTH_COMPONENT32F )
#define GL_DEPTH_COMPONENT32F 0x8CAC // same as GL_DEPTH_COMPONENT32F_ARB
#endif
#if !defined( GL_DEPTH_COMPONENT32F_NV )
#define GL_DEPTH_COMPONENT32F_NV 0x8DAB // note that this is different from GL_DEPTH_COMPONENT32F
#endif
#if !defined( GL_STENCIL_INDEX1 )
#define GL_STENCIL_INDEX1 0x8D46 // same as GL_STENCIL_INDEX1_EXT
#endif
#if !defined( GL_STENCIL_INDEX4 )
#define GL_STENCIL_INDEX4 0x8D47 // same as GL_STENCIL_INDEX4_EXT
#endif
#if !defined( GL_STENCIL_INDEX8 )
#define GL_STENCIL_INDEX8 0x8D48 // same as GL_STENCIL_INDEX8_EXT
#endif
#if !defined( GL_STENCIL_INDEX16 )
#define GL_STENCIL_INDEX16 0x8D49 // same as GL_STENCIL_INDEX16_EXT
#endif
#if !defined( GL_DEPTH24_STENCIL8 )
#define GL_DEPTH24_STENCIL8 0x88F0 // same as GL_DEPTH24_STENCIL8_EXT and GL_DEPTH24_STENCIL8_OES
#endif
#if !defined( GL_DEPTH32F_STENCIL8 )
#define GL_DEPTH32F_STENCIL8 0x8CAD // same as GL_DEPTH32F_STENCIL8_ARB
#endif
#if !defined( GL_DEPTH32F_STENCIL8_NV )
#define GL_DEPTH32F_STENCIL8_NV 0x8DAC // note that this is different from GL_DEPTH32F_STENCIL8
]#
# How to add a currently unhandled format:
#1. echo KtxTexture.glInternalformat
#2. convert the value to hex
#3. ctrl-f the hex value for the matching GL_XXXXX
#.4. Find the original case block of the match in the C `glGetFormatSize` (bottom of file)
proc aformatSize*( format: GlFormats, pFormatSize: var GlFormatSize ) =
case format
of GL_RGBA8:
pFormatSize.flags = 0
pFormatSize.paletteSizeInBits = 0
pFormatSize.blockSizeInBits = 4 * 8
pFormatSize.blockWidth = 1
pFormatSize.blockHeight = 1
pFormatSize.blockDepth = 1
# of GL_R8 or GL_R8_SNORM or GL_R8UI or GL_R8I:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 1 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RG8 or GL_RG8_SNORM:# or GL_RG8UI:# or GL_RG8I:# or GL_SRG8:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 2 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB8 or GL_RGB8_SNORM or GL_RGB8UI or GL_RGB8I or GL_SRGB8:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 3 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_R16 or GL_R16_SNORM or GL_R16UI or GL_R16I or GL_R16F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 2 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RG16 or GL_RG16_SNORM or GL_RG16UI or GL_RG16I or GL_RG16F :
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 4 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB16 or GL_RGB16_SNORM or GL_RGB16UI or GL_RGB16I or GL_RGB16F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 6 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGBA16 or GL_RGBA16_SNORM or GL_RGBA16UI or GL_RGBA16I or GL_RGBA16F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_R32UI or GL_R32I or GL_R32F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 4 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RG32UI or GL_RG32I or GL_RG32F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB32UI or GL_RGB32I or GL_RGB32F:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 12 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGBA32UI or GL_RGBA32I or GL_RGBA32F :
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16 * 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # Packed
# of GL_R3_G3_B2: # 3-component 3:3:2, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB4: # 3-component 4:4:4, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 12
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB5: # 3-component 5:5:5, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB565: # 3-component 5:6:5, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB10: # 3-component 10:10:10, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB12: # 3-component 12:12:12, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 36
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGBA2: # 4-component 2:2:2:2, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGBA4: # 4-component 4:4:4:4, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGBA12: # 4-component 12:12:12:12, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 48
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB5_A1: # 4-component 5:5:5:1, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB10_A2: # 4-component 10:10:10:2, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_RGB10_A2UI: # 4-component 10:10:10:2, unsigned integer
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_R11F_G11F_B10F or GL_RGB9_E5:
# pFormatSize.flags = GL_FORMAT_SIZE_PACKED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RGB_S3TC_DXT1_EXT or GL_COMPRESSED_RGBA_S3TC_DXT1_EXT or GL_COMPRESSED_SRGB_S3TC_DXT1_EXT or GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RGBA_S3TC_DXT5_EXT or GL_COMPRESSED_RGBA_S3TC_DXT3_EXT or GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT or GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_LUMINANCE_LATC1_EXT or GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT or GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RED_RGTC1 or GL_COMPRESSED_SIGNED_RED_RGTC1:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RG_RGTC2 or GL_COMPRESSED_SIGNED_RG_RGTC2:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT or GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT or GL_COMPRESSED_RGBA_BPTC_UNORM or GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_ETC1_RGB8_OES or GL_COMPRESSED_RGB8_ETC2 or GL_COMPRESSED_SRGB8_ETC2 or GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 or GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RGBA8_ETC2_EAC or GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_R11_EAC or GL_COMPRESSED_SIGNED_R11_EAC:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# of GL_COMPRESSED_RG11_EAC or GL_COMPRESSED_SIGNED_RG11_EAC:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # PVRTC
# # 3-component PVRTC, 16x8 blocks, unsigned normalized
# # 3-component PVRTC, 16x8 blocks, sRGB
# # 4-component PVRTC, 16x8 blocks, unsigned normalized
# # 4-component PVRTC, 16x8 blocks, sRGB
# of GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG or GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT or GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG or GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 16
# pFormatSize.blockHeight = 8
# pFormatSize.blockDepth = 1
# # 3-component PVRTC, 8x8 blocks, unsigned normalized
# # 3-component PVRTC, 8x8 blocks, sRGB
# # 4-component PVRTC, 8x8 blocks, unsigned normalized
# # 4-component PVRTC, 8x8 blocks, sRGB
# of GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG or GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT or GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG or GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 8
# pFormatSize.blockHeight = 8
# pFormatSize.blockDepth = 1
# # 4-component PVRTC, 8x4 blocks, unsigned normalized
# # 4-component PVRTC, 8x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG or GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 8
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # 4-component PVRTC, 4x4 blocks, unsigned normalized
# # 4-component PVRTC, 4x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG or GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # ASTC
# # 4-component ASTC, 4x4 blocks, unsigned normalized
# # 4-component ASTC, 4x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_4x4_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 5x4 blocks, unsigned normalized
# # 4-component ASTC, 5x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_5x4_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 5
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 5x5 blocks, unsigned normalized
# # 4-component ASTC, 5x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_5x5_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 5
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 6x5 blocks, unsigned normalized
# # 4-component ASTC, 6x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_6x5_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 6
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 6x6 blocks, unsigned normalized
# # 4-component ASTC, 6x6 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_6x6_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 6
# pFormatSize.blockHeight = 6
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 8x5 blocks, unsigned normalized
# # 4-component ASTC, 8x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_8x5_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 8
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 8x6 blocks, unsigned normalized
# # 4-component ASTC, 8x6 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_8x6_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 8
# pFormatSize.blockHeight = 6
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 8x8 blocks, unsigned normalized
# # 4-component ASTC, 8x8 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_8x8_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 8
# pFormatSize.blockHeight = 8
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 10x5 blocks, unsigned normalized
# # 4-component ASTC, 10x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_10x5_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 10
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 10x6 blocks, unsigned normalized
# # 4-component ASTC, 10x6 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_10x6_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 10
# pFormatSize.blockHeight = 6
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 10x8 blocks, unsigned normalized
# # 4-component ASTC, 10x8 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_10x8_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 10
# pFormatSize.blockHeight = 8
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 10x10 blocks, unsigned normalized
# # 4-component ASTC, 10x10 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_10x10_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 10
# pFormatSize.blockHeight = 10
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 12x10 blocks, unsigned normalized
# # 4-component ASTC, 12x10 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_12x10_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 12
# pFormatSize.blockHeight = 10
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 12x12 blocks, unsigned normalized
# # 4-component ASTC, 12x12 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_12x12_KHR or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 12
# pFormatSize.blockHeight = 12
# pFormatSize.blockDepth = 1
# # 4-component ASTC, 3x3x3 blocks, unsigned normalized
# # 4-component ASTC, 3x3x3 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_3x3x3_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 3
# pFormatSize.blockHeight = 3
# pFormatSize.blockDepth = 3
# # 4-component ASTC, 4x3x3 blocks, unsigned normalized
# # 4-component ASTC, 4x3x3 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_4x3x3_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 3
# pFormatSize.blockDepth = 3
# # 4-component ASTC, 4x4x3 blocks, unsigned normalized
# # 4-component ASTC, 4x4x3 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_4x4x3_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 3
# # 4-component ASTC, 4x4x4 blocks, unsigned normalized
# # 4-component ASTC, 4x4x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_4x4x4_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 4
# # 4-component ASTC, 5x4x4 blocks, unsigned normalized
# # 4-component ASTC, 5x4x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_5x4x4_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 5
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 4
# # 4-component ASTC, 5x5x4 blocks, unsigned normalized
# # 4-component ASTC, 5x5x4 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_5x5x4_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 5
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 4
# # 4-component ASTC, 5x5x5 blocks, unsigned normalized
# # 4-component ASTC, 5x5x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_5x5x5_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 5
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 5
# # 4-component ASTC, 6x5x5 blocks, unsigned normalized
# # 4-component ASTC, 6x5x5 blocks, sRGB:
# of GL_COMPRESSED_RGBA_ASTC_6x5x5_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 6
# pFormatSize.blockHeight = 5
# pFormatSize.blockDepth = 5
# # 4-component ASTC, 6x6x5 blocks, unsigned normalized
# # 4-component ASTC, 6x6x5 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_6x6x5_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 6
# pFormatSize.blockHeight = 6
# pFormatSize.blockDepth = 5
# # 4-component ASTC, 6x6x6 blocks, unsigned normalized
# # 4-component ASTC, 6x6x6 blocks, sRGB
# of GL_COMPRESSED_RGBA_ASTC_6x6x6_OES or GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES :
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 6
# pFormatSize.blockHeight = 6
# pFormatSize.blockDepth = 6
# # ATC
# of GL_ATC_RGB_AMD: # 3-component, 4x4 blocks, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # 4-component, 4x4 blocks, unsigned normalized
# # 4-component, 4x4 blocks, unsigned normalized
# of GL_ATC_RGBA_EXPLICIT_ALPHA_AMD or GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
# pFormatSize.flags = GL_FORMAT_SIZE_COMPRESSED_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 128
# pFormatSize.blockWidth = 4
# pFormatSize.blockHeight = 4
# pFormatSize.blockDepth = 1
# # Palletized
# of GL_PALETTE4_RGB8_OES: # 3-component 8:8:8, 4-bit palette, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 16 * 24
# pFormatSize.blockSizeInBits = 4
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_PALETTE4_RGBA8_OES: # 4-component 8:8:8:8, 4-bit palette, unsigned normalized
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 16 * 32
# pFormatSize.blockSizeInBits = 4
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # 3-component 5:6:5, 4-bit palette, unsigned normalized
# # 4-component 4:4:4:4, 4-bit palette, unsigned normalized
# # 4-component 5:5:5:1, 4-bit palette, unsigned normalized
# of GL_PALETTE4_R5_G6_B5_OES or GL_PALETTE4_RGBA4_OES or GL_PALETTE4_RGB5_A1_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 16 * 16
# pFormatSize.blockSizeInBits = 4
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # 3-component 8:8:8, 8-bit palette, unsigned normalized
# of GL_PALETTE8_RGB8_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 256 * 24
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # 4-component 8:8:8:8, 8-bit palette, unsigned normalized
# of GL_PALETTE8_RGBA8_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 256 * 32
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # 3-component 5:6:5, 8-bit palette, unsigned normalized
# # 4-component 4:4:4:4, 8-bit palette, unsigned normalized
# # 4-component 5:5:5:1, 8-bit palette, unsigned normalized
# of GL_PALETTE8_R5_G6_B5_OES or GL_PALETTE8_RGBA4_OES or GL_PALETTE8_RGB5_A1_OES:
# pFormatSize.flags = GL_FORMAT_SIZE_PALETTIZED_BIT
# pFormatSize.paletteSizeInBits = 256 * 16
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# # Depth/stencil
# of GL_DEPTH_COMPONENT16:
# pFormatSize.flags = GL_FORMAT_SIZE_DEPTH_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_DEPTH_COMPONENT24 or GL_DEPTH_COMPONENT32 or GL_DEPTH_COMPONENT32F or GL_DEPTH_COMPONENT32F_NV:
# pFormatSize.flags = GL_FORMAT_SIZE_DEPTH_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_STENCIL_INDEX1:
# pFormatSize.flags = GL_FORMAT_SIZE_STENCIL_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 1
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_STENCIL_INDEX4:
# pFormatSize.flags = GL_FORMAT_SIZE_STENCIL_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 4
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_STENCIL_INDEX8:
# pFormatSize.flags = GL_FORMAT_SIZE_STENCIL_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_STENCIL_INDEX16:
# pFormatSize.flags = GL_FORMAT_SIZE_STENCIL_BIT
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 16
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_DEPTH24_STENCIL8:
# pFormatSize.flags = bitor(GL_FORMAT_SIZE_DEPTH_BIT, GL_FORMAT_SIZE_STENCIL_BIT)
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 32
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# of GL_DEPTH32F_STENCIL8 or GL_DEPTH32F_STENCIL8_NV:
# pFormatSize.flags = bitor(GL_FORMAT_SIZE_DEPTH_BIT, GL_FORMAT_SIZE_STENCIL_BIT)
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 64
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# else:
# pFormatSize.flags = 0
# pFormatSize.paletteSizeInBits = 0
# pFormatSize.blockSizeInBits = 8
# pFormatSize.blockWidth = 1
# pFormatSize.blockHeight = 1
# pFormatSize.blockDepth = 1
# until we know for """sure""" the glGetFormatSize port is correct
#[
static inline void glGetFormatSize( const GLenum internalFormat, GlFormatSize * pFormatSize )
{
switch ( internalFormat )
{
//
// 8 bits per component
//
case GL_R8: // 1-component, 8-bit unsigned normalized
case GL_R8_SNORM: // 1-component, 8-bit signed normalized
case GL_R8UI: // 1-component, 8-bit unsigned integer
case GL_R8I: // 1-component, 8-bit signed integer
case GL_SR8: // 1-component, 8-bit sRGB
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 1 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RG8: // 2-component, 8-bit unsigned normalized
case GL_RG8_SNORM: // 2-component, 8-bit signed normalized
case GL_RG8UI: // 2-component, 8-bit unsigned integer
case GL_RG8I: // 2-component, 8-bit signed integer
case GL_SRG8: // 2-component, 8-bit sRGB
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 2 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB8: // 3-component, 8-bit unsigned normalized
case GL_RGB8_SNORM: // 3-component, 8-bit signed normalized
case GL_RGB8UI: // 3-component, 8-bit unsigned integer
case GL_RGB8I: // 3-component, 8-bit signed integer
case GL_SRGB8: // 3-component, 8-bit sRGB
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 3 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA8: // 4-component, 8-bit unsigned normalized
case GL_RGBA8_SNORM: // 4-component, 8-bit signed normalized
case GL_RGBA8UI: // 4-component, 8-bit unsigned integer
case GL_RGBA8I: // 4-component, 8-bit signed integer
case GL_SRGB8_ALPHA8: // 4-component, 8-bit sRGB
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 4 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
//
// 16 bits per component
//
case GL_R16: // 1-component, 16-bit unsigned normalized
case GL_R16_SNORM: // 1-component, 16-bit signed normalized
case GL_R16UI: // 1-component, 16-bit unsigned integer
case GL_R16I: // 1-component, 16-bit signed integer
case GL_R16F: // 1-component, 16-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 2 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RG16: // 2-component, 16-bit unsigned normalized
case GL_RG16_SNORM: // 2-component, 16-bit signed normalized
case GL_RG16UI: // 2-component, 16-bit unsigned integer
case GL_RG16I: // 2-component, 16-bit signed integer
case GL_RG16F: // 2-component, 16-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 4 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB16: // 3-component, 16-bit unsigned normalized
case GL_RGB16_SNORM: // 3-component, 16-bit signed normalized
case GL_RGB16UI: // 3-component, 16-bit unsigned integer
case GL_RGB16I: // 3-component, 16-bit signed integer
case GL_RGB16F: // 3-component, 16-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 6 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA16: // 4-component, 16-bit unsigned normalized
case GL_RGBA16_SNORM: // 4-component, 16-bit signed normalized
case GL_RGBA16UI: // 4-component, 16-bit unsigned integer
case GL_RGBA16I: // 4-component, 16-bit signed integer
case GL_RGBA16F: // 4-component, 16-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
//
// 32 bits per component
//
case GL_R32UI: // 1-component, 32-bit unsigned integer
case GL_R32I: // 1-component, 32-bit signed integer
case GL_R32F: // 1-component, 32-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 4 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RG32UI: // 2-component, 32-bit unsigned integer
case GL_RG32I: // 2-component, 32-bit signed integer
case GL_RG32F: // 2-component, 32-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB32UI: // 3-component, 32-bit unsigned integer
case GL_RGB32I: // 3-component, 32-bit signed integer
case GL_RGB32F: // 3-component, 32-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 12 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA32UI: // 4-component, 32-bit unsigned integer
case GL_RGBA32I: // 4-component, 32-bit signed integer
case GL_RGBA32F: // 4-component, 32-bit floating-point
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16 * 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
//
// Packed
//
case GL_R3_G3_B2: // 3-component 3:3:2, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB4: // 3-component 4:4:4, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 12;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB5: // 3-component 5:5:5, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB565: // 3-component 5:6:5, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB10: // 3-component 10:10:10, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB12: // 3-component 12:12:12, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 36;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA2: // 4-component 2:2:2:2, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA4: // 4-component 4:4:4:4, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGBA12: // 4-component 12:12:12:12, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 48;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB5_A1: // 4-component 5:5:5:1, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB10_A2: // 4-component 10:10:10:2, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_RGB10_A2UI: // 4-component 10:10:10:2, unsigned integer
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_R11F_G11F_B10F: // 3-component 11:11:10, floating-point
case GL_RGB9_E5: // 3-component/exp 9:9:9/5, floating-point
pFormatSize->flags = GL_FORMAT_SIZE_PACKED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
//
// S3TC/DXT/BC
//
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // line through 3D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: // line through 3D space plus 1-bit alpha, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: // line through 3D space, 4x4 blocks, sRGB
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: // line through 3D space plus 1-bit alpha, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: // line through 3D space plus line through 1D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: // line through 3D space plus 4-bit alpha, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: // line through 3D space plus line through 1D space, 4x4 blocks, sRGB
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: // line through 3D space plus 4-bit alpha, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_LUMINANCE_LATC1_EXT: // line through 1D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: // line through 1D space, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: // two lines through 1D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: // two lines through 1D space, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RED_RGTC1: // line through 1D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_RED_RGTC1: // line through 1D space, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RG_RGTC2: // two lines through 1D space, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_RG_RGTC2: // two lines through 1D space, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: // 3-component, 4x4 blocks, unsigned floating-point
case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: // 3-component, 4x4 blocks, signed floating-point
case GL_COMPRESSED_RGBA_BPTC_UNORM: // 4-component, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: // 4-component, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
//
// ETC
//
case GL_ETC1_RGB8_OES: // 3-component ETC1, 4x4 blocks, unsigned normalized" ),
case GL_COMPRESSED_RGB8_ETC2: // 3-component ETC2, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ETC2: // 3-component ETC2, 4x4 blocks, sRGB
case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: // 4-component ETC2 with 1-bit alpha, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: // 4-component ETC2 with 1-bit alpha, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA8_ETC2_EAC: // 4-component ETC2, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: // 4-component ETC2, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_R11_EAC: // 1-component ETC, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_R11_EAC: // 1-component ETC, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RG11_EAC: // 2-component ETC, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SIGNED_RG11_EAC: // 2-component ETC, 4x4 blocks, signed normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
//
// PVRTC
//
case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG: // 3-component PVRTC, 16x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT: // 3-component PVRTC, 16x8 blocks, sRGB
case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: // 4-component PVRTC, 16x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT: // 4-component PVRTC, 16x8 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 16;
pFormatSize->blockHeight = 8;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: // 3-component PVRTC, 8x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT: // 3-component PVRTC, 8x8 blocks, sRGB
case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: // 4-component PVRTC, 8x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT: // 4-component PVRTC, 8x8 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 8;
pFormatSize->blockHeight = 8;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG: // 4-component PVRTC, 8x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG: // 4-component PVRTC, 8x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 8;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG: // 4-component PVRTC, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG: // 4-component PVRTC, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
//
// ASTC
//
case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: // 4-component ASTC, 4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: // 4-component ASTC, 4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: // 4-component ASTC, 5x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: // 4-component ASTC, 5x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 5;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: // 4-component ASTC, 5x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: // 4-component ASTC, 5x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 5;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_6x5_KHR: // 4-component ASTC, 6x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: // 4-component ASTC, 6x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 6;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_6x6_KHR: // 4-component ASTC, 6x6 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: // 4-component ASTC, 6x6 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 6;
pFormatSize->blockHeight = 6;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_8x5_KHR: // 4-component ASTC, 8x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: // 4-component ASTC, 8x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 8;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_8x6_KHR: // 4-component ASTC, 8x6 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: // 4-component ASTC, 8x6 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 8;
pFormatSize->blockHeight = 6;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_8x8_KHR: // 4-component ASTC, 8x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: // 4-component ASTC, 8x8 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 8;
pFormatSize->blockHeight = 8;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_10x5_KHR: // 4-component ASTC, 10x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: // 4-component ASTC, 10x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 10;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_10x6_KHR: // 4-component ASTC, 10x6 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: // 4-component ASTC, 10x6 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 10;
pFormatSize->blockHeight = 6;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_10x8_KHR: // 4-component ASTC, 10x8 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: // 4-component ASTC, 10x8 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 10;
pFormatSize->blockHeight = 8;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_10x10_KHR: // 4-component ASTC, 10x10 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: // 4-component ASTC, 10x10 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 10;
pFormatSize->blockHeight = 10;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_12x10_KHR: // 4-component ASTC, 12x10 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: // 4-component ASTC, 12x10 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 12;
pFormatSize->blockHeight = 10;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_12x12_KHR: // 4-component ASTC, 12x12 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: // 4-component ASTC, 12x12 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 12;
pFormatSize->blockHeight = 12;
pFormatSize->blockDepth = 1;
break;
case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES: // 4-component ASTC, 3x3x3 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES: // 4-component ASTC, 3x3x3 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 3;
pFormatSize->blockHeight = 3;
pFormatSize->blockDepth = 3;
break;
case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES: // 4-component ASTC, 4x3x3 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES: // 4-component ASTC, 4x3x3 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 3;
pFormatSize->blockDepth = 3;
break;
case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES: // 4-component ASTC, 4x4x3 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES: // 4-component ASTC, 4x4x3 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 3;
break;
case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES: // 4-component ASTC, 4x4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES: // 4-component ASTC, 4x4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 4;
break;
case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES: // 4-component ASTC, 5x4x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES: // 4-component ASTC, 5x4x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 5;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 4;
break;
case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES: // 4-component ASTC, 5x5x4 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES: // 4-component ASTC, 5x5x4 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 5;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 4;
break;
case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES: // 4-component ASTC, 5x5x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES: // 4-component ASTC, 5x5x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 5;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 5;
break;
case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES: // 4-component ASTC, 6x5x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES: // 4-component ASTC, 6x5x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 6;
pFormatSize->blockHeight = 5;
pFormatSize->blockDepth = 5;
break;
case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES: // 4-component ASTC, 6x6x5 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES: // 4-component ASTC, 6x6x5 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 6;
pFormatSize->blockHeight = 6;
pFormatSize->blockDepth = 5;
break;
case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES: // 4-component ASTC, 6x6x6 blocks, unsigned normalized
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES: // 4-component ASTC, 6x6x6 blocks, sRGB
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 6;
pFormatSize->blockHeight = 6;
pFormatSize->blockDepth = 6;
break;
//
// ATC
//
case GL_ATC_RGB_AMD: // 3-component, 4x4 blocks, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD: // 4-component, 4x4 blocks, unsigned normalized
case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD: // 4-component, 4x4 blocks, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_COMPRESSED_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 128;
pFormatSize->blockWidth = 4;
pFormatSize->blockHeight = 4;
pFormatSize->blockDepth = 1;
break;
//
// Palletized
//
case GL_PALETTE4_RGB8_OES: // 3-component 8:8:8, 4-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 16 * 24;
pFormatSize->blockSizeInBits = 4;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_PALETTE4_RGBA8_OES: // 4-component 8:8:8:8, 4-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 16 * 32;
pFormatSize->blockSizeInBits = 4;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_PALETTE4_R5_G6_B5_OES: // 3-component 5:6:5, 4-bit palette, unsigned normalized
case GL_PALETTE4_RGBA4_OES: // 4-component 4:4:4:4, 4-bit palette, unsigned normalized
case GL_PALETTE4_RGB5_A1_OES: // 4-component 5:5:5:1, 4-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 16 * 16;
pFormatSize->blockSizeInBits = 4;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_PALETTE8_RGB8_OES: // 3-component 8:8:8, 8-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 256 * 24;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_PALETTE8_RGBA8_OES: // 4-component 8:8:8:8, 8-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 256 * 32;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_PALETTE8_R5_G6_B5_OES: // 3-component 5:6:5, 8-bit palette, unsigned normalized
case GL_PALETTE8_RGBA4_OES: // 4-component 4:4:4:4, 8-bit palette, unsigned normalized
case GL_PALETTE8_RGB5_A1_OES: // 4-component 5:5:5:1, 8-bit palette, unsigned normalized
pFormatSize->flags = GL_FORMAT_SIZE_PALETTIZED_BIT;
pFormatSize->paletteSizeInBits = 256 * 16;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
//
// Depth/stencil
//
case GL_DEPTH_COMPONENT16:
pFormatSize->flags = GL_FORMAT_SIZE_DEPTH_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32:
case GL_DEPTH_COMPONENT32F:
case GL_DEPTH_COMPONENT32F_NV:
pFormatSize->flags = GL_FORMAT_SIZE_DEPTH_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_STENCIL_INDEX1:
pFormatSize->flags = GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 1;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_STENCIL_INDEX4:
pFormatSize->flags = GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 4;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_STENCIL_INDEX8:
pFormatSize->flags = GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_STENCIL_INDEX16:
pFormatSize->flags = GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 16;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_DEPTH24_STENCIL8:
pFormatSize->flags = GL_FORMAT_SIZE_DEPTH_BIT | GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 32;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
case GL_DEPTH32F_STENCIL8:
case GL_DEPTH32F_STENCIL8_NV:
pFormatSize->flags = GL_FORMAT_SIZE_DEPTH_BIT | GL_FORMAT_SIZE_STENCIL_BIT;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 64;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
default:
pFormatSize->flags = 0;
pFormatSize->paletteSizeInBits = 0;
pFormatSize->blockSizeInBits = 8;
pFormatSize->blockWidth = 1;
pFormatSize->blockHeight = 1;
pFormatSize->blockDepth = 1;
break;
}
}
#endif // !GL_FORMAT_H
]#
import ../portal/[keyboard,mouse]
type
Bind[T] = object
case hasBind*: bool
of true: value: T
else: nil
ActionBindObj = object of RootObj
bind0*: Bind[T]
action*: proc()
#gamepad0
ActionBind* = ref object of ActionBindObj
proc the*[T](value: T): Bind[T] = Bind[T](hasBind: true, value: value)
proc setBind*[T]( b: Bind[T]
, value: T
) =
if value != nil: b.value = value
else:
b.value = nil
b.hasBind = false
proc emptyBind*[T]: Bind[T] = Bind[T](hasBind: false)
{.deadCodeElim: on.}
import ../vk/vulkan
type
TextureObj* = object of RootObj
image*: VkImage
imageLayout*: VkImageLayout
deviceMemory*: VkDeviceMemory
view*: VkImageView
width*: uint32
height*: uint32
mipLevels*: uint32
layerCount*: uint32
descriptor*: VkDescriptorImageInfo
sampler*: VkSampler
Texture* = ref object of TextureObj
Texture2D* = ref object of Texture
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
import re
, sequtils
, strutils
, textTypes
, ../vk/vkTypes
# proc aFont*(rec: var VKRec, path: string, size: int): Font =
# var
# face: FT_Face
# # ta = rec.aTextureAtlas(512, 512)
# discard FT_New_Face(rec.library, path, 0, face )
# discard FT_Set_Pixel_Sizes(face, 0, FT_UInt size)
# #result.ta = ta
# result
# proc ftLoad =
# #add some check for enabling text or not instead of always inculding it?
# discard FT_Init_FreeType rec.library
proc aPBMFont*(path: string = "/run/media/j/ZZZ/Dev/shapes/data/fonts/arialBlackStd.fnt"): PBMFont =
result = PBMFont()
var isNum = re"(\-|)\d+"
for line in lines path:
var nums: seq[int] = @[]
if line[0..5] == "char i":
# will return a @[0..9] length seq
# id, x, y, width, height, xoffset, yoffset, xadvance, page, chnl
# what's chnl for exactly?
nums = line.findAll(isNum).map parseInt
result.chars[nums[0]] = Bmchar( x: nums[1].uint32
, y: nums[2].uint32
, width: nums[3].uint32
, height: nums[4].uint32
, xoffset: nums[5].int32
, yoffset: nums[6].int32
, xadvance: nums[7].int32
, page: nums[8].uint32
)
nums = @[]
#[ {.experimental: "codeReordering".}
{.deadCodeElim: on.}
import glm
, ../camera
, tables
, freetype/[ freetype
, fttypes
]
, ../vk/[ vulkan
, buffer
, vulkan_utils
, vkTypes
, vulkan_record
, graphics_pipeline
]
, bitops
, ../drawable/texture
, ../utils/lets
type
# Area = ref object
# x: int
# y: int
# width: int
# height: int
Bmchar* = object
x*: uint32
y*: uint32
width*: uint32
height*: uint32
xoffset*: int32
yoffset*: int32
xadvance*: int32
page*: uint32
#chl ??
TextVert* = object
pos*: Vec3[float32]
uv*: Vec2[float32]
#color*: Vec4[float]
#texCoord*: Vec2[float]
#blendMode*: int32
#data*: array[4, int32]
TextUboFS* = ref object
outlineColor*: Vec4[float32]
outlineWidth*: float
outline*: bool
TextPipelines* = ref object
sdf*: VkPipeline
bitmap*: VkPipeline
Glyph* = object
top*: int
left*: int
width*: int
height*: int
adv*: int
texture*: Texture2d
face*: FT_Face
ind*: FT_Uint
PBMFont* = object
chars*: array[255,Bmchar]
face*: FT_Face
glyphs*: Table[uint16, Glyph]
VertDescr* = ref object of VertDescrObj
VertDescrObj* = object of RootObj
inputState*: VkPipelineVertexInputStateCreateInfo
bindingDescriptions*: seq[VkVertexInputBindingDescription]
attributeDescriptions*: seq[VkVertexInputAttributeDescription]
UBOVS* = object
proj*: Mat4[float32]
model*: Mat4[float32]
view*: Mat4[float32] # ?
UBOFS* = object
outlineColor*: Vec4[float32]
outlineWidth*: float32
outlined*: float32
UBOS* = ref object of UBOSObj
UBOSObj* = object of RootObj
vs*: UBOVS
fs*: UBOFS
SDFTextObj = object of RootObj
camera*: Camera
descrSet*: VkDescriptorSet
descrSetLayout*: VkDescriptorSetLayout
id*: int
indices*: seq[uint32]
indexCount*: uint32
indexedAmount*: uint32
indexBuffer*: Buffer
vertexBuffer*: Buffer
uniBufferV*: Buffer
uniBufferF*: Buffer
font*: PBMFont
name*: string
pipelineCache*: VkPipelineCache
graphicsPipeline*: Graphics_Pipeline
stVertexBuffer*: Buffer
stIndexBuffer*: Buffer
texture*: Texture2D
ubos*: UBOs
descrPool*: VkDescriptorPool
changed*: bool
strChanged*: bool
str*: string
camera_type*: Camera_Kind
device*: ptr VkDevice
size*: float32
vertices*: seq[TextVert]
theVkRec*: ptr Vulkan_Record
SDFText* = ref object of SDFTextObj
TextureWindow* = object
x0*: float
y0*: float
x1*: float
y1*: float
TextureAtlas* = ref object of TextureAtlasObj
TextureAtlasObj = object of RootObj
width*: uint32
height*: uint32
sampler*: VkSampler
descPool*: VkDescriptorPool
descrSet*: VkDescriptorSet
descrSetLayout*: VkDescriptorSetLayout
imageView*: VkImageView
boundImage*: BoundImage
glyphs*: Table[uint16, Glyph]
proc aGlyph*(font: PBMFont, glyphs: var Table[uint16, Glyph], key: uint16): Glyph =
if glyphs.hasKey(key): return glyphs[key]
else:
var
gind = FT_Get_Char_Index(font.face, key)
#auto glyph = std::make_shared<Glyph>(m_face, glyphIndex, m_textureAtlas);
g = Glyph(face: font.face, ind: gind)
glyphs[key] = g
return g
proc transitionImageLayout( rec: var Vulkan_Record
, image: VkImage
, oldLayout: VkImageLayout
, newLayout: VkImageLayout) =
var
sourceStage: VkPipelineStageFlags = VkPipelineStageFlags VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
destinationStage: VkPipelineStageFlags = VkPipelineStageFlags VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
cmdBuffer: VkCommandBuffer = beginSingleTimeCommands( rec.vk_device
, rec.command_pool
)
barrier = VkImageMemoryBarrier( sType: VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
, oldLayout: oldLayout
, newLayout: newLayout
, srcQueueFamilyIndex: VK_QUEUE_FAMILY_IGNORED
, dstQueueFamilyIndex: VK_QUEUE_FAMILY_IGNORED
, image: image
, subresourceRange: VkImageSubresourceRange( aspectMask: VkImageAspectFlags VK_IMAGE_ASPECT_COLOR_BIT
, baseMipLevel: 0
, levelCount: 1
, baseArrayLayer: 0
, layerCount: 1
)
)
case oldLayout:
of VK_IMAGE_LAYOUT_UNDEFINED: barrier.srcAccessMask = VkAccessFlags 0
of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
barrier.srcAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_WRITE_BIT
sourceStage = VkPipelineStageFlags VK_PIPELINE_STAGE_TRANSFER_BIT
of VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
barrier.srcAccessMask = VkAccessFlags VK_ACCESS_SHADER_READ_BIT
sourceStage = VkPipelineStageFlags VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
else: quit("unsupported image transition12")
case newLayout:
of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
barrier.dstAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_WRITE_BIT
destinationStage = VkPipelineStageFlags VK_PIPELINE_STAGE_TRANSFER_BIT
of VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
barrier.srcAccessMask = VkAccessFlags VK_ACCESS_TRANSFER_WRITE_BIT
barrier.dstAccessMask = VkAccessFlags VK_ACCESS_SHADER_READ_BIT
destinationStage = VkPipelineStageFlags VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
else: quit("unsupported image transition13")
vkCmdPipelineBarrier(cmdBuffer, sourceStage, destinationStage, VkDependencyFlags 0, uint32 0, nil, uint32 0, nil, uint32 1, addr barrier )
endSingleTimeCommands( rec.vk_device
, cmdBuffer
, rec.graphics_queue
, rec.command_pool
)
proc createTextureDescrSet*( rec: Vulkan_Record
, ta: var TextureAtlas
): VkDescriptorSet =
var
descriptorSet: VkDescriptorSet
allocInfo = VkDescriptorSetAllocateInfo( sType: VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
, descriptorPool: ta.descPool
, descriptorSetCount: 1
, pSetLayouts: addr ta.descrSetLayout
)
discard vkAllocateDescriptorSets( rec.vk_device
, addr allocInfo
, addr descriptorSet
)
var
imageInfo = VkDescriptorImageInfo( imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, imageView: ta.imageView
, sampler: ta.sampler
)
descriptorWrites = VkWriteDescriptorSet( sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
, dstSet: descriptorSet
, dstBinding: 0
, dstArrayElement: 0
, descriptorType: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, descriptorCount: 1
, pImageInfo: addr imageInfo
)
vkUpdateDescriptorSets( rec.vk_device
, u321
, addr descriptorWrites
, u320
, nil
)
result
proc aTextureAtlas*( rec: var Vulkan_Record
, width, height: uint32
, format = VK_FORMAT_R8G8B8A8_UNORM
): TextureAtlas =
result.width = width
result.height = height
result.boundImage = createImage( rec.vk_device
, rec.gpu.memory_properties
, result.width
, result.height
, format
, VK_IMAGE_TILING_OPTIMAL
, VkImageUsageFlags bitor( VK_IMAGE_USAGE_TRANSFER_DST_BIT.ord
, VK_IMAGE_USAGE_SAMPLED_BIT.ord
)
, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT.ord
)
rec.transitionImageLayout( result.boundImage.image
, VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
)
rec.transitionImageLayout( result.boundImage.image
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
)
result.imageView = rec.vk_device.createImageView(result.boundImage.image, format)
result.sampler = rec.vk_device.createSampler
result.descrSet = rec.createTextureDescrSet result
]#
#[ #{.experimental: "codeReordering".}
{.deadCodeElim: on.}
import textUtils
, glm
, textTypes
, bitops
, ../scenes/[ scene_object
]
, ../vk/[ vulkan_utils
, vkTypes
, buffer
, vulkan_record
, graphics_pipeline
]
, ../vk/vulkan
, ../ktx/ktxutils
, ../camera
, ../drawable/texture
, ../utils/lets
import ../vk/vkm/vkmat as vkm
# TODO: caching
#[ proc genVertBuffers*( rec: var Vulkan_Record
, text: var SDFText
, str: string
) =
var
indexOffset: uint32
indices: array[6, uint32] = [0.uint32,1,2, 2,3,0 ]
w: float32 = text.texture.width.float32
posX = 0.0
posY = 0.0
data: pointer
for c in str:
var ci: Bmchar = text.font.chars[int(c)]
if ci.width == 0: ci.width = 36
var
charw: float32 = ci.width.float32 / 36.0f
dimx: float32 = 1.0f * charw
charh: float32 = ci.height.float32 / 36.0f
dimy: float32 = 1.0f * charh
us: float32 = ci.x.float32 / w
ue: float32 = (ci.x + ci.width).float32 / w
ts: float32 = ci.y.float32 / w
te: float32 = (ci.y + ci.height).float32 / w
xo: float32 = ci.xoffset.float32 / 36.0f
yo: float32 = ci.yoffset.float32 / 36.0f
posy = yo
text.vertices.add TextVert( pos: vec3f(posx + dimx + xo, posy + dimy, 0.0f)
, uv: vec2(ue, te)
)
text.vertices.add TextVert( pos: vec3f(posx + xo, posy + dimy, 0.0f)
, uv: vec2(us, te)
)
text.vertices.add TextVert( pos: vec3f(posx + xo, posy, 0.0f)
, uv: vec2(us, ts)
)
text.vertices.add TextVert( pos: vec3f(posx + dimx + xo, posy, 0.0f)
, uv: vec2(ue, ts)
)
for i in indices:
text.indices.add indexOffset + i
indexOffset += 4
var adv: float32 = ci.xadvance.float32 / 36.0
posx += adv
text.indexCount = text.indices.len.uint32
# centering?
for v in text.vertices.mitems:
v.pos.x -= (posx / 2.0).float32
v.pos.y -= 0.5.float32
var
indSize = VkDeviceSize text.indices.len * uint32.sizeof
vertSize = VkDeviceSize text.vertices.len.uint32 * TextVert.sizeof.uint32
copyCmd: VkCommandBuffer = rec.vk_device.getCommandBuffers(rec.command_pool, true)
copyRegion: VkBufferCopy
text.stVertexBuffer = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags VK_BUFFER_USAGE_TRANSFER_SRC_BIT
, VkMemoryPropertyFlags bitor( VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord
, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT.ord
)
, vertSize
)
text.vertexBuffer = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags bitor( VK_BUFFER_USAGE_VERTEX_BUFFER_BIT.ord
, VK_BUFFER_USAGE_TRANSFER_DST_BIT.ord
)
, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
, vertSize
)
rec.vk_device.map_memory( text.stVertexBuffer.memory
, data
)
copyMem(data, addr text.vertices[0], Natural vertSize)
vkUnmapMemory( rec.vk_device, text.stVertexBuffer.memory)
discard vkBindBufferMemory( rec.vk_device, text.stVertexBuffer.vkbuffer, text.stVertexBuffer.memory, VkDeviceSize 0)
discard vkBindBufferMemory( rec.vk_device, text.vertexBuffer.vkbuffer, text.vertexBuffer.memory, VkDeviceSize 0)
text.stIndexBuffer = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags VK_BUFFER_USAGE_TRANSFER_SRC_BIT
, VkMemoryPropertyFlags bitor( VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord
, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT.ord
)
, indSize
)
text.indexBuffer = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags bitor(VK_BUFFER_USAGE_INDEX_BUFFER_BIT.ord, VK_BUFFER_USAGE_TRANSFER_DST_BIT.ord)
, VkMemoryPropertyFlags VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
, indSize
)
rec.vk_device.map_memory( text.stIndexBuffer.memory
, data
)
copyMem(data, addr text.indices[0], Natural indSize)
vkUnmapMemory( rec.vk_device, text.stIndexBuffer.memory)
discard vkBindBufferMemory( rec.vk_device, text.stIndexBuffer.vkbuffer, text.stIndexBuffer.memory, VkDeviceSize 0)
discard vkBindBufferMemory( rec.vk_device, text.indexBuffer.vkbuffer, text.indexBuffer.memory, VkDeviceSize 0)
copyRegion.size = vertSize
vkCmdCopyBuffer(copyCmd
, text.stVertexBuffer.vkbuffer
, text.vertexBuffer.vkbuffer
, 1.uint32
, addr copyRegion
)
copyRegion.size = indSize
vkCmdCopyBuffer( copyCmd
, text.stIndexBuffer.vkbuffer
, text.indexBuffer.vkbuffer
, 1.uint32
, addr copyRegion
)
# # Flushing the command buffer will also submit it to the queue and
# # uses a fence to ensure that all commands have been executed before returning
rec.vk_device.flushCommandBuffer rec.queue, rec.command_pool, copyCmd
# Destroy staging buffers
# Note: Staging buffer must not be deleted before the copies have been submitted and executed
vkDestroyBuffer( rec.vk_device, text.stVertexBuffer.vkbuffer, nil)
vkFreeMemory( rec.vk_device, text.stVertexBuffer.memory, nil)
vkDestroyBuffer( rec.vk_device, text.stIndexBuffer.vkbuffer, nil)
vkFreeMemory( rec.vk_device, text.stIndexBuffer.memory, nil)
]#
proc updateUniformBuffers*(text: SDFText, rec: Vulkan_Record ) =
copyMem(text.uniBufferV.data, addr text.ubos.vs, text.ubos.vs.sizeof)
proc prepare_uniform_buffers*( rec: Vulkan_Record
, text: var SDFText
) =
text.uniBufferV = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
, VkMemoryPropertyFlags ( VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord or
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT.ord
)
, VkDeviceSize text.ubos.vs.sizeof
)
text.uniBufferF = a_vulkan_buffer( rec.vk_device
, rec.gpu.memory_properties
, VkBufferUsageFlags VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
, VkMemoryPropertyFlags ( VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.ord or
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT.ord
)
, VkDeviceSize text.ubos.fs.sizeof
)
rec.vk_device.bindIt text.uniBufferV
rec.vk_device.bindIt text.uniBufferF
text.uniBufferV.fillDescr
text.uniBufferF.fillDescr
proc setupDescrSetLayout*( rec: Vulkan_Record
, text: var SDFText
) =
var
#Binding 0: Vertex shader uniform buffer
#Binding 1: Fragment shader image sampler
#Binding 2: Fragment shader uniform buffer
descriptorSetLayoutBindings =
[ aVkDescriptorSetLayoutBinding( descType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, stageFlags = VkShaderStageFlags VK_SHADER_STAGE_VERTEX_BIT
, binding = 0
)
, aVkDescriptorSetLayoutBinding( descType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, stageFlags = VkShaderStageFlags VK_SHADER_STAGE_FRAGMENT_BIT
, binding = 1
)
, aVkDescriptorSetLayoutBinding( descType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, stageFlags = VkShaderStageFlags VK_SHADER_STAGE_FRAGMENT_BIT
, binding = 2
)
]
descriptorLayout: VkDescriptorSetLayoutCreateInfo
pPipelineLayoutCreateInfo: VkPipelineLayoutCreateInfo
descriptorLayout.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
descriptorLayout.bindingCount = descriptorSetLayoutBindings.len.uint32
descriptorLayout.pBindings = addr descriptorSetLayoutBindings[0]
discard vkCreateDescriptorSetLayout(rec.vk_device
, addr descriptorLayout
, nil
, addr text.descrSetLayout
)
# Create the pipeline layout that is used to
# generate the rendering pipelines that are based on this descriptor set layout
# In a more complex scenario you would have different pipeline layouts
# for different descriptor set layouts that could be reused
pPipelineLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
#pPipelineLayoutCreateInfo.pNext = nil
pPipelineLayoutCreateInfo.setLayoutCount = 1
pPipelineLayoutCreateInfo.pSetLayouts = addr text.descrSetLayout
discard vkCreatePipelineLayout(rec.vk_device, addr pPipelineLayoutCreateInfo, nil, addr text.graphicsPipeline.pipelineLayout)
proc prepPipeline*( rec: Vulkan_Record
, rp: VkRenderPass
, gp: Graphics_Pipeline
) =
var
# Input attribute bindings describe shader attribute locations and memory layouts
# Location 0 : Position
# Location 1 : Texture coordinates
vertexInputAttributs: array[2,VkVertexInputAttributeDescription]
var
pipelineInfo = VkGraphicsPipelineCreateInfo(
sType: VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
, layout: gp.pipelineLayout
, render_pass: rp
#subpass: 0,
#basePipelineHandle: VkPipeline(VK_NULL_HANDLE), # optional
#basePipelineIndex: -1, # optional
)
#Input assembly state describes how primitives are assembled
#This pipeline will assemble vertex data as a triangle lists (though we only use one triangle)
inputAssembly = VkPipelineInputAssemblyStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
, topology: VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
, primitiveRestartEnable: vkfalse
, flags: VkPipelineInputAssemblyStateCreateFlags 0
)
rasterizer = VkPipelineRasterizationStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
, depthClampEnable: vkfalse
, rasterizerDiscardEnable: vkfalse
, polygonMode: VK_POLYGON_MODE_FILL
, lineWidth: 1f
, cullMode: VkCullModeFlags VK_CULL_MODE_NONE
, frontFace: VK_FRONT_FACE_COUNTER_CLOCKWISE
, depthBiasEnable: vkfalse
, flags: VkPipelineRasterizationStateCreateFlags 0
# , depthBiasConstantFactor: 0f # optional
# , depthBiasClamp: 0f # optional
# , depthBiasSlopeFactor: 0f # optional
)
colorBlendAttachment = VkPipelineColorBlendAttachmentState(
#colorWriteMask: VkColorComponentFlags 0xf
blendEnable: vktrue
, srcColorBlendFactor: VK_BLEND_FACTOR_ONE
, dstColorBlendFactor: VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
, colorBlendOp: VK_BLEND_OP_ADD
, srcAlphaBlendFactor: VK_BLEND_FACTOR_ONE
, dstAlphaBlendFactor: VK_BLEND_FACTOR_ZERO
, alphaBlendOp: VK_BLEND_OP_ADD
, colorWriteMask: VkColorComponentFlags bitor( VK_COLOR_COMPONENT_R_BIT.ord
, VK_COLOR_COMPONENT_G_BIT.ord
, VK_COLOR_COMPONENT_B_BIT.ord
, VK_COLOR_COMPONENT_A_BIT.ord
)
)
colorBlending = VkPipelineColorBlendStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
# , logicOpEnable: vkfalse
# , logicOp: VK_LOGIC_OP_COPY # optional
, attachmentCount: 1
, pAttachments: colorBlendAttachment.addr
# , blendConstants: [0f, 0f, 0f, 0f] # optional
)
# Enable dynamic states
# Most states are baked into the pipeline, but there are still a few dynamic states that can be changed within a command buffer
# To be able to change these we need do specify which dynamic states VkPipelineViewportStateCreateInfoVkPipelineViewportStateCreateInfo be changed using this pipeline. Their actual states are set later on in the command buffer.
# For this example we will set the viewport and scissor using dynamic states
dynamicStateEnables: array[2,VkDynamicState] = [VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, #[VK_DYNAMIC_STATE_LINE_WIDTH]#]
dynamicState = VkPipelineDynamicStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
, pDynamicStates: addr dynamicStateEnables[0]
, dynamicStateCount: dynamicStateEnables.len.uint32
)
# Depth and stencil state containing depth and stencil compare and test operations
# We only use depth tests and want depth tests and writes to be enabled and compare with less or equal
depthStencilState = VkPipelineDepthStencilStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
, depthTestEnable: vkfalse
, depthWriteEnable: vktrue
, depthCompareOp: VK_COMPARE_OP_LESS_OR_EQUAL
# , depthBoundsTestEnable: VkBool32 VK_FALSE
, back: VkStencilOpState( #failOp: VK_STENCIL_OP_KEEP
#, passOp: VK_STENCIL_OP_KEEP
compareOp: VK_COMPARE_OP_ALWAYS
)
# , front: VkStencilOpState( failOp: VK_STENCIL_OP_KEEP
# , passOp: VK_STENCIL_OP_KEEP
# , compareOp: VK_COMPARE_OP_ALWAYS
# )
# , stencilTestEnable: VkBool32 VK_FALSE
)
# Multi sampling state
# This example does not make use of multi sampling (for anti-aliasing), the state must still be set and passed to the pipeline
multisampleState = VkPipelineMultisampleStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
, rasterizationSamples: VK_SAMPLE_COUNT_1_BIT
, pSampleMask: nil
)
# Vertex input state used for pipeline creation
var
viewport = VkViewport(
x: 0f, y: 0f
, width: rec.swapchain.current_extent.width.float32
, height: rec.swapchain.current_extent.height.float32
, minDepth: 0f
, maxDepth: 1f
)
scissor = VkRect2D( offset: VkOffset2D(x: 0, y: 0)
, extent: rec.swapchain.current_extent,
)
viewportState = VkPipelineViewportStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
, viewportCount: 1
, pViewports: viewport.addr
, scissorCount: 1
, pScissors: scissor.addr
, flags: VkPipelineViewportStateCreateFlags 0
)
# Shaders
vertexInputAttributs[0].binding = 0
vertexInputAttributs[0].location = 0
vertexInputAttributs[0].format = VK_FORMAT_R32G32B32_SFLOAT
vertexInputAttributs[0].offset = 0
vertexInputAttributs[1].binding = 0
vertexInputAttributs[1].location = 1
vertexInputAttributs[1].format = VK_FORMAT_R32G32_SFLOAT
vertexInputAttributs[1].offset = float32.sizeof * 3
var
bindingDescs = [ VkVertexInputBindingDescription( binding: 0
, stride: TextVert.sizeof.uint32
, inputRate: VK_VERTEX_INPUT_RATE_VERTEX
)
]
vertexInputState = VkPipelineVertexInputStateCreateInfo(
sType: VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
, vertexBindingDescriptionCount: bindingDescs.len.uint32
, pVertexBindingDescriptions: addr bindingDescs[0]
, vertexAttributeDescriptionCount: vertexInputAttributs.len.uint32
, pVertexAttributeDescriptions: addr vertexInputAttributs[0]
)
shaderStages: array[2,VkPipelineShaderStageCreateInfo]
const
vertShaderCode = staticRead("../../data/shaders/sdfV.spv")
fragShaderCode = staticRead("../../data/shaders/sdfF.spv")
# Vertex shader
shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
# Set pipeline stage for this shader
shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT
# Load binary SPIR-V shader
shaderStages[0].module = rec.vk_device.createShaderModule vertShaderCode
# Main entry point for the shader
shaderStages[0].pName = "main"
# Fragment shader
shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
# Set pipeline stage for this shader
shaderStages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT
# Load binary SPIR-V shader
shaderStages[1].module = rec.vk_device.createShaderModule fragShaderCode
# Main entry point for the shader
shaderStages[1].pName = "main"
# Set pipeline shader stage info
pipelineInfo.stageCount = shaderStages.len.uint32
pipelineInfo.pStages = addr shaderStages[0]
# Assign the pipeline states to the pipeline creation info structure
pipelineInfo.pVertexInputState = addr vertexInputState
pipelineInfo.pInputAssemblyState = addr inputAssembly
pipelineInfo.pRasterizationState = addr rasterizer
pipelineInfo.pColorBlendState = addr colorBlending
pipelineInfo.pMultisampleState = addr multisampleState
pipelineInfo.pViewportState = addr viewportState
pipelineInfo.pDepthStencilState = addr depthStencilState
pipelineInfo.render_pass = rp
pipelineInfo.pDynamicState = addr dynamicState
# Create rendering pipeline using the specified states
discard vkCreateGraphicsPipelines(rec.vk_device
, rec.pipelineCache
, 1
, addr pipelineInfo
, nil
, addr gp.pipeline
)
# Shader modules are no longer needed once the graphics pipeline has been created
vkDestroyShaderModule(rec.vk_device, shaderStages[0].module, nil)
vkDestroyShaderModule(rec.vk_device, shaderStages[1].module, nil)
proc setupDescrSets*(rec: Vulkan_Record, text: SDFText) =
var
dSet: VkDescriptorSet
allocInfo = VkDescriptorSetAllocateInfo(
sType: VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
, descriptorPool: text.descrPool
, descriptorSetCount: 1
, pSetLayouts: addr text.descrSetLayout
)
discard vkAllocateDescriptorSets( rec.vk_device
, addr allocInfo
, addr dSet
)
var
cms = aVkDescriptorImageInfo( sampler = text.texture.sampler
, imageView = text.texture.view
, imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
)
sets = [
#Binding 0: Vertex shader uniform buffer
#Binding 1: Fragment shader image sampler
#Binding 2: Fragment shader uniform buffer
VkWriteDescriptorSet( sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
, dstSet: dSet
, descriptorType: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, dstBinding: 0
, pBufferInfo: cast[ ptr ptr VkDescriptorBufferInfo](addr text.uniBufferV.descriptor)
, descriptorCount: 1
)
, VkWriteDescriptorSet( sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
, dstSet: dSet
, descriptorType: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, dstBinding: 1
, pImageInfo: addr cms
, descriptorCount: 1
)
, VkWriteDescriptorSet( sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
, dstSet: dSet
, descriptorType: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, dstBinding: 2
, pBufferInfo: cast[ ptr ptr VkDescriptorBufferInfo](addr text.uniBufferF.descriptor)
, descriptorCount: 1
)
]
vkUpdateDescriptorSets(rec.vk_device, sets.len.uint32, addr sets[0], 0, nil)
text.descrSet = dSet
proc buildCommandBuffers*( rec: Vulkan_Record
, text: SDFText
, rp: VkRenderpass
, i: int
) =
var offsets = VkDeviceSize 0
vkCmdBindPipeline( rec.draw_command_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, text.graphicsPipeline.pipeline)
vkCmdBindDescriptorSets( rec.draw_command_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, text.graphicsPipeline.pipelineLayout, 0, 1, addr text.descrSet, 0, nil)
vkCmdBindVertexBuffers( rec.draw_command_buffers[i], 0, 1, addr text.vertexBuffer.vkbuffer, addr offsets)
vkCmdBindIndexBuffer( rec.draw_command_buffers[i], text.indexBuffer.vkbuffer, VkDeviceSize 0, VK_INDEX_TYPE_UINT32)
vkCmdDrawIndexed( rec.draw_command_buffers[i], text.indexCount , 1, 0, 0, 0) # , 1 ?
text.camera.set_aspect_ratio_with( 60
, (float rec.swapchain.current_extent.width) /
(float rec.swapchain.current_extent.height)
)
rec.readyFrame = true
proc setupDescrPool(rec: var Vulkan_Record
, text: var SDFText
) =
var
sizes = [ VkDescriptorPoolSize( typee: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, descriptorCount: 4
)
, VkDescriptorPoolSize( typee: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, descriptorCount: 2
)
]
descpoolinfo = VkDescriptorPoolCreateInfo( sType: VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
, poolSizeCount: sizes.len.uint32
, pPoolSizes: addr sizes[0]
, maxSets: 2
)
discard vkCreateDescriptorPool(rec.vk_device, addr descpoolinfo, nil, addr text.descrPool)
proc anSDFUBO*( outLineColor: Vec4[float32] = vec4f(1.float32, 0, 0, 0.0)
, outLineWidth: float32 = 98.543
, isOutlined: bool = true
): UBOS =
result = UBOS( vs: textTypes.UBOVS()
, fs: textTypes.UBOFS()
)
result.fs.outlineColor = outlineColor
result.fs.outlineWidth = outlineWidth
result.fs.outlined = 0.1
#[ proc updateCamera*( text: var SDFText
) =
# if text.camera_type == Ortho:
#text.ubos.vs.view = text.camera.matrices.view
#text.camera.updateViewMatrix()
# if text.camera_type == Perspective:
# text.ubos.vs.proj = text.camera.matrices.persp
# text.ubos.vs.view = text.camera.matrices.view
# text.ubos.vs.model = mat4(1.0.float32).scale 0.16
# text.camera.updateViewMatrix()
text.device[].map_memory( text.uniBufferV.memory
, text.uniBufferV.data
)
text.device[].map_memory( text.uniBufferF.memory
, text.uniBufferF.data
)
copymem(text.uniBufferV.data, addr text.ubos.vs, text.ubos.vs.sizeof)
copymem(text.uniBufferF.data, addr text.ubos.fs, text.ubos.fs.sizeof)
vkUnmapMemory(text.device[], text.uniBufferV.memory)
vkUnmapMemory(text.device[], text.uniBufferF.memory)
text.changed = false ]#
proc rotate*( t: var SDFText
, a, x,y,z: float32
) =
case t.camera_type
of Ortho:
t.ubos.vs.model = t.ubos.vs.model.rotate(radians a,x,y,z)
#t.updateCamera
of Perspective: discard
proc move*( t: var SDFText
, x,y: float32
) =
case t.camera_type
of Ortho:
t.ubos.vs.model = t.ubos.vs.model.translate(x,y,0)
#t.updateCamera
of Perspective: discard
# TODO: outlined needs to be a bool in the fragment shader
# but for some reason is currently a float32, that checks for >0.0 to outline
proc updateFS*( t: var SDFText
, outLineColor: Vec4[float32] = vec4f(1.float32, 0, 0, 0.1)
, outLineWidth: float32 = 90
, outlined: float32 = 0.0
) =
t.ubos.fs.outLineColor = outlineColor
t.ubos.fs.outLineWidth = outLineWidth
t.ubos.fs.outlined = outlined
#t.updateCamera
proc strIs*( t: var SDFText
, s: string
#, rec: var Vulkan_Record
) =
t.str = s
t.strChanged = true
t.theVkRec[].genVertBuffers( t
, s
)
t.strChanged = false
# Vulkan is y neg
# TODO: get rid of the hack.
# currently the SDF text gets chopped off at the tops which messed up capital letters
# after modifying the model(?)
proc move_to*( t: var SDFText
, x,y: float32
) =
case t.camera_type
of Ortho:
t.ubos.vs.model = mat4f(1)
.translate(0,0,0)
.translate(x,-y,0)
# SDF text currently upside down
# TODO: Actually fix please, thank you.
.scale(t.size * 4.0)
.rotate(radians -540.float32, 1,0,0)
#var ts = t.str
#t.updateCamera
of Perspective: discard
proc anSDFText*( rec: var Vulkan_Record
, scene: var Scene
, name: string
, str: string
, size: float32
, camTy: Camera_Kind = Ortho
): SDFText =
result = SDFText( font: aPBMFont()
, ubos: anSDFUBO()
, texture: Texture2D()
, indexBuffer: Buffer()
, vertexBuffer: Buffer()
, graphicsPipeline: GraphicsPipeline()
, camera: aCamera( float32 ( rec.current_viewport.width /
rec.current_viewport.height
)
, camTy
)
, name: name
, device: addr rec.vk_device
, id: scene.current_entity_id
, size: size
, theVkRec: addr rec
, str: str
)
rec.loadFromFile(result.texture)
rec.genVertBuffers( result
, str
)
rec.prepare_uniform_buffers result
rec.setupDescrSetLayout result
rec.prepPipeline scene.render_pass, result.graphicsPipeline
rec.setupDescrPool result
rec.setupDescrSets result
result.ubos.vs.proj = vkm.ortho( 0.float32
, rec.swapchain.current_extent.width.float32
, 0.float32
, rec.swapchain.current_extent.height.float32
, 0.0.float32
, -1000.0.float32
)
result.ubos.vs.model = mat4f(1)
.scale(size * 4)
# SDF text currently upside down
# TODO: Actually fix please, thank you.
.rotate(radians -540.float32, 1,0,0)
result.ubos.vs.view = mat4f(1)
#result.updateCamera ]#
{.deadCodeElim: on.}
import glm
import ../vk/vkm/vkmat
type
Vertex* = object
pos*: array[3,float32]
color*: array[3, float32]
texture_coordinates*: array[3, float32]
UBO* = object
projection*: Mat4f
model*: Mat4f
view*: Mat4f
model_view_projection*: Mat4[float32]
being_color*: Vec4[float32]
deshn_color*: Vec4[float32]
pos*: Vec4[float32]
deshn_pool*: float32
deshn_pool_is_full*: bool = true
deshn_pool_is_empty*: bool = false
Shape_Pushes* = object
import glm
# XYZ | RGB | UV(Dummy value
let
triVertBuffer* = @[ -1.0f, -1.0, 0.0, 1.0.float32, 1.0f, 1.0f, 0.0f, 0.0f, 0.0
, 1.0f, -1.0, 0.0, 1.0.float32, 1.0, 1.0, 1.0f, 0.0f, 0.0
, 0.0f, 1.0f, 0.0, 1.0.float32, 1.0, 1.0, 0.5f, 1.0f, 0.0
]
triIndexBuffer* = [0.uint32,1,2]
quadVertBuffer*: seq[float32] = @[ 1.0.float32, 1.0, 0.0 , 1.0.float32, 1.0f, 1.0f, 1.0f, 1.0f, 0.0
, -1.0.float32, 1.0, 0.0 , 1.0.float32, 0.0, 0.0, 1.0f, 0.0f, 0.0
, -1.0.float32, -1.0f, 0.0 , 1.0.float32,0.0,0.0 , 0.0f, 0.0f, 0.0
, 1.0.float32, -1.0f, 0.0f , 1.0.float32, 1.0, 1.0 , 0.0f, 1.0f, 0.0
]
quadIndexBuffer* = [0.uint32,1,2, 2,3,0 ]
pentaVertBuffer*: seq[float32] = @[ -0.7.float32, -1.0, 0.0 , 1.0.float32, 1.0f, 1.0f
, -1.0.float32, 0.3, 0.0 , 1.0.float32, 0.0, 0.0
, 0.0.float32, 1.0f, 0.0 , 1.0.float32,0.0,0.0
, 1.0.float32, 0.3f, 0.0f , 1.0.float32, 1.0, 1.0
, 0.7.float32, -1.0f, 0.0f , 1.0.float32, 1.0, 1.0
]
pentaIndexBuffer* = [ 0.uint32, 1, 2
, 0, 2, 3
, 0, 3, 4
]
hexaVertBuffer*: seq[float32] = @[ 0.0.float32, 0.0, 0.0 , 1.0.float32, 1.0f, 1.0f
, -0.5.float32, 1.0, 0.0 , 1.0.float32, 0.0, 0.0
, 0.5.float32, 1.0f, 0.0 , 1.0.float32,0.0,0.0
, 1.0.float32, 0.0f, 0.0f , 1.0.float32, 1.0, 1.0
, 0.5.float32, -1.0f, 0.0f , 1.0.float32, 1.0, 1.0
, -0.5.float32, -1.0f, 0.0f , 1.0.float32, 1.0, 1.0
, -1.0.float32, 0.0f, 0.0f , 1.0.float32, 1.0, 1.0
]
hexaIndexBuffer* = [ 0.uint32, 1, 2
, 3, 4, 5
, 6, 1
]
heptaVertBuffer*: seq[float32] = @[ 0.0 , 1.0 , 0 , 1.0.float32, 0.0f, 0.0f
, 0.781 , 0.623, 0 , 0.float32, 1, 0
, 0.974 , -0.222, 0 , 0.float32, 0, 1
, 0.433 , -0.900, 0 , 1.float32, 0, 0
, -0.433, -0.900, 0 , 0.float32, 1, 0
, -0.977, -0.222, 0 , 0.float32, 0, 1
, -0.787, 0.623, 0 , 1.float32, 0, 0
]
# technically works but isn't desirable
# 0.uint32, 1, 2 , 3, 4, 5 , 6#, 1
heptaIndexBuffer* = [ 7.uint32, 6, 0
, 1, 2, 3
, 7, 3, 4
, 5, 6
]
{.experimental: "codeReordering".}
{.deadCodeElim: on.}
# TODO: when mutual dependencies are avaliable
# uncomment the scene var so we can auto-add shapes to
# the current scene again.
import ../vk/[ vulkan
, vkTypes
, vulkan_record
, buffer
, vulkan_utils
, pipeline_record
, vk_core
]
, ../camera
, shape_types
, glm
import ../vk/vkm/vkmat as vkm
import sequtils
import shape_primitives
import std/[ bitops
, tables
]
type
ShapeKind* = enum
Tri, Quad, Penta, Hexa, Hepta, Octa, Ngon, Circle, Cube
Shape_Object = object of RootObj
camera*: Camera
camera_kind*: Camera_Kind = Camera_Kind.Perspective
id*: int
kind*: ShapeKind
isTextured: bool
name*: string
pipelineCache*: VkPipelineCache
#graphicsPipeline*: GraphicsPipeline
# render_pass*: VkRenderPass
indexCount*: uint32
# stVertexBuffer*: Buffer
# stIndexBuffer*: Buffer
ubo*: UBO
changed*: bool
indices*: seq[uint32]
vertices*: seq[float32]
vertSize*: uint32
indSize*: uint32
hollow*: bool
theSize*: Vec2[float32]
#push_constants*: Shape_Pushes
#using_pipelines*: seq[Graphics_Pipeline_Enum]
moving*: bool
master_vertex_buffer_offset*: Natural
Shape* = ref object of Shape_Object
proc a_shape*( vulkan_record: var Vulkan_Record
, pipeline_record: Pipeline_Record
, render_pass: VkRenderPass
, current_enitity_id: int
#, s: var Scene # TODO: DO NOT DELET
, sides: Natural
, name: string
, the_size: Vec2[float32]
, being_color: Vec4[float32] = vec4f(1.0, 0.0, 0.0, 1.0)
, deshn_color: Vec4[float32] = vec4f(1.0, 0.0, 0.0, 1.0)
, camera_type: Camera_Kind = Ortho
, hollow: bool = false
# TODO: custom vertices and indices
# , vertices: seq[seq[seq[float32]
# , indices seq[float32]
): Shape =
result = Shape( name: name
, hollow: hollow
, id: current_enitity_id
, the_size: the_size
, camera_kind: camera_type
, camera: a_camera ( (float vulkan_record.swapchain.current_extent.width) /
(float vulkan_record.swapchain.current_extent.height)
)
)
case sides
of 3:
result.kind = Tri
result.indices = toSeq triIndexBuffer
result.vertices = triVertBuffer
of 4:
result.kind = Quad
result.indices = toSeq quadIndexBuffer
result.vertices = quadVertBuffer
of 5:
result.kind = Penta
result.indices = toSeq pentaIndexBuffer
result.vertices = pentaVertBuffer
of 6:
result.kind = Hexa
result.indices = toSeq hexaIndexBuffer
result.vertices = hexaVertBuffer
of 7:
result.kind = Hepta
result.indices = toSeq heptaIndexBuffer
result.vertices = heptaVertBuffer
else:
if sides > 8: quit "sides > 8, currently not handled"
else: quit "ERROR[Constructing Shape]: " & $name & ", with " & $sides & " sides NOT supported yet, try: 3..8 sides"
result.indSize = result.indices.len.uint32 * uint32.sizeof.uint32
result.vertSize = result.vertices.len.uint32 * Vertex.sizeof.uint32
case result.camera_kind:
of Perspective:
result.ubo.projection = vkm.perspectiveLH( 90.0'f32
, vulkan_record.swapchain.current_extent.width.float32 /
vulkan_record.swapchain.current_extent.height.float32
, 1.0.float32
, 1000.0.float32
)
result.ubo.model = mat4f(1.float32)
.scale( result.the_size.x
, result.the_size.y
, 0.0
)
.translate(0.float32,0,0)
result.ubo.view = lookAt( vec3f( 0.0
, 0.0
, 0.0
)
, vec3f( 0.0
, 0.0
, 0.0
)
, vec3f( 0.0
, 0.0
, 0.0
)
)
of Ortho:
result.ubo.projection = vkm.ortho( 0.float32
, vulkan_record.swapchain.current_extent.width.float32
, 0.float32
, vulkan_record.swapchain.current_extent.height.float32
, 0.0.float32
, -1000.0.float32
)
result.ubo.model = mat4f(1.float32)
.scale( result.the_size.x
, result.the_size.y
, 0.0
)
#.translate(0.float32,0,0)
.rotate( radians 180'f32, 1, 0, 0)
result.ubo.view = mat4f(1)# lookAtRH( vec3( 1280.float32 / 2, 1280.float32, 1.0)
#, vec3(0f, 0.0, 0)
#, vec3(0f, 0, 1)
#)
suballocate_vertex_buffer( vulkan_record
, cast[pointer](addr result.vertices)
)
suballocate_index_buffer( vulkan_record
, cast[pointer](addr result.indices)
)
suballocate_uniform_buffer( vulkan_record
, cast[pointer](addr result.ubo)
)
#vulkan_record.prepare_uniform_buffers result
#vulkan_record.vk_device.updateCamera shape
# actions
proc update_model_view_projection*( shape: var Shape
) =
shape.ubo.model_view_projection = shape.camera.matrices.perspective *
shape.camera.matrices.view *
shape.ubo.model
proc scale*( t: var Shape
, x: float32
, y: float32
) =
var
posX = t.ubo.model[3][0]
posY = t.ubo.model[3][1]
t.ubo.model = mat4f(1)
#.scale(x,y,1)
.translate(posX, posY, 0)
t.ubo.model = t.ubo.model.scale( t.the_size.x * x
, t.the_size.y * y
, 0.0
)
t.update_model_view_projection()
# vulkan is y neg
proc move_up*( t: var Shape
, y: float32
#, x: float32
) =
t.camera.translate(normalize vec3f(0.0,-y,0.0))
t.update_model_view_projection()
# vulkan is y neg
proc move_down*( t: var Shape
, y: float32
#, x: float32
) =
t.camera.translate(normalize vec3f( 0.0, y,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
# vulkan is y neg
proc move_left*( t: var Shape
, x: float32
#, y: float32
) =
t.camera.translate(normalize vec3f(-x,0.0,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
# vulkan is y neg
proc move_right*( t: var Shape
, x: float32
#, y: float32
) =
t.camera.translate(normalize vec3f(x,0.0,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
proc move_up2*( t: var Shape
, y: float32
#, x: float32
) =
t.ubo.model = t.ubo.model
.translate(normalize vec3f(0.0,y,0.0))
t.update_model_view_projection()
# vulkan is y neg
proc move_down2*( t: var Shape
, y: float32
#, x: float32
) =
t.ubo.model = t.ubo.model
.translate(normalize vec3f( 0.0, -y,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
# vulkan is y neg
proc move_left2*( t: var Shape
, x: float32
#, y: float32
) =
t.ubo.model = t.ubo.model
.translate(normalize vec3f(-x,0.0,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
# vulkan is y neg
proc move_right2*( t: var Shape
, x: float32
#, y: float32
) =
t.ubo.model = t.ubo.model
.translate(normalize vec3f(x,0.0,0.0))
# .rotate(radians 180.0, 1, 0, 0 )
#.scale(t.the_size)
t.update_model_view_projection()
# vulkan is y neg
proc move_to*( t: var Shape
, x: float32
, y: float32
) =
t.ubo.model = mat4f(1)
.translate(0,0,0)
.translate(x,-y,0)
# .rotate(radians 180.0, 1, 0, 0 )
.scale( t.the_size.x
, t.the_size.y
, 0.0
)
t.update_model_view_projection()
#[ proc updateCamera*( shape: var Shape
) =
# if text.camera_type == Ortho:
#text.ubos.vs.view = text.camera.matrices.view
#text.camera.updateViewMatrix()
# if text.camera_type == Perspective:
# text.ubos.vs.projection = text.camera.matrices.persp
# text.ubos.vs.view = text.camera.matrices.view
# text.ubos.vs.model = mat4(1.0.float32).scale 0.16
# text.camera.updateViewMatrix()
shape.vk_device[].map_memory( shape.uniform_buffer.memory
, shape.uniform_buffer.data
)
shape.vk_device[].map_memory( shape.uniform_buffer.memory
, shape.uniform_buffer.data
)
copymem(shape.uniform_buffer.data, addr shape.ubo, shape.ubo.sizeof)
copymem(shape.uniform_buffer.data, addr shape.ubo, shape.ubo.sizeof)
vkUnmapMemory(shape.vk_device[], shape.uniform_buffer.memory)
vkUnmapMemory(shape.vk_device[], shape.uniform_buffer.memory)
#shape.changed = false ]#
import shape_object
, shape_primitives
, shape_types
, grid
, ../vk/[ vulkan
, pipeline_record
, graphics_pipeline
]
type
Plane_Object = object of RootObj
shape*: Shape
id*: int
name*: string
grid*: Dynamic_Grid
Plane* = ref object of Plane_Object
proc a_plane*( shape: var Shape
, name: string
): Plane =
result = Plane()
result.shape = shape
result.name = name
proc move_to*( plane: var Plane
, x
, y: float32
) = plane.shape.move_to( x
, y
)
proc move_up*( plane: var Plane
, amount: float32
) = plane.shape.move_up amount
proc move_down*( plane: var Plane
, amount: float32
) = plane.shape.move_down amount
proc move_left*( plane: var Plane
, amount: float32
) = plane.shape.move_left amount
proc move_right*( plane: var Plane
, amount: float32
) = plane.shape.move_right amount
import shape_object
, colors
, ../vk/[ vulkan
, vulkan_record
, pipeline_record
, buffer
]
, glm
, ../camera
type
Space_Type* = enum
Empty
Spawner
Space* = object
render*: bool
the_type*: Space_Type
shape*: Shape
Static_Row[N] = array[N, Space]
Static_Grid_Object[R, C] = object of RootObj
spaces*: array[R, Static_Row[C]]
space_size*: int
Dynamic_Row = seq[Space]
Dynamic_Grid_Object = object of RootObj
rows*: seq[Dynamic_Row]
space_size*: int
Static_Grid* = ref object of Static_Grid_Object
Dynamic_Grid* = ref object of Dynamic_Grid_Object
#[ proc a_dynamic_grid*( rows: int
, columns: int
, rec: var Vulkan_Record
, render_pass: VkRenderPass
, pipeline_record: Pipeline_Record
, current_entity_id: int
, parent_buffer: var Buffer
): Dynamic_Grid =
result = Dynamic_Grid()
result.rows.setlen rows
for row in result.rows.mitems:
row.setlen columns
for row in result.rows.mitems:
for space in row.mitems:
space.shape = a_shape( parent_buffer
, rec
, pipeline_record
, render_pass
, current_entity_id
, 4
, "plane0_quad"
, theSize = vec2f( 80
, 40
)
, being_color = dark_purple
, deshn_color = yellow
, camera_type = Camera_Kind.Perspective
, hollow = false
)
]#
import glm
let
red* = vec4f( 1.0
, 0.0
, 0.0
, 1.0
)
green* = vec4f( 0.0
, 0.0
, 1.0
, 1.0
)
blue* = vec4f( 0.0
, 1.0
, 0.0
, 1.0
)
black* = vec4f( 0.0
, 0.0
, 0.0
, 1.0
)
white* = vec4f( 1.0
, 1.0
, 1.0
, 1.0
)
yellow* = vec4f( 1.0
, 1.0
, 0.0
, 1.0
)
silver_blue* = vec4f( 130 / 255
, 178 / 255
, 255 / 255
, 1.0
)
dark_purple* = vec4f( 55 / 255
, 31 / 255
, 115 / 255
, 1.0
)
import ../camera
, glm
#[
Currently, shapes can either be ortho, or perspective.
if they are ortho, we merely push the MVP.
so with actions, we just update the mvp.
But what about the camera???
]#
#[ proc rotate2*[T]( t: T
, x: float32
, y: float32
, z: float32 = 0.0
) =
case t.camKind
of Camera_Kind.Perspective:
t.camPersp.rotation += vec3f(x,y,z)
t.camPersp.updateViewMatrix
t.ubo.proj = t.camPersp.matrices.persp
t.ubo.view = t.camPersp.matrices.view
t.ubo.mvp = t.ubo.proj * t.ubo.view * t.ubo.model
t.camPersp.rotation += vec3f(x,y,z)
t.camPersp.updateViewMatrix
t.changed = true
of Camera_Kind.Ortho: discard ]#
proc translate*[T]( t: T
, dt: Vec3[float32]
) =
t.camera.pos += dt
t.camera.updated = true
t.camera.updateViewMatrix()
t.changed = true
{.experimental: "codeReordering".}
import ../drawable/[ shape_object
]
, ../vk/[ vulkan_record
, vulkan
]
, std/[ math
]
, actions
, options
, tables
### state machine stuff
type
# entry_action: Option[Callback]
# exit_action: Option[Callback]
State_Actions = tuple[ entry_action: Option[Callback]
, exit_action: Option[Callback]
]
Callback = proc(deshn_being: var Deshn_Being): void
StateEvent[S,E] = tuple[state: S, event: E]
Transition[S] = tuple[nextState: S, action: Option[Callback]]
State_Machine*[S,E] = ref object of RootObj
initial_state*: S
current_state*: Option[S]
state_actions*: array[S, StateActions]
transitions*: TableRef[StateEvent[S,E], Transition[S]]
free_transitions*: TableRef[S, Transition[S]]
default_transition*: Option[Transition[S]]
#TransitionNotFoundException = object of Exception
proc current_state_is*[S]( being: var Deshn_Being
, nextState: S
) =
if being.main_state_machine.current_state.isSome:
if being.main_state_machine.state_actions[being.main_state_machine.current_state.get].exit_action.isSome:
get(being.main_state_machine.state_actions[being.main_state_machine.current_state.get].exit_action)(being)
being.main_state_machine.current_state = some(nextState)
if being.main_state_machine.state_actions[being.main_state_machine.current_state.get].entry_action.isSome:
get(being.main_state_machine.state_actions[being.main_state_machine.current_state.get].entry_action)(being)
proc reset*[S,E]( being: var Deshn_Being
) =
being.main_state_machine.current_state_is being.main_state_machine.initial_state
proc initial_state_is*[S,E]( m: State_Machine[S,E]
, state: S
) =
m.initialState = state
proc initial_state_is*[S,E]( being: var Deshn_Being
, state: S
) =
being.main_state_machine.initial_state = state
proc add_state_actions*[S]( being: var Deshn_Being
, state: S
, entry_action: Callback = nil
, exit_action: Callback = nil
) =
let
entry = if entry_action == nil: none(Callback)
else: some(entry_action)
exit = if exit_action == nil: none(Callback)
else: some(exit_action)
being.main_state_machine.state_actions[state] = (entry, exit)
proc a_state_machine*[S,E]( initial_state: S
): State_Machine[S,E] =
result = State_Machine[S,E]()
result.transitions = newTable[ StateEvent[S,E]
, Transition[S]
]()
result.free_transitions = newTable[ S
, Transition[S]
]()
result.initial_state_is initial_state
proc add_free_transition*[S,E]( being: var Deshn_Being
, state: S, nextState: S
) =
being.main_state_machine.free_transitions[state] = (nextState, none(Callback))
proc addTransitionAny*[S,E]( being: var Deshn_Being
, state, nextState: S
, action: Callback
) =
being.main_state_machine.free_transitions[state] = (nextState, some(action))
proc add_transition*[S,E]( being: var Deshn_Being
, state: S
, event: E
, nextState: S
) =
being.main_state_machine.transitions[(state, event)] = (nextState, none(Callback))
proc add_transition*[S,E]( being: var Deshn_Being
, state: S
, event: E
, nextState: S
, action: Callback
) =
being.main_state_machine.transitions[(state, event)] = (nextState, some(action))
proc setDefaultTransition*[S,E]( being: var Deshn_Being
, state: S
) =
being.main_state_machine.default_transition = some((state, none(Callback)))
proc setDefaultTransition*[S,E]( being: var Deshn_Being
, state: S
, action: Callback
) =
being.main_state_machine.default_transition = some((state, some(action)))
proc the_transition*[S,E]( being: var Deshn_Being
, event: E
, state: S
): Transition[S] =
let map = (state, event)
if being.main_state_machine.transitions.hasKey(map): result = being.main_state_machine.transitions[map]
elif being.main_state_machine.free_transitions.hasKey(state): result = being.main_state_machine.free_transitions[state]
elif being.main_state_machine.default_transition.isSome: result = being.main_state_machine.default_transition.get
else:
echo map
quit "Transition not found"
proc process_event*[E]( being: var Deshn_Being
, event: E
) =
let transition = being.the_transition( event
, being.main_state_machine.current_state.get
)
#echo "t0: ", transition[0]
if transition[1].isSome: get(transition[1])(being)
being.current_state_is transition[0]
#echo event, " ", being.main_state_machine.current_state.get
### TODO: PLEASE SORT THIS OUT ^^^^^^^^^^^^^
type
Main_Deshn_Being_Events* = enum
Moved
No_Action
Added_To_Deshn_Pool
Removed_From_Deshn_Pool
Added_To_Recovery_Pool
Removed_From_Recovery_Pool
Filled_Deshn_Pool
Exhausted_Deshn_Pool
Filled_Recovery_Pool
Exhausted_Recovery_Pool
Stopped
Main_Deshn_Being_States* = enum
Moving
Not_Moving
Recovering
Idle
Deshn_Pool_Full
#Deshn_Pool_Not_Full
Deshn_Pool_Empty
Deshn_Pool_Emptying
Deshn_Pool_Filling
Deshn_Pool_Exhausted
Deshn_Pool_Value* = range[0.0..30.0]
Deshn_Recovery_Pool_Value* = range[0.0..2.0]
Deshn_Being_Obj = object of RootObj
shape*: Shape
current_deshn_pool*: float32 = 30
current_deshn_pool_max_size*: Deshn_Pool_Value = Deshn_Pool_Value.high
current_deshn_pool_recovery_pool*: Deshn_Recovery_Pool_Value = Deshn_Recovery_Pool_Value.high
current_deshn_pool_recovery_pool_max*: Deshn_Recovery_Pool_Value = Deshn_Recovery_Pool_Value.high
recovering*: bool
name*: string
id*: int
main_state_machine*: State_Machine[ Main_Deshn_Being_States
, Main_Deshn_Being_Events
]
Deshn_Being* = ref object of Deshn_Being_Obj
proc move_to*( being: var Deshn_Being
, x
, y: float32
) = being.shape.move_to( x
, y
)
proc move_up*( being: var Deshn_Being
, amount: float32
, deshn_cost = 0.1
) =
if being.can_move:
being.shape.move_up amount
being.process_event Main_Deshn_Being_Events.Moved
being.remove_amount_from_deshn_pool 0.03
else: discard
proc move_down*( being: var Deshn_Being
, amount: float32
, deshn_cost = 0.1
) =
if being.can_move:
being.shape.move_down amount
being.process_event Main_Deshn_Being_Events.Moved
being.remove_amount_from_deshn_pool 0.03
else: discard
proc move_left*( being: var Deshn_Being
, amount: float32
, deshn_cost = 0.1
) =
if being.can_move:
being.shape.move_left amount
being.process_event Main_Deshn_Being_Events.Moved
being.remove_amount_from_deshn_pool 0.03
else: discard
proc move_right*( being: var Deshn_Being
, amount: float32
, deshn_cost = 0.1
) =
if being.can_move:
being.shape.move_right amount
being.process_event Main_Deshn_Being_Events.Moved
being.remove_amount_from_deshn_pool 0.03
else: discard
proc deshn_pool_is_full*( being: Deshn_Being
): bool =
return being.shape.ubo.deshn_pool_is_full
proc deshn_pool_is_empty*( being: Deshn_Being
): bool =
return being.shape.ubo.deshn_pool_is_empty
proc can_move*( being: var Deshn_Being
): bool =
return ( not being.deshn_pool_is_empty() and
being.current_deshn_pool_recovery_pool == Deshn_Recovery_Pool_Value.high
)
proc add_amount_to_deshn_pool*( being: var Deshn_Being
, amount: float32
) =
being.shape.ubo.deshn_pool += amount
being.shape.ubo.deshn_pool_is_empty = false
echo being.shape.ubo.deshn_pool
being.process_event Main_Deshn_Being_Events.Added_To_Deshn_Pool
if being.shape.ubo.deshn_pool >= being.current_deshn_pool_max_size:
being.main_state_machine.current_state = some Deshn_Pool_Full
being.shape.ubo.deshn_pool_is_full = true
#[ #if not being.shape.ubo.deshn_pool_is_full:
if not (being.main_state_machine.current_state_is Pool_Full)
being.shape.ubo.deshn_pool += amount
#if being.shape.ubo.deshn_pool_is_empty:
if (being.main_state_machine.current_state_is Pool)
being.shape.ubo.deshn_pool_is_empty = false
being.shape.ubo.deshn_pool += amount
if being.shape.ubo.deshn_pool >= being.current_deshn_pool_max_size:
being.shape.ubo.deshn_pool_is_full = true
being.shape.ubo.deshn_pool = Deshn_Pool_Value.high ]#
proc remove_amount_from_deshn_pool*( being: var Deshn_Being
, amount: float32
) =
being.shape.ubo.deshn_pool -= amount
being.process_event Main_Deshn_Being_Events.Removed_From_Deshn_Pool
being.shape.ubo.deshn_pool_is_full = false
if being.shape.ubo.deshn_pool <= Deshn_Pool_Value.low:
being.recovering = true
being.shape.ubo.deshn_pool_is_empty = true
being.process_event Main_Deshn_Being_Events.Exhausted_Deshn_Pool
proc add_amount_to_recovery_pool*( being: var Deshn_Being
, amount: float32
) =
if (being.current_deshn_pool_recovery_pool + amount > Deshn_Recovery_Pool_Value.high) or
being.current_deshn_pool_recovery_pool >= Deshn_Recovery_Pool_Value.high:
being.current_deshn_pool_recovery_pool = Deshn_Recovery_Pool_Value.high
being.process_event Added_To_Recovery_Pool
being.process_event Filled_Recovery_Pool
else:
being.current_deshn_pool_recovery_pool += amount
being.process_event Added_To_Recovery_Pool
proc remove_amount_from_recovery_pool*( being: var Deshn_Being
, amount: float32
) =
being.current_deshn_pool_recovery_pool -= amount
if being.current_deshn_pool_recovery_pool <= Deshn_Recovery_Pool_Value.low:
being.current_deshn_pool_recovery_pool = Deshn_Recovery_Pool_Value.low
being.recovering = true
proc idle_and_moved_cb( deshn_being: var Deshn_Being) =
echo "idle and moved"
proc not_moving_and_moved_cb( deshn_being: var Deshn_Being) =
echo "stopped and moved"
proc moving_and_no_action_cb( deshn_being: var Deshn_Being) =
echo "moving and no action"
proc stopped_and_no_action_cb( deshn_being: var Deshn_Being) =
echo "stopped and no action"
proc deshn_pool_full_and_taken_from_cb( deshn_being: var Deshn_Being) =
echo "full pool taken from"
deshn_being.shape.ubo.deshn_pool_is_full = false
proc deshn_pool_empty_and_added_to_cb( deshn_being: var Deshn_Being) =
echo "empty pool added to"
deshn_being.shape.ubo.deshn_pool_is_empty = false
proc deshn_pool_filling_and_added_to_cb( deshn_being: var Deshn_Being) =
echo "pool filling added to"
proc deshn_pool_filling_and_full_cb( deshn_being: var Deshn_Being) =
echo "pool added to and now full"
deshn_being.shape.ubo.deshn_pool_is_full = true
proc deshn_pool_full_and_moved_cb( deshn_being: var Deshn_Being) =
echo "pool full and moved"
deshn_being.shape.ubo.deshn_pool_is_full = false
proc deshn_pool_empyting_and_stopped( deshn_being: var Deshn_Being) =
echo "pool emptying and now stopped"
proc moving_and_exhausted_pool_cb( deshn_being: var Deshn_Being) =
echo "moving and exhausted pool"
proc exhausted_pool_and_no_action_cb( deshn_being: var Deshn_Being) =
echo "exhausted pool and no action"
proc deshn_pool_emptying_and_taken_from_cb( deshn_being: var Deshn_Being) =
echo "pool emptying and taken from"
if deshn_being.shape.ubo.deshn_pool <= Deshn_Pool_Value.low:
deshn_being.shape.ubo.deshn_pool = Deshn_Pool_Value.low
deshn_being.current_deshn_pool = Deshn_Pool_Value.low
deshn_being.shape.ubo.deshn_pool_is_empty = true
proc deshn_pool_empty_and_taken_from_cb( deshn_being: var Deshn_Being) =
echo "pool empty and taken from"
proc deshn_pool_exhausted_and_no_action_cb( deshn_being: var Deshn_Being) =
echo "pool exhausted, no action"
proc deshn_pool_exhausted_and_added_to_cb( deshn_being: var Deshn_Being) =
echo "deshn_pool_exhausted_and_added_to_cb"
if deshn_being.current_deshn_pool_recovery_pool >= Deshn_Recovery_Pool_Value.high:
deshn_being.current_deshn_pool_recovery_pool = Deshn_Recovery_Pool_Value.high
deshn_being.recovering = false
proc recovering_and_added_to_recovery_pool_cb( deshn_being: var Deshn_Being) =
echo "recovering_and_added_to_recovery_pool_cb"
proc moving_and_taken_from_pool_cb( deshn_being: var Deshn_Being) =
echo "moving, taken X from pool"
if deshn_being.shape.ubo.deshn_pool <= Deshn_Pool_Value.low:
deshn_being.shape.ubo.deshn_pool = Deshn_Pool_Value.low
deshn_being.current_deshn_pool_recovery_pool = Deshn_Recovery_Pool_Value.low
deshn_being.shape.ubo.deshn_pool_is_empty = true
proc moving_and_moved_cb( deshn_being: var Deshn_Being) =
echo "moving, and moved"
proc not_moving_and_added_to_pool_cb( deshn_being: var Deshn_Being) =
echo "not_moving_and_added_to_pool"
proc moving_and_added_to_pool_cb( deshn_being: var Deshn_Being) =
echo "moving_and_added_to_pool"
proc deshn_pool_filling_and_moved_cb( deshn_being: var Deshn_Being) =
echo "deshn_pool_filling_and_moved_cb"
proc filled_recovery_pool_and_now_idle_cb( deshn_being: var Deshn_Being) =
echo "filled_recovery_pool_and_now_idle_cb"
deshn_being.recovering = false
proc idle_and_added_to_deshn_pool_cb( deshn_being: var Deshn_Being) =
echo "idle_and_added_to_deshn_pool_cb"
proc when_moving_state_action( deshn_being: var Deshn_Being) = discard
proc after_moving_state_action( deshn_being: var Deshn_Being
) = discard
proc when_not_moving_state_action( deshn_being: var Deshn_Being) = discard
proc after_not_moving_state_action( deshn_being: var Deshn_Being
) = discard
proc when_recovering_state_action( deshn_being: var Deshn_Being
) = discard
proc after_recovering_state_action( deshn_being: var Deshn_Being
) = discard
proc when_stopped_state_action( deshn_being: var Deshn_Being
) = discard
proc after_stopped_state_action( deshn_being: var Deshn_Being
) = discard
proc when_idle_state_action( deshn_being: var Deshn_Being
) = discard
proc after_idle_state_action( deshn_being: var Deshn_Being
) = discard
proc when_deshn_pool_full_state_action( deshn_being: var Deshn_Being
) = discard
proc after_deshn_pool_full_state_action( deshn_being: var Deshn_Being
) = discard
proc when_deshn_pool_empty_state_action( deshn_being: var Deshn_Being
) = discard
proc after_deshn_pool_empty_state_action( deshn_being: var Deshn_Being
) = discard
proc when_deshn_pool_emptying_state_action( deshn_being: var Deshn_Being
) = discard
proc after_deshn_pool_emptying_state_action( deshn_being: var Deshn_Being
) = discard
proc when_deshn_pool_filling_state_action( deshn_being: var Deshn_Being
) = discard
proc after_deshn_pool_filling_state_action( deshn_being: var Deshn_Being
) = discard
proc when_deshn_pool_exhausted_state_action( deshn_being: var Deshn_Being
) =
discard
proc after_deshn_pool_exhausted_state_action( deshn_being: var Deshn_Being
) = discard
proc add_default_transitions*( being: var Deshn_Being
) =
being.add_transition( Idle
, Moved
, Moving
, idle_and_moved_cb
)
being.add_transition( Not_Moving
, Moved
, Moving
, not_moving_and_moved_cb
)
being.add_transition( Moving
, No_Action
, Not_Moving
, moving_and_no_action_cb
)
being.add_transition( Not_Moving
, No_Action
, Idle
, stopped_and_no_action_cb
)
being.add_transition( Deshn_Pool_Full
, Removed_From_Deshn_Pool
, Deshn_Pool_Emptying
, deshn_pool_full_and_taken_from_cb
)
being.add_transition( Deshn_Pool_Empty
, Added_To_Deshn_Pool
, Deshn_Pool_Filling
, deshn_pool_empty_and_added_to_cb
)
being.add_transition( Deshn_Pool_Filling
, Added_To_Deshn_Pool
, Deshn_Pool_Filling
, deshn_pool_filling_and_added_to_cb
)
being.add_transition( Deshn_Pool_Emptying
, Removed_From_Deshn_Pool
, Deshn_Pool_Empty
, deshn_pool_emptying_and_taken_from_cb
)
being.add_transition( Deshn_Pool_Exhausted
, No_Action
, Recovering
, deshn_pool_exhausted_and_no_action_cb
)
being.add_transition( Deshn_Pool_Exhausted
, Added_To_Recovery_Pool
, Recovering
, deshn_pool_exhausted_and_added_to_cb
)
being.add_transition( Moving
, Removed_From_Deshn_Pool
, Moving
, moving_and_taken_from_pool_cb
)
being.add_transition( Moving
, Moved
, Moving
, moving_and_moved_cb
)
being.add_transition( Moving
, Stopped
, Not_Moving
, moving_and_moved_cb
)
being.add_transition( Not_Moving
, Added_To_Deshn_Pool
, Deshn_Pool_Filling
, not_moving_and_added_to_pool_cb
)
being.add_transition( Deshn_Pool_Full
, Moved
, Moving
, deshn_pool_full_and_moved_cb
)
being.add_transition( Moving
, Added_To_Deshn_Pool
, Moving
, moving_and_added_to_pool_cb
)
#[ being.add_transition( Deshn_Pool_Full
, Moved
, Deshn_Pool_Not_Full
, deshn_pool_full_and_moved_cb
) ]#
#[ being.add_transition( Deshn_Pool_Not_Full
, Removed_From_Deshn_Pool
, Deshn_Pool_Emptying
, deshn_pool_not_full_and_removed_from_cb
) ]#
being.add_transition( Deshn_Pool_Emptying
, Stopped
, Not_Moving
, deshn_pool_empyting_and_stopped
)
being.add_transition( Deshn_Pool_Filling
, Moved
, Moving
, deshn_pool_filling_and_moved_cb
)
being.add_transition( Moving
, Exhausted_Deshn_Pool
, Deshn_Pool_Exhausted
, moving_and_exhausted_pool_cb
)
being.add_transition( Deshn_Pool_Exhausted
, No_Action
, Recovering
, exhausted_pool_and_no_action_cb
)
being.add_transition( Recovering
, Added_To_Recovery_Pool
, Recovering
, exhausted_pool_and_no_action_cb
)
being.add_transition( Idle
, Added_To_Deshn_Pool
, Deshn_Pool_Filling
, idle_and_added_to_deshn_pool_cb
)
being.add_transition( Recovering
, Filled_Recovery_Pool
, Idle
, filled_recovery_pool_and_now_idle_cb
)
proc add_default_state_actions*( being: var Deshn_Being
) =
being.add_state_actions( Moving
, entry_action = when_moving_state_action
, exit_action = after_moving_state_action
)
being.add_state_actions( Recovering
, entry_action = when_recovering_state_action
, exit_action = after_recovering_state_action
)
being.add_state_actions( Not_Moving
, entry_action = when_stopped_state_action
, exit_action = after_stopped_state_action
)
being.add_state_actions( Idle
, entry_action = when_idle_state_action
, exit_action = after_idle_state_action
)
#[ being.add_state_actions( Deshn_Pool_Exhausted
, entry_action = when_deshn_pool_exhausted_state_action
, exit_action = after_deshn_pool_exhausted_state_action
) ]#
being.add_state_actions( Deshn_Pool_Empty
, entry_action = when_deshn_pool_empty_state_action
, exit_action = after_deshn_pool_empty_state_action
)
being.add_state_actions( Deshn_Pool_Emptying
, entry_action = when_deshn_pool_emptying_state_action
, exit_action = after_deshn_pool_emptying_state_action
)
being.add_state_actions( Deshn_Pool_Filling
, entry_action = when_deshn_pool_filling_state_action
, exit_action = after_deshn_pool_filling_state_action
)
being.add_state_actions( Deshn_Pool_Full
, entry_action = when_deshn_pool_full_state_action
, exit_action = after_deshn_pool_full_state_action
)
being.add_state_actions( Not_Moving
, entry_action = when_not_moving_state_action
, exit_action = after_not_moving_state_action
)
proc a_deshn_being*( shape: Shape
, name: string
): Deshn_Being =
result = Deshn_Being()
result.shape = shape
result.name = name
result.main_state_machine = a_state_machine[ Main_Deshn_Being_States
, Main_Deshn_Being_Events
](Idle)
result.add_default_transitions()
result.add_default_state_actions()
{.deadCodeElim: on.}
import glm
import vk/vkm/vkmat as vkm
type
Matrices = object
perspective*: Mat4[float32]
view*: Mat4[float32]
Camera_Kind* = enum Ortho Perspective
Camera* = object
fov*: float32
z_near*: float32
z_far*: float32
matrices*: Matrices
rotation*: Vec3[float32]
position*: Vec3[float32]
view_position*: Vec4[float32]
updated*: bool
flip_Y*: bool
proc update_view_matrix*( camera: var Camera
) =
var
rotation_matrix = mat4 1.0f
translation_matrix: Mat4[float32]
camera_flip_mod = if camera.flipY: -1.0f else: 1.0f
translation = camera.position
rotation_matrix = rotate( rotation_matrix
, radians(camera.rotation.x *
camera_flip_mod
)
, vec3( 1.0f
, 0.0f
, 0.0f
)
)
rotation_matrix = rotate( rotation_matrix
, radians(camera.rotation.y)
, vec3( 0.0f
, 1.0f
, 0.0f)
);
rotation_matrix = rotate( rotation_matrix
, radians(camera.rotation.z)
, vec3( 0.0f
, 0.0f
, 1.0f)
);
if camera.flipY: translation.y *= -1.0f
translation_matrix = translate( mat4(1.0f)
, translation
)
# if (type == CameraType::firstperson)
# {
# matrices.view = rotation_matrix * translation_matrix;
# }
# else
# {
camera.matrices.view = translation_matrix * rotation_matrix;
# }
camera.view_position = vec4( camera.position
, 0.0f
) *
vec4( -1.0f
, 1.0f
, -1.0f
, 1.0f
)
camera.updated = true
proc `set_perspective_with`*( c: var Camera
, fov
, aspect
, z_near
, z_far: float32
) =
c.fov = fov
c.z_near = z_near
c.z_far = z_far
c.matrices.perspective = perspective( radians fov
, aspect
, z_near
, z_far
)
if (c.flipY): c.matrices.perspective[1][1] *= -1f
proc `position_is`*( c: var Camera
, position: Vec3[float32]
) =
c.position = position
c.update_view_matrix
proc `position+=`*( c: var Camera
, position: Vec3[float32]
) =
c.position += position
c.update_view_matrix
proc `rotation=`*( c: var Camera
, rot: Vec3[float32]
) =
c.rotation = rot
proc translate*( c: var Camera
, vector: Vec3[float32]
) =
c.position += vector
c.update_view_matrix()
proc update*( camera: var Camera
, dt: float
) =
camera.updated = false
proc `set_aspect_ratio_with`*( c: var Camera
, fov, ar: float32
) =
c.set_perspective_with radians(fov), ar, 1, 256.0
#c.update_view_matrix()
proc a_camera*( ar: float32
, camera_type: Camera_Kind = Perspective
): Camera =
case camera_type
of Ortho: discard
of Perspective: discard
result.position = vec3f( 0.0.float32
, 0.0
, 0.0
)
result.rotation = vec3f(0.float32)
result.set_perspective_with( 90.0.float32
, ar
, 1.0
, 256.0
)
result.update_view_matrix()
result
#[
discard xcb_grab_pointer( p.conn
, 0
, p.window
, uint16 XCB_EVENT_MASK_BUTTON_RELEASE or
XCB_EVENT_MASK_BUTTON_MOTION or
XCB_EVENT_MASK_POINTER_MOTION_HINT
, uint8 XCB_GRAB_MODE_ASYNC
, uint8 XCB_GRAB_MODE_ASYNC
, p.window
, XCB_NONE
, XCB_CURRENT_TIME
)
]#
# // Simple fix for 1:1 pixel aspect ratio.
# if (viewport.width > viewport.height)
# {
# viewport.x += 0.5f * (viewport.width - viewport.height);
# viewport.width = viewport.height;
# }
# else if (viewport.height > viewport.width)
# {
# viewport.y += 0.5f * (viewport.height - viewport.width);
# viewport.height = viewport.width;
# }
# for t in scene.shapes.mitems:
# if t.camera.updated: rec.vk_device.updateCamera(t, ( rec.swapchain.current_extent.width div
# rec.swapchain.current_extent.height
# ) )
# p.mouse = xcb_query_pointer_reply( p.conn
# , xcb_query_pointer(p.conn, p.window)
# , cast[ptr ptr xcb_generic_error_t](Z)
# )
version = "0.0.1"
author = "Otanoe"
description = "zzz"
license = "ZZZ"
srcDir = "src"
bin = @["shapes"]
requires "nim >= 1.4.8"
requires "freetype"
#requires "chronos"
requires "glm"
requires "winim"
#nim c -d:danger --gc:orc --cc:clang --passC:"-flto" --passL:"-flto" -d:useMalloc #(?)
#why does it not execute
task dbg_prof_malloc, "build & run debug binary":
exec "nim c -r --hints:off --warnings:off --nimcache:nim_cache --gc:orc --threads:on -d:useMalloc --stackTrace:on --profiler:on --outdir:bin src/shapes.nim"
task dbg_malloc, "build & run debug binary":
exec "nim c -r --hints:off --warnings:off --nimcache:nim_cache --gc:orc --threads:on -d:useMalloc --stackTrace:on --outdir:bin src/shapes.nim"
task dbg, "build & run debug binary":
exec "clear && nim c -r --hints:off --warnings:off --nimcache:/run/media/j/ZZZ/Dev/nim/cache --gc:orc --threads:on --outdir:bin src/shapes.nim"
task dbg_win, "build & run debug binary":
exec "nim c -r --hints:off --warnings:off --gc:arc --threads:off --stackTrace:on --lineTrace:on --checks:on -d:useMalloc --nimcache:E:/Programming/nim/cache --outdir:bin src/shapes.nim"
task buildrun, "build & run debug binary":
exec "nim c -r --hints:off --nimcache:/run/media/j/ZZZ/Dev/nim/cache --gc:orc --outdir:bin src/shapes.nim"
task redbg, "force-rebuild & run debug binary":
exec "nim c -r -f --hints:off --warnings:off --nimcache:/run/media/j/ZZZ/Dev/nim/cache --gc:orc --threads:on -d:useMalloc --outdir:bin src/shapes.nim"
task rerel, "force-rebuild & run debug binary":
exec "nim c -r -f --hints:off --warnings:off --nimcache:/run/media/j/ZZZ/Dev/nim/cache --gc:orc --threads:on -d:useMalloc -d:danger --passC:\"-flto\" --passL:\"-flto\" --outdir:bin src/shapes.nim"
task run, "run debug binary":
exec "nim -r bin/shapes"
task tests, "run all tests":
exec "nim c -r tests/vkTests/"
task vkTests, "Make sure vulkan is working properly":
echo "vkInstance: In progress..."
exec "nim c -r --hints:off tests/vkTests/instance"
task w64, "windows build":
exec "nim c -r -f --hints:off --warnings:off --nimcache:F:/nimcache --gc:orc --outdir:bin src/shapes.nim"
# task build-LREL, "build & run Linux release binary":
# exec "nim c -r -f -d:release --hints:off --nimcache:/run/media/j/ZZZ/Dev/nim/cache src/shapes.nim"
task help, "list all tasks":
echo "buildrun build & run debug binary"
echo "dbg build & run debug binary"
echo "redbg rebuild everything & run debug binary"
echo "rerel rebuild everything & run release binary"
echo "run build & run debug binary in bin"
echo "tests run all tests"
echo "vkTests run basic but core vulkan functionality"
echo "w64 rebuild and run win64 binary"
#task bench "benchmarking
# exec
A Slayin' type game for the desktop.
- semi-arcadey 2.5D horde-type game similar to slayin
- very involved controls, nearly fighting-game like, with 8 (?) possible directional attacks, unlike slayin's 4 (really 2.5)
- somehow in the S H A P E S (irregular) universe
| |
| |
| # # |
| |
| |
| () |
| |
| [] () ^ () [] |
|___________________________________________________|
Slayin'
6 classes
knight
- armor for an extra HP bar + giant sword
- low mobility
- generally the most boring to play
- easiest to survive and beat (so far) though
wizard
thief
archer
- most fun (so far)
old man
ninja girl