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="&amp;"><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