Add DRI3
[free-sw/xcb/proto] / src / xkb.xml
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!--
3 Copyright (C) 2009 Open Text Corporation.  All Rights Reserved.
4
5 Permission is hereby granted, free of charge, to any person obtaining a copy
6 of this software and associated documentation files (the "Software"), to deal
7 in the Software without restriction, including without limitation the rights
8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 copies of the Software, and to permit persons to whom the Software is
10 furnished to do so, subject to the following conditions:
11
12 The above copyright notice and this permission notice shall be included in all
13 copies or substantial portions of the Software.
14
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22 Except as contained in this notice, the names of the authors or their
23 institutions shall not be used in advertising or otherwise to promote the
24 sale, use or other dealings in this Software without prior written
25 authorization from the authors.
26 -->
27 <xcb header="xkb" extension-xname="XKEYBOARD" extension-name="xkb"
28         major-version="1" minor-version="0">
29
30         <import>xproto</import>
31
32         <!-- Common Types -->
33         <enum name="Const">
34                 <item name="MaxLegalKeyCode"> <value>255</value> </item>
35                 <item name="PerKeyBitArraySize">
36                         <value>32</value>
37                 </item>
38                 <item name="KeyNameLength">
39                         <value>4</value>
40                 </item>
41         </enum>
42
43         <enum name="EventType">
44                 <item name="NewKeyboardNotify">      <bit>0</bit> </item>
45                 <item name="MapNotify">              <bit>1</bit> </item>
46                 <item name="StateNotify">            <bit>2</bit> </item>
47                 <item name="ControlsNotify">         <bit>3</bit> </item>
48                 <item name="IndicatorStateNotify">   <bit>4</bit> </item>
49                 <item name="IndicatorMapNotify">     <bit>5</bit> </item>
50                 <item name="NamesNotify">            <bit>6</bit> </item>
51                 <item name="CompatMapNotify">        <bit>7</bit> </item>
52                 <item name="BellNotify">             <bit>8</bit> </item>
53                 <item name="ActionMessage">          <bit>9</bit> </item>
54                 <item name="AccessXNotify">          <bit>10</bit> </item>
55                 <item name="ExtensionDeviceNotify">  <bit>11</bit> </item>
56         </enum>
57
58         <enum name="NKNDetail">
59                 <item name="Keycodes"> <bit>0</bit> </item>
60                 <item name="Geometry"> <bit>1</bit> </item>
61                 <item name="DeviceID"> <bit>2</bit> </item>
62         </enum>
63
64         <enum name="AXNDetail">
65                 <item name="SKPress">      <bit>0</bit> </item>
66                 <item name="SKAccept">     <bit>1</bit> </item>
67                 <item name="SKReject">     <bit>2</bit> </item>
68                 <item name="SKRelease">    <bit>3</bit> </item>
69                 <item name="BKAccept">     <bit>4</bit> </item>
70                 <item name="BKReject">     <bit>5</bit> </item>
71                 <item name="AXKWarning">   <bit>6</bit> </item>
72         </enum>
73
74         <enum name="MapPart">
75                 <item name="KeyTypes">            <bit>0</bit> </item>
76                 <item name="KeySyms">             <bit>1</bit> </item>
77                 <item name="ModifierMap">         <bit>2</bit> </item>
78                 <item name="ExplicitComponents">  <bit>3</bit> </item>
79                 <item name="KeyActions">          <bit>4</bit> </item>
80                 <item name="KeyBehaviors">        <bit>5</bit> </item>
81                 <item name="VirtualMods">         <bit>6</bit> </item>
82                 <item name="VirtualModMap">       <bit>7</bit> </item>
83         </enum>
84
85         <enum name="SetMapFlags">
86                 <item name="ResizeTypes">       <bit>0</bit> </item>
87                 <item name="RecomputeActions">  <bit>1</bit> </item>
88         </enum>
89
90         <enum name="StatePart">
91                 <item name="ModifierState">     <bit>0</bit> </item>
92                 <item name="ModifierBase">      <bit>1</bit> </item>
93                 <item name="ModifierLatch">     <bit>2</bit> </item>
94                 <item name="ModifierLock">      <bit>3</bit> </item>
95                 <item name="GroupState">        <bit>4</bit> </item>
96                 <item name="GroupBase">         <bit>5</bit> </item>
97                 <item name="GroupLatch">        <bit>6</bit> </item>
98                 <item name="GroupLock">         <bit>7</bit> </item>
99                 <item name="CompatState">       <bit>8</bit> </item>
100                 <item name="GrabMods">          <bit>9</bit> </item>
101                 <item name="CompatGrabMods">    <bit>10</bit> </item>
102                 <item name="LookupMods">        <bit>11</bit> </item>
103                 <item name="CompatLookupMods">  <bit>12</bit> </item>
104                 <item name="PointerButtons">    <bit>13</bit> </item>
105         </enum>
106
107         <enum name="BoolCtrl">
108                 <item name="RepeatKeys">           <bit>0</bit> </item>
109                 <item name="SlowKeys">             <bit>1</bit> </item>
110                 <item name="BounceKeys">           <bit>2</bit> </item>
111                 <item name="StickyKeys">           <bit>3</bit> </item>
112                 <item name="MouseKeys">            <bit>4</bit> </item>
113                 <item name="MouseKeysAccel">       <bit>5</bit> </item>
114                 <item name="AccessXKeys">          <bit>6</bit> </item>
115                 <item name="AccessXTimeoutMask">   <bit>7</bit> </item>
116                 <item name="AccessXFeedbackMask">  <bit>8</bit> </item>
117                 <item name="AudibleBellMask">      <bit>9</bit> </item>
118                 <item name="Overlay1Mask">         <bit>10</bit> </item>
119                 <item name="Overlay2Mask">         <bit>11</bit> </item>
120                 <item name="IgnoreGroupLockMask">  <bit>12</bit> </item>
121         </enum>
122
123         <!-- XXX: one zero less than XKB specification says,
124                   uses the same values as libX11 -->
125         <enum name="Control" >
126                 <item name="GroupsWrap">      <bit>27</bit> </item>
127                 <item name="InternalMods">    <bit>28</bit> </item>
128                 <item name="IgnoreLockMods">  <bit>29</bit> </item>
129                 <item name="PerKeyRepeat">    <bit>30</bit> </item>
130                 <item name="ControlsEnabled"> <bit>31</bit> </item>
131         </enum>
132
133         <enum name="AXOption">
134                 <item name="SKPressFB">     <bit>0</bit> </item>
135                 <item name="SKAcceptFB">    <bit>1</bit> </item>
136                 <item name="FeatureFB">     <bit>2</bit> </item>
137                 <item name="SlowWarnFB">    <bit>3</bit> </item>
138                 <item name="IndicatorFB">   <bit>4</bit> </item>
139                 <item name="StickyKeysFB">  <bit>5</bit> </item>
140                 <item name="TwoKeys">       <bit>6</bit> </item>
141                 <item name="LatchToLock">   <bit>7</bit> </item>
142                 <item name="SKReleaseFB">   <bit>8</bit> </item>
143                 <item name="SKRejectFB">    <bit>9</bit> </item>
144                 <item name="BKRejectFB">    <bit>10</bit> </item>
145                 <item name="DumbBell">      <bit>11</bit> </item>
146         </enum>
147
148         <typedef oldname="CARD16" newname="DeviceSpec" />
149
150         <enum name="LedClassResult">
151                 <item name="KbdFeedbackClass"> <value>0</value> </item>
152                 <item name="LedFeedbackClass"> <value>4</value> </item>
153         </enum>
154
155         <enum name="LedClass">
156                 <item name="KbdFeedbackClass"> <value>0</value> </item>
157                 <item name="LedFeedbackClass"> <value>4</value> </item>
158                 <item name="DfltXIClass">      <value>768</value> </item>       <!--0x300-->
159                 <item name="AllXIClasses">     <value>1280</value> </item>      <!--0x500-->
160         </enum>
161         <typedef oldname="CARD16" newname="LedClassSpec" />
162
163         <enum name="BellClassResult">
164                 <item name="KbdFeedbackClass">  <value>0</value> </item>
165                 <item name="BellFeedbackClass"> <value>5</value> </item>
166         </enum>
167
168         <enum name="BellClass">
169                 <item name="KbdFeedbackClass">  <value>0</value> </item>
170                 <item name="BellFeedbackClass"> <value>5</value> </item>
171                 <item name="DfltXIClass">       <value>768</value> </item>      <!--0x300-->
172         </enum>
173         <typedef oldname="CARD16" newname="BellClassSpec" />
174
175         <enum name="ID">
176                 <item name="UseCoreKbd">  <value>256</value> </item>    <!-- 0x100 -->
177                 <item name="UseCorePtr">  <value>512</value> </item>    <!-- 0x200 -->
178                 <item name="DfltXIClass"> <value>768</value> </item>    <!-- 0x300 -->
179                 <item name="DfltXIId">   <value>1024</value> </item>    <!-- 0x400 -->
180                 <item name="AllXIClass"> <value>1280</value> </item>    <!-- 0x500 -->
181                 <item name="AllXIId">    <value>1536</value> </item>    <!-- 0x600 -->
182                 <item name="XINone">     <value>65280</value> </item>   <!--0xff00-->
183         </enum>
184         <typedef oldname="CARD16" newname="IDSpec" />
185
186         <enum name="Group">
187                 <item name="1"> <value>0</value> </item>
188                 <item name="2"> <value>1</value> </item>
189                 <item name="3"> <value>2</value> </item>
190                 <item name="4"> <value>3</value> </item>
191         </enum>
192
193         <enum name="Groups">
194                 <item name="Any"> <value>254</value> </item>
195                 <item name="All"> <value>255</value> </item>
196         </enum>
197
198         <enum name="SetOfGroup">
199                 <item name="Group1"> <bit>0</bit> </item>
200                 <item name="Group2"> <bit>1</bit> </item>
201                 <item name="Group3"> <bit>2</bit> </item>
202                 <item name="Group4"> <bit>3</bit> </item>
203         </enum>
204
205         <enum name="SetOfGroups">
206                 <item name="Any"> <bit>7</bit> </item>
207         </enum>
208
209         <enum name="GroupsWrap">
210                 <item name="WrapIntoRange">     <value>0</value> </item>
211                 <item name="ClampIntoRange">    <bit>6</bit> </item>
212                 <item name="RedirectIntoRange"> <bit>7</bit> </item>
213         </enum>
214
215         <enum name="VModsHigh">
216                 <item name="15"> <bit>7</bit> </item>
217                 <item name="14"> <bit>6</bit> </item>
218                 <item name="13"> <bit>5</bit> </item>
219                 <item name="12"> <bit>4</bit> </item>
220                 <item name="11"> <bit>3</bit> </item>
221                 <item name="10"> <bit>2</bit> </item>
222                 <item name="9">  <bit>1</bit> </item>
223                 <item name="8">  <bit>0</bit> </item>
224         </enum>
225
226         <enum name="VModsLow">
227                 <item name="7"> <bit>7</bit> </item>
228                 <item name="6"> <bit>6</bit> </item>
229                 <item name="5"> <bit>5</bit> </item>
230                 <item name="4"> <bit>4</bit> </item>
231                 <item name="3"> <bit>3</bit> </item>
232                 <item name="2"> <bit>2</bit> </item>
233                 <item name="1"> <bit>1</bit> </item>
234                 <item name="0"> <bit>0</bit> </item>
235         </enum>
236
237         <enum name="VMod">
238                 <item name="15"> <bit>15</bit> </item>
239                 <item name="14"> <bit>14</bit> </item>
240                 <item name="13"> <bit>13</bit> </item>
241                 <item name="12"> <bit>12</bit> </item>
242                 <item name="11"> <bit>11</bit> </item>
243                 <item name="10"> <bit>10</bit> </item>
244                 <item name="9">  <bit>9</bit> </item>
245                 <item name="8">  <bit>8</bit> </item>
246                 <item name="7">  <bit>7</bit> </item>
247                 <item name="6">  <bit>6</bit> </item>
248                 <item name="5">  <bit>5</bit> </item>
249                 <item name="4">  <bit>4</bit> </item>
250                 <item name="3">  <bit>3</bit> </item>
251                 <item name="2">  <bit>2</bit> </item>
252                 <item name="1">  <bit>1</bit> </item>
253                 <item name="0">  <bit>0</bit> </item>
254         </enum>
255
256         <enum name="Explicit">
257                 <item name="VModMap">     <bit>7</bit> </item>
258                 <item name="Behavior">    <bit>6</bit> </item>
259                 <item name="AutoRepeat">  <bit>5</bit> </item>
260                 <item name="Interpret">   <bit>4</bit> </item>
261                 <item name="KeyType4">    <bit>3</bit> </item>
262                 <item name="KeyType3">    <bit>2</bit> </item>
263                 <item name="KeyType2">    <bit>1</bit> </item>
264                 <item name="KeyType1">    <bit>0</bit> </item>
265         </enum>
266
267         <enum name="SymInterpretMatch">
268                 <item name="NoneOf">      <value>0</value> </item>
269                 <item name="AnyOfOrNone"> <value>1</value> </item>
270                 <item name="AnyOf">       <value>2</value> </item>
271                 <item name="AllOf">       <value>3</value> </item>
272                 <item name="Exactly">     <value>4</value> </item>
273         </enum>
274
275         <enum name="SymInterpMatch">
276                 <item name="LevelOneOnly"> <bit>7</bit> </item>
277                 <item name="OpMask">       <value>127</value> </item>   <!--0x7f-->
278         </enum>
279
280         <enum name="IMFlag">
281                 <item name="NoExplicit">  <bit>7</bit> </item>
282                 <item name="NoAutomatic"> <bit>6</bit> </item>
283                 <item name="LEDDrivesKB"> <bit>5</bit> </item>
284         </enum>
285
286         <enum name="IMModsWhich">
287                 <item name="UseCompat">    <bit>4</bit> </item>
288                 <item name="UseEffective"> <bit>3</bit> </item>
289                 <item name="UseLocked">    <bit>2</bit> </item>
290                 <item name="UseLatched">   <bit>1</bit> </item>
291                 <item name="UseBase">      <bit>0</bit> </item>
292         </enum>
293
294         <enum name="IMGroupsWhich">
295                 <item name="UseCompat">    <bit>4</bit> </item>
296                 <item name="UseEffective"> <bit>3</bit> </item>
297                 <item name="UseLocked">    <bit>2</bit> </item>
298                 <item name="UseLatched">   <bit>1</bit> </item>
299                 <item name="UseBase">      <bit>0</bit> </item>
300         </enum>
301
302         <struct name="IndicatorMap">
303                 <field name="flags" type="CARD8" enum="IMFlag" />
304                 <field name="whichGroups" type="CARD8" enum="IMGroupsWhich" />
305                 <field name="groups" type="CARD8" enum="SetOfGroup" />
306                 <field name="whichMods" type="CARD8" enum="IMModsWhich" />
307                 <field name="mods" type="CARD8" mask="ModMask" />
308                 <field name="realMods" type="CARD8" mask="ModMask" />
309                 <field name="vmods" type="CARD16" mask="VMod" />
310                 <field name="ctrls" type="CARD32" mask="BoolCtrl" />
311         </struct>
312
313         <enum name="CMDetail">
314                 <item name="SymInterp">   <bit>0</bit> </item>
315                 <item name="GroupCompat"> <bit>1</bit> </item>
316         </enum>
317
318         <enum name="NameDetail">
319                 <item name="Keycodes">        <bit>0</bit> </item>
320                 <item name="Geometry">        <bit>1</bit> </item>
321                 <item name="Symbols">         <bit>2</bit> </item>
322                 <item name="PhysSymbols">     <bit>3</bit> </item>
323                 <item name="Types">           <bit>4</bit> </item>
324                 <item name="Compat">          <bit>5</bit> </item>
325                 <item name="KeyTypeNames">    <bit>6</bit> </item>
326                 <item name="KTLevelNames">    <bit>7</bit> </item>
327                 <item name="IndicatorNames">  <bit>8</bit> </item>
328                 <item name="KeyNames">        <bit>9</bit> </item>
329                 <item name="KeyAliases">      <bit>10</bit> </item>
330                 <item name="VirtualModNames"> <bit>11</bit> </item>
331                 <item name="GroupNames">      <bit>12</bit> </item>
332                 <item name="RGNames">         <bit>13</bit> </item>
333         </enum>
334
335         <enum name="GBNDetail">
336                 <item name="Types">         <bit>0</bit> </item>
337                 <item name="CompatMap">     <bit>1</bit> </item>
338                 <item name="ClientSymbols"> <bit>2</bit> </item>
339                 <item name="ServerSymbols"> <bit>3</bit> </item>
340                 <item name="IndicatorMaps"> <bit>4</bit> </item>
341                 <item name="KeyNames">      <bit>5</bit> </item>
342                 <item name="Geometry">      <bit>6</bit> </item>
343                 <item name="OtherNames">    <bit>7</bit> </item>
344         </enum>
345
346         <enum name="XIFeature">
347                 <item name="Keyboards">      <bit>0</bit> </item>
348                 <item name="ButtonActions">  <bit>1</bit> </item>
349                 <item name="IndicatorNames"> <bit>2</bit> </item>
350                 <item name="IndicatorMaps">  <bit>3</bit> </item>
351                 <item name="IndicatorState"> <bit>4</bit> </item>
352         </enum>
353
354         <enum name="PerClientFlag">
355                 <item name="DetectableAutoRepeat">   <bit>0</bit> </item>
356                 <item name="GrabsUseXKBState">       <bit>1</bit> </item>
357                 <item name="AutoResetControls">      <bit>2</bit> </item>
358                 <item name="LookupStateWhenGrabbed"> <bit>3</bit> </item>
359                 <item name="SendEventUsesXKBState">  <bit>4</bit> </item>
360         </enum>
361
362         <struct name="ModDef">
363                 <field name="mask" type="CARD8" mask="ModMask" />
364                 <field name="realMods" type="CARD8" mask="ModMask" />
365                 <field name="vmods" type="CARD16" mask="VMod" />
366         </struct>
367
368         <struct name="KeyName">
369                 <list name="name" type="char">
370                         <value>4</value>
371                 </list>
372         </struct>
373
374         <struct name="KeyAlias">
375                 <list name="real" type="char">
376                         <value>4</value>
377                 </list>
378                 <list name="alias" type="char">
379                         <value>4</value>
380                 </list>
381         </struct>
382
383         <struct name="CountedString16">
384                 <field name="length" type="CARD16" />
385                 <list name="string" type="char">
386                         <fieldref>length</fieldref>
387                 </list>
388                 <list type="void" name="alignment_pad">
389                         <op op="-">
390                                 <op op="&amp;">
391                                         <op op="+">
392                                                 <fieldref>length</fieldref>
393                                                 <value>5</value>
394                                         </op>
395                                         <unop op="~">
396                                                 <value>3</value>
397                                         </unop>
398                                 </op>
399                                 <op op="+">
400                                         <fieldref>length</fieldref>
401                                         <value>2</value>
402                                 </op>
403                         </op>
404                 </list>
405         </struct>
406
407         <struct name="KTMapEntry">
408                 <field name="active" type="BOOL" />
409                 <field name="mods_mask" type="CARD8" mask="ModMask" />
410                 <field name="level" type="CARD8" />
411                 <field name="mods_mods" type="CARD8" mask="ModMask" />
412                 <field name="mods_vmods" type="CARD16" mask="VMod" />
413                 <pad bytes="2" />
414         </struct>
415
416         <struct name="KeyType">
417                 <field name="mods_mask" type="CARD8" mask="ModMask" />
418                 <field name="mods_mods" type="CARD8" mask="ModMask" />
419                 <field name="mods_vmods" type="CARD16" mask="VMod" />
420                 <field name="numLevels" type="CARD8" />
421                 <field name="nMapEntries" type="CARD8" />
422                 <field name="hasPreserve" type="BOOL" />
423                 <pad bytes="1" />
424                 <list name="map" type="KTMapEntry">
425                         <fieldref>nMapEntries</fieldref>
426                 </list>
427                 <list name="preserve" type="ModDef">
428                     <op op="*">
429                         <fieldref>hasPreserve</fieldref>
430                         <fieldref>nMapEntries</fieldref>
431                     </op>
432                 </list>
433         </struct>
434
435         <struct name="KeySymMap">
436                 <list name="kt_index" type="CARD8">
437                         <value>4</value>
438                 </list>
439                 <field name="groupInfo" type="CARD8" />
440                 <field name="width" type="CARD8" />
441                 <field name="nSyms" type="CARD16" />
442                 <list name="syms" type="KEYSYM">
443                         <fieldref>nSyms</fieldref>
444                 </list>
445         </struct>
446
447         <!-- Key Behaviors -->
448
449         <struct name="CommonBehavior">
450                 <field name="type" type="CARD8" />
451                 <field name="data" type="CARD8" />
452         </struct>
453
454         <struct name="DefaultBehavior">
455                 <field name="type" type="CARD8" />
456                 <pad bytes="1" />
457         </struct>
458
459         <typedef oldname="DefaultBehavior" newname="LockBehavior" />
460
461         <struct name="RadioGroupBehavior">
462                 <field name="type" type="CARD8" />
463                 <field name="group" type="CARD8" />
464         </struct>
465
466         <struct name="OverlayBehavior">
467                 <field name="type" type="CARD8" />
468                 <field name="key" type="KEYCODE" />
469         </struct>
470
471         <typedef oldname="LockBehavior" newname="PermamentLockBehavior" />
472         <typedef oldname="RadioGroupBehavior" newname="PermamentRadioGroupBehavior" />
473         <typedef oldname="OverlayBehavior" newname="PermamentOverlayBehavior" />
474
475         <union name="Behavior">
476                 <field name="common" type="CommonBehavior" />
477                 <field name="default" type="DefaultBehavior" />
478                 <field name="lock" type="LockBehavior" />
479                 <field name="radioGroup" type="RadioGroupBehavior" />
480                 <field name="overlay1" type="OverlayBehavior" />
481                 <field name="overlay2" type="OverlayBehavior" />
482                 <field name="permamentLock" type="PermamentLockBehavior" />
483                 <field name="permamentRadioGroup" type="PermamentRadioGroupBehavior" />
484                 <field name="permamentOverlay1" type="PermamentOverlayBehavior" />
485                 <field name="permamentOverlay2" type="PermamentOverlayBehavior" />
486                 <field name="type" type="CARD8" />
487         </union>
488
489         <enum name="BehaviorType">
490                 <item name="Default">             <value>0</value> </item>      <!--0x00-->
491                 <item name="Lock">                <value>1</value> </item>      <!--0x01-->
492                 <item name="RadioGroup">          <value>2</value> </item>      <!--0x02-->
493                 <item name="Overlay1">            <value>3</value> </item>      <!--0x03-->
494                 <item name="Overlay2">            <value>4</value> </item>      <!--0x04-->
495                 <item name="PermamentLock">       <value>129</value> </item>    <!--0x81-->
496                 <item name="PermamentRadioGroup"> <value>130</value> </item>    <!--0x82-->
497                 <item name="PermamentOverlay1">   <value>131</value> </item>    <!--0x83-->
498                 <item name="PermamentOverlay2">   <value>132</value> </item>    <!--0x84-->
499         </enum>
500
501         <struct name="SetBehavior">
502                 <field name="keycode" type="KEYCODE" />
503                 <field name="behavior" type="Behavior" />
504                 <pad bytes="1" />
505         </struct>
506
507         <struct name="SetExplicit">
508                 <field name="keycode" type="KEYCODE" />
509                 <field name="explicit" type="CARD8" mask="Explicit" />
510         </struct>
511
512         <struct name="KeyModMap">
513                 <field name="keycode" type="KEYCODE" />
514                 <field name="mods" type="CARD8" mask="ModMask" />
515         </struct>
516
517         <struct name="KeyVModMap">
518                 <field name="keycode" type="KEYCODE" />
519                 <pad bytes="1" />
520                 <field name="vmods" type="CARD16" mask="VMod" />
521         </struct>
522
523         <struct name="KTSetMapEntry">
524                 <field name="level" type="CARD8" />
525                 <field name="realMods" type="CARD8" mask="ModMask" />
526                 <field name="virtualMods" type="CARD16" mask="VMod" />
527         </struct>
528
529         <struct name="SetKeyType">
530                 <field name="mask" type="CARD8" mask="ModMask" />
531                 <field name="realMods" type="CARD8" mask="ModMask" />
532                 <field name="virtualMods" type="CARD16" mask="VMod" />
533                 <field name="numLevels" type="CARD8" />
534                 <field name="nMapEntries" type="CARD8" />
535                 <field name="preserve" type="BOOL" />
536                 <pad bytes="1" />
537                 <list name="entries" type="KTSetMapEntry">
538                         <fieldref>nMapEntries</fieldref>
539                 </list>
540                 <list name="preserve_entries" type="KTSetMapEntry">
541                     <op op = "*">
542                         <fieldref>preserve</fieldref>
543                         <fieldref>nMapEntries</fieldref>
544                     </op>
545                 </list>
546         </struct>
547
548         <typedef oldname="char" newname="STRING8" />
549
550         <struct name="Property">
551                 <field name="nameLength" type="CARD16" />
552                 <list name="name" type="STRING8">
553                         <fieldref>nameLength</fieldref>
554                 </list>
555                 <field name="valueLength" type="CARD16" />
556                 <list name="value" type="STRING8">
557                         <fieldref>valueLength</fieldref>
558                 </list>
559         </struct>
560
561         <struct name="Outline">
562                 <field name="nPoints" type="CARD8" />
563                 <field name="cornerRadius" type="CARD8" />
564                 <pad bytes="2" />
565                 <list name="points" type="POINT">
566                         <fieldref>nPoints</fieldref>
567                 </list>
568         </struct>
569
570         <struct name="Shape">
571                 <field name="name" type="ATOM" />
572                 <field name="nOutlines" type="CARD8" />
573                 <field name="primaryNdx" type="CARD8" />
574                 <field name="approxNdx" type="CARD8" />
575                 <pad bytes="1" />
576                 <list name="outlines" type="Outline">
577                         <fieldref>nOutlines</fieldref>
578                 </list>
579         </struct>
580
581         <struct name="Key">
582                 <list name="name" type="STRING8">
583                         <value>4</value>
584                 </list>
585                 <field name="gap" type="INT16" />
586                 <field name="shapeNdx" type="CARD8" />
587                 <field name="colorNdx" type="CARD8" />
588         </struct>
589
590         <struct name="OverlayKey">
591                 <list name="over" type="STRING8">
592                         <value>4</value>
593                 </list>
594                 <list name="under" type="STRING8">
595                         <value>4</value>
596                 </list>
597         </struct>
598
599         <struct name="OverlayRow">
600                 <field name="rowUnder" type="CARD8" />
601                 <field name="nKeys" type="CARD8" />
602                 <pad bytes="2" />
603                 <list name="keys" type="OverlayKey">
604                         <fieldref>nKeys</fieldref>
605                 </list>
606         </struct>
607
608         <struct name="Overlay">
609                 <field name="name" type="ATOM" />
610                 <field name="nRows" type="CARD8" />
611                 <pad bytes="3" />
612                 <list name="rows" type="OverlayRow">
613                         <fieldref>nRows</fieldref>
614                 </list>
615         </struct>
616
617         <struct name="Row">
618                 <field name="top" type="INT16" />
619                 <field name="left" type="INT16" />
620                 <field name="nKeys" type="CARD8" />
621                 <field name="vertical" type="BOOL" />
622                 <pad bytes="2" />
623                 <list name="keys" type="Key">
624                         <fieldref>nKeys</fieldref>
625                 </list>
626         </struct>
627
628         <enum name="DoodadType">
629                 <item name="Outline">   <value>1</value> </item>
630                 <item name="Solid">     <value>2</value> </item>
631                 <item name="Text">      <value>3</value> </item>
632                 <item name="Indicator"> <value>4</value> </item>
633                 <item name="Logo">      <value>5</value> </item>
634         </enum>
635
636         <struct name="CommonDoodad">
637                 <field name="name" type="ATOM" />
638                 <field name="type" type="CARD8" enum="DoodadType" />
639                 <field name="priority" type="CARD8" />
640                 <field name="top" type="INT16" />
641                 <field name="left" type="INT16" />
642                 <field name="angle" type="INT16" />
643                 <pad bytes="8" />
644         </struct>
645
646         <struct name="ShapeDoodad">
647                 <field name="name" type="ATOM" />
648                 <field name="type" type="CARD8" enum="DoodadType" />
649                 <field name="priority" type="CARD8" />
650                 <field name="top" type="INT16" />
651                 <field name="left" type="INT16" />
652                 <field name="angle" type="INT16" />
653                 <field name="colorNdx" type="CARD8" />
654                 <field name="shapeNdx" type="CARD8" />
655                 <pad bytes="6" />
656         </struct>
657
658         <struct name="TextDoodad">
659                 <field name="name" type="ATOM" />
660                 <field name="type" type="CARD8" enum="DoodadType" />
661                 <field name="priority" type="CARD8" />
662                 <field name="top" type="INT16" />
663                 <field name="left" type="INT16" />
664                 <field name="angle" type="INT16" />
665                 <field name="width" type="CARD16" />
666                 <field name="height" type="CARD16" />
667                 <field name="colorNdx" type="CARD8" />
668                 <pad bytes="3" />
669                 <field name="text" type="CountedString16" />
670                 <field name="font" type="CountedString16" />
671         </struct>
672
673         <struct name="IndicatorDoodad">
674                 <field name="name" type="ATOM" />
675                 <field name="type" type="CARD8" enum="DoodadType" />
676                 <field name="priority" type="CARD8" />
677                 <field name="top" type="INT16" />
678                 <field name="left" type="INT16" />
679                 <field name="angle" type="INT16" />
680                 <field name="shapeNdx" type="CARD8" />
681                 <field name="onColorNdx" type="CARD8" />
682                 <field name="offColorNdx" type="CARD8" />
683                 <pad bytes="5" />
684         </struct>
685
686         <struct name="LogoDoodad">
687                 <field name="name" type="ATOM" />
688                 <field name="type" type="CARD8" enum="DoodadType" />
689                 <field name="priority" type="CARD8" />
690                 <field name="top" type="INT16" />
691                 <field name="left" type="INT16" />
692                 <field name="angle" type="INT16" />
693                 <field name="colorNdx" type="CARD8" />
694                 <field name="shapeNdx" type="CARD8" />
695                 <pad bytes="6" />
696                 <field name="logoName" type="CountedString16" />
697         </struct>
698
699         <union name="Doodad">
700                 <field name="common" type="CommonDoodad" />
701                 <field name="shape" type="ShapeDoodad" />
702                 <field name="text" type="TextDoodad" />
703                 <field name="indicator" type="IndicatorDoodad" />
704                 <field name="logo" type="LogoDoodad" />
705         </union>
706
707         <struct name="Section">
708                 <field name="name" type="ATOM" />
709                 <field name="top" type="INT16" />
710                 <field name="left" type="INT16" />
711                 <field name="width" type="CARD16" />
712                 <field name="height" type="CARD16" />
713                 <field name="angle" type="INT16" />
714                 <field name="priority" type="CARD8" />
715                 <field name="nRows" type="CARD8" />
716                 <field name="nDoodads" type="CARD8" />
717                 <field name="nOverlays" type="CARD8" />
718                 <pad bytes="2" />
719                 <list name="rows" type="Row">
720                         <fieldref>nRows</fieldref>
721                 </list>
722                 <list name="doodads" type="Doodad">
723                         <fieldref>nDoodads</fieldref>
724                 </list>
725                 <list name="overlays" type="Overlay">
726                         <fieldref>nOverlays</fieldref>
727                 </list>
728         </struct>
729
730         <struct name="Listing">
731                 <field name="flags" type="CARD16" />
732                 <field name="length" type="CARD16" />
733                 <list name="string" type="STRING8">
734                         <fieldref>length</fieldref>
735                 </list>
736         </struct>
737
738         <struct name="DeviceLedInfo">
739                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
740                 <field name="ledID" type="IDSpec" altenum="ID" />
741                 <field name="namesPresent" type="CARD32" />
742                 <field name="mapsPresent" type="CARD32" />
743                 <field name="physIndicators" type="CARD32" />
744                 <field name="state" type="CARD32" />
745                 <list name="names" type="ATOM">
746                         <popcount>
747                                 <fieldref>namesPresent</fieldref>
748                         </popcount>
749                 </list>
750                 <list name="maps" type="IndicatorMap">
751                         <popcount>
752                                 <fieldref>mapsPresent</fieldref>
753                         </popcount>
754                 </list>
755         </struct>
756
757         <!-- Errors -->
758
759         <enum name="Error">
760                 <item name="BadDevice"> <value>255</value> </item>      <!--0xff-->
761                 <item name="BadClass">  <value>254</value> </item>      <!--0xfe-->
762                 <item name="BadId">     <value>253</value> </item>      <!--0xfd-->
763         </enum>
764
765         <error name="Keyboard" number="0">
766                 <field name="value" type="CARD32" />
767                 <field name="minorOpcode" type="CARD16" />
768                 <field name="majorOpcode" type="CARD8" />
769                 <pad bytes="21" />
770         </error>
771
772         <!-- Key Actions -->
773
774         <enum name="SA">
775                 <item name="ClearLocks">    <bit>0</bit> </item>
776                 <item name="LatchToLock">   <bit>1</bit> </item>
777                 <item name="UseModMapMods"> <bit>2</bit> </item>
778                 <item name="GroupAbsolute"> <bit>2</bit> </item>
779         </enum>
780
781         <enum name="SAType">
782                 <item name="NoAction">       <value>0</value> </item>
783                 <item name="SetMods">        <value>1</value> </item>
784                 <item name="LatchMods">      <value>2</value> </item>
785                 <item name="LockMods">       <value>3</value> </item>
786                 <item name="SetGroup">       <value>4</value> </item>
787                 <item name="LatchGroup">     <value>5</value> </item>
788                 <item name="LockGroup">      <value>6</value> </item>
789                 <item name="MovePtr">        <value>7</value> </item>
790                 <item name="PtrBtn">         <value>8</value> </item>
791                 <item name="LockPtrBtn">     <value>9</value> </item>
792                 <item name="SetPtrDflt">     <value>10</value> </item>
793                 <item name="ISOLock">        <value>11</value> </item>
794                 <item name="Terminate">      <value>12</value> </item>
795                 <item name="SwitchScreen">   <value>13</value> </item>
796                 <item name="SetControls">    <value>14</value> </item>
797                 <item name="LockControls">   <value>15</value> </item>
798                 <item name="ActionMessage">  <value>16</value> </item>
799                 <item name="RedirectKey">    <value>17</value> </item>
800                 <item name="DeviceBtn">      <value>18</value> </item>
801                 <item name="LockDeviceBtn">  <value>19</value> </item>
802                 <item name="DeviceValuator"> <value>20</value> </item>
803         </enum>
804
805         <struct name="SANoAction">
806                 <field name="type" type="CARD8" enum="SAType" />
807                 <pad bytes="7" />
808         </struct>
809
810         <struct name="SASetMods">
811                 <field name="type" type="CARD8" enum="SAType" />
812                 <field name="flags" type="CARD8" mask="SA" />
813                 <field name="mask" type="CARD8" mask="ModMask" />
814                 <field name="realMods" type="CARD8" mask="ModMask" />
815                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
816                 <field name="vmodsLow" type="CARD8" mask="VModsLow" />
817                 <pad bytes="2" />
818         </struct>
819
820         <typedef oldname="SASetMods" newname="SALatchMods" />
821
822         <typedef oldname="SASetMods" newname="SALockMods" />
823
824         <struct name="SASetGroup">
825                 <field name="type" type="CARD8" enum="SAType" />
826                 <field name="flags" type="CARD8" mask="SA" />
827                 <field name="group" type="INT8" />
828                 <pad bytes="5" />
829         </struct>
830
831         <typedef oldname="SASetGroup" newname="SALatchGroup" />
832
833         <typedef oldname="SASetGroup" newname="SALockGroup" />
834
835         <enum name="SAMovePtrFlag">
836                 <item name="NoAcceleration"> <bit>0</bit> </item>
837                 <item name="MoveAbsoluteX">  <bit>1</bit> </item>
838                 <item name="MoveAbsoluteY">  <bit>2</bit> </item>
839         </enum>
840
841         <struct name="SAMovePtr">
842                 <field name="type" type="CARD8" enum="SAType" />
843                 <field name="flags" type="CARD8" mask="SAMovePtrFlag" />
844                 <field name="xHigh" type="INT8" />
845                 <field name="xLow" type="CARD8" />
846                 <field name="yHigh" type="INT8" />
847                 <field name="yLow" type="CARD8" />
848                 <pad bytes="2" />
849         </struct>
850
851         <struct name="SAPtrBtn">
852                 <field name="type" type="CARD8" enum="SAType" />
853                 <field name="flags" type="CARD8" />
854                 <field name="count" type="CARD8" />
855                 <field name="button" type="CARD8" />
856                 <pad bytes="4" />
857         </struct>
858
859         <struct name="SALockPtrBtn">
860                 <field name="type" type="CARD8" enum="SAType" />
861                 <field name="flags" type="CARD8" />
862                 <pad bytes="1" />
863                 <field name="button" type="CARD8" />
864                 <pad bytes="4" />
865         </struct>
866
867         <enum name="SASetPtrDfltFlag">
868                 <!-- The spec says 0x02 but Xlib uses 0x04. -->
869                 <item name="DfltBtnAbsolute">  <bit>2</bit> </item>
870                 <item name="AffectDfltButton"> <bit>0</bit> </item>
871         </enum>
872
873         <struct name="SASetPtrDflt">
874                 <field name="type" type="CARD8" enum="SAType" />
875                 <field name="flags" type="CARD8" mask="SASetPtrDfltFlag" />
876                 <field name="affect" type="CARD8" mask="SASetPtrDfltFlag" />
877                 <field name="value" type="INT8" />
878                 <pad bytes="4" />
879         </struct>
880
881         <enum name="SAIsoLockFlag">
882                 <item name="NoLock">         <bit>0</bit> </item>
883                 <item name="NoUnlock">       <bit>1</bit> </item>
884                 <item name="UseModMapMods">  <bit>2</bit> </item>
885                 <item name="GroupAbsolute">  <bit>2</bit> </item>
886                 <item name="ISODfltIsGroup"> <bit>3</bit> </item>
887         </enum>
888
889         <enum name="SAIsoLockNoAffect">
890                 <item name="Ctrls"> <bit>3</bit> </item>
891                 <item name="Ptr">   <bit>4</bit> </item>
892                 <item name="Group"> <bit>5</bit> </item>
893                 <item name="Mods">  <bit>6</bit> </item>
894         </enum>
895
896         <struct name="SAIsoLock">
897                 <field name="type" type="CARD8" enum="SAType" />
898                 <field name="flags" type="CARD8" mask="SAIsoLockFlag" />
899                 <field name="mask" type="CARD8" mask="ModMask" />
900                 <field name="realMods" type="CARD8" mask="ModMask" />
901                 <field name="group" type="INT8" />
902                 <field name="affect" type="CARD8" mask="SAIsoLockNoAffect" />
903                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
904                 <field name="vmodsLow" type="CARD8" mask="VModsLow" />
905         </struct>
906
907         <struct name="SATerminate">
908                 <field name="type" type="CARD8" enum="SAType" />
909                 <pad bytes="7" />
910         </struct>
911
912         <enum name="SwitchScreenFlag">
913                 <item name="Application"> <bit>0</bit> </item>
914                 <item name="Absolute" >   <bit>2</bit> </item>
915         </enum>
916
917         <struct name="SASwitchScreen">
918                 <field name="type" type="CARD8" enum="SAType" />
919                 <field name="flags" type="CARD8" />
920                 <field name="newScreen" type="INT8" />
921                 <pad bytes="5" />
922         </struct>
923
924         <enum name="BoolCtrlsHigh">
925                 <item name="AccessXFeedback"> <bit>0</bit> </item>
926                 <item name="AudibleBell">     <bit>1</bit> </item>
927                 <item name="Overlay1">        <bit>2</bit> </item>
928                 <item name="Overlay2">        <bit>3</bit> </item>
929                 <item name="IgnoreGroupLock"> <bit>4</bit> </item>
930         </enum>
931
932         <enum name="BoolCtrlsLow">
933                 <item name="RepeatKeys">     <bit>0</bit> </item>
934                 <item name="SlowKeys">       <bit>1</bit> </item>
935                 <item name="BounceKeys">     <bit>2</bit> </item>
936                 <item name="StickyKeys">     <bit>3</bit> </item>
937                 <item name="MouseKeys">      <bit>4</bit> </item>
938                 <item name="MouseKeysAccel"> <bit>5</bit> </item>
939                 <item name="AccessXKeys">    <bit>6</bit> </item>
940                 <item name="AccessXTimeout"> <bit>7</bit> </item>
941         </enum>
942
943         <struct name="SASetControls">
944                 <field name="type" type="CARD8" enum="SAType" />
945                 <pad bytes="3" />
946                 <field name="boolCtrlsHigh" type="CARD8" mask="BoolCtrlsHigh" />
947                 <field name="boolCtrlsLow"  type="CARD8" mask="BoolCtrlsLow" />
948                 <pad bytes="2" />
949         </struct>
950
951         <typedef oldname="SASetControls" newname="SALockControls" />
952
953         <enum name="ActionMessageFlag">
954                 <item name="OnPress">     <bit>0</bit> </item>
955                 <item name="OnRelease">   <bit>1</bit> </item>
956                 <item name="GenKeyEvent"> <bit>2</bit> </item>
957         </enum>
958
959         <struct name="SAActionMessage">
960                 <field name="type" type="CARD8" enum="SAType" />
961                 <field name="flags" type="CARD8" mask="ActionMessageFlag" />
962                 <list name="message" type="CARD8">
963                         <value>6</value>
964                 </list>
965         </struct>
966
967         <struct name="SARedirectKey">
968                 <field name="type" type="CARD8" enum="SAType" />
969                 <field name="newkey" type="KEYCODE" />
970                 <field name="mask" type="CARD8" mask="ModMask" />
971                 <field name="realModifiers" type="CARD8" mask="ModMask" />
972                 <field name="vmodsMaskHigh" type="CARD8" mask="VModsHigh"/>
973                 <field name="vmodsMaskLow" type="CARD8" mask="VModsLow"/>
974                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh"/>
975                 <field name="vmodsLow" type="CARD8" mask="VModsLow"/>
976         </struct>
977
978         <struct name="SADeviceBtn">
979                 <field name="type" type="CARD8" enum="SAType" />
980                 <field name="flags" type="CARD8" />
981                 <field name="count" type="CARD8" />
982                 <field name="button" type="CARD8" />
983                 <field name="device" type="CARD8" />
984                 <pad bytes="3" />
985         </struct>
986
987         <enum name="LockDeviceFlags">
988                 <item name="NoLock">   <bit>0</bit> </item>
989                 <item name="NoUnlock"> <bit>1</bit> </item>
990         </enum>
991
992         <struct name="SALockDeviceBtn">
993                 <field name="type" type="CARD8" enum="SAType" />
994                 <field name="flags" type="CARD8" mask="LockDeviceFlags" />
995                 <pad bytes="1" />
996                 <field name="button" type="CARD8" />
997                 <field name="device" type="CARD8" />
998                 <pad bytes="3" />
999         </struct>
1000
1001         <enum name="SAValWhat">
1002                 <item name="IgnoreVal">      <value>0</value> </item>
1003                 <item name="SetValMin">      <value>1</value> </item>
1004                 <item name="SetValCenter">   <value>2</value> </item>
1005                 <item name="SetValMax">      <value>3</value> </item>
1006                 <item name="SetValRelative"> <value>4</value> </item>
1007                 <item name="SetValAbsolute"> <value>5</value> </item>
1008         </enum>
1009
1010         <struct name="SADeviceValuator">
1011                 <field name="type" type="CARD8" enum="SAType" />
1012                 <field name="device" type="CARD8" />
1013                 <field name="val1what" type="CARD8" enum="SAValWhat" />
1014                 <field name="val1index" type="CARD8" />
1015                 <field name="val1value" type="CARD8" />
1016                 <field name="val2what" type="CARD8" enum="SAValWhat" />
1017                 <field name="val2index" type="CARD8" />
1018                 <field name="val2value" type="CARD8" />
1019         </struct>
1020
1021         <struct name="SIAction">
1022                 <field name="type" type="CARD8" enum="SAType" />
1023                 <list name="data" type="CARD8">
1024                         <value>7</value>
1025                 </list>
1026         </struct>
1027
1028         <struct name="SymInterpret">
1029                 <field name="sym" type="KEYSYM" />
1030                 <field name="mods" type="CARD8" mask="ModMask" />
1031                 <!-- "match" may also have XkbSI_LevelOneOnly (0x80) or'd into it -->
1032                 <field name="match" type="CARD8" altenum="SymInterpretMatch" />
1033                 <field name="virtualMod" type="CARD8" mask="VModsLow" />
1034                 <field name="flags" type="CARD8" />
1035                 <field name="action" type="SIAction" />
1036         </struct>
1037
1038         <union name="Action">
1039                 <field name="noaction" type="SANoAction" />
1040                 <field name="setmods" type="SASetMods" />
1041                 <field name="latchmods" type="SALatchMods" />
1042                 <field name="lockmods" type="SALockMods" />
1043                 <field name="setgroup" type="SASetGroup" />
1044                 <field name="latchgroup" type="SALatchGroup" />
1045                 <field name="lockgroup" type="SALockGroup" />
1046                 <field name="moveptr" type="SAMovePtr" />
1047                 <field name="ptrbtn" type="SAPtrBtn" />
1048                 <field name="lockptrbtn" type="SALockPtrBtn" />
1049                 <field name="setptrdflt" type="SASetPtrDflt" />
1050                 <field name="isolock" type="SAIsoLock" />
1051                 <field name="terminate" type="SATerminate" />
1052                 <field name="switchscreen" type="SASwitchScreen" />
1053                 <field name="setcontrols" type="SASetControls" />
1054                 <field name="lockcontrols" type="SALockControls" />
1055                 <field name="message" type="SAActionMessage" />
1056                 <field name="redirect" type="SARedirectKey" />
1057                 <field name="devbtn" type="SADeviceBtn" />
1058                 <field name="lockdevbtn" type="SALockDeviceBtn" />
1059                 <field name="devval" type="SADeviceValuator" />
1060                 <field name="type" type="CARD8" enum="SAType" />
1061         </union>
1062
1063         <!-- Requests -->
1064
1065         <request name="UseExtension" opcode="0">
1066                 <field name="wantedMajor" type="CARD16" />
1067                 <field name="wantedMinor" type="CARD16" />
1068                 <reply>
1069                         <field name="supported" type="BOOL" />
1070                         <field name="serverMajor" type="CARD16" />
1071                         <field name="serverMinor" type="CARD16" />
1072                         <pad bytes="20" />
1073                 </reply>
1074         </request>
1075
1076         <request name="SelectEvents" opcode="1">
1077                 <field name="deviceSpec" type="DeviceSpec" />
1078                 <field name="affectWhich" type="CARD16" mask="EventType" />
1079                 <field name="clear" type="CARD16" mask="EventType" />
1080                 <field name="selectAll" type="CARD16" mask="EventType" />
1081                 <field name="affectMap" type="CARD16" mask="MapPart" />
1082                 <field name="map" type="CARD16" mask="MapPart" />
1083                 <switch name="details">
1084                         <op op="&amp;">
1085                                 <fieldref>affectWhich</fieldref>
1086                                 <op op="&amp;">
1087                                         <unop op="~"><fieldref>clear</fieldref></unop>
1088                                         <unop op="~"><fieldref>selectAll</fieldref></unop>
1089                                 </op>
1090                         </op>
1091                         <bitcase>
1092                                 <enumref ref="EventType">NewKeyboardNotify</enumref>
1093                                 <field name="affectNewKeyboard" type="CARD16" mask="NKNDetail" />
1094                                 <field name="newKeyboardDetails" type="CARD16" mask="NKNDetail" />
1095                         </bitcase>
1096                         <bitcase>
1097                                 <enumref ref="EventType">StateNotify</enumref>
1098                                 <field name="affectState" type="CARD16" mask="StatePart" />
1099                                 <field name="stateDetails" type="CARD16" mask="StatePart" />
1100                         </bitcase>
1101                         <bitcase>
1102                                 <enumref ref="EventType">ControlsNotify</enumref>
1103                                 <field name="affectCtrls" type="CARD32" mask="Control" />
1104                                 <field name="ctrlDetails" type="CARD32" mask="Control" />
1105                         </bitcase>
1106                         <bitcase>
1107                                 <enumref ref="EventType">IndicatorStateNotify</enumref>
1108                                 <field name="affectIndicatorState" type="CARD32" />
1109                                 <field name="indicatorStateDetails" type="CARD32" />
1110                         </bitcase>
1111                         <bitcase>
1112                                 <enumref ref="EventType">IndicatorMapNotify</enumref>
1113                                 <field name="affectIndicatorMap" type="CARD32" />
1114                                 <field name="indicatorMapDetails" type="CARD32" />
1115                         </bitcase>
1116                         <bitcase>
1117                                 <enumref ref="EventType">NamesNotify</enumref>
1118                                 <field name="affectNames" type="CARD16" mask="NameDetail" />
1119                                 <field name="namesDetails" type="CARD16" mask="NameDetail" />
1120                         </bitcase>
1121                         <bitcase>
1122                                 <enumref ref="EventType">CompatMapNotify</enumref>
1123                                 <field name="affectCompat" type="CARD8" mask="CMDetail" />
1124                                 <field name="compatDetails" type="CARD8" mask="CMDetail" />
1125                         </bitcase>
1126                         <bitcase>
1127                                 <enumref ref="EventType">BellNotify</enumref>
1128                                 <field name="affectBell" type="CARD8" />
1129                                 <field name="bellDetails" type="CARD8" />
1130                         </bitcase>
1131                         <bitcase>
1132                                 <enumref ref="EventType">ActionMessage</enumref>
1133                                 <field name="affectMsgDetails" type="CARD8" />
1134                                 <field name="msgDetails" type="CARD8" />
1135                         </bitcase>
1136                         <bitcase>
1137                                 <enumref ref="EventType">AccessXNotify</enumref>
1138                                 <field name="affectAccessX" type="CARD16" mask="AXNDetail" />
1139                                 <field name="accessXDetails" type="CARD16" mask="AXNDetail" />
1140                         </bitcase>
1141                         <bitcase>
1142                                 <enumref ref="EventType">ExtensionDeviceNotify</enumref>
1143                                 <field name="affectExtDev" type="CARD16" mask="XIFeature" />
1144                                 <field name="extdevDetails" type="CARD16" mask="XIFeature" />
1145                         </bitcase>
1146                 </switch>
1147         </request>
1148
1149         <request name="Bell" opcode="3">
1150                 <field name="deviceSpec" type="DeviceSpec" />
1151                 <field name="bellClass" type="BellClassSpec" />
1152                 <field name="bellID" type="IDSpec" />
1153                 <field name="percent" type="INT8" />
1154                 <field name="forceSound" type="BOOL" />
1155                 <field name="eventOnly" type="BOOL" />
1156                 <pad bytes="1" />
1157                 <field name="pitch" type="INT16" />
1158                 <field name="duration" type="INT16" />
1159                 <pad bytes="2" />
1160                 <field name="name" type="ATOM" />
1161                 <field name="window" type="WINDOW" />
1162         </request>
1163
1164         <request name="GetState" opcode="4">
1165                 <field name="deviceSpec" type="DeviceSpec" />
1166                 <pad bytes="2" />
1167                 <reply>
1168                         <field name="deviceID" type="CARD8" />
1169                         <field name="mods" type="CARD8" mask="ModMask" />
1170                         <field name="baseMods" type="CARD8" mask="ModMask" />
1171                         <field name="latchedMods" type="CARD8" mask="ModMask" />
1172                         <field name="lockedMods" type="CARD8" mask="ModMask" />
1173                         <field name="group" type="CARD8" enum="Group" />
1174                         <field name="lockedGroup" type="CARD8" enum="Group" />
1175                         <field name="baseGroup" type="INT16" />
1176                         <field name="latchedGroup" type="INT16" />
1177                         <field name="compatState" type="CARD8" mask="ModMask" />
1178                         <field name="grabMods" type="CARD8" mask="ModMask" />
1179                         <field name="compatGrabMods" type="CARD8" mask="ModMask" />
1180                         <field name="lookupMods" type="CARD8" mask="ModMask" />
1181                         <field name="compatLookupMods" type="CARD8" mask="ModMask" />
1182                         <pad bytes="1" />
1183                         <field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
1184                         <pad bytes="6" />
1185                 </reply>
1186         </request>
1187
1188         <request name="LatchLockState" opcode="5">
1189                 <field name="deviceSpec" type="DeviceSpec" />
1190                 <field name="affectModLocks" type="CARD8" mask="ModMask" />
1191                 <field name="modLocks" type="CARD8" mask="ModMask" />
1192                 <field name="lockGroup" type="BOOL" />
1193                 <field name="groupLock" type="CARD8" enum="Group" />
1194                 <field name="affectModLatches" type="CARD8" mask="ModMask" />
1195                 <pad bytes="1" />
1196                 <field name="latchGroup" type="BOOL" />
1197                 <field name="groupLatch" type="CARD16" />
1198         </request>
1199
1200         <request name="GetControls" opcode="6">
1201                 <field name="deviceSpec" type="DeviceSpec" />
1202                 <pad bytes="2" />
1203                 <reply>
1204                         <field name="deviceID" type="CARD8" />
1205                         <field name="mouseKeysDfltBtn" type="CARD8" />
1206                         <field name="numGroups" type="CARD8" />
1207                         <field name="groupsWrap" type="CARD8" />
1208                         <field name="internalModsMask" type="CARD8" mask="ModMask" />
1209                         <field name="ignoreLockModsMask" type="CARD8" mask="ModMask" />
1210                         <field name="internalModsRealMods" type="CARD8" mask="ModMask" />
1211                         <field name="ignoreLockModsRealMods" type="CARD8" mask="ModMask" />
1212                         <pad bytes="1" />
1213                         <field name="internalModsVmods" type="CARD16" mask="VMod" />
1214                         <field name="ignoreLockModsVmods" type="CARD16" mask="VMod" />
1215                         <field name="repeatDelay" type="CARD16" />
1216                         <field name="repeatInterval" type="CARD16" />
1217                         <field name="slowKeysDelay" type="CARD16" />
1218                         <field name="debounceDelay" type="CARD16" />
1219                         <field name="mouseKeysDelay" type="CARD16" />
1220                         <field name="mouseKeysInterval" type="CARD16" />
1221                         <field name="mouseKeysTimeToMax" type="CARD16" />
1222                         <field name="mouseKeysMaxSpeed" type="CARD16" />
1223                         <field name="mouseKeysCurve" type="INT16" />
1224                         <field name="accessXOption" type="CARD16" mask="AXOption" />
1225                         <field name="accessXTimeout" type="CARD16" />
1226                         <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1227                         <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1228                         <pad bytes="2" />
1229                         <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1230                         <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1231                         <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1232                         <list name="perKeyRepeat" type="CARD8">
1233                                 <value>32</value>
1234                         </list>
1235                 </reply>
1236         </request>
1237
1238         <request name="SetControls" opcode="7">
1239                 <field name="deviceSpec" type="DeviceSpec" />
1240                 <field name="affectInternalRealMods" type="CARD8" mask="ModMask" />
1241                 <field name="internalRealMods" type="CARD8" mask="ModMask" />
1242                 <field name="affectIgnoreLockRealMods" type="CARD8" mask="ModMask" />
1243                 <field name="ignoreLockRealMods" type="CARD8" mask="ModMask" />
1244                 <field name="affectInternalVirtualMods" type="CARD16" mask="VMod" />
1245                 <field name="internalVirtualMods" type="CARD16" mask="VMod" />
1246                 <field name="affectIgnoreLockVirtualMods" type="CARD16" mask="VMod" />
1247                 <field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
1248                 <field name="mouseKeysDfltBtn" type="CARD8" />
1249                 <field name="groupsWrap" type="CARD8" />
1250                 <field name="accessXOptions" type="CARD16" mask="AXOption" />
1251                 <pad bytes="2" />
1252                 <field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
1253                 <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1254                 <field name="changeControls" type="CARD32" mask="Control" />
1255                 <field name="repeatDelay" type="CARD16" />
1256                 <field name="repeatInterval" type="CARD16" />
1257                 <field name="slowKeysDelay" type="CARD16" />
1258                 <field name="debounceDelay" type="CARD16" />
1259                 <field name="mouseKeysDelay" type="CARD16" />
1260                 <field name="mouseKeysInterval" type="CARD16" />
1261                 <field name="mouseKeysTimeToMax" type="CARD16" />
1262                 <field name="mouseKeysMaxSpeed" type="CARD16" />
1263                 <field name="mouseKeysCurve" type="INT16" />
1264                 <field name="accessXTimeout" type="CARD16" />
1265                 <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1266                 <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1267                 <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1268                 <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1269                 <list name="perKeyRepeat" type="CARD8">
1270                         <value>32</value>
1271                 </list>
1272         </request>
1273
1274         <request name="GetMap" opcode="8">
1275                 <field name="deviceSpec" type="DeviceSpec" />
1276                 <field name="full" type="CARD16" mask="MapPart" />
1277                 <field name="partial" type="CARD16" mask="MapPart" />
1278                 <field name="firstType" type="CARD8" />
1279                 <field name="nTypes" type="CARD8" />
1280                 <field name="firstKeySym" type="KEYCODE" />
1281                 <field name="nKeySyms" type="CARD8" />
1282                 <field name="firstKeyAction" type="KEYCODE" />
1283                 <field name="nKeyActions" type="CARD8" />
1284                 <field name="firstKeyBehavior" type="KEYCODE" />
1285                 <field name="nKeyBehaviors" type="CARD8" />
1286                 <field name="virtualMods" type="CARD16" mask="VMod" />
1287                 <field name="firstKeyExplicit" type="KEYCODE" />
1288                 <field name="nKeyExplicit" type="CARD8" />
1289                 <field name="firstModMapKey" type="KEYCODE" />
1290                 <field name="nModMapKeys" type="CARD8" />
1291                 <field name="firstVModMapKey" type="KEYCODE" />
1292                 <field name="nVModMapKeys" type="CARD8" />
1293                 <pad bytes="2" />
1294                 <reply>
1295                         <field name="deviceID" type="CARD8" />
1296                         <pad bytes="2" />
1297                         <field name="minKeyCode" type="KEYCODE" />
1298                         <field name="maxKeyCode" type="KEYCODE" />
1299                         <field name="present" type="CARD16" mask="MapPart" />
1300                         <field name="firstType" type="CARD8" />
1301                         <field name="nTypes" type="CARD8" />
1302                         <field name="totalTypes" type="CARD8" />
1303                         <field name="firstKeySym" type="KEYCODE" />
1304                         <field name="totalSyms" type="CARD16" />
1305                         <field name="nKeySyms" type="CARD8" />
1306                         <field name="firstKeyAction" type="KEYCODE" />
1307                         <field name="totalActions" type="CARD16" />
1308                         <field name="nKeyActions" type="CARD8" />
1309                         <field name="firstKeyBehavior" type="KEYCODE" />
1310                         <field name="nKeyBehaviors" type="CARD8" />
1311                         <field name="totalKeyBehaviors" type="CARD8" />
1312                         <field name="firstKeyExplicit" type="KEYCODE" />
1313                         <field name="nKeyExplicit" type="CARD8" />
1314                         <field name="totalKeyExplicit" type="CARD8" />
1315                         <field name="firstModMapKey" type="KEYCODE" />
1316                         <field name="nModMapKeys" type="CARD8" />
1317                         <field name="totalModMapKeys" type="CARD8" />
1318                         <field name="firstVModMapKey" type="KEYCODE" />
1319                         <field name="nVModMapKeys" type="CARD8" />
1320                         <field name="totalVModMapKeys" type="CARD8" />
1321                         <pad bytes="1" />
1322                         <field name="virtualMods" type="CARD16" mask="VMod" />
1323                         <switch name="map">
1324                                 <fieldref>present</fieldref>
1325                                 <bitcase>
1326                                         <enumref ref="MapPart">KeyTypes</enumref>
1327                                         <list name="types_rtrn" type="KeyType">
1328                                                 <fieldref>nTypes</fieldref>
1329                                         </list>
1330                                 </bitcase>
1331                                 <bitcase>
1332                                         <enumref ref="MapPart">KeySyms</enumref>
1333                                         <list name="syms_rtrn" type="KeySymMap">
1334                                                 <fieldref>nKeySyms</fieldref>
1335                                         </list>
1336                                 </bitcase>
1337                                 <bitcase>
1338                                         <enumref ref="MapPart">KeyActions</enumref>
1339                                         <list name="acts_rtrn_count" type="CARD8">
1340                                                 <fieldref>nKeyActions</fieldref>
1341                                         </list>
1342                                         <list type="CARD8" name="alignment_pad">
1343                                             <op op="-">
1344                                                 <op op="&amp;">
1345                                                     <op op="+">
1346                                                         <fieldref>nKeyActions</fieldref>
1347                                                         <value>3</value>
1348                                                     </op>
1349                                                     <unop op="~">
1350                                                         <value>3</value>
1351                                                     </unop>
1352                                                 </op>
1353                                                 <fieldref>nKeyActions</fieldref>
1354                                             </op>
1355                                         </list>
1356                                         <list name="acts_rtrn_acts" type="Action">
1357                                                 <fieldref>totalActions</fieldref>
1358                                         </list>
1359                                 </bitcase>
1360                                 <bitcase>
1361                                         <enumref ref="MapPart">KeyBehaviors</enumref>
1362                                         <list name="behaviors_rtrn" type="SetBehavior">
1363                                                 <fieldref>totalKeyBehaviors</fieldref>
1364                                         </list>
1365                                 </bitcase>
1366                                 <bitcase>
1367                                         <enumref ref="MapPart">VirtualMods</enumref>
1368                                         <list name="vmods_rtrn" type="CARD8" mask="ModMask">
1369                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
1370                                         </list>
1371                                         <list type="CARD8" name="alignment_pad2">
1372                                             <op op="-">
1373                                                 <op op="&amp;">
1374                                                     <op op="+">
1375                                                         <popcount><fieldref>virtualMods</fieldref></popcount>
1376                                                         <value>3</value>
1377                                                     </op>
1378                                                     <unop op="~">
1379                                                         <value>3</value>
1380                                                     </unop>
1381                                                 </op>
1382                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
1383                                             </op>
1384                                         </list>
1385                                 </bitcase>
1386                                 <bitcase>
1387                                         <enumref ref="MapPart">ExplicitComponents</enumref>
1388                                         <list name="explicit_rtrn" type="SetExplicit">
1389                                                 <fieldref>totalKeyExplicit</fieldref>
1390                                         </list>
1391                                         <list type="CARD16" name="alignment_pad3">
1392                                             <op op="-">
1393                                                 <op op="&amp;">
1394                                                     <op op="+">
1395                                                         <fieldref>totalKeyExplicit</fieldref>
1396                                                         <value>1</value>
1397                                                     </op>
1398                                                     <unop op="~">
1399                                                         <value>1</value>
1400                                                     </unop>
1401                                                 </op>
1402                                                 <fieldref>totalKeyExplicit</fieldref>
1403                                             </op>
1404                                         </list>
1405                                 </bitcase>
1406                                 <bitcase>
1407                                         <enumref ref="MapPart">ModifierMap</enumref>
1408                                         <list name="modmap_rtrn" type="KeyModMap">
1409                                                 <fieldref>totalModMapKeys</fieldref>
1410                                         </list>
1411                                         <list type="CARD16" name="alignment_pad4">
1412                                             <op op="-">
1413                                                 <op op="&amp;">
1414                                                     <op op="+">
1415                                                         <fieldref>totalModMapKeys</fieldref>
1416                                                         <value>1</value>
1417                                                     </op>
1418                                                     <unop op="~">
1419                                                         <value>1</value>
1420                                                     </unop>
1421                                                 </op>
1422                                                 <fieldref>totalModMapKeys</fieldref>
1423                                             </op>
1424                                         </list>
1425                                 </bitcase>
1426                                 <bitcase>
1427                                         <enumref ref="MapPart">VirtualModMap</enumref>
1428                                         <list name="vmodmap_rtrn" type="KeyVModMap">
1429                                                 <fieldref>totalVModMapKeys</fieldref>
1430                                         </list>
1431                                 </bitcase>
1432                         </switch>
1433                 </reply>
1434         </request>
1435
1436         <request name="SetMap" opcode="9">
1437                 <field name="deviceSpec" type="DeviceSpec" />
1438                 <field name="present" type="CARD16" mask="MapPart" />
1439                 <field name="flags" type="CARD16" mask="SetMapFlags" />
1440                 <field name="minKeyCode" type="KEYCODE" />
1441                 <field name="maxKeyCode" type="KEYCODE" />
1442                 <field name="firstType" type="CARD8" />
1443                 <field name="nTypes" type="CARD8" />
1444                 <field name="firstKeySym" type="KEYCODE" />
1445                 <field name="nKeySyms" type="CARD8" />
1446                 <field name="totalSyms" type="CARD16" />
1447                 <field name="firstKeyAction" type="KEYCODE" />
1448                 <field name="nKeyActions" type="CARD8" />
1449                 <field name="totalActions" type="CARD16" />
1450                 <field name="firstKeyBehavior" type="KEYCODE" />
1451                 <field name="nKeyBehaviors" type="CARD8" />
1452                 <field name="totalKeyBehaviors" type="CARD8" />
1453                 <field name="firstKeyExplicit" type="KEYCODE" />
1454                 <field name="nKeyExplicit" type="CARD8" />
1455                 <field name="totalKeyExplicit" type="CARD8" />
1456                 <field name="firstModMapKey" type="KEYCODE" />
1457                 <field name="nModMapKeys" type="CARD8" />
1458                 <field name="totalModMapKeys" type="CARD8" />
1459                 <field name="firstVModMapKey" type="KEYCODE" />
1460                 <field name="nVModMapKeys" type="CARD8" />
1461                 <field name="totalVModMapKeys" type="CARD8" />
1462                 <field name="virtualMods" type="CARD16" mask="VMod" />
1463                 <switch name="values">
1464                         <fieldref>present</fieldref>
1465                         <bitcase>
1466                                 <enumref ref="MapPart">KeyTypes</enumref>
1467                                 <list name="types" type="SetKeyType">
1468                                         <fieldref>nTypes</fieldref>
1469                                 </list>
1470                         </bitcase>
1471                         <bitcase>
1472                                 <enumref ref="MapPart">KeySyms</enumref>
1473                                 <list name="syms" type="KeySymMap">
1474                                         <fieldref>nKeySyms</fieldref>
1475                                 </list>
1476                         </bitcase>
1477                         <bitcase>
1478                                 <enumref ref="MapPart">KeyActions</enumref>
1479                                 <list name="actionsCount" type="CARD8">
1480                                         <fieldref>nKeyActions</fieldref>
1481                                 </list>
1482                                 <list name="actions" type="Action">
1483                                         <fieldref>totalActions</fieldref>
1484                                 </list>
1485                         </bitcase>
1486                         <bitcase>
1487                                 <enumref ref="MapPart">KeyBehaviors</enumref>
1488                                 <list name="behaviors" type="SetBehavior">
1489                                         <fieldref>totalKeyBehaviors</fieldref>
1490                                 </list>
1491                         </bitcase>
1492                         <bitcase>
1493                                 <enumref ref="MapPart">VirtualMods</enumref>
1494                                 <list name="vmods" type="CARD8">
1495                                         <popcount><fieldref>virtualMods</fieldref></popcount>
1496                                 </list>
1497                         </bitcase>
1498                         <bitcase>
1499                                 <enumref ref="MapPart">ExplicitComponents</enumref>
1500                                 <list name="explicit" type="SetExplicit">
1501                                         <fieldref>totalKeyExplicit</fieldref>
1502                                 </list>
1503                         </bitcase>
1504                         <bitcase>
1505                                 <enumref ref="MapPart">ModifierMap</enumref>
1506                                 <list name="modmap" type="KeyModMap">
1507                                         <fieldref>totalModMapKeys</fieldref>
1508                                 </list>
1509                         </bitcase>
1510                         <bitcase>
1511                                 <enumref ref="MapPart">VirtualModMap</enumref>
1512                                 <list name="vmodmap" type="KeyVModMap">
1513                                         <fieldref>totalVModMapKeys</fieldref>
1514                                 </list>
1515                         </bitcase>
1516                 </switch>
1517         </request>
1518
1519         <request name="GetCompatMap" opcode="10">
1520                 <field name="deviceSpec" type="DeviceSpec" />
1521                 <field name="groups" type="CARD8" mask="SetOfGroup" />
1522                 <field name="getAllSI" type="BOOL" />
1523                 <field name="firstSI" type="CARD16" />
1524                 <field name="nSI" type="CARD16" />
1525                 <reply>
1526                         <field name="deviceID" type="CARD8" />
1527                         <field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
1528                         <pad bytes="1" />
1529                         <field name="firstSIRtrn" type="CARD16" />
1530                         <field name="nSIRtrn" type="CARD16" />
1531                         <field name="nTotalSI" type="CARD16" />
1532                         <pad bytes="16" />
1533                         <list name="si_rtrn" type="SymInterpret">
1534                                 <fieldref>nSIRtrn</fieldref>
1535                         </list>
1536                         <list name="group_rtrn" type="ModDef">
1537                                 <popcount>
1538                                         <fieldref>groupsRtrn</fieldref>
1539                                 </popcount>
1540                         </list>
1541                 </reply>
1542         </request>
1543
1544         <request name="SetCompatMap" opcode="11">
1545                 <field name="deviceSpec" type="DeviceSpec" />
1546                 <pad bytes="1" />
1547                 <field name="recomputeActions" type="BOOL" />
1548                 <field name="truncateSI" type="BOOL" />
1549                 <field name="groups" type="CARD8" mask="SetOfGroup" />
1550                 <field name="firstSI" type="CARD16" />
1551                 <field name="nSI" type="CARD16" />
1552                 <pad bytes="2"/>
1553                 <list name="si" type="SymInterpret">
1554                         <fieldref>nSI</fieldref>
1555                 </list>
1556                 <list name="groupMaps" type="ModDef">
1557                         <popcount>
1558                                 <fieldref>groups</fieldref>
1559                         </popcount>
1560                 </list>
1561         </request>
1562
1563         <request name="GetIndicatorState" opcode="12">
1564                 <field name="deviceSpec" type="DeviceSpec" />
1565                 <pad bytes="2" />
1566                 <reply>
1567                         <field name="deviceID" type="CARD8" />
1568                         <field name="state" type="CARD32" />
1569                         <pad bytes="20" />
1570                 </reply>
1571         </request>
1572
1573         <request name="GetIndicatorMap" opcode="13">
1574                 <field name="deviceSpec" type="DeviceSpec" />
1575                 <pad bytes="2" />
1576                 <field name="which" type="CARD32" />
1577                 <reply>
1578                         <field name="deviceID" type="CARD8" />
1579                         <field name="which" type="CARD32" />
1580                         <field name="realIndicators" type="CARD32" />
1581                         <field name="nIndicators" type="CARD8" />
1582                         <pad bytes="15" />
1583                         <list name="maps" type="IndicatorMap">
1584                                 <popcount><fieldref>which</fieldref></popcount>
1585                         </list>
1586                 </reply>
1587         </request>
1588
1589         <request name="SetIndicatorMap" opcode="14">
1590                 <field name="deviceSpec" type="DeviceSpec" />
1591                 <pad bytes="2" />
1592                 <field name="which" type="CARD32" />
1593                 <list name="maps" type="IndicatorMap">
1594                         <popcount>
1595                                 <fieldref>which</fieldref>
1596                         </popcount>
1597                 </list>
1598         </request>
1599
1600         <request name="GetNamedIndicator" opcode="15">
1601                 <field name="deviceSpec" type="DeviceSpec" />
1602                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
1603                 <field name="ledID" type="IDSpec" altenum="ID" />
1604                 <pad bytes="2" />
1605                 <field name="indicator" type="ATOM" />
1606                 <reply>
1607                         <field name="deviceID" type="CARD8" />
1608                         <field name="indicator" type="ATOM" />
1609                         <field name="found" type="BOOL" />
1610                         <field name="on" type="BOOL" />
1611                         <field name="realIndicator" type="BOOL" />
1612                         <field name="ndx" type="CARD8" />
1613                         <field name="map_flags" type="CARD8" mask="IMFlag" />
1614                         <field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1615                         <field name="map_groups" type="CARD8" mask="SetOfGroups" />
1616                         <field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1617                         <field name="map_mods" type="CARD8" mask="ModMask" />
1618                         <field name="map_realMods" type="CARD8" mask="ModMask" />
1619                         <field name="map_vmod" type="CARD16" mask="VMod" />
1620                         <field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1621                         <field name="supported" type="BOOL" />
1622                         <pad bytes="3" />
1623                 </reply>
1624         </request>
1625
1626         <request name="SetNamedIndicator" opcode="16" >
1627                 <field name="deviceSpec" type="DeviceSpec" />
1628                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
1629                 <field name="ledID" type="IDSpec" altenum="ID" />
1630                 <pad bytes="2" />
1631                 <field name="indicator" type="ATOM" />
1632                 <field name="setState" type="BOOL" />
1633                 <field name="on" type="BOOL" />
1634                 <field name="setMap" type="BOOL" />
1635                 <field name="createMap" type="BOOL" />
1636                 <pad bytes="1" />
1637                 <field name="map_flags" type="CARD8" mask="IMFlag" />
1638                 <field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1639                 <field name="map_groups" type="CARD8" mask="SetOfGroups" />
1640                 <field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1641                 <field name="map_realMods" type="CARD8" mask="ModMask" />
1642                 <field name="map_vmods" type="CARD16" mask="VMod" />
1643                 <field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1644         </request>
1645
1646         <request name="GetNames" opcode="17">
1647                 <field name="deviceSpec" type="DeviceSpec" />
1648                 <pad bytes="2" />
1649                 <field name="which" type="CARD32" mask="NameDetail" />
1650                 <reply>
1651                         <field name="deviceID" type="CARD8" />
1652                         <field name="which" type="CARD32" mask="NameDetail" />
1653                         <field name="minKeyCode" type="KEYCODE" />
1654                         <field name="maxKeyCode" type="KEYCODE" />
1655                         <field name="nTypes" type="CARD8" />
1656                         <field name="groupNames" type="CARD8" mask="SetOfGroup" />
1657                         <field name="virtualMods" type="CARD16" mask="VMod" />
1658                         <field name="firstKey" type="KEYCODE" />
1659                         <field name="nKeys" type="CARD8" />
1660                         <field name="indicators" type="CARD32" />
1661                         <field name="nRadioGroups" type="CARD8" />
1662                         <field name="nKeyAliases" type="CARD8" />
1663                         <field name="nKTLevels" type="CARD16" />
1664                         <pad bytes="4" />
1665                         <switch name="valueList">
1666                                 <fieldref>which</fieldref>
1667                                 <bitcase>
1668                                         <enumref ref="NameDetail">Keycodes</enumref>
1669                                         <field name="keycodesName" type="ATOM" />
1670                                 </bitcase>
1671                                 <bitcase>
1672                                         <enumref ref="NameDetail">Geometry</enumref>
1673                                         <field name="geometryName" type="ATOM" />
1674                                 </bitcase>
1675                                 <bitcase>
1676                                         <enumref ref="NameDetail">Symbols</enumref>
1677                                         <field name="symbolsName" type="ATOM" />
1678                                 </bitcase>
1679                                 <bitcase>
1680                                         <enumref ref="NameDetail">PhysSymbols</enumref>
1681                                         <field name="physSymbolsName" type="ATOM" />
1682                                 </bitcase>
1683                                 <bitcase>
1684                                         <enumref ref="NameDetail">Types</enumref>
1685                                         <field name="typesName" type="ATOM" />
1686                                 </bitcase>
1687                                 <bitcase>
1688                                         <enumref ref="NameDetail">Compat</enumref>
1689                                         <field name="compatName" type="ATOM" />
1690                                 </bitcase>
1691                                 <bitcase>
1692                                         <enumref ref="NameDetail">KeyTypeNames</enumref>
1693                                         <list name="typeNames" type="ATOM">
1694                                                 <fieldref>nTypes</fieldref>
1695                                         </list>
1696                                 </bitcase>
1697                                 <bitcase>
1698                                         <enumref ref="NameDetail">KTLevelNames</enumref>
1699                                         <list name="nLevelsPerType" type="CARD8">
1700                                           <!-- Xlib uses NTypes here - 
1701                                                the spec says nKTLevels is correct, but
1702                                                it does not work in reality
1703                                                <fieldref>nKTLevels</fieldref> -->
1704                                                 <fieldref>nTypes</fieldref>
1705                                         </list>
1706                                         <list type="CARD8" name="alignment_pad">
1707                                             <op op="-">
1708                                                 <op op="&amp;">
1709                                                     <op op="+">
1710                                                         <fieldref>nTypes</fieldref>
1711                                                         <value>3</value>
1712                                                     </op>
1713                                                     <unop op="~">
1714                                                         <value>3</value>
1715                                                     </unop>
1716                                                 </op>
1717                                                 <fieldref>nTypes</fieldref>
1718                                             </op>
1719                                         </list>
1720                                         <list name="ktLevelNames" type="ATOM">
1721                                                 <sumof ref="nLevelsPerType" />
1722                                         </list>
1723                                 </bitcase>
1724                                 <bitcase>
1725                                         <enumref ref="NameDetail">IndicatorNames</enumref>
1726                                         <list name="indicatorNames" type="ATOM">
1727                                                 <popcount>
1728                                                         <fieldref>indicators</fieldref>
1729                                                 </popcount>
1730                                         </list>
1731                                 </bitcase>
1732                                 <bitcase>
1733                                         <enumref ref="NameDetail">VirtualModNames</enumref>
1734                                         <list name="virtualModNames" type="ATOM">
1735                                                 <popcount>
1736                                                         <fieldref>virtualMods</fieldref>
1737                                                 </popcount>
1738                                         </list>
1739                                 </bitcase>
1740                                 <bitcase>
1741                                         <enumref ref="NameDetail">GroupNames</enumref>
1742                                         <list name="groups" type="ATOM">
1743                                                 <popcount>
1744                                                         <fieldref>groupNames</fieldref>
1745                                                 </popcount>
1746                                         </list>
1747                                 </bitcase>
1748                                 <bitcase>
1749                                         <enumref ref="NameDetail">KeyNames</enumref>
1750                                         <list name="keyNames" type="KeyName">
1751                                                 <fieldref>nKeys</fieldref>
1752                                         </list>
1753                                 </bitcase>
1754                                 <bitcase>
1755                                         <enumref ref="NameDetail">KeyAliases</enumref>
1756                                         <list name="keyAliases" type="KeyAlias">
1757                                                 <fieldref>nKeyAliases</fieldref>
1758                                         </list>
1759                                 </bitcase>
1760                                 <bitcase>
1761                                         <enumref ref="NameDetail">RGNames</enumref>
1762                                         <list name="radioGroupNames" type="ATOM">
1763                                                 <fieldref>nRadioGroups</fieldref>
1764                                         </list>
1765                                 </bitcase>
1766                         </switch>
1767                 </reply>
1768         </request>
1769
1770         <request name="SetNames" opcode="18">
1771                 <field name="deviceSpec" type="DeviceSpec" />
1772                 <field name="virtualMods" type="CARD16" mask="VMod" />
1773                 <field name="which" type="CARD32" mask="NameDetail" />
1774                 <field name="firstType" type="CARD8" />
1775                 <field name="nTypes" type="CARD8" />
1776                 <field name="firstKTLevelt" type="CARD8" />
1777                 <field name="nKTLevels" type="CARD8" />
1778                 <field name="indicators" type="CARD32" />
1779                 <field name="groupNames" type="CARD8" mask="SetOfGroup" />
1780                 <field name="nRadioGroups" type="CARD8" />
1781                 <field name="firstKey" type="KEYCODE" />
1782                 <field name="nKeys" type="CARD8" />
1783                 <field name="nKeyAliases" type="CARD8"/>
1784                 <pad bytes="1" />
1785                 <field name="totalKTLevelNames" type="CARD16" />
1786                 <switch name="values">
1787                         <fieldref>which</fieldref>
1788                         <bitcase>
1789                                 <enumref ref="NameDetail">Keycodes</enumref>
1790                                 <field name="keycodesName" type="ATOM" />
1791                         </bitcase>
1792                         <bitcase>
1793                                 <enumref ref="NameDetail">Geometry</enumref>
1794                                 <field name="geometryName" type="ATOM" />
1795                         </bitcase>
1796                         <bitcase>
1797                                 <enumref ref="NameDetail">Symbols</enumref>
1798                                 <field name="symbolsName" type="ATOM" />
1799                         </bitcase>
1800                         <bitcase>
1801                                 <enumref ref="NameDetail">PhysSymbols</enumref>
1802                                 <field name="physSymbolsName" type="ATOM" />
1803                         </bitcase>
1804                         <bitcase>
1805                                 <enumref ref="NameDetail">Types</enumref>
1806                                 <field name="typesName" type="ATOM" />
1807                         </bitcase>
1808                         <bitcase>
1809                                 <enumref ref="NameDetail">Compat</enumref>
1810                                 <field name="compatName" type="ATOM" />
1811                         </bitcase>
1812                         <bitcase>
1813                                 <enumref ref="NameDetail">KeyTypeNames</enumref>
1814                                 <list name="typeNames" type="ATOM">
1815                                         <fieldref>nTypes</fieldref>
1816                                 </list>
1817                         </bitcase>
1818                         <bitcase>
1819                                 <enumref ref="NameDetail">KTLevelNames</enumref>
1820                                 <list name="nLevelsPerType" type="CARD8">
1821                                         <fieldref>nKTLevels</fieldref>
1822                                 </list>
1823                                 <list name="ktLevelNames" type="ATOM">
1824                                         <sumof ref="nLevelsPerType" />
1825                                 </list>
1826                         </bitcase>
1827                         <bitcase>
1828                                 <enumref ref="NameDetail">IndicatorNames</enumref>
1829                                 <list name="indicatorNames" type="ATOM">
1830                                         <popcount>
1831                                                 <fieldref>indicators</fieldref>
1832                                         </popcount>
1833                                 </list>
1834                         </bitcase>
1835                         <bitcase>
1836                                 <enumref ref="NameDetail">VirtualModNames</enumref>
1837                                 <list name="virtualModNames" type="ATOM">
1838                                         <popcount>
1839                                                 <fieldref>virtualMods</fieldref>
1840                                         </popcount>
1841                                 </list>
1842                         </bitcase>
1843                         <bitcase>
1844                                 <enumref ref="NameDetail">GroupNames</enumref>
1845                                 <list name="groups" type="ATOM">
1846                                         <popcount>
1847                                                 <fieldref>groupNames</fieldref>
1848                                         </popcount>
1849                                 </list>
1850                         </bitcase>
1851                         <bitcase>
1852                                 <enumref ref="NameDetail">KeyNames</enumref>
1853                                 <list name="keyNames" type="KeyName">
1854                                         <fieldref>nKeys</fieldref>
1855                                 </list>
1856                         </bitcase>
1857                         <bitcase>
1858                                 <enumref ref="NameDetail">KeyAliases</enumref>
1859                                 <list name="keyAliases" type="KeyAlias">
1860                                         <fieldref>nKeyAliases</fieldref>
1861                                 </list>
1862                         </bitcase>
1863                         <bitcase>
1864                                 <enumref ref="NameDetail">RGNames</enumref>
1865                                 <list name="radioGroupNames" type="ATOM">
1866                                         <fieldref>nRadioGroups</fieldref>
1867                                 </list>
1868                         </bitcase>
1869                 </switch>
1870         </request>
1871
1872         <request name="GetGeometry" opcode="19">
1873                 <field name="deviceSpec" type="DeviceSpec" />
1874                 <pad bytes="2" />
1875                 <field name="name" type="ATOM" />
1876                 <reply>
1877                         <field name="deviceID" type="CARD8" />
1878                         <field name="name" type="ATOM" />
1879                         <field name="found" type="BOOL" />
1880                         <pad bytes="1" />
1881                         <field name="widthMM" type="CARD16" />
1882                         <field name="heightMM" type="CARD16" />
1883                         <field name="nProperties" type="CARD16" />
1884                         <field name="nColors" type="CARD16" />
1885                         <field name="nShapes" type="CARD16" />
1886                         <field name="nSections" type="CARD16" />
1887                         <field name="nDoodads" type="CARD16" />
1888                         <field name="nKeyAliases" type="CARD16" />
1889                         <field name="baseColorNdx" type="CARD8" />
1890                         <field name="labelColorNdx" type="CARD8" />
1891                         <field name="labelFont" type="CountedString16" />
1892                         <list name="properties" type="Property">
1893                                 <fieldref>nProperties</fieldref>
1894                         </list>
1895                         <list name="colors" type="CountedString16">
1896                                 <fieldref>nColors</fieldref>
1897                         </list>
1898                         <list name="shapes" type="Shape">
1899                                 <fieldref>nShapes</fieldref>
1900                         </list>
1901                         <list name="sections" type="Section">
1902                                 <fieldref>nSections</fieldref>
1903                         </list>
1904                         <list name="doodads" type="Doodad">
1905                                 <fieldref>nDoodads</fieldref>
1906                         </list>
1907                         <list name="keyAliases" type="KeyAlias">
1908                                 <fieldref>nKeyAliases</fieldref>
1909                         </list>
1910                 </reply>
1911         </request>
1912
1913         <request name="SetGeometry" opcode="20">
1914                 <field name="deviceSpec" type="DeviceSpec" />
1915                 <field name="nShapes" type="CARD8" />
1916                 <field name="nSections" type="CARD8" />
1917                 <field name="name" type="ATOM" />
1918                 <field name="widthMM" type="CARD16" />
1919                 <field name="heightMM" type="CARD16" />
1920                 <field name="nProperties" type="CARD16" />
1921                 <field name="nColors" type="CARD16" />
1922                 <field name="nDoodads" type="CARD16" />
1923                 <field name="nKeyAliases" type="CARD16" />
1924                 <field name="baseColorNdx" type="CARD8" />
1925                 <field name="labelColorNdx" type="CARD8" />
1926                 <pad bytes="2" />
1927                 <field name="labelFont" type="CountedString16" />
1928                 <list name="properties" type="Property">
1929                         <fieldref>nProperties</fieldref>
1930                 </list>
1931                 <list name="colors" type="CountedString16">
1932                         <fieldref>nColors</fieldref>
1933                 </list>
1934                 <list name="shapes" type="Shape">
1935                         <fieldref>nShapes</fieldref>
1936                 </list>
1937                 <list name="sections" type="Section">
1938                         <fieldref>nSections</fieldref>
1939                 </list>
1940                 <list name="doodads" type="Doodad">
1941                         <fieldref>nDoodads</fieldref>
1942                 </list>
1943                 <list name="keyAliases" type="KeyAlias">
1944                         <fieldref>nKeyAliases</fieldref>
1945                 </list>
1946         </request>
1947
1948         <request name="PerClientFlags" opcode="21">
1949                 <field name="deviceSpec" type="DeviceSpec" />
1950                 <pad bytes="2" />
1951                 <field name="change" type="CARD32" mask="PerClientFlag" />
1952                 <field name="value" type="CARD32" mask="PerClientFlag" />
1953                 <field name="ctrlsToChange" type="CARD32" mask="BoolCtrl" />
1954                 <field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1955                 <field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1956                 <reply>
1957                         <field name="deviceID" type="CARD8"/>
1958                         <field name="supported" type="CARD32" mask="PerClientFlag" />
1959                         <field name="value" type="CARD32" mask="PerClientFlag" />
1960                         <field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1961                         <field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1962                         <pad bytes="8" />
1963                 </reply>
1964         </request>
1965
1966         <request name="ListComponents" opcode="22">
1967                 <field name="deviceSpec" type="DeviceSpec" />
1968                 <field name="maxNames" type="CARD16" />
1969                 <field name="keymapsSpecLen" type="CARD8" />
1970                 <list name="keymapsSpec" type="STRING8">
1971                         <fieldref>keymapsSpecLen</fieldref>
1972                 </list>
1973                 <field name="keycodesSpecLen" type="CARD8" />
1974                 <list name="keycodesSpec" type="STRING8">
1975                         <fieldref>keycodesSpecLen</fieldref>
1976                 </list>
1977                 <field name="typesSpecLen" type="CARD8" />
1978                 <list name="typesSpec" type="STRING8">
1979                         <fieldref>typesSpecLen</fieldref>
1980                 </list>
1981                 <field name="compatMapSpecLen" type="CARD8" />
1982                 <list name="compatMapSpec" type="STRING8">
1983                         <fieldref>compatMapSpecLen</fieldref>
1984                 </list>
1985                 <field name="symbolsSpecLen" type="CARD8" />
1986                 <list name="symbolsSpec" type="STRING8">
1987                         <fieldref>symbolsSpecLen</fieldref>
1988                 </list>
1989                 <field name="geometrySpecLen" type="CARD8" />
1990                 <list name="geometrySpec" type="STRING8">
1991                         <fieldref>geometrySpecLen</fieldref>
1992                 </list>
1993                 <reply>
1994                         <field name="deviceID" type="CARD8" />
1995                         <field name="nKeymaps" type="CARD16" />
1996                         <field name="nKeycodes" type="CARD16" />
1997                         <field name="nTypes" type="CARD16" />
1998                         <field name="nCompatMaps" type="CARD16" />
1999                         <field name="nSymbols" type="CARD16" />
2000                         <field name="nGeometries" type="CARD16" />
2001                         <field name="extra" type="CARD16" />
2002                         <pad bytes="10" />
2003                         <list name="keymaps" type="Listing">
2004                                 <fieldref>nKeymaps</fieldref>
2005                         </list>
2006                         <list name="keycodes" type="Listing">
2007                                 <fieldref>nKeycodes</fieldref>
2008                         </list>
2009                         <list name="types" type="Listing">
2010                                 <fieldref>nTypes</fieldref>
2011                         </list>
2012                         <list name="compatMaps" type="Listing">
2013                                 <fieldref>nCompatMaps</fieldref>
2014                         </list>
2015                         <list name="symbols" type="Listing">
2016                                 <fieldref>nSymbols</fieldref>
2017                         </list>
2018                         <list name="geometries" type="Listing">
2019                                 <fieldref>nGeometries</fieldref>
2020                         </list>
2021                 </reply>
2022         </request>
2023
2024         <request name="GetKbdByName" opcode="23">
2025                 <field name="deviceSpec" type="DeviceSpec" />
2026                 <field name="need" type="CARD16" mask="GBNDetail" />
2027                 <field name="want" type="CARD16" mask="GBNDetail" />
2028                 <field name="load" type="BOOL" />
2029                 <pad bytes="1" />
2030                 <field name="keymapsSpecLen" type="CARD8" />
2031                 <list name="keymapsSpec" type="STRING8">
2032                         <fieldref>keymapsSpecLen</fieldref>
2033                 </list>
2034                 <field name="keycodesSpecLen" type="CARD8" />
2035                 <list name="keycodesSpec" type="STRING8">
2036                         <fieldref>keycodesSpecLen</fieldref>
2037                 </list>
2038                 <field name="typesSpecLen" type="CARD8" />
2039                 <list name="typesSpec" type="STRING8">
2040                         <fieldref>typesSpecLen</fieldref>
2041                 </list>
2042                 <field name="compatMapSpecLen" type="CARD8" />
2043                 <list name="compatMapSpec" type="STRING8">
2044                         <fieldref>compatMapSpecLen</fieldref>
2045                 </list>
2046                 <field name="symbolsSpecLen" type="CARD8" />
2047                 <list name="symbolsSpec" type="STRING8">
2048                         <fieldref>symbolsSpecLen</fieldref>
2049                 </list>
2050                 <field name="geometrySpecLen" type="CARD8" />
2051                 <list name="geometrySpec" type="STRING8">
2052                         <fieldref>geometrySpecLen</fieldref>
2053                 </list>
2054                 <reply>
2055                         <field name="deviceID" type="CARD8" />
2056                         <field name="minKeyCode" type="KEYCODE" />
2057                         <field name="maxKeyCode" type="KEYCODE" />
2058                         <field name="loaded" type="BOOL" />
2059                         <field name="newKeyboard" type="BOOL" />
2060                         <field name="found" type="CARD16" mask="GBNDetail" />
2061                         <field name="reported" type="CARD16" mask="GBNDetail" />
2062                         <pad bytes="16" />
2063                         <switch name="replies">
2064                                 <fieldref>reported</fieldref>
2065                                 <bitcase name="types">
2066                                         <enumref ref="GBNDetail">Types</enumref>
2067                                         <enumref ref="GBNDetail">ClientSymbols</enumref>
2068                                         <enumref ref="GBNDetail">ServerSymbols</enumref>
2069                                         <!-- from the spec, this has to be a GetMap reply -->
2070                                         <field name="getmap_type" type="CARD8" />
2071                                         <!-- done 'emulating' GetMap reply header-->
2072                                         <field name="typeDeviceID" type="CARD8" />
2073                                         <!-- from the spec, this has to be a GetMap reply -->
2074                                         <field name="getmap_sequence" type="CARD16" />
2075                                         <field name="getmap_length" type="CARD32" />
2076                                         <!-- done 'emulating' GetMap reply header-->
2077                                         <pad bytes="2" />
2078                                         <field name="typeMinKeyCode" type="KEYCODE" />
2079                                         <field name="typeMaxKeyCode" type="KEYCODE" />
2080                                         <field name="present" type="CARD16" mask="MapPart" />
2081                                         <field name="firstType" type="CARD8" />
2082                                         <field name="nTypes" type="CARD8" />
2083                                         <field name="totalTypes" type="CARD8" />
2084                                         <field name="firstKeySym" type="KEYCODE" />
2085                                         <field name="totalSyms" type="CARD16" />
2086                                         <field name="nKeySyms" type="CARD8" />
2087                                         <field name="firstKeyAction" type="KEYCODE" />
2088                                         <field name="totalActions" type="CARD16" />
2089                                         <field name="nKeyActions" type="CARD8" />
2090                                         <field name="firstKeyBehavior" type="KEYCODE" />
2091                                         <field name="nKeyBehaviors" type="CARD8" />
2092                                         <field name="totalKeyBehaviors" type="CARD8" />
2093                                         <field name="firstKeyExplicit" type="KEYCODE" />
2094                                         <field name="nKeyExplicit" type="CARD8" />
2095                                         <field name="totalKeyExplicit" type="CARD8" />
2096                                         <field name="firstModMapKey" type="KEYCODE" />
2097                                         <field name="nModMapKeys" type="CARD8" />
2098                                         <field name="totalModMapKeys" type="CARD8" />
2099                                         <field name="firstVModMapKey" type="KEYCODE" />
2100                                         <field name="nVModMapKeys" type="CARD8" />
2101                                         <field name="totalVModMapKeys" type="CARD8" />
2102                                         <pad bytes="1" />
2103                                         <field name="virtualMods" type="CARD16" mask="VMod" />
2104                                         <switch name="map">
2105                                                 <fieldref>present</fieldref>
2106                                                 <bitcase>
2107                                                         <enumref ref="MapPart">KeyTypes</enumref>
2108                                                         <list name="types_rtrn" type="KeyType">
2109                                                                 <fieldref>nTypes</fieldref>
2110                                                         </list>
2111                                                 </bitcase>
2112                                                 <bitcase>
2113                                                         <enumref ref="MapPart">KeySyms</enumref>
2114                                                         <list name="syms_rtrn" type="KeySymMap">
2115                                                                 <fieldref>nKeySyms</fieldref>
2116                                                         </list>
2117                                                 </bitcase>
2118                                                 <bitcase>
2119                                                         <enumref ref="MapPart">KeyActions</enumref>
2120                                                         <list name="acts_rtrn_count" type="CARD8">
2121                                                                 <fieldref>nKeyActions</fieldref>
2122                                                         </list>
2123                                                         <list name="acts_rtrn_acts" type="Action">
2124                                                                 <fieldref>totalActions</fieldref>
2125                                                         </list>
2126                                                 </bitcase>
2127                                                 <bitcase>
2128                                                         <enumref ref="MapPart">KeyBehaviors</enumref>
2129                                                         <list name="behaviors_rtrn" type="SetBehavior">
2130                                                                 <fieldref>totalKeyBehaviors</fieldref>
2131                                                         </list>
2132                                                 </bitcase>
2133                                                 <bitcase>
2134                                                         <enumref ref="MapPart">VirtualMods</enumref>
2135                                                         <list name="vmods_rtrn" type="CARD8" mask="ModMask">
2136                                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
2137                                                         </list>
2138                                                 </bitcase>
2139                                                 <bitcase>
2140                                                         <enumref ref="MapPart">ExplicitComponents</enumref>
2141                                                         <list name="explicit_rtrn" type="SetExplicit">
2142                                                                 <fieldref>totalKeyExplicit</fieldref>
2143                                                         </list>
2144                                                 </bitcase>
2145                                                 <bitcase>
2146                                                         <enumref ref="MapPart">ModifierMap</enumref>
2147                                                         <list name="modmap_rtrn" type="KeyModMap">
2148                                                                 <fieldref>totalModMapKeys</fieldref>
2149                                                         </list>
2150                                                 </bitcase>
2151                                                 <bitcase>
2152                                                         <enumref ref="MapPart">VirtualModMap</enumref>
2153                                                         <list name="vmodmap_rtrn" type="KeyVModMap">
2154                                                                 <fieldref>totalVModMapKeys</fieldref>
2155                                                         </list>
2156                                                 </bitcase>
2157                                         </switch>
2158                                 </bitcase>
2159                                 <bitcase name="compat_map">
2160                                         <enumref ref="GBNDetail">CompatMap</enumref>
2161                                         <!-- from the spec, this has to include a reply header -->
2162                                         <field name="compatmap_type" type="CARD8" />
2163                                         <field name="compatDeviceID" type="CARD8" />
2164                                         <field name="compatmap_sequence" type="CARD16" />
2165                                         <field name="compatmap_length" type="CARD32" />
2166                                         <!-- done 'emulating' reply header -->
2167                                         <field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
2168                                         <pad bytes="1" />
2169                                         <field name="firstSIRtrn" type="CARD16" />
2170                                         <field name="nSIRtrn" type="CARD16" />
2171                                         <field name="nTotalSI" type="CARD16" />
2172                                         <pad bytes="16" />
2173                                         <list name="si_rtrn" type="SymInterpret">
2174                                                 <fieldref>nSIRtrn</fieldref>
2175                                         </list>
2176                                         <list name="group_rtrn" type="ModDef">
2177                                                 <popcount>
2178                                                         <fieldref>groupsRtrn</fieldref>
2179                                                 </popcount>
2180                                         </list>
2181                                 </bitcase>
2182                                 <bitcase name="indicator_maps">
2183                                         <enumref ref="GBNDetail">IndicatorMaps</enumref>
2184                                         <!-- from the spec, this has to include a reply header -->
2185                                         <field name="indicatormap_type" type="CARD8" />
2186                                         <field name="indicatorDeviceID" type="CARD8" />
2187                                         <field name="indicatormap_sequence" type="CARD16" />
2188                                         <field name="indicatormap_length" type="CARD32" />
2189                                         <!-- done 'emulating' reply header -->
2190                                         <field name="which" type="CARD32" />
2191                                         <field name="realIndicators" type="CARD32" />
2192                                         <field name="nIndicators" type="CARD8" />
2193                                         <pad bytes="15" />
2194                                         <list name="maps" type="IndicatorMap">
2195                                                 <fieldref>nIndicators</fieldref>
2196                                         </list>
2197                                 </bitcase>
2198                                 <bitcase name="key_names">
2199                                         <enumref ref="GBNDetail">KeyNames</enumref>
2200                                         <enumref ref="GBNDetail">OtherNames</enumref>
2201                                         <!-- from the spec, this has to include a reply header -->
2202                                         <field name="keyname_type" type="CARD8" />
2203                                         <field name="keyDeviceID" type="CARD8" />
2204                                         <field name="keyname_sequence" type="CARD16" />
2205                                         <field name="keyname_length" type="CARD32" />
2206                                         <!-- done 'emulating' reply header -->
2207                                         <field name="which" type="CARD32" mask="NameDetail" />
2208                                         <field name="keyMinKeyCode" type="KEYCODE" />
2209                                         <field name="keyMaxKeyCode" type="KEYCODE" />
2210                                         <field name="nTypes" type="CARD8" />
2211                                         <field name="groupNames" type="CARD8" mask="SetOfGroup" />
2212                                         <field name="virtualMods" type="CARD16" mask="VMod" />
2213                                         <field name="firstKey" type="KEYCODE" />
2214                                         <field name="nKeys" type="CARD8" />
2215                                         <field name="indicators" type="CARD32" />
2216                                         <field name="nRadioGroups" type="CARD8" />
2217                                         <field name="nKeyAliases" type="CARD8" />
2218                                         <field name="nKTLevels" type="CARD16" />
2219                                         <pad bytes="4" />
2220                                         <switch name="valueList">
2221                                                 <fieldref>which</fieldref>
2222                                                 <bitcase>
2223                                                         <enumref ref="NameDetail">Keycodes</enumref>
2224                                                         <field name="keycodesName" type="ATOM" />
2225                                                 </bitcase>
2226                                                 <bitcase>
2227                                                         <enumref ref="NameDetail">Geometry</enumref>
2228                                                         <field name="geometryName" type="ATOM" />
2229                                                 </bitcase>
2230                                                 <bitcase>
2231                                                         <enumref ref="NameDetail">Symbols</enumref>
2232                                                         <field name="symbolsName" type="ATOM" />
2233                                                 </bitcase>
2234                                                 <bitcase>
2235                                                         <enumref ref="NameDetail">PhysSymbols</enumref>
2236                                                         <field name="physSymbolsName" type="ATOM" />
2237                                                 </bitcase>
2238                                                 <bitcase>
2239                                                         <enumref ref="NameDetail">Types</enumref>
2240                                                         <field name="typesName" type="ATOM" />
2241                                                 </bitcase>
2242                                                 <bitcase>
2243                                                         <enumref ref="NameDetail">Compat</enumref>
2244                                                         <field name="compatName" type="ATOM" />
2245                                                 </bitcase>
2246                                                 <bitcase>
2247                                                         <enumref ref="NameDetail">KeyTypeNames</enumref>
2248                                                         <list name="typeNames" type="ATOM">
2249                                                                 <fieldref>nTypes</fieldref>
2250                                                         </list>
2251                                                 </bitcase>
2252                                                 <bitcase>
2253                                                         <enumref ref="NameDetail">KTLevelNames</enumref>
2254                                                         <list name="nLevelsPerType" type="CARD8">
2255                                                                 <fieldref>nKTLevels</fieldref>
2256                                                         </list>
2257                                                         <list name="ktLevelNames" type="ATOM">
2258                                                                 <sumof ref="nLevelsPerType" />
2259                                                         </list>
2260                                                 </bitcase>
2261                                                 <bitcase>
2262                                                         <enumref ref="NameDetail">IndicatorNames</enumref>
2263                                                         <list name="indicatorNames" type="ATOM">
2264                                                                 <popcount>
2265                                                                         <fieldref>indicators</fieldref>
2266                                                                 </popcount>
2267                                                         </list>
2268                                                 </bitcase>
2269                                                 <bitcase>
2270                                                         <enumref ref="NameDetail">VirtualModNames</enumref>
2271                                                         <list name="virtualModNames" type="ATOM">
2272                                                                 <popcount>
2273                                                                         <fieldref>virtualMods</fieldref>
2274                                                                 </popcount>
2275                                                         </list>
2276                                                 </bitcase>
2277                                                 <bitcase>
2278                                                         <enumref ref="NameDetail">GroupNames</enumref>
2279                                                         <list name="groups" type="ATOM">
2280                                                                 <popcount>
2281                                                                         <fieldref>groupNames</fieldref>
2282                                                                 </popcount>
2283                                                         </list>
2284                                                 </bitcase>
2285                                                 <bitcase>
2286                                                         <enumref ref="NameDetail">KeyNames</enumref>
2287                                                         <list name="keyNames" type="KeyName">
2288                                                                 <fieldref>nKeys</fieldref>
2289                                                         </list>
2290                                                 </bitcase>
2291                                                 <bitcase>
2292                                                         <enumref ref="NameDetail">KeyAliases</enumref>
2293                                                         <list name="keyAliases" type="KeyAlias">
2294                                                                 <fieldref>nKeyAliases</fieldref>
2295                                                         </list>
2296                                                 </bitcase>
2297                                                 <bitcase>
2298                                                         <enumref ref="NameDetail">RGNames</enumref>
2299                                                         <list name="radioGroupNames" type="ATOM">
2300                                                                 <fieldref>nRadioGroups</fieldref>
2301                                                         </list>
2302                                                 </bitcase>
2303                                         </switch>
2304                                 </bitcase>
2305                                 <bitcase name="geometry">
2306                                         <enumref ref="GBNDetail">Geometry</enumref>
2307                                         <!-- from the spec, this has to include a reply header -->
2308                                         <field name="geometry_type" type="CARD8" />
2309                                         <field name="geometryDeviceID" type="CARD8" />
2310                                         <field name="geometry_sequence" type="CARD16" />
2311                                         <field name="geometry_length" type="CARD32" />
2312                                         <!-- done 'emulating' reply header -->
2313                                         <field name="name" type="ATOM" />
2314                                         <field name="geometryFound" type="BOOL" />
2315                                         <pad bytes="1" />
2316                                         <field name="widthMM" type="CARD16" />
2317                                         <field name="heightMM" type="CARD16" />
2318                                         <field name="nProperties" type="CARD16" />
2319                                         <field name="nColors" type="CARD16" />
2320                                         <field name="nShapes" type="CARD16" />
2321                                         <field name="nSections" type="CARD16" />
2322                                         <field name="nDoodads" type="CARD16" />
2323                                         <field name="nKeyAliases" type="CARD16" />
2324                                         <field name="baseColorNdx" type="CARD8" />
2325                                         <field name="labelColorNdx" type="CARD8" />
2326                                         <field name="labelFont" type="CountedString16" />
2327                                         <list name="properties" type="Property">
2328                                                 <fieldref>nProperties</fieldref>
2329                                         </list>
2330                                         <list name="colors" type="CountedString16">
2331                                                 <fieldref>nColors</fieldref>
2332                                         </list>
2333                                         <list name="shapes" type="Shape">
2334                                                 <fieldref>nShapes</fieldref>
2335                                         </list>
2336                                         <list name="sections" type="Section">
2337                                                 <fieldref>nSections</fieldref>
2338                                         </list>
2339                                         <list name="doodads" type="Doodad">
2340                                                 <fieldref>nDoodads</fieldref>
2341                                         </list>
2342                                         <list name="keyAliases" type="KeyAlias">
2343                                                 <fieldref>nKeyAliases</fieldref>
2344                                         </list>
2345                                 </bitcase>
2346                         </switch>
2347                 </reply>
2348         </request>
2349
2350         <request name="GetDeviceInfo" opcode="24">
2351                 <field name="deviceSpec" type="DeviceSpec" />
2352                 <field name="wanted" type="CARD16" mask="XIFeature" />
2353                 <field name="allButtons" type="BOOL" />
2354                 <field name="firstButton" type="CARD8" />
2355                 <field name="nButtons" type="CARD8" />
2356                 <pad bytes="1" />
2357                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
2358                 <field name="ledID" type="IDSpec" altenum="ID" />
2359                 <reply>
2360                         <field name="deviceID" type="CARD8" />
2361                         <field name="present" type="CARD16" mask="XIFeature" />
2362                         <field name="supported" type="CARD16" mask="XIFeature" />
2363                         <field name="unsupported" type="CARD16" mask="XIFeature" />
2364                         <field name="nDeviceLedFBs" type="CARD16" />
2365                         <field name="firstBtnWanted" type="CARD8" />
2366                         <field name="nBtnsWanted" type="CARD8" />
2367                         <field name="firstBtnRtrn" type="CARD8" />
2368                         <field name="nBtnsRtrn" type="CARD8" />
2369                         <field name="totalBtns" type="CARD8" />
2370                         <field name="hasOwnState" type="BOOL" />
2371                         <field name="dfltKbdFB" type="CARD16" altenum="ID" />
2372                         <field name="dfltLedFB" type="CARD16" altenum="ID" />
2373                         <pad bytes="2" />
2374                         <field name="devType" type="ATOM" />
2375                         <field name="nameLen" type="CARD16" />
2376                         <list name="name" type="STRING8">
2377                                 <fieldref>nameLen</fieldref>
2378                         </list>
2379                         <list name="btnActions" type="Action">
2380                                 <fieldref>nBtnsRtrn</fieldref>
2381                         </list>
2382                         <list name="leds" type="DeviceLedInfo">
2383                                 <fieldref>nDeviceLedFBs</fieldref>
2384                         </list>
2385                 </reply>
2386         </request>
2387
2388
2389         <request name="SetDeviceInfo" opcode="25">
2390                 <field name="deviceSpec" type="DeviceSpec" />
2391                 <field name="firstBtn" type="CARD8" />
2392                 <field name="nBtns" type="CARD8" />
2393                 <field name="change" type="CARD16" mask="XIFeature" />
2394                 <field name="nDeviceLedFBs" type="CARD16" />
2395                 <list name="btnActions" type="Action">
2396                         <fieldref>nBtns</fieldref>
2397                 </list>
2398                 <list name="leds" type="DeviceLedInfo">
2399                         <fieldref>nDeviceLedFBs</fieldref>
2400                 </list>
2401         </request>
2402
2403         <request name="SetDebuggingFlags" opcode="101">
2404                 <field name="msgLength" type="CARD16" />
2405                 <pad bytes="2" />
2406                 <field name="affectFlags" type="CARD32" />
2407                 <field name="flags" type="CARD32" />
2408                 <field name="affectCtrls" type="CARD32" />
2409                 <field name="ctrls" type="CARD32" />
2410                 <list name="message" type="STRING8">
2411                         <fieldref>msgLength</fieldref>
2412                 </list>
2413                 <reply>
2414                         <pad bytes="1" />
2415                         <field name="currentFlags" type="CARD32" />
2416                         <field name="currentCtrls" type="CARD32" />
2417                         <field name="supportedFlags" type="CARD32" />
2418                         <field name="supportedCtrls" type="CARD32" />
2419                         <pad bytes="8" />
2420                 </reply>
2421         </request>
2422
2423         <!-- Events -->
2424
2425         <event name="NewKeyboardNotify" number="0">
2426                 <field name="xkbType" type="CARD8" />
2427                 <field name="time" type="TIMESTAMP" />
2428                 <field name="deviceID" type="CARD8" />
2429                 <field name="oldDeviceID" type="CARD8" />
2430                 <field name="minKeyCode" type="KEYCODE" />
2431                 <field name="maxKeyCode" type="KEYCODE" />
2432                 <field name="oldMinKeyCode" type="KEYCODE" />
2433                 <field name="oldMaxKeyCode" type="KEYCODE" />
2434                 <field name="requestMajor" type="CARD8" />
2435                 <field name="requestMinor" type="CARD8" />
2436                 <field name="changed" type="CARD16" mask="NKNDetail" />
2437                 <pad bytes="14" />
2438         </event>
2439
2440         <event name="MapNotify" number="1">
2441                 <field name="xkbType" type="CARD8" />
2442                 <field name="time" type="TIMESTAMP" />
2443                 <field name="deviceID" type="CARD8" />
2444                 <field name="ptrBtnActions" type="CARD8" />
2445                 <field name="changed" type="CARD16" mask="MapPart" />
2446                 <field name="minKeyCode" type="KEYCODE" />
2447                 <field name="maxKeyCode" type="KEYCODE" />
2448                 <field name="firstType" type="CARD8" />
2449                 <field name="nTypes" type="CARD8" />
2450                 <field name="firstKeySym" type="KEYCODE" />
2451                 <field name="nKeySyms" type="CARD8" />
2452                 <field name="firstKeyAct" type="KEYCODE" />
2453                 <field name="nKeyActs" type="CARD8" />
2454                 <field name="firstKeyBehavior" type="KEYCODE" />
2455                 <field name="nKeyBehavior" type="CARD8" />
2456                 <field name="firstKeyExplicit" type="KEYCODE" />
2457                 <field name="nKeyExplicit" type="CARD8" />
2458                 <field name="firstModMapKey" type="KEYCODE" />
2459                 <field name="nModMapKeys" type="CARD8" />
2460                 <field name="firstVModMapKey" type="KEYCODE" />
2461                 <field name="nVModMapKeys" type="CARD8" />
2462                 <field name="virtualMods" type="CARD16" mask="VMod" />
2463                 <pad bytes="2" />
2464         </event>
2465
2466         <event name="StateNotify" number="2">
2467                 <field name="xkbType" type="CARD8" />
2468                 <field name="time" type="TIMESTAMP" />
2469                 <field name="deviceID" type="CARD8" />
2470                 <field name="mods" type="CARD8" mask="ModMask" />
2471                 <field name="baseMods" type="CARD8" mask="ModMask" />
2472                 <field name="latchedMods" type="CARD8" mask="ModMask" />
2473                 <field name="lockedMods" type="CARD8" mask="ModMask" />
2474                 <field name="group" type="CARD8" enum="Group" />
2475                 <field name="baseGroup" type="INT16" />
2476                 <field name="latchedGroup" type="INT16" />
2477                 <field name="lockedGroup" type="CARD8" enum="Group" />
2478                 <field name="compatState" type="CARD8" mask="ModMask" />
2479                 <field name="grabMods" type="CARD8" mask="ModMask" />
2480                 <field name="compatGrabMods" type="CARD8" mask="ModMask" />
2481                 <field name="lookupMods" type="CARD8" mask="ModMask" />
2482                 <field name="compatLoockupMods" type="CARD8" mask="ModMask" />
2483                 <field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
2484                 <field name="changed" type="CARD16" mask="StatePart" />
2485                 <field name="keycode" type="KEYCODE" />
2486                 <field name="eventType" type="CARD8" />
2487                 <field name="requestMajor" type="CARD8" />
2488                 <field name="requestMinor" type="CARD8" />
2489         </event>
2490
2491         <event name="ControlsNotify" number="3">
2492                 <field name="xkbType" type="CARD8" />
2493                 <field name="time" type="TIMESTAMP" />
2494                 <field name="deviceID" type="CARD8" />
2495                 <field name="numGroups" type="CARD8" />
2496                 <pad bytes="2" />
2497                 <field name="changedControls" type="CARD32" mask="Control" />
2498                 <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
2499                 <field name="enabledControlChanges" type="CARD32" mask="BoolCtrl" />
2500                 <field name="keycode" type="KEYCODE" />
2501                 <field name="eventType" type="CARD8" />
2502                 <field name="requestMajor" type="CARD8" />
2503                 <field name="requestMinor" type="CARD8" />
2504                 <pad bytes="4" />
2505         </event>
2506
2507         <event name="IndicatorStateNotify" number="4">
2508                 <field name="xkbType" type="CARD8" />
2509                 <field name="time" type="TIMESTAMP" />
2510                 <field name="deviceID" type="CARD8" />
2511                 <pad bytes="3" />
2512                 <field name="state" type="CARD32" />
2513                 <field name="stateChanged" type="CARD32" />
2514                 <pad bytes="12" />
2515         </event>
2516
2517         <event name="IndicatorMapNotify" number="5">
2518                 <field name="xkbType" type="CARD8" />
2519                 <field name="time" type="TIMESTAMP" />
2520                 <field name="deviceID" type="CARD8" />
2521                 <pad bytes="3" />
2522                 <field name="state" type="CARD32" />
2523                 <field name="mapChanged" type="CARD32" />
2524                 <pad bytes="12" />
2525         </event>
2526
2527         <event name="NamesNotify" number="6">
2528                 <field name="xkbType" type="CARD8" />
2529                 <field name="time" type="TIMESTAMP" />
2530                 <field name="deviceID" type="CARD8" />
2531                 <pad bytes="1" />
2532                 <field name="changed" type="CARD16" mask="NameDetail" />
2533                 <field name="firstType" type="CARD8" />
2534                 <field name="nTypes" type="CARD8" />
2535                 <field name="firstLevelName" type="CARD8" />
2536                 <field name="nLevelNames" type="CARD8" />
2537                 <pad bytes="1" />
2538                 <field name="nRadioGroups" type="CARD8" />
2539                 <field name="nKeyAliases" type="CARD8" />
2540                 <field name="changedGroupNames" type="CARD8" mask="SetOfGroup" />
2541                 <field name="changedVirtualMods" type="CARD16" mask="VMod" />
2542                 <field name="firstKey" type="KEYCODE" />
2543                 <field name="nKeys" type="CARD8" />
2544                 <field name="changedIndicators" type="CARD32" />
2545                 <pad bytes="4" />
2546         </event>
2547
2548         <event name="CompatMapNotify" number="7">
2549                 <field name="xkbType" type="CARD8" />
2550                 <field name="time" type="TIMESTAMP" />
2551                 <field name="deviceID" type="CARD8" />
2552                 <field name="changedGroups" type="CARD8" mask="SetOfGroup" />
2553                 <field name="firstSI" type="CARD16" />
2554                 <field name="nSI" type="CARD16" />
2555                 <field name="nTotalSI" type="CARD16" />
2556                 <pad bytes="16" />
2557         </event>
2558
2559         <event name="BellNotify" number="8">
2560                 <field name="xkbType" type="CARD8" />
2561                 <field name="time" type="TIMESTAMP" />
2562                 <field name="deviceID" type="CARD8" />
2563                 <field name="bellClass" type="CARD8" enum="BellClassResult" />
2564                 <field name="bellID" type="CARD8" />
2565                 <field name="percent" type="CARD8" />
2566                 <field name="pitch" type="CARD16" />
2567                 <field name="duration" type="CARD16" />
2568                 <field name="name" type="ATOM" />
2569                 <field name="window" type="WINDOW" />
2570                 <field name="eventOnly" type="BOOL" />
2571                 <pad bytes="7" />
2572         </event>
2573
2574         <event name="ActionMessage" number="9">
2575                 <field name="xkbType" type="CARD8" />
2576                 <field name="time" type="TIMESTAMP" />
2577                 <field name="deviceID" type="CARD8" />
2578                 <field name="keycode" type="KEYCODE" />
2579                 <field name="press" type="BOOL" />
2580                 <field name="keyEventFollows" type="BOOL" />
2581                 <field name="mods" type="CARD8" mask="ModMask" />
2582                 <field name="group" type="CARD8" enum="Group" />
2583                 <list name="message" type="STRING8">
2584                         <value>8</value>
2585                 </list>
2586                 <pad bytes="10" />
2587         </event>
2588
2589         <event name="AccessXNotify" number="10">
2590                 <field name="xkbType" type="CARD8" />
2591                 <field name="time" type="TIMESTAMP" />
2592                 <field name="deviceID" type="CARD8" />
2593                 <field name="keycode" type="KEYCODE" />
2594                 <field name="detailt" type="CARD16" mask="AXNDetail" />
2595                 <field name="slowKeysDelay" type="CARD16" />
2596                 <field name="debounceDelay" type="CARD16" />
2597                 <pad bytes="16" />
2598         </event>
2599
2600         <event name="ExtensionDeviceNotify" number="11">
2601                 <field name="xkbType" type="CARD8" />
2602                 <field name="time" type="TIMESTAMP" />
2603                 <field name="deviceID" type="CARD8" />
2604                 <pad bytes="1" />
2605                 <field name="reason" type="CARD16" mask="XIFeature" />
2606                 <field name="ledClass" type="CARD16" enum="LedClassResult" />
2607                 <field name="ledID" type="CARD16" />
2608                 <field name="ledsDefined" type="CARD32" />
2609                 <field name="ledState" type="CARD32" />
2610                 <field name="firstButton" type="CARD8" />
2611                 <field name="nButtons" type="CARD8" />
2612                 <field name="supported" type="CARD16" mask="XIFeature" />
2613                 <field name="unsupported" type="CARD16" mask="XIFeature" />
2614                 <pad bytes="2" />
2615         </event>
2616 </xcb>