1d4401354Smrg<?xml version="1.0" encoding="utf-8"?> 2d4401354Smrg<!-- 3d4401354SmrgCopyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett. 4d4401354SmrgAll Rights Reserved. 5d4401354Smrg 6d4401354SmrgPermission is hereby granted, free of charge, to any person obtaining a copy 7d4401354Smrgof this software and associated documentation files (the "Software"), to deal 8d4401354Smrgin the Software without restriction, including without limitation the rights 9d4401354Smrgto use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10d4401354Smrgcopies of the Software, and to permit persons to whom the Software is 11d4401354Smrgfurnished to do so, subject to the following conditions: 12d4401354Smrg 13d4401354SmrgThe above copyright notice and this permission notice shall be included in all 14d4401354Smrgcopies or substantial portions of the Software. 15d4401354Smrg 16d4401354SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17d4401354SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18d4401354SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19d4401354SmrgAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20d4401354SmrgACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21d4401354SmrgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22d4401354Smrg 23d4401354SmrgExcept as contained in this notice, the names of the authors or their 24d4401354Smrginstitutions shall not be used in advertising or otherwise to promote the 25d4401354Smrgsale, use or other dealings in this Software without prior written 26d4401354Smrgauthorization from the authors. 27d4401354Smrg--> 28d4401354Smrg<xcb header="xproto"> 29d4401354Smrg <!-- Core protocol types --> 30d4401354Smrg 31d4401354Smrg <struct name="CHAR2B"> 32d4401354Smrg <field type="CARD8" name="byte1" /> 33d4401354Smrg <field type="CARD8" name="byte2" /> 34d4401354Smrg </struct> 35d4401354Smrg 36d4401354Smrg <xidtype name="WINDOW" /> 37d4401354Smrg 38d4401354Smrg <xidtype name="PIXMAP" /> 39d4401354Smrg 40d4401354Smrg <xidtype name="CURSOR" /> 41d4401354Smrg 42d4401354Smrg <xidtype name="FONT" /> 43d4401354Smrg 44d4401354Smrg <xidtype name="GCONTEXT" /> 45d4401354Smrg 46d4401354Smrg <xidtype name="COLORMAP" /> 47d4401354Smrg 48d4401354Smrg <xidtype name="ATOM" /> 49d4401354Smrg 50d4401354Smrg <xidunion name="DRAWABLE"> 51d4401354Smrg <type>WINDOW</type> 52d4401354Smrg <type>PIXMAP</type> 53d4401354Smrg </xidunion> 54d4401354Smrg 55d4401354Smrg <xidunion name="FONTABLE"> 56d4401354Smrg <type>FONT</type> 57d4401354Smrg <type>GCONTEXT</type> 58d4401354Smrg </xidunion> 59d4401354Smrg 60891601f5Smrg <typedef oldname="CARD32" newname="BOOL32" /> 61d4401354Smrg <typedef oldname="CARD32" newname="VISUALID" /> 62d4401354Smrg 63d4401354Smrg <typedef oldname="CARD32" newname="TIMESTAMP" /> 64d4401354Smrg 65d4401354Smrg <typedef oldname="CARD32" newname="KEYSYM" /> 66d4401354Smrg 67d4401354Smrg <typedef oldname="CARD8" newname="KEYCODE" /> 68891601f5Smrg 69891601f5Smrg <typedef oldname="CARD32" newname="KEYCODE32" /> 70d4401354Smrg 71d4401354Smrg <typedef oldname="CARD8" newname="BUTTON" /> 72d4401354Smrg 73d4401354Smrg <struct name="POINT"> 74d4401354Smrg <field type="INT16" name="x" /> 75d4401354Smrg <field type="INT16" name="y" /> 76d4401354Smrg </struct> 77d4401354Smrg 78d4401354Smrg <struct name="RECTANGLE"> 79d4401354Smrg <field type="INT16" name="x" /> 80d4401354Smrg <field type="INT16" name="y" /> 81d4401354Smrg <field type="CARD16" name="width" /> 82d4401354Smrg <field type="CARD16" name="height" /> 83d4401354Smrg </struct> 84d4401354Smrg 85d4401354Smrg <struct name="ARC"> 86d4401354Smrg <field type="INT16" name="x" /> 87d4401354Smrg <field type="INT16" name="y" /> 88d4401354Smrg <field type="CARD16" name="width" /> 89d4401354Smrg <field type="CARD16" name="height" /> 90d4401354Smrg <field type="INT16" name="angle1" /> 91d4401354Smrg <field type="INT16" name="angle2" /> 92d4401354Smrg </struct> 93d4401354Smrg 94d4401354Smrg <!-- Connection setup-related types --> 95d4401354Smrg 96d4401354Smrg <struct name="FORMAT"> 97d4401354Smrg <field type="CARD8" name="depth" /> 98d4401354Smrg <field type="CARD8" name="bits_per_pixel" /> 99d4401354Smrg <field type="CARD8" name="scanline_pad" /> 100d4401354Smrg <pad bytes="5" /> 101d4401354Smrg </struct> 102d4401354Smrg 103d4401354Smrg <enum name="VisualClass"> 104d4401354Smrg <item name="StaticGray"> <value>0</value></item> 105d4401354Smrg <item name="GrayScale"> <value>1</value></item> 106d4401354Smrg <item name="StaticColor"><value>2</value></item> 107d4401354Smrg <item name="PseudoColor"><value>3</value></item> 108d4401354Smrg <item name="TrueColor"> <value>4</value></item> 109d4401354Smrg <item name="DirectColor"><value>5</value></item> 110d4401354Smrg </enum> 111d4401354Smrg 112d4401354Smrg <struct name="VISUALTYPE"> 113d4401354Smrg <field type="VISUALID" name="visual_id" /> 114d4401354Smrg <field type="CARD8" name="class" enum="VisualClass" /> 115d4401354Smrg <field type="CARD8" name="bits_per_rgb_value" /> 116d4401354Smrg <field type="CARD16" name="colormap_entries" /> 117d4401354Smrg <field type="CARD32" name="red_mask" /> 118d4401354Smrg <field type="CARD32" name="green_mask" /> 119d4401354Smrg <field type="CARD32" name="blue_mask" /> 120d4401354Smrg <pad bytes="4" /> 121d4401354Smrg </struct> 122d4401354Smrg 123d4401354Smrg <struct name="DEPTH"> 124d4401354Smrg <field type="CARD8" name="depth" /> 125d4401354Smrg <pad bytes="1" /> 126d4401354Smrg <field type="CARD16" name="visuals_len" /> 127d4401354Smrg <pad bytes="4" /> 128d4401354Smrg <list type="VISUALTYPE" name="visuals"> 129d4401354Smrg <fieldref>visuals_len</fieldref> 130d4401354Smrg </list> 131d4401354Smrg </struct> 132d4401354Smrg 133d4401354Smrg <enum name="EventMask"> 134d4401354Smrg <item name="NoEvent"> <value>0</value></item> 135d4401354Smrg <item name="KeyPress"> <bit>0</bit></item> 136d4401354Smrg <item name="KeyRelease"> <bit>1</bit></item> 137d4401354Smrg <item name="ButtonPress"> <bit>2</bit></item> 138d4401354Smrg <item name="ButtonRelease"> <bit>3</bit></item> 139d4401354Smrg <item name="EnterWindow"> <bit>4</bit></item> 140d4401354Smrg <item name="LeaveWindow"> <bit>5</bit></item> 141d4401354Smrg <item name="PointerMotion"> <bit>6</bit></item> 142d4401354Smrg <item name="PointerMotionHint"> <bit>7</bit></item> 143d4401354Smrg <item name="Button1Motion"> <bit>8</bit></item> 144d4401354Smrg <item name="Button2Motion"> <bit>9</bit></item> 145d4401354Smrg <item name="Button3Motion"> <bit>10</bit></item> 146d4401354Smrg <item name="Button4Motion"> <bit>11</bit></item> 147d4401354Smrg <item name="Button5Motion"> <bit>12</bit></item> 148d4401354Smrg <item name="ButtonMotion"> <bit>13</bit></item> 149d4401354Smrg <item name="KeymapState"> <bit>14</bit></item> 150d4401354Smrg <item name="Exposure"> <bit>15</bit></item> 151d4401354Smrg <item name="VisibilityChange"> <bit>16</bit></item> 152d4401354Smrg <item name="StructureNotify"> <bit>17</bit></item> 153d4401354Smrg <item name="ResizeRedirect"> <bit>18</bit></item> 154d4401354Smrg <item name="SubstructureNotify"> <bit>19</bit></item> 155d4401354Smrg <item name="SubstructureRedirect"><bit>20</bit></item> 156d4401354Smrg <item name="FocusChange"> <bit>21</bit></item> 157d4401354Smrg <item name="PropertyChange"> <bit>22</bit></item> 158d4401354Smrg <item name="ColorMapChange"> <bit>23</bit></item> 159d4401354Smrg <item name="OwnerGrabButton"> <bit>24</bit></item> 160d4401354Smrg </enum> 161d4401354Smrg 162d4401354Smrg <enum name="BackingStore"> 163d4401354Smrg <item name="NotUseful"> <value>0</value></item> 164d4401354Smrg <item name="WhenMapped"><value>1</value></item> 165d4401354Smrg <item name="Always"> <value>2</value></item> 166d4401354Smrg </enum> 167d4401354Smrg 168d4401354Smrg <struct name="SCREEN"> 169d4401354Smrg <field type="WINDOW" name="root" /> 170d4401354Smrg <field type="COLORMAP" name="default_colormap" /> 171d4401354Smrg <field type="CARD32" name="white_pixel" /> 172d4401354Smrg <field type="CARD32" name="black_pixel" /> 173d4401354Smrg <field type="CARD32" name="current_input_masks" mask="EventMask" /> 174d4401354Smrg <field type="CARD16" name="width_in_pixels" /> 175d4401354Smrg <field type="CARD16" name="height_in_pixels" /> 176d4401354Smrg <field type="CARD16" name="width_in_millimeters" /> 177d4401354Smrg <field type="CARD16" name="height_in_millimeters" /> 178d4401354Smrg <field type="CARD16" name="min_installed_maps" /> 179d4401354Smrg <field type="CARD16" name="max_installed_maps" /> 180d4401354Smrg <field type="VISUALID" name="root_visual" /> 181d4401354Smrg <field type="BYTE" name="backing_stores" enum="BackingStore" /> 182d4401354Smrg <field type="BOOL" name="save_unders" /> 183d4401354Smrg <field type="CARD8" name="root_depth" /> 184d4401354Smrg <field type="CARD8" name="allowed_depths_len" /> 185d4401354Smrg <list type="DEPTH" name="allowed_depths"> 186d4401354Smrg <fieldref>allowed_depths_len</fieldref> 187d4401354Smrg </list> 188d4401354Smrg </struct> 189d4401354Smrg 190d4401354Smrg <struct name="SetupRequest"> 191d4401354Smrg <field type="CARD8" name="byte_order" /> 192d4401354Smrg <pad bytes="1" /> 193d4401354Smrg <field type="CARD16" name="protocol_major_version" /> 194d4401354Smrg <field type="CARD16" name="protocol_minor_version" /> 195d4401354Smrg <field type="CARD16" name="authorization_protocol_name_len" /> 196d4401354Smrg <field type="CARD16" name="authorization_protocol_data_len" /> 197d4401354Smrg <pad bytes="2" /> 198d4401354Smrg <list type="char" name="authorization_protocol_name"> 199d4401354Smrg <fieldref>authorization_protocol_name_len</fieldref> 200d4401354Smrg </list> 201a27842ffSmrg <pad align="4" /> 202d4401354Smrg <list type="char" name="authorization_protocol_data"> 203d4401354Smrg <fieldref>authorization_protocol_data_len</fieldref> 204d4401354Smrg </list> 205a27842ffSmrg <pad align="4" /> 206d4401354Smrg </struct> 207d4401354Smrg 208d4401354Smrg <struct name="SetupFailed"> 209d4401354Smrg <field type="CARD8" name="status" /> <!-- always 0 -> Failed --> 210d4401354Smrg <field type="CARD8" name="reason_len" /> 211d4401354Smrg <field type="CARD16" name="protocol_major_version" /> 212d4401354Smrg <field type="CARD16" name="protocol_minor_version" /> 213d4401354Smrg <field type="CARD16" name="length" /> 214d4401354Smrg <list type="char" name="reason"> 215d4401354Smrg <fieldref>reason_len</fieldref> 216d4401354Smrg </list> 217d4401354Smrg </struct> 218d4401354Smrg 219d4401354Smrg <struct name="SetupAuthenticate"> 220d4401354Smrg <field type="CARD8" name="status" /> <!-- always 2 -> Authenticate --> 221d4401354Smrg <pad bytes="5" /> 222d4401354Smrg <field type="CARD16" name="length" /> 223d4401354Smrg <list type="char" name="reason"> 224d4401354Smrg <op op="*"> 225d4401354Smrg <fieldref>length</fieldref> 226d4401354Smrg <value>4</value> 227d4401354Smrg </op> 228d4401354Smrg </list> 229d4401354Smrg </struct> 230d4401354Smrg 231d4401354Smrg <enum name="ImageOrder"> 232d4401354Smrg <item name="LSBFirst"><value>0</value></item> 233d4401354Smrg <item name="MSBFirst"><value>1</value></item> 234d4401354Smrg </enum> 235d4401354Smrg 236d4401354Smrg <struct name="Setup"> 237d4401354Smrg <field type="CARD8" name="status" /> <!-- always 1 -> Success --> 238d4401354Smrg <pad bytes="1" /> 239d4401354Smrg <field type="CARD16" name="protocol_major_version" /> 240d4401354Smrg <field type="CARD16" name="protocol_minor_version" /> 241d4401354Smrg <field type="CARD16" name="length" /> 242d4401354Smrg <field type="CARD32" name="release_number" /> 243d4401354Smrg <field type="CARD32" name="resource_id_base" /> 244d4401354Smrg <field type="CARD32" name="resource_id_mask" /> 245d4401354Smrg <field type="CARD32" name="motion_buffer_size" /> 246d4401354Smrg <field type="CARD16" name="vendor_len" /> 247d4401354Smrg <field type="CARD16" name="maximum_request_length" /> 248d4401354Smrg <field type="CARD8" name="roots_len" /> 249d4401354Smrg <field type="CARD8" name="pixmap_formats_len" /> 250d4401354Smrg <field type="CARD8" name="image_byte_order" enum="ImageOrder" /> 251d4401354Smrg <field type="CARD8" name="bitmap_format_bit_order" enum="ImageOrder" /> 252d4401354Smrg <field type="CARD8" name="bitmap_format_scanline_unit" /> 253d4401354Smrg <field type="CARD8" name="bitmap_format_scanline_pad" /> 254d4401354Smrg <field type="KEYCODE" name="min_keycode" /> 255d4401354Smrg <field type="KEYCODE" name="max_keycode" /> 256d4401354Smrg <pad bytes="4" /> 257d4401354Smrg <list type="char" name="vendor"> 258d4401354Smrg <fieldref>vendor_len</fieldref> 259d4401354Smrg </list> 260891601f5Smrg <pad align="4" /> 261d4401354Smrg <list type="FORMAT" name="pixmap_formats"> 262d4401354Smrg <fieldref>pixmap_formats_len</fieldref> 263d4401354Smrg </list> 264d4401354Smrg <list type="SCREEN" name="roots"> 265d4401354Smrg <fieldref>roots_len</fieldref> 266d4401354Smrg </list> 267d4401354Smrg </struct> 268d4401354Smrg 269d4401354Smrg <!-- Core event types --> 270d4401354Smrg 271d4401354Smrg <enum name="ModMask"> 272d4401354Smrg <item name="Shift"> <bit>0</bit></item> 273d4401354Smrg <item name="Lock"> <bit>1</bit></item> 274d4401354Smrg <item name="Control"><bit>2</bit></item> 275d4401354Smrg <item name="1"> <bit>3</bit></item> 276d4401354Smrg <item name="2"> <bit>4</bit></item> 277d4401354Smrg <item name="3"> <bit>5</bit></item> 278d4401354Smrg <item name="4"> <bit>6</bit></item> 279d4401354Smrg <item name="5"> <bit>7</bit></item> 280d4401354Smrg <item name="Any"> <bit>15</bit></item> 281d4401354Smrg </enum> 282d4401354Smrg 283d4401354Smrg <enum name="KeyButMask"> 284d4401354Smrg <item name="Shift"> <bit>0</bit></item> 285d4401354Smrg <item name="Lock"> <bit>1</bit></item> 286d4401354Smrg <item name="Control"><bit>2</bit></item> 287d4401354Smrg <item name="Mod1"> <bit>3</bit></item> 288d4401354Smrg <item name="Mod2"> <bit>4</bit></item> 289d4401354Smrg <item name="Mod3"> <bit>5</bit></item> 290d4401354Smrg <item name="Mod4"> <bit>6</bit></item> 291d4401354Smrg <item name="Mod5"> <bit>7</bit></item> 292d4401354Smrg <item name="Button1"><bit>8</bit></item> 293d4401354Smrg <item name="Button2"><bit>9</bit></item> 294d4401354Smrg <item name="Button3"><bit>10</bit></item> 295d4401354Smrg <item name="Button4"><bit>11</bit></item> 296d4401354Smrg <item name="Button5"><bit>12</bit></item> 297d4401354Smrg </enum> 298d4401354Smrg 299d4401354Smrg <enum name="Window"> 300d4401354Smrg <item name="None"> <value>0</value></item> 301d4401354Smrg </enum> 302d4401354Smrg 303d4401354Smrg <event name="KeyPress" number="2"> 304d4401354Smrg <field type="KEYCODE" name="detail" /> 305d4401354Smrg <field type="TIMESTAMP" name="time" /> 306d4401354Smrg <field type="WINDOW" name="root" /> 307d4401354Smrg <field type="WINDOW" name="event" /> 308d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 309d4401354Smrg <field type="INT16" name="root_x" /> 310d4401354Smrg <field type="INT16" name="root_y" /> 311d4401354Smrg <field type="INT16" name="event_x" /> 312d4401354Smrg <field type="INT16" name="event_y" /> 313d4401354Smrg <field type="CARD16" name="state" mask="KeyButMask" /> 314d4401354Smrg <field type="BOOL" name="same_screen" /> 315d4401354Smrg <pad bytes="1" /> 316986c8b3dSmrg <doc> 317986c8b3dSmrg <brief>a key was pressed/released</brief> 318986c8b3dSmrg <field name="detail"><![CDATA[ 319986c8b3dSmrgThe keycode (a number representing a physical key on the keyboard) of the key 320986c8b3dSmrgwhich was pressed. 321986c8b3dSmrg ]]></field> 322986c8b3dSmrg <field name="time"><![CDATA[ 323986c8b3dSmrgTime when the event was generated (in milliseconds). 324986c8b3dSmrg ]]></field> 325986c8b3dSmrg <field name="root"><![CDATA[ 326986c8b3dSmrgThe root window of `child`. 327986c8b3dSmrg ]]></field> 328986c8b3dSmrg <field name="same_screen"><![CDATA[ 329986c8b3dSmrgWhether the `event` window is on the same screen as the `root` window. 330986c8b3dSmrg ]]></field> 331986c8b3dSmrg <field name="event_x"><![CDATA[ 332986c8b3dSmrgIf `same_screen` is true, this is the X coordinate relative to the `event` 333986c8b3dSmrgwindow's origin. Otherwise, `event_x` will be set to zero. 334986c8b3dSmrg ]]></field> 335986c8b3dSmrg <field name="event_y"><![CDATA[ 336986c8b3dSmrgIf `same_screen` is true, this is the Y coordinate relative to the `event` 337986c8b3dSmrgwindow's origin. Otherwise, `event_y` will be set to zero. 338986c8b3dSmrg ]]></field> 339986c8b3dSmrg <field name="root_x"><![CDATA[ 340986c8b3dSmrgThe X coordinate of the pointer relative to the `root` window at the time of 341986c8b3dSmrgthe event. 342986c8b3dSmrg ]]></field> 343986c8b3dSmrg <field name="root_y"><![CDATA[ 344986c8b3dSmrgThe Y coordinate of the pointer relative to the `root` window at the time of 345986c8b3dSmrgthe event. 346986c8b3dSmrg ]]></field> 347986c8b3dSmrg <field name="state"><![CDATA[ 348986c8b3dSmrgThe logical state of the pointer buttons and modifier keys just prior to the 349986c8b3dSmrgevent. 350986c8b3dSmrg ]]></field> 351986c8b3dSmrg <see type="request" name="GrabKey" /> 352986c8b3dSmrg <see type="request" name="GrabKeyboard" /> 353986c8b3dSmrg </doc> 354d4401354Smrg </event> 355d4401354Smrg 356d4401354Smrg <eventcopy name="KeyRelease" number="3" ref="KeyPress" /> 357d4401354Smrg 358d4401354Smrg <enum name="ButtonMask"> 359d4401354Smrg <item name="1"> <bit>8</bit></item> 360d4401354Smrg <item name="2"> <bit>9</bit></item> 361d4401354Smrg <item name="3"> <bit>10</bit></item> 362d4401354Smrg <item name="4"> <bit>11</bit></item> 363d4401354Smrg <item name="5"> <bit>12</bit></item> 364d4401354Smrg <item name="Any"> <bit>15</bit></item> 365d4401354Smrg </enum> 366d4401354Smrg 367d4401354Smrg <event name="ButtonPress" number="4"> 368d4401354Smrg <field type="BUTTON" name="detail" /> 369d4401354Smrg <field type="TIMESTAMP" name="time" /> 370d4401354Smrg <field type="WINDOW" name="root" /> 371d4401354Smrg <field type="WINDOW" name="event" /> 372d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 373d4401354Smrg <field type="INT16" name="root_x" /> 374d4401354Smrg <field type="INT16" name="root_y" /> 375d4401354Smrg <field type="INT16" name="event_x" /> 376d4401354Smrg <field type="INT16" name="event_y" /> 377d4401354Smrg <field type="CARD16" name="state" mask="KeyButMask" /> 378d4401354Smrg <field type="BOOL" name="same_screen" /> 379d4401354Smrg <pad bytes="1" /> 380986c8b3dSmrg <doc> 381986c8b3dSmrg <brief>a mouse button was pressed/released</brief> 382986c8b3dSmrg <field name="detail"><![CDATA[ 383986c8b3dSmrgThe keycode (a number representing a physical key on the keyboard) of the key 384986c8b3dSmrgwhich was pressed. 385986c8b3dSmrg ]]></field> 386986c8b3dSmrg <field name="time"><![CDATA[ 387986c8b3dSmrgTime when the event was generated (in milliseconds). 388986c8b3dSmrg ]]></field> 389986c8b3dSmrg <field name="root"><![CDATA[ 390986c8b3dSmrgThe root window of `child`. 391986c8b3dSmrg ]]></field> 392986c8b3dSmrg <field name="same_screen"><![CDATA[ 393986c8b3dSmrgWhether the `event` window is on the same screen as the `root` window. 394986c8b3dSmrg ]]></field> 395986c8b3dSmrg <field name="event_x"><![CDATA[ 396986c8b3dSmrgIf `same_screen` is true, this is the X coordinate relative to the `event` 397986c8b3dSmrgwindow's origin. Otherwise, `event_x` will be set to zero. 398986c8b3dSmrg ]]></field> 399986c8b3dSmrg <field name="event_y"><![CDATA[ 400986c8b3dSmrgIf `same_screen` is true, this is the Y coordinate relative to the `event` 401986c8b3dSmrgwindow's origin. Otherwise, `event_y` will be set to zero. 402986c8b3dSmrg ]]></field> 403986c8b3dSmrg <field name="root_x"><![CDATA[ 404986c8b3dSmrgThe X coordinate of the pointer relative to the `root` window at the time of 405986c8b3dSmrgthe event. 406986c8b3dSmrg ]]></field> 407986c8b3dSmrg <field name="root_y"><![CDATA[ 408986c8b3dSmrgThe Y coordinate of the pointer relative to the `root` window at the time of 409986c8b3dSmrgthe event. 410986c8b3dSmrg ]]></field> 411986c8b3dSmrg <field name="state"><![CDATA[ 412986c8b3dSmrgThe logical state of the pointer buttons and modifier keys just prior to the 413986c8b3dSmrgevent. 414986c8b3dSmrg ]]></field> 415986c8b3dSmrg <see type="request" name="GrabButton" /> 416986c8b3dSmrg <see type="request" name="GrabPointer" /> 417986c8b3dSmrg </doc> 418d4401354Smrg </event> 419d4401354Smrg 420d4401354Smrg <eventcopy name="ButtonRelease" number="5" ref="ButtonPress" /> 421d4401354Smrg 422d4401354Smrg <!-- MotionNotify detail --> 423d4401354Smrg <enum name="Motion"> 424d4401354Smrg <item name="Normal"><value>0</value></item> 425d4401354Smrg <item name="Hint"> <value>1</value></item> 426d4401354Smrg </enum> 427d4401354Smrg 428d4401354Smrg <event name="MotionNotify" number="6"> 429d4401354Smrg <field type="BYTE" name="detail" enum="Motion" /> 430d4401354Smrg <field type="TIMESTAMP" name="time" /> 431d4401354Smrg <field type="WINDOW" name="root" /> 432d4401354Smrg <field type="WINDOW" name="event" /> 433d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 434d4401354Smrg <field type="INT16" name="root_x" /> 435d4401354Smrg <field type="INT16" name="root_y" /> 436d4401354Smrg <field type="INT16" name="event_x" /> 437d4401354Smrg <field type="INT16" name="event_y" /> 438d4401354Smrg <field type="CARD16" name="state" mask="KeyButMask" /> 439d4401354Smrg <field type="BOOL" name="same_screen" /> 440d4401354Smrg <pad bytes="1" /> 441986c8b3dSmrg <doc> 442986c8b3dSmrg <brief>a key was pressed</brief> 443986c8b3dSmrg <field name="detail"><![CDATA[ 444986c8b3dSmrgThe keycode (a number representing a physical key on the keyboard) of the key 445986c8b3dSmrgwhich was pressed. 446986c8b3dSmrg ]]></field> 447986c8b3dSmrg <field name="time"><![CDATA[ 448986c8b3dSmrgTime when the event was generated (in milliseconds). 449986c8b3dSmrg ]]></field> 450986c8b3dSmrg <field name="root"><![CDATA[ 451986c8b3dSmrgThe root window of `child`. 452986c8b3dSmrg ]]></field> 453986c8b3dSmrg <field name="same_screen"><![CDATA[ 454986c8b3dSmrgWhether the `event` window is on the same screen as the `root` window. 455986c8b3dSmrg ]]></field> 456986c8b3dSmrg <field name="event_x"><![CDATA[ 457986c8b3dSmrgIf `same_screen` is true, this is the X coordinate relative to the `event` 458986c8b3dSmrgwindow's origin. Otherwise, `event_x` will be set to zero. 459986c8b3dSmrg ]]></field> 460986c8b3dSmrg <field name="event_y"><![CDATA[ 461986c8b3dSmrgIf `same_screen` is true, this is the Y coordinate relative to the `event` 462986c8b3dSmrgwindow's origin. Otherwise, `event_y` will be set to zero. 463986c8b3dSmrg ]]></field> 464986c8b3dSmrg <field name="root_x"><![CDATA[ 465986c8b3dSmrgThe X coordinate of the pointer relative to the `root` window at the time of 466986c8b3dSmrgthe event. 467986c8b3dSmrg ]]></field> 468986c8b3dSmrg <field name="root_y"><![CDATA[ 469986c8b3dSmrgThe Y coordinate of the pointer relative to the `root` window at the time of 470986c8b3dSmrgthe event. 471986c8b3dSmrg ]]></field> 472986c8b3dSmrg <field name="state"><![CDATA[ 473986c8b3dSmrgThe logical state of the pointer buttons and modifier keys just prior to the 474986c8b3dSmrgevent. 475986c8b3dSmrg ]]></field> 476986c8b3dSmrg <see type="request" name="GrabKey" /> 477986c8b3dSmrg <see type="request" name="GrabKeyboard" /> 478986c8b3dSmrg </doc> 479d4401354Smrg </event> 480d4401354Smrg 481d4401354Smrg <enum name="NotifyDetail"> 482d4401354Smrg <item name="Ancestor"> <value>0</value></item> 483d4401354Smrg <item name="Virtual"> <value>1</value></item> 484d4401354Smrg <item name="Inferior"> <value>2</value></item> 485d4401354Smrg <item name="Nonlinear"> <value>3</value></item> 486d4401354Smrg <item name="NonlinearVirtual"><value>4</value></item> 487d4401354Smrg <item name="Pointer"> <value>5</value></item> 488d4401354Smrg <item name="PointerRoot"> <value>6</value></item> 489d4401354Smrg <item name="None"> <value>7</value></item> 490d4401354Smrg </enum> 491d4401354Smrg 492d4401354Smrg <enum name="NotifyMode"> 493d4401354Smrg <item name="Normal"> <value>0</value></item> 494d4401354Smrg <item name="Grab"> <value>1</value></item> 495d4401354Smrg <item name="Ungrab"> <value>2</value></item> 496d4401354Smrg <item name="WhileGrabbed"><value>3</value></item> 497d4401354Smrg </enum> 498d4401354Smrg 499d4401354Smrg <event name="EnterNotify" number="7"> 500d4401354Smrg <field type="BYTE" name="detail" enum="NotifyDetail" /> 501d4401354Smrg <field type="TIMESTAMP" name="time" /> 502d4401354Smrg <field type="WINDOW" name="root" /> 503d4401354Smrg <field type="WINDOW" name="event" /> 504d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 505d4401354Smrg <field type="INT16" name="root_x" /> 506d4401354Smrg <field type="INT16" name="root_y" /> 507d4401354Smrg <field type="INT16" name="event_x" /> 508d4401354Smrg <field type="INT16" name="event_y" /> 509d4401354Smrg <field type="CARD16" name="state" mask="KeyButMask" /> 510d4401354Smrg <field type="BYTE" name="mode" enum="NotifyMode" /> 511d4401354Smrg <field type="BYTE" name="same_screen_focus" /> 512986c8b3dSmrg <doc> 513986c8b3dSmrg <brief>the pointer is in a different window</brief> 514986c8b3dSmrg <field name="event"><![CDATA[ 515b26960f7SmrgThe window on which the event was generated. 516986c8b3dSmrg ]]></field> 517b26960f7Smrg <field name="child"><![CDATA[ 518b26960f7SmrgIf the `event` window has subwindows and the final pointer position is in one 519b26960f7Smrgof them, then `child` is set to that subwindow, `XCB_WINDOW_NONE` otherwise. 520986c8b3dSmrg ]]></field> 521986c8b3dSmrg <field name="root"><![CDATA[ 522986c8b3dSmrgThe root window for the final cursor position. 523986c8b3dSmrg ]]></field> 524986c8b3dSmrg <field name="root_x"><![CDATA[ 525986c8b3dSmrgThe pointer X coordinate relative to `root`'s origin at the time of the event. 526986c8b3dSmrg ]]></field> 527986c8b3dSmrg <field name="root_y"><![CDATA[ 528986c8b3dSmrgThe pointer Y coordinate relative to `root`'s origin at the time of the event. 529986c8b3dSmrg ]]></field> 530986c8b3dSmrg <field name="event_x"><![CDATA[ 531986c8b3dSmrgIf `event` is on the same screen as `root`, this is the pointer X coordinate 532986c8b3dSmrgrelative to the event window's origin. 533986c8b3dSmrg ]]></field> 534986c8b3dSmrg <field name="event_y"><![CDATA[ 535986c8b3dSmrgIf `event` is on the same screen as `root`, this is the pointer Y coordinate 536986c8b3dSmrgrelative to the event window's origin. 537986c8b3dSmrg ]]></field> 538986c8b3dSmrg <field name="mode" /> 539986c8b3dSmrg </doc> 540d4401354Smrg </event> 541d4401354Smrg 542d4401354Smrg <eventcopy name="LeaveNotify" number="8" ref="EnterNotify" /> 543d4401354Smrg 544d4401354Smrg <event name="FocusIn" number="9"> 545d4401354Smrg <field type="BYTE" name="detail" enum="NotifyDetail" /> 546d4401354Smrg <field type="WINDOW" name="event" /> 547d4401354Smrg <field type="BYTE" name="mode" enum="NotifyMode" /> 548d4401354Smrg <pad bytes="3" /> 549986c8b3dSmrg <doc> 550986c8b3dSmrg <brief>NOT YET DOCUMENTED</brief> 551986c8b3dSmrg <field name="event"><![CDATA[ 552986c8b3dSmrgThe window on which the focus event was generated. This is the window used by 553986c8b3dSmrgthe X server to report the event. 554986c8b3dSmrg ]]></field> 555986c8b3dSmrg <!-- enum documentation is sufficient --> 556986c8b3dSmrg <field name="detail" /> 557986c8b3dSmrg <field name="mode" /> 558986c8b3dSmrg </doc> 559d4401354Smrg </event> 560d4401354Smrg 561d4401354Smrg <eventcopy name="FocusOut" number="10" ref="FocusIn" /> 562d4401354Smrg 563d4401354Smrg <event name="KeymapNotify" number="11" no-sequence-number="true"> 564d4401354Smrg <list type="CARD8" name="keys"><value>31</value></list> 565d4401354Smrg </event> 566d4401354Smrg 567d4401354Smrg <event name="Expose" number="12"> 568d4401354Smrg <pad bytes="1" /> 569d4401354Smrg <field type="WINDOW" name="window" /> 570d4401354Smrg <field type="CARD16" name="x" /> 571d4401354Smrg <field type="CARD16" name="y" /> 572d4401354Smrg <field type="CARD16" name="width" /> 573d4401354Smrg <field type="CARD16" name="height" /> 574d4401354Smrg <field type="CARD16" name="count" /> 575d4401354Smrg <pad bytes="2" /> 576986c8b3dSmrg <doc> 577986c8b3dSmrg <brief>NOT YET DOCUMENTED</brief> 578986c8b3dSmrg <field name="window"><![CDATA[ 579986c8b3dSmrgThe exposed (damaged) window. 580986c8b3dSmrg ]]></field> 581986c8b3dSmrg <field name="x"><![CDATA[ 582986c8b3dSmrgThe X coordinate of the left-upper corner of the exposed rectangle, relative to 583986c8b3dSmrgthe `window`'s origin. 584986c8b3dSmrg ]]></field> 585986c8b3dSmrg <field name="y"><![CDATA[ 586986c8b3dSmrgThe Y coordinate of the left-upper corner of the exposed rectangle, relative to 587986c8b3dSmrgthe `window`'s origin. 588986c8b3dSmrg ]]></field> 589986c8b3dSmrg <field name="width"><![CDATA[ 590986c8b3dSmrgThe width of the exposed rectangle. 591986c8b3dSmrg ]]></field> 592986c8b3dSmrg <field name="height"><![CDATA[ 593986c8b3dSmrgThe height of the exposed rectangle. 594986c8b3dSmrg ]]></field> 595986c8b3dSmrg <field name="count"><![CDATA[ 596986c8b3dSmrgThe amount of `Expose` events following this one. Simple applications that do 597986c8b3dSmrgnot want to optimize redisplay by distinguishing between subareas of its window 598986c8b3dSmrgcan just ignore all Expose events with nonzero counts and perform full 599986c8b3dSmrgredisplays on events with zero counts. 600986c8b3dSmrg ]]></field> 601986c8b3dSmrg </doc> 602d4401354Smrg </event> 603d4401354Smrg 604d4401354Smrg <event name="GraphicsExposure" number="13"> 605d4401354Smrg <pad bytes="1" /> 606d4401354Smrg <field type="DRAWABLE" name="drawable" /> 607d4401354Smrg <field type="CARD16" name="x" /> 608d4401354Smrg <field type="CARD16" name="y" /> 609d4401354Smrg <field type="CARD16" name="width" /> 610d4401354Smrg <field type="CARD16" name="height" /> 611d4401354Smrg <field type="CARD16" name="minor_opcode" /> 612d4401354Smrg <field type="CARD16" name="count" /> 613d4401354Smrg <field type="CARD8" name="major_opcode" /> 614d4401354Smrg <pad bytes="3" /> 615d4401354Smrg </event> 616d4401354Smrg 617d4401354Smrg <event name="NoExposure" number="14"> 618d4401354Smrg <pad bytes="1" /> 619d4401354Smrg <field type="DRAWABLE" name="drawable" /> 620d4401354Smrg <field type="CARD16" name="minor_opcode" /> 621d4401354Smrg <field type="CARD8" name="major_opcode" /> 622d4401354Smrg <pad bytes="1" /> 623d4401354Smrg </event> 624d4401354Smrg 625d4401354Smrg <enum name="Visibility"> 626d4401354Smrg <item name="Unobscured"> <value>0</value></item> 627d4401354Smrg <item name="PartiallyObscured"><value>1</value></item> 628d4401354Smrg <item name="FullyObscured"> <value>2</value></item> 629d4401354Smrg </enum> 630d4401354Smrg 631d4401354Smrg <event name="VisibilityNotify" number="15"> 632d4401354Smrg <pad bytes="1" /> 633d4401354Smrg <field type="WINDOW" name="window" /> 634d4401354Smrg <field type="BYTE" name="state" enum="Visibility" /> 635d4401354Smrg <pad bytes="3" /> 636d4401354Smrg </event> 637d4401354Smrg 638d4401354Smrg <event name="CreateNotify" number="16"> 639d4401354Smrg <pad bytes="1" /> 640d4401354Smrg <field type="WINDOW" name="parent" /> 641d4401354Smrg <field type="WINDOW" name="window" /> 642d4401354Smrg <field type="INT16" name="x" /> 643d4401354Smrg <field type="INT16" name="y" /> 644d4401354Smrg <field type="CARD16" name="width" /> 645d4401354Smrg <field type="CARD16" name="height" /> 646d4401354Smrg <field type="CARD16" name="border_width" /> 647d4401354Smrg <field type="BOOL" name="override_redirect" /> 648d4401354Smrg <pad bytes="1" /> 649d4401354Smrg </event> 650d4401354Smrg 651d4401354Smrg <event name="DestroyNotify" number="17"> 652d4401354Smrg <pad bytes="1" /> 653d4401354Smrg <field type="WINDOW" name="event" /> 654d4401354Smrg <field type="WINDOW" name="window" /> 655986c8b3dSmrg <doc> 656986c8b3dSmrg <brief>a window is destroyed</brief> 657986c8b3dSmrg <field name="event"><![CDATA[ 658986c8b3dSmrgThe reconfigured window or its parent, depending on whether `StructureNotify` 659986c8b3dSmrgor `SubstructureNotify` was selected. 660986c8b3dSmrg ]]></field> 661986c8b3dSmrg <field name="window"><![CDATA[ 662986c8b3dSmrgThe window that is destroyed. 663986c8b3dSmrg ]]></field> 664986c8b3dSmrg <see type="request" name="DestroyWindow" /> 665986c8b3dSmrg </doc> 666d4401354Smrg </event> 667d4401354Smrg 668d4401354Smrg <event name="UnmapNotify" number="18"> 669d4401354Smrg <pad bytes="1" /> 670d4401354Smrg <field type="WINDOW" name="event" /> 671d4401354Smrg <field type="WINDOW" name="window" /> 672d4401354Smrg <field type="BOOL" name="from_configure" /> 673d4401354Smrg <pad bytes="3" /> 674986c8b3dSmrg <doc> 675986c8b3dSmrg <brief>a window is unmapped</brief> 676986c8b3dSmrg <field name="event"><![CDATA[ 677986c8b3dSmrgThe reconfigured window or its parent, depending on whether `StructureNotify` 678986c8b3dSmrgor `SubstructureNotify` was selected. 679986c8b3dSmrg ]]></field> 680986c8b3dSmrg <field name="window"><![CDATA[ 681986c8b3dSmrgThe window that was unmapped. 682986c8b3dSmrg ]]></field> 683986c8b3dSmrg <field name="from_configure"><![CDATA[ 684986c8b3dSmrgSet to 1 if the event was generated as a result of a resizing of the window's 685986c8b3dSmrgparent when `window` had a win_gravity of `UnmapGravity`. 686986c8b3dSmrg ]]></field> 687986c8b3dSmrg <see type="request" name="UnmapWindow" /> 688986c8b3dSmrg </doc> 689d4401354Smrg </event> 690d4401354Smrg 691d4401354Smrg <event name="MapNotify" number="19"> 692d4401354Smrg <pad bytes="1" /> 693d4401354Smrg <field type="WINDOW" name="event" /> 694d4401354Smrg <field type="WINDOW" name="window" /> 695d4401354Smrg <field type="BOOL" name="override_redirect" /> 696d4401354Smrg <pad bytes="3" /> 697986c8b3dSmrg <doc> 698986c8b3dSmrg <brief>a window was mapped</brief> 699986c8b3dSmrg <field name="event"><![CDATA[ 700986c8b3dSmrgThe window which was mapped or its parent, depending on whether 701986c8b3dSmrg`StructureNotify` or `SubstructureNotify` was selected. 702986c8b3dSmrg ]]></field> 703986c8b3dSmrg <field name="window"><![CDATA[ 704986c8b3dSmrgThe window that was mapped. 705986c8b3dSmrg ]]></field> 706986c8b3dSmrg <field name="override_redirect"><![CDATA[ 707986c8b3dSmrgWindow managers should ignore this window if `override_redirect` is 1. 708986c8b3dSmrg ]]></field> 709986c8b3dSmrg <see type="request" name="MapWindow" /> 710986c8b3dSmrg </doc> 711d4401354Smrg </event> 712d4401354Smrg 713d4401354Smrg <event name="MapRequest" number="20"> 714d4401354Smrg <pad bytes="1" /> 715d4401354Smrg <field type="WINDOW" name="parent" /> 716d4401354Smrg <field type="WINDOW" name="window" /> 717986c8b3dSmrg <doc> 718986c8b3dSmrg <brief>window wants to be mapped</brief> 719986c8b3dSmrg <field name="parent"><![CDATA[ 720986c8b3dSmrgThe parent of `window`. 721986c8b3dSmrg ]]></field> 722986c8b3dSmrg <field name="window"><![CDATA[ 723986c8b3dSmrgThe window to be mapped. 724986c8b3dSmrg ]]></field> 725986c8b3dSmrg <see type="request" name="MapWindow" /> 726986c8b3dSmrg </doc> 727d4401354Smrg </event> 728d4401354Smrg 729d4401354Smrg <event name="ReparentNotify" number="21"> 730d4401354Smrg <pad bytes="1" /> 731d4401354Smrg <field type="WINDOW" name="event" /> 732d4401354Smrg <field type="WINDOW" name="window" /> 733d4401354Smrg <field type="WINDOW" name="parent" /> 734d4401354Smrg <field type="INT16" name="x" /> 735d4401354Smrg <field type="INT16" name="y" /> 736d4401354Smrg <field type="BOOL" name="override_redirect" /> 737d4401354Smrg <pad bytes="3" /> 738d4401354Smrg </event> 739d4401354Smrg 740d4401354Smrg <event name="ConfigureNotify" number="22"> 741d4401354Smrg <pad bytes="1" /> 742d4401354Smrg <field type="WINDOW" name="event" /> 743d4401354Smrg <field type="WINDOW" name="window" /> 744d4401354Smrg <field type="WINDOW" name="above_sibling" altenum="Window" /> 745d4401354Smrg <field type="INT16" name="x" /> 746d4401354Smrg <field type="INT16" name="y" /> 747d4401354Smrg <field type="CARD16" name="width" /> 748d4401354Smrg <field type="CARD16" name="height" /> 749d4401354Smrg <field type="CARD16" name="border_width" /> 750d4401354Smrg <field type="BOOL" name="override_redirect" /> 751d4401354Smrg <pad bytes="1" /> 752986c8b3dSmrg <doc> 753986c8b3dSmrg <brief>NOT YET DOCUMENTED</brief> 754986c8b3dSmrg <field name="event"><![CDATA[ 755986c8b3dSmrgThe reconfigured window or its parent, depending on whether `StructureNotify` 756986c8b3dSmrgor `SubstructureNotify` was selected. 757986c8b3dSmrg ]]></field> 758986c8b3dSmrg <field name="window"><![CDATA[ 759986c8b3dSmrgThe window whose size, position, border, and/or stacking order was changed. 760986c8b3dSmrg ]]></field> 761986c8b3dSmrg <field name="above_sibling"><![CDATA[ 762986c8b3dSmrgIf `XCB_NONE`, the `window` is on the bottom of the stack with respect to 763986c8b3dSmrgsibling windows. However, if set to a sibling window, the `window` is placed on 764986c8b3dSmrgtop of this sibling window. 765986c8b3dSmrg ]]></field> 766986c8b3dSmrg <field name="x"><![CDATA[ 767986c8b3dSmrgThe X coordinate of the upper-left outside corner of `window`, relative to the 768986c8b3dSmrgparent window's origin. 769986c8b3dSmrg ]]></field> 770986c8b3dSmrg <field name="y"><![CDATA[ 771986c8b3dSmrgThe Y coordinate of the upper-left outside corner of `window`, relative to the 772986c8b3dSmrgparent window's origin. 773986c8b3dSmrg ]]></field> 774986c8b3dSmrg <field name="width"><![CDATA[ 775986c8b3dSmrgThe inside width of `window`, not including the border. 776986c8b3dSmrg ]]></field> 777986c8b3dSmrg <field name="height"><![CDATA[ 778986c8b3dSmrgThe inside height of `window`, not including the border. 779986c8b3dSmrg ]]></field> 780986c8b3dSmrg <field name="border_width"><![CDATA[ 781986c8b3dSmrgThe border width of `window`. 782986c8b3dSmrg ]]></field> 783986c8b3dSmrg <field name="override_redirect"><![CDATA[ 784986c8b3dSmrgWindow managers should ignore this window if `override_redirect` is 1. 785986c8b3dSmrg ]]></field> 786986c8b3dSmrg <see type="request" name="FreeColormap" /> 787986c8b3dSmrg </doc> 788d4401354Smrg </event> 789d4401354Smrg 790d4401354Smrg <event name="ConfigureRequest" number="23"> 791d4401354Smrg <field type="BYTE" name="stack_mode" enum="StackMode" /> 792d4401354Smrg <field type="WINDOW" name="parent" /> 793d4401354Smrg <field type="WINDOW" name="window" /> 794d4401354Smrg <field type="WINDOW" name="sibling" altenum="Window" /> 795d4401354Smrg <field type="INT16" name="x" /> 796d4401354Smrg <field type="INT16" name="y" /> 797d4401354Smrg <field type="CARD16" name="width" /> 798d4401354Smrg <field type="CARD16" name="height" /> 799d4401354Smrg <field type="CARD16" name="border_width" /> 800d4401354Smrg <field type="CARD16" name="value_mask" mask="ConfigWindow" /> 801d4401354Smrg </event> 802d4401354Smrg 803d4401354Smrg <event name="GravityNotify" number="24"> 804d4401354Smrg <pad bytes="1" /> 805d4401354Smrg <field type="WINDOW" name="event" /> 806d4401354Smrg <field type="WINDOW" name="window" /> 807d4401354Smrg <field type="INT16" name="x" /> 808d4401354Smrg <field type="INT16" name="y" /> 809d4401354Smrg </event> 810d4401354Smrg 811d4401354Smrg <event name="ResizeRequest" number="25"> 812d4401354Smrg <pad bytes="1" /> 813d4401354Smrg <field type="WINDOW" name="window" /> 814d4401354Smrg <field type="CARD16" name="width" /> 815d4401354Smrg <field type="CARD16" name="height" /> 816d4401354Smrg </event> 817d4401354Smrg 818d4401354Smrg <enum name="Place"> 819d4401354Smrg <item name="OnTop"> <value>0</value></item> 820d4401354Smrg <item name="OnBottom"><value>1</value></item> 821986c8b3dSmrg <doc> 822986c8b3dSmrg <field name="OnTop"><![CDATA[ 823986c8b3dSmrgThe window is now on top of all siblings. 824986c8b3dSmrg ]]></field> 825986c8b3dSmrg <field name="OnBottom"><![CDATA[ 826986c8b3dSmrgThe window is now below all siblings. 827986c8b3dSmrg ]]></field> 828986c8b3dSmrg </doc> 829d4401354Smrg </enum> 830d4401354Smrg 831d4401354Smrg <event name="CirculateNotify" number="26"> 832d4401354Smrg <pad bytes="1" /> 833d4401354Smrg <field type="WINDOW" name="event" /> 834d4401354Smrg <field type="WINDOW" name="window" /> 835d4401354Smrg <pad bytes="4" /> 836d4401354Smrg <field type="BYTE" name="place" enum="Place" /> 837d4401354Smrg <pad bytes="3" /> 838986c8b3dSmrg <doc> 839986c8b3dSmrg <brief>NOT YET DOCUMENTED</brief> 840986c8b3dSmrg <field name="event"><![CDATA[ 841986c8b3dSmrgEither the restacked window or its parent, depending on whether 842986c8b3dSmrg`StructureNotify` or `SubstructureNotify` was selected. 843986c8b3dSmrg ]]></field> 844986c8b3dSmrg <field name="window"><![CDATA[ 845986c8b3dSmrgThe restacked window. 846986c8b3dSmrg ]]></field> 847986c8b3dSmrg <!-- the enum doc is sufficient --> 848986c8b3dSmrg <field name="place" /> 849986c8b3dSmrg <see type="request" name="CirculateWindow" /> 850986c8b3dSmrg </doc> 851d4401354Smrg </event> 852d4401354Smrg 853d4401354Smrg <eventcopy name="CirculateRequest" number="27" ref="CirculateNotify" /> 854d4401354Smrg 855d4401354Smrg <enum name="Property"> 856d4401354Smrg <item name="NewValue"><value>0</value></item> 857d4401354Smrg <item name="Delete"> <value>1</value></item> 858d4401354Smrg </enum> 859d4401354Smrg 860d4401354Smrg <event name="PropertyNotify" number="28"> 861d4401354Smrg <pad bytes="1" /> 862d4401354Smrg <field type="WINDOW" name="window" /> 863d4401354Smrg <field type="ATOM" name="atom" /> 864d4401354Smrg <field type="TIMESTAMP" name="time" /> 865d4401354Smrg <field type="BYTE" name="state" enum="Property" /> 866d4401354Smrg <pad bytes="3" /> 867986c8b3dSmrg <doc> 868986c8b3dSmrg <brief>a window property changed</brief> 869986c8b3dSmrg <field name="window"><![CDATA[ 870986c8b3dSmrgThe window whose associated property was changed. 871986c8b3dSmrg ]]></field> 872986c8b3dSmrg <field name="atom"><![CDATA[ 873986c8b3dSmrgThe property's atom, to indicate which property was changed. 874986c8b3dSmrg ]]></field> 875986c8b3dSmrg <field name="time"><![CDATA[ 876986c8b3dSmrgA timestamp of the server time when the property was changed. 877986c8b3dSmrg ]]></field> 878986c8b3dSmrg <!-- enum documentation is sufficient --> 879986c8b3dSmrg <field name="state" /> 880986c8b3dSmrg <see type="request" name="ChangeProperty" /> 881986c8b3dSmrg </doc> 882d4401354Smrg </event> 883d4401354Smrg 884d4401354Smrg <event name="SelectionClear" number="29"> 885d4401354Smrg <pad bytes="1" /> 886d4401354Smrg <field type="TIMESTAMP" name="time" /> 887d4401354Smrg <field type="WINDOW" name="owner" /> 888d4401354Smrg <field type="ATOM" name="selection" /> 889d4401354Smrg </event> 890d4401354Smrg 891d4401354Smrg <enum name="Time"> 892d4401354Smrg <item name="CurrentTime"> <value>0</value> </item> 893d4401354Smrg </enum> 894d4401354Smrg 895d4401354Smrg <enum name="Atom"> 896d4401354Smrg <item name="None"> <value>0</value></item> 897d4401354Smrg <item name="Any"> <value>0</value></item> 898f591e195Smrg <item name="PRIMARY"> <value>1</value> </item> 899f591e195Smrg <item name="SECONDARY"> <value>2</value> </item> 900f591e195Smrg <item name="ARC"> <value>3</value> </item> 901f591e195Smrg <item name="ATOM"> <value>4</value> </item> 902f591e195Smrg <item name="BITMAP"> <value>5</value> </item> 903f591e195Smrg <item name="CARDINAL"> <value>6</value> </item> 904f591e195Smrg <item name="COLORMAP"> <value>7</value> </item> 905f591e195Smrg <item name="CURSOR"> <value>8</value> </item> 906f591e195Smrg <item name="CUT_BUFFER0"> <value>9</value> </item> 907f591e195Smrg <item name="CUT_BUFFER1"> <value>10</value> </item> 908f591e195Smrg <item name="CUT_BUFFER2"> <value>11</value> </item> 909f591e195Smrg <item name="CUT_BUFFER3"> <value>12</value> </item> 910f591e195Smrg <item name="CUT_BUFFER4"> <value>13</value> </item> 911f591e195Smrg <item name="CUT_BUFFER5"> <value>14</value> </item> 912f591e195Smrg <item name="CUT_BUFFER6"> <value>15</value> </item> 913f591e195Smrg <item name="CUT_BUFFER7"> <value>16</value> </item> 914f591e195Smrg <item name="DRAWABLE"> <value>17</value> </item> 915f591e195Smrg <item name="FONT"> <value>18</value> </item> 916f591e195Smrg <item name="INTEGER"> <value>19</value> </item> 917f591e195Smrg <item name="PIXMAP"> <value>20</value> </item> 918f591e195Smrg <item name="POINT"> <value>21</value> </item> 919f591e195Smrg <item name="RECTANGLE"> <value>22</value> </item> 920f591e195Smrg <item name="RESOURCE_MANAGER"> <value>23</value> </item> 921f591e195Smrg <item name="RGB_COLOR_MAP"> <value>24</value> </item> 922f591e195Smrg <item name="RGB_BEST_MAP"> <value>25</value> </item> 923f591e195Smrg <item name="RGB_BLUE_MAP"> <value>26</value> </item> 924f591e195Smrg <item name="RGB_DEFAULT_MAP"> <value>27</value> </item> 925f591e195Smrg <item name="RGB_GRAY_MAP"> <value>28</value> </item> 926f591e195Smrg <item name="RGB_GREEN_MAP"> <value>29</value> </item> 927f591e195Smrg <item name="RGB_RED_MAP"> <value>30</value> </item> 928f591e195Smrg <item name="STRING"> <value>31</value> </item> 929f591e195Smrg <item name="VISUALID"> <value>32</value> </item> 930f591e195Smrg <item name="WINDOW"> <value>33</value> </item> 931f591e195Smrg <item name="WM_COMMAND"> <value>34</value> </item> 932f591e195Smrg <item name="WM_HINTS"> <value>35</value> </item> 933f591e195Smrg <item name="WM_CLIENT_MACHINE"> <value>36</value> </item> 934f591e195Smrg <item name="WM_ICON_NAME"> <value>37</value> </item> 935f591e195Smrg <item name="WM_ICON_SIZE"> <value>38</value> </item> 936f591e195Smrg <item name="WM_NAME"> <value>39</value> </item> 937f591e195Smrg <item name="WM_NORMAL_HINTS"> <value>40</value> </item> 938f591e195Smrg <item name="WM_SIZE_HINTS"> <value>41</value> </item> 939f591e195Smrg <item name="WM_ZOOM_HINTS"> <value>42</value> </item> 940f591e195Smrg <item name="MIN_SPACE"> <value>43</value> </item> 941f591e195Smrg <item name="NORM_SPACE"> <value>44</value> </item> 942f591e195Smrg <item name="MAX_SPACE"> <value>45</value> </item> 943f591e195Smrg <item name="END_SPACE"> <value>46</value> </item> 944f591e195Smrg <item name="SUPERSCRIPT_X"> <value>47</value> </item> 945f591e195Smrg <item name="SUPERSCRIPT_Y"> <value>48</value> </item> 946f591e195Smrg <item name="SUBSCRIPT_X"> <value>49</value> </item> 947f591e195Smrg <item name="SUBSCRIPT_Y"> <value>50</value> </item> 948f591e195Smrg <item name="UNDERLINE_POSITION"> <value>51</value> </item> 949f591e195Smrg <item name="UNDERLINE_THICKNESS"> <value>52</value> </item> 950f591e195Smrg <item name="STRIKEOUT_ASCENT"> <value>53</value> </item> 951f591e195Smrg <item name="STRIKEOUT_DESCENT"> <value>54</value> </item> 952f591e195Smrg <item name="ITALIC_ANGLE"> <value>55</value> </item> 953f591e195Smrg <item name="X_HEIGHT"> <value>56</value> </item> 954f591e195Smrg <item name="QUAD_WIDTH"> <value>57</value> </item> 955f591e195Smrg <item name="WEIGHT"> <value>58</value> </item> 956f591e195Smrg <item name="POINT_SIZE"> <value>59</value> </item> 957f591e195Smrg <item name="RESOLUTION"> <value>60</value> </item> 958f591e195Smrg <item name="COPYRIGHT"> <value>61</value> </item> 959f591e195Smrg <item name="NOTICE"> <value>62</value> </item> 960f591e195Smrg <item name="FONT_NAME"> <value>63</value> </item> 961f591e195Smrg <item name="FAMILY_NAME"> <value>64</value> </item> 962f591e195Smrg <item name="FULL_NAME"> <value>65</value> </item> 963f591e195Smrg <item name="CAP_HEIGHT"> <value>66</value> </item> 964f591e195Smrg <item name="WM_CLASS"> <value>67</value> </item> 965f591e195Smrg <item name="WM_TRANSIENT_FOR"> <value>68</value> </item> 966d4401354Smrg </enum> 967d4401354Smrg 968d4401354Smrg <event name="SelectionRequest" number="30"> 969d4401354Smrg <pad bytes="1" /> 970d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 971d4401354Smrg <field type="WINDOW" name="owner" /> 972d4401354Smrg <field type="WINDOW" name="requestor" /> 973d4401354Smrg <field type="ATOM" name="selection" /> 974d4401354Smrg <field type="ATOM" name="target" /> 975d4401354Smrg <field type="ATOM" name="property" altenum="Atom" /> 976d4401354Smrg </event> 977d4401354Smrg 978d4401354Smrg <event name="SelectionNotify" number="31"> 979d4401354Smrg <pad bytes="1" /> 980d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 981d4401354Smrg <field type="WINDOW" name="requestor" /> 982d4401354Smrg <field type="ATOM" name="selection" /> 983d4401354Smrg <field type="ATOM" name="target" /> 984d4401354Smrg <field type="ATOM" name="property" altenum="Atom" /> 985d4401354Smrg </event> 986d4401354Smrg 987d4401354Smrg <enum name="ColormapState"> 988d4401354Smrg <item name="Uninstalled"><value>0</value></item> 989d4401354Smrg <item name="Installed"> <value>1</value></item> 990986c8b3dSmrg <doc> 991986c8b3dSmrg <field name="Uninstalled"><![CDATA[ 992986c8b3dSmrgThe colormap was uninstalled. 993986c8b3dSmrg ]]></field> 994986c8b3dSmrg <field name="Installed"><![CDATA[ 995986c8b3dSmrgThe colormap was installed. 996986c8b3dSmrg ]]></field> 997986c8b3dSmrg </doc> 998d4401354Smrg </enum> 999d4401354Smrg 1000d4401354Smrg <enum name="Colormap"> 1001d4401354Smrg <item name="None"> <value>0</value></item> 1002d4401354Smrg </enum> 1003d4401354Smrg 1004d4401354Smrg <event name="ColormapNotify" number="32"> 1005d4401354Smrg <pad bytes="1" /> 1006d4401354Smrg <field type="WINDOW" name="window" /> 1007d4401354Smrg <field type="COLORMAP" name="colormap" altenum="Colormap" /> 1008d4401354Smrg <field type="BOOL" name="new" /> 1009d4401354Smrg <field type="BYTE" name="state" enum="ColormapState" /> 1010d4401354Smrg <pad bytes="2" /> 1011986c8b3dSmrg <doc> 1012986c8b3dSmrg <brief>the colormap for some window changed</brief> 1013986c8b3dSmrg <field name="window"><![CDATA[ 1014986c8b3dSmrgThe window whose associated colormap is changed, installed or uninstalled. 1015986c8b3dSmrg ]]></field> 1016986c8b3dSmrg <field name="colormap"><![CDATA[ 1017986c8b3dSmrgThe colormap which is changed, installed or uninstalled. This is `XCB_NONE` 1018986c8b3dSmrgwhen the colormap is changed by a call to `FreeColormap`. 1019986c8b3dSmrg ]]></field> 1020986c8b3dSmrg <field name="_new"><![CDATA[ 1021986c8b3dSmrgIndicates whether the colormap was changed (1) or installed/uninstalled (0). 1022986c8b3dSmrg ]]></field> 1023986c8b3dSmrg <!-- enum doc is sufficient --> 1024986c8b3dSmrg <field name="state" /> 1025986c8b3dSmrg <see type="request" name="FreeColormap" /> 1026986c8b3dSmrg </doc> 1027d4401354Smrg </event> 1028d4401354Smrg 1029d4401354Smrg <union name="ClientMessageData"> 1030d4401354Smrg <!-- The format member of the ClientMessage event determines which array 1031d4401354Smrg to use. --> 1032d4401354Smrg <list type="CARD8" name="data8" ><value>20</value></list> <!-- 8 --> 1033d4401354Smrg <list type="CARD16" name="data16"><value>10</value></list> <!-- 16 --> 1034d4401354Smrg <list type="CARD32" name="data32"><value>5</value></list> <!-- 32 --> 1035d4401354Smrg </union> 1036d4401354Smrg 1037d4401354Smrg <event name="ClientMessage" number="33"> 1038d4401354Smrg <field type="CARD8" name="format" /> <!-- 8, 16, or 32. --> 1039d4401354Smrg <field type="WINDOW" name="window" /> 1040d4401354Smrg <field type="ATOM" name="type" /> 1041d4401354Smrg <field type="ClientMessageData" name="data" /> 1042986c8b3dSmrg <doc> 1043986c8b3dSmrg <brief>NOT YET DOCUMENTED</brief> 1044986c8b3dSmrg <description><![CDATA[ 1045986c8b3dSmrgThis event represents a ClientMessage, sent by another X11 client. An example 1046986c8b3dSmrgis a client sending the `_NET_WM_STATE` ClientMessage to the root window 1047986c8b3dSmrgto indicate the fullscreen window state, effectively requesting that the window 1048986c8b3dSmrgmanager puts it into fullscreen mode. 1049986c8b3dSmrg ]]></description> 1050986c8b3dSmrg <field name="format"><![CDATA[ 1051986c8b3dSmrgSpecifies how to interpret `data`. Can be either 8, 16 or 32. 1052986c8b3dSmrg ]]></field> 1053986c8b3dSmrg <field name="type"><![CDATA[ 1054986c8b3dSmrgAn atom which indicates how the data should be interpreted by the receiving 1055986c8b3dSmrgclient. 1056986c8b3dSmrg ]]></field> 1057986c8b3dSmrg <field name="data"><![CDATA[ 1058986c8b3dSmrgThe data itself (20 bytes max). 1059986c8b3dSmrg ]]></field> 1060986c8b3dSmrg <see type="request" name="SendEvent" /> 1061986c8b3dSmrg </doc> 1062d4401354Smrg </event> 1063d4401354Smrg 1064d4401354Smrg <enum name="Mapping"> 1065d4401354Smrg <item name="Modifier"><value>0</value></item> 1066d4401354Smrg <item name="Keyboard"><value>1</value></item> 1067d4401354Smrg <item name="Pointer"> <value>2</value></item> 1068d4401354Smrg </enum> 1069d4401354Smrg 1070d4401354Smrg <event name="MappingNotify" number="34"> 1071d4401354Smrg <pad bytes="1" /> 1072d4401354Smrg <field type="BYTE" name="request" enum="Mapping" /> 1073d4401354Smrg <field type="KEYCODE" name="first_keycode" /> 1074d4401354Smrg <field type="CARD8" name="count" /> 1075d4401354Smrg <pad bytes="1" /> 1076986c8b3dSmrg <doc> 1077986c8b3dSmrg <brief>keyboard mapping changed</brief> 1078986c8b3dSmrg <!-- enum documentation is sufficient --> 1079986c8b3dSmrg <field name="request" /> 1080986c8b3dSmrg <field name="first_keycode"><![CDATA[ 1081986c8b3dSmrgThe first number in the range of the altered mapping. 1082986c8b3dSmrg ]]></field> 1083986c8b3dSmrg <field name="count"><![CDATA[ 1084986c8b3dSmrgThe number of keycodes altered. 1085986c8b3dSmrg ]]></field> 1086986c8b3dSmrg </doc> 1087d4401354Smrg </event> 1088d4401354Smrg 1089f591e195Smrg <event name="GeGeneric" number="35" xge="true"> 1090f591e195Smrg <pad bytes="22" /> 1091f591e195Smrg <doc> 1092f591e195Smrg <brief>generic event (with length)</brief> 1093f591e195Smrg <field name="extension"><![CDATA[ 1094f591e195SmrgThe major opcode of the extension creating this event 1095f591e195Smrg ]]></field> 1096f591e195Smrg <field name="length"><![CDATA[ 1097f591e195SmrgThe amount (in 4-byte units) of data beyond 32 bytes 1098f591e195Smrg ]]></field> 1099f591e195Smrg <field name="evtype"><![CDATA[ 1100f591e195SmrgThe extension-specific event type 1101f591e195Smrg ]]></field> 1102f591e195Smrg </doc> 1103f591e195Smrg </event> 1104d4401354Smrg 1105d4401354Smrg <!-- Core error types --> 1106d4401354Smrg 1107d4401354Smrg 1108d4401354Smrg 1109d4401354Smrg <error name="Request" number="1"> 1110d4401354Smrg <field type="CARD32" name="bad_value" /> 1111d4401354Smrg <field type="CARD16" name="minor_opcode" /> 1112d4401354Smrg <field type="CARD8" name="major_opcode" /> 1113d4401354Smrg <pad bytes="1" /> 1114d4401354Smrg </error> 1115d4401354Smrg 1116d4401354Smrg <error name="Value" number="2"> 1117d4401354Smrg <field type="CARD32" name="bad_value" /> 1118d4401354Smrg <field type="CARD16" name="minor_opcode" /> 1119d4401354Smrg <field type="CARD8" name="major_opcode" /> 1120d4401354Smrg <pad bytes="1" /> 1121d4401354Smrg </error> 1122d4401354Smrg 1123d4401354Smrg <errorcopy name="Window" number="3" ref="Value" /> 1124d4401354Smrg <errorcopy name="Pixmap" number="4" ref="Value" /> 1125d4401354Smrg <errorcopy name="Atom" number="5" ref="Value" /> 1126d4401354Smrg <errorcopy name="Cursor" number="6" ref="Value" /> 1127d4401354Smrg <errorcopy name="Font" number="7" ref="Value" /> 1128d4401354Smrg <errorcopy name="Match" number="8" ref="Request" /> 1129d4401354Smrg <errorcopy name="Drawable" number="9" ref="Value" /> 1130d4401354Smrg <errorcopy name="Access" number="10" ref="Request" /> 1131d4401354Smrg <errorcopy name="Alloc" number="11" ref="Request" /> 1132d4401354Smrg <errorcopy name="Colormap" number="12" ref="Value" /> 1133d4401354Smrg <errorcopy name="GContext" number="13" ref="Value" /> 1134d4401354Smrg <errorcopy name="IDChoice" number="14" ref="Value" /> 1135d4401354Smrg <errorcopy name="Name" number="15" ref="Request" /> 1136d4401354Smrg <errorcopy name="Length" number="16" ref="Request" /> 1137d4401354Smrg <errorcopy name="Implementation" number="17" ref="Request" /> 1138d4401354Smrg 1139d4401354Smrg 1140d4401354Smrg 1141d4401354Smrg <!-- The core requests, in major number order. --> 1142d4401354Smrg <!-- It is the caller's responsibility to free returned XCB*Rep objects. --> 1143d4401354Smrg 1144d4401354Smrg 1145d4401354Smrg 1146d4401354Smrg <enum name="WindowClass"> 1147d4401354Smrg <item name="CopyFromParent"><value>0</value></item> 1148d4401354Smrg <item name="InputOutput"> <value>1</value></item> 1149d4401354Smrg <item name="InputOnly"> <value>2</value></item> 1150d4401354Smrg </enum> 1151d4401354Smrg 1152d4401354Smrg <!-- Window attributes for CreateWindow and ChangeWindowAttributes. --> 1153d4401354Smrg <enum name="CW"> 1154d4401354Smrg <item name="BackPixmap"> <bit>0</bit></item> 1155d4401354Smrg <item name="BackPixel"> <bit>1</bit></item> 1156d4401354Smrg <item name="BorderPixmap"> <bit>2</bit></item> 1157d4401354Smrg <item name="BorderPixel"> <bit>3</bit></item> 1158d4401354Smrg <item name="BitGravity"> <bit>4</bit></item> 1159d4401354Smrg <item name="WinGravity"> <bit>5</bit></item> 1160d4401354Smrg <item name="BackingStore"> <bit>6</bit></item> 1161d4401354Smrg <item name="BackingPlanes"> <bit>7</bit></item> 1162d4401354Smrg <item name="BackingPixel"> <bit>8</bit></item> 1163d4401354Smrg <item name="OverrideRedirect"><bit>9</bit></item> 1164d4401354Smrg <item name="SaveUnder"> <bit>10</bit></item> 1165d4401354Smrg <item name="EventMask"> <bit>11</bit></item> 1166d4401354Smrg <item name="DontPropagate"> <bit>12</bit></item> 1167d4401354Smrg <item name="Colormap"> <bit>13</bit></item> 1168d4401354Smrg <item name="Cursor"> <bit>14</bit></item> 1169986c8b3dSmrg <doc> 1170986c8b3dSmrg <field name="BackPixmap"><![CDATA[ 1171986c8b3dSmrgOverrides the default background-pixmap. The background pixmap and window must 1172986c8b3dSmrghave the same root and same depth. Any size pixmap can be used, although some 1173986c8b3dSmrgsizes may be faster than others. 1174986c8b3dSmrg 1175986c8b3dSmrgIf `XCB_BACK_PIXMAP_NONE` is specified, the window has no defined background. 1176986c8b3dSmrgThe server may fill the contents with the previous screen contents or with 1177986c8b3dSmrgcontents of its own choosing. 1178986c8b3dSmrg 1179986c8b3dSmrgIf `XCB_BACK_PIXMAP_PARENT_RELATIVE` is specified, the parent's background is 1180986c8b3dSmrgused, but the window must have the same depth as the parent (or a Match error 1181986c8b3dSmrgresults). The parent's background is tracked, and the current version is 1182986c8b3dSmrgused each time the window background is required. 1183986c8b3dSmrg ]]></field> 1184986c8b3dSmrg <field name="BackPixel"><![CDATA[ 1185986c8b3dSmrgOverrides `BackPixmap`. A pixmap of undefined size filled with the specified 1186986c8b3dSmrgbackground pixel is used for the background. Range-checking is not performed, 1187986c8b3dSmrgthe background pixel is truncated to the appropriate number of bits. 1188986c8b3dSmrg ]]></field> 1189986c8b3dSmrg <field name="BorderPixmap"><![CDATA[ 1190986c8b3dSmrgOverrides the default border-pixmap. The border pixmap and window must have the 1191986c8b3dSmrgsame root and the same depth. Any size pixmap can be used, although some sizes 1192986c8b3dSmrgmay be faster than others. 1193986c8b3dSmrg 1194986c8b3dSmrgThe special value `XCB_COPY_FROM_PARENT` means the parent's border pixmap is 1195986c8b3dSmrgcopied (subsequent changes to the parent's border attribute do not affect the 1196986c8b3dSmrgchild), but the window must have the same depth as the parent. 1197986c8b3dSmrg ]]></field> 1198986c8b3dSmrg <field name="BorderPixel"><![CDATA[ 1199986c8b3dSmrgOverrides `BorderPixmap`. A pixmap of undefined size filled with the specified 1200986c8b3dSmrgborder pixel is used for the border. Range checking is not performed on the 1201986c8b3dSmrgborder-pixel value, it is truncated to the appropriate number of bits. 1202986c8b3dSmrg ]]></field> 1203986c8b3dSmrg <field name="BitGravity"><![CDATA[ 1204986c8b3dSmrgDefines which region of the window should be retained if the window is resized. 1205986c8b3dSmrg ]]></field> 1206986c8b3dSmrg <field name="WinGravity"><![CDATA[ 1207986c8b3dSmrgDefines how the window should be repositioned if the parent is resized (see 1208986c8b3dSmrg`ConfigureWindow`). 1209986c8b3dSmrg ]]></field> 1210986c8b3dSmrg <field name="BackingStore"><![CDATA[ 1211986c8b3dSmrgA backing-store of `WhenMapped` advises the server that maintaining contents of 1212986c8b3dSmrgobscured regions when the window is mapped would be beneficial. A backing-store 1213986c8b3dSmrgof `Always` advises the server that maintaining contents even when the window 1214986c8b3dSmrgis unmapped would be beneficial. In this case, the server may generate an 1215986c8b3dSmrgexposure event when the window is created. A value of `NotUseful` advises the 1216986c8b3dSmrgserver that maintaining contents is unnecessary, although a server may still 1217986c8b3dSmrgchoose to maintain contents while the window is mapped. Note that if the server 1218986c8b3dSmrgmaintains contents, then the server should maintain complete contents not just 1219986c8b3dSmrgthe region within the parent boundaries, even if the window is larger than its 1220986c8b3dSmrgparent. While the server maintains contents, exposure events will not normally 1221986c8b3dSmrgbe generated, but the server may stop maintaining contents at any time. 1222986c8b3dSmrg ]]></field> 1223986c8b3dSmrg <field name="BackingPlanes"><![CDATA[ 1224986c8b3dSmrgThe backing-planes indicates (with bits set to 1) which bit planes of the 1225986c8b3dSmrgwindow hold dynamic data that must be preserved in backing-stores and during 1226986c8b3dSmrgsave-unders. 1227986c8b3dSmrg ]]></field> 1228986c8b3dSmrg <field name="BackingPixel"><![CDATA[ 1229986c8b3dSmrgThe backing-pixel specifies what value to use in planes not covered by 1230986c8b3dSmrgbacking-planes. The server is free to save only the specified bit planes in the 1231986c8b3dSmrgbacking-store or save-under and regenerate the remaining planes with the 1232986c8b3dSmrgspecified pixel value. Any bits beyond the specified depth of the window in 1233986c8b3dSmrgthese values are simply ignored. 1234986c8b3dSmrg ]]></field> 1235986c8b3dSmrg <field name="OverrideRedirect"><![CDATA[ 1236986c8b3dSmrgThe override-redirect specifies whether map and configure requests on this 1237986c8b3dSmrgwindow should override a SubstructureRedirect on the parent, typically to 1238986c8b3dSmrginform a window manager not to tamper with the window. 1239986c8b3dSmrg ]]></field> 1240986c8b3dSmrg <field name="SaveUnder"><![CDATA[ 1241986c8b3dSmrgIf 1, the server is advised that when this window is mapped, saving the 1242986c8b3dSmrgcontents of windows it obscures would be beneficial. 1243986c8b3dSmrg ]]></field> 1244986c8b3dSmrg <field name="EventMask"><![CDATA[ 1245986c8b3dSmrgThe event-mask defines which events the client is interested in for this window 1246986c8b3dSmrg(or for some event types, inferiors of the window). 1247986c8b3dSmrg ]]></field> 1248986c8b3dSmrg <field name="DontPropagate"><![CDATA[ 1249986c8b3dSmrgThe do-not-propagate-mask defines which events should not be propagated to 1250986c8b3dSmrgancestor windows when no client has the event type selected in this window. 1251986c8b3dSmrg ]]></field> 1252986c8b3dSmrg <field name="Colormap"><![CDATA[ 1253986c8b3dSmrgThe colormap specifies the colormap that best reflects the true colors of the window. Servers 1254986c8b3dSmrgcapable of supporting multiple hardware colormaps may use this information, and window man- 1255986c8b3dSmrgagers may use it for InstallColormap requests. The colormap must have the same visual type 1256986c8b3dSmrgand root as the window (or a Match error results). If CopyFromParent is specified, the parent's 1257986c8b3dSmrgcolormap is copied (subsequent changes to the parent's colormap attribute do not affect the child). 1258986c8b3dSmrgHowever, the window must have the same visual type as the parent (or a Match error results), 1259986c8b3dSmrgand the parent must not have a colormap of None (or a Match error results). For an explanation 1260986c8b3dSmrgof None, see FreeColormap request. The colormap is copied by sharing the colormap object 1261986c8b3dSmrgbetween the child and the parent, not by making a complete copy of the colormap contents. 1262986c8b3dSmrg ]]></field> 1263986c8b3dSmrg <field name="Cursor"><![CDATA[ 1264986c8b3dSmrgIf a cursor is specified, it will be used whenever the pointer is in the window. If None is speci- 1265986c8b3dSmrgfied, the parent's cursor will be used when the pointer is in the window, and any change in the 1266986c8b3dSmrgparent's cursor will cause an immediate change in the displayed cursor. 1267986c8b3dSmrg ]]></field> 1268986c8b3dSmrg </doc> 1269d4401354Smrg </enum> 1270d4401354Smrg 1271d4401354Smrg <enum name="BackPixmap"> 1272d4401354Smrg <item name="None"> <value>0</value></item> 1273d4401354Smrg <item name="ParentRelative"><value>1</value></item> 1274d4401354Smrg </enum> 1275d4401354Smrg 1276d4401354Smrg <enum name="Gravity"> 1277d4401354Smrg <item name="BitForget"><value>0</value></item> 1278d4401354Smrg <item name="WinUnmap"> <value>0</value></item> 1279d4401354Smrg <item name="NorthWest"><value>1</value></item> 1280d4401354Smrg <item name="North"> <value>2</value></item> 1281d4401354Smrg <item name="NorthEast"><value>3</value></item> 1282d4401354Smrg <item name="West"> <value>4</value></item> 1283d4401354Smrg <item name="Center"> <value>5</value></item> 1284d4401354Smrg <item name="East"> <value>6</value></item> 1285d4401354Smrg <item name="SouthWest"><value>7</value></item> 1286d4401354Smrg <item name="South"> <value>8</value></item> 1287d4401354Smrg <item name="SouthEast"><value>9</value></item> 1288d4401354Smrg <item name="Static"> <value>10</value></item> 1289d4401354Smrg </enum> 1290d4401354Smrg 1291d4401354Smrg <request name="CreateWindow" opcode="1"> 1292d4401354Smrg <field type="CARD8" name="depth" /> 1293d4401354Smrg <field type="WINDOW" name="wid" /> 1294d4401354Smrg <field type="WINDOW" name="parent" /> 1295d4401354Smrg <field type="INT16" name="x" /> 1296d4401354Smrg <field type="INT16" name="y" /> 1297d4401354Smrg <field type="CARD16" name="width" /> 1298d4401354Smrg <field type="CARD16" name="height" /> 1299d4401354Smrg <field type="CARD16" name="border_width" /> 1300d4401354Smrg <field type="CARD16" name="class" enum="WindowClass" /> 1301d4401354Smrg <field type="VISUALID" name="visual" /> 1302891601f5Smrg <field type="CARD32" name="value_mask" mask="CW" /> 1303891601f5Smrg <switch name="value_list"> 1304891601f5Smrg <fieldref>value_mask</fieldref> 1305891601f5Smrg <bitcase> 1306891601f5Smrg <enumref ref="CW">BackPixmap</enumref> 1307891601f5Smrg <field type="PIXMAP" name="background_pixmap" altenum="BackPixmap"/> 1308891601f5Smrg </bitcase> 1309891601f5Smrg <bitcase> 1310891601f5Smrg <enumref ref="CW">BackPixel</enumref> 1311891601f5Smrg <field type="CARD32" name="background_pixel" /> 1312891601f5Smrg </bitcase> 1313891601f5Smrg <bitcase> 1314891601f5Smrg <enumref ref="CW">BorderPixmap</enumref> 1315891601f5Smrg <field type="PIXMAP" name="border_pixmap" altenum="Pixmap"/> 1316891601f5Smrg </bitcase> 1317891601f5Smrg <bitcase> 1318891601f5Smrg <enumref ref="CW">BorderPixel</enumref> 1319891601f5Smrg <field type="CARD32" name="border_pixel" /> 1320891601f5Smrg </bitcase> 1321891601f5Smrg <bitcase> 1322891601f5Smrg <enumref ref="CW">BitGravity</enumref> 1323891601f5Smrg <field type="CARD32" name="bit_gravity" enum="Gravity"/> 1324891601f5Smrg </bitcase> 1325891601f5Smrg <bitcase> 1326891601f5Smrg <enumref ref="CW">WinGravity</enumref> 1327891601f5Smrg <field type="CARD32" name="win_gravity" enum="Gravity"/> 1328891601f5Smrg </bitcase> 1329891601f5Smrg <bitcase> 1330891601f5Smrg <enumref ref="CW">BackingStore</enumref> 1331891601f5Smrg <field type="CARD32" name="backing_store" enum="BackingStore"/> 1332891601f5Smrg </bitcase> 1333891601f5Smrg <bitcase> 1334891601f5Smrg <enumref ref="CW">BackingPlanes</enumref> 1335891601f5Smrg <field type="CARD32" name="backing_planes" /> 1336891601f5Smrg </bitcase> 1337891601f5Smrg <bitcase> 1338891601f5Smrg <enumref ref="CW">BackingPixel</enumref> 1339891601f5Smrg <field type="CARD32" name="backing_pixel" /> 1340891601f5Smrg </bitcase> 1341891601f5Smrg <bitcase> 1342891601f5Smrg <enumref ref="CW">OverrideRedirect</enumref> 1343891601f5Smrg <field type="BOOL32" name="override_redirect" /> 1344891601f5Smrg </bitcase> 1345891601f5Smrg <bitcase> 1346891601f5Smrg <enumref ref="CW">SaveUnder</enumref> 1347891601f5Smrg <field type="BOOL32" name="save_under" /> 1348891601f5Smrg </bitcase> 1349891601f5Smrg <bitcase> 1350891601f5Smrg <enumref ref="CW">EventMask</enumref> 1351891601f5Smrg <field type="CARD32" name="event_mask" mask="EventMask"/> 1352891601f5Smrg </bitcase> 1353891601f5Smrg <bitcase> 1354891601f5Smrg <enumref ref="CW">DontPropagate</enumref> 1355891601f5Smrg <field type="CARD32" name="do_not_propogate_mask" mask="EventMask"/> 1356891601f5Smrg </bitcase> 1357891601f5Smrg <bitcase> 1358891601f5Smrg <enumref ref="CW">Colormap</enumref> 1359891601f5Smrg <field type="COLORMAP" name="colormap" altenum="Colormap"/> 1360891601f5Smrg </bitcase> 1361891601f5Smrg <bitcase> 1362891601f5Smrg <enumref ref="CW">Cursor</enumref> 1363891601f5Smrg <field type="CURSOR" name="cursor" altenum="Cursor"/> 1364891601f5Smrg </bitcase> 1365891601f5Smrg </switch> 1366891601f5Smrg 1367986c8b3dSmrg <doc> 1368986c8b3dSmrg <brief>Creates a window</brief> 1369986c8b3dSmrg <description><![CDATA[ 1370986c8b3dSmrgCreates an unmapped window as child of the specified `parent` window. A 1371986c8b3dSmrgCreateNotify event will be generated. The new window is placed on top in the 1372986c8b3dSmrgstacking order with respect to siblings. 1373986c8b3dSmrg 1374986c8b3dSmrgThe coordinate system has the X axis horizontal and the Y axis vertical with 1375986c8b3dSmrgthe origin [0, 0] at the upper-left corner. Coordinates are integral, in terms 1376986c8b3dSmrgof pixels, and coincide with pixel centers. Each window and pixmap has its own 1377986c8b3dSmrgcoordinate system. For a window, the origin is inside the border at the inside, 1378986c8b3dSmrgupper-left corner. 1379986c8b3dSmrg 1380986c8b3dSmrgThe created window is not yet displayed (mapped), call `xcb_map_window` to 1381986c8b3dSmrgdisplay it. 1382986c8b3dSmrg 1383986c8b3dSmrgThe created window will initially use the same cursor as its parent. 1384986c8b3dSmrg ]]></description> 1385986c8b3dSmrg <field name="wid"><![CDATA[ 1386986c8b3dSmrgThe ID with which you will refer to the new window, created by 1387986c8b3dSmrg`xcb_generate_id`. 1388986c8b3dSmrg ]]></field> 1389986c8b3dSmrg <field name="depth"><![CDATA[ 1390986c8b3dSmrgSpecifies the new window's depth (TODO: what unit?). 1391986c8b3dSmrg 1392986c8b3dSmrgThe special value `XCB_COPY_FROM_PARENT` means the depth is taken from the 1393986c8b3dSmrg`parent` window. 1394986c8b3dSmrg ]]></field> 1395986c8b3dSmrg <field name="visual"><![CDATA[ 1396986c8b3dSmrgSpecifies the id for the new window's visual. 1397986c8b3dSmrg 1398986c8b3dSmrgThe special value `XCB_COPY_FROM_PARENT` means the visual is taken from the 1399986c8b3dSmrg`parent` window. 1400986c8b3dSmrg ]]></field> 1401986c8b3dSmrg <field name="class"></field> 1402986c8b3dSmrg <field name="parent"><![CDATA[ 1403986c8b3dSmrgThe parent window of the new window. 1404986c8b3dSmrg ]]></field> 1405986c8b3dSmrg <field name="border_width"><![CDATA[ 1406986c8b3dSmrg TODO: 1407986c8b3dSmrg 1408986c8b3dSmrgMust be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs. 1409986c8b3dSmrg ]]></field> 1410986c8b3dSmrg <field name="x"><![CDATA[The X coordinate of the new window.]]></field> 1411986c8b3dSmrg <field name="y"><![CDATA[The Y coordinate of the new window.]]></field> 1412986c8b3dSmrg <field name="width"><![CDATA[The width of the new window.]]></field> 1413986c8b3dSmrg <field name="height"><![CDATA[The height of the new window.]]></field> 1414986c8b3dSmrg <error type="Colormap"><![CDATA[ 1415986c8b3dSmrgTODO: reasons? 1416986c8b3dSmrg ]]></error> 1417986c8b3dSmrg <error type="Match"><![CDATA[ 1418986c8b3dSmrgTODO: reasons? 1419986c8b3dSmrg ]]></error> 1420986c8b3dSmrg <error type="Cursor"><![CDATA[ 1421986c8b3dSmrgTODO: reasons? 1422986c8b3dSmrg ]]></error> 1423986c8b3dSmrg <error type="Pixmap"><![CDATA[ 1424986c8b3dSmrgTODO: reasons? 1425986c8b3dSmrg ]]></error> 1426986c8b3dSmrg <error type="Value"><![CDATA[ 1427986c8b3dSmrgTODO: reasons? 1428986c8b3dSmrg ]]></error> 1429986c8b3dSmrg <error type="Window"><![CDATA[ 1430986c8b3dSmrgTODO: reasons? 1431986c8b3dSmrg ]]></error> 1432986c8b3dSmrg <error type="Alloc"><![CDATA[ 1433986c8b3dSmrgThe X server could not allocate the requested resources (no memory?). 1434986c8b3dSmrg ]]></error> 1435986c8b3dSmrg <see type="function" name="xcb_generate_id" /> 1436986c8b3dSmrg <see type="request" name="MapWindow" /> 1437986c8b3dSmrg <see type="event" name="CreateNotify" /> 1438986c8b3dSmrg </doc> 1439986c8b3dSmrg 1440d4401354Smrg </request> 1441d4401354Smrg 1442d4401354Smrg <request name="ChangeWindowAttributes" opcode="2"> 1443d4401354Smrg <pad bytes="1" /> 1444d4401354Smrg <field type="WINDOW" name="window" /> 1445891601f5Smrg <field type="CARD32" name="value_mask" mask="CW" /> 1446891601f5Smrg <switch name="value_list"> 1447891601f5Smrg <fieldref>value_mask</fieldref> 1448891601f5Smrg <bitcase> 1449891601f5Smrg <enumref ref="CW">BackPixmap</enumref> 1450891601f5Smrg <field type="PIXMAP" name="background_pixmap" altenum="BackPixmap"/> 1451891601f5Smrg </bitcase> 1452891601f5Smrg <bitcase> 1453891601f5Smrg <enumref ref="CW">BackPixel</enumref> 1454891601f5Smrg <field type="CARD32" name="background_pixel" /> 1455891601f5Smrg </bitcase> 1456891601f5Smrg <bitcase> 1457891601f5Smrg <enumref ref="CW">BorderPixmap</enumref> 1458891601f5Smrg <field type="PIXMAP" name="border_pixmap" altenum="Pixmap"/> 1459891601f5Smrg </bitcase> 1460891601f5Smrg <bitcase> 1461891601f5Smrg <enumref ref="CW">BorderPixel</enumref> 1462891601f5Smrg <field type="CARD32" name="border_pixel" /> 1463891601f5Smrg </bitcase> 1464891601f5Smrg <bitcase> 1465891601f5Smrg <enumref ref="CW">BitGravity</enumref> 1466891601f5Smrg <field type="CARD32" name="bit_gravity" enum="Gravity"/> 1467891601f5Smrg </bitcase> 1468891601f5Smrg <bitcase> 1469891601f5Smrg <enumref ref="CW">WinGravity</enumref> 1470891601f5Smrg <field type="CARD32" name="win_gravity" enum="Gravity"/> 1471891601f5Smrg </bitcase> 1472891601f5Smrg <bitcase> 1473891601f5Smrg <enumref ref="CW">BackingStore</enumref> 1474891601f5Smrg <field type="CARD32" name="backing_store" enum="BackingStore"/> 1475891601f5Smrg </bitcase> 1476891601f5Smrg <bitcase> 1477891601f5Smrg <enumref ref="CW">BackingPlanes</enumref> 1478891601f5Smrg <field type="CARD32" name="backing_planes" /> 1479891601f5Smrg </bitcase> 1480891601f5Smrg <bitcase> 1481891601f5Smrg <enumref ref="CW">BackingPixel</enumref> 1482891601f5Smrg <field type="CARD32" name="backing_pixel" /> 1483891601f5Smrg </bitcase> 1484891601f5Smrg <bitcase> 1485891601f5Smrg <enumref ref="CW">OverrideRedirect</enumref> 1486891601f5Smrg <field type="BOOL32" name="override_redirect" /> 1487891601f5Smrg </bitcase> 1488891601f5Smrg <bitcase> 1489891601f5Smrg <enumref ref="CW">SaveUnder</enumref> 1490891601f5Smrg <field type="BOOL32" name="save_under" /> 1491891601f5Smrg </bitcase> 1492891601f5Smrg <bitcase> 1493891601f5Smrg <enumref ref="CW">EventMask</enumref> 1494891601f5Smrg <field type="CARD32" name="event_mask" mask="EventMask"/> 1495891601f5Smrg </bitcase> 1496891601f5Smrg <bitcase> 1497891601f5Smrg <enumref ref="CW">DontPropagate</enumref> 1498891601f5Smrg <field type="CARD32" name="do_not_propogate_mask" mask="EventMask"/> 1499891601f5Smrg </bitcase> 1500891601f5Smrg <bitcase> 1501891601f5Smrg <enumref ref="CW">Colormap</enumref> 1502891601f5Smrg <field type="COLORMAP" name="colormap" altenum="Colormap"/> 1503891601f5Smrg </bitcase> 1504891601f5Smrg <bitcase> 1505891601f5Smrg <enumref ref="CW">Cursor</enumref> 1506891601f5Smrg <field type="CURSOR" name="cursor" altenum="Cursor"/> 1507891601f5Smrg </bitcase> 1508891601f5Smrg </switch> 1509891601f5Smrg 1510986c8b3dSmrg <doc> 1511986c8b3dSmrg <brief>change window attributes</brief> 1512986c8b3dSmrg <description><![CDATA[ 1513986c8b3dSmrgChanges the attributes specified by `value_mask` for the specified `window`. 1514986c8b3dSmrg ]]></description> 1515986c8b3dSmrg <field name="window"><![CDATA[ 1516986c8b3dSmrgThe window to change. 1517986c8b3dSmrg ]]></field> 1518986c8b3dSmrg <!-- the enum documentation is good enough. --> 1519986c8b3dSmrg <field name="value_mask" /> 1520986c8b3dSmrg <field name="value_list"><![CDATA[ 1521986c8b3dSmrgValues for each of the attributes specified in the bitmask `value_mask`. The 1522986c8b3dSmrgorder has to correspond to the order of possible `value_mask` bits. See the 1523986c8b3dSmrgexample. 1524986c8b3dSmrg ]]></field> 1525986c8b3dSmrg <error type="Access"><![CDATA[ 1526986c8b3dSmrgTODO: reasons? 1527986c8b3dSmrg ]]></error> 1528986c8b3dSmrg <error type="Colormap"><![CDATA[ 1529986c8b3dSmrgTODO: reasons? 1530986c8b3dSmrg ]]></error> 1531986c8b3dSmrg <error type="Cursor"><![CDATA[ 1532986c8b3dSmrgTODO: reasons? 1533986c8b3dSmrg ]]></error> 1534986c8b3dSmrg <error type="Match"><![CDATA[ 1535986c8b3dSmrgTODO: reasons? 1536986c8b3dSmrg ]]></error> 1537986c8b3dSmrg <error type="Pixmap"><![CDATA[ 1538986c8b3dSmrgTODO: reasons? 1539986c8b3dSmrg ]]></error> 1540986c8b3dSmrg <error type="Value"><![CDATA[ 1541986c8b3dSmrgTODO: reasons? 1542986c8b3dSmrg ]]></error> 1543986c8b3dSmrg <error type="Window"><![CDATA[ 1544986c8b3dSmrgThe specified `window` does not exist. 1545986c8b3dSmrg ]]></error> 1546986c8b3dSmrg </doc> 1547d4401354Smrg </request> 1548d4401354Smrg 1549d4401354Smrg <enum name="MapState"> 1550d4401354Smrg <item name="Unmapped"> <value>0</value></item> 1551d4401354Smrg <item name="Unviewable"><value>1</value></item> 1552d4401354Smrg <item name="Viewable"> <value>2</value></item> 1553d4401354Smrg </enum> 1554d4401354Smrg 1555d4401354Smrg <request name="GetWindowAttributes" opcode="3"> 1556d4401354Smrg <pad bytes="1" /> 1557d4401354Smrg <field type="WINDOW" name="window" /> 1558d4401354Smrg <reply> 1559d4401354Smrg <field type="CARD8" name="backing_store" enum="BackingStore" /> 1560d4401354Smrg <field type="VISUALID" name="visual" /> 1561d4401354Smrg <field type="CARD16" name="class" enum="WindowClass" /> 1562d4401354Smrg <field type="CARD8" name="bit_gravity" enum="Gravity" /> 1563d4401354Smrg <field type="CARD8" name="win_gravity" enum="Gravity" /> 1564d4401354Smrg <field type="CARD32" name="backing_planes" /> 1565d4401354Smrg <field type="CARD32" name="backing_pixel" /> 1566d4401354Smrg <field type="BOOL" name="save_under" /> 1567d4401354Smrg <field type="BOOL" name="map_is_installed" /> 1568d4401354Smrg <field type="CARD8" name="map_state" enum="MapState" /> 1569d4401354Smrg <field type="BOOL" name="override_redirect" /> 1570d4401354Smrg <field type="COLORMAP" name="colormap" altenum="Colormap" /> 1571d4401354Smrg <field type="CARD32" name="all_event_masks" mask="EventMask" /> 1572d4401354Smrg <field type="CARD32" name="your_event_mask" mask="EventMask" /> 1573d4401354Smrg <field type="CARD16" name="do_not_propagate_mask" mask="EventMask" /> 1574d4401354Smrg <pad bytes="2" /> 1575986c8b3dSmrg <doc> 1576986c8b3dSmrg <field name="override_redirect"><![CDATA[ 1577986c8b3dSmrgWindow managers should ignore this window if `override_redirect` is 1. 1578986c8b3dSmrg ]]></field> 1579986c8b3dSmrg <field name="visual"><![CDATA[ 1580986c8b3dSmrgThe associated visual structure of `window`. 1581986c8b3dSmrg ]]></field> 1582986c8b3dSmrg <field name="backing_planes"><![CDATA[ 1583986c8b3dSmrgPlanes to be preserved if possible. 1584986c8b3dSmrg ]]></field> 1585986c8b3dSmrg <field name="backing_pixel"><![CDATA[ 1586986c8b3dSmrgValue to be used when restoring planes. 1587986c8b3dSmrg ]]></field> 1588986c8b3dSmrg <field name="save_under"><![CDATA[ 1589986c8b3dSmrgBoolean, should bits under be saved? 1590986c8b3dSmrg ]]></field> 1591986c8b3dSmrg <field name="colormap"><![CDATA[ 1592986c8b3dSmrgColor map to be associated with window. 1593986c8b3dSmrg ]]></field> 1594986c8b3dSmrg <field name="all_event_masks"><![CDATA[ 1595986c8b3dSmrgSet of events all people have interest in. 1596986c8b3dSmrg ]]></field> 1597986c8b3dSmrg <field name="your_event_mask"><![CDATA[ 1598986c8b3dSmrgMy event mask. 1599986c8b3dSmrg ]]></field> 1600986c8b3dSmrg <field name="do_not_propagate_mask"><![CDATA[ 1601986c8b3dSmrgSet of events that should not propagate. 1602986c8b3dSmrg ]]></field> 1603986c8b3dSmrg <!-- enum documentation is sufficient for these fields --> 1604986c8b3dSmrg <field name="backing_store" /> 1605986c8b3dSmrg <field name="class" /> 1606986c8b3dSmrg <field name="bit_gravity" /> 1607986c8b3dSmrg <field name="win_gravity" /> 1608986c8b3dSmrg <field name="map_state" /> 1609986c8b3dSmrg </doc> 1610d4401354Smrg </reply> 1611986c8b3dSmrg <doc> 1612986c8b3dSmrg <brief>Gets window attributes</brief> 1613986c8b3dSmrg <description><![CDATA[ 1614986c8b3dSmrgGets the current attributes for the specified `window`. 1615986c8b3dSmrg ]]></description> 1616986c8b3dSmrg <field name="window"><![CDATA[The window to get the attributes from.]]></field> 1617986c8b3dSmrg <error type="Window"><![CDATA[ 1618986c8b3dSmrgThe specified `window` does not exist. 1619986c8b3dSmrg ]]></error> 1620986c8b3dSmrg <error type="Drawable"><![CDATA[ 1621986c8b3dSmrgTODO: reasons? 1622986c8b3dSmrg ]]></error> 1623986c8b3dSmrg </doc> 1624986c8b3dSmrg 1625d4401354Smrg </request> 1626d4401354Smrg 1627d4401354Smrg <request name="DestroyWindow" opcode="4"> 1628d4401354Smrg <pad bytes="1" /> 1629d4401354Smrg <field type="WINDOW" name="window" /> 1630986c8b3dSmrg <doc> 1631986c8b3dSmrg <brief>Destroys a window</brief> 1632986c8b3dSmrg <description><![CDATA[ 1633986c8b3dSmrgDestroys the specified window and all of its subwindows. A DestroyNotify event 1634986c8b3dSmrgis generated for each destroyed window (a DestroyNotify event is first generated 1635986c8b3dSmrgfor any given window's inferiors). If the window was mapped, it will be 1636986c8b3dSmrgautomatically unmapped before destroying. 1637986c8b3dSmrg 1638986c8b3dSmrgCalling DestroyWindow on the root window will do nothing. 1639986c8b3dSmrg ]]></description> 1640986c8b3dSmrg <field name="window"><![CDATA[The window to destroy.]]></field> 1641986c8b3dSmrg <error type="Window"><![CDATA[ 1642986c8b3dSmrgThe specified window does not exist. 1643986c8b3dSmrg ]]></error> 1644986c8b3dSmrg <see type="event" name="DestroyNotify" /> 1645986c8b3dSmrg <see type="request" name="MapWindow" /> 1646986c8b3dSmrg <see type="request" name="UnmapWindow" /> 1647986c8b3dSmrg </doc> 1648d4401354Smrg </request> 1649d4401354Smrg 1650d4401354Smrg <request name="DestroySubwindows" opcode="5"> 1651d4401354Smrg <pad bytes="1" /> 1652d4401354Smrg <field type="WINDOW" name="window" /> 1653d4401354Smrg </request> 1654d4401354Smrg 1655d4401354Smrg <enum name="SetMode"> 1656d4401354Smrg <item name="Insert"><value>0</value></item> 1657d4401354Smrg <item name="Delete"><value>1</value></item> 1658d4401354Smrg </enum> 1659d4401354Smrg 1660d4401354Smrg <request name="ChangeSaveSet" opcode="6"> 1661d4401354Smrg <field type="BYTE" name="mode" enum="SetMode" /> 1662d4401354Smrg <field type="WINDOW" name="window" /> 1663986c8b3dSmrg <doc> 1664986c8b3dSmrg <brief>Changes a client's save set</brief> 1665986c8b3dSmrg <description><![CDATA[ 1666986c8b3dSmrgTODO: explain what the save set is for. 1667986c8b3dSmrg 1668986c8b3dSmrgThis function either adds or removes the specified window to the client's (your 1669986c8b3dSmrgapplication's) save set. 1670986c8b3dSmrg ]]></description> 1671986c8b3dSmrg <field name="mode"><![CDATA[Insert to add the specified window to the save set or Delete to delete it from the save set.]]></field> 1672986c8b3dSmrg <field name="window"><![CDATA[The window to add or delete to/from your save set.]]></field> 1673986c8b3dSmrg <error type="Match"><![CDATA[ 1674986c8b3dSmrgYou created the specified window. This does not make sense, you can only add 1675986c8b3dSmrgwindows created by other clients to your save set. 1676986c8b3dSmrg ]]></error> 1677986c8b3dSmrg <error type="Value"><![CDATA[ 1678986c8b3dSmrgYou specified an invalid mode. 1679986c8b3dSmrg ]]></error> 1680986c8b3dSmrg <error type="Window"><![CDATA[ 1681986c8b3dSmrgThe specified window does not exist. 1682986c8b3dSmrg ]]></error> 1683986c8b3dSmrg <see type="request" name="ReparentWindow" /> 1684986c8b3dSmrg </doc> 1685d4401354Smrg </request> 1686d4401354Smrg 1687d4401354Smrg <request name="ReparentWindow" opcode="7"> 1688d4401354Smrg <pad bytes="1" /> 1689d4401354Smrg <field type="WINDOW" name="window" /> 1690d4401354Smrg <field type="WINDOW" name="parent" /> 1691d4401354Smrg <field type="INT16" name="x" /> 1692d4401354Smrg <field type="INT16" name="y" /> 1693986c8b3dSmrg <doc> 1694986c8b3dSmrg <brief>Reparents a window</brief> 1695986c8b3dSmrg <description><![CDATA[ 1696986c8b3dSmrgMakes the specified window a child of the specified parent window. If the 1697986c8b3dSmrgwindow is mapped, it will automatically be unmapped before reparenting and 1698986c8b3dSmrgre-mapped after reparenting. The window is placed in the stacking order on top 1699986c8b3dSmrgwith respect to sibling windows. 1700986c8b3dSmrg 1701986c8b3dSmrgAfter reparenting, a ReparentNotify event is generated. 1702986c8b3dSmrg ]]></description> 1703986c8b3dSmrg <field name="window"><![CDATA[The window to reparent.]]></field> 1704986c8b3dSmrg <field name="parent"><![CDATA[The new parent of the window.]]></field> 1705986c8b3dSmrg <field name="x"><![CDATA[ 1706986c8b3dSmrgThe X position of the window within its new parent. 1707986c8b3dSmrg ]]></field> 1708986c8b3dSmrg <field name="y"><![CDATA[ 1709986c8b3dSmrgThe Y position of the window within its new parent. 1710986c8b3dSmrg ]]></field> 1711986c8b3dSmrg <error type="Match"><![CDATA[ 1712986c8b3dSmrgThe new parent window is not on the same screen as the old parent window. 1713986c8b3dSmrg 1714986c8b3dSmrgThe new parent window is the specified window or an inferior of the specified window. 1715986c8b3dSmrg 1716986c8b3dSmrgThe new parent is InputOnly and the window is not. 1717986c8b3dSmrg 1718986c8b3dSmrgThe specified window has a ParentRelative background and the new parent window is not the same depth as the specified window. 1719986c8b3dSmrg ]]></error> 1720986c8b3dSmrg <error type="Window"><![CDATA[ 1721986c8b3dSmrgThe specified window does not exist. 1722986c8b3dSmrg ]]></error> 1723986c8b3dSmrg <see type="event" name="ReparentNotify" /> 1724986c8b3dSmrg <see type="request" name="MapWindow" /> 1725986c8b3dSmrg <see type="request" name="UnmapWindow" /> 1726986c8b3dSmrg </doc> 1727d4401354Smrg </request> 1728d4401354Smrg 1729d4401354Smrg <request name="MapWindow" opcode="8"> 1730d4401354Smrg <pad bytes="1" /> 1731d4401354Smrg <field type="WINDOW" name="window" /> 1732986c8b3dSmrg <doc> 1733986c8b3dSmrg <brief>Makes a window visible</brief> 1734986c8b3dSmrg <description><![CDATA[ 1735986c8b3dSmrgMaps the specified window. This means making the window visible (as long as its 1736986c8b3dSmrgparent is visible). 1737986c8b3dSmrg 1738986c8b3dSmrgThis MapWindow request will be translated to a MapRequest request if a window 1739986c8b3dSmrgmanager is running. The window manager then decides to either map the window or 1740986c8b3dSmrgnot. Set the override-redirect window attribute to true if you want to bypass 1741986c8b3dSmrgthis mechanism. 1742986c8b3dSmrg 1743986c8b3dSmrgIf the window manager decides to map the window (or if no window manager is 1744986c8b3dSmrgrunning), a MapNotify event is generated. 1745986c8b3dSmrg 1746986c8b3dSmrgIf the window becomes viewable and no earlier contents for it are remembered, 1747986c8b3dSmrgthe X server tiles the window with its background. If the window's background 1748986c8b3dSmrgis undefined, the existing screen contents are not altered, and the X server 1749986c8b3dSmrggenerates zero or more Expose events. 1750986c8b3dSmrg 1751986c8b3dSmrgIf the window type is InputOutput, an Expose event will be generated when the 1752986c8b3dSmrgwindow becomes visible. The normal response to an Expose event should be to 1753986c8b3dSmrgrepaint the window. 1754986c8b3dSmrg ]]></description> 1755986c8b3dSmrg <field name="window"><![CDATA[ 1756986c8b3dSmrgThe window to make visible. 1757986c8b3dSmrg]]></field> 1758986c8b3dSmrg <error type="Match"><![CDATA[ 1759986c8b3dSmrgThe specified window does not exist. 1760986c8b3dSmrg ]]></error> 1761986c8b3dSmrg <see type="event" name="MapNotify" /> 1762986c8b3dSmrg <see type="event" name="Expose" /> 1763986c8b3dSmrg <see type="request" name="UnmapWindow" /> 1764986c8b3dSmrg </doc> 1765d4401354Smrg </request> 1766d4401354Smrg 1767d4401354Smrg <request name="MapSubwindows" opcode="9"> 1768d4401354Smrg <pad bytes="1" /> 1769d4401354Smrg <field type="WINDOW" name="window" /> 1770d4401354Smrg </request> 1771d4401354Smrg 1772d4401354Smrg <request name="UnmapWindow" opcode="10"> 1773d4401354Smrg <pad bytes="1" /> 1774d4401354Smrg <field type="WINDOW" name="window" /> 1775986c8b3dSmrg <doc> 1776986c8b3dSmrg <brief>Makes a window invisible</brief> 1777986c8b3dSmrg <description><![CDATA[ 1778986c8b3dSmrgUnmaps the specified window. This means making the window invisible (and all 1779986c8b3dSmrgits child windows). 1780986c8b3dSmrg 1781986c8b3dSmrgUnmapping a window leads to the `UnmapNotify` event being generated. Also, 1782986c8b3dSmrg`Expose` events are generated for formerly obscured windows. 1783986c8b3dSmrg ]]></description> 1784986c8b3dSmrg <field name="window"><![CDATA[ 1785986c8b3dSmrgThe window to make invisible. 1786986c8b3dSmrg]]></field> 1787986c8b3dSmrg <error type="Window"><![CDATA[ 1788986c8b3dSmrgThe specified window does not exist. 1789986c8b3dSmrg ]]></error> 1790986c8b3dSmrg <see type="event" name="UnmapNotify" /> 1791986c8b3dSmrg <see type="event" name="Expose" /> 1792986c8b3dSmrg <see type="request" name="MapWindow" /> 1793986c8b3dSmrg </doc> 1794d4401354Smrg </request> 1795d4401354Smrg 1796d4401354Smrg <request name="UnmapSubwindows" opcode="11"> 1797d4401354Smrg <pad bytes="1" /> 1798d4401354Smrg <field type="WINDOW" name="window" /> 1799d4401354Smrg </request> 1800d4401354Smrg 1801d4401354Smrg <enum name="ConfigWindow"> 1802d4401354Smrg <item name="X"> <bit>0</bit></item> 1803d4401354Smrg <item name="Y"> <bit>1</bit></item> 1804d4401354Smrg <item name="Width"> <bit>2</bit></item> 1805d4401354Smrg <item name="Height"> <bit>3</bit></item> 1806d4401354Smrg <item name="BorderWidth"><bit>4</bit></item> 1807d4401354Smrg <item name="Sibling"> <bit>5</bit></item> 1808d4401354Smrg <item name="StackMode"> <bit>6</bit></item> 1809d4401354Smrg </enum> 1810d4401354Smrg 1811d4401354Smrg <enum name="StackMode"> 1812d4401354Smrg <item name="Above"> <value>0</value></item> 1813d4401354Smrg <item name="Below"> <value>1</value></item> 1814d4401354Smrg <item name="TopIf"> <value>2</value></item> 1815d4401354Smrg <item name="BottomIf"><value>3</value></item> 1816d4401354Smrg <item name="Opposite"><value>4</value></item> 1817d4401354Smrg </enum> 1818d4401354Smrg 1819d4401354Smrg <request name="ConfigureWindow" opcode="12"> 1820d4401354Smrg <pad bytes="1" /> 1821d4401354Smrg <field type="WINDOW" name="window" /> 1822891601f5Smrg <field type="CARD16" name="value_mask" mask="ConfigWindow" /> 1823d4401354Smrg <pad bytes="2" /> 1824891601f5Smrg <switch name="value_list"> 1825891601f5Smrg <fieldref>value_mask</fieldref> 1826891601f5Smrg <bitcase> 1827891601f5Smrg <enumref ref="ConfigWindow">X</enumref> 1828891601f5Smrg <field type="INT32" name="x" /> 1829891601f5Smrg </bitcase> 1830891601f5Smrg <bitcase> 1831891601f5Smrg <enumref ref="ConfigWindow">Y</enumref> 1832891601f5Smrg <field type="INT32" name="y" /> 1833891601f5Smrg </bitcase> 1834891601f5Smrg <bitcase> 1835891601f5Smrg <enumref ref="ConfigWindow">Width</enumref> 1836891601f5Smrg <field type="CARD32" name="width" /> 1837891601f5Smrg </bitcase> 1838891601f5Smrg <bitcase> 1839891601f5Smrg <enumref ref="ConfigWindow">Height</enumref> 1840891601f5Smrg <field type="CARD32" name="height" /> 1841891601f5Smrg </bitcase> 1842891601f5Smrg <bitcase> 1843891601f5Smrg <enumref ref="ConfigWindow">BorderWidth</enumref> 1844891601f5Smrg <field type="CARD32" name="border_width" /> 1845891601f5Smrg </bitcase> 1846891601f5Smrg <bitcase> 1847891601f5Smrg <enumref ref="ConfigWindow">Sibling</enumref> 1848891601f5Smrg <field type="WINDOW" name="sibling" altenum="Window"/> 1849891601f5Smrg </bitcase> 1850891601f5Smrg <bitcase> 1851891601f5Smrg <enumref ref="ConfigWindow">StackMode</enumref> 1852891601f5Smrg <field type="CARD32" name="stack_mode" enum="StackMode"/> 1853891601f5Smrg </bitcase> 1854891601f5Smrg </switch> 1855891601f5Smrg 1856986c8b3dSmrg <doc> 1857986c8b3dSmrg <brief>Configures window attributes</brief> 1858986c8b3dSmrg <description><![CDATA[ 1859986c8b3dSmrgConfigures a window's size, position, border width and stacking order. 1860986c8b3dSmrg ]]></description> 1861986c8b3dSmrg <example><![CDATA[ 1862986c8b3dSmrg/* 1863986c8b3dSmrg * Configures the given window to the left upper corner 1864986c8b3dSmrg * with a size of 1024x768 pixels. 1865986c8b3dSmrg * 1866986c8b3dSmrg */ 1867891601f5Smrgvoid my_example(xcb_connection_t *c, xcb_window_t window) { 1868986c8b3dSmrg uint16_t mask = 0; 1869986c8b3dSmrg 1870986c8b3dSmrg mask |= XCB_CONFIG_WINDOW_X; 1871986c8b3dSmrg mask |= XCB_CONFIG_WINDOW_Y; 1872986c8b3dSmrg mask |= XCB_CONFIG_WINDOW_WIDTH; 1873986c8b3dSmrg mask |= XCB_CONFIG_WINDOW_HEIGHT; 1874986c8b3dSmrg 1875986c8b3dSmrg const uint32_t values[] = { 1876986c8b3dSmrg 0, /* x */ 1877986c8b3dSmrg 0, /* y */ 1878986c8b3dSmrg 1024, /* width */ 1879986c8b3dSmrg 768 /* height */ 1880986c8b3dSmrg }; 1881986c8b3dSmrg 1882986c8b3dSmrg xcb_configure_window(c, window, mask, values); 1883986c8b3dSmrg xcb_flush(c); 1884986c8b3dSmrg} 1885986c8b3dSmrg ]]></example> 1886986c8b3dSmrg <field name="window"><![CDATA[The window to configure.]]></field> 1887986c8b3dSmrg <field name="value_mask"><![CDATA[Bitmask of attributes to change.]]></field> 1888986c8b3dSmrg <field name="value_list"><![CDATA[ 1889986c8b3dSmrgNew values, corresponding to the attributes in value_mask. The order has to 1890986c8b3dSmrgcorrespond to the order of possible `value_mask` bits. See the example. 1891986c8b3dSmrg ]]></field> 1892986c8b3dSmrg <error type="Match"><![CDATA[ 1893986c8b3dSmrgYou specified a Sibling without also specifying StackMode or the window is not 1894986c8b3dSmrgactually a Sibling. 1895986c8b3dSmrg ]]></error> 1896986c8b3dSmrg <error type="Window"><![CDATA[ 1897986c8b3dSmrgThe specified window does not exist. TODO: any other reason? 1898986c8b3dSmrg ]]></error> 1899986c8b3dSmrg <error type="Value"><![CDATA[ 1900986c8b3dSmrgTODO: reasons? 1901986c8b3dSmrg ]]></error> 1902986c8b3dSmrg <see type="event" name="MapNotify" /> 1903986c8b3dSmrg <see type="event" name="Expose" /> 1904986c8b3dSmrg </doc> 1905d4401354Smrg </request> 1906d4401354Smrg 1907d4401354Smrg <enum name="Circulate"> 1908d4401354Smrg <item name="RaiseLowest"> <value>0</value></item> 1909d4401354Smrg <item name="LowerHighest"><value>1</value></item> 1910d4401354Smrg </enum> 1911d4401354Smrg 1912d4401354Smrg <request name="CirculateWindow" opcode="13"> 1913d4401354Smrg <field type="CARD8" name="direction" enum="Circulate" /> 1914d4401354Smrg <field type="WINDOW" name="window" /> 1915986c8b3dSmrg <doc> 1916986c8b3dSmrg <brief>Change window stacking order</brief> 1917986c8b3dSmrg <description><![CDATA[ 1918986c8b3dSmrgIf `direction` is `XCB_CIRCULATE_RAISE_LOWEST`, the lowest mapped child (if 1919986c8b3dSmrgany) will be raised to the top of the stack. 1920986c8b3dSmrg 1921986c8b3dSmrgIf `direction` is `XCB_CIRCULATE_LOWER_HIGHEST`, the highest mapped child will 1922986c8b3dSmrgbe lowered to the bottom of the stack. 1923986c8b3dSmrg ]]></description> 1924986c8b3dSmrg <!-- The enums are documented, we have nothing to add. --> 1925986c8b3dSmrg <field name="direction" /> 1926986c8b3dSmrg <field name="window"><![CDATA[ 1927986c8b3dSmrgThe window to raise/lower (depending on `direction`). 1928986c8b3dSmrg ]]></field> 1929986c8b3dSmrg <error type="Window"><![CDATA[ 1930986c8b3dSmrgThe specified `window` does not exist. 1931986c8b3dSmrg ]]></error> 1932986c8b3dSmrg <error type="Value"><![CDATA[ 1933986c8b3dSmrgThe specified `direction` is invalid. 1934986c8b3dSmrg ]]></error> 1935986c8b3dSmrg </doc> 1936d4401354Smrg </request> 1937d4401354Smrg 1938d4401354Smrg <request name="GetGeometry" opcode="14"> 1939d4401354Smrg <pad bytes="1" /> 1940d4401354Smrg <field type="DRAWABLE" name="drawable" /> 1941d4401354Smrg <reply> 1942d4401354Smrg <field type="CARD8" name="depth" /> 1943d4401354Smrg <field type="WINDOW" name="root" /> 1944d4401354Smrg <field type="INT16" name="x" /> 1945d4401354Smrg <field type="INT16" name="y" /> 1946d4401354Smrg <field type="CARD16" name="width" /> 1947d4401354Smrg <field type="CARD16" name="height" /> 1948d4401354Smrg <field type="CARD16" name="border_width" /> 1949d4401354Smrg <pad bytes="2" /> 1950986c8b3dSmrg <doc> 1951986c8b3dSmrg <field name="root"><![CDATA[ 1952986c8b3dSmrgRoot window of the screen containing `drawable`. 1953986c8b3dSmrg ]]></field> 1954986c8b3dSmrg <field name="x"><![CDATA[ 1955986c8b3dSmrgThe X coordinate of `drawable`. If `drawable` is a window, the coordinate 1956986c8b3dSmrgspecifies the upper-left outer corner relative to its parent's origin. If 1957986c8b3dSmrg`drawable` is a pixmap, the X coordinate is always 0. 1958986c8b3dSmrg ]]></field> 1959986c8b3dSmrg <field name="y"><![CDATA[ 1960986c8b3dSmrgThe Y coordinate of `drawable`. If `drawable` is a window, the coordinate 1961986c8b3dSmrgspecifies the upper-left outer corner relative to its parent's origin. If 1962986c8b3dSmrg`drawable` is a pixmap, the Y coordinate is always 0. 1963986c8b3dSmrg ]]></field> 1964986c8b3dSmrg <field name="width"><![CDATA[ 1965986c8b3dSmrgThe width of `drawable`. 1966986c8b3dSmrg ]]></field> 1967986c8b3dSmrg <field name="height"><![CDATA[ 1968986c8b3dSmrgThe height of `drawable`. 1969986c8b3dSmrg ]]></field> 1970986c8b3dSmrg <field name="border_width"><![CDATA[ 1971986c8b3dSmrgThe border width (in pixels). 1972986c8b3dSmrg ]]></field> 1973986c8b3dSmrg <field name="depth"><![CDATA[ 1974986c8b3dSmrgThe depth of the drawable (bits per pixel for the object). 1975986c8b3dSmrg ]]></field> 1976986c8b3dSmrg </doc> 1977d4401354Smrg </reply> 1978986c8b3dSmrg <doc> 1979986c8b3dSmrg <brief>Get current window geometry</brief> 1980986c8b3dSmrg <description><![CDATA[ 1981986c8b3dSmrgGets the current geometry of the specified drawable (either `Window` or `Pixmap`). 1982986c8b3dSmrg ]]></description> 1983986c8b3dSmrg <example><![CDATA[ 1984986c8b3dSmrg/* 1985986c8b3dSmrg * Displays the x and y position of the given window. 1986986c8b3dSmrg * 1987986c8b3dSmrg */ 1988891601f5Smrgvoid my_example(xcb_connection_t *c, xcb_window_t window) { 1989986c8b3dSmrg xcb_get_geometry_cookie_t cookie; 1990986c8b3dSmrg xcb_get_geometry_reply_t *reply; 1991986c8b3dSmrg 1992986c8b3dSmrg cookie = xcb_get_geometry(c, window); 1993986c8b3dSmrg /* ... do other work here if possible ... */ 1994986c8b3dSmrg if ((reply = xcb_get_geometry_reply(c, cookie, NULL))) { 1995986c8b3dSmrg printf("This window is at %d, %d\\n", reply->x, reply->y); 1996986c8b3dSmrg } 1997986c8b3dSmrg free(reply); 1998986c8b3dSmrg} 1999986c8b3dSmrg ]]></example> 2000986c8b3dSmrg <field name="drawable"><![CDATA[ 2001986c8b3dSmrgThe drawable (`Window` or `Pixmap`) of which the geometry will be received. 2002986c8b3dSmrg ]]></field> 2003986c8b3dSmrg <error type="Drawable"><![CDATA[ 2004986c8b3dSmrgTODO: reasons? 2005986c8b3dSmrg ]]></error> 2006986c8b3dSmrg <error type="Window"><![CDATA[ 2007986c8b3dSmrgTODO: reasons? 2008986c8b3dSmrg ]]></error> 2009986c8b3dSmrg <see type="program" name="xwininfo" /> 2010986c8b3dSmrg </doc> 2011d4401354Smrg </request> 2012d4401354Smrg 2013d4401354Smrg <request name="QueryTree" opcode="15"> 2014d4401354Smrg <pad bytes="1" /> 2015d4401354Smrg <field type="WINDOW" name="window" /> 2016d4401354Smrg <reply> 2017d4401354Smrg <pad bytes="1" /> 2018d4401354Smrg <field type="WINDOW" name="root" /> 2019d4401354Smrg <field type="WINDOW" name="parent" altenum="Window" /> 2020d4401354Smrg <field type="CARD16" name="children_len" /> 2021d4401354Smrg <pad bytes="14" /> 2022d4401354Smrg <list type="WINDOW" name="children"> 2023d4401354Smrg <fieldref>children_len</fieldref> 2024d4401354Smrg </list> 2025986c8b3dSmrg <doc> 2026986c8b3dSmrg <field name="root"><![CDATA[ 2027986c8b3dSmrgThe root window of `window`. 2028986c8b3dSmrg ]]></field> 2029986c8b3dSmrg <field name="parent"><![CDATA[ 2030986c8b3dSmrgThe parent window of `window`. 2031986c8b3dSmrg ]]></field> 2032986c8b3dSmrg <field name="children_len"><![CDATA[ 2033986c8b3dSmrgThe number of child windows. 2034986c8b3dSmrg ]]></field> 2035986c8b3dSmrg </doc> 2036d4401354Smrg </reply> 2037986c8b3dSmrg <doc> 2038986c8b3dSmrg <brief>query the window tree</brief> 2039986c8b3dSmrg <description><![CDATA[ 2040986c8b3dSmrgGets the root window ID, parent window ID and list of children windows for the 2041986c8b3dSmrgspecified `window`. The children are listed in bottom-to-top stacking order. 2042986c8b3dSmrg ]]></description> 2043986c8b3dSmrg <example><![CDATA[ 2044986c8b3dSmrg/* 2045986c8b3dSmrg * Displays the root, parent and children of the specified window. 2046986c8b3dSmrg * 2047986c8b3dSmrg */ 2048891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_window_t window) { 2049986c8b3dSmrg xcb_query_tree_cookie_t cookie; 2050986c8b3dSmrg xcb_query_tree_reply_t *reply; 2051986c8b3dSmrg 2052986c8b3dSmrg cookie = xcb_query_tree(conn, window); 2053986c8b3dSmrg if ((reply = xcb_query_tree_reply(conn, cookie, NULL))) { 2054986c8b3dSmrg printf("root = 0x%08x\\n", reply->root); 2055986c8b3dSmrg printf("parent = 0x%08x\\n", reply->parent); 2056986c8b3dSmrg 2057986c8b3dSmrg xcb_window_t *children = xcb_query_tree_children(reply); 2058986c8b3dSmrg for (int i = 0; i < xcb_query_tree_children_length(reply); i++) 2059986c8b3dSmrg printf("child window = 0x%08x\\n", children[i]); 2060986c8b3dSmrg 2061986c8b3dSmrg free(reply); 2062986c8b3dSmrg } 2063986c8b3dSmrg} 2064986c8b3dSmrg ]]></example> 2065986c8b3dSmrg <field name="window"><![CDATA[ 2066986c8b3dSmrgThe `window` to query. 2067986c8b3dSmrg ]]></field> 2068986c8b3dSmrg <see type="program" name="xwininfo" /> 2069986c8b3dSmrg </doc> 2070d4401354Smrg </request> 2071d4401354Smrg 2072d4401354Smrg <request name="InternAtom" opcode="16"> 2073d4401354Smrg <field type="BOOL" name="only_if_exists" /> 2074d4401354Smrg <field type="CARD16" name="name_len" /> 2075d4401354Smrg <pad bytes="2" /> 2076d4401354Smrg <list type="char" name="name"> 2077d4401354Smrg <fieldref>name_len</fieldref> 2078d4401354Smrg </list> 2079d4401354Smrg <reply> 2080d4401354Smrg <pad bytes="1" /> 2081d4401354Smrg <field type="ATOM" name="atom" altenum="Atom" /> 2082d4401354Smrg </reply> 2083986c8b3dSmrg <doc> 2084986c8b3dSmrg <brief>Get atom identifier by name</brief> 2085986c8b3dSmrg <description><![CDATA[ 2086986c8b3dSmrgRetrieves the identifier (xcb_atom_t TODO) for the atom with the specified 2087986c8b3dSmrgname. Atoms are used in protocols like EWMH, for example to store window titles 2088986c8b3dSmrg(`_NET_WM_NAME` atom) as property of a window. 2089986c8b3dSmrg 2090986c8b3dSmrgIf `only_if_exists` is 0, the atom will be created if it does not already exist. 2091986c8b3dSmrgIf `only_if_exists` is 1, `XCB_ATOM_NONE` will be returned if the atom does 2092986c8b3dSmrgnot yet exist. 2093986c8b3dSmrg ]]></description> 2094986c8b3dSmrg <example><![CDATA[ 2095986c8b3dSmrg/* 2096986c8b3dSmrg * Resolves the _NET_WM_NAME atom. 2097986c8b3dSmrg * 2098986c8b3dSmrg */ 2099891601f5Smrgvoid my_example(xcb_connection_t *c) { 2100986c8b3dSmrg xcb_intern_atom_cookie_t cookie; 2101986c8b3dSmrg xcb_intern_atom_reply_t *reply; 2102986c8b3dSmrg 2103986c8b3dSmrg cookie = xcb_intern_atom(c, 0, strlen("_NET_WM_NAME"), "_NET_WM_NAME"); 2104986c8b3dSmrg /* ... do other work here if possible ... */ 2105986c8b3dSmrg if ((reply = xcb_intern_atom_reply(c, cookie, NULL))) { 2106986c8b3dSmrg printf("The _NET_WM_NAME atom has ID %u\n", reply->atom); 2107986c8b3dSmrg free(reply); 2108986c8b3dSmrg } 2109986c8b3dSmrg} 2110986c8b3dSmrg ]]></example> 2111986c8b3dSmrg <field name="name_len"><![CDATA[ 2112986c8b3dSmrgThe length of the following `name`. 2113986c8b3dSmrg ]]></field> 2114986c8b3dSmrg <field name="name"><![CDATA[ 2115986c8b3dSmrgThe name of the atom. 2116986c8b3dSmrg ]]></field> 2117986c8b3dSmrg <field name="only_if_exists"><![CDATA[ 2118986c8b3dSmrgReturn a valid atom id only if the atom already exists. 2119986c8b3dSmrg ]]></field> 2120986c8b3dSmrg <error type="Alloc"><![CDATA[ 2121986c8b3dSmrgTODO: reasons? 2122986c8b3dSmrg ]]></error> 2123986c8b3dSmrg <error type="Value"><![CDATA[ 2124986c8b3dSmrgA value other than 0 or 1 was specified for `only_if_exists`. 2125986c8b3dSmrg ]]></error> 2126986c8b3dSmrg <see type="program" name="xlsatoms" /> 2127986c8b3dSmrg <see type="request" name="GetAtomName" /> 2128986c8b3dSmrg </doc> 2129986c8b3dSmrg 2130d4401354Smrg </request> 2131d4401354Smrg 2132d4401354Smrg <request name="GetAtomName" opcode="17"> 2133d4401354Smrg <pad bytes="1" /> 2134d4401354Smrg <field type="ATOM" name="atom" /> 2135d4401354Smrg <reply> 2136d4401354Smrg <pad bytes="1" /> 2137d4401354Smrg <field type="CARD16" name="name_len" /> 2138d4401354Smrg <pad bytes="22" /> 2139d4401354Smrg <list type="char" name="name"> 2140d4401354Smrg <fieldref>name_len</fieldref> 2141d4401354Smrg </list> 2142d4401354Smrg </reply> 2143d4401354Smrg </request> 2144d4401354Smrg 2145d4401354Smrg <enum name="PropMode"> 2146d4401354Smrg <item name="Replace"><value>0</value></item> 2147d4401354Smrg <item name="Prepend"><value>1</value></item> 2148d4401354Smrg <item name="Append"> <value>2</value></item> 2149986c8b3dSmrg <doc> 2150986c8b3dSmrg <field name="Replace"><![CDATA[ 2151986c8b3dSmrgDiscard the previous property value and store the new data. 2152986c8b3dSmrg ]]></field> 2153986c8b3dSmrg <field name="Prepend"><![CDATA[ 2154986c8b3dSmrgInsert the new data before the beginning of existing data. The `format` must 2155986c8b3dSmrgmatch existing property value. If the property is undefined, it is treated as 2156986c8b3dSmrgdefined with the correct type and format with zero-length data. 2157986c8b3dSmrg ]]></field> 2158986c8b3dSmrg <field name="Append"><![CDATA[ 2159986c8b3dSmrgInsert the new data after the beginning of existing data. The `format` must 2160986c8b3dSmrgmatch existing property value. If the property is undefined, it is treated as 2161986c8b3dSmrgdefined with the correct type and format with zero-length data. 2162986c8b3dSmrg ]]></field> 2163986c8b3dSmrg </doc> 2164d4401354Smrg </enum> 2165d4401354Smrg 2166d4401354Smrg <request name="ChangeProperty" opcode="18"> 2167d4401354Smrg <field type="CARD8" name="mode" enum="PropMode" /> 2168d4401354Smrg <field type="WINDOW" name="window" /> 2169d4401354Smrg <field type="ATOM" name="property" /> 2170d4401354Smrg <field type="ATOM" name="type" /> 2171d4401354Smrg <field type="CARD8" name="format" /> 2172d4401354Smrg <pad bytes="3" /> 2173d4401354Smrg <field type="CARD32" name="data_len" /> 2174d4401354Smrg <list type="void" name="data"> 2175d4401354Smrg <op op="/"> 2176d4401354Smrg <op op="*"> 2177d4401354Smrg <fieldref>data_len</fieldref> 2178d4401354Smrg <fieldref>format</fieldref> 2179d4401354Smrg </op> 2180d4401354Smrg <value>8</value> 2181d4401354Smrg </op> 2182d4401354Smrg </list> 2183986c8b3dSmrg <doc> 2184986c8b3dSmrg <brief>Changes a window property</brief> 2185986c8b3dSmrg <description><![CDATA[ 2186986c8b3dSmrgSets or updates a property on the specified `window`. Properties are for 2187986c8b3dSmrgexample the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`). 2188986c8b3dSmrgProtocols such as EWMH also use properties - for example EWMH defines the 2189986c8b3dSmrgwindow title, encoded as UTF-8 string, in the `_NET_WM_NAME` property. 2190986c8b3dSmrg ]]></description> 2191986c8b3dSmrg <example><![CDATA[ 2192986c8b3dSmrg/* 2193986c8b3dSmrg * Sets the WM_NAME property of the window to "XCB Example". 2194986c8b3dSmrg * 2195986c8b3dSmrg */ 2196891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_window_t window) { 2197986c8b3dSmrg xcb_change_property(conn, 2198986c8b3dSmrg XCB_PROP_MODE_REPLACE, 2199986c8b3dSmrg window, 2200986c8b3dSmrg XCB_ATOM_WM_NAME, 2201986c8b3dSmrg XCB_ATOM_STRING, 2202986c8b3dSmrg 8, 2203986c8b3dSmrg strlen("XCB Example"), 2204986c8b3dSmrg "XCB Example"); 2205986c8b3dSmrg xcb_flush(conn); 2206986c8b3dSmrg} 2207986c8b3dSmrg ]]></example> 2208986c8b3dSmrg <field name="window"><![CDATA[ 2209986c8b3dSmrgThe window whose property you want to change. 2210986c8b3dSmrg ]]></field> 2211986c8b3dSmrg <!-- the enum doc is sufficient. --> 2212986c8b3dSmrg <field name="mode" /> 2213986c8b3dSmrg <field name="property"><![CDATA[ 2214986c8b3dSmrgThe property you want to change (an atom). 2215986c8b3dSmrg ]]></field> 2216986c8b3dSmrg <field name="type"><![CDATA[ 2217986c8b3dSmrgThe type of the property you want to change (an atom). 2218986c8b3dSmrg ]]></field> 2219986c8b3dSmrg <field name="format"><![CDATA[ 2220986c8b3dSmrgSpecifies whether the data should be viewed as a list of 8-bit, 16-bit or 2221986c8b3dSmrg32-bit quantities. Possible values are 8, 16 and 32. This information allows 2222986c8b3dSmrgthe X server to correctly perform byte-swap operations as necessary. 2223986c8b3dSmrg ]]></field> 2224986c8b3dSmrg <field name="data_len"><![CDATA[ 2225986c8b3dSmrgSpecifies the number of elements (see `format`). 2226986c8b3dSmrg ]]></field> 2227986c8b3dSmrg <field name="data"><![CDATA[ 2228986c8b3dSmrgThe property data. 2229986c8b3dSmrg ]]></field> 2230986c8b3dSmrg <error type="Match"><![CDATA[ 2231986c8b3dSmrgTODO: reasons? 2232986c8b3dSmrg ]]></error> 2233986c8b3dSmrg <error type="Value"><![CDATA[ 2234986c8b3dSmrgTODO: reasons? 2235986c8b3dSmrg ]]></error> 2236986c8b3dSmrg <error type="Window"><![CDATA[ 2237986c8b3dSmrgThe specified `window` does not exist. 2238986c8b3dSmrg ]]></error> 2239986c8b3dSmrg <error type="Atom"><![CDATA[ 2240986c8b3dSmrg`property` or `type` do not refer to a valid atom. 2241986c8b3dSmrg ]]></error> 2242986c8b3dSmrg <error type="Alloc"><![CDATA[ 2243986c8b3dSmrgThe X server could not store the property (no memory?). 2244986c8b3dSmrg ]]></error> 2245986c8b3dSmrg <see type="request" name="InternAtom" /> 2246986c8b3dSmrg <see type="program" name="xprop" /> 2247986c8b3dSmrg </doc> 2248d4401354Smrg </request> 2249d4401354Smrg 2250d4401354Smrg <request name="DeleteProperty" opcode="19"> 2251d4401354Smrg <pad bytes="1" /> 2252d4401354Smrg <field type="WINDOW" name="window" /> 2253d4401354Smrg <field type="ATOM" name="property" /> 2254d4401354Smrg </request> 2255d4401354Smrg 2256d4401354Smrg <enum name="GetPropertyType"> 2257d4401354Smrg <item name="Any"><value>0</value></item> 2258d4401354Smrg </enum> 2259d4401354Smrg 2260d4401354Smrg <request name="GetProperty" opcode="20"> 2261d4401354Smrg <field type="BOOL" name="delete" /> 2262d4401354Smrg <field type="WINDOW" name="window" /> 2263d4401354Smrg <field type="ATOM" name="property" /> 2264d4401354Smrg <field type="ATOM" name="type" altenum="GetPropertyType" /> 2265d4401354Smrg <field type="CARD32" name="long_offset" /> 2266d4401354Smrg <field type="CARD32" name="long_length" /> 2267d4401354Smrg <reply> 2268d4401354Smrg <field type="CARD8" name="format" /> 2269d4401354Smrg <field type="ATOM" name="type" /> 2270d4401354Smrg <field type="CARD32" name="bytes_after" /> 2271d4401354Smrg <field type="CARD32" name="value_len" /> 2272d4401354Smrg <pad bytes="12" /> 2273d4401354Smrg <list type="void" name="value"> 2274986c8b3dSmrg <op op="*"> 2275986c8b3dSmrg <fieldref>value_len</fieldref> 2276986c8b3dSmrg <op op="/"> 2277986c8b3dSmrg <fieldref>format</fieldref> 2278986c8b3dSmrg <value>8</value> 2279986c8b3dSmrg </op> 2280986c8b3dSmrg </op> 2281d4401354Smrg </list> 2282986c8b3dSmrg <doc> 2283986c8b3dSmrg <field name="format"><![CDATA[ 2284986c8b3dSmrgSpecifies whether the data should be viewed as a list of 8-bit, 16-bit, or 2285986c8b3dSmrg32-bit quantities. Possible values are 8, 16, and 32. This information allows 2286986c8b3dSmrgthe X server to correctly perform byte-swap operations as necessary. 2287986c8b3dSmrg ]]></field> 2288986c8b3dSmrg <field name="type"><![CDATA[ 2289986c8b3dSmrgThe actual type of the property (an atom). 2290986c8b3dSmrg ]]></field> 2291986c8b3dSmrg <field name="bytes_after"><![CDATA[ 2292986c8b3dSmrgThe number of bytes remaining to be read in the property if a partial read was 2293986c8b3dSmrgperformed. 2294986c8b3dSmrg ]]></field> 2295986c8b3dSmrg <field name="value_len"><![CDATA[ 2296986c8b3dSmrgThe length of value. You should use the corresponding accessor instead of this 2297986c8b3dSmrgfield. 2298986c8b3dSmrg ]]></field> 2299986c8b3dSmrg </doc> 2300d4401354Smrg </reply> 2301986c8b3dSmrg <doc> 2302986c8b3dSmrg <brief>Gets a window property</brief> 2303986c8b3dSmrg <description><![CDATA[ 2304986c8b3dSmrgGets the specified `property` from the specified `window`. Properties are for 2305986c8b3dSmrgexample the window title (`WM_NAME`) or its minimum size (`WM_NORMAL_HINTS`). 2306986c8b3dSmrgProtocols such as EWMH also use properties - for example EWMH defines the 2307986c8b3dSmrgwindow title, encoded as UTF-8 string, in the `_NET_WM_NAME` property. 2308986c8b3dSmrg 2309986c8b3dSmrgTODO: talk about `type` 2310986c8b3dSmrg 2311986c8b3dSmrgTODO: talk about `delete` 2312986c8b3dSmrg 2313986c8b3dSmrgTODO: talk about the offset/length thing. what's a valid use case? 2314986c8b3dSmrg ]]></description> 2315986c8b3dSmrg <example><![CDATA[ 2316986c8b3dSmrg/* 2317986c8b3dSmrg * Prints the WM_NAME property of the window. 2318986c8b3dSmrg * 2319986c8b3dSmrg */ 2320891601f5Smrgvoid my_example(xcb_connection_t *c, xcb_window_t window) { 2321986c8b3dSmrg xcb_get_property_cookie_t cookie; 2322986c8b3dSmrg xcb_get_property_reply_t *reply; 2323986c8b3dSmrg 2324986c8b3dSmrg /* These atoms are predefined in the X11 protocol. */ 2325986c8b3dSmrg xcb_atom_t property = XCB_ATOM_WM_NAME; 2326986c8b3dSmrg xcb_atom_t type = XCB_ATOM_STRING; 2327986c8b3dSmrg 2328986c8b3dSmrg // TODO: a reasonable long_length for WM_NAME? 2329986c8b3dSmrg cookie = xcb_get_property(c, 0, window, property, type, 0, 0); 2330986c8b3dSmrg if ((reply = xcb_get_property_reply(c, cookie, NULL))) { 2331986c8b3dSmrg int len = xcb_get_property_value_length(reply); 2332986c8b3dSmrg if (len == 0) { 2333986c8b3dSmrg printf("TODO\\n"); 2334986c8b3dSmrg free(reply); 2335986c8b3dSmrg return; 2336986c8b3dSmrg } 2337986c8b3dSmrg printf("WM_NAME is %.*s\\n", len, 2338986c8b3dSmrg (char*)xcb_get_property_value(reply)); 2339986c8b3dSmrg } 2340986c8b3dSmrg free(reply); 2341986c8b3dSmrg} 2342986c8b3dSmrg ]]></example> 2343986c8b3dSmrg <field name="window"><![CDATA[ 2344986c8b3dSmrgThe window whose property you want to get. 2345986c8b3dSmrg ]]></field> 2346986c8b3dSmrg <field name="delete"><![CDATA[ 2347986c8b3dSmrgWhether the property should actually be deleted. For deleting a property, the 2348986c8b3dSmrgspecified `type` has to match the actual property type. 2349986c8b3dSmrg ]]></field> 2350986c8b3dSmrg <field name="property"><![CDATA[ 2351986c8b3dSmrgThe property you want to get (an atom). 2352986c8b3dSmrg ]]></field> 2353986c8b3dSmrg <field name="type"><![CDATA[ 2354986c8b3dSmrgThe type of the property you want to get (an atom). 2355986c8b3dSmrg ]]></field> 2356986c8b3dSmrg <field name="long_offset"><![CDATA[ 2357986c8b3dSmrgSpecifies the offset (in 32-bit multiples) in the specified property where the 2358986c8b3dSmrgdata is to be retrieved. 2359986c8b3dSmrg ]]></field> 2360986c8b3dSmrg <field name="long_length"><![CDATA[ 2361986c8b3dSmrgSpecifies how many 32-bit multiples of data should be retrieved (e.g. if you 2362986c8b3dSmrgset `long_length` to 4, you will receive 16 bytes of data). 2363986c8b3dSmrg ]]></field> 2364986c8b3dSmrg <error type="Window"><![CDATA[ 2365986c8b3dSmrgThe specified `window` does not exist. 2366986c8b3dSmrg ]]></error> 2367986c8b3dSmrg <error type="Atom"><![CDATA[ 2368986c8b3dSmrg`property` or `type` do not refer to a valid atom. 2369986c8b3dSmrg ]]></error> 2370986c8b3dSmrg <error type="Value"><![CDATA[ 2371986c8b3dSmrgThe specified `long_offset` is beyond the actual property length (e.g. the 2372986c8b3dSmrgproperty has a length of 3 bytes and you are setting `long_offset` to 1, 2373986c8b3dSmrgresulting in a byte offset of 4). 2374986c8b3dSmrg ]]></error> 2375986c8b3dSmrg <see type="request" name="InternAtom" /> 2376986c8b3dSmrg <see type="program" name="xprop" /> 2377986c8b3dSmrg </doc> 2378d4401354Smrg </request> 2379d4401354Smrg 2380d4401354Smrg <request name="ListProperties" opcode="21"> 2381d4401354Smrg <pad bytes="1" /> 2382d4401354Smrg <field type="WINDOW" name="window" /> 2383d4401354Smrg <reply> 2384d4401354Smrg <pad bytes="1" /> 2385d4401354Smrg <field type="CARD16" name="atoms_len" /> 2386d4401354Smrg <pad bytes="22" /> 2387d4401354Smrg <list type="ATOM" name="atoms"> 2388d4401354Smrg <fieldref>atoms_len</fieldref> 2389d4401354Smrg </list> 2390d4401354Smrg </reply> 2391d4401354Smrg </request> 2392d4401354Smrg 2393d4401354Smrg <request name="SetSelectionOwner" opcode="22"> 2394d4401354Smrg <pad bytes="1" /> 2395d4401354Smrg <field type="WINDOW" name="owner" altenum="Window" /> 2396d4401354Smrg <field type="ATOM" name="selection" /> 2397d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2398986c8b3dSmrg <doc> 2399986c8b3dSmrg <brief>Sets the owner of a selection</brief> 2400986c8b3dSmrg <description><![CDATA[ 2401986c8b3dSmrgMakes `window` the owner of the selection `selection` and updates the 2402986c8b3dSmrglast-change time of the specified selection. 2403986c8b3dSmrg 2404986c8b3dSmrgTODO: briefly explain what a selection is. 2405986c8b3dSmrg ]]></description> 2406986c8b3dSmrg <field name="selection"><![CDATA[ 2407986c8b3dSmrgThe selection. 2408986c8b3dSmrg ]]></field> 2409986c8b3dSmrg <field name="owner"><![CDATA[ 2410986c8b3dSmrgThe new owner of the selection. 2411986c8b3dSmrg 2412986c8b3dSmrgThe special value `XCB_NONE` means that the selection will have no owner. 2413986c8b3dSmrg ]]></field> 2414986c8b3dSmrg <field name="time"><![CDATA[ 2415986c8b3dSmrgTimestamp to avoid race conditions when running X over the network. 2416986c8b3dSmrg 2417986c8b3dSmrgThe selection will not be changed if `time` is earlier than the current 2418986c8b3dSmrglast-change time of the `selection` or is later than the current X server time. 2419986c8b3dSmrgOtherwise, the last-change time is set to the specified time. 2420986c8b3dSmrg 2421986c8b3dSmrgThe special value `XCB_CURRENT_TIME` will be replaced with the current server 2422986c8b3dSmrgtime. 2423986c8b3dSmrg ]]></field> 2424986c8b3dSmrg <error type="Atom"><![CDATA[ 2425986c8b3dSmrg`selection` does not refer to a valid atom. 2426986c8b3dSmrg ]]></error> 2427986c8b3dSmrg <see type="request" name="SetSelectionOwner" /> 2428986c8b3dSmrg </doc> 2429986c8b3dSmrg 2430d4401354Smrg </request> 2431d4401354Smrg 2432d4401354Smrg <request name="GetSelectionOwner" opcode="23"> 2433d4401354Smrg <pad bytes="1" /> 2434d4401354Smrg <field type="ATOM" name="selection" /> 2435d4401354Smrg <reply> 2436d4401354Smrg <pad bytes="1" /> 2437d4401354Smrg <field type="WINDOW" name="owner" altenum="Window" /> 2438986c8b3dSmrg <doc> 2439986c8b3dSmrg <field name="owner"><![CDATA[ 2440986c8b3dSmrgThe current selection owner window. 2441986c8b3dSmrg ]]></field> 2442986c8b3dSmrg </doc> 2443d4401354Smrg </reply> 2444986c8b3dSmrg <doc> 2445986c8b3dSmrg <brief>Gets the owner of a selection</brief> 2446986c8b3dSmrg <description><![CDATA[ 2447986c8b3dSmrgGets the owner of the specified selection. 2448986c8b3dSmrg 2449986c8b3dSmrgTODO: briefly explain what a selection is. 2450986c8b3dSmrg ]]></description> 2451986c8b3dSmrg <field name="selection"><![CDATA[ 2452986c8b3dSmrgThe selection. 2453986c8b3dSmrg ]]></field> 2454986c8b3dSmrg <error type="Atom"><![CDATA[ 2455986c8b3dSmrg`selection` does not refer to a valid atom. 2456986c8b3dSmrg ]]></error> 2457986c8b3dSmrg <see type="request" name="SetSelectionOwner" /> 2458986c8b3dSmrg </doc> 2459d4401354Smrg </request> 2460d4401354Smrg 2461d4401354Smrg <request name="ConvertSelection" opcode="24"> 2462d4401354Smrg <pad bytes="1" /> 2463d4401354Smrg <field type="WINDOW" name="requestor" /> 2464d4401354Smrg <field type="ATOM" name="selection" /> 2465d4401354Smrg <field type="ATOM" name="target" /> 2466d4401354Smrg <field type="ATOM" name="property" altenum="Atom" /> 2467d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2468d4401354Smrg </request> 2469d4401354Smrg 2470d4401354Smrg <enum name="SendEventDest"> 2471d4401354Smrg <item name="PointerWindow"><value>0</value></item> 2472d4401354Smrg <item name="ItemFocus"> <value>1</value></item> 2473d4401354Smrg </enum> 2474d4401354Smrg 2475d4401354Smrg <request name="SendEvent" opcode="25"> 2476d4401354Smrg <field type="BOOL" name="propagate" /> 2477d4401354Smrg <field type="WINDOW" name="destination" altenum="SendEventDest" /> 2478d4401354Smrg <field type="CARD32" name="event_mask" mask="EventMask" /> 2479d4401354Smrg <list type="char" name="event"><value>32</value></list> 2480986c8b3dSmrg <doc> 2481986c8b3dSmrg <brief>send an event</brief> 2482986c8b3dSmrg <description><![CDATA[ 2483986c8b3dSmrgIdentifies the `destination` window, determines which clients should receive 2484986c8b3dSmrgthe specified event and ignores any active grabs. 2485986c8b3dSmrg 2486986c8b3dSmrgThe `event` must be one of the core events or an event defined by an extension, 2487986c8b3dSmrgso that the X server can correctly byte-swap the contents as necessary. The 2488986c8b3dSmrgcontents of `event` are otherwise unaltered and unchecked except for the 2489986c8b3dSmrg`send_event` field which is forced to 'true'. 2490986c8b3dSmrg ]]></description> 2491986c8b3dSmrg <example><![CDATA[ 2492986c8b3dSmrg/* 2493986c8b3dSmrg * Tell the given window that it was configured to a size of 800x600 pixels. 2494986c8b3dSmrg * 2495986c8b3dSmrg */ 2496986c8b3dSmrgvoid my_example(xcb_connection_t *conn, xcb_window_t window) { 2497986c8b3dSmrg /* Every X11 event is 32 bytes long. Therefore, XCB will copy 32 bytes. 2498986c8b3dSmrg * In order to properly initialize these bytes, we allocate 32 bytes even 2499986c8b3dSmrg * though we only need less for an xcb_configure_notify_event_t */ 2500986c8b3dSmrg xcb_configure_notify_event_t *event = calloc(32, 1); 2501986c8b3dSmrg 2502986c8b3dSmrg event->event = window; 2503986c8b3dSmrg event->window = window; 2504986c8b3dSmrg event->response_type = XCB_CONFIGURE_NOTIFY; 2505986c8b3dSmrg 2506986c8b3dSmrg event->x = 0; 2507986c8b3dSmrg event->y = 0; 2508986c8b3dSmrg event->width = 800; 2509986c8b3dSmrg event->height = 600; 2510986c8b3dSmrg 2511986c8b3dSmrg event->border_width = 0; 2512986c8b3dSmrg event->above_sibling = XCB_NONE; 2513986c8b3dSmrg event->override_redirect = false; 2514986c8b3dSmrg 2515986c8b3dSmrg xcb_send_event(conn, false, window, XCB_EVENT_MASK_STRUCTURE_NOTIFY, 2516986c8b3dSmrg (char*)event); 2517986c8b3dSmrg xcb_flush(conn); 2518986c8b3dSmrg free(event); 2519986c8b3dSmrg} 2520986c8b3dSmrg ]]></example> 2521986c8b3dSmrg <field name="destination"><![CDATA[ 2522986c8b3dSmrgThe window to send this event to. Every client which selects any event within 2523986c8b3dSmrg`event_mask` on `destination` will get the event. 2524986c8b3dSmrg 2525986c8b3dSmrgThe special value `XCB_SEND_EVENT_DEST_POINTER_WINDOW` refers to the window 2526986c8b3dSmrgthat contains the mouse pointer. 2527986c8b3dSmrg 2528986c8b3dSmrgThe special value `XCB_SEND_EVENT_DEST_ITEM_FOCUS` refers to the window which 2529986c8b3dSmrghas the keyboard focus. 2530986c8b3dSmrg ]]></field> 2531986c8b3dSmrg <field name="event_mask"><![CDATA[ 2532986c8b3dSmrgEvent_mask for determining which clients should receive the specified event. 2533986c8b3dSmrgSee `destination` and `propagate`. 2534986c8b3dSmrg ]]></field> 2535986c8b3dSmrg <field name="propagate"><![CDATA[ 2536986c8b3dSmrgIf `propagate` is true and no clients have selected any event on `destination`, 2537986c8b3dSmrgthe destination is replaced with the closest ancestor of `destination` for 2538986c8b3dSmrgwhich some client has selected a type in `event_mask` and for which no 2539986c8b3dSmrgintervening window has that type in its do-not-propagate-mask. If no such 2540986c8b3dSmrgwindow exists or if the window is an ancestor of the focus window and 2541986c8b3dSmrg`InputFocus` was originally specified as the destination, the event is not sent 2542986c8b3dSmrgto any clients. Otherwise, the event is reported to every client selecting on 2543986c8b3dSmrgthe final destination any of the types specified in `event_mask`. 2544986c8b3dSmrg ]]></field> 2545986c8b3dSmrg <field name="event"><![CDATA[ 2546986c8b3dSmrgThe event to send to the specified `destination`. 2547986c8b3dSmrg ]]></field> 2548986c8b3dSmrg <error type="Window"><![CDATA[ 2549986c8b3dSmrgThe specified `destination` window does not exist. 2550986c8b3dSmrg ]]></error> 2551986c8b3dSmrg <error type="Value"><![CDATA[ 2552986c8b3dSmrgThe given `event` is neither a core event nor an event defined by an extension. 2553986c8b3dSmrg ]]></error> 2554986c8b3dSmrg <see type="event" name="ConfigureNotify" /> 2555986c8b3dSmrg </doc> 2556d4401354Smrg </request> 2557d4401354Smrg 2558d4401354Smrg <enum name="GrabMode"> 2559d4401354Smrg <item name="Sync"> <value>0</value></item> 2560d4401354Smrg <item name="Async"><value>1</value></item> 2561986c8b3dSmrg <doc> 2562986c8b3dSmrg <field name="Sync"><![CDATA[ 2563986c8b3dSmrgThe state of the keyboard appears to freeze: No further keyboard events are 2564986c8b3dSmrggenerated by the server until the grabbing client issues a releasing 2565986c8b3dSmrg`AllowEvents` request or until the keyboard grab is released. 2566986c8b3dSmrg ]]></field> 2567986c8b3dSmrg <field name="Async"><![CDATA[ 2568986c8b3dSmrgKeyboard event processing continues normally. 2569986c8b3dSmrg ]]></field> 2570986c8b3dSmrg </doc> 2571d4401354Smrg </enum> 2572d4401354Smrg 2573d4401354Smrg <enum name="GrabStatus"> 2574d4401354Smrg <item name="Success"> <value>0</value></item> 2575d4401354Smrg <item name="AlreadyGrabbed"><value>1</value></item> 2576d4401354Smrg <item name="InvalidTime"> <value>2</value></item> 2577d4401354Smrg <item name="NotViewable"> <value>3</value></item> 2578d4401354Smrg <item name="Frozen"> <value>4</value></item> 2579d4401354Smrg </enum> 2580d4401354Smrg 2581d4401354Smrg <enum name="Cursor"> 2582d4401354Smrg <item name="None"> <value>0</value></item> 2583d4401354Smrg </enum> 2584d4401354Smrg 2585d4401354Smrg <request name="GrabPointer" opcode="26"> 2586d4401354Smrg <field type="BOOL" name="owner_events" /> 2587d4401354Smrg <field type="WINDOW" name="grab_window" /> 2588d4401354Smrg <field type="CARD16" name="event_mask" mask="EventMask" /> 2589d4401354Smrg <field type="BYTE" name="pointer_mode" enum="GrabMode" /> 2590d4401354Smrg <field type="BYTE" name="keyboard_mode" enum="GrabMode" /> 2591d4401354Smrg <field type="WINDOW" name="confine_to" altenum="Window" /> 2592d4401354Smrg <field type="CURSOR" name="cursor" altenum="Cursor" /> 2593d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2594d4401354Smrg <reply> 2595d4401354Smrg <field type="BYTE" name="status" enum="GrabStatus" /> 2596d4401354Smrg </reply> 2597986c8b3dSmrg <doc> 2598986c8b3dSmrg <brief>Grab the pointer</brief> 2599986c8b3dSmrg <description><![CDATA[ 2600986c8b3dSmrgActively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client. 2601986c8b3dSmrg 2602986c8b3dSmrg ]]></description> 2603986c8b3dSmrg <example><![CDATA[ 2604986c8b3dSmrg/* 2605986c8b3dSmrg * Grabs the pointer actively 2606986c8b3dSmrg * 2607986c8b3dSmrg */ 2608891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_screen_t *screen, xcb_cursor_t cursor) { 2609986c8b3dSmrg xcb_grab_pointer_cookie_t cookie; 2610986c8b3dSmrg xcb_grab_pointer_reply_t *reply; 2611986c8b3dSmrg 2612986c8b3dSmrg cookie = xcb_grab_pointer( 2613986c8b3dSmrg conn, 2614986c8b3dSmrg false, /* get all pointer events specified by the following mask */ 2615986c8b3dSmrg screen->root, /* grab the root window */ 2616986c8b3dSmrg XCB_NONE, /* which events to let through */ 2617986c8b3dSmrg XCB_GRAB_MODE_ASYNC, /* pointer events should continue as normal */ 2618986c8b3dSmrg XCB_GRAB_MODE_ASYNC, /* keyboard mode */ 2619986c8b3dSmrg XCB_NONE, /* confine_to = in which window should the cursor stay */ 2620986c8b3dSmrg cursor, /* we change the cursor to whatever the user wanted */ 2621986c8b3dSmrg XCB_CURRENT_TIME 2622986c8b3dSmrg ); 2623986c8b3dSmrg 2624986c8b3dSmrg if ((reply = xcb_grab_pointer_reply(conn, cookie, NULL))) { 2625986c8b3dSmrg if (reply->status == XCB_GRAB_STATUS_SUCCESS) 2626986c8b3dSmrg printf("successfully grabbed the pointer\\n"); 2627d5c9b07bSmrg free(reply); 2628986c8b3dSmrg } 2629986c8b3dSmrg} 2630986c8b3dSmrg ]]></example> 2631986c8b3dSmrg <field name="event_mask"><![CDATA[ 2632986c8b3dSmrgSpecifies which pointer events are reported to the client. 2633986c8b3dSmrg 2634986c8b3dSmrgTODO: which values? 2635986c8b3dSmrg ]]></field> 2636986c8b3dSmrg <field name="confine_to"><![CDATA[ 2637986c8b3dSmrgSpecifies the window to confine the pointer in (the user will not be able to 2638986c8b3dSmrgmove the pointer out of that window). 2639986c8b3dSmrg 2640986c8b3dSmrgThe special value `XCB_NONE` means don't confine the pointer. 2641986c8b3dSmrg ]]></field> 2642986c8b3dSmrg <field name="cursor"><![CDATA[ 2643986c8b3dSmrgSpecifies the cursor that should be displayed or `XCB_NONE` to not change the 2644986c8b3dSmrgcursor. 2645986c8b3dSmrg ]]></field> 2646986c8b3dSmrg <field name="owner_events"><![CDATA[ 2647986c8b3dSmrgIf 1, the `grab_window` will still get the pointer events. If 0, events are not 2648986c8b3dSmrgreported to the `grab_window`. 2649986c8b3dSmrg ]]></field> 2650986c8b3dSmrg <field name="grab_window"><![CDATA[ 2651986c8b3dSmrgSpecifies the window on which the pointer should be grabbed. 2652986c8b3dSmrg ]]></field> 2653986c8b3dSmrg <field name="time"><![CDATA[ 2654986c8b3dSmrgThe time argument allows you to avoid certain circumstances that come up if 2655986c8b3dSmrgapplications take a long time to respond or if there are long network delays. 2656986c8b3dSmrgConsider a situation where you have two applications, both of which normally 2657986c8b3dSmrggrab the pointer when clicked on. If both applications specify the timestamp 2658986c8b3dSmrgfrom the event, the second application may wake up faster and successfully grab 2659986c8b3dSmrgthe pointer before the first application. The first application then will get 2660986c8b3dSmrgan indication that the other application grabbed the pointer before its request 2661986c8b3dSmrgwas processed. 2662986c8b3dSmrg 2663986c8b3dSmrgThe special value `XCB_CURRENT_TIME` will be replaced with the current server 2664986c8b3dSmrgtime. 2665986c8b3dSmrg ]]></field> 2666986c8b3dSmrg <!-- the enum doc is sufficient. --> 2667986c8b3dSmrg <field name="pointer_mode" /> 2668986c8b3dSmrg <field name="keyboard_mode" /> 2669986c8b3dSmrg <error type="Value"><![CDATA[ 2670986c8b3dSmrgTODO: reasons? 2671986c8b3dSmrg ]]></error> 2672986c8b3dSmrg <error type="Window"><![CDATA[ 2673986c8b3dSmrgThe specified `window` does not exist. 2674986c8b3dSmrg ]]></error> 2675986c8b3dSmrg 2676986c8b3dSmrg <see type="request" name="GrabKeyboard" /> 2677986c8b3dSmrg </doc> 2678d4401354Smrg </request> 2679d4401354Smrg 2680d4401354Smrg <request name="UngrabPointer" opcode="27"> 2681d4401354Smrg <pad bytes="1" /> 2682d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2683986c8b3dSmrg <doc> 2684986c8b3dSmrg <brief>release the pointer</brief> 2685986c8b3dSmrg <description><![CDATA[ 2686986c8b3dSmrgReleases the pointer and any queued events if you actively grabbed the pointer 2687986c8b3dSmrgbefore using `xcb_grab_pointer`, `xcb_grab_button` or within a normal button 2688986c8b3dSmrgpress. 2689986c8b3dSmrg 2690986c8b3dSmrgEnterNotify and LeaveNotify events are generated. 2691986c8b3dSmrg ]]></description> 2692986c8b3dSmrg <field name="time"><![CDATA[ 2693986c8b3dSmrgTimestamp to avoid race conditions when running X over the network. 2694986c8b3dSmrg 2695986c8b3dSmrgThe pointer will not be released if `time` is earlier than the 2696986c8b3dSmrglast-pointer-grab time or later than the current X server time. 2697986c8b3dSmrg ]]></field> 2698986c8b3dSmrg <field name="name_len"><![CDATA[ 2699986c8b3dSmrgLength (in bytes) of `name`. 2700986c8b3dSmrg ]]></field> 2701986c8b3dSmrg <field name="name"><![CDATA[ 2702986c8b3dSmrgA pattern describing an X core font. 2703986c8b3dSmrg ]]></field> 2704986c8b3dSmrg <see type="request" name="GrabPointer" /> 2705986c8b3dSmrg <see type="request" name="GrabButton" /> 2706986c8b3dSmrg <see type="event" name="EnterNotify" /> 2707986c8b3dSmrg <see type="event" name="LeaveNotify" /> 2708986c8b3dSmrg </doc> 2709d4401354Smrg </request> 2710d4401354Smrg 2711d4401354Smrg <enum name="ButtonIndex"> 2712d4401354Smrg <item name="Any"><value>0</value></item> 2713d4401354Smrg <item name="1"> <value>1</value></item> 2714d4401354Smrg <item name="2"> <value>2</value></item> 2715d4401354Smrg <item name="3"> <value>3</value></item> 2716d4401354Smrg <item name="4"> <value>4</value></item> 2717d4401354Smrg <item name="5"> <value>5</value></item> 2718986c8b3dSmrg <doc> 2719986c8b3dSmrg <field name="Any"><![CDATA[ 2720986c8b3dSmrgAny of the following (or none): 2721986c8b3dSmrg ]]></field> 2722986c8b3dSmrg <field name="1"><![CDATA[ 2723986c8b3dSmrgThe left mouse button. 2724986c8b3dSmrg ]]></field> 2725986c8b3dSmrg <field name="2"><![CDATA[ 2726986c8b3dSmrgThe right mouse button. 2727986c8b3dSmrg ]]></field> 2728986c8b3dSmrg <field name="3"><![CDATA[ 2729986c8b3dSmrgThe middle mouse button. 2730986c8b3dSmrg ]]></field> 2731986c8b3dSmrg <field name="4"><![CDATA[ 2732986c8b3dSmrgScroll wheel. TODO: direction? 2733986c8b3dSmrg ]]></field> 2734986c8b3dSmrg <field name="5"><![CDATA[ 2735986c8b3dSmrgScroll wheel. TODO: direction? 2736986c8b3dSmrg ]]></field> 2737986c8b3dSmrg </doc> 2738d4401354Smrg </enum> 2739d4401354Smrg 2740d4401354Smrg <request name="GrabButton" opcode="28"> 2741d4401354Smrg <field type="BOOL" name="owner_events" /> 2742d4401354Smrg <field type="WINDOW" name="grab_window" /> 2743d4401354Smrg <field type="CARD16" name="event_mask" mask="EventMask" /> 2744d4401354Smrg <field type="CARD8" name="pointer_mode" enum="GrabMode" /> 2745d4401354Smrg <field type="CARD8" name="keyboard_mode" enum="GrabMode" /> 2746d4401354Smrg <field type="WINDOW" name="confine_to" altenum="Window" /> 2747d4401354Smrg <field type="CURSOR" name="cursor" altenum="Cursor" /> 2748d4401354Smrg <field type="CARD8" name="button" enum="ButtonIndex" /> 2749d4401354Smrg <pad bytes="1" /> 2750d4401354Smrg <field type="CARD16" name="modifiers" mask="ModMask" /> 2751986c8b3dSmrg <doc> 2752986c8b3dSmrg <brief>Grab pointer button(s)</brief> 2753986c8b3dSmrg <description><![CDATA[ 2754986c8b3dSmrgThis request establishes a passive grab. The pointer is actively grabbed as 2755986c8b3dSmrgdescribed in GrabPointer, the last-pointer-grab time is set to the time at 2756986c8b3dSmrgwhich the button was pressed (as transmitted in the ButtonPress event), and the 2757986c8b3dSmrgButtonPress event is reported if all of the following conditions are true: 2758986c8b3dSmrg 2759986c8b3dSmrgThe pointer is not grabbed and the specified button is logically pressed when 2760986c8b3dSmrgthe specified modifier keys are logically down, and no other buttons or 2761986c8b3dSmrgmodifier keys are logically down. 2762986c8b3dSmrg 2763986c8b3dSmrgThe grab-window contains the pointer. 2764986c8b3dSmrg 2765986c8b3dSmrgThe confine-to window (if any) is viewable. 2766986c8b3dSmrg 2767986c8b3dSmrgA passive grab on the same button/key combination does not exist on any 2768986c8b3dSmrgancestor of grab-window. 2769986c8b3dSmrg 2770986c8b3dSmrgThe interpretation of the remaining arguments is the same as for GrabPointer. 2771986c8b3dSmrgThe active grab is terminated automatically when the logical state of the 2772986c8b3dSmrgpointer has all buttons released, independent of the logical state of modifier 2773986c8b3dSmrgkeys. Note that the logical state of a device (as seen by means of the 2774986c8b3dSmrgprotocol) may lag the physical state if device event processing is frozen. This 2775986c8b3dSmrgrequest overrides all previous passive grabs by the same client on the same 2776986c8b3dSmrgbutton/key combinations on the same window. A modifier of AnyModifier is 2777986c8b3dSmrgequivalent to issuing the request for all possible modifier combinations 2778986c8b3dSmrg(including the combination of no modifiers). It is not required that all 2779986c8b3dSmrgspecified modifiers have currently assigned keycodes. A button of AnyButton is 2780986c8b3dSmrgequivalent to issuing the request for all possible buttons. Otherwise, it is 2781986c8b3dSmrgnot required that the button specified currently be assigned to a physical 2782986c8b3dSmrgbutton. 2783986c8b3dSmrg 2784986c8b3dSmrgAn Access error is generated if some other client has already issued a 2785986c8b3dSmrgGrabButton request with the same button/key combination on the same window. 2786986c8b3dSmrgWhen using AnyModifier or AnyButton, the request fails completely (no grabs are 2787986c8b3dSmrgestablished), and an Access error is generated if there is a conflicting grab 2788986c8b3dSmrgfor any combination. The request has no effect on an active grab. 2789986c8b3dSmrg 2790986c8b3dSmrg ]]></description> 2791986c8b3dSmrg <field name="owner_events"><![CDATA[ 2792986c8b3dSmrgIf 1, the `grab_window` will still get the pointer events. If 0, events are not 2793986c8b3dSmrgreported to the `grab_window`. 2794986c8b3dSmrg ]]></field> 2795986c8b3dSmrg <field name="grab_window"><![CDATA[ 2796986c8b3dSmrgSpecifies the window on which the pointer should be grabbed. 2797986c8b3dSmrg ]]></field> 2798986c8b3dSmrg <field name="event_mask"><![CDATA[ 2799986c8b3dSmrgSpecifies which pointer events are reported to the client. 2800986c8b3dSmrg 2801986c8b3dSmrgTODO: which values? 2802986c8b3dSmrg ]]></field> 2803986c8b3dSmrg <field name="confine_to"><![CDATA[ 2804986c8b3dSmrgSpecifies the window to confine the pointer in (the user will not be able to 2805986c8b3dSmrgmove the pointer out of that window). 2806986c8b3dSmrg 2807986c8b3dSmrgThe special value `XCB_NONE` means don't confine the pointer. 2808986c8b3dSmrg ]]></field> 2809986c8b3dSmrg <field name="cursor"><![CDATA[ 2810986c8b3dSmrgSpecifies the cursor that should be displayed or `XCB_NONE` to not change the 2811986c8b3dSmrgcursor. 2812986c8b3dSmrg ]]></field> 2813986c8b3dSmrg <field name="modifiers"><![CDATA[ 2814986c8b3dSmrgThe modifiers to grab. 2815986c8b3dSmrg 2816986c8b3dSmrgUsing the special value `XCB_MOD_MASK_ANY` means grab the pointer with all 2817986c8b3dSmrgpossible modifier combinations. 2818986c8b3dSmrg ]]></field> 2819986c8b3dSmrg <!-- the enum doc is sufficient. --> 2820986c8b3dSmrg <field name="pointer_mode" /> 2821986c8b3dSmrg <field name="keyboard_mode" /> 2822986c8b3dSmrg <field name="button" /> 2823986c8b3dSmrg <error type="Access"><![CDATA[ 2824986c8b3dSmrgAnother client has already issued a GrabButton with the same button/key 2825986c8b3dSmrgcombination on the same window. 2826986c8b3dSmrg ]]></error> 2827986c8b3dSmrg <error type="Value"><![CDATA[ 2828986c8b3dSmrgTODO: reasons? 2829986c8b3dSmrg ]]></error> 2830986c8b3dSmrg <error type="Cursor"><![CDATA[ 2831986c8b3dSmrgThe specified `cursor` does not exist. 2832986c8b3dSmrg ]]></error> 2833986c8b3dSmrg <error type="Window"><![CDATA[ 2834986c8b3dSmrgThe specified `window` does not exist. 2835986c8b3dSmrg ]]></error> 2836986c8b3dSmrg </doc> 2837d4401354Smrg </request> 2838d4401354Smrg 2839d4401354Smrg <request name="UngrabButton" opcode="29"> 2840d4401354Smrg <field type="CARD8" name="button" enum="ButtonIndex" /> 2841d4401354Smrg <field type="WINDOW" name="grab_window" /> 2842d4401354Smrg <field type="CARD16" name="modifiers" mask="ModMask" /> 2843d4401354Smrg <pad bytes="2" /> 2844d4401354Smrg </request> 2845d4401354Smrg 2846d4401354Smrg <request name="ChangeActivePointerGrab" opcode="30"> 2847d4401354Smrg <pad bytes="1" /> 2848d4401354Smrg <field type="CURSOR" name="cursor" altenum="Cursor" /> 2849d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2850d4401354Smrg <field type="CARD16" name="event_mask" mask="EventMask" /> 2851d4401354Smrg <pad bytes="2" /> 2852d4401354Smrg </request> 2853d4401354Smrg 2854d4401354Smrg <request name="GrabKeyboard" opcode="31"> 2855d4401354Smrg <field type="BOOL" name="owner_events" /> 2856d4401354Smrg <field type="WINDOW" name="grab_window" /> 2857d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2858d4401354Smrg <field type="BYTE" name="pointer_mode" enum="GrabMode" /> 2859d4401354Smrg <field type="BYTE" name="keyboard_mode" enum="GrabMode" /> 2860d4401354Smrg <pad bytes="2" /> 2861d4401354Smrg <reply> 2862d4401354Smrg <field type="BYTE" name="status" enum="GrabStatus" /> 2863d4401354Smrg </reply> 2864986c8b3dSmrg <doc> 2865986c8b3dSmrg <brief>Grab the keyboard</brief> 2866986c8b3dSmrg <description><![CDATA[ 2867986c8b3dSmrgActively grabs control of the keyboard and generates FocusIn and FocusOut 2868986c8b3dSmrgevents. Further key events are reported only to the grabbing client. 2869986c8b3dSmrg 2870986c8b3dSmrgAny active keyboard grab by this client is overridden. If the keyboard is 2871986c8b3dSmrgactively grabbed by some other client, `AlreadyGrabbed` is returned. If 2872986c8b3dSmrg`grab_window` is not viewable, `GrabNotViewable` is returned. If the keyboard 2873986c8b3dSmrgis frozen by an active grab of another client, `GrabFrozen` is returned. If the 2874986c8b3dSmrgspecified `time` is earlier than the last-keyboard-grab time or later than the 2875986c8b3dSmrgcurrent X server time, `GrabInvalidTime` is returned. Otherwise, the 2876986c8b3dSmrglast-keyboard-grab time is set to the specified time. 2877986c8b3dSmrg ]]></description> 2878986c8b3dSmrg <example><![CDATA[ 2879986c8b3dSmrg/* 2880986c8b3dSmrg * Grabs the keyboard actively 2881986c8b3dSmrg * 2882986c8b3dSmrg */ 2883891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_screen_t *screen) { 2884986c8b3dSmrg xcb_grab_keyboard_cookie_t cookie; 2885986c8b3dSmrg xcb_grab_keyboard_reply_t *reply; 2886986c8b3dSmrg 2887986c8b3dSmrg cookie = xcb_grab_keyboard( 2888986c8b3dSmrg conn, 2889986c8b3dSmrg true, /* report events */ 2890986c8b3dSmrg screen->root, /* grab the root window */ 2891986c8b3dSmrg XCB_CURRENT_TIME, 2892986c8b3dSmrg XCB_GRAB_MODE_ASYNC, /* process events as normal, do not require sync */ 2893986c8b3dSmrg XCB_GRAB_MODE_ASYNC 2894986c8b3dSmrg ); 2895986c8b3dSmrg 2896986c8b3dSmrg if ((reply = xcb_grab_keyboard_reply(conn, cookie, NULL))) { 2897986c8b3dSmrg if (reply->status == XCB_GRAB_STATUS_SUCCESS) 2898986c8b3dSmrg printf("successfully grabbed the keyboard\\n"); 2899986c8b3dSmrg 2900986c8b3dSmrg free(reply); 2901986c8b3dSmrg } 2902986c8b3dSmrg} 2903986c8b3dSmrg ]]></example> 2904986c8b3dSmrg <field name="owner_events"><![CDATA[ 2905986c8b3dSmrgIf 1, the `grab_window` will still get the pointer events. If 0, events are not 2906986c8b3dSmrgreported to the `grab_window`. 2907986c8b3dSmrg ]]></field> 2908986c8b3dSmrg <field name="grab_window"><![CDATA[ 2909986c8b3dSmrgSpecifies the window on which the pointer should be grabbed. 2910986c8b3dSmrg ]]></field> 2911986c8b3dSmrg <field name="time"><![CDATA[ 2912986c8b3dSmrgTimestamp to avoid race conditions when running X over the network. 2913986c8b3dSmrg 2914986c8b3dSmrgThe special value `XCB_CURRENT_TIME` will be replaced with the current server 2915986c8b3dSmrgtime. 2916986c8b3dSmrg ]]></field> 2917986c8b3dSmrg <!-- the enum doc is sufficient. --> 2918986c8b3dSmrg <field name="pointer_mode" /> 2919986c8b3dSmrg <field name="keyboard_mode" /> 2920986c8b3dSmrg <error type="Value"><![CDATA[ 2921986c8b3dSmrgTODO: reasons? 2922986c8b3dSmrg ]]></error> 2923986c8b3dSmrg <error type="Window"><![CDATA[ 2924986c8b3dSmrgThe specified `window` does not exist. 2925986c8b3dSmrg ]]></error> 2926986c8b3dSmrg <see type="request" name="GrabPointer" /> 2927986c8b3dSmrg </doc> 2928d4401354Smrg </request> 2929d4401354Smrg 2930d4401354Smrg <request name="UngrabKeyboard" opcode="32"> 2931d4401354Smrg <pad bytes="1" /> 2932d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 2933d4401354Smrg </request> 2934d4401354Smrg 2935d4401354Smrg <!-- Use KEYCODE any = { XCBGrabAny }; to grab any key --> 2936d4401354Smrg <enum name="Grab"> 2937d4401354Smrg <item name="Any"><value>0</value></item> 2938d4401354Smrg </enum> 2939d4401354Smrg 2940d4401354Smrg <request name="GrabKey" opcode="33"> 2941d4401354Smrg <field type="BOOL" name="owner_events" /> 2942d4401354Smrg <field type="WINDOW" name="grab_window" /> 2943d4401354Smrg <field type="CARD16" name="modifiers" mask="ModMask" /> 2944d4401354Smrg <field type="KEYCODE" name="key" altenum="Grab" /> 2945d4401354Smrg <field type="CARD8" name="pointer_mode" enum="GrabMode" /> 2946d4401354Smrg <field type="CARD8" name="keyboard_mode" enum="GrabMode" /> 2947d4401354Smrg <pad bytes="3" /> 2948986c8b3dSmrg <doc> 2949986c8b3dSmrg <brief>Grab keyboard key(s)</brief> 2950986c8b3dSmrg <description><![CDATA[ 2951986c8b3dSmrgEstablishes a passive grab on the keyboard. In the future, the keyboard is 2952986c8b3dSmrgactively grabbed (as for `GrabKeyboard`), the last-keyboard-grab time is set to 2953986c8b3dSmrgthe time at which the key was pressed (as transmitted in the KeyPress event), 2954986c8b3dSmrgand the KeyPress event is reported if all of the following conditions are true: 2955986c8b3dSmrg 2956986c8b3dSmrgThe keyboard is not grabbed and the specified key (which can itself be a 2957986c8b3dSmrgmodifier key) is logically pressed when the specified modifier keys are 2958986c8b3dSmrglogically down, and no other modifier keys are logically down. 2959986c8b3dSmrg 2960986c8b3dSmrgEither the grab_window is an ancestor of (or is) the focus window, or the 2961986c8b3dSmrggrab_window is a descendant of the focus window and contains the pointer. 2962986c8b3dSmrg 2963986c8b3dSmrgA passive grab on the same key combination does not exist on any ancestor of 2964986c8b3dSmrggrab_window. 2965986c8b3dSmrg 2966986c8b3dSmrgThe interpretation of the remaining arguments is as for XGrabKeyboard. The active grab is terminated 2967986c8b3dSmrgautomatically when the logical state of the keyboard has the specified key released (independent of the 2968986c8b3dSmrglogical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window. 2969986c8b3dSmrg 2970986c8b3dSmrgNote that the logical state of a device (as seen by client applications) may lag the physical state if 2971986c8b3dSmrgdevice event processing is frozen. 2972986c8b3dSmrg 2973986c8b3dSmrgA 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 2974986c8b3dSmrghave currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for 2975986c8b3dSmrgall possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode 2976986c8b3dSmrgand max_keycode in the connection setup, or a BadValue error results. 2977986c8b3dSmrg 2978986c8b3dSmrgIf some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess 2979986c8b3dSmrgerror results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error 2980986c8b3dSmrgresults (no grabs are established) if there is a conflicting grab for any combination. 2981986c8b3dSmrg 2982986c8b3dSmrg ]]></description> 2983986c8b3dSmrg <field name="owner_events"><![CDATA[ 2984d5c9b07bSmrgIf 1, the `grab_window` will still get the key events. If 0, events are not 2985986c8b3dSmrgreported to the `grab_window`. 2986986c8b3dSmrg ]]></field> 2987986c8b3dSmrg <field name="grab_window"><![CDATA[ 2988d5c9b07bSmrgSpecifies the window on which the key should be grabbed. 2989986c8b3dSmrg ]]></field> 2990986c8b3dSmrg <field name="key"><![CDATA[ 2991986c8b3dSmrgThe keycode of the key to grab. 2992986c8b3dSmrg 2993986c8b3dSmrgThe special value `XCB_GRAB_ANY` means grab any key. 2994986c8b3dSmrg ]]></field> 2995986c8b3dSmrg <field name="modifiers"><![CDATA[ 2996986c8b3dSmrgThe modifiers to grab. 2997986c8b3dSmrg 2998d5c9b07bSmrgUsing the special value `XCB_MOD_MASK_ANY` means grab the key with all 2999986c8b3dSmrgpossible modifier combinations. 3000986c8b3dSmrg ]]></field> 3001986c8b3dSmrg <!-- the enum doc is sufficient. --> 3002986c8b3dSmrg <field name="pointer_mode" /> 3003986c8b3dSmrg <field name="keyboard_mode" /> 3004986c8b3dSmrg <error type="Access"><![CDATA[ 3005986c8b3dSmrgAnother client has already issued a GrabKey with the same button/key 3006986c8b3dSmrgcombination on the same window. 3007986c8b3dSmrg ]]></error> 3008986c8b3dSmrg <error type="Value"><![CDATA[ 3009d5c9b07bSmrgThe key is not `XCB_GRAB_ANY` and not in the range specified by `min_keycode` 3010d5c9b07bSmrgand `max_keycode` in the connection setup. 3011986c8b3dSmrg ]]></error> 3012986c8b3dSmrg <error type="Window"><![CDATA[ 3013986c8b3dSmrgThe specified `window` does not exist. 3014986c8b3dSmrg ]]></error> 3015986c8b3dSmrg <see type="request" name="GrabKeyboard" /> 3016986c8b3dSmrg </doc> 3017d4401354Smrg </request> 3018d4401354Smrg 3019d4401354Smrg <request name="UngrabKey" opcode="34"> 3020d4401354Smrg <field type="KEYCODE" name="key" altenum="Grab" /> 3021d4401354Smrg <field type="WINDOW" name="grab_window" /> 3022d4401354Smrg <field type="CARD16" name="modifiers" mask="ModMask" /> 3023d4401354Smrg <pad bytes="2" /> 3024986c8b3dSmrg <doc> 3025986c8b3dSmrg <brief>release a key combination</brief> 3026986c8b3dSmrg <description><![CDATA[ 3027986c8b3dSmrgReleases the key combination on `grab_window` if you grabbed it using 3028986c8b3dSmrg`xcb_grab_key` before. 3029986c8b3dSmrg ]]></description> 3030986c8b3dSmrg <field name="key"><![CDATA[ 3031986c8b3dSmrgThe keycode of the specified key combination. 3032986c8b3dSmrg 3033986c8b3dSmrgUsing the special value `XCB_GRAB_ANY` means releasing all possible key codes. 3034986c8b3dSmrg ]]></field> 3035986c8b3dSmrg <field name="grab_window"><![CDATA[ 3036986c8b3dSmrgThe window on which the grabbed key combination will be released. 3037986c8b3dSmrg ]]></field> 3038986c8b3dSmrg <field name="modifiers"><![CDATA[ 3039986c8b3dSmrgThe modifiers of the specified key combination. 3040986c8b3dSmrg 3041986c8b3dSmrgUsing the special value `XCB_MOD_MASK_ANY` means releasing the key combination 3042986c8b3dSmrgwith every possible modifier combination. 3043986c8b3dSmrg ]]></field> 3044986c8b3dSmrg <error type="Window"><![CDATA[ 3045986c8b3dSmrgThe specified `grab_window` does not exist. 3046986c8b3dSmrg ]]></error> 3047986c8b3dSmrg <error type="Value"><![CDATA[ 3048986c8b3dSmrgTODO: reasons? 3049986c8b3dSmrg ]]></error> 3050986c8b3dSmrg <see type="request" name="GrabKey" /> 3051986c8b3dSmrg <see type="program" name="xev" /> 3052986c8b3dSmrg </doc> 3053d4401354Smrg </request> 3054d4401354Smrg 3055d4401354Smrg <enum name="Allow"> 3056d4401354Smrg <item name="AsyncPointer"> <value>0</value></item> 3057d4401354Smrg <item name="SyncPointer"> <value>1</value></item> 3058d4401354Smrg <item name="ReplayPointer"> <value>2</value></item> 3059d4401354Smrg <item name="AsyncKeyboard"> <value>3</value></item> 3060d4401354Smrg <item name="SyncKeyboard"> <value>4</value></item> 3061d4401354Smrg <item name="ReplayKeyboard"><value>5</value></item> 3062d4401354Smrg <item name="AsyncBoth"> <value>6</value></item> 3063d4401354Smrg <item name="SyncBoth"> <value>7</value></item> 3064986c8b3dSmrg <doc> 3065986c8b3dSmrg <field name="AsyncPointer"><![CDATA[ 3066986c8b3dSmrgFor AsyncPointer, if the pointer is frozen by the client, pointer event 3067986c8b3dSmrgprocessing continues normally. If the pointer is frozen twice by the client on 3068986c8b3dSmrgbehalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no 3069986c8b3dSmrgeffect if the pointer is not frozen by the client, but the pointer need not be 3070986c8b3dSmrggrabbed by the client. 3071986c8b3dSmrg 3072986c8b3dSmrgTODO: rewrite this in more understandable terms. 3073986c8b3dSmrg ]]></field> 3074986c8b3dSmrg <field name="SyncPointer"><![CDATA[ 3075986c8b3dSmrgFor SyncPointer, if the pointer is frozen and actively grabbed by the client, 3076986c8b3dSmrgpointer event processing continues normally until the next ButtonPress or 3077986c8b3dSmrgButtonRelease event is reported to the client, at which time the pointer again 3078986c8b3dSmrgappears to freeze. However, if the reported event causes the pointer grab to be 3079986c8b3dSmrgreleased, then the pointer does not freeze. SyncPointer has no effect if the 3080986c8b3dSmrgpointer is not frozen by the client or if the pointer is not grabbed by the 3081986c8b3dSmrgclient. 3082986c8b3dSmrg ]]></field> 3083986c8b3dSmrg <field name="ReplayPointer"><![CDATA[ 3084986c8b3dSmrgFor ReplayPointer, if the pointer is actively grabbed by the client and is 3085986c8b3dSmrgfrozen as the result of an event having been sent to the client (either from 3086986c8b3dSmrgthe activation of a GrabButton or from a previous AllowEvents with mode 3087986c8b3dSmrgSyncPointer but not from a GrabPointer), then the pointer grab is released and 3088986c8b3dSmrgthat event is completely reprocessed, this time ignoring any passive grabs at 3089986c8b3dSmrgor above (towards the root) the grab-window of the grab just released. The 3090986c8b3dSmrgrequest has no effect if the pointer is not grabbed by the client or if the 3091986c8b3dSmrgpointer is not frozen as the result of an event. 3092986c8b3dSmrg ]]></field> 3093986c8b3dSmrg <field name="AsyncKeyboard"><![CDATA[ 3094986c8b3dSmrgFor AsyncKeyboard, if the keyboard is frozen by the client, keyboard event 3095986c8b3dSmrgprocessing continues normally. If the keyboard is frozen twice by the client on 3096986c8b3dSmrgbehalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has 3097986c8b3dSmrgno effect if the keyboard is not frozen by the client, but the keyboard need 3098986c8b3dSmrgnot be grabbed by the client. 3099986c8b3dSmrg ]]></field> 3100986c8b3dSmrg <field name="SyncKeyboard"><![CDATA[ 3101986c8b3dSmrgFor SyncKeyboard, if the keyboard is frozen and actively grabbed by the client, 3102986c8b3dSmrgkeyboard event processing continues normally until the next KeyPress or 3103986c8b3dSmrgKeyRelease event is reported to the client, at which time the keyboard again 3104986c8b3dSmrgappears to freeze. However, if the reported event causes the keyboard grab to 3105986c8b3dSmrgbe released, then the keyboard does not freeze. SyncKeyboard has no effect if 3106986c8b3dSmrgthe keyboard is not frozen by the client or if the keyboard is not grabbed by 3107986c8b3dSmrgthe client. 3108986c8b3dSmrg ]]></field> 3109986c8b3dSmrg <field name="ReplayKeyboard"><![CDATA[ 3110986c8b3dSmrgFor ReplayKeyboard, if the keyboard is actively grabbed by the client and is 3111986c8b3dSmrgfrozen as the result of an event having been sent to the client (either from 3112986c8b3dSmrgthe activation of a GrabKey or from a previous AllowEvents with mode 3113986c8b3dSmrgSyncKeyboard but not from a GrabKeyboard), then the keyboard grab is released 3114986c8b3dSmrgand that event is completely reprocessed, this time ignoring any passive grabs 3115986c8b3dSmrgat or above (towards the root) the grab-window of the grab just released. The 3116986c8b3dSmrgrequest has no effect if the keyboard is not grabbed by the client or if the 3117986c8b3dSmrgkeyboard is not frozen as the result of an event. 3118986c8b3dSmrg ]]></field> 3119986c8b3dSmrg <field name="SyncBoth"><![CDATA[ 3120986c8b3dSmrgFor SyncBoth, if both pointer and keyboard are frozen by the client, event 3121986c8b3dSmrgprocessing (for both devices) continues normally until the next ButtonPress, 3122986c8b3dSmrgButtonRelease, KeyPress, or KeyRelease event is reported to the client for a 3123986c8b3dSmrggrabbed device (button event for the pointer, key event for the keyboard), at 3124986c8b3dSmrgwhich time the devices again appear to freeze. However, if the reported event 3125986c8b3dSmrgcauses the grab to be released, then the devices do not freeze (but if the 3126986c8b3dSmrgother device is still grabbed, then a subsequent event for it will still cause 3127986c8b3dSmrgboth devices to freeze). SyncBoth has no effect unless both pointer and 3128986c8b3dSmrgkeyboard are frozen by the client. If the pointer or keyboard is frozen twice 3129986c8b3dSmrgby the client on behalf of two separate grabs, SyncBoth thaws for both (but a 3130986c8b3dSmrgsubsequent freeze for SyncBoth will only freeze each device once). 3131986c8b3dSmrg ]]></field> 3132986c8b3dSmrg <field name="AsyncBoth"><![CDATA[ 3133986c8b3dSmrgFor AsyncBoth, if the pointer and the keyboard are frozen by the client, event 3134986c8b3dSmrgprocessing for both devices continues normally. If a device is frozen twice by 3135986c8b3dSmrgthe client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth 3136986c8b3dSmrghas no effect unless both pointer and keyboard are frozen by the client. 3137986c8b3dSmrg ]]></field> 3138986c8b3dSmrg </doc> 3139d4401354Smrg </enum> 3140d4401354Smrg 3141d4401354Smrg <request name="AllowEvents" opcode="35"> 3142d4401354Smrg <field type="CARD8" name="mode" enum="Allow" /> 3143d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 3144986c8b3dSmrg <doc> 3145986c8b3dSmrg <brief>release queued events</brief> 3146986c8b3dSmrg <description><![CDATA[ 3147986c8b3dSmrgReleases queued events if the client has caused a device (pointer/keyboard) to 3148986c8b3dSmrgfreeze due to grabbing it actively. This request has no effect if `time` is 3149986c8b3dSmrgearlier than the last-grab time of the most recent active grab for this client 3150986c8b3dSmrgor if `time` is later than the current X server time. 3151986c8b3dSmrg ]]></description> 3152986c8b3dSmrg <!-- the enum doc is sufficient. --> 3153986c8b3dSmrg <field name="mode" /> 3154986c8b3dSmrg <field name="time"><![CDATA[ 3155986c8b3dSmrgTimestamp to avoid race conditions when running X over the network. 3156986c8b3dSmrg 3157986c8b3dSmrgThe special value `XCB_CURRENT_TIME` will be replaced with the current server 3158986c8b3dSmrgtime. 3159986c8b3dSmrg ]]></field> 3160986c8b3dSmrg <error type="Value"><![CDATA[ 3161986c8b3dSmrgYou specified an invalid `mode`. 3162986c8b3dSmrg ]]></error> 3163986c8b3dSmrg </doc> 3164d4401354Smrg </request> 3165d4401354Smrg 3166d4401354Smrg <request name="GrabServer" opcode="36" /> 3167d4401354Smrg 3168d4401354Smrg <request name="UngrabServer" opcode="37" /> 3169d4401354Smrg 3170d4401354Smrg <request name="QueryPointer" opcode="38"> 3171d4401354Smrg <pad bytes="1" /> 3172d4401354Smrg <field type="WINDOW" name="window" /> 3173d4401354Smrg <reply> 3174d4401354Smrg <field type="BOOL" name="same_screen" /> 3175d4401354Smrg <field type="WINDOW" name="root" /> 3176d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 3177d4401354Smrg <field type="INT16" name="root_x" /> 3178d4401354Smrg <field type="INT16" name="root_y" /> 3179d4401354Smrg <field type="INT16" name="win_x" /> 3180d4401354Smrg <field type="INT16" name="win_y" /> 3181d4401354Smrg <field type="CARD16" name="mask" mask="KeyButMask" /> 3182d4401354Smrg <pad bytes="2" /> 3183986c8b3dSmrg <doc> 3184986c8b3dSmrg <field name="same_screen"><![CDATA[ 3185986c8b3dSmrgIf `same_screen` is False, then the pointer is not on the same screen as the 3186986c8b3dSmrgargument window, `child` is None, and `win_x` and `win_y` are zero. If 3187986c8b3dSmrg`same_screen` is True, then `win_x` and `win_y` are the pointer coordinates 3188986c8b3dSmrgrelative to the argument window's origin, and child is the child containing the 3189986c8b3dSmrgpointer, if any. 3190986c8b3dSmrg ]]></field> 3191986c8b3dSmrg <field name="root"><![CDATA[ 3192986c8b3dSmrgThe root window the pointer is logically on. 3193986c8b3dSmrg ]]></field> 3194986c8b3dSmrg <field name="child"><![CDATA[ 3195986c8b3dSmrgThe child window containing the pointer, if any, if `same_screen` is true. If 3196986c8b3dSmrg`same_screen` is false, `XCB_NONE` is returned. 3197986c8b3dSmrg ]]></field> 3198986c8b3dSmrg <field name="root_x"><![CDATA[ 3199986c8b3dSmrgThe pointer X position, relative to `root`. 3200986c8b3dSmrg ]]></field> 3201986c8b3dSmrg <field name="root_y"><![CDATA[ 3202986c8b3dSmrgThe pointer Y position, relative to `root`. 3203986c8b3dSmrg ]]></field> 3204986c8b3dSmrg <field name="win_x"><![CDATA[ 3205986c8b3dSmrgThe pointer X coordinate, relative to `child`, if `same_screen` is true. Zero 3206986c8b3dSmrgotherwise. 3207986c8b3dSmrg ]]></field> 3208986c8b3dSmrg <field name="win_y"><![CDATA[ 3209986c8b3dSmrgThe pointer Y coordinate, relative to `child`, if `same_screen` is true. Zero 3210986c8b3dSmrgotherwise. 3211986c8b3dSmrg ]]></field> 3212986c8b3dSmrg <field name="mask"><![CDATA[ 3213986c8b3dSmrgThe current logical state of the modifier keys and the buttons. Note that the 3214986c8b3dSmrglogical state of a device (as seen by means of the protocol) may lag the 3215986c8b3dSmrgphysical state if device event processing is frozen. 3216986c8b3dSmrg ]]></field> 3217986c8b3dSmrg </doc> 3218d4401354Smrg </reply> 3219986c8b3dSmrg <doc> 3220986c8b3dSmrg <brief>get pointer coordinates</brief> 3221986c8b3dSmrg <description><![CDATA[ 3222986c8b3dSmrgGets the root window the pointer is logically on and the pointer coordinates 3223986c8b3dSmrgrelative to the root window's origin. 3224986c8b3dSmrg ]]></description> 3225986c8b3dSmrg <field name="window"><![CDATA[ 3226986c8b3dSmrgA window to check if the pointer is on the same screen as `window` (see the 3227986c8b3dSmrg`same_screen` field in the reply). 3228986c8b3dSmrg ]]></field> 3229986c8b3dSmrg <error type="Window"><![CDATA[ 3230986c8b3dSmrgThe specified `window` does not exist. 3231986c8b3dSmrg ]]></error> 3232986c8b3dSmrg </doc> 3233d4401354Smrg </request> 3234d4401354Smrg 3235d4401354Smrg <struct name="TIMECOORD"> 3236d4401354Smrg <field type="TIMESTAMP" name="time" /> 3237d4401354Smrg <field type="INT16" name="x" /> 3238d4401354Smrg <field type="INT16" name="y" /> 3239d4401354Smrg </struct> 3240d4401354Smrg 3241d4401354Smrg <request name="GetMotionEvents" opcode="39"> 3242d4401354Smrg <pad bytes="1" /> 3243d4401354Smrg <field type="WINDOW" name="window" /> 3244d4401354Smrg <field type="TIMESTAMP" name="start" altenum="Time" /> 3245d4401354Smrg <field type="TIMESTAMP" name="stop" altenum="Time" /> 3246d4401354Smrg <reply> 3247d4401354Smrg <pad bytes="1" /> 3248d4401354Smrg <field type="CARD32" name="events_len" /> 3249d4401354Smrg <pad bytes="20" /> 3250d4401354Smrg <list type="TIMECOORD" name="events"> 3251d4401354Smrg <fieldref>events_len</fieldref> 3252d4401354Smrg </list> 3253d4401354Smrg </reply> 3254d4401354Smrg </request> 3255d4401354Smrg 3256d4401354Smrg <request name="TranslateCoordinates" opcode="40"> 3257d4401354Smrg <pad bytes="1" /> 3258d4401354Smrg <field type="WINDOW" name="src_window" /> 3259d4401354Smrg <field type="WINDOW" name="dst_window" /> 3260d4401354Smrg <field type="INT16" name="src_x" /> 3261d4401354Smrg <field type="INT16" name="src_y" /> 3262d4401354Smrg <reply> 3263d4401354Smrg <field type="BOOL" name="same_screen" /> 3264d4401354Smrg <field type="WINDOW" name="child" altenum="Window" /> 3265986c8b3dSmrg <field type="INT16" name="dst_x" /> 3266986c8b3dSmrg <field type="INT16" name="dst_y" /> 3267d4401354Smrg </reply> 3268d4401354Smrg </request> 3269d4401354Smrg 3270d4401354Smrg <request name="WarpPointer" opcode="41"> 3271d4401354Smrg <pad bytes="1" /> 3272d4401354Smrg <field type="WINDOW" name="src_window" altenum="Window" /> 3273d4401354Smrg <field type="WINDOW" name="dst_window" altenum="Window" /> 3274d4401354Smrg <field type="INT16" name="src_x" /> 3275d4401354Smrg <field type="INT16" name="src_y" /> 3276d4401354Smrg <field type="CARD16" name="src_width" /> 3277d4401354Smrg <field type="CARD16" name="src_height" /> 3278d4401354Smrg <field type="INT16" name="dst_x" /> 3279d4401354Smrg <field type="INT16" name="dst_y" /> 3280986c8b3dSmrg <doc> 3281986c8b3dSmrg <brief>move mouse pointer</brief> 3282986c8b3dSmrg <description><![CDATA[ 3283986c8b3dSmrgMoves the mouse pointer to the specified position. 3284986c8b3dSmrg 3285986c8b3dSmrgIf `src_window` is not `XCB_NONE` (TODO), the move will only take place if the 3286986c8b3dSmrgpointer is inside `src_window` and within the rectangle specified by (`src_x`, 3287986c8b3dSmrg`src_y`, `src_width`, `src_height`). The rectangle coordinates are relative to 3288986c8b3dSmrg`src_window`. 3289986c8b3dSmrg 3290986c8b3dSmrgIf `dst_window` is not `XCB_NONE` (TODO), the pointer will be moved to the 3291986c8b3dSmrgoffsets (`dst_x`, `dst_y`) relative to `dst_window`. If `dst_window` is 3292986c8b3dSmrg`XCB_NONE` (TODO), the pointer will be moved by the offsets (`dst_x`, `dst_y`) 3293986c8b3dSmrgrelative to the current position of the pointer. 3294986c8b3dSmrg ]]></description> 3295986c8b3dSmrg <field name="src_window"><![CDATA[ 3296986c8b3dSmrgIf `src_window` is not `XCB_NONE` (TODO), the move will only take place if the 3297986c8b3dSmrgpointer is inside `src_window` and within the rectangle specified by (`src_x`, 3298986c8b3dSmrg`src_y`, `src_width`, `src_height`). The rectangle coordinates are relative to 3299986c8b3dSmrg`src_window`. 3300986c8b3dSmrg ]]></field> 3301986c8b3dSmrg <field name="dst_window"><![CDATA[ 3302986c8b3dSmrgIf `dst_window` is not `XCB_NONE` (TODO), the pointer will be moved to the 3303986c8b3dSmrgoffsets (`dst_x`, `dst_y`) relative to `dst_window`. If `dst_window` is 3304986c8b3dSmrg`XCB_NONE` (TODO), the pointer will be moved by the offsets (`dst_x`, `dst_y`) 3305986c8b3dSmrgrelative to the current position of the pointer. 3306986c8b3dSmrg ]]></field> 3307986c8b3dSmrg <error type="Window"><![CDATA[ 3308986c8b3dSmrgTODO: reasons? 3309986c8b3dSmrg ]]></error> 3310986c8b3dSmrg <see type="request" name="SetInputFocus" /> 3311986c8b3dSmrg </doc> 3312d4401354Smrg </request> 3313d4401354Smrg 3314d4401354Smrg <!-- used for revert_to and focus --> 3315d4401354Smrg <enum name="InputFocus"> 3316d4401354Smrg <item name="None"> <value>0</value></item> 3317d4401354Smrg <item name="PointerRoot"><value>1</value></item> 3318d4401354Smrg <item name="Parent"> <value>2</value></item> <!-- revert_to only --> 3319d4401354Smrg <item name="FollowKeyboard"><value>3</value></item> <!-- xinput extension only --> 3320986c8b3dSmrg <doc> 3321986c8b3dSmrg <field name="None"><![CDATA[ 3322986c8b3dSmrgThe focus reverts to `XCB_NONE`, so no window will have the input focus. 3323986c8b3dSmrg ]]></field> 3324986c8b3dSmrg <field name="PointerRoot"><![CDATA[ 3325986c8b3dSmrgThe focus reverts to `XCB_POINTER_ROOT` respectively. When the focus reverts, 3326986c8b3dSmrgFocusIn and FocusOut events are generated, but the last-focus-change time is 3327986c8b3dSmrgnot changed. 3328986c8b3dSmrg ]]></field> 3329986c8b3dSmrg <field name="Parent"><![CDATA[ 3330986c8b3dSmrgThe focus reverts to the parent (or closest viewable ancestor) and the new 3331986c8b3dSmrgrevert_to value is `XCB_INPUT_FOCUS_NONE`. 3332986c8b3dSmrg ]]></field> 3333986c8b3dSmrg <field name="FollowKeyboard"><![CDATA[ 3334986c8b3dSmrgNOT YET DOCUMENTED. Only relevant for the xinput extension. 3335986c8b3dSmrg ]]></field> 3336986c8b3dSmrg </doc> 3337d4401354Smrg </enum> 3338d4401354Smrg 3339d4401354Smrg <request name="SetInputFocus" opcode="42"> 3340d4401354Smrg <field type="CARD8" name="revert_to" enum="InputFocus" /> 3341d4401354Smrg <field type="WINDOW" name="focus" altenum="InputFocus" /> 3342d4401354Smrg <field type="TIMESTAMP" name="time" altenum="Time" /> 3343986c8b3dSmrg <doc> 3344986c8b3dSmrg <brief>Sets input focus</brief> 3345986c8b3dSmrg <description><![CDATA[ 3346986c8b3dSmrgChanges the input focus and the last-focus-change time. If the specified `time` 3347986c8b3dSmrgis earlier than the current last-focus-change time, the request is ignored (to 3348986c8b3dSmrgavoid race conditions when running X over the network). 3349986c8b3dSmrg 3350986c8b3dSmrgA FocusIn and FocusOut event is generated when focus is changed. 3351986c8b3dSmrg ]]></description> 3352986c8b3dSmrg <field name="focus"><![CDATA[ 3353986c8b3dSmrgThe window to focus. All keyboard events will be reported to this window. The 3354986c8b3dSmrgwindow must be viewable (TODO), or a `xcb_match_error_t` occurs (TODO). 3355986c8b3dSmrg 3356986c8b3dSmrgIf `focus` is `XCB_NONE` (TODO), all keyboard events are 3357986c8b3dSmrgdiscarded until a new focus window is set. 3358986c8b3dSmrg 3359986c8b3dSmrgIf `focus` is `XCB_POINTER_ROOT` (TODO), focus is on the root window of the 3360986c8b3dSmrgscreen on which the pointer is on currently. 3361986c8b3dSmrg ]]></field> 3362986c8b3dSmrg <field name="time"><![CDATA[ 3363986c8b3dSmrgTimestamp to avoid race conditions when running X over the network. 3364986c8b3dSmrg 3365986c8b3dSmrgThe special value `XCB_CURRENT_TIME` will be replaced with the current server 3366986c8b3dSmrgtime. 3367986c8b3dSmrg ]]></field> 3368986c8b3dSmrg <field name="revert_to"><![CDATA[ 3369986c8b3dSmrgSpecifies what happens when the `focus` window becomes unviewable (if `focus` 3370986c8b3dSmrgis neither `XCB_NONE` nor `XCB_POINTER_ROOT`). 3371986c8b3dSmrg ]]></field> 3372986c8b3dSmrg <error type="Window"><![CDATA[ 3373986c8b3dSmrgThe specified `focus` window does not exist. 3374986c8b3dSmrg ]]></error> 3375986c8b3dSmrg <error type="Match"><![CDATA[ 3376986c8b3dSmrgThe specified `focus` window is not viewable. 3377986c8b3dSmrg ]]></error> 3378986c8b3dSmrg <error type="Value"><![CDATA[ 3379986c8b3dSmrgTODO: Reasons? 3380986c8b3dSmrg ]]></error> 3381986c8b3dSmrg <see type="event" name="FocusIn" /> 3382986c8b3dSmrg <see type="event" name="FocusOut" /> 3383986c8b3dSmrg </doc> 3384986c8b3dSmrg 3385d4401354Smrg </request> 3386d4401354Smrg 3387d4401354Smrg <request name="GetInputFocus" opcode="43"> 3388d4401354Smrg <reply> 3389d4401354Smrg <field type="CARD8" name="revert_to" enum="InputFocus" /> 3390d4401354Smrg <field type="WINDOW" name="focus" altenum="InputFocus" /> 3391d4401354Smrg </reply> 3392d4401354Smrg </request> 3393d4401354Smrg 3394d4401354Smrg <request name="QueryKeymap" opcode="44"> 3395d4401354Smrg <reply> 3396d4401354Smrg <pad bytes="1" /> 3397d4401354Smrg <list type="CARD8" name="keys"><value>32</value></list> 3398d4401354Smrg </reply> 3399d4401354Smrg </request> 3400d4401354Smrg 3401d4401354Smrg <request name="OpenFont" opcode="45"> 3402d4401354Smrg <pad bytes="1" /> 3403d4401354Smrg <field type="FONT" name="fid" /> 3404d4401354Smrg <field type="CARD16" name="name_len" /> 3405d4401354Smrg <pad bytes="2" /> 3406d4401354Smrg <list type="char" name="name"> 3407d4401354Smrg <fieldref>name_len</fieldref> 3408d4401354Smrg </list> 3409986c8b3dSmrg <doc> 3410986c8b3dSmrg <brief>opens a font</brief> 3411986c8b3dSmrg <description><![CDATA[ 3412986c8b3dSmrgOpens any X core font matching the given `name` (for example "-misc-fixed-*"). 3413986c8b3dSmrg 3414986c8b3dSmrgNote that X core fonts are deprecated (but still supported) in favor of 3415986c8b3dSmrgclient-side rendering using Xft. 3416986c8b3dSmrg ]]></description> 3417986c8b3dSmrg <field name="fid"><![CDATA[ 3418986c8b3dSmrgThe ID with which you will refer to the font, created by `xcb_generate_id`. 3419986c8b3dSmrg ]]></field> 3420986c8b3dSmrg <field name="name_len"><![CDATA[ 3421986c8b3dSmrgLength (in bytes) of `name`. 3422986c8b3dSmrg ]]></field> 3423986c8b3dSmrg <field name="name"><![CDATA[ 3424986c8b3dSmrgA pattern describing an X core font. 3425986c8b3dSmrg ]]></field> 3426986c8b3dSmrg <error type="Name"><![CDATA[ 3427986c8b3dSmrgNo font matches the given `name`. 3428986c8b3dSmrg ]]></error> 3429986c8b3dSmrg <see type="function" name="xcb_generate_id" /> 3430986c8b3dSmrg </doc> 3431d4401354Smrg </request> 3432d4401354Smrg 3433d4401354Smrg <request name="CloseFont" opcode="46"> 3434d4401354Smrg <pad bytes="1" /> 3435d4401354Smrg <field type="FONT" name="font" /> 3436d4401354Smrg </request> 3437d4401354Smrg 3438d4401354Smrg <enum name="FontDraw"> 3439d4401354Smrg <item name="LeftToRight"><value>0</value></item> 3440d4401354Smrg <item name="RightToLeft"><value>1</value></item> 3441d4401354Smrg </enum> 3442d4401354Smrg 3443d4401354Smrg <struct name="FONTPROP"> 3444d4401354Smrg <field type="ATOM" name="name" /> 3445d4401354Smrg <field type="CARD32" name="value" /> 3446d4401354Smrg </struct> 3447d4401354Smrg 3448d4401354Smrg <struct name="CHARINFO"> 3449d4401354Smrg <field type="INT16" name="left_side_bearing" /> 3450d4401354Smrg <field type="INT16" name="right_side_bearing" /> 3451d4401354Smrg <field type="INT16" name="character_width" /> 3452d4401354Smrg <field type="INT16" name="ascent" /> 3453d4401354Smrg <field type="INT16" name="descent" /> 3454d4401354Smrg <field type="CARD16" name="attributes" /> 3455d4401354Smrg </struct> 3456d4401354Smrg 3457d4401354Smrg <request name="QueryFont" opcode="47"> 3458d4401354Smrg <pad bytes="1" /> 3459d4401354Smrg <field type="FONTABLE" name="font" /> 3460d4401354Smrg <reply> 3461d4401354Smrg <pad bytes="1" /> 3462d4401354Smrg <field type="CHARINFO" name="min_bounds" /> 3463d4401354Smrg <pad bytes="4" /> 3464d4401354Smrg <field type="CHARINFO" name="max_bounds" /> 3465d4401354Smrg <pad bytes="4" /> 3466d4401354Smrg <field type="CARD16" name="min_char_or_byte2" /> 3467d4401354Smrg <field type="CARD16" name="max_char_or_byte2" /> 3468d4401354Smrg <field type="CARD16" name="default_char" /> 3469d4401354Smrg <field type="CARD16" name="properties_len" /> 3470d4401354Smrg <field type="BYTE" name="draw_direction" enum="FontDraw" /> 3471d4401354Smrg <field type="CARD8" name="min_byte1" /> 3472d4401354Smrg <field type="CARD8" name="max_byte1" /> 3473d4401354Smrg <field type="BOOL" name="all_chars_exist" /> 3474d4401354Smrg <field type="INT16" name="font_ascent" /> 3475d4401354Smrg <field type="INT16" name="font_descent" /> 3476d4401354Smrg <field type="CARD32" name="char_infos_len" /> 3477d4401354Smrg <list type="FONTPROP" name="properties"> 3478d4401354Smrg <fieldref>properties_len</fieldref> 3479d4401354Smrg </list> 3480d4401354Smrg <list type="CHARINFO" name="char_infos"> 3481d4401354Smrg <fieldref>char_infos_len</fieldref> 3482d4401354Smrg </list> 3483986c8b3dSmrg <doc> 3484986c8b3dSmrg <field name="min_bounds"><![CDATA[ 3485986c8b3dSmrgminimum bounds over all existing char 3486986c8b3dSmrg ]]></field> 3487986c8b3dSmrg <field name="max_bounds"><![CDATA[ 3488986c8b3dSmrgmaximum bounds over all existing char 3489986c8b3dSmrg ]]></field> 3490986c8b3dSmrg <field name="min_char_or_byte2"><![CDATA[ 3491986c8b3dSmrgfirst character 3492986c8b3dSmrg ]]></field> 3493986c8b3dSmrg <field name="max_char_or_byte2"><![CDATA[ 3494986c8b3dSmrglast character 3495986c8b3dSmrg ]]></field> 3496986c8b3dSmrg <field name="default_char"><![CDATA[ 3497986c8b3dSmrgchar to print for undefined character 3498986c8b3dSmrg ]]></field> 3499986c8b3dSmrg <field name="properties_len"><![CDATA[ 3500986c8b3dSmrghow many properties there are 3501986c8b3dSmrg ]]></field> 3502986c8b3dSmrg <field name="all_chars_exist"><![CDATA[ 3503986c8b3dSmrgflag if all characters have nonzero size 3504986c8b3dSmrg ]]></field> 3505986c8b3dSmrg <field name="font_ascent"><![CDATA[ 3506986c8b3dSmrgbaseline to top edge of raster 3507986c8b3dSmrg ]]></field> 3508986c8b3dSmrg <field name="font_descent"><![CDATA[ 3509986c8b3dSmrgbaseline to bottom edge of raster 3510986c8b3dSmrg ]]></field> 3511986c8b3dSmrg <!-- enum doc is sufficient --> 3512986c8b3dSmrg <field name="draw_direction" /> 3513986c8b3dSmrg </doc> 3514d4401354Smrg </reply> 3515986c8b3dSmrg <doc> 3516986c8b3dSmrg <brief>query font metrics</brief> 3517986c8b3dSmrg <description><![CDATA[ 3518986c8b3dSmrgQueries information associated with the font. 3519986c8b3dSmrg ]]></description> 3520986c8b3dSmrg <field name="font"><![CDATA[ 3521986c8b3dSmrgThe fontable (Font or Graphics Context) to query. 3522986c8b3dSmrg ]]></field> 3523986c8b3dSmrg <!-- TODO: example --> 3524986c8b3dSmrg </doc> 3525d4401354Smrg </request> 3526d4401354Smrg 3527d4401354Smrg <request name="QueryTextExtents" opcode="48"> 3528d4401354Smrg <exprfield type="BOOL" name="odd_length"> 3529d4401354Smrg <op op="&"><fieldref>string_len</fieldref><value>1</value></op> 3530d4401354Smrg </exprfield> 3531d4401354Smrg <field type="FONTABLE" name="font" /> 3532d4401354Smrg <list type="CHAR2B" name="string" /> 3533d4401354Smrg <reply> 3534d4401354Smrg <field type="BYTE" name="draw_direction" enum="FontDraw" /> 3535d4401354Smrg <field type="INT16" name="font_ascent" /> 3536d4401354Smrg <field type="INT16" name="font_descent" /> 3537d4401354Smrg <field type="INT16" name="overall_ascent" /> 3538d4401354Smrg <field type="INT16" name="overall_descent" /> 3539d4401354Smrg <field type="INT32" name="overall_width" /> 3540d4401354Smrg <field type="INT32" name="overall_left" /> 3541d4401354Smrg <field type="INT32" name="overall_right" /> 3542d4401354Smrg </reply> 3543986c8b3dSmrg <doc> 3544986c8b3dSmrg <brief>get text extents</brief> 3545986c8b3dSmrg <description><![CDATA[ 3546986c8b3dSmrgQuery text extents from the X11 server. This request returns the bounding box 3547986c8b3dSmrgof the specified 16-bit character string in the specified `font` or the font 3548986c8b3dSmrgcontained in the specified graphics context. 3549986c8b3dSmrg 3550986c8b3dSmrg`font_ascent` is set to the maximum of the ascent metrics of all characters in 3551986c8b3dSmrgthe string. `font_descent` is set to the maximum of the descent metrics. 3552986c8b3dSmrg`overall_width` is set to the sum of the character-width metrics of all 3553986c8b3dSmrgcharacters in the string. For each character in the string, let W be the sum of 3554986c8b3dSmrgthe character-width metrics of all characters preceding it in the string. Let L 3555986c8b3dSmrgbe the left-side-bearing metric of the character plus W. Let R be the 3556986c8b3dSmrgright-side-bearing metric of the character plus W. The lbearing member is set 3557986c8b3dSmrgto the minimum L of all characters in the string. The rbearing member is set to 3558986c8b3dSmrgthe maximum R. 3559986c8b3dSmrg 3560986c8b3dSmrgFor fonts defined with linear indexing rather than 2-byte matrix indexing, each 3561986c8b3dSmrg`xcb_char2b_t` structure is interpreted as a 16-bit number with byte1 as the 3562986c8b3dSmrgmost significant byte. If the font has no defined default character, undefined 3563986c8b3dSmrgcharacters in the string are taken to have all zero metrics. 3564986c8b3dSmrg 3565986c8b3dSmrgCharacters with all zero metrics are ignored. If the font has no defined 3566986c8b3dSmrgdefault_char, the undefined characters in the string are also ignored. 3567986c8b3dSmrg ]]></description> 3568986c8b3dSmrg <field name="font"><![CDATA[ 3569986c8b3dSmrgThe `font` to calculate text extents in. You can also pass a graphics context. 3570986c8b3dSmrg ]]></field> 3571986c8b3dSmrg <field name="string_len"><![CDATA[ 3572986c8b3dSmrgThe number of characters in `string`. 3573986c8b3dSmrg ]]></field> 3574986c8b3dSmrg <field name="string"><![CDATA[ 3575986c8b3dSmrgThe text to get text extents for. 3576986c8b3dSmrg ]]></field> 3577f591e195Smrg <error type="GContext"><![CDATA[ 3578986c8b3dSmrgThe specified graphics context does not exist. 3579986c8b3dSmrg ]]></error> 3580986c8b3dSmrg <error type="Font"><![CDATA[ 3581986c8b3dSmrgThe specified `font` does not exist. 3582986c8b3dSmrg ]]></error> 3583986c8b3dSmrg </doc> 3584d4401354Smrg </request> 3585d4401354Smrg 3586d4401354Smrg <struct name="STR"> 3587d4401354Smrg <field type="CARD8" name="name_len" /> 3588d4401354Smrg <list type="char" name="name"> 3589d4401354Smrg <fieldref>name_len</fieldref> 3590d4401354Smrg </list> 3591d4401354Smrg </struct> 3592d4401354Smrg 3593d4401354Smrg <request name="ListFonts" opcode="49"> 3594d4401354Smrg <pad bytes="1" /> 3595d4401354Smrg <field type="CARD16" name="max_names" /> 3596d4401354Smrg <field type="CARD16" name="pattern_len" /> 3597d4401354Smrg <list type="char" name="pattern"> 3598d4401354Smrg <fieldref>pattern_len</fieldref> 3599d4401354Smrg </list> 3600d4401354Smrg <reply> 3601d4401354Smrg <pad bytes="1" /> 3602d4401354Smrg <field type="CARD16" name="names_len" /> 3603d4401354Smrg <pad bytes="22" /> 3604d4401354Smrg <list type="STR" name="names"> 3605d4401354Smrg <fieldref>names_len</fieldref> 3606d4401354Smrg </list> 3607986c8b3dSmrg <doc> 3608986c8b3dSmrg <field name="names_len"><![CDATA[ 3609986c8b3dSmrgThe number of font names. 3610986c8b3dSmrg ]]></field> 3611986c8b3dSmrg </doc> 3612d4401354Smrg </reply> 3613986c8b3dSmrg <doc> 3614986c8b3dSmrg <brief>get matching font names</brief> 3615986c8b3dSmrg <description><![CDATA[ 3616986c8b3dSmrgGets a list of available font names which match the given `pattern`. 3617986c8b3dSmrg ]]></description> 3618986c8b3dSmrg <field name="pattern_len"><![CDATA[ 3619986c8b3dSmrgThe length (in bytes) of `pattern`. 3620986c8b3dSmrg ]]></field> 3621986c8b3dSmrg <field name="pattern"><![CDATA[ 3622986c8b3dSmrgA font pattern, for example "-misc-fixed-*". 3623986c8b3dSmrg 3624986c8b3dSmrgThe asterisk (*) is a wildcard for any number of characters. The question mark 3625986c8b3dSmrg(?) is a wildcard for a single character. Use of uppercase or lowercase does 3626986c8b3dSmrgnot matter. 3627986c8b3dSmrg ]]></field> 3628986c8b3dSmrg <field name="max_names"><![CDATA[ 3629986c8b3dSmrgThe maximum number of fonts to be returned. 3630986c8b3dSmrg ]]></field> 3631986c8b3dSmrg </doc> 3632d4401354Smrg </request> 3633d4401354Smrg 3634d4401354Smrg <request name="ListFontsWithInfo" opcode="50"> 3635d4401354Smrg <pad bytes="1" /> 3636d4401354Smrg <field type="CARD16" name="max_names" /> 3637d4401354Smrg <field type="CARD16" name="pattern_len" /> 3638d4401354Smrg <list type="char" name="pattern"> 3639d4401354Smrg <fieldref>pattern_len</fieldref> 3640d4401354Smrg </list> 3641d4401354Smrg <reply> 3642d4401354Smrg <field type="CARD8" name="name_len" /> 3643d4401354Smrg <field type="CHARINFO" name="min_bounds" /> 3644d4401354Smrg <pad bytes="4" /> 3645d4401354Smrg <field type="CHARINFO" name="max_bounds" /> 3646d4401354Smrg <pad bytes="4" /> 3647d4401354Smrg <field type="CARD16" name="min_char_or_byte2" /> 3648d4401354Smrg <field type="CARD16" name="max_char_or_byte2" /> 3649d4401354Smrg <field type="CARD16" name="default_char" /> 3650d4401354Smrg <field type="CARD16" name="properties_len" /> 3651d4401354Smrg <field type="BYTE" name="draw_direction" enum="FontDraw" /> 3652d4401354Smrg <field type="CARD8" name="min_byte1" /> 3653d4401354Smrg <field type="CARD8" name="max_byte1" /> 3654d4401354Smrg <field type="BOOL" name="all_chars_exist" /> 3655d4401354Smrg <field type="INT16" name="font_ascent" /> 3656d4401354Smrg <field type="INT16" name="font_descent" /> 3657d4401354Smrg <field type="CARD32" name="replies_hint" /> 3658d4401354Smrg <list type="FONTPROP" name="properties"> 3659d4401354Smrg <fieldref>properties_len</fieldref> 3660d4401354Smrg </list> 3661d4401354Smrg <list type="char" name="name"> 3662d4401354Smrg <fieldref>name_len</fieldref> 3663d4401354Smrg </list> 3664986c8b3dSmrg <doc> 3665986c8b3dSmrg <field name="name_len"><![CDATA[ 3666986c8b3dSmrgThe number of matched font names. 3667986c8b3dSmrg ]]></field> 3668986c8b3dSmrg <field name="min_bounds"><![CDATA[ 3669986c8b3dSmrgminimum bounds over all existing char 3670986c8b3dSmrg ]]></field> 3671986c8b3dSmrg <field name="max_bounds"><![CDATA[ 3672986c8b3dSmrgmaximum bounds over all existing char 3673986c8b3dSmrg ]]></field> 3674986c8b3dSmrg <field name="min_char_or_byte2"><![CDATA[ 3675986c8b3dSmrgfirst character 3676986c8b3dSmrg ]]></field> 3677986c8b3dSmrg <field name="max_char_or_byte2"><![CDATA[ 3678986c8b3dSmrglast character 3679986c8b3dSmrg ]]></field> 3680986c8b3dSmrg <field name="default_char"><![CDATA[ 3681986c8b3dSmrgchar to print for undefined character 3682986c8b3dSmrg ]]></field> 3683986c8b3dSmrg <field name="properties_len"><![CDATA[ 3684986c8b3dSmrghow many properties there are 3685986c8b3dSmrg ]]></field> 3686986c8b3dSmrg <field name="all_chars_exist"><![CDATA[ 3687986c8b3dSmrgflag if all characters have nonzero size 3688986c8b3dSmrg ]]></field> 3689986c8b3dSmrg <field name="font_ascent"><![CDATA[ 3690986c8b3dSmrgbaseline to top edge of raster 3691986c8b3dSmrg ]]></field> 3692986c8b3dSmrg <field name="font_descent"><![CDATA[ 3693986c8b3dSmrgbaseline to bottom edge of raster 3694986c8b3dSmrg ]]></field> 3695986c8b3dSmrg <field name="replies_hint"><![CDATA[ 3696986c8b3dSmrgAn indication of how many more fonts will be returned. This is only a hint and 3697986c8b3dSmrgmay be larger or smaller than the number of fonts actually returned. A zero 3698986c8b3dSmrgvalue does not guarantee that no more fonts will be returned. 3699986c8b3dSmrg ]]></field> 3700986c8b3dSmrg <!-- enum doc is sufficient --> 3701986c8b3dSmrg <field name="draw_direction" /> 3702986c8b3dSmrg </doc> 3703d4401354Smrg </reply> 3704986c8b3dSmrg <doc> 3705986c8b3dSmrg <brief>get matching font names and information</brief> 3706986c8b3dSmrg <description><![CDATA[ 3707986c8b3dSmrgGets a list of available font names which match the given `pattern`. 3708986c8b3dSmrg ]]></description> 3709986c8b3dSmrg <field name="pattern_len"><![CDATA[ 3710986c8b3dSmrgThe length (in bytes) of `pattern`. 3711986c8b3dSmrg ]]></field> 3712986c8b3dSmrg <field name="pattern"><![CDATA[ 3713986c8b3dSmrgA font pattern, for example "-misc-fixed-*". 3714986c8b3dSmrg 3715986c8b3dSmrgThe asterisk (*) is a wildcard for any number of characters. The question mark 3716986c8b3dSmrg(?) is a wildcard for a single character. Use of uppercase or lowercase does 3717986c8b3dSmrgnot matter. 3718986c8b3dSmrg ]]></field> 3719986c8b3dSmrg <field name="max_names"><![CDATA[ 3720986c8b3dSmrgThe maximum number of fonts to be returned. 3721986c8b3dSmrg ]]></field> 3722986c8b3dSmrg </doc> 3723986c8b3dSmrg 3724d4401354Smrg </request> 3725d4401354Smrg 3726d4401354Smrg <request name="SetFontPath" opcode="51"> 3727d4401354Smrg <pad bytes="1" /> 3728d4401354Smrg <field type="CARD16" name="font_qty" /> 3729986c8b3dSmrg <pad bytes="2" /> 3730986c8b3dSmrg <list type="STR" name="font"> 3731986c8b3dSmrg <fieldref>font_qty</fieldref> 3732986c8b3dSmrg </list> 3733d4401354Smrg </request> 3734d4401354Smrg 3735d4401354Smrg <request name="GetFontPath" opcode="52"> 3736d4401354Smrg <reply> 3737d4401354Smrg <pad bytes="1" /> 3738d4401354Smrg <field type="CARD16" name="path_len" /> 3739d4401354Smrg <pad bytes="22" /> 3740d4401354Smrg <list type="STR" name="path"> 3741d4401354Smrg <fieldref>path_len</fieldref> 3742d4401354Smrg </list> 3743d4401354Smrg </reply> 3744d4401354Smrg </request> 3745d4401354Smrg 3746d4401354Smrg <request name="CreatePixmap" opcode="53"> 3747d4401354Smrg <field type="CARD8" name="depth" /> 3748d4401354Smrg <field type="PIXMAP" name="pid" /> 3749d4401354Smrg <field type="DRAWABLE" name="drawable" /> 3750d4401354Smrg <field type="CARD16" name="width" /> 3751d4401354Smrg <field type="CARD16" name="height" /> 3752986c8b3dSmrg <doc> 3753986c8b3dSmrg <brief>Creates a pixmap</brief> 3754986c8b3dSmrg <description><![CDATA[ 3755986c8b3dSmrgCreates a pixmap. The pixmap can only be used on the same screen as `drawable` 3756986c8b3dSmrgis on and only with drawables of the same `depth`. 3757986c8b3dSmrg ]]></description> 3758986c8b3dSmrg <field name="depth"><![CDATA[ 3759986c8b3dSmrgTODO 3760986c8b3dSmrg ]]></field> 3761986c8b3dSmrg <field name="pid"><![CDATA[ 3762986c8b3dSmrgThe ID with which you will refer to the new pixmap, created by 3763986c8b3dSmrg`xcb_generate_id`. 3764986c8b3dSmrg ]]></field> 3765986c8b3dSmrg <field name="drawable"><![CDATA[ 3766986c8b3dSmrgDrawable to get the screen from. 3767986c8b3dSmrg ]]></field> 3768986c8b3dSmrg <field name="width"><![CDATA[ 3769986c8b3dSmrgThe width of the new pixmap. 3770986c8b3dSmrg ]]></field> 3771986c8b3dSmrg <field name="height"><![CDATA[ 3772986c8b3dSmrgThe height of the new pixmap. 3773986c8b3dSmrg ]]></field> 3774986c8b3dSmrg <error type="Value"><![CDATA[ 3775986c8b3dSmrgTODO: reasons? 3776986c8b3dSmrg ]]></error> 3777986c8b3dSmrg <error type="Drawable"><![CDATA[ 3778986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 3779986c8b3dSmrg ]]></error> 3780986c8b3dSmrg <error type="Alloc"><![CDATA[ 3781986c8b3dSmrgThe X server could not allocate the requested resources (no memory?). 3782986c8b3dSmrg ]]></error> 3783986c8b3dSmrg <see type="function" name="xcb_generate_id" /> 3784986c8b3dSmrg </doc> 3785d4401354Smrg </request> 3786d4401354Smrg 3787d4401354Smrg <request name="FreePixmap" opcode="54"> 3788d4401354Smrg <pad bytes="1" /> 3789d4401354Smrg <field type="PIXMAP" name="pixmap" /> 3790986c8b3dSmrg <doc> 3791986c8b3dSmrg <brief>Destroys a pixmap</brief> 3792986c8b3dSmrg <description><![CDATA[ 3793986c8b3dSmrgDeletes the association between the pixmap ID and the pixmap. The pixmap 3794986c8b3dSmrgstorage will be freed when there are no more references to it. 3795986c8b3dSmrg ]]></description> 3796986c8b3dSmrg <field name="pixmap"><![CDATA[The pixmap to destroy.]]></field> 3797986c8b3dSmrg <error type="Pixmap"><![CDATA[ 3798986c8b3dSmrgThe specified pixmap does not exist. 3799986c8b3dSmrg ]]></error> 3800986c8b3dSmrg </doc> 3801d4401354Smrg </request> 3802d4401354Smrg 3803d4401354Smrg <enum name="GC"> 3804d4401354Smrg <item name="Function"> <bit>0</bit></item> 3805d4401354Smrg <item name="PlaneMask"> <bit>1</bit></item> 3806d4401354Smrg <item name="Foreground"> <bit>2</bit></item> 3807d4401354Smrg <item name="Background"> <bit>3</bit></item> 3808d4401354Smrg <item name="LineWidth"> <bit>4</bit></item> 3809d4401354Smrg <item name="LineStyle"> <bit>5</bit></item> 3810d4401354Smrg <item name="CapStyle"> <bit>6</bit></item> 3811d4401354Smrg <item name="JoinStyle"> <bit>7</bit></item> 3812d4401354Smrg <item name="FillStyle"> <bit>8</bit></item> 3813d4401354Smrg <item name="FillRule"> <bit>9</bit></item> 3814d4401354Smrg <item name="Tile"> <bit>10</bit></item> 3815d4401354Smrg <item name="Stipple"> <bit>11</bit></item> 3816d4401354Smrg <item name="TileStippleOriginX"><bit>12</bit></item> 3817d4401354Smrg <item name="TileStippleOriginY"><bit>13</bit></item> 3818d4401354Smrg <item name="Font"> <bit>14</bit></item> 3819d4401354Smrg <item name="SubwindowMode"> <bit>15</bit></item> 3820d4401354Smrg <item name="GraphicsExposures"> <bit>16</bit></item> 3821d4401354Smrg <item name="ClipOriginX"> <bit>17</bit></item> 3822d4401354Smrg <item name="ClipOriginY"> <bit>18</bit></item> 3823d4401354Smrg <item name="ClipMask"> <bit>19</bit></item> 3824d4401354Smrg <item name="DashOffset"> <bit>20</bit></item> 3825d4401354Smrg <item name="DashList"> <bit>21</bit></item> 3826d4401354Smrg <item name="ArcMode"> <bit>22</bit></item> 3827986c8b3dSmrg <doc> 3828986c8b3dSmrg <field name="Function"><![CDATA[ 3829986c8b3dSmrgTODO: Refer to GX 3830986c8b3dSmrg ]]></field> 3831986c8b3dSmrg <field name="PlaneMask"><![CDATA[ 3832986c8b3dSmrgIn graphics operations, given a source and destination pixel, the result is 3833986c8b3dSmrgcomputed bitwise on corresponding bits of the pixels; that is, a Boolean 3834986c8b3dSmrgoperation is performed in each bit plane. The plane-mask restricts the 3835986c8b3dSmrgoperation to a subset of planes, so the result is: 3836986c8b3dSmrg 3837986c8b3dSmrg ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask)) 3838986c8b3dSmrg ]]></field> 3839986c8b3dSmrg <field name="Foreground"><![CDATA[ 3840986c8b3dSmrgForeground colorpixel. 3841986c8b3dSmrg ]]></field> 3842986c8b3dSmrg <field name="Background"><![CDATA[ 3843986c8b3dSmrgBackground colorpixel. 3844986c8b3dSmrg ]]></field> 3845986c8b3dSmrg <field name="LineWidth"><![CDATA[ 3846986c8b3dSmrgThe line-width is measured in pixels and can be greater than or equal to one, a wide line, or the 3847986c8b3dSmrgspecial value zero, a thin line. 3848986c8b3dSmrg ]]></field> 3849986c8b3dSmrg <field name="LineStyle"><![CDATA[ 3850986c8b3dSmrgThe line-style defines which sections of a line are drawn: 3851986c8b3dSmrgSolid The full path of the line is drawn. 3852986c8b3dSmrgDoubleDash The full path of the line is drawn, but the even dashes are filled differently 3853986c8b3dSmrg than the odd dashes (see fill-style), with Butt cap-style used where even and 3854986c8b3dSmrg odd dashes meet. 3855986c8b3dSmrgOnOffDash Only the even dashes are drawn, and cap-style applies to all internal ends of 3856986c8b3dSmrg the individual dashes (except NotLast is treated as Butt). 3857986c8b3dSmrg ]]></field> 3858986c8b3dSmrg <field name="CapStyle"><![CDATA[ 3859986c8b3dSmrgThe cap-style defines how the endpoints of a path are drawn: 3860986c8b3dSmrgNotLast The result is equivalent to Butt, except that for a line-width of zero the final 3861986c8b3dSmrg endpoint is not drawn. 3862986c8b3dSmrgButt The result is square at the endpoint (perpendicular to the slope of the line) 3863986c8b3dSmrg with no projection beyond. 3864986c8b3dSmrgRound The result is a circular arc with its diameter equal to the line-width, centered 3865986c8b3dSmrg on the endpoint; it is equivalent to Butt for line-width zero. 3866986c8b3dSmrgProjecting The result is square at the end, but the path continues beyond the endpoint for 3867986c8b3dSmrg a distance equal to half the line-width; it is equivalent to Butt for line-width 3868986c8b3dSmrg zero. 3869986c8b3dSmrg ]]></field> 3870986c8b3dSmrg <field name="JoinStyle"><![CDATA[ 3871986c8b3dSmrgThe join-style defines how corners are drawn for wide lines: 3872986c8b3dSmrgMiter The outer edges of the two lines extend to meet at an angle. However, if the 3873986c8b3dSmrg angle is less than 11 degrees, a Bevel join-style is used instead. 3874986c8b3dSmrgRound The result is a circular arc with a diameter equal to the line-width, centered 3875986c8b3dSmrg on the joinpoint. 3876986c8b3dSmrgBevel The result is Butt endpoint styles, and then the triangular notch is filled. 3877986c8b3dSmrg ]]></field> 3878986c8b3dSmrg <field name="FillStyle"><![CDATA[ 3879986c8b3dSmrgThe fill-style defines the contents of the source for line, text, and fill requests. For all text and fill 3880986c8b3dSmrgrequests (for example, PolyText8, PolyText16, PolyFillRectangle, FillPoly, and PolyFillArc) 3881986c8b3dSmrgas well as for line requests with line-style Solid, (for example, PolyLine, PolySegment, 3882986c8b3dSmrgPolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash 3883986c8b3dSmrgor DoubleDash: 3884986c8b3dSmrgSolid Foreground 3885986c8b3dSmrgTiled Tile 3886986c8b3dSmrgOpaqueStippled A tile with the same width and height as stipple but with background 3887986c8b3dSmrg everywhere stipple has a zero and with foreground everywhere stipple 3888986c8b3dSmrg has a one 3889986c8b3dSmrgStippled Foreground masked by stipple 3890986c8b3dSmrgFor the odd dashes for line requests with line-style DoubleDash: 3891986c8b3dSmrgSolid Background 3892986c8b3dSmrgTiled Same as for even dashes 3893986c8b3dSmrgOpaqueStippled Same as for even dashes 3894986c8b3dSmrgStippled Background masked by stipple 3895986c8b3dSmrg ]]></field> 3896986c8b3dSmrg <field name="FillRule"><![CDATA[ 3897986c8b3dSmrg ]]></field> 3898986c8b3dSmrg <field name="Tile"><![CDATA[ 3899986c8b3dSmrgThe tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all 3900986c8b3dSmrgdimensions. When that plane is superimposed on the drawable for use in a graphics operation, 3901986c8b3dSmrgthe upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable 3902986c8b3dSmrgspecified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the 3903986c8b3dSmrgorigin of whatever destination drawable is specified in a graphics request. 3904986c8b3dSmrgThe tile pixmap must have the same root and depth as the gcontext (or a Match error results). 3905986c8b3dSmrgThe stipple pixmap must have depth one and must have the same root as the gcontext (or a 3906986c8b3dSmrgMatch error results). For fill-style Stippled (but not fill-style 3907986c8b3dSmrgOpaqueStippled), the stipple pattern is tiled in a single plane and acts as an 3908986c8b3dSmrgadditional clip mask to be ANDed with the clip-mask. 3909986c8b3dSmrgAny size pixmap can be used for tiling or stippling, although some sizes may be faster to use than 3910986c8b3dSmrgothers. 3911986c8b3dSmrg ]]></field> 3912986c8b3dSmrg <field name="Stipple"><![CDATA[ 3913986c8b3dSmrgThe tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all 3914986c8b3dSmrgdimensions. When that plane is superimposed on the drawable for use in a graphics operation, 3915986c8b3dSmrgthe upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable 3916986c8b3dSmrgspecified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the 3917986c8b3dSmrgorigin of whatever destination drawable is specified in a graphics request. 3918986c8b3dSmrgThe tile pixmap must have the same root and depth as the gcontext (or a Match error results). 3919986c8b3dSmrgThe stipple pixmap must have depth one and must have the same root as the gcontext (or a 3920986c8b3dSmrgMatch error results). For fill-style Stippled (but not fill-style 3921986c8b3dSmrgOpaqueStippled), the stipple pattern is tiled in a single plane and acts as an 3922986c8b3dSmrgadditional clip mask to be ANDed with the clip-mask. 3923986c8b3dSmrgAny size pixmap can be used for tiling or stippling, although some sizes may be faster to use than 3924986c8b3dSmrgothers. 3925986c8b3dSmrg ]]></field> 3926986c8b3dSmrg <field name="TileStippleOriginX"><![CDATA[ 3927986c8b3dSmrgTODO 3928986c8b3dSmrg ]]></field> 3929986c8b3dSmrg <field name="TileStippleOriginY"><![CDATA[ 3930986c8b3dSmrgTODO 3931986c8b3dSmrg ]]></field> 3932986c8b3dSmrg <field name="Font"><![CDATA[ 3933986c8b3dSmrgWhich font to use for the `ImageText8` and `ImageText16` requests. 3934986c8b3dSmrg ]]></field> 3935986c8b3dSmrg <field name="SubwindowMode"><![CDATA[ 3936986c8b3dSmrgFor ClipByChildren, both source and destination windows are additionally 3937986c8b3dSmrgclipped by all viewable InputOutput children. For IncludeInferiors, neither 3938986c8b3dSmrgsource nor destination window is 3939986c8b3dSmrgclipped by inferiors. This will result in including subwindow contents in the source and drawing 3940986c8b3dSmrgthrough subwindow boundaries of the destination. The use of IncludeInferiors with a source or 3941986c8b3dSmrgdestination window of one depth with mapped inferiors of differing depth is not illegal, but the 3942986c8b3dSmrgsemantics is undefined by the core protocol. 3943986c8b3dSmrg ]]></field> 3944986c8b3dSmrg <field name="GraphicsExposures"><![CDATA[ 3945986c8b3dSmrgWhether ExposureEvents should be generated (1) or not (0). 3946986c8b3dSmrg 3947986c8b3dSmrgThe default is 1. 3948986c8b3dSmrg ]]></field> 3949986c8b3dSmrg <field name="ClipOriginX"><![CDATA[ 3950986c8b3dSmrgTODO 3951986c8b3dSmrg ]]></field> 3952986c8b3dSmrg <field name="ClipOriginY"><![CDATA[ 3953986c8b3dSmrgTODO 3954986c8b3dSmrg ]]></field> 3955986c8b3dSmrg <field name="ClipMask"><![CDATA[ 3956986c8b3dSmrgThe clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has 3957986c8b3dSmrgbits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where 3958986c8b3dSmrgthe clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip 3959986c8b3dSmrgsources. 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 3960986c8b3dSmrgdepth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None, 3961986c8b3dSmrgthen pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the 3962986c8b3dSmrgSetClipRectangles request. 3963986c8b3dSmrg ]]></field> 3964986c8b3dSmrg <field name="DashOffset"><![CDATA[ 3965986c8b3dSmrgTODO 3966986c8b3dSmrg ]]></field> 3967986c8b3dSmrg <field name="DashList"><![CDATA[ 3968986c8b3dSmrgTODO 3969986c8b3dSmrg ]]></field> 3970986c8b3dSmrg <field name="ArcMode"><![CDATA[ 3971986c8b3dSmrgTODO 3972986c8b3dSmrg ]]></field> 3973986c8b3dSmrg </doc> 3974986c8b3dSmrg 3975d4401354Smrg </enum> 3976d4401354Smrg 3977d4401354Smrg <!-- GC Function values --> 3978d4401354Smrg <enum name="GX"> 3979d4401354Smrg <item name="clear"> <value>0</value></item> 3980d4401354Smrg <item name="and"> <value>1</value></item> 3981d4401354Smrg <item name="andReverse"> <value>2</value></item> 3982d4401354Smrg <item name="copy"> <value>3</value></item> 3983d4401354Smrg <item name="andInverted"> <value>4</value></item> 3984d4401354Smrg <item name="noop"> <value>5</value></item> 3985d4401354Smrg <item name="xor"> <value>6</value></item> 3986d4401354Smrg <item name="or"> <value>7</value></item> 3987d4401354Smrg <item name="nor"> <value>8</value></item> 3988d4401354Smrg <item name="equiv"> <value>9</value></item> 3989d4401354Smrg <item name="invert"> <value>10</value></item> 3990d4401354Smrg <item name="orReverse"> <value>11</value></item> 3991d4401354Smrg <item name="copyInverted"><value>12</value></item> 3992d4401354Smrg <item name="orInverted"> <value>13</value></item> 3993d4401354Smrg <item name="nand"> <value>14</value></item> 3994d4401354Smrg <item name="set"> <value>15</value></item> 3995d4401354Smrg </enum> 3996d4401354Smrg 3997d4401354Smrg <enum name="LineStyle"> 3998d4401354Smrg <item name="Solid"> <value>0</value></item> 3999d4401354Smrg <item name="OnOffDash"> <value>1</value></item> 4000d4401354Smrg <item name="DoubleDash"><value>2</value></item> 4001d4401354Smrg </enum> 4002d4401354Smrg 4003d4401354Smrg <enum name="CapStyle"> 4004d4401354Smrg <item name="NotLast"> <value>0</value></item> 4005d4401354Smrg <item name="Butt"> <value>1</value></item> 4006d4401354Smrg <item name="Round"> <value>2</value></item> 4007d4401354Smrg <item name="Projecting"><value>3</value></item> 4008d4401354Smrg </enum> 4009d4401354Smrg 4010d4401354Smrg <enum name="JoinStyle"> 4011d4401354Smrg <item name="Miter"> <value>0</value></item> 4012d4401354Smrg <item name="Round"> <value>1</value></item> 4013d4401354Smrg <item name="Bevel"> <value>2</value></item> 4014d4401354Smrg </enum> 4015d4401354Smrg 4016d4401354Smrg <enum name="FillStyle"> 4017d4401354Smrg <item name="Solid"> <value>0</value></item> 4018d4401354Smrg <item name="Tiled"> <value>1</value></item> 4019d4401354Smrg <item name="Stippled"> <value>2</value></item> 4020d4401354Smrg <item name="OpaqueStippled"><value>3</value></item> 4021d4401354Smrg </enum> 4022d4401354Smrg 4023d4401354Smrg <enum name="FillRule"> 4024d4401354Smrg <item name="EvenOdd"><value>0</value></item> 4025d4401354Smrg <item name="Winding"><value>1</value></item> 4026d4401354Smrg </enum> 4027d4401354Smrg 4028d4401354Smrg <enum name="SubwindowMode"> 4029d4401354Smrg <item name="ClipByChildren"> <value>0</value></item> 4030d4401354Smrg <item name="IncludeInferiors"><value>1</value></item> 4031d4401354Smrg </enum> 4032d4401354Smrg 4033d4401354Smrg <enum name="ArcMode"> 4034d4401354Smrg <item name="Chord"> <value>0</value></item> 4035d4401354Smrg <item name="PieSlice"><value>1</value></item> 4036d4401354Smrg </enum> 4037d4401354Smrg 4038d4401354Smrg <request name="CreateGC" opcode="55"> 4039d4401354Smrg <pad bytes="1" /> 4040d4401354Smrg <field type="GCONTEXT" name="cid" /> 4041d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4042891601f5Smrg <field type="CARD32" name="value_mask" mask="GC" /> 4043891601f5Smrg <switch name="value_list"> 4044891601f5Smrg <fieldref>value_mask</fieldref> 4045891601f5Smrg <bitcase> 4046891601f5Smrg <enumref ref="GC">Function</enumref> 4047891601f5Smrg <field type="CARD32" name="function" enum="GX"/> 4048891601f5Smrg </bitcase> 4049891601f5Smrg <bitcase> 4050891601f5Smrg <enumref ref="GC">PlaneMask</enumref> 4051891601f5Smrg <field type="CARD32" name="plane_mask" /> 4052891601f5Smrg </bitcase> 4053891601f5Smrg <bitcase> 4054891601f5Smrg <enumref ref="GC">Foreground</enumref> 4055891601f5Smrg <field type="CARD32" name="foreground" /> 4056891601f5Smrg </bitcase> 4057891601f5Smrg <bitcase> 4058891601f5Smrg <enumref ref="GC">Background</enumref> 4059891601f5Smrg <field type="CARD32" name="background" /> 4060891601f5Smrg </bitcase> 4061891601f5Smrg <bitcase> 4062891601f5Smrg <enumref ref="GC">LineWidth</enumref> 4063891601f5Smrg <field type="CARD32" name="line_width" /> 4064891601f5Smrg </bitcase> 4065891601f5Smrg <bitcase> 4066891601f5Smrg <enumref ref="GC">LineStyle</enumref> 4067891601f5Smrg <field type="CARD32" name="line_style" enum="LineStyle"/> 4068891601f5Smrg </bitcase> 4069891601f5Smrg <bitcase> 4070891601f5Smrg <enumref ref="GC">CapStyle</enumref> 4071891601f5Smrg <field type="CARD32" name="cap_style" enum="CapStyle"/> 4072891601f5Smrg </bitcase> 4073891601f5Smrg <bitcase> 4074891601f5Smrg <enumref ref="GC">JoinStyle</enumref> 4075891601f5Smrg <field type="CARD32" name="join_style" enum="JoinStyle"/> 4076891601f5Smrg </bitcase> 4077891601f5Smrg <bitcase> 4078891601f5Smrg <enumref ref="GC">FillStyle</enumref> 4079891601f5Smrg <field type="CARD32" name="fill_style" enum="FillStyle"/> 4080891601f5Smrg </bitcase> 4081891601f5Smrg <bitcase> 4082891601f5Smrg <enumref ref="GC">FillRule</enumref> 4083891601f5Smrg <field type="CARD32" name="fill_rule" enum="FillRule"/> 4084891601f5Smrg </bitcase> 4085891601f5Smrg <bitcase> 4086891601f5Smrg <enumref ref="GC">Tile</enumref> 4087891601f5Smrg <field type="PIXMAP" name="tile" altenum="Pixmap"/> 4088891601f5Smrg </bitcase> 4089891601f5Smrg <bitcase> 4090891601f5Smrg <enumref ref="GC">Stipple</enumref> 4091891601f5Smrg <field type="PIXMAP" name="stipple" altenum="Pixmap"/> 4092891601f5Smrg </bitcase> 4093891601f5Smrg <bitcase> 4094891601f5Smrg <enumref ref="GC">TileStippleOriginX</enumref> 4095891601f5Smrg <field type="INT32" name="tile_stipple_x_origin" /> 4096891601f5Smrg </bitcase> 4097891601f5Smrg <bitcase> 4098891601f5Smrg <enumref ref="GC">TileStippleOriginY</enumref> 4099891601f5Smrg <field type="INT32" name="tile_stipple_y_origin" /> 4100891601f5Smrg </bitcase> 4101891601f5Smrg <bitcase> 4102891601f5Smrg <enumref ref="GC">Font</enumref> 4103891601f5Smrg <field type="FONT" name="font" altenum="Font"/> 4104891601f5Smrg </bitcase> 4105891601f5Smrg <bitcase> 4106891601f5Smrg <enumref ref="GC">SubwindowMode</enumref> 4107891601f5Smrg <field type="CARD32" name="subwindow_mode" enum="SubwindowMode"/> 4108891601f5Smrg </bitcase> 4109891601f5Smrg <bitcase> 4110891601f5Smrg <enumref ref="GC">GraphicsExposures</enumref> 4111891601f5Smrg <field type="BOOL32" name="graphics_exposures" /> 4112891601f5Smrg </bitcase> 4113891601f5Smrg <bitcase> 4114891601f5Smrg <enumref ref="GC">ClipOriginX</enumref> 4115891601f5Smrg <field type="INT32" name="clip_x_origin" /> 4116891601f5Smrg </bitcase> 4117891601f5Smrg <bitcase> 4118891601f5Smrg <enumref ref="GC">ClipOriginY</enumref> 4119891601f5Smrg <field type="INT32" name="clip_y_origin" /> 4120891601f5Smrg </bitcase> 4121891601f5Smrg <bitcase> 4122891601f5Smrg <enumref ref="GC">ClipMask</enumref> 4123891601f5Smrg <field type="PIXMAP" name="clip_mask" altenum="Pixmap"/> 4124891601f5Smrg </bitcase> 4125891601f5Smrg <bitcase> 4126891601f5Smrg <enumref ref="GC">DashOffset</enumref> 4127891601f5Smrg <field type="CARD32" name="dash_offset" /> 4128891601f5Smrg </bitcase> 4129891601f5Smrg <bitcase> 4130891601f5Smrg <enumref ref="GC">DashList</enumref> 4131891601f5Smrg <field type="CARD32" name="dashes" /> 4132891601f5Smrg </bitcase> 4133891601f5Smrg <bitcase> 4134891601f5Smrg <enumref ref="GC">ArcMode</enumref> 4135891601f5Smrg <field type="CARD32" name="arc_mode" enum="ArcMode"/> 4136891601f5Smrg </bitcase> 4137891601f5Smrg </switch> 4138986c8b3dSmrg <doc> 4139986c8b3dSmrg <brief>Creates a graphics context</brief> 4140986c8b3dSmrg <description><![CDATA[ 4141986c8b3dSmrgCreates a graphics context. The graphics context can be used with any drawable 4142986c8b3dSmrgthat has the same root and depth as the specified drawable. 4143986c8b3dSmrg ]]></description> 4144986c8b3dSmrg <field name="cid"><![CDATA[ 4145986c8b3dSmrgThe ID with which you will refer to the graphics context, created by 4146986c8b3dSmrg`xcb_generate_id`. 4147986c8b3dSmrg ]]></field> 4148986c8b3dSmrg <field name="drawable"><![CDATA[ 4149986c8b3dSmrgDrawable to get the root/depth from. 4150986c8b3dSmrg ]]></field> 4151986c8b3dSmrg <error type="Drawable"><![CDATA[ 4152986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 4153986c8b3dSmrg ]]></error> 4154986c8b3dSmrg <error type="Match"><![CDATA[ 4155986c8b3dSmrgTODO: reasons? 4156986c8b3dSmrg ]]></error> 4157986c8b3dSmrg <error type="Font"><![CDATA[ 4158986c8b3dSmrgTODO: reasons? 4159986c8b3dSmrg ]]></error> 4160986c8b3dSmrg <error type="Pixmap"><![CDATA[ 4161986c8b3dSmrgTODO: reasons? 4162986c8b3dSmrg ]]></error> 4163986c8b3dSmrg <error type="Value"><![CDATA[ 4164986c8b3dSmrgTODO: reasons? 4165986c8b3dSmrg ]]></error> 4166986c8b3dSmrg <error type="Alloc"><![CDATA[ 4167986c8b3dSmrgThe X server could not allocate the requested resources (no memory?). 4168986c8b3dSmrg ]]></error> 4169986c8b3dSmrg <see type="function" name="xcb_generate_id" /> 4170986c8b3dSmrg </doc> 4171d4401354Smrg </request> 4172d4401354Smrg 4173d4401354Smrg <request name="ChangeGC" opcode="56"> 4174d4401354Smrg <pad bytes="1" /> 4175d4401354Smrg <field type="GCONTEXT" name="gc" /> 4176891601f5Smrg <field type="CARD32" name="value_mask" mask="GC" /> 4177891601f5Smrg <switch name="value_list"> 4178891601f5Smrg <fieldref>value_mask</fieldref> 4179891601f5Smrg <bitcase> 4180891601f5Smrg <enumref ref="GC">Function</enumref> 4181891601f5Smrg <field type="CARD32" name="function" enum="GX"/> 4182891601f5Smrg </bitcase> 4183891601f5Smrg <bitcase> 4184891601f5Smrg <enumref ref="GC">PlaneMask</enumref> 4185891601f5Smrg <field type="CARD32" name="plane_mask" /> 4186891601f5Smrg </bitcase> 4187891601f5Smrg <bitcase> 4188891601f5Smrg <enumref ref="GC">Foreground</enumref> 4189891601f5Smrg <field type="CARD32" name="foreground" /> 4190891601f5Smrg </bitcase> 4191891601f5Smrg <bitcase> 4192891601f5Smrg <enumref ref="GC">Background</enumref> 4193891601f5Smrg <field type="CARD32" name="background" /> 4194891601f5Smrg </bitcase> 4195891601f5Smrg <bitcase> 4196891601f5Smrg <enumref ref="GC">LineWidth</enumref> 4197891601f5Smrg <field type="CARD32" name="line_width" /> 4198891601f5Smrg </bitcase> 4199891601f5Smrg <bitcase> 4200891601f5Smrg <enumref ref="GC">LineStyle</enumref> 4201891601f5Smrg <field type="CARD32" name="line_style" enum="LineStyle"/> 4202891601f5Smrg </bitcase> 4203891601f5Smrg <bitcase> 4204891601f5Smrg <enumref ref="GC">CapStyle</enumref> 4205891601f5Smrg <field type="CARD32" name="cap_style" enum="CapStyle"/> 4206891601f5Smrg </bitcase> 4207891601f5Smrg <bitcase> 4208891601f5Smrg <enumref ref="GC">JoinStyle</enumref> 4209891601f5Smrg <field type="CARD32" name="join_style" enum="JoinStyle"/> 4210891601f5Smrg </bitcase> 4211891601f5Smrg <bitcase> 4212891601f5Smrg <enumref ref="GC">FillStyle</enumref> 4213891601f5Smrg <field type="CARD32" name="fill_style" enum="FillStyle"/> 4214891601f5Smrg </bitcase> 4215891601f5Smrg <bitcase> 4216891601f5Smrg <enumref ref="GC">FillRule</enumref> 4217891601f5Smrg <field type="CARD32" name="fill_rule" enum="FillRule"/> 4218891601f5Smrg </bitcase> 4219891601f5Smrg <bitcase> 4220891601f5Smrg <enumref ref="GC">Tile</enumref> 4221891601f5Smrg <field type="PIXMAP" name="tile" altenum="Pixmap"/> 4222891601f5Smrg </bitcase> 4223891601f5Smrg <bitcase> 4224891601f5Smrg <enumref ref="GC">Stipple</enumref> 4225891601f5Smrg <field type="PIXMAP" name="stipple" altenum="Pixmap"/> 4226891601f5Smrg </bitcase> 4227891601f5Smrg <bitcase> 4228891601f5Smrg <enumref ref="GC">TileStippleOriginX</enumref> 4229891601f5Smrg <field type="INT32" name="tile_stipple_x_origin" /> 4230891601f5Smrg </bitcase> 4231891601f5Smrg <bitcase> 4232891601f5Smrg <enumref ref="GC">TileStippleOriginY</enumref> 4233891601f5Smrg <field type="INT32" name="tile_stipple_y_origin" /> 4234891601f5Smrg </bitcase> 4235891601f5Smrg <bitcase> 4236891601f5Smrg <enumref ref="GC">Font</enumref> 4237891601f5Smrg <field type="FONT" name="font" altenum="Font"/> 4238891601f5Smrg </bitcase> 4239891601f5Smrg <bitcase> 4240891601f5Smrg <enumref ref="GC">SubwindowMode</enumref> 4241891601f5Smrg <field type="CARD32" name="subwindow_mode" enum="SubwindowMode"/> 4242891601f5Smrg </bitcase> 4243891601f5Smrg <bitcase> 4244891601f5Smrg <enumref ref="GC">GraphicsExposures</enumref> 4245891601f5Smrg <field type="BOOL32" name="graphics_exposures" /> 4246891601f5Smrg </bitcase> 4247891601f5Smrg <bitcase> 4248891601f5Smrg <enumref ref="GC">ClipOriginX</enumref> 4249891601f5Smrg <field type="INT32" name="clip_x_origin" /> 4250891601f5Smrg </bitcase> 4251891601f5Smrg <bitcase> 4252891601f5Smrg <enumref ref="GC">ClipOriginY</enumref> 4253891601f5Smrg <field type="INT32" name="clip_y_origin" /> 4254891601f5Smrg </bitcase> 4255891601f5Smrg <bitcase> 4256891601f5Smrg <enumref ref="GC">ClipMask</enumref> 4257891601f5Smrg <field type="PIXMAP" name="clip_mask" altenum="Pixmap"/> 4258891601f5Smrg </bitcase> 4259891601f5Smrg <bitcase> 4260891601f5Smrg <enumref ref="GC">DashOffset</enumref> 4261891601f5Smrg <field type="CARD32" name="dash_offset" /> 4262891601f5Smrg </bitcase> 4263891601f5Smrg <bitcase> 4264891601f5Smrg <enumref ref="GC">DashList</enumref> 4265891601f5Smrg <field type="CARD32" name="dashes" /> 4266891601f5Smrg </bitcase> 4267891601f5Smrg <bitcase> 4268891601f5Smrg <enumref ref="GC">ArcMode</enumref> 4269891601f5Smrg <field type="CARD32" name="arc_mode" enum="ArcMode"/> 4270891601f5Smrg </bitcase> 4271891601f5Smrg </switch> 4272986c8b3dSmrg <doc> 4273986c8b3dSmrg <brief>change graphics context components</brief> 4274986c8b3dSmrg <description><![CDATA[ 4275986c8b3dSmrgChanges the components specified by `value_mask` for the specified graphics context. 4276986c8b3dSmrg ]]></description> 4277986c8b3dSmrg <example><![CDATA[ 4278986c8b3dSmrg/* 4279986c8b3dSmrg * Changes the foreground color component of the specified graphics context. 4280986c8b3dSmrg * 4281986c8b3dSmrg */ 4282891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_gcontext_t gc, uint32_t fg, uint32_t bg) { 4283986c8b3dSmrg /* C99 allows us to use a compact way of changing a single component: */ 4284986c8b3dSmrg xcb_change_gc(conn, gc, XCB_GC_FOREGROUND, (uint32_t[]){ fg }); 4285986c8b3dSmrg 4286986c8b3dSmrg /* The more explicit way. Beware that the order of values is important! */ 4287986c8b3dSmrg uint32_t mask = 0; 4288986c8b3dSmrg mask |= XCB_GC_FOREGROUND; 4289986c8b3dSmrg mask |= XCB_GC_BACKGROUND; 4290986c8b3dSmrg 4291986c8b3dSmrg uint32_t values[] = { 4292986c8b3dSmrg fg, 4293986c8b3dSmrg bg 4294986c8b3dSmrg }; 4295986c8b3dSmrg xcb_change_gc(conn, gc, mask, values); 4296986c8b3dSmrg xcb_flush(conn); 4297986c8b3dSmrg} 4298986c8b3dSmrg ]]></example> 4299986c8b3dSmrg <field name="gc"><![CDATA[ 4300986c8b3dSmrgThe graphics context to change. 4301986c8b3dSmrg ]]></field> 4302986c8b3dSmrg <!-- the enum documentation is good enough. --> 4303986c8b3dSmrg <field name="value_mask" /> 4304986c8b3dSmrg <field name="value_list"><![CDATA[ 4305986c8b3dSmrgValues for each of the components specified in the bitmask `value_mask`. The 4306986c8b3dSmrgorder has to correspond to the order of possible `value_mask` bits. See the 4307986c8b3dSmrgexample. 4308986c8b3dSmrg ]]></field> 4309986c8b3dSmrg <error type="Font"><![CDATA[ 4310986c8b3dSmrgTODO: reasons? 4311986c8b3dSmrg ]]></error> 4312f591e195Smrg <error type="GContext"><![CDATA[ 4313986c8b3dSmrgTODO: reasons? 4314986c8b3dSmrg ]]></error> 4315986c8b3dSmrg <error type="Match"><![CDATA[ 4316986c8b3dSmrgTODO: reasons? 4317986c8b3dSmrg ]]></error> 4318986c8b3dSmrg <error type="Pixmap"><![CDATA[ 4319986c8b3dSmrgTODO: reasons? 4320986c8b3dSmrg ]]></error> 4321986c8b3dSmrg <error type="Value"><![CDATA[ 4322986c8b3dSmrgTODO: reasons? 4323986c8b3dSmrg ]]></error> 4324986c8b3dSmrg <error type="Alloc"><![CDATA[ 4325986c8b3dSmrgThe X server could not allocate the requested resources (no memory?). 4326986c8b3dSmrg ]]></error> 4327986c8b3dSmrg </doc> 4328d4401354Smrg </request> 4329d4401354Smrg 4330d4401354Smrg <request name="CopyGC" opcode="57"> 4331d4401354Smrg <pad bytes="1" /> 4332d4401354Smrg <field type="GCONTEXT" name="src_gc" /> 4333d4401354Smrg <field type="GCONTEXT" name="dst_gc" /> 4334d4401354Smrg <field type="CARD32" name="value_mask" mask="GC" /> 4335d4401354Smrg </request> 4336d4401354Smrg 4337d4401354Smrg <request name="SetDashes" opcode="58"> 4338d4401354Smrg <pad bytes="1" /> 4339d4401354Smrg <field type="GCONTEXT" name="gc" /> 4340d4401354Smrg <field type="CARD16" name="dash_offset" /> 4341d4401354Smrg <field type="CARD16" name="dashes_len" /> 4342d4401354Smrg <list type="CARD8" name="dashes"> 4343d4401354Smrg <fieldref>dashes_len</fieldref> 4344d4401354Smrg </list> 4345d4401354Smrg </request> 4346d4401354Smrg 4347d4401354Smrg <enum name="ClipOrdering"> 4348d4401354Smrg <item name="Unsorted"><value>0</value></item> 4349d4401354Smrg <item name="YSorted"> <value>1</value></item> 4350d4401354Smrg <item name="YXSorted"><value>2</value></item> 4351d4401354Smrg <item name="YXBanded"><value>3</value></item> 4352d4401354Smrg </enum> 4353d4401354Smrg 4354d4401354Smrg <request name="SetClipRectangles" opcode="59"> 4355d4401354Smrg <field type="BYTE" name="ordering" enum="ClipOrdering" /> 4356d4401354Smrg <field type="GCONTEXT" name="gc" /> 4357d4401354Smrg <field type="INT16" name="clip_x_origin" /> 4358d4401354Smrg <field type="INT16" name="clip_y_origin" /> 4359d4401354Smrg <list type="RECTANGLE" name="rectangles" /> 4360d4401354Smrg </request> 4361d4401354Smrg 4362d4401354Smrg <request name="FreeGC" opcode="60"> 4363d4401354Smrg <pad bytes="1" /> 4364d4401354Smrg <field type="GCONTEXT" name="gc" /> 4365986c8b3dSmrg <doc> 4366986c8b3dSmrg <brief>Destroys a graphics context</brief> 4367986c8b3dSmrg <description><![CDATA[ 4368986c8b3dSmrgDestroys the specified `gc` and all associated storage. 4369986c8b3dSmrg ]]></description> 4370986c8b3dSmrg <field name="gc"><![CDATA[The graphics context to destroy.]]></field> 4371f591e195Smrg <error type="GContext"><![CDATA[ 4372986c8b3dSmrgThe specified graphics context does not exist. 4373986c8b3dSmrg ]]></error> 4374986c8b3dSmrg </doc> 4375d4401354Smrg </request> 4376d4401354Smrg 4377d4401354Smrg <request name="ClearArea" opcode="61"> 4378d4401354Smrg <field type="BOOL" name="exposures" /> 4379d4401354Smrg <field type="WINDOW" name="window" /> 4380d4401354Smrg <field type="INT16" name="x" /> 4381d4401354Smrg <field type="INT16" name="y" /> 4382d4401354Smrg <field type="CARD16" name="width" /> 4383d4401354Smrg <field type="CARD16" name="height" /> 4384d4401354Smrg </request> 4385d4401354Smrg 4386d4401354Smrg <request name="CopyArea" opcode="62"> 4387d4401354Smrg <pad bytes="1" /> 4388d4401354Smrg <field type="DRAWABLE" name="src_drawable" /> 4389d4401354Smrg <field type="DRAWABLE" name="dst_drawable" /> 4390d4401354Smrg <field type="GCONTEXT" name="gc" /> 4391d4401354Smrg <field type="INT16" name="src_x" /> 4392d4401354Smrg <field type="INT16" name="src_y" /> 4393d4401354Smrg <field type="INT16" name="dst_x" /> 4394d4401354Smrg <field type="INT16" name="dst_y" /> 4395d4401354Smrg <field type="CARD16" name="width" /> 4396d4401354Smrg <field type="CARD16" name="height" /> 4397986c8b3dSmrg <doc> 4398986c8b3dSmrg <brief>copy areas</brief> 4399986c8b3dSmrg <description><![CDATA[ 4400986c8b3dSmrgCopies the specified rectangle from `src_drawable` to `dst_drawable`. 4401986c8b3dSmrg ]]></description> 4402986c8b3dSmrg <field name="dst_drawable"><![CDATA[ 4403986c8b3dSmrgThe destination drawable (Window or Pixmap). 4404986c8b3dSmrg ]]></field> 4405986c8b3dSmrg <field name="src_drawable"><![CDATA[ 4406986c8b3dSmrgThe source drawable (Window or Pixmap). 4407986c8b3dSmrg ]]></field> 4408986c8b3dSmrg <field name="gc"><![CDATA[ 4409986c8b3dSmrgThe graphics context to use. 4410986c8b3dSmrg ]]></field> 4411986c8b3dSmrg <field name="src_x"><![CDATA[ 4412986c8b3dSmrgThe source X coordinate. 4413986c8b3dSmrg ]]></field> 4414986c8b3dSmrg <field name="src_y"><![CDATA[ 4415986c8b3dSmrgThe source Y coordinate. 4416986c8b3dSmrg ]]></field> 4417986c8b3dSmrg <field name="dst_x"><![CDATA[ 4418986c8b3dSmrgThe destination X coordinate. 4419986c8b3dSmrg ]]></field> 4420986c8b3dSmrg <field name="dst_y"><![CDATA[ 4421986c8b3dSmrgThe destination Y coordinate. 4422986c8b3dSmrg ]]></field> 4423986c8b3dSmrg <field name="width"><![CDATA[ 4424986c8b3dSmrgThe width of the area to copy (in pixels). 4425986c8b3dSmrg ]]></field> 4426986c8b3dSmrg <field name="height"><![CDATA[ 4427986c8b3dSmrgThe height of the area to copy (in pixels). 4428986c8b3dSmrg ]]></field> 4429986c8b3dSmrg <error type="Drawable"><![CDATA[ 4430986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 4431986c8b3dSmrg ]]></error> 4432f591e195Smrg <error type="GContext"><![CDATA[ 4433986c8b3dSmrgThe specified graphics context does not exist. 4434986c8b3dSmrg ]]></error> 4435986c8b3dSmrg <error type="Match"><![CDATA[ 4436986c8b3dSmrg`src_drawable` has a different root or depth than `dst_drawable`. 4437986c8b3dSmrg ]]></error> 4438986c8b3dSmrg </doc> 4439d4401354Smrg </request> 4440d4401354Smrg 4441d4401354Smrg <request name="CopyPlane" opcode="63"> 4442d4401354Smrg <pad bytes="1" /> 4443d4401354Smrg <field type="DRAWABLE" name="src_drawable" /> 4444d4401354Smrg <field type="DRAWABLE" name="dst_drawable" /> 4445d4401354Smrg <field type="GCONTEXT" name="gc" /> 4446d4401354Smrg <field type="INT16" name="src_x" /> 4447d4401354Smrg <field type="INT16" name="src_y" /> 4448d4401354Smrg <field type="INT16" name="dst_x" /> 4449d4401354Smrg <field type="INT16" name="dst_y" /> 4450d4401354Smrg <field type="CARD16" name="width" /> 4451d4401354Smrg <field type="CARD16" name="height" /> 4452d4401354Smrg <field type="CARD32" name="bit_plane" /> 4453d4401354Smrg </request> 4454d4401354Smrg 4455d4401354Smrg <enum name="CoordMode"> 4456d4401354Smrg <item name="Origin"> <value>0</value></item> 4457d4401354Smrg <item name="Previous"><value>1</value></item> 4458986c8b3dSmrg <doc> 4459986c8b3dSmrg <field name="Origin"><![CDATA[ 4460986c8b3dSmrgTreats all coordinates as relative to the origin. 4461986c8b3dSmrg ]]></field> 4462986c8b3dSmrg <field name="Previous"><![CDATA[ 4463986c8b3dSmrgTreats all coordinates after the first as relative to the previous coordinate. 4464986c8b3dSmrg ]]></field> 4465986c8b3dSmrg </doc> 4466d4401354Smrg </enum> 4467d4401354Smrg 4468d4401354Smrg <!-- combine-adjacent doesn't work for mode==Relative --> 4469d4401354Smrg <request name="PolyPoint" opcode="64"> 4470d4401354Smrg <field type="BYTE" name="coordinate_mode" enum="CoordMode" /> 4471d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4472d4401354Smrg <field type="GCONTEXT" name="gc" /> 4473d4401354Smrg <list type="POINT" name="points" /> 4474d4401354Smrg </request> 4475d4401354Smrg 4476d4401354Smrg <request name="PolyLine" opcode="65" combine-adjacent="true"> 4477d4401354Smrg <field type="BYTE" name="coordinate_mode" enum="CoordMode" /> 4478d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4479d4401354Smrg <field type="GCONTEXT" name="gc" /> 4480d4401354Smrg <list type="POINT" name="points" /> 4481986c8b3dSmrg <doc> 4482986c8b3dSmrg <brief>draw lines</brief> 4483986c8b3dSmrg <description><![CDATA[ 4484986c8b3dSmrgDraws `points_len`-1 lines between each pair of points (point[i], point[i+1]) 4485986c8b3dSmrgin the `points` array. The lines are drawn in the order listed in the array. 4486986c8b3dSmrgThey join correctly at all intermediate points, and if the first and last 4487986c8b3dSmrgpoints coincide, the first and last lines also join correctly. For any given 4488986c8b3dSmrgline, a pixel is not drawn more than once. If thin (zero line-width) lines 4489986c8b3dSmrgintersect, the intersecting pixels are drawn multiple times. If wide lines 4490986c8b3dSmrgintersect, the intersecting pixels are drawn only once, as though the entire 4491986c8b3dSmrgrequest were a single, filled shape. 4492986c8b3dSmrg ]]></description> 4493986c8b3dSmrg <example><![CDATA[ 4494986c8b3dSmrg/* 4495986c8b3dSmrg * Draw a straight line. 4496986c8b3dSmrg * 4497986c8b3dSmrg */ 4498891601f5Smrgvoid my_example(xcb_connection_t *conn, xcb_drawable_t drawable, xcb_gcontext_t gc) { 4499986c8b3dSmrg xcb_poly_line(conn, XCB_COORD_MODE_ORIGIN, drawable, gc, 2, 4500986c8b3dSmrg (xcb_point_t[]) { {10, 10}, {100, 10} }); 4501986c8b3dSmrg xcb_flush(conn); 4502986c8b3dSmrg} 4503986c8b3dSmrg ]]></example> 4504986c8b3dSmrg <field name="drawable"><![CDATA[ 4505986c8b3dSmrgThe drawable to draw the line(s) on. 4506986c8b3dSmrg ]]></field> 4507986c8b3dSmrg <field name="gc"><![CDATA[ 4508986c8b3dSmrgThe graphics context to use. 4509986c8b3dSmrg ]]></field> 4510986c8b3dSmrg <field name="points_len"><![CDATA[ 4511986c8b3dSmrgThe number of `xcb_point_t` structures in `points`. 4512986c8b3dSmrg ]]></field> 4513986c8b3dSmrg <field name="points"><![CDATA[ 4514986c8b3dSmrgAn array of points. 4515986c8b3dSmrg ]]></field> 4516986c8b3dSmrg <!-- the enum doc is sufficient. --> 4517986c8b3dSmrg <field name="coordinate_mode" /> 4518986c8b3dSmrg <error type="Drawable"><![CDATA[ 4519986c8b3dSmrgTODO: reasons? 4520986c8b3dSmrg ]]></error> 4521f591e195Smrg <error type="GContext"><![CDATA[ 4522986c8b3dSmrgTODO: reasons? 4523986c8b3dSmrg ]]></error> 4524986c8b3dSmrg <error type="Match"><![CDATA[ 4525986c8b3dSmrgTODO: reasons? 4526986c8b3dSmrg ]]></error> 4527986c8b3dSmrg <error type="Value"><![CDATA[ 4528986c8b3dSmrgTODO: reasons? 4529986c8b3dSmrg ]]></error> 4530986c8b3dSmrg </doc> 4531d4401354Smrg </request> 4532d4401354Smrg 4533d4401354Smrg <struct name="SEGMENT"> 4534d4401354Smrg <field type="INT16" name="x1" /> 4535d4401354Smrg <field type="INT16" name="y1" /> 4536d4401354Smrg <field type="INT16" name="x2" /> 4537d4401354Smrg <field type="INT16" name="y2" /> 4538d4401354Smrg </struct> 4539d4401354Smrg 4540d4401354Smrg <request name="PolySegment" opcode="66" combine-adjacent="true"> 4541d4401354Smrg <pad bytes="1" /> 4542d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4543d4401354Smrg <field type="GCONTEXT" name="gc" /> 4544d4401354Smrg <list type="SEGMENT" name="segments" /> 4545986c8b3dSmrg <doc> 4546986c8b3dSmrg <brief>draw lines</brief> 4547986c8b3dSmrg <description><![CDATA[ 4548986c8b3dSmrgDraws multiple, unconnected lines. For each segment, a line is drawn between 4549986c8b3dSmrg(x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of 4550986c8b3dSmrg`xcb_segment_t` structures and does not perform joining at coincident 4551986c8b3dSmrgendpoints. For any given line, a pixel is not drawn more than once. If lines 4552986c8b3dSmrgintersect, the intersecting pixels are drawn multiple times. 4553986c8b3dSmrg 4554986c8b3dSmrgTODO: include the xcb_segment_t data structure 4555986c8b3dSmrg 4556986c8b3dSmrgTODO: an example 4557986c8b3dSmrg ]]></description> 4558986c8b3dSmrg <field name="drawable"><![CDATA[ 4559986c8b3dSmrgA drawable (Window or Pixmap) to draw on. 4560986c8b3dSmrg ]]></field> 4561986c8b3dSmrg <field name="gc"><![CDATA[ 4562986c8b3dSmrgThe graphics context to use. 4563986c8b3dSmrg 4564986c8b3dSmrgTODO: document which attributes of a gc are used 4565986c8b3dSmrg ]]></field> 4566986c8b3dSmrg <field name="segments_len"><![CDATA[ 4567986c8b3dSmrgThe number of `xcb_segment_t` structures in `segments`. 4568986c8b3dSmrg ]]></field> 4569986c8b3dSmrg <field name="segments"><![CDATA[ 4570986c8b3dSmrgAn array of `xcb_segment_t` structures. 4571986c8b3dSmrg ]]></field> 4572986c8b3dSmrg <error type="Drawable"><![CDATA[ 4573986c8b3dSmrgThe specified `drawable` does not exist. 4574986c8b3dSmrg ]]></error> 4575f591e195Smrg <error type="GContext"><![CDATA[ 4576986c8b3dSmrgThe specified `gc` does not exist. 4577986c8b3dSmrg ]]></error> 4578986c8b3dSmrg <error type="Match"><![CDATA[ 4579986c8b3dSmrgTODO: reasons? 4580986c8b3dSmrg ]]></error> 4581986c8b3dSmrg </doc> 4582d4401354Smrg </request> 4583d4401354Smrg 4584d4401354Smrg <request name="PolyRectangle" opcode="67" combine-adjacent="true"> 4585d4401354Smrg <pad bytes="1" /> 4586d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4587d4401354Smrg <field type="GCONTEXT" name="gc" /> 4588d4401354Smrg <list type="RECTANGLE" name="rectangles" /> 4589d4401354Smrg </request> 4590d4401354Smrg 4591d4401354Smrg <!-- 4592d4401354Smrg The semantics of PolyArc change after the first arc: the GC's 4593d4401354Smrg join style may be applied to successive arcs under some circumstances. 4594d4401354Smrg So using combine-adjacent here is bad. 4595d4401354Smrg --> 4596d4401354Smrg <request name="PolyArc" opcode="68"> 4597d4401354Smrg <pad bytes="1" /> 4598d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4599d4401354Smrg <field type="GCONTEXT" name="gc" /> 4600d4401354Smrg <list type="ARC" name="arcs" /> 4601d4401354Smrg </request> 4602d4401354Smrg 4603d4401354Smrg <enum name="PolyShape"> 4604d4401354Smrg <item name="Complex"> <value>0</value></item> 4605d4401354Smrg <item name="Nonconvex"><value>1</value></item> 4606d4401354Smrg <item name="Convex"> <value>2</value></item> 4607d4401354Smrg </enum> 4608d4401354Smrg 4609d4401354Smrg <request name="FillPoly" opcode="69"> 4610d4401354Smrg <pad bytes="1" /> 4611d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4612d4401354Smrg <field type="GCONTEXT" name="gc" /> 4613d4401354Smrg <field type="CARD8" name="shape" enum="PolyShape" /> 4614d4401354Smrg <field type="CARD8" name="coordinate_mode" enum="CoordMode" /> 4615d4401354Smrg <pad bytes="2" /> 4616d4401354Smrg <list type="POINT" name="points" /> 4617d4401354Smrg </request> 4618d4401354Smrg 4619d4401354Smrg <request name="PolyFillRectangle" opcode="70" combine-adjacent="true"> 4620d4401354Smrg <pad bytes="1" /> 4621d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4622d4401354Smrg <field type="GCONTEXT" name="gc" /> 4623d4401354Smrg <list type="RECTANGLE" name="rectangles" /> 4624986c8b3dSmrg <doc> 4625986c8b3dSmrg <brief>Fills rectangles</brief> 4626986c8b3dSmrg <description><![CDATA[ 4627986c8b3dSmrgFills the specified rectangle(s) in the order listed in the array. For any 4628986c8b3dSmrggiven rectangle, each pixel is not drawn more than once. If rectangles 4629986c8b3dSmrgintersect, the intersecting pixels are drawn multiple times. 4630986c8b3dSmrg ]]></description> 4631986c8b3dSmrg <field name="drawable"><![CDATA[ 4632986c8b3dSmrgThe drawable (Window or Pixmap) to draw on. 4633986c8b3dSmrg ]]></field> 4634986c8b3dSmrg <field name="gc"><![CDATA[ 4635986c8b3dSmrgThe graphics context to use. 4636986c8b3dSmrg 4637986c8b3dSmrgThe following graphics context components are used: function, plane-mask, 4638986c8b3dSmrgfill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. 4639986c8b3dSmrg 4640986c8b3dSmrgThe following graphics context mode-dependent components are used: 4641986c8b3dSmrgforeground, background, tile, stipple, tile-stipple-x-origin, and 4642986c8b3dSmrgtile-stipple-y-origin. 4643986c8b3dSmrg ]]></field> 4644986c8b3dSmrg <field name="rectangles_len"><![CDATA[ 4645986c8b3dSmrgThe number of `xcb_rectangle_t` structures in `rectangles`. 4646986c8b3dSmrg ]]></field> 4647986c8b3dSmrg <field name="rectangles"><![CDATA[ 4648986c8b3dSmrgThe rectangles to fill. 4649986c8b3dSmrg ]]></field> 4650986c8b3dSmrg <error type="Drawable"><![CDATA[ 4651986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 4652986c8b3dSmrg ]]></error> 4653f591e195Smrg <error type="GContext"><![CDATA[ 4654986c8b3dSmrgThe specified graphics context does not exist. 4655986c8b3dSmrg ]]></error> 4656986c8b3dSmrg <error type="Match"><![CDATA[ 4657986c8b3dSmrgTODO: reasons? 4658986c8b3dSmrg ]]></error> 4659986c8b3dSmrg </doc> 4660d4401354Smrg </request> 4661d4401354Smrg 4662d4401354Smrg <request name="PolyFillArc" opcode="71" combine-adjacent="true"> 4663d4401354Smrg <pad bytes="1" /> 4664d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4665d4401354Smrg <field type="GCONTEXT" name="gc" /> 4666d4401354Smrg <list type="ARC" name="arcs" /> 4667d4401354Smrg </request> 4668d4401354Smrg 4669d4401354Smrg <enum name="ImageFormat"> 4670d4401354Smrg <item name="XYBitmap"><value>0</value></item> 4671d4401354Smrg <item name="XYPixmap"><value>1</value></item> 4672d4401354Smrg <item name="ZPixmap"> <value>2</value></item> 4673d4401354Smrg </enum> 4674d4401354Smrg 4675d4401354Smrg <request name="PutImage" opcode="72"> 4676d4401354Smrg <field type="CARD8" name="format" enum="ImageFormat" /> 4677d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4678d4401354Smrg <field type="GCONTEXT" name="gc" /> 4679d4401354Smrg <field type="CARD16" name="width" /> 4680d4401354Smrg <field type="CARD16" name="height" /> 4681d4401354Smrg <field type="INT16" name="dst_x" /> 4682d4401354Smrg <field type="INT16" name="dst_y" /> 4683d4401354Smrg <field type="CARD8" name="left_pad" /> 4684d4401354Smrg <field type="CARD8" name="depth" /> 4685d4401354Smrg <pad bytes="2" /> 4686d4401354Smrg <list type="BYTE" name="data" /> 4687d4401354Smrg </request> 4688d4401354Smrg 4689d4401354Smrg <!-- FIXME: data array in reply will include padding, but ought not to. --> 4690d4401354Smrg <request name="GetImage" opcode="73"> 4691d4401354Smrg <field type="CARD8" name="format" enum="ImageFormat" /> 4692d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4693d4401354Smrg <field type="INT16" name="x" /> 4694d4401354Smrg <field type="INT16" name="y" /> 4695d4401354Smrg <field type="CARD16" name="width" /> 4696d4401354Smrg <field type="CARD16" name="height" /> 4697d4401354Smrg <field type="CARD32" name="plane_mask" /> 4698d4401354Smrg <reply> 4699d4401354Smrg <field type="CARD8" name="depth" /> 4700d4401354Smrg <field type="VISUALID" name="visual" /> 4701d4401354Smrg <pad bytes="20" /> 4702d4401354Smrg <list type="BYTE" name="data"> 4703d4401354Smrg <op op="*"> 4704d4401354Smrg <fieldref>length</fieldref> 4705d4401354Smrg <value>4</value> 4706d4401354Smrg </op> 4707d4401354Smrg </list> 4708d4401354Smrg </reply> 4709d4401354Smrg </request> 4710d4401354Smrg 4711d4401354Smrg <request name="PolyText8" opcode="74"> 4712d4401354Smrg <pad bytes="1" /> 4713d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4714d4401354Smrg <field type="GCONTEXT" name="gc" /> 4715d4401354Smrg <field type="INT16" name="x" /> 4716d4401354Smrg <field type="INT16" name="y" /> 4717d4401354Smrg <list type="BYTE" name="items" /> 4718d4401354Smrg </request> 4719d4401354Smrg 4720d4401354Smrg <request name="PolyText16" opcode="75"> 4721d4401354Smrg <pad bytes="1" /> 4722d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4723d4401354Smrg <field type="GCONTEXT" name="gc" /> 4724d4401354Smrg <field type="INT16" name="x" /> 4725d4401354Smrg <field type="INT16" name="y" /> 4726d4401354Smrg <list type="BYTE" name="items" /> 4727d4401354Smrg </request> 4728d4401354Smrg 4729d4401354Smrg <request name="ImageText8" opcode="76"> 4730d4401354Smrg <field type="BYTE" name="string_len" /> 4731d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4732d4401354Smrg <field type="GCONTEXT" name="gc" /> 4733d4401354Smrg <field type="INT16" name="x" /> 4734d4401354Smrg <field type="INT16" name="y" /> 4735d4401354Smrg <list type="char" name="string"> 4736d4401354Smrg <fieldref>string_len</fieldref> 4737d4401354Smrg </list> 4738986c8b3dSmrg <doc> 4739986c8b3dSmrg <brief>Draws text</brief> 4740986c8b3dSmrg <description><![CDATA[ 4741986c8b3dSmrgFills the destination rectangle with the background pixel from `gc`, then 4742986c8b3dSmrgpaints the text with the foreground pixel from `gc`. The upper-left corner of 4743986c8b3dSmrgthe filled rectangle is at [x, y - font-ascent]. The width is overall-width, 4744986c8b3dSmrgthe height is font-ascent + font-descent. The overall-width, font-ascent and 4745986c8b3dSmrgfont-descent are as returned by `xcb_query_text_extents` (TODO). 4746986c8b3dSmrg 4747986c8b3dSmrgNote that using X core fonts is deprecated (but still supported) in favor of 4748986c8b3dSmrgclient-side rendering using Xft. 4749986c8b3dSmrg ]]></description> 4750986c8b3dSmrg <field name="drawable"><![CDATA[ 4751986c8b3dSmrgThe drawable (Window or Pixmap) to draw text on. 4752986c8b3dSmrg ]]></field> 4753986c8b3dSmrg <field name="string_len"><![CDATA[ 4754986c8b3dSmrgThe length of the `string`. Note that this parameter limited by 255 due to 4755986c8b3dSmrgusing 8 bits! 4756986c8b3dSmrg ]]></field> 4757986c8b3dSmrg <field name="string"><![CDATA[ 4758986c8b3dSmrgThe string to draw. Only the first 255 characters are relevant due to the data 4759986c8b3dSmrgtype of `string_len`. 4760986c8b3dSmrg ]]></field> 4761986c8b3dSmrg <field name="x"><![CDATA[ 4762986c8b3dSmrgThe x coordinate of the first character, relative to the origin of `drawable`. 4763986c8b3dSmrg ]]></field> 4764986c8b3dSmrg <field name="y"><![CDATA[ 4765986c8b3dSmrgThe y coordinate of the first character, relative to the origin of `drawable`. 4766986c8b3dSmrg ]]></field> 4767986c8b3dSmrg <field name="gc"><![CDATA[ 4768986c8b3dSmrgThe graphics context to use. 4769986c8b3dSmrg 4770986c8b3dSmrgThe following graphics context components are used: plane-mask, foreground, 4771986c8b3dSmrgbackground, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. 4772986c8b3dSmrg ]]></field> 4773986c8b3dSmrg <error type="Drawable"><![CDATA[ 4774986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 4775986c8b3dSmrg ]]></error> 4776f591e195Smrg <error type="GContext"><![CDATA[ 4777986c8b3dSmrgThe specified graphics context does not exist. 4778986c8b3dSmrg ]]></error> 4779986c8b3dSmrg <error type="Match"><![CDATA[ 4780986c8b3dSmrgTODO: reasons? 4781986c8b3dSmrg ]]></error> 4782986c8b3dSmrg <see type="request" name="ImageText16" /> 4783986c8b3dSmrg </doc> 4784d4401354Smrg </request> 4785d4401354Smrg 4786d4401354Smrg <request name="ImageText16" opcode="77"> 4787d4401354Smrg <field type="BYTE" name="string_len" /> 4788d4401354Smrg <field type="DRAWABLE" name="drawable" /> 4789d4401354Smrg <field type="GCONTEXT" name="gc" /> 4790d4401354Smrg <field type="INT16" name="x" /> 4791d4401354Smrg <field type="INT16" name="y" /> 4792d4401354Smrg <list type="CHAR2B" name="string"> 4793d4401354Smrg <fieldref>string_len</fieldref> 4794d4401354Smrg </list> 4795986c8b3dSmrg <doc> 4796986c8b3dSmrg <brief>Draws text</brief> 4797986c8b3dSmrg <description><![CDATA[ 4798986c8b3dSmrgFills the destination rectangle with the background pixel from `gc`, then 4799986c8b3dSmrgpaints the text with the foreground pixel from `gc`. The upper-left corner of 4800986c8b3dSmrgthe filled rectangle is at [x, y - font-ascent]. The width is overall-width, 4801986c8b3dSmrgthe height is font-ascent + font-descent. The overall-width, font-ascent and 4802986c8b3dSmrgfont-descent are as returned by `xcb_query_text_extents` (TODO). 4803986c8b3dSmrg 4804986c8b3dSmrgNote that using X core fonts is deprecated (but still supported) in favor of 4805986c8b3dSmrgclient-side rendering using Xft. 4806986c8b3dSmrg ]]></description> 4807986c8b3dSmrg <field name="drawable"><![CDATA[ 4808986c8b3dSmrgThe drawable (Window or Pixmap) to draw text on. 4809986c8b3dSmrg ]]></field> 4810986c8b3dSmrg <field name="string_len"><![CDATA[ 4811986c8b3dSmrgThe length of the `string` in characters. Note that this parameter limited by 4812986c8b3dSmrg255 due to using 8 bits! 4813986c8b3dSmrg ]]></field> 4814986c8b3dSmrg <field name="string"><![CDATA[ 4815986c8b3dSmrgThe string to draw. Only the first 255 characters are relevant due to the data 4816986c8b3dSmrgtype of `string_len`. Every character uses 2 bytes (hence the 16 in this 4817986c8b3dSmrgrequest's name). 4818986c8b3dSmrg ]]></field> 4819986c8b3dSmrg <field name="x"><![CDATA[ 4820986c8b3dSmrgThe x coordinate of the first character, relative to the origin of `drawable`. 4821986c8b3dSmrg ]]></field> 4822986c8b3dSmrg <field name="y"><![CDATA[ 4823986c8b3dSmrgThe y coordinate of the first character, relative to the origin of `drawable`. 4824986c8b3dSmrg ]]></field> 4825986c8b3dSmrg <field name="gc"><![CDATA[ 4826986c8b3dSmrgThe graphics context to use. 4827986c8b3dSmrg 4828986c8b3dSmrgThe following graphics context components are used: plane-mask, foreground, 4829986c8b3dSmrgbackground, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. 4830986c8b3dSmrg ]]></field> 4831986c8b3dSmrg <error type="Drawable"><![CDATA[ 4832986c8b3dSmrgThe specified `drawable` (Window or Pixmap) does not exist. 4833986c8b3dSmrg ]]></error> 4834f591e195Smrg <error type="GContext"><![CDATA[ 4835986c8b3dSmrgThe specified graphics context does not exist. 4836986c8b3dSmrg ]]></error> 4837986c8b3dSmrg <error type="Match"><![CDATA[ 4838986c8b3dSmrgTODO: reasons? 4839986c8b3dSmrg ]]></error> 4840986c8b3dSmrg <see type="request" name="ImageText8" /> 4841986c8b3dSmrg </doc> 4842d4401354Smrg </request> 4843d4401354Smrg 4844d4401354Smrg <enum name= "ColormapAlloc"> 4845d4401354Smrg <item name="None"><value>0</value></item> 4846d4401354Smrg <item name="All"> <value>1</value></item> 4847d4401354Smrg </enum> 4848d4401354Smrg 4849d4401354Smrg <request name="CreateColormap" opcode="78"> 4850d4401354Smrg <field type="BYTE" name="alloc" enum="ColormapAlloc" /> 4851d4401354Smrg <field type="COLORMAP" name="mid" /> 4852d4401354Smrg <field type="WINDOW" name="window" /> 4853d4401354Smrg <field type="VISUALID" name="visual" /> 4854d4401354Smrg </request> 4855d4401354Smrg 4856d4401354Smrg <request name="FreeColormap" opcode="79"> 4857d4401354Smrg <pad bytes="1" /> 4858d4401354Smrg <field type="COLORMAP" name="cmap" /> 4859d4401354Smrg </request> 4860d4401354Smrg 4861d4401354Smrg <request name="CopyColormapAndFree" opcode="80"> 4862d4401354Smrg <pad bytes="1" /> 4863d4401354Smrg <field type="COLORMAP" name="mid" /> 4864d4401354Smrg <field type="COLORMAP" name="src_cmap" /> 4865d4401354Smrg </request> 4866d4401354Smrg 4867d4401354Smrg <request name="InstallColormap" opcode="81"> 4868d4401354Smrg <pad bytes="1" /> 4869d4401354Smrg <field type="COLORMAP" name="cmap" /> 4870d4401354Smrg </request> 4871d4401354Smrg 4872d4401354Smrg <request name="UninstallColormap" opcode="82"> 4873d4401354Smrg <pad bytes="1" /> 4874d4401354Smrg <field type="COLORMAP" name="cmap" /> 4875d4401354Smrg </request> 4876d4401354Smrg 4877d4401354Smrg <request name="ListInstalledColormaps" opcode="83"> 4878d4401354Smrg <pad bytes="1" /> 4879d4401354Smrg <field type="WINDOW" name="window" /> 4880d4401354Smrg <reply> 4881d4401354Smrg <pad bytes="1" /> 4882d4401354Smrg <field type="CARD16" name="cmaps_len" /> 4883d4401354Smrg <pad bytes="22" /> 4884d4401354Smrg <list type="COLORMAP" name="cmaps"> 4885d4401354Smrg <fieldref>cmaps_len</fieldref> 4886d4401354Smrg </list> 4887d4401354Smrg </reply> 4888d4401354Smrg </request> 4889d4401354Smrg 4890d4401354Smrg <request name="AllocColor" opcode="84"> 4891d4401354Smrg <pad bytes="1" /> 4892d4401354Smrg <field type="COLORMAP" name="cmap" /> 4893d4401354Smrg <field type="CARD16" name="red" /> 4894d4401354Smrg <field type="CARD16" name="green" /> 4895d4401354Smrg <field type="CARD16" name="blue" /> 4896d4401354Smrg <pad bytes="2" /> 4897d4401354Smrg <reply> 4898d4401354Smrg <pad bytes="1" /> 4899d4401354Smrg <field type="CARD16" name="red" /> 4900d4401354Smrg <field type="CARD16" name="green" /> 4901d4401354Smrg <field type="CARD16" name="blue" /> 4902d4401354Smrg <pad bytes="2" /> 4903d4401354Smrg <field type="CARD32" name="pixel" /> 4904d4401354Smrg </reply> 4905986c8b3dSmrg <doc> 4906986c8b3dSmrg <brief>Allocate a color</brief> 4907986c8b3dSmrg <description><![CDATA[ 4908986c8b3dSmrgAllocates a read-only colormap entry corresponding to the closest RGB value 4909986c8b3dSmrgsupported by the hardware. If you are using TrueColor, you can take a shortcut 4910986c8b3dSmrgand directly calculate the color pixel value to avoid the round trip. But, for 4911986c8b3dSmrgexample, on 16-bit color setups (VNC), you can easily get the closest supported 4912986c8b3dSmrgRGB value to the RGB value you are specifying. 4913986c8b3dSmrg ]]></description> 4914986c8b3dSmrg <field name="cmap"><![CDATA[ 4915986c8b3dSmrgTODO 4916986c8b3dSmrg ]]></field> 4917986c8b3dSmrg <field name="red"><![CDATA[ 4918986c8b3dSmrgThe red value of your color. 4919986c8b3dSmrg ]]></field> 4920986c8b3dSmrg <field name="green"><![CDATA[ 4921986c8b3dSmrgThe green value of your color. 4922986c8b3dSmrg ]]></field> 4923986c8b3dSmrg <field name="blue"><![CDATA[ 4924986c8b3dSmrgThe blue value of your color. 4925986c8b3dSmrg ]]></field> 4926986c8b3dSmrg <error type="Colormap"><![CDATA[ 4927986c8b3dSmrgThe specified colormap `cmap` does not exist. 4928986c8b3dSmrg ]]></error> 4929986c8b3dSmrg </doc> 4930d4401354Smrg </request> 4931d4401354Smrg 4932d4401354Smrg <request name="AllocNamedColor" opcode="85"> 4933d4401354Smrg <pad bytes="1" /> 4934d4401354Smrg <field type="COLORMAP" name="cmap" /> 4935d4401354Smrg <field type="CARD16" name="name_len" /> 4936d4401354Smrg <pad bytes="2" /> 4937d4401354Smrg <list type="char" name="name"> 4938d4401354Smrg <fieldref>name_len</fieldref> 4939d4401354Smrg </list> 4940d4401354Smrg <reply> 4941d4401354Smrg <pad bytes="1" /> 4942d4401354Smrg <field type="CARD32" name="pixel" /> 4943d4401354Smrg <field type="CARD16" name="exact_red" /> 4944d4401354Smrg <field type="CARD16" name="exact_green" /> 4945d4401354Smrg <field type="CARD16" name="exact_blue" /> 4946d4401354Smrg <field type="CARD16" name="visual_red" /> 4947d4401354Smrg <field type="CARD16" name="visual_green" /> 4948d4401354Smrg <field type="CARD16" name="visual_blue" /> 4949d4401354Smrg </reply> 4950d4401354Smrg </request> 4951d4401354Smrg 4952d4401354Smrg <request name="AllocColorCells" opcode="86"> 4953d4401354Smrg <field type="BOOL" name="contiguous" /> 4954d4401354Smrg <field type="COLORMAP" name="cmap" /> 4955d4401354Smrg <field type="CARD16" name="colors" /> 4956d4401354Smrg <field type="CARD16" name="planes" /> 4957d4401354Smrg <reply> 4958d4401354Smrg <pad bytes="1" /> 4959d4401354Smrg <field type="CARD16" name="pixels_len" /> 4960d4401354Smrg <field type="CARD16" name="masks_len" /> 4961d4401354Smrg <pad bytes="20" /> 4962d4401354Smrg <list type="CARD32" name="pixels"> 4963d4401354Smrg <fieldref>pixels_len</fieldref> 4964d4401354Smrg </list> 4965d4401354Smrg <list type="CARD32" name="masks"> 4966d4401354Smrg <fieldref>masks_len</fieldref> 4967d4401354Smrg </list> 4968d4401354Smrg </reply> 4969d4401354Smrg </request> 4970d4401354Smrg 4971d4401354Smrg <request name="AllocColorPlanes" opcode="87"> 4972d4401354Smrg <field type="BOOL" name="contiguous" /> 4973d4401354Smrg <field type="COLORMAP" name="cmap" /> 4974d4401354Smrg <field type="CARD16" name="colors" /> 4975d4401354Smrg <field type="CARD16" name="reds" /> 4976d4401354Smrg <field type="CARD16" name="greens" /> 4977d4401354Smrg <field type="CARD16" name="blues" /> 4978d4401354Smrg <reply> 4979d4401354Smrg <pad bytes="1" /> 4980d4401354Smrg <field type="CARD16" name="pixels_len" /> 4981d4401354Smrg <pad bytes="2" /> 4982d4401354Smrg <field type="CARD32" name="red_mask" /> 4983d4401354Smrg <field type="CARD32" name="green_mask" /> 4984d4401354Smrg <field type="CARD32" name="blue_mask" /> 4985d4401354Smrg <pad bytes="8" /> 4986d4401354Smrg <list type="CARD32" name="pixels"> 4987d4401354Smrg <fieldref>pixels_len</fieldref> 4988d4401354Smrg </list> 4989d4401354Smrg </reply> 4990d4401354Smrg </request> 4991d4401354Smrg 4992d4401354Smrg <request name="FreeColors" opcode="88"> 4993d4401354Smrg <pad bytes="1" /> 4994d4401354Smrg <field type="COLORMAP" name="cmap" /> 4995d4401354Smrg <field type="CARD32" name="plane_mask" /> 4996d4401354Smrg <list type="CARD32" name="pixels" /> 4997d4401354Smrg </request> 4998d4401354Smrg 4999d4401354Smrg <enum name="ColorFlag"> 5000d4401354Smrg <item name="Red"> <bit>0</bit></item> 5001d4401354Smrg <item name="Green"><bit>1</bit></item> 5002d4401354Smrg <item name="Blue"> <bit>2</bit></item> 5003d4401354Smrg </enum> 5004d4401354Smrg 5005d4401354Smrg <struct name="COLORITEM"> 5006d4401354Smrg <field type="CARD32" name="pixel" /> 5007d4401354Smrg <field type="CARD16" name="red" /> 5008d4401354Smrg <field type="CARD16" name="green" /> 5009d4401354Smrg <field type="CARD16" name="blue" /> 5010d4401354Smrg <field type="BYTE" name="flags" mask="ColorFlag" /> 5011d4401354Smrg <pad bytes="1" /> 5012d4401354Smrg </struct> 5013d4401354Smrg 5014d4401354Smrg <request name="StoreColors" opcode="89" combine-adjacent="true"> 5015d4401354Smrg <pad bytes="1" /> 5016d4401354Smrg <field type="COLORMAP" name="cmap" /> 5017d4401354Smrg <list type="COLORITEM" name="items" /> 5018d4401354Smrg </request> 5019d4401354Smrg 5020d4401354Smrg <request name="StoreNamedColor" opcode="90"> 5021d4401354Smrg <field type="CARD8" name="flags" mask="ColorFlag" /> 5022d4401354Smrg <field type="COLORMAP" name="cmap" /> 5023d4401354Smrg <field type="CARD32" name="pixel" /> 5024d4401354Smrg <field type="CARD16" name="name_len" /> 5025d4401354Smrg <pad bytes="2" /> 5026d4401354Smrg <list type="char" name="name"> 5027d4401354Smrg <fieldref>name_len</fieldref> 5028d4401354Smrg </list> 5029d4401354Smrg </request> 5030d4401354Smrg 5031d4401354Smrg <struct name="RGB"> 5032d4401354Smrg <field type="CARD16" name="red" /> 5033d4401354Smrg <field type="CARD16" name="green" /> 5034d4401354Smrg <field type="CARD16" name="blue" /> 5035d4401354Smrg <pad bytes="2" /> 5036d4401354Smrg </struct> 5037d4401354Smrg 5038d4401354Smrg <request name="QueryColors" opcode="91"> 5039d4401354Smrg <pad bytes="1" /> 5040d4401354Smrg <field type="COLORMAP" name="cmap" /> 5041d4401354Smrg <list type="CARD32" name="pixels" /> 5042d4401354Smrg <reply> 5043d4401354Smrg <pad bytes="1" /> 5044d4401354Smrg <field type="CARD16" name="colors_len" /> 5045d4401354Smrg <pad bytes="22" /> 5046d4401354Smrg <list type="RGB" name="colors"> 5047d4401354Smrg <fieldref>colors_len</fieldref> 5048d4401354Smrg </list> 5049d4401354Smrg </reply> 5050d4401354Smrg </request> 5051d4401354Smrg 5052d4401354Smrg <request name="LookupColor" opcode="92"> 5053d4401354Smrg <pad bytes="1" /> 5054d4401354Smrg <field type="COLORMAP" name="cmap" /> 5055d4401354Smrg <field type="CARD16" name="name_len" /> 5056d4401354Smrg <pad bytes="2" /> 5057d4401354Smrg <list type="char" name="name"> 5058d4401354Smrg <fieldref>name_len</fieldref> 5059d4401354Smrg </list> 5060d4401354Smrg <reply> 5061d4401354Smrg <pad bytes="1" /> 5062d4401354Smrg <field type="CARD16" name="exact_red" /> 5063d4401354Smrg <field type="CARD16" name="exact_green" /> 5064d4401354Smrg <field type="CARD16" name="exact_blue" /> 5065d4401354Smrg <field type="CARD16" name="visual_red" /> 5066d4401354Smrg <field type="CARD16" name="visual_green" /> 5067d4401354Smrg <field type="CARD16" name="visual_blue" /> 5068d4401354Smrg </reply> 5069d4401354Smrg </request> 5070d4401354Smrg 5071d4401354Smrg <enum name="Pixmap"> 5072d4401354Smrg <item name="None"> <value>0</value></item> 5073d4401354Smrg </enum> 5074d4401354Smrg 5075d4401354Smrg <request name="CreateCursor" opcode="93"> 5076d4401354Smrg <pad bytes="1" /> 5077d4401354Smrg <field type="CURSOR" name="cid" /> 5078d4401354Smrg <field type="PIXMAP" name="source" /> 5079d4401354Smrg <field type="PIXMAP" name="mask" altenum="Pixmap" /> 5080d4401354Smrg <field type="CARD16" name="fore_red" /> 5081d4401354Smrg <field type="CARD16" name="fore_green" /> 5082d4401354Smrg <field type="CARD16" name="fore_blue" /> 5083d4401354Smrg <field type="CARD16" name="back_red" /> 5084d4401354Smrg <field type="CARD16" name="back_green" /> 5085d4401354Smrg <field type="CARD16" name="back_blue" /> 5086d4401354Smrg <field type="CARD16" name="x" /> 5087d4401354Smrg <field type="CARD16" name="y" /> 5088d4401354Smrg </request> 5089d4401354Smrg 5090d4401354Smrg <enum name="Font"> 5091d4401354Smrg <item name="None"> <value>0</value></item> 5092d4401354Smrg </enum> 5093d4401354Smrg 5094d4401354Smrg <request name="CreateGlyphCursor" opcode="94"> 5095d4401354Smrg <pad bytes="1" /> 5096d4401354Smrg <field type="CURSOR" name="cid" /> 5097d4401354Smrg <field type="FONT" name="source_font" /> 5098d4401354Smrg <field type="FONT" name="mask_font" altenum="Font" /> 5099d4401354Smrg <field type="CARD16" name="source_char" /> 5100d4401354Smrg <field type="CARD16" name="mask_char" /> 5101d4401354Smrg <field type="CARD16" name="fore_red" /> 5102d4401354Smrg <field type="CARD16" name="fore_green" /> 5103d4401354Smrg <field type="CARD16" name="fore_blue" /> 5104d4401354Smrg <field type="CARD16" name="back_red" /> 5105d4401354Smrg <field type="CARD16" name="back_green" /> 5106d4401354Smrg <field type="CARD16" name="back_blue" /> 5107986c8b3dSmrg <doc> 5108986c8b3dSmrg <brief>create cursor</brief> 5109986c8b3dSmrg <description><![CDATA[ 5110986c8b3dSmrgCreates a cursor from a font glyph. X provides a set of standard cursor shapes 5111986c8b3dSmrgin a special font named cursor. Applications are encouraged to use this 5112986c8b3dSmrginterface for their cursors because the font can be customized for the 5113986c8b3dSmrgindividual display type. 5114986c8b3dSmrg 5115986c8b3dSmrgAll pixels which are set to 1 in the source will use the foreground color (as 5116986c8b3dSmrgspecified by `fore_red`, `fore_green` and `fore_blue`). All pixels set to 0 5117986c8b3dSmrgwill use the background color (as specified by `back_red`, `back_green` and 5118986c8b3dSmrg`back_blue`). 5119986c8b3dSmrg ]]></description> 5120986c8b3dSmrg <field name="cid"><![CDATA[ 5121986c8b3dSmrgThe ID with which you will refer to the cursor, created by `xcb_generate_id`. 5122986c8b3dSmrg ]]></field> 5123986c8b3dSmrg <field name="source_font"><![CDATA[ 5124986c8b3dSmrgIn which font to look for the cursor glyph. 5125986c8b3dSmrg ]]></field> 5126986c8b3dSmrg <field name="mask_font"><![CDATA[ 5127986c8b3dSmrgIn which font to look for the mask glyph. 5128986c8b3dSmrg ]]></field> 5129986c8b3dSmrg <field name="source_char"><![CDATA[ 5130986c8b3dSmrgThe glyph of `source_font` to use. 5131986c8b3dSmrg ]]></field> 5132986c8b3dSmrg <field name="mask_char"><![CDATA[ 5133986c8b3dSmrgThe glyph of `mask_font` to use as a mask: Pixels which are set to 1 define 5134986c8b3dSmrgwhich source pixels are displayed. All pixels which are set to 0 are not 5135986c8b3dSmrgdisplayed. 5136986c8b3dSmrg ]]></field> 5137986c8b3dSmrg <field name="fore_red"><![CDATA[ 5138986c8b3dSmrgThe red value of the foreground color. 5139986c8b3dSmrg ]]></field> 5140986c8b3dSmrg <field name="fore_green"><![CDATA[ 5141986c8b3dSmrgThe green value of the foreground color. 5142986c8b3dSmrg ]]></field> 5143986c8b3dSmrg <field name="fore_blue"><![CDATA[ 5144986c8b3dSmrgThe blue value of the foreground color. 5145986c8b3dSmrg ]]></field> 5146986c8b3dSmrg <field name="back_red"><![CDATA[ 5147986c8b3dSmrgThe red value of the background color. 5148986c8b3dSmrg ]]></field> 5149986c8b3dSmrg <field name="back_green"><![CDATA[ 5150986c8b3dSmrgThe green value of the background color. 5151986c8b3dSmrg ]]></field> 5152986c8b3dSmrg <field name="back_blue"><![CDATA[ 5153986c8b3dSmrgThe blue value of the background color. 5154986c8b3dSmrg ]]></field> 5155986c8b3dSmrg <error type="Alloc"><![CDATA[ 5156986c8b3dSmrgThe X server could not allocate the requested resources (no memory?). 5157986c8b3dSmrg ]]></error> 5158986c8b3dSmrg <error type="Font"><![CDATA[ 5159986c8b3dSmrgThe specified `source_font` or `mask_font` does not exist. 5160986c8b3dSmrg ]]></error> 5161986c8b3dSmrg <error type="Value"><![CDATA[ 5162986c8b3dSmrgEither `source_char` or `mask_char` are not defined in `source_font` or `mask_font`, respectively. 5163986c8b3dSmrg ]]></error> 5164986c8b3dSmrg <!-- TODO: example --> 5165986c8b3dSmrg </doc> 5166d4401354Smrg </request> 5167d4401354Smrg 5168d4401354Smrg <request name="FreeCursor" opcode="95"> 5169d4401354Smrg <pad bytes="1" /> 5170d4401354Smrg <field type="CURSOR" name="cursor" /> 5171986c8b3dSmrg <doc> 5172986c8b3dSmrg <brief>Deletes a cursor</brief> 5173986c8b3dSmrg <description><![CDATA[ 5174986c8b3dSmrgDeletes the association between the cursor resource ID and the specified 5175986c8b3dSmrgcursor. The cursor is freed when no other resource references it. 5176986c8b3dSmrg ]]></description> 5177986c8b3dSmrg <field name="cursor"><![CDATA[The cursor to destroy.]]></field> 5178986c8b3dSmrg <error type="Cursor"><![CDATA[ 5179986c8b3dSmrgThe specified cursor does not exist. 5180986c8b3dSmrg ]]></error> 5181986c8b3dSmrg </doc> 5182986c8b3dSmrg 5183d4401354Smrg </request> 5184d4401354Smrg 5185d4401354Smrg <request name="RecolorCursor" opcode="96"> 5186d4401354Smrg <pad bytes="1" /> 5187d4401354Smrg <field type="CURSOR" name="cursor" /> 5188d4401354Smrg <field type="CARD16" name="fore_red" /> 5189d4401354Smrg <field type="CARD16" name="fore_green" /> 5190d4401354Smrg <field type="CARD16" name="fore_blue" /> 5191d4401354Smrg <field type="CARD16" name="back_red" /> 5192d4401354Smrg <field type="CARD16" name="back_green" /> 5193d4401354Smrg <field type="CARD16" name="back_blue" /> 5194d4401354Smrg </request> 5195d4401354Smrg 5196d4401354Smrg <enum name="QueryShapeOf"> 5197d4401354Smrg <item name="LargestCursor"> <value>0</value></item> 5198d4401354Smrg <item name="FastestTile"> <value>1</value></item> 5199d4401354Smrg <item name="FastestStipple"><value>2</value></item> 5200d4401354Smrg </enum> 5201d4401354Smrg 5202d4401354Smrg <request name="QueryBestSize" opcode="97"> 5203d4401354Smrg <field type="CARD8" name="class" enum="QueryShapeOf" /> 5204d4401354Smrg <field type="DRAWABLE" name="drawable" /> 5205d4401354Smrg <field type="CARD16" name="width" /> 5206d4401354Smrg <field type="CARD16" name="height" /> 5207d4401354Smrg <reply> 5208d4401354Smrg <pad bytes="1" /> 5209d4401354Smrg <field type="CARD16" name="width" /> 5210d4401354Smrg <field type="CARD16" name="height" /> 5211d4401354Smrg </reply> 5212d4401354Smrg </request> 5213d4401354Smrg 5214d4401354Smrg <request name="QueryExtension" opcode="98"> 5215d4401354Smrg <pad bytes="1" /> 5216d4401354Smrg <field type="CARD16" name="name_len" /> 5217d4401354Smrg <pad bytes="2" /> 5218d4401354Smrg <list type="char" name="name"> 5219d4401354Smrg <fieldref>name_len</fieldref> 5220d4401354Smrg </list> 5221d4401354Smrg <reply> 5222d4401354Smrg <pad bytes="1" /> 5223d4401354Smrg <field type="BOOL" name="present" /> 5224d4401354Smrg <field type="CARD8" name="major_opcode" /> 5225d4401354Smrg <field type="CARD8" name="first_event" /> 5226d4401354Smrg <field type="CARD8" name="first_error" /> 5227986c8b3dSmrg <doc> 5228986c8b3dSmrg <field name="present"><![CDATA[ 5229986c8b3dSmrgWhether the extension is present on this X11 server. 5230986c8b3dSmrg ]]></field> 5231986c8b3dSmrg <field name="major_opcode"><![CDATA[ 5232986c8b3dSmrgThe major opcode for requests. 5233986c8b3dSmrg ]]></field> 5234986c8b3dSmrg <field name="first_event"><![CDATA[ 5235986c8b3dSmrgThe first event code, if any. 5236986c8b3dSmrg ]]></field> 5237986c8b3dSmrg <field name="first_error"><![CDATA[ 5238986c8b3dSmrgThe first error code, if any. 5239986c8b3dSmrg ]]></field> 5240986c8b3dSmrg </doc> 5241d4401354Smrg </reply> 5242986c8b3dSmrg <doc> 5243986c8b3dSmrg <brief>check if extension is present</brief> 5244986c8b3dSmrg <description><![CDATA[ 5245986c8b3dSmrgDetermines if the specified extension is present on this X11 server. 5246986c8b3dSmrg 5247986c8b3dSmrgEvery extension has a unique `major_opcode` to identify requests, the minor 5248986c8b3dSmrgopcodes and request formats are extension-specific. If the extension provides 5249986c8b3dSmrgevents and errors, the `first_event` and `first_error` fields in the reply are 5250986c8b3dSmrgset accordingly. 5251986c8b3dSmrg 5252986c8b3dSmrgThere should rarely be a need to use this request directly, XCB provides the 5253986c8b3dSmrg`xcb_get_extension_data` function instead. 5254986c8b3dSmrg ]]></description> 5255986c8b3dSmrg <field name="name_len"><![CDATA[ 5256986c8b3dSmrgThe length of `name` in bytes. 5257986c8b3dSmrg ]]></field> 5258986c8b3dSmrg <field name="name"><![CDATA[ 5259986c8b3dSmrgThe name of the extension to query, for example "RANDR". This is case 5260986c8b3dSmrgsensitive! 5261986c8b3dSmrg ]]></field> 5262986c8b3dSmrg <see type="program" name="xdpyinfo" /> 5263986c8b3dSmrg <see type="function" name="xcb_get_extension_data" /> 5264986c8b3dSmrg </doc> 5265d4401354Smrg </request> 5266d4401354Smrg 5267d4401354Smrg <request name="ListExtensions" opcode="99"> 5268d4401354Smrg <reply> 5269d4401354Smrg <field type="CARD8" name="names_len" /> 5270d4401354Smrg <pad bytes="24" /> 5271d4401354Smrg <list type="STR" name="names"> 5272d4401354Smrg <fieldref>names_len</fieldref> 5273d4401354Smrg </list> 5274d4401354Smrg </reply> 5275d4401354Smrg </request> 5276d4401354Smrg 5277d4401354Smrg <request name="ChangeKeyboardMapping" opcode="100"> 5278d4401354Smrg <field type="CARD8" name="keycode_count" /> 5279d4401354Smrg <field type="KEYCODE" name="first_keycode" /> 5280d4401354Smrg <field type="CARD8" name="keysyms_per_keycode" /> 5281986c8b3dSmrg <pad bytes="2" /> 5282d4401354Smrg <list type="KEYSYM" name="keysyms"> 5283d4401354Smrg <op op="*"> 5284d4401354Smrg <fieldref>keycode_count</fieldref> 5285d4401354Smrg <fieldref>keysyms_per_keycode</fieldref> 5286d4401354Smrg </op> 5287d4401354Smrg </list> 5288d4401354Smrg </request> 5289d4401354Smrg 5290d4401354Smrg <request name="GetKeyboardMapping" opcode="101"> 5291d4401354Smrg <pad bytes="1" /> 5292d4401354Smrg <field type="KEYCODE" name="first_keycode" /> 5293d4401354Smrg <field type="CARD8" name="count" /> 5294d4401354Smrg <reply> 5295d4401354Smrg <field type="BYTE" name="keysyms_per_keycode" /> 5296d4401354Smrg <pad bytes="24" /> 5297d4401354Smrg <list type="KEYSYM" name="keysyms"> 5298d4401354Smrg <fieldref>length</fieldref> 5299d4401354Smrg </list> 5300d4401354Smrg </reply> 5301d4401354Smrg </request> 5302d4401354Smrg 5303d4401354Smrg <enum name="KB"> 5304d4401354Smrg <item name="KeyClickPercent"><bit>0</bit></item> 5305d4401354Smrg <item name="BellPercent"> <bit>1</bit></item> 5306d4401354Smrg <item name="BellPitch"> <bit>2</bit></item> 5307d4401354Smrg <item name="BellDuration"> <bit>3</bit></item> 5308d4401354Smrg <item name="Led"> <bit>4</bit></item> 5309d4401354Smrg <item name="LedMode"> <bit>5</bit></item> 5310d4401354Smrg <item name="Key"> <bit>6</bit></item> 5311d4401354Smrg <item name="AutoRepeatMode"> <bit>7</bit></item> 5312d4401354Smrg </enum> 5313d4401354Smrg 5314d4401354Smrg <enum name="LedMode"> 5315d4401354Smrg <item name="Off"><value>0</value></item> 5316d4401354Smrg <item name="On"> <value>1</value></item> 5317d4401354Smrg </enum> 5318d4401354Smrg 5319d4401354Smrg <enum name="AutoRepeatMode"> 5320d4401354Smrg <item name="Off"> <value>0</value></item> 5321d4401354Smrg <item name="On"> <value>1</value></item> 5322d4401354Smrg <item name="Default"><value>2</value></item> 5323d4401354Smrg </enum> 5324d4401354Smrg 5325d4401354Smrg <request name="ChangeKeyboardControl" opcode="102"> 5326d4401354Smrg <pad bytes="1" /> 5327891601f5Smrg <field type="CARD32" name="value_mask" mask="KB" /> 5328891601f5Smrg <switch name="value_list"> 5329891601f5Smrg <fieldref>value_mask</fieldref> 5330891601f5Smrg <bitcase> 5331891601f5Smrg <enumref ref="KB">KeyClickPercent</enumref> 5332891601f5Smrg <field type="INT32" name="key_click_percent" /> 5333891601f5Smrg </bitcase> 5334891601f5Smrg <bitcase> 5335891601f5Smrg <enumref ref="KB">BellPercent</enumref> 5336891601f5Smrg <field type="INT32" name="bell_percent" /> 5337891601f5Smrg </bitcase> 5338891601f5Smrg <bitcase> 5339891601f5Smrg <enumref ref="KB">BellPitch</enumref> 5340891601f5Smrg <field type="INT32" name="bell_pitch" /> 5341891601f5Smrg </bitcase> 5342891601f5Smrg <bitcase> 5343891601f5Smrg <enumref ref="KB">BellDuration</enumref> 5344891601f5Smrg <field type="INT32" name="bell_duration" /> 5345891601f5Smrg </bitcase> 5346891601f5Smrg <bitcase> 5347891601f5Smrg <enumref ref="KB">Led</enumref> 5348891601f5Smrg <field type="CARD32" name="led" /> 5349891601f5Smrg </bitcase> 5350891601f5Smrg <bitcase> 5351891601f5Smrg <enumref ref="KB">LedMode</enumref> 5352891601f5Smrg <field type="CARD32" name="led_mode" enum="LedMode"/> 5353891601f5Smrg </bitcase> 5354891601f5Smrg <bitcase> 5355891601f5Smrg <enumref ref="KB">Key</enumref> 5356891601f5Smrg <field type="KEYCODE32" name="key" /> 5357891601f5Smrg </bitcase> 5358891601f5Smrg <bitcase> 5359891601f5Smrg <enumref ref="KB">AutoRepeatMode</enumref> 5360891601f5Smrg <field type="CARD32" name="auto_repeat_mode" enum="AutoRepeatMode"/> 5361891601f5Smrg </bitcase> 5362891601f5Smrg </switch> 5363891601f5Smrg 5364d4401354Smrg </request> 5365d4401354Smrg 5366d4401354Smrg <request name="GetKeyboardControl" opcode="103"> 5367d4401354Smrg <reply> 5368d4401354Smrg <field type="BYTE" name="global_auto_repeat" enum="AutoRepeatMode" /> 5369d4401354Smrg <field type="CARD32" name="led_mask" /> 5370d4401354Smrg <field type="CARD8" name="key_click_percent" /> 5371d4401354Smrg <field type="CARD8" name="bell_percent" /> 5372d4401354Smrg <field type="CARD16" name="bell_pitch" /> 5373d4401354Smrg <field type="CARD16" name="bell_duration" /> 5374d4401354Smrg <pad bytes="2" /> 5375d4401354Smrg <list type="CARD8" name="auto_repeats"><value>32</value></list> 5376d4401354Smrg </reply> 5377d4401354Smrg </request> 5378d4401354Smrg 5379d4401354Smrg <request name="Bell" opcode="104"> 5380d4401354Smrg <field type="INT8" name="percent" /> 5381d4401354Smrg </request> 5382d4401354Smrg 5383d4401354Smrg <request name="ChangePointerControl" opcode="105"> 5384d4401354Smrg <pad bytes="1" /> 5385d4401354Smrg <field type="INT16" name="acceleration_numerator" /> 5386d4401354Smrg <field type="INT16" name="acceleration_denominator" /> 5387d4401354Smrg <field type="INT16" name="threshold" /> 5388d4401354Smrg <field type="BOOL" name="do_acceleration" /> 5389d4401354Smrg <field type="BOOL" name="do_threshold" /> 5390d4401354Smrg </request> 5391d4401354Smrg 5392d4401354Smrg <request name="GetPointerControl" opcode="106"> 5393d4401354Smrg <reply> 5394d4401354Smrg <pad bytes="1" /> 5395d4401354Smrg <field type="CARD16" name="acceleration_numerator" /> 5396d4401354Smrg <field type="CARD16" name="acceleration_denominator" /> 5397d4401354Smrg <field type="CARD16" name="threshold" /> 5398d4401354Smrg <pad bytes="18" /> 5399d4401354Smrg </reply> 5400d4401354Smrg </request> 5401d4401354Smrg 5402d4401354Smrg <!-- Screen saver timeout and interval can be set to -1 to restore defaults 5403d4401354Smrg and set to 0 to disable the screen saver. --> 5404d4401354Smrg 5405d4401354Smrg <enum name="Blanking"> 5406d4401354Smrg <item name="NotPreferred"><value>0</value></item> 5407d4401354Smrg <item name="Preferred"> <value>1</value></item> 5408d4401354Smrg <item name="Default"> <value>2</value></item> 5409d4401354Smrg </enum> 5410d4401354Smrg 5411d4401354Smrg <enum name="Exposures"> 5412d4401354Smrg <item name="NotAllowed"><value>0</value></item> 5413d4401354Smrg <item name="Allowed"> <value>1</value></item> 5414d4401354Smrg <item name="Default"> <value>2</value></item> 5415d4401354Smrg </enum> 5416d4401354Smrg 5417d4401354Smrg <request name="SetScreenSaver" opcode="107"> 5418d4401354Smrg <pad bytes="1" /> 5419d4401354Smrg <field type="INT16" name="timeout" /> 5420d4401354Smrg <field type="INT16" name="interval" /> 5421d4401354Smrg <field type="CARD8" name="prefer_blanking" enum="Blanking" /> 5422d4401354Smrg <field type="CARD8" name="allow_exposures" enum="Exposures" /> 5423d4401354Smrg </request> 5424d4401354Smrg 5425d4401354Smrg <request name="GetScreenSaver" opcode="108"> 5426d4401354Smrg <reply> 5427d4401354Smrg <pad bytes="1" /> 5428d4401354Smrg <field type="CARD16" name="timeout" /> 5429d4401354Smrg <field type="CARD16" name="interval" /> 5430d4401354Smrg <field type="BYTE" name="prefer_blanking" enum="Blanking" /> 5431d4401354Smrg <field type="BYTE" name="allow_exposures" enum="Exposures" /> 5432d4401354Smrg <pad bytes="18" /> 5433d4401354Smrg </reply> 5434d4401354Smrg </request> 5435d4401354Smrg 5436d4401354Smrg <enum name="HostMode"> 5437d4401354Smrg <item name="Insert"><value>0</value></item> 5438d4401354Smrg <item name="Delete"><value>1</value></item> 5439d4401354Smrg </enum> 5440d4401354Smrg 5441d4401354Smrg <!-- also used and extended for Xau authentication --> 5442d4401354Smrg <enum name="Family"> 5443d4401354Smrg <item name="Internet"> <value>0</value></item> 5444d4401354Smrg <item name="DECnet"> <value>1</value></item> 5445d4401354Smrg <item name="Chaos"> <value>2</value></item> 5446d4401354Smrg <item name="ServerInterpreted"><value>5</value></item> 5447d4401354Smrg <item name="Internet6"> <value>6</value></item> 5448d4401354Smrg </enum> 5449d4401354Smrg 5450d4401354Smrg <request name="ChangeHosts" opcode="109"> 5451d4401354Smrg <field type="CARD8" name="mode" enum="HostMode" /> 5452d4401354Smrg <field type="CARD8" name="family" enum="Family" /> 5453d4401354Smrg <pad bytes="1" /> 5454d4401354Smrg <field type="CARD16" name="address_len" /> 5455986c8b3dSmrg <list type="BYTE" name="address"> 5456d4401354Smrg <fieldref>address_len</fieldref> 5457d4401354Smrg </list> 5458d4401354Smrg </request> 5459d4401354Smrg 5460d4401354Smrg <struct name="HOST"> 5461d4401354Smrg <field type="CARD8" name="family" enum="Family" /> 5462d4401354Smrg <pad bytes="1" /> 5463d4401354Smrg <field type="CARD16" name="address_len" /> 5464d4401354Smrg <list type="BYTE" name="address"> 5465d4401354Smrg <fieldref>address_len</fieldref> 5466d4401354Smrg </list> 5467891601f5Smrg <pad align="4" /> 5468d4401354Smrg </struct> 5469d4401354Smrg 5470d4401354Smrg <request name="ListHosts" opcode="110"> 5471d4401354Smrg <reply> 5472d4401354Smrg <field type="BYTE" name="mode" enum="AccessControl" /> 5473d4401354Smrg <field type="CARD16" name="hosts_len" /> 5474d4401354Smrg <pad bytes="22" /> 5475d4401354Smrg <list type="HOST" name="hosts"> 5476d4401354Smrg <fieldref>hosts_len</fieldref> 5477d4401354Smrg </list> 5478d4401354Smrg </reply> 5479d4401354Smrg </request> 5480d4401354Smrg 5481d4401354Smrg <enum name="AccessControl"> 5482d4401354Smrg <item name="Disable"><value>0</value></item> 5483d4401354Smrg <item name="Enable"> <value>1</value></item> 5484d4401354Smrg </enum> 5485d4401354Smrg 5486d4401354Smrg <request name="SetAccessControl" opcode="111"> 5487d4401354Smrg <field type="CARD8" name="mode" enum="AccessControl" /> 5488d4401354Smrg </request> 5489d4401354Smrg 5490d4401354Smrg <enum name="CloseDown"> 5491d4401354Smrg <item name="DestroyAll"> <value>0</value></item> 5492d4401354Smrg <item name="RetainPermanent"><value>1</value></item> 5493d4401354Smrg <item name="RetainTemporary"><value>2</value></item> 5494d4401354Smrg </enum> 5495d4401354Smrg 5496d4401354Smrg <request name="SetCloseDownMode" opcode="112"> 5497d4401354Smrg <field type="CARD8" name="mode" enum="CloseDown" /> 5498d4401354Smrg </request> 5499d4401354Smrg 5500d4401354Smrg <enum name="Kill"> 5501d4401354Smrg <item name="AllTemporary"><value>0</value></item> 5502d4401354Smrg </enum> 5503d4401354Smrg 5504d4401354Smrg <request name="KillClient" opcode="113"> 5505d4401354Smrg <pad bytes="1" /> 5506d4401354Smrg <field type="CARD32" name="resource" altenum="Kill" /> 5507986c8b3dSmrg <doc> 5508986c8b3dSmrg <brief>kills a client</brief> 5509986c8b3dSmrg <description><![CDATA[ 5510986c8b3dSmrgForces a close down of the client that created the specified `resource`. 5511986c8b3dSmrg ]]></description> 5512986c8b3dSmrg <field name="resource"><![CDATA[ 5513986c8b3dSmrgAny resource belonging to the client (for example a Window), used to identify 5514986c8b3dSmrgthe client connection. 5515986c8b3dSmrg 5516986c8b3dSmrgThe special value of `XCB_KILL_ALL_TEMPORARY`, the resources of all clients 5517986c8b3dSmrgthat have terminated in `RetainTemporary` (TODO) are destroyed. 5518986c8b3dSmrg ]]></field> 5519986c8b3dSmrg <error type="Value"><![CDATA[ 5520986c8b3dSmrgThe specified `resource` does not exist. 5521986c8b3dSmrg ]]></error> 5522986c8b3dSmrg <see type="program" name="xkill" /> 5523986c8b3dSmrg </doc> 5524986c8b3dSmrg 5525d4401354Smrg </request> 5526d4401354Smrg 5527d4401354Smrg <request name="RotateProperties" opcode="114"> 5528d4401354Smrg <pad bytes="1" /> 5529d4401354Smrg <field type="WINDOW" name="window" /> 5530d4401354Smrg <field type="CARD16" name="atoms_len" /> 5531d4401354Smrg <field type="INT16" name="delta" /> 5532d4401354Smrg <list type="ATOM" name="atoms"> 5533d4401354Smrg <fieldref>atoms_len</fieldref> 5534d4401354Smrg </list> 5535d4401354Smrg </request> 5536d4401354Smrg 5537d4401354Smrg <enum name="ScreenSaver"> 5538d4401354Smrg <item name="Reset"> <value>0</value></item> 5539d4401354Smrg <item name="Active"><value>1</value></item> 5540d4401354Smrg </enum> 5541d4401354Smrg 5542d4401354Smrg <request name="ForceScreenSaver" opcode="115"> 5543d4401354Smrg <field type="CARD8" name="mode" enum="ScreenSaver" /> 5544d4401354Smrg </request> 5545d4401354Smrg 5546d4401354Smrg <!-- Reply from SetPointerMapping or SetModifierMapping --> 5547d4401354Smrg <enum name="MappingStatus"> 5548d4401354Smrg <item name="Success"><value>0</value></item> 5549d4401354Smrg <item name="Busy"> <value>1</value></item> 5550d4401354Smrg <item name="Failure"><value>2</value></item> 5551d4401354Smrg </enum> 5552d4401354Smrg 5553d4401354Smrg <request name="SetPointerMapping" opcode="116"> 5554d4401354Smrg <field type="CARD8" name="map_len" /> 5555d4401354Smrg <list type="CARD8" name="map"> 5556d4401354Smrg <fieldref>map_len</fieldref> 5557d4401354Smrg </list> 5558d4401354Smrg <reply> 5559d4401354Smrg <field type="BYTE" name="status" enum="MappingStatus" /> 5560d4401354Smrg </reply> 5561d4401354Smrg </request> 5562d4401354Smrg 5563d4401354Smrg <request name="GetPointerMapping" opcode="117"> 5564d4401354Smrg <reply> 5565d4401354Smrg <field type="CARD8" name="map_len" /> 5566d4401354Smrg <pad bytes="24" /> 5567d4401354Smrg <list type="CARD8" name="map"> 5568d4401354Smrg <fieldref>map_len</fieldref> 5569d4401354Smrg </list> 5570d4401354Smrg </reply> 5571d4401354Smrg </request> 5572d4401354Smrg 5573d4401354Smrg <enum name="MapIndex"> 5574d4401354Smrg <item name="Shift"> <value>0</value></item> 5575d4401354Smrg <item name="Lock"> <value>1</value></item> 5576d4401354Smrg <item name="Control"><value>2</value></item> 5577d4401354Smrg <item name="1"> <value>3</value></item> 5578d4401354Smrg <item name="2"> <value>4</value></item> 5579d4401354Smrg <item name="3"> <value>5</value></item> 5580d4401354Smrg <item name="4"> <value>6</value></item> 5581d4401354Smrg <item name="5"> <value>7</value></item> 5582d4401354Smrg </enum> 5583d4401354Smrg 5584d4401354Smrg <request name="SetModifierMapping" opcode="118"> 5585d4401354Smrg <field type="CARD8" name="keycodes_per_modifier" /> 5586d4401354Smrg <list type="KEYCODE" name="keycodes"> 5587d4401354Smrg <op op="*"> 5588d4401354Smrg <fieldref>keycodes_per_modifier</fieldref> 5589d4401354Smrg <value>8</value> 5590d4401354Smrg </op> 5591d4401354Smrg </list> 5592d4401354Smrg <reply> 5593d4401354Smrg <field type="BYTE" name="status" enum="MappingStatus" /> 5594d4401354Smrg </reply> 5595d4401354Smrg </request> 5596d4401354Smrg 5597d4401354Smrg <request name="GetModifierMapping" opcode="119"> 5598d4401354Smrg <reply> 5599d4401354Smrg <field type="CARD8" name="keycodes_per_modifier" /> 5600d4401354Smrg <pad bytes="24" /> 5601d4401354Smrg <list type="KEYCODE" name="keycodes"> 5602d4401354Smrg <op op="*"> 5603d4401354Smrg <fieldref>keycodes_per_modifier</fieldref> 5604d4401354Smrg <value>8</value> 5605d4401354Smrg </op> 5606d4401354Smrg </list> 5607d4401354Smrg </reply> 5608d4401354Smrg </request> 5609d4401354Smrg 5610d4401354Smrg <!-- 5611d4401354Smrg FIXME: NoOperation should allow specifying payload length 5612d4401354Smrg but geez, malloc()ing a 262140 byte buffer just so I have something 5613d4401354Smrg to hand to write(2) seems silly...! 5614d4401354Smrg --> 5615d4401354Smrg <request name="NoOperation" opcode="127" /> 5616d4401354Smrg 5617d4401354Smrg</xcb> 5618