8c9b0674875769ab967e1d659ad1396a33f4a3db
[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         <!-- XXX: Property is broken
551         <struct name="Property">
552                 <field name="nameLength" type="CARD16" />
553                 <list name="name" type="STRING8">
554                         <fieldref>nameLength</fieldref>
555                 </list>
556                 <field name="valueLength" type="CARD16" />
557                 <list name="value" type="STRING8">
558                         <fieldref>valueLength</fieldref>
559                 </list>
560         </struct>
561         -->
562
563         <struct name="Outline">
564                 <field name="nPoints" type="CARD8" />
565                 <field name="cornerRadius" type="CARD8" />
566                 <pad bytes="2" />
567                 <list name="points" type="POINT">
568                         <fieldref>nPoints</fieldref>
569                 </list>
570         </struct>
571
572         <struct name="Shape">
573                 <field name="name" type="ATOM" />
574                 <field name="nOutlines" type="CARD8" />
575                 <field name="primaryNdx" type="CARD8" />
576                 <field name="approxNdx" type="CARD8" />
577                 <pad bytes="1" />
578                 <list name="outlines" type="Outline">
579                         <fieldref>nOutlines</fieldref>
580                 </list>
581         </struct>
582
583         <struct name="Key">
584                 <list name="name" type="STRING8">
585                         <value>4</value>
586                 </list>
587                 <field name="gap" type="INT16" />
588                 <field name="shapeNdx" type="CARD8" />
589                 <field name="colorNdx" type="CARD8" />
590         </struct>
591
592         <struct name="OverlayKey">
593                 <list name="over" type="STRING8">
594                         <value>4</value>
595                 </list>
596                 <list name="under" type="STRING8">
597                         <value>4</value>
598                 </list>
599         </struct>
600
601         <struct name="OverlayRow">
602                 <field name="rowUnder" type="CARD8" />
603                 <field name="nKeys" type="CARD8" />
604                 <pad bytes="2" />
605                 <list name="keys" type="OverlayKey">
606                         <fieldref>nKeys</fieldref>
607                 </list>
608         </struct>
609
610         <struct name="Overlay">
611                 <field name="name" type="ATOM" />
612                 <field name="nRows" type="CARD8" />
613                 <pad bytes="3" />
614                 <list name="rows" type="OverlayRow">
615                         <fieldref>nRows</fieldref>
616                 </list>
617         </struct>
618
619         <struct name="Row">
620                 <field name="top" type="INT16" />
621                 <field name="left" type="INT16" />
622                 <field name="nKeys" type="CARD8" />
623                 <field name="vertical" type="BOOL" />
624                 <pad bytes="2" />
625                 <list name="keys" type="Key">
626                         <fieldref>nKeys</fieldref>
627                 </list>
628         </struct>
629
630         <enum name="DoodadType">
631                 <item name="Outline">   <value>1</value> </item>
632                 <item name="Solid">     <value>2</value> </item>
633                 <item name="Text">      <value>3</value> </item>
634                 <item name="Indicator"> <value>4</value> </item>
635                 <item name="Logo">      <value>5</value> </item>
636         </enum>
637
638         <!-- XXX: doodads are broken
639         <struct name="CommonDoodad">
640                 <field name="name" type="ATOM" />
641                 <field name="type" type="CARD8" enum="DoodadType" />
642                 <field name="priority" type="CARD8" />
643                 <field name="top" type="INT16" />
644                 <field name="left" type="INT16" />
645                 <field name="angle" type="INT16" />
646                 <pad bytes="8" />
647         </struct>
648
649         <struct name="ShapeDoodad">
650                 <field name="name" type="ATOM" />
651                 <field name="type" type="CARD8" enum="DoodadType" />
652                 <field name="priority" type="CARD8" />
653                 <field name="top" type="INT16" />
654                 <field name="left" type="INT16" />
655                 <field name="angle" type="INT16" />
656                 <field name="colorNdx" type="CARD8" />
657                 <field name="shapeNdx" type="CARD8" />
658                 <pad bytes="6" />
659         </struct>
660
661         <struct name="TextDoodad">
662                 <field name="name" type="ATOM" />
663                 <field name="type" type="CARD8" enum="DoodadType" />
664                 <field name="priority" type="CARD8" />
665                 <field name="top" type="INT16" />
666                 <field name="left" type="INT16" />
667                 <field name="angle" type="INT16" />
668                 <field name="width" type="CARD16" />
669                 <field name="height" type="CARD16" />
670                 <field name="colorNdx" type="CARD8" />
671                 <pad bytes="3" />
672                 <field name="text" type="CountedString16" />
673                 <field name="font" type="CountedString16" />
674         </struct>
675
676         <struct name="IndicatorDoodad">
677                 <field name="name" type="ATOM" />
678                 <field name="type" type="CARD8" enum="DoodadType" />
679                 <field name="priority" type="CARD8" />
680                 <field name="top" type="INT16" />
681                 <field name="left" type="INT16" />
682                 <field name="angle" type="INT16" />
683                 <field name="shapeNdx" type="CARD8" />
684                 <field name="onColorNdx" type="CARD8" />
685                 <field name="offColorNdx" type="CARD8" />
686                 <pad bytes="5" />
687         </struct>
688
689         <struct name="LogoDoodad">
690                 <field name="name" type="ATOM" />
691                 <field name="type" type="CARD8" enum="DoodadType" />
692                 <field name="priority" type="CARD8" />
693                 <field name="top" type="INT16" />
694                 <field name="left" type="INT16" />
695                 <field name="angle" type="INT16" />
696                 <field name="colorNdx" type="CARD8" />
697                 <field name="shapeNdx" type="CARD8" />
698                 <pad bytes="6" />
699                 <field name="logoName" type="CountedString16" />
700         </struct>
701
702         <union name="Doodad">
703                 <field name="common" type="CommonDoodad" />
704                 <field name="shape" type="ShapeDoodad" />
705                 <field name="text" type="TextDoodad" />
706                 <field name="indicator" type="IndicatorDoodad" />
707                 <field name="logo" type="LogoDoodad" />
708         </union>
709
710         <struct name="Section">
711                 <field name="name" type="ATOM" />
712                 <field name="top" type="INT16" />
713                 <field name="left" type="INT16" />
714                 <field name="width" type="CARD16" />
715                 <field name="height" type="CARD16" />
716                 <field name="angle" type="INT16" />
717                 <field name="priority" type="CARD8" />
718                 <field name="nRows" type="CARD8" />
719                 <field name="nDoodads" type="CARD8" />
720                 <field name="nOverlays" type="CARD8" />
721                 <pad bytes="2" />
722                 <list name="rows" type="Row">
723                         <fieldref>nRows</fieldref>
724                 </list>
725                 <list name="doodads" type="Doodad">
726                         <fieldref>nDoodads</fieldref>
727                 </list>
728                 <list name="overlays" type="Overlay">
729                         <fieldref>nOverlays</fieldref>
730                 </list>
731         </struct>
732         -->
733
734         <struct name="Listing">
735                 <field name="flags" type="CARD16" />
736                 <field name="length" type="CARD16" />
737                 <list name="string" type="STRING8">
738                         <fieldref>length</fieldref>
739                 </list>
740         </struct>
741
742         <struct name="DeviceLedInfo">
743                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
744                 <field name="ledID" type="IDSpec" altenum="ID" />
745                 <field name="namesPresent" type="CARD32" />
746                 <field name="mapsPresent" type="CARD32" />
747                 <field name="physIndicators" type="CARD32" />
748                 <field name="state" type="CARD32" />
749                 <list name="names" type="ATOM">
750                         <popcount>
751                                 <fieldref>namesPresent</fieldref>
752                         </popcount>
753                 </list>
754                 <list name="maps" type="IndicatorMap">
755                         <popcount>
756                                 <fieldref>mapsPresent</fieldref>
757                         </popcount>
758                 </list>
759         </struct>
760
761         <!-- Errors -->
762
763         <enum name="Error">
764                 <item name="BadDevice"> <value>255</value> </item>      <!--0xff-->
765                 <item name="BadClass">  <value>254</value> </item>      <!--0xfe-->
766                 <item name="BadId">     <value>253</value> </item>      <!--0xfd-->
767         </enum>
768
769         <error name="Keyboard" number="0">
770                 <field name="value" type="CARD32" />
771                 <field name="minorOpcode" type="CARD16" />
772                 <field name="majorOpcode" type="CARD8" />
773                 <pad bytes="21" />
774         </error>
775
776         <!-- Key Actions -->
777
778         <enum name="SA">
779                 <item name="ClearLocks">    <bit>0</bit> </item>
780                 <item name="LatchToLock">   <bit>1</bit> </item>
781                 <item name="UseModMapMods"> <bit>2</bit> </item>
782                 <item name="GroupAbsolute"> <bit>2</bit> </item>
783         </enum>
784
785         <enum name="SAType">
786                 <item name="NoAction">       <value>0</value> </item>
787                 <item name="SetMods">        <value>1</value> </item>
788                 <item name="LatchMods">      <value>2</value> </item>
789                 <item name="LockMods">       <value>3</value> </item>
790                 <item name="SetGroup">       <value>4</value> </item>
791                 <item name="LatchGroup">     <value>5</value> </item>
792                 <item name="LockGroup">      <value>6</value> </item>
793                 <item name="MovePtr">        <value>7</value> </item>
794                 <item name="PtrBtn">         <value>8</value> </item>
795                 <item name="LockPtrBtn">     <value>9</value> </item>
796                 <item name="SetPtrDflt">     <value>10</value> </item>
797                 <item name="ISOLock">        <value>11</value> </item>
798                 <item name="Terminate">      <value>12</value> </item>
799                 <item name="SwitchScreen">   <value>13</value> </item>
800                 <item name="SetControls">    <value>14</value> </item>
801                 <item name="LockControls">   <value>15</value> </item>
802                 <item name="ActionMessage">  <value>16</value> </item>
803                 <item name="RedirectKey">    <value>17</value> </item>
804                 <item name="DeviceBtn">      <value>18</value> </item>
805                 <item name="LockDeviceBtn">  <value>19</value> </item>
806                 <item name="DeviceValuator"> <value>20</value> </item>
807         </enum>
808
809         <struct name="SANoAction">
810                 <field name="type" type="CARD8" enum="SAType" />
811                 <pad bytes="7" />
812         </struct>
813
814         <struct name="SASetMods">
815                 <field name="type" type="CARD8" enum="SAType" />
816                 <field name="flags" type="CARD8" mask="SA" />
817                 <field name="mask" type="CARD8" mask="ModMask" />
818                 <field name="realMods" type="CARD8" mask="ModMask" />
819                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
820                 <field name="vmodsLow" type="CARD8" mask="VModsLow" />
821                 <pad bytes="2" />
822         </struct>
823
824         <typedef oldname="SASetMods" newname="SALatchMods" />
825
826         <typedef oldname="SASetMods" newname="SALockMods" />
827
828         <struct name="SASetGroup">
829                 <field name="type" type="CARD8" enum="SAType" />
830                 <field name="flags" type="CARD8" mask="SA" />
831                 <field name="group" type="INT8" />
832                 <pad bytes="5" />
833         </struct>
834
835         <typedef oldname="SASetGroup" newname="SALatchGroup" />
836
837         <typedef oldname="SASetGroup" newname="SALockGroup" />
838
839         <enum name="SAMovePtrFlag">
840                 <item name="NoAcceleration"> <bit>0</bit> </item>
841                 <item name="MoveAbsoluteX">  <bit>1</bit> </item>
842                 <item name="MoveAbsoluteY">  <bit>2</bit> </item>
843         </enum>
844
845         <struct name="SAMovePtr">
846                 <field name="type" type="CARD8" enum="SAType" />
847                 <field name="flags" type="CARD8" mask="SAMovePtrFlag" />
848                 <field name="xHigh" type="INT8" />
849                 <field name="xLow" type="CARD8" />
850                 <field name="yHigh" type="INT8" />
851                 <field name="yLow" type="CARD8" />
852                 <pad bytes="2" />
853         </struct>
854
855         <struct name="SAPtrBtn">
856                 <field name="type" type="CARD8" enum="SAType" />
857                 <field name="flags" type="CARD8" />
858                 <field name="count" type="CARD8" />
859                 <field name="button" type="CARD8" />
860                 <pad bytes="4" />
861         </struct>
862
863         <struct name="SALockPtrBtn">
864                 <field name="type" type="CARD8" enum="SAType" />
865                 <field name="flags" type="CARD8" />
866                 <pad bytes="1" />
867                 <field name="button" type="CARD8" />
868                 <pad bytes="4" />
869         </struct>
870
871         <enum name="SASetPtrDfltFlag">
872                 <!-- The spec says 0x02 but Xlib uses 0x04. -->
873                 <item name="DfltBtnAbsolute">  <bit>2</bit> </item>
874                 <item name="AffectDfltButton"> <bit>0</bit> </item>
875         </enum>
876
877         <struct name="SASetPtrDflt">
878                 <field name="type" type="CARD8" enum="SAType" />
879                 <field name="flags" type="CARD8" mask="SASetPtrDfltFlag" />
880                 <field name="affect" type="CARD8" mask="SASetPtrDfltFlag" />
881                 <field name="value" type="INT8" />
882                 <pad bytes="4" />
883         </struct>
884
885         <enum name="SAIsoLockFlag">
886                 <item name="NoLock">         <bit>0</bit> </item>
887                 <item name="NoUnlock">       <bit>1</bit> </item>
888                 <item name="UseModMapMods">  <bit>2</bit> </item>
889                 <item name="GroupAbsolute">  <bit>2</bit> </item>
890                 <item name="ISODfltIsGroup"> <bit>3</bit> </item>
891         </enum>
892
893         <enum name="SAIsoLockNoAffect">
894                 <item name="Ctrls"> <bit>3</bit> </item>
895                 <item name="Ptr">   <bit>4</bit> </item>
896                 <item name="Group"> <bit>5</bit> </item>
897                 <item name="Mods">  <bit>6</bit> </item>
898         </enum>
899
900         <struct name="SAIsoLock">
901                 <field name="type" type="CARD8" enum="SAType" />
902                 <field name="flags" type="CARD8" mask="SAIsoLockFlag" />
903                 <field name="mask" type="CARD8" mask="ModMask" />
904                 <field name="realMods" type="CARD8" mask="ModMask" />
905                 <field name="group" type="INT8" />
906                 <field name="affect" type="CARD8" mask="SAIsoLockNoAffect" />
907                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
908                 <field name="vmodsLow" type="CARD8" mask="VModsLow" />
909         </struct>
910
911         <struct name="SATerminate">
912                 <field name="type" type="CARD8" enum="SAType" />
913                 <pad bytes="7" />
914         </struct>
915
916         <enum name="SwitchScreenFlag">
917                 <item name="Application"> <bit>0</bit> </item>
918                 <item name="Absolute" >   <bit>2</bit> </item>
919         </enum>
920
921         <struct name="SASwitchScreen">
922                 <field name="type" type="CARD8" enum="SAType" />
923                 <field name="flags" type="CARD8" />
924                 <field name="newScreen" type="INT8" />
925                 <pad bytes="5" />
926         </struct>
927
928         <enum name="BoolCtrlsHigh">
929                 <item name="AccessXFeedback"> <bit>0</bit> </item>
930                 <item name="AudibleBell">     <bit>1</bit> </item>
931                 <item name="Overlay1">        <bit>2</bit> </item>
932                 <item name="Overlay2">        <bit>3</bit> </item>
933                 <item name="IgnoreGroupLock"> <bit>4</bit> </item>
934         </enum>
935
936         <enum name="BoolCtrlsLow">
937                 <item name="RepeatKeys">     <bit>0</bit> </item>
938                 <item name="SlowKeys">       <bit>1</bit> </item>
939                 <item name="BounceKeys">     <bit>2</bit> </item>
940                 <item name="StickyKeys">     <bit>3</bit> </item>
941                 <item name="MouseKeys">      <bit>4</bit> </item>
942                 <item name="MouseKeysAccel"> <bit>5</bit> </item>
943                 <item name="AccessXKeys">    <bit>6</bit> </item>
944                 <item name="AccessXTimeout"> <bit>7</bit> </item>
945         </enum>
946
947         <struct name="SASetControls">
948                 <field name="type" type="CARD8" enum="SAType" />
949                 <pad bytes="3" />
950                 <field name="boolCtrlsHigh" type="CARD8" mask="BoolCtrlsHigh" />
951                 <field name="boolCtrlsLow"  type="CARD8" mask="BoolCtrlsLow" />
952                 <pad bytes="2" />
953         </struct>
954
955         <typedef oldname="SASetControls" newname="SALockControls" />
956
957         <enum name="ActionMessageFlag">
958                 <item name="OnPress">     <bit>0</bit> </item>
959                 <item name="OnRelease">   <bit>1</bit> </item>
960                 <item name="GenKeyEvent"> <bit>2</bit> </item>
961         </enum>
962
963         <struct name="SAActionMessage">
964                 <field name="type" type="CARD8" enum="SAType" />
965                 <field name="flags" type="CARD8" mask="ActionMessageFlag" />
966                 <list name="message" type="CARD8">
967                         <value>6</value>
968                 </list>
969         </struct>
970
971         <struct name="SARedirectKey">
972                 <field name="type" type="CARD8" enum="SAType" />
973                 <field name="newkey" type="KEYCODE" />
974                 <field name="mask" type="CARD8" mask="ModMask" />
975                 <field name="realModifiers" type="CARD8" mask="ModMask" />
976                 <field name="vmodsMaskHigh" type="CARD8" mask="VModsHigh"/>
977                 <field name="vmodsMaskLow" type="CARD8" mask="VModsLow"/>
978                 <field name="vmodsHigh" type="CARD8" mask="VModsHigh"/>
979                 <field name="vmodsLow" type="CARD8" mask="VModsLow"/>
980         </struct>
981
982         <struct name="SADeviceBtn">
983                 <field name="type" type="CARD8" enum="SAType" />
984                 <field name="flags" type="CARD8" />
985                 <field name="count" type="CARD8" />
986                 <field name="button" type="CARD8" />
987                 <field name="device" type="CARD8" />
988                 <pad bytes="3" />
989         </struct>
990
991         <enum name="LockDeviceFlags">
992                 <item name="NoLock">   <bit>0</bit> </item>
993                 <item name="NoUnlock"> <bit>1</bit> </item>
994         </enum>
995
996         <struct name="SALockDeviceBtn">
997                 <field name="type" type="CARD8" enum="SAType" />
998                 <field name="flags" type="CARD8" mask="LockDeviceFlags" />
999                 <pad bytes="1" />
1000                 <field name="button" type="CARD8" />
1001                 <field name="device" type="CARD8" />
1002                 <pad bytes="3" />
1003         </struct>
1004
1005         <enum name="SAValWhat">
1006                 <item name="IgnoreVal">      <value>0</value> </item>
1007                 <item name="SetValMin">      <value>1</value> </item>
1008                 <item name="SetValCenter">   <value>2</value> </item>
1009                 <item name="SetValMax">      <value>3</value> </item>
1010                 <item name="SetValRelative"> <value>4</value> </item>
1011                 <item name="SetValAbsolute"> <value>5</value> </item>
1012         </enum>
1013
1014         <struct name="SADeviceValuator">
1015                 <field name="type" type="CARD8" enum="SAType" />
1016                 <field name="device" type="CARD8" />
1017                 <field name="val1what" type="CARD8" enum="SAValWhat" />
1018                 <field name="val1index" type="CARD8" />
1019                 <field name="val1value" type="CARD8" />
1020                 <field name="val2what" type="CARD8" enum="SAValWhat" />
1021                 <field name="val2index" type="CARD8" />
1022                 <field name="val2value" type="CARD8" />
1023         </struct>
1024
1025         <struct name="SIAction">
1026                 <field name="type" type="CARD8" enum="SAType" />
1027                 <list name="data" type="CARD8">
1028                         <value>7</value>
1029                 </list>
1030         </struct>
1031
1032         <struct name="SymInterpret">
1033                 <field name="sym" type="KEYSYM" />
1034                 <field name="mods" type="CARD8" mask="ModMask" />
1035                 <!-- "match" may also have XkbSI_LevelOneOnly (0x80) or'd into it -->
1036                 <field name="match" type="CARD8" altenum="SymInterpretMatch" />
1037                 <field name="virtualMod" type="CARD8" mask="VModsLow" />
1038                 <field name="flags" type="CARD8" />
1039                 <field name="action" type="SIAction" />
1040         </struct>
1041
1042         <union name="Action">
1043                 <field name="noaction" type="SANoAction" />
1044                 <field name="setmods" type="SASetMods" />
1045                 <field name="latchmods" type="SALatchMods" />
1046                 <field name="lockmods" type="SALockMods" />
1047                 <field name="setgroup" type="SASetGroup" />
1048                 <field name="latchgroup" type="SALatchGroup" />
1049                 <field name="lockgroup" type="SALockGroup" />
1050                 <field name="moveptr" type="SAMovePtr" />
1051                 <field name="ptrbtn" type="SAPtrBtn" />
1052                 <field name="lockptrbtn" type="SALockPtrBtn" />
1053                 <field name="setptrdflt" type="SASetPtrDflt" />
1054                 <field name="isolock" type="SAIsoLock" />
1055                 <field name="terminate" type="SATerminate" />
1056                 <field name="switchscreen" type="SASwitchScreen" />
1057                 <field name="setcontrols" type="SASetControls" />
1058                 <field name="lockcontrols" type="SALockControls" />
1059                 <field name="message" type="SAActionMessage" />
1060                 <field name="redirect" type="SARedirectKey" />
1061                 <field name="devbtn" type="SADeviceBtn" />
1062                 <field name="lockdevbtn" type="SALockDeviceBtn" />
1063                 <field name="devval" type="SADeviceValuator" />
1064                 <field name="type" type="CARD8" enum="SAType" />
1065         </union>
1066
1067         <!-- Requests -->
1068
1069         <request name="UseExtension" opcode="0">
1070                 <field name="wantedMajor" type="CARD16" />
1071                 <field name="wantedMinor" type="CARD16" />
1072                 <reply>
1073                         <field name="supported" type="BOOL" />
1074                         <field name="serverMajor" type="CARD16" />
1075                         <field name="serverMinor" type="CARD16" />
1076                         <pad bytes="20" />
1077                 </reply>
1078         </request>
1079
1080         <request name="SelectEvents" opcode="1">
1081                 <field name="deviceSpec" type="DeviceSpec" />
1082                 <field name="affectWhich" type="CARD16" mask="EventType" />
1083                 <field name="clear" type="CARD16" mask="EventType" />
1084                 <field name="selectAll" type="CARD16" mask="EventType" />
1085                 <field name="affectMap" type="CARD16" mask="MapPart" />
1086                 <field name="map" type="CARD16" mask="MapPart" />
1087                 <switch name="details">
1088                         <op op="&amp;">
1089                                 <fieldref>affectWhich</fieldref>
1090                                 <op op="&amp;">
1091                                         <unop op="~"><fieldref>clear</fieldref></unop>
1092                                         <unop op="~"><fieldref>selectAll</fieldref></unop>
1093                                 </op>
1094                         </op>
1095                         <bitcase>
1096                                 <enumref ref="EventType">NewKeyboardNotify</enumref>
1097                                 <field name="affectNewKeyboard" type="CARD16" mask="NKNDetail" />
1098                                 <field name="newKeyboardDetails" type="CARD16" mask="NKNDetail" />
1099                         </bitcase>
1100                         <bitcase>
1101                                 <enumref ref="EventType">StateNotify</enumref>
1102                                 <field name="affectState" type="CARD16" mask="StatePart" />
1103                                 <field name="stateDetails" type="CARD16" mask="StatePart" />
1104                         </bitcase>
1105                         <bitcase>
1106                                 <enumref ref="EventType">ControlsNotify</enumref>
1107                                 <field name="affectCtrls" type="CARD32" mask="Control" />
1108                                 <field name="ctrlDetails" type="CARD32" mask="Control" />
1109                         </bitcase>
1110                         <bitcase>
1111                                 <enumref ref="EventType">IndicatorStateNotify</enumref>
1112                                 <field name="affectIndicatorState" type="CARD32" />
1113                                 <field name="indicatorStateDetails" type="CARD32" />
1114                         </bitcase>
1115                         <bitcase>
1116                                 <enumref ref="EventType">IndicatorMapNotify</enumref>
1117                                 <field name="affectIndicatorMap" type="CARD32" />
1118                                 <field name="indicatorMapDetails" type="CARD32" />
1119                         </bitcase>
1120                         <bitcase>
1121                                 <enumref ref="EventType">NamesNotify</enumref>
1122                                 <field name="affectNames" type="CARD16" mask="NameDetail" />
1123                                 <field name="namesDetails" type="CARD16" mask="NameDetail" />
1124                         </bitcase>
1125                         <bitcase>
1126                                 <enumref ref="EventType">CompatMapNotify</enumref>
1127                                 <field name="affectCompat" type="CARD8" mask="CMDetail" />
1128                                 <field name="compatDetails" type="CARD8" mask="CMDetail" />
1129                         </bitcase>
1130                         <bitcase>
1131                                 <enumref ref="EventType">BellNotify</enumref>
1132                                 <field name="affectBell" type="CARD8" />
1133                                 <field name="bellDetails" type="CARD8" />
1134                         </bitcase>
1135                         <bitcase>
1136                                 <enumref ref="EventType">ActionMessage</enumref>
1137                                 <field name="affectMsgDetails" type="CARD8" />
1138                                 <field name="msgDetails" type="CARD8" />
1139                         </bitcase>
1140                         <bitcase>
1141                                 <enumref ref="EventType">AccessXNotify</enumref>
1142                                 <field name="affectAccessX" type="CARD16" mask="AXNDetail" />
1143                                 <field name="accessXDetails" type="CARD16" mask="AXNDetail" />
1144                         </bitcase>
1145                         <bitcase>
1146                                 <enumref ref="EventType">ExtensionDeviceNotify</enumref>
1147                                 <field name="affectExtDev" type="CARD16" mask="XIFeature" />
1148                                 <field name="extdevDetails" type="CARD16" mask="XIFeature" />
1149                         </bitcase>
1150                 </switch>
1151         </request>
1152
1153         <request name="Bell" opcode="3">
1154                 <field name="deviceSpec" type="DeviceSpec" />
1155                 <field name="bellClass" type="BellClassSpec" />
1156                 <field name="bellID" type="IDSpec" />
1157                 <field name="percent" type="INT8" />
1158                 <field name="forceSound" type="BOOL" />
1159                 <field name="eventOnly" type="BOOL" />
1160                 <pad bytes="1" />
1161                 <field name="pitch" type="INT16" />
1162                 <field name="duration" type="INT16" />
1163                 <pad bytes="2" />
1164                 <field name="name" type="ATOM" />
1165                 <field name="window" type="WINDOW" />
1166         </request>
1167
1168         <request name="GetState" opcode="4">
1169                 <field name="deviceSpec" type="DeviceSpec" />
1170                 <pad bytes="2" />
1171                 <reply>
1172                         <field name="deviceID" type="CARD8" />
1173                         <field name="mods" type="CARD8" mask="ModMask" />
1174                         <field name="baseMods" type="CARD8" mask="ModMask" />
1175                         <field name="latchedMods" type="CARD8" mask="ModMask" />
1176                         <field name="lockedMods" type="CARD8" mask="ModMask" />
1177                         <field name="group" type="CARD8" enum="Group" />
1178                         <field name="lockedGroup" type="CARD8" enum="Group" />
1179                         <field name="baseGroup" type="INT16" />
1180                         <field name="latchedGroup" type="INT16" />
1181                         <field name="compatState" type="CARD8" mask="ModMask" />
1182                         <field name="grabMods" type="CARD8" mask="ModMask" />
1183                         <field name="compatGrabMods" type="CARD8" mask="ModMask" />
1184                         <field name="lookupMods" type="CARD8" mask="ModMask" />
1185                         <field name="compatLookupMods" type="CARD8" mask="ModMask" />
1186                         <pad bytes="1" />
1187                         <field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
1188                         <pad bytes="6" />
1189                 </reply>
1190         </request>
1191
1192         <request name="LatchLockState" opcode="5">
1193                 <field name="deviceSpec" type="DeviceSpec" />
1194                 <field name="affectModLocks" type="CARD8" mask="ModMask" />
1195                 <field name="modLocks" type="CARD8" mask="ModMask" />
1196                 <field name="lockGroup" type="BOOL" />
1197                 <field name="groupLock" type="CARD8" enum="Group" />
1198                 <field name="affectModLatches" type="CARD8" mask="ModMask" />
1199                 <pad bytes="1" />
1200                 <field name="latchGroup" type="BOOL" />
1201                 <field name="groupLatch" type="CARD16" />
1202         </request>
1203
1204         <request name="GetControls" opcode="6">
1205                 <field name="deviceSpec" type="DeviceSpec" />
1206                 <pad bytes="2" />
1207                 <reply>
1208                         <field name="deviceID" type="CARD8" />
1209                         <field name="mouseKeysDfltBtn" type="CARD8" />
1210                         <field name="numGroups" type="CARD8" />
1211                         <field name="groupsWrap" type="CARD8" />
1212                         <field name="internalModsMask" type="CARD8" mask="ModMask" />
1213                         <field name="ignoreLockModsMask" type="CARD8" mask="ModMask" />
1214                         <field name="internalModsRealMods" type="CARD8" mask="ModMask" />
1215                         <field name="ignoreLockModsRealMods" type="CARD8" mask="ModMask" />
1216                         <pad bytes="1" />
1217                         <field name="internalModsVmods" type="CARD16" mask="VMod" />
1218                         <field name="ignoreLockModsVmods" type="CARD16" mask="VMod" />
1219                         <field name="repeatDelay" type="CARD16" />
1220                         <field name="repeatInterval" type="CARD16" />
1221                         <field name="slowKeysDelay" type="CARD16" />
1222                         <field name="debounceDelay" type="CARD16" />
1223                         <field name="mouseKeysDelay" type="CARD16" />
1224                         <field name="mouseKeysInterval" type="CARD16" />
1225                         <field name="mouseKeysTimeToMax" type="CARD16" />
1226                         <field name="mouseKeysMaxSpeed" type="CARD16" />
1227                         <field name="mouseKeysCurve" type="INT16" />
1228                         <field name="accessXOption" type="CARD16" mask="AXOption" />
1229                         <field name="accessXTimeout" type="CARD16" />
1230                         <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1231                         <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1232                         <pad bytes="2" />
1233                         <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1234                         <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1235                         <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1236                         <list name="perKeyRepeat" type="CARD8">
1237                                 <value>32</value>
1238                         </list>
1239                 </reply>
1240         </request>
1241
1242         <request name="SetControls" opcode="7">
1243                 <field name="deviceSpec" type="DeviceSpec" />
1244                 <field name="affectInternalRealMods" type="CARD8" mask="ModMask" />
1245                 <field name="internalRealMods" type="CARD8" mask="ModMask" />
1246                 <field name="affectIgnoreLockRealMods" type="CARD8" mask="ModMask" />
1247                 <field name="ignoreLockRealMods" type="CARD8" mask="ModMask" />
1248                 <field name="affectInternalVirtualMods" type="CARD16" mask="VMod" />
1249                 <field name="internalVirtualMods" type="CARD16" mask="VMod" />
1250                 <field name="affectIgnoreLockVirtualMods" type="CARD16" mask="VMod" />
1251                 <field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
1252                 <field name="mouseKeysDfltBtn" type="CARD8" />
1253                 <field name="groupsWrap" type="CARD8" />
1254                 <field name="accessXOptions" type="CARD16" mask="AXOption" />
1255                 <pad bytes="2" />
1256                 <field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
1257                 <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1258                 <field name="changeControls" type="CARD32" mask="Control" />
1259                 <field name="repeatDelay" type="CARD16" />
1260                 <field name="repeatInterval" type="CARD16" />
1261                 <field name="slowKeysDelay" type="CARD16" />
1262                 <field name="debounceDelay" type="CARD16" />
1263                 <field name="mouseKeysDelay" type="CARD16" />
1264                 <field name="mouseKeysInterval" type="CARD16" />
1265                 <field name="mouseKeysTimeToMax" type="CARD16" />
1266                 <field name="mouseKeysMaxSpeed" type="CARD16" />
1267                 <field name="mouseKeysCurve" type="INT16" />
1268                 <field name="accessXTimeout" type="CARD16" />
1269                 <field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1270                 <field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1271                 <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1272                 <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1273                 <list name="perKeyRepeat" type="CARD8">
1274                         <value>32</value>
1275                 </list>
1276         </request>
1277
1278         <request name="GetMap" opcode="8">
1279                 <field name="deviceSpec" type="DeviceSpec" />
1280                 <field name="full" type="CARD16" mask="MapPart" />
1281                 <field name="partial" type="CARD16" mask="MapPart" />
1282                 <field name="firstType" type="CARD8" />
1283                 <field name="nTypes" type="CARD8" />
1284                 <field name="firstKeySym" type="KEYCODE" />
1285                 <field name="nKeySyms" type="CARD8" />
1286                 <field name="firstKeyAction" type="KEYCODE" />
1287                 <field name="nKeyActions" type="CARD8" />
1288                 <field name="firstKeyBehavior" type="KEYCODE" />
1289                 <field name="nKeyBehaviors" type="CARD8" />
1290                 <field name="virtualMods" type="CARD16" mask="VMod" />
1291                 <field name="firstKeyExplicit" type="KEYCODE" />
1292                 <field name="nKeyExplicit" type="CARD8" />
1293                 <field name="firstModMapKey" type="KEYCODE" />
1294                 <field name="nModMapKeys" type="CARD8" />
1295                 <field name="firstVModMapKey" type="KEYCODE" />
1296                 <field name="nVModMapKeys" type="CARD8" />
1297                 <pad bytes="2" />
1298                 <reply>
1299                         <field name="deviceID" type="CARD8" />
1300                         <pad bytes="2" />
1301                         <field name="minKeyCode" type="KEYCODE" />
1302                         <field name="maxKeyCode" type="KEYCODE" />
1303                         <field name="present" type="CARD16" mask="MapPart" />
1304                         <field name="firstType" type="CARD8" />
1305                         <field name="nTypes" type="CARD8" />
1306                         <field name="totalTypes" type="CARD8" />
1307                         <field name="firstKeySym" type="KEYCODE" />
1308                         <field name="totalSyms" type="CARD16" />
1309                         <field name="nKeySyms" type="CARD8" />
1310                         <field name="firstKeyAction" type="KEYCODE" />
1311                         <field name="totalActions" type="CARD16" />
1312                         <field name="nKeyActions" type="CARD8" />
1313                         <field name="firstKeyBehavior" type="KEYCODE" />
1314                         <field name="nKeyBehaviors" type="CARD8" />
1315                         <field name="totalKeyBehaviors" type="CARD8" />
1316                         <field name="firstKeyExplicit" type="KEYCODE" />
1317                         <field name="nKeyExplicit" type="CARD8" />
1318                         <field name="totalKeyExplicit" type="CARD8" />
1319                         <field name="firstModMapKey" type="KEYCODE" />
1320                         <field name="nModMapKeys" type="CARD8" />
1321                         <field name="totalModMapKeys" type="CARD8" />
1322                         <field name="firstVModMapKey" type="KEYCODE" />
1323                         <field name="nVModMapKeys" type="CARD8" />
1324                         <field name="totalVModMapKeys" type="CARD8" />
1325                         <pad bytes="1" />
1326                         <field name="virtualMods" type="CARD16" mask="VMod" />
1327                         <switch name="map">
1328                                 <fieldref>present</fieldref>
1329                                 <bitcase>
1330                                         <enumref ref="MapPart">KeyTypes</enumref>
1331                                         <list name="types_rtrn" type="KeyType">
1332                                                 <fieldref>nTypes</fieldref>
1333                                         </list>
1334                                 </bitcase>
1335                                 <bitcase>
1336                                         <enumref ref="MapPart">KeySyms</enumref>
1337                                         <list name="syms_rtrn" type="KeySymMap">
1338                                                 <fieldref>nKeySyms</fieldref>
1339                                         </list>
1340                                 </bitcase>
1341                                 <bitcase>
1342                                         <enumref ref="MapPart">KeyActions</enumref>
1343                                         <list name="acts_rtrn_count" type="CARD8">
1344                                                 <fieldref>nKeyActions</fieldref>
1345                                         </list>
1346                                         <list type="CARD8" name="alignment_pad">
1347                                             <op op="-">
1348                                                 <op op="&amp;">
1349                                                     <op op="+">
1350                                                         <fieldref>nKeyActions</fieldref>
1351                                                         <value>3</value>
1352                                                     </op>
1353                                                     <unop op="~">
1354                                                         <value>3</value>
1355                                                     </unop>
1356                                                 </op>
1357                                                 <fieldref>nKeyActions</fieldref>
1358                                             </op>
1359                                         </list>
1360                                         <list name="acts_rtrn_acts" type="Action">
1361                                                 <fieldref>totalActions</fieldref>
1362                                         </list>
1363                                 </bitcase>
1364                                 <bitcase>
1365                                         <enumref ref="MapPart">KeyBehaviors</enumref>
1366                                         <list name="behaviors_rtrn" type="SetBehavior">
1367                                                 <fieldref>totalKeyBehaviors</fieldref>
1368                                         </list>
1369                                 </bitcase>
1370                                 <bitcase>
1371                                         <enumref ref="MapPart">VirtualMods</enumref>
1372                                         <list name="vmods_rtrn" type="CARD8" mask="ModMask">
1373                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
1374                                         </list>
1375                                         <list type="CARD8" name="alignment_pad2">
1376                                             <op op="-">
1377                                                 <op op="&amp;">
1378                                                     <op op="+">
1379                                                         <popcount><fieldref>virtualMods</fieldref></popcount>
1380                                                         <value>3</value>
1381                                                     </op>
1382                                                     <unop op="~">
1383                                                         <value>3</value>
1384                                                     </unop>
1385                                                 </op>
1386                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
1387                                             </op>
1388                                         </list>
1389                                 </bitcase>
1390                                 <bitcase>
1391                                         <enumref ref="MapPart">ExplicitComponents</enumref>
1392                                         <list name="explicit_rtrn" type="SetExplicit">
1393                                                 <fieldref>totalKeyExplicit</fieldref>
1394                                         </list>
1395                                         <list type="CARD16" name="alignment_pad3">
1396                                             <op op="-">
1397                                                 <op op="&amp;">
1398                                                     <op op="+">
1399                                                         <fieldref>totalKeyExplicit</fieldref>
1400                                                         <value>1</value>
1401                                                     </op>
1402                                                     <unop op="~">
1403                                                         <value>1</value>
1404                                                     </unop>
1405                                                 </op>
1406                                                 <fieldref>totalKeyExplicit</fieldref>
1407                                             </op>
1408                                         </list>
1409                                 </bitcase>
1410                                 <bitcase>
1411                                         <enumref ref="MapPart">ModifierMap</enumref>
1412                                         <list name="modmap_rtrn" type="KeyModMap">
1413                                                 <fieldref>totalModMapKeys</fieldref>
1414                                         </list>
1415                                         <list type="CARD16" name="alignment_pad4">
1416                                             <op op="-">
1417                                                 <op op="&amp;">
1418                                                     <op op="+">
1419                                                         <fieldref>totalModMapKeys</fieldref>
1420                                                         <value>1</value>
1421                                                     </op>
1422                                                     <unop op="~">
1423                                                         <value>1</value>
1424                                                     </unop>
1425                                                 </op>
1426                                                 <fieldref>totalModMapKeys</fieldref>
1427                                             </op>
1428                                         </list>
1429                                 </bitcase>
1430                                 <bitcase>
1431                                         <enumref ref="MapPart">VirtualModMap</enumref>
1432                                         <list name="vmodmap_rtrn" type="KeyVModMap">
1433                                                 <fieldref>totalVModMapKeys</fieldref>
1434                                         </list>
1435                                 </bitcase>
1436                         </switch>
1437                 </reply>
1438         </request>
1439
1440         <request name="SetMap" opcode="9">
1441                 <field name="deviceSpec" type="DeviceSpec" />
1442                 <field name="present" type="CARD16" mask="MapPart" />
1443                 <field name="flags" type="CARD16" mask="SetMapFlags" />
1444                 <field name="minKeyCode" type="KEYCODE" />
1445                 <field name="maxKeyCode" type="KEYCODE" />
1446                 <field name="firstType" type="CARD8" />
1447                 <field name="nTypes" type="CARD8" />
1448                 <field name="firstKeySym" type="KEYCODE" />
1449                 <field name="nKeySyms" type="CARD8" />
1450                 <field name="totalSyms" type="CARD16" />
1451                 <field name="firstKeyAction" type="KEYCODE" />
1452                 <field name="nKeyActions" type="CARD8" />
1453                 <field name="totalActions" type="CARD16" />
1454                 <field name="firstKeyBehavior" type="KEYCODE" />
1455                 <field name="nKeyBehaviors" type="CARD8" />
1456                 <field name="totalKeyBehaviors" type="CARD8" />
1457                 <field name="firstKeyExplicit" type="KEYCODE" />
1458                 <field name="nKeyExplicit" type="CARD8" />
1459                 <field name="totalKeyExplicit" type="CARD8" />
1460                 <field name="firstModMapKey" type="KEYCODE" />
1461                 <field name="nModMapKeys" type="CARD8" />
1462                 <field name="totalModMapKeys" type="CARD8" />
1463                 <field name="firstVModMapKey" type="KEYCODE" />
1464                 <field name="nVModMapKeys" type="CARD8" />
1465                 <field name="totalVModMapKeys" type="CARD8" />
1466                 <field name="virtualMods" type="CARD16" mask="VMod" />
1467                 <switch name="values">
1468                         <fieldref>present</fieldref>
1469                         <bitcase>
1470                                 <enumref ref="MapPart">KeyTypes</enumref>
1471                                 <list name="types" type="SetKeyType">
1472                                         <fieldref>nTypes</fieldref>
1473                                 </list>
1474                         </bitcase>
1475                         <bitcase>
1476                                 <enumref ref="MapPart">KeySyms</enumref>
1477                                 <list name="syms" type="KeySymMap">
1478                                         <fieldref>nKeySyms</fieldref>
1479                                 </list>
1480                         </bitcase>
1481                         <bitcase>
1482                                 <enumref ref="MapPart">KeyActions</enumref>
1483                                 <list name="actionsCount" type="CARD8">
1484                                         <fieldref>nKeyActions</fieldref>
1485                                 </list>
1486                                 <list name="actions" type="Action">
1487                                         <fieldref>totalActions</fieldref>
1488                                 </list>
1489                         </bitcase>
1490                         <bitcase>
1491                                 <enumref ref="MapPart">KeyBehaviors</enumref>
1492                                 <list name="behaviors" type="SetBehavior">
1493                                         <fieldref>totalKeyBehaviors</fieldref>
1494                                 </list>
1495                         </bitcase>
1496                         <bitcase>
1497                                 <enumref ref="MapPart">VirtualMods</enumref>
1498                                 <list name="vmods" type="CARD8">
1499                                         <popcount><fieldref>virtualMods</fieldref></popcount>
1500                                 </list>
1501                         </bitcase>
1502                         <bitcase>
1503                                 <enumref ref="MapPart">ExplicitComponents</enumref>
1504                                 <list name="explicit" type="SetExplicit">
1505                                         <fieldref>totalKeyExplicit</fieldref>
1506                                 </list>
1507                         </bitcase>
1508                         <bitcase>
1509                                 <enumref ref="MapPart">ModifierMap</enumref>
1510                                 <list name="modmap" type="KeyModMap">
1511                                         <fieldref>totalModMapKeys</fieldref>
1512                                 </list>
1513                         </bitcase>
1514                         <bitcase>
1515                                 <enumref ref="MapPart">VirtualModMap</enumref>
1516                                 <list name="vmodmap" type="KeyVModMap">
1517                                         <fieldref>totalVModMapKeys</fieldref>
1518                                 </list>
1519                         </bitcase>
1520                 </switch>
1521         </request>
1522
1523         <request name="GetCompatMap" opcode="10">
1524                 <field name="deviceSpec" type="DeviceSpec" />
1525                 <field name="groups" type="CARD8" mask="SetOfGroup" />
1526                 <field name="getAllSI" type="BOOL" />
1527                 <field name="firstSI" type="CARD16" />
1528                 <field name="nSI" type="CARD16" />
1529                 <reply>
1530                         <field name="deviceID" type="CARD8" />
1531                         <field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
1532                         <pad bytes="1" />
1533                         <field name="firstSIRtrn" type="CARD16" />
1534                         <field name="nSIRtrn" type="CARD16" />
1535                         <field name="nTotalSI" type="CARD16" />
1536                         <pad bytes="16" />
1537                         <list name="si_rtrn" type="SymInterpret">
1538                                 <fieldref>nSIRtrn</fieldref>
1539                         </list>
1540                         <list name="group_rtrn" type="ModDef">
1541                                 <popcount>
1542                                         <fieldref>groupsRtrn</fieldref>
1543                                 </popcount>
1544                         </list>
1545                 </reply>
1546         </request>
1547
1548         <request name="SetCompatMap" opcode="11">
1549                 <field name="deviceSpec" type="DeviceSpec" />
1550                 <pad bytes="1" />
1551                 <field name="recomputeActions" type="BOOL" />
1552                 <field name="truncateSI" type="BOOL" />
1553                 <field name="groups" type="CARD8" mask="SetOfGroup" />
1554                 <field name="firstSI" type="CARD16" />
1555                 <field name="nSI" type="CARD16" />
1556                 <pad bytes="2"/>
1557                 <list name="si" type="SymInterpret">
1558                         <fieldref>nSI</fieldref>
1559                 </list>
1560                 <list name="groupMaps" type="ModDef">
1561                         <popcount>
1562                                 <fieldref>groups</fieldref>
1563                         </popcount>
1564                 </list>
1565         </request>
1566
1567         <request name="GetIndicatorState" opcode="12">
1568                 <field name="deviceSpec" type="DeviceSpec" />
1569                 <pad bytes="2" />
1570                 <reply>
1571                         <field name="deviceID" type="CARD8" />
1572                         <field name="state" type="CARD32" />
1573                         <pad bytes="20" />
1574                 </reply>
1575         </request>
1576
1577         <request name="GetIndicatorMap" opcode="13">
1578                 <field name="deviceSpec" type="DeviceSpec" />
1579                 <pad bytes="2" />
1580                 <field name="which" type="CARD32" />
1581                 <reply>
1582                         <field name="deviceID" type="CARD8" />
1583                         <field name="which" type="CARD32" />
1584                         <field name="realIndicators" type="CARD32" />
1585                         <field name="nIndicators" type="CARD8" />
1586                         <pad bytes="15" />
1587                         <list name="maps" type="IndicatorMap">
1588                                 <popcount><fieldref>which</fieldref></popcount>
1589                         </list>
1590                 </reply>
1591         </request>
1592
1593         <request name="SetIndicatorMap" opcode="14">
1594                 <field name="deviceSpec" type="DeviceSpec" />
1595                 <pad bytes="2" />
1596                 <field name="which" type="CARD32" />
1597                 <list name="maps" type="IndicatorMap">
1598                         <popcount>
1599                                 <fieldref>which</fieldref>
1600                         </popcount>
1601                 </list>
1602         </request>
1603
1604         <request name="GetNamedIndicator" opcode="15">
1605                 <field name="deviceSpec" type="DeviceSpec" />
1606                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
1607                 <field name="ledID" type="IDSpec" altenum="ID" />
1608                 <pad bytes="2" />
1609                 <field name="indicator" type="ATOM" />
1610                 <reply>
1611                         <field name="deviceID" type="CARD8" />
1612                         <field name="indicator" type="ATOM" />
1613                         <field name="found" type="BOOL" />
1614                         <field name="on" type="BOOL" />
1615                         <field name="realIndicator" type="BOOL" />
1616                         <field name="ndx" type="CARD8" />
1617                         <field name="map_flags" type="CARD8" mask="IMFlag" />
1618                         <field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1619                         <field name="map_groups" type="CARD8" mask="SetOfGroups" />
1620                         <field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1621                         <field name="map_mods" type="CARD8" mask="ModMask" />
1622                         <field name="map_realMods" type="CARD8" mask="ModMask" />
1623                         <field name="map_vmod" type="CARD16" mask="VMod" />
1624                         <field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1625                         <field name="supported" type="BOOL" />
1626                         <pad bytes="3" />
1627                 </reply>
1628         </request>
1629
1630         <request name="SetNamedIndicator" opcode="16" >
1631                 <field name="deviceSpec" type="DeviceSpec" />
1632                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
1633                 <field name="ledID" type="IDSpec" altenum="ID" />
1634                 <pad bytes="2" />
1635                 <field name="indicator" type="ATOM" />
1636                 <field name="setState" type="BOOL" />
1637                 <field name="on" type="BOOL" />
1638                 <field name="setMap" type="BOOL" />
1639                 <field name="createMap" type="BOOL" />
1640                 <pad bytes="1" />
1641                 <field name="map_flags" type="CARD8" mask="IMFlag" />
1642                 <field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1643                 <field name="map_groups" type="CARD8" mask="SetOfGroups" />
1644                 <field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1645                 <field name="map_realMods" type="CARD8" mask="ModMask" />
1646                 <field name="map_vmods" type="CARD16" mask="VMod" />
1647                 <field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1648         </request>
1649
1650         <request name="GetNames" opcode="17">
1651                 <field name="deviceSpec" type="DeviceSpec" />
1652                 <pad bytes="2" />
1653                 <field name="which" type="CARD32" mask="NameDetail" />
1654                 <reply>
1655                         <field name="deviceID" type="CARD8" />
1656                         <field name="which" type="CARD32" mask="NameDetail" />
1657                         <field name="minKeyCode" type="KEYCODE" />
1658                         <field name="maxKeyCode" type="KEYCODE" />
1659                         <field name="nTypes" type="CARD8" />
1660                         <field name="groupNames" type="CARD8" mask="SetOfGroup" />
1661                         <field name="virtualMods" type="CARD16" mask="VMod" />
1662                         <field name="firstKey" type="KEYCODE" />
1663                         <field name="nKeys" type="CARD8" />
1664                         <field name="indicators" type="CARD32" />
1665                         <field name="nRadioGroups" type="CARD8" />
1666                         <field name="nKeyAliases" type="CARD8" />
1667                         <field name="nKTLevels" type="CARD16" />
1668                         <pad bytes="4" />
1669                         <switch name="valueList">
1670                                 <fieldref>which</fieldref>
1671                                 <bitcase>
1672                                         <enumref ref="NameDetail">Keycodes</enumref>
1673                                         <field name="keycodesName" type="ATOM" />
1674                                 </bitcase>
1675                                 <bitcase>
1676                                         <enumref ref="NameDetail">Geometry</enumref>
1677                                         <field name="geometryName" type="ATOM" />
1678                                 </bitcase>
1679                                 <bitcase>
1680                                         <enumref ref="NameDetail">Symbols</enumref>
1681                                         <field name="symbolsName" type="ATOM" />
1682                                 </bitcase>
1683                                 <bitcase>
1684                                         <enumref ref="NameDetail">PhysSymbols</enumref>
1685                                         <field name="physSymbolsName" type="ATOM" />
1686                                 </bitcase>
1687                                 <bitcase>
1688                                         <enumref ref="NameDetail">Types</enumref>
1689                                         <field name="typesName" type="ATOM" />
1690                                 </bitcase>
1691                                 <bitcase>
1692                                         <enumref ref="NameDetail">Compat</enumref>
1693                                         <field name="compatName" type="ATOM" />
1694                                 </bitcase>
1695                                 <bitcase>
1696                                         <enumref ref="NameDetail">KeyTypeNames</enumref>
1697                                         <list name="typeNames" type="ATOM">
1698                                                 <fieldref>nTypes</fieldref>
1699                                         </list>
1700                                 </bitcase>
1701                                 <bitcase>
1702                                         <enumref ref="NameDetail">KTLevelNames</enumref>
1703                                         <list name="nLevelsPerType" type="CARD8">
1704                                           <!-- Xlib uses NTypes here - 
1705                                                the spec says nKTLevels is correct, but
1706                                                it does not work in reality
1707                                                <fieldref>nKTLevels</fieldref> -->
1708                                                 <fieldref>nTypes</fieldref>
1709                                         </list>
1710                                         <list type="CARD8" name="alignment_pad">
1711                                             <op op="-">
1712                                                 <op op="&amp;">
1713                                                     <op op="+">
1714                                                         <fieldref>nTypes</fieldref>
1715                                                         <value>3</value>
1716                                                     </op>
1717                                                     <unop op="~">
1718                                                         <value>3</value>
1719                                                     </unop>
1720                                                 </op>
1721                                                 <fieldref>nTypes</fieldref>
1722                                             </op>
1723                                         </list>
1724                                         <list name="ktLevelNames" type="ATOM">
1725                                                 <sumof ref="nLevelsPerType" />
1726                                         </list>
1727                                 </bitcase>
1728                                 <bitcase>
1729                                         <enumref ref="NameDetail">IndicatorNames</enumref>
1730                                         <list name="indicatorNames" type="ATOM">
1731                                                 <popcount>
1732                                                         <fieldref>indicators</fieldref>
1733                                                 </popcount>
1734                                         </list>
1735                                 </bitcase>
1736                                 <bitcase>
1737                                         <enumref ref="NameDetail">VirtualModNames</enumref>
1738                                         <list name="virtualModNames" type="ATOM">
1739                                                 <popcount>
1740                                                         <fieldref>virtualMods</fieldref>
1741                                                 </popcount>
1742                                         </list>
1743                                 </bitcase>
1744                                 <bitcase>
1745                                         <enumref ref="NameDetail">GroupNames</enumref>
1746                                         <list name="groups" type="ATOM">
1747                                                 <popcount>
1748                                                         <fieldref>groupNames</fieldref>
1749                                                 </popcount>
1750                                         </list>
1751                                 </bitcase>
1752                                 <bitcase>
1753                                         <enumref ref="NameDetail">KeyNames</enumref>
1754                                         <list name="keyNames" type="KeyName">
1755                                                 <fieldref>nKeys</fieldref>
1756                                         </list>
1757                                 </bitcase>
1758                                 <bitcase>
1759                                         <enumref ref="NameDetail">KeyAliases</enumref>
1760                                         <list name="keyAliases" type="KeyAlias">
1761                                                 <fieldref>nKeyAliases</fieldref>
1762                                         </list>
1763                                 </bitcase>
1764                                 <bitcase>
1765                                         <enumref ref="NameDetail">RGNames</enumref>
1766                                         <list name="radioGroupNames" type="ATOM">
1767                                                 <fieldref>nRadioGroups</fieldref>
1768                                         </list>
1769                                 </bitcase>
1770                         </switch>
1771                 </reply>
1772         </request>
1773
1774         <request name="SetNames" opcode="18">
1775                 <field name="deviceSpec" type="DeviceSpec" />
1776                 <field name="virtualMods" type="CARD16" mask="VMod" />
1777                 <field name="which" type="CARD32" mask="NameDetail" />
1778                 <field name="firstType" type="CARD8" />
1779                 <field name="nTypes" type="CARD8" />
1780                 <field name="firstKTLevelt" type="CARD8" />
1781                 <field name="nKTLevels" type="CARD8" />
1782                 <field name="indicators" type="CARD32" />
1783                 <field name="groupNames" type="CARD8" mask="SetOfGroup" />
1784                 <field name="nRadioGroups" type="CARD8" />
1785                 <field name="firstKey" type="KEYCODE" />
1786                 <field name="nKeys" type="CARD8" />
1787                 <field name="nKeyAliases" type="CARD8"/>
1788                 <pad bytes="1" />
1789                 <field name="totalKTLevelNames" type="CARD16" />
1790                 <switch name="values">
1791                         <fieldref>which</fieldref>
1792                         <bitcase>
1793                                 <enumref ref="NameDetail">Keycodes</enumref>
1794                                 <field name="keycodesName" type="ATOM" />
1795                         </bitcase>
1796                         <bitcase>
1797                                 <enumref ref="NameDetail">Geometry</enumref>
1798                                 <field name="geometryName" type="ATOM" />
1799                         </bitcase>
1800                         <bitcase>
1801                                 <enumref ref="NameDetail">Symbols</enumref>
1802                                 <field name="symbolsName" type="ATOM" />
1803                         </bitcase>
1804                         <bitcase>
1805                                 <enumref ref="NameDetail">PhysSymbols</enumref>
1806                                 <field name="physSymbolsName" type="ATOM" />
1807                         </bitcase>
1808                         <bitcase>
1809                                 <enumref ref="NameDetail">Types</enumref>
1810                                 <field name="typesName" type="ATOM" />
1811                         </bitcase>
1812                         <bitcase>
1813                                 <enumref ref="NameDetail">Compat</enumref>
1814                                 <field name="compatName" type="ATOM" />
1815                         </bitcase>
1816                         <bitcase>
1817                                 <enumref ref="NameDetail">KeyTypeNames</enumref>
1818                                 <list name="typeNames" type="ATOM">
1819                                         <fieldref>nTypes</fieldref>
1820                                 </list>
1821                         </bitcase>
1822                         <bitcase>
1823                                 <enumref ref="NameDetail">KTLevelNames</enumref>
1824                                 <list name="nLevelsPerType" type="CARD8">
1825                                         <fieldref>nKTLevels</fieldref>
1826                                 </list>
1827                                 <list name="ktLevelNames" type="ATOM">
1828                                         <sumof ref="nLevelsPerType" />
1829                                 </list>
1830                         </bitcase>
1831                         <bitcase>
1832                                 <enumref ref="NameDetail">IndicatorNames</enumref>
1833                                 <list name="indicatorNames" type="ATOM">
1834                                         <popcount>
1835                                                 <fieldref>indicators</fieldref>
1836                                         </popcount>
1837                                 </list>
1838                         </bitcase>
1839                         <bitcase>
1840                                 <enumref ref="NameDetail">VirtualModNames</enumref>
1841                                 <list name="virtualModNames" type="ATOM">
1842                                         <popcount>
1843                                                 <fieldref>virtualMods</fieldref>
1844                                         </popcount>
1845                                 </list>
1846                         </bitcase>
1847                         <bitcase>
1848                                 <enumref ref="NameDetail">GroupNames</enumref>
1849                                 <list name="groups" type="ATOM">
1850                                         <popcount>
1851                                                 <fieldref>groupNames</fieldref>
1852                                         </popcount>
1853                                 </list>
1854                         </bitcase>
1855                         <bitcase>
1856                                 <enumref ref="NameDetail">KeyNames</enumref>
1857                                 <list name="keyNames" type="KeyName">
1858                                         <fieldref>nKeys</fieldref>
1859                                 </list>
1860                         </bitcase>
1861                         <bitcase>
1862                                 <enumref ref="NameDetail">KeyAliases</enumref>
1863                                 <list name="keyAliases" type="KeyAlias">
1864                                         <fieldref>nKeyAliases</fieldref>
1865                                 </list>
1866                         </bitcase>
1867                         <bitcase>
1868                                 <enumref ref="NameDetail">RGNames</enumref>
1869                                 <list name="radioGroupNames" type="ATOM">
1870                                         <fieldref>nRadioGroups</fieldref>
1871                                 </list>
1872                         </bitcase>
1873                 </switch>
1874         </request>
1875
1876         <!-- XXX: Property and doodads are broken, which renders GetGeometry useless
1877         <request name="GetGeometry" opcode="19">
1878                 <field name="deviceSpec" type="DeviceSpec" />
1879                 <pad bytes="2" />
1880                 <field name="name" type="ATOM" />
1881                 <reply>
1882                         <field name="deviceID" type="CARD8" />
1883                         <field name="name" type="ATOM" />
1884                         <field name="found" type="BOOL" />
1885                         <pad bytes="1" />
1886                         <field name="widthMM" type="CARD16" />
1887                         <field name="heightMM" type="CARD16" />
1888                         <field name="nProperties" type="CARD16" />
1889                         <field name="nColors" type="CARD16" />
1890                         <field name="nShapes" type="CARD16" />
1891                         <field name="nSections" type="CARD16" />
1892                         <field name="nDoodads" type="CARD16" />
1893                         <field name="nKeyAliases" type="CARD16" />
1894                         <field name="baseColorNdx" type="CARD8" />
1895                         <field name="labelColorNdx" type="CARD8" />
1896                         <field name="labelFont" type="CountedString16" />
1897                         <list name="properties" type="Property">
1898                                 <fieldref>nProperties</fieldref>
1899                         </list>
1900                         <list name="colors" type="CountedString16">
1901                                 <fieldref>nColors</fieldref>
1902                         </list>
1903                         <list name="shapes" type="Shape">
1904                                 <fieldref>nShapes</fieldref>
1905                         </list>
1906                         <list name="sections" type="Section">
1907                                 <fieldref>nSections</fieldref>
1908                         </list>
1909                         <list name="doodads" type="Doodad">
1910                                 <fieldref>nDoodads</fieldref>
1911                         </list>
1912                         <list name="keyAliases" type="KeyAlias">
1913                                 <fieldref>nKeyAliases</fieldref>
1914                         </list>
1915                 </reply>
1916         </request>
1917         -->
1918
1919         <!-- XXX: Property and doodads are broken, which renders SetGeometry useless
1920         <request name="SetGeometry" opcode="20">
1921                 <field name="deviceSpec" type="DeviceSpec" />
1922                 <field name="nShapes" type="CARD8" />
1923                 <field name="nSections" type="CARD8" />
1924                 <field name="name" type="ATOM" />
1925                 <field name="widthMM" type="CARD16" />
1926                 <field name="heightMM" type="CARD16" />
1927                 <field name="nProperties" type="CARD16" />
1928                 <field name="nColors" type="CARD16" />
1929                 <field name="nDoodads" type="CARD16" />
1930                 <field name="nKeyAliases" type="CARD16" />
1931                 <field name="baseColorNdx" type="CARD8" />
1932                 <field name="labelColorNdx" type="CARD8" />
1933                 <pad bytes="2" />
1934                 <field name="labelFont" type="CountedString16" />
1935                 <list name="properties" type="Property">
1936                         <fieldref>nProperties</fieldref>
1937                 </list>
1938                 <list name="colors" type="CountedString16">
1939                         <fieldref>nColors</fieldref>
1940                 </list>
1941                 <list name="shapes" type="Shape">
1942                         <fieldref>nShapes</fieldref>
1943                 </list>
1944                 <list name="sections" type="Section">
1945                         <fieldref>nSections</fieldref>
1946                 </list>
1947                 <list name="doodads" type="Doodad">
1948                         <fieldref>nDoodads</fieldref>
1949                 </list>
1950                 <list name="keyAliases" type="KeyAlias">
1951                         <fieldref>nKeyAliases</fieldref>
1952                 </list>
1953         </request>
1954         -->
1955
1956         <request name="PerClientFlags" opcode="21">
1957                 <field name="deviceSpec" type="DeviceSpec" />
1958                 <pad bytes="2" />
1959                 <field name="change" type="CARD32" mask="PerClientFlag" />
1960                 <field name="value" type="CARD32" mask="PerClientFlag" />
1961                 <field name="ctrlsToChange" type="CARD32" mask="BoolCtrl" />
1962                 <field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1963                 <field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1964                 <reply>
1965                         <field name="deviceID" type="CARD8"/>
1966                         <field name="supported" type="CARD32" mask="PerClientFlag" />
1967                         <field name="value" type="CARD32" mask="PerClientFlag" />
1968                         <field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1969                         <field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1970                         <pad bytes="8" />
1971                 </reply>
1972         </request>
1973
1974         <request name="ListComponents" opcode="22">
1975                 <field name="deviceSpec" type="DeviceSpec" />
1976                 <field name="maxNames" type="CARD16" />
1977                 <!-- XXX: Intermixed fixed size fields and lists are broken
1978                 <field name="keymapsSpecLen" type="CARD8" />
1979                 <list name="keymapsSpec" type="STRING8">
1980                         <fieldref>keymapsSpecLen</fieldref>
1981                 </list>
1982                 <field name="keycodesSpecLen" type="CARD8" />
1983                 <list name="keycodesSpec" type="STRING8">
1984                         <fieldref>keycodesSpecLen</fieldref>
1985                 </list>
1986                 <field name="typesSpecLen" type="CARD8" />
1987                 <list name="typesSpec" type="STRING8">
1988                         <fieldref>typesSpecLen</fieldref>
1989                 </list>
1990                 <field name="compatMapSpecLen" type="CARD8" />
1991                 <list name="compatMapSpec" type="STRING8">
1992                         <fieldref>compatMapSpecLen</fieldref>
1993                 </list>
1994                 <field name="symbolsSpecLen" type="CARD8" />
1995                 <list name="symbolsSpec" type="STRING8">
1996                         <fieldref>symbolsSpecLen</fieldref>
1997                 </list>
1998                 <field name="geometrySpecLen" type="CARD8" />
1999                 <list name="geometrySpec" type="STRING8">
2000                         <fieldref>geometrySpecLen</fieldref>
2001                 </list>
2002                 -->
2003                 <reply>
2004                         <field name="deviceID" type="CARD8" />
2005                         <field name="nKeymaps" type="CARD16" />
2006                         <field name="nKeycodes" type="CARD16" />
2007                         <field name="nTypes" type="CARD16" />
2008                         <field name="nCompatMaps" type="CARD16" />
2009                         <field name="nSymbols" type="CARD16" />
2010                         <field name="nGeometries" type="CARD16" />
2011                         <field name="extra" type="CARD16" />
2012                         <pad bytes="10" />
2013                         <list name="keymaps" type="Listing">
2014                                 <fieldref>nKeymaps</fieldref>
2015                         </list>
2016                         <list name="keycodes" type="Listing">
2017                                 <fieldref>nKeycodes</fieldref>
2018                         </list>
2019                         <list name="types" type="Listing">
2020                                 <fieldref>nTypes</fieldref>
2021                         </list>
2022                         <list name="compatMaps" type="Listing">
2023                                 <fieldref>nCompatMaps</fieldref>
2024                         </list>
2025                         <list name="symbols" type="Listing">
2026                                 <fieldref>nSymbols</fieldref>
2027                         </list>
2028                         <list name="geometries" type="Listing">
2029                                 <fieldref>nGeometries</fieldref>
2030                         </list>
2031                 </reply>
2032         </request>
2033
2034         <request name="GetKbdByName" opcode="23">
2035                 <field name="deviceSpec" type="DeviceSpec" />
2036                 <field name="need" type="CARD16" mask="GBNDetail" />
2037                 <field name="want" type="CARD16" mask="GBNDetail" />
2038                 <field name="load" type="BOOL" />
2039                 <pad bytes="1" />
2040                 <!-- XXX: Intermixed fixed size fields and lists are broken
2041                 <field name="keymapsSpecLen" type="CARD8" />
2042                 <list name="keymapsSpec" type="STRING8">
2043                         <fieldref>keymapsSpecLen</fieldref>
2044                 </list>
2045                 <field name="keycodesSpecLen" type="CARD8" />
2046                 <list name="keycodesSpec" type="STRING8">
2047                         <fieldref>keycodesSpecLen</fieldref>
2048                 </list>
2049                 <field name="typesSpecLen" type="CARD8" />
2050                 <list name="typesSpec" type="STRING8">
2051                         <fieldref>typesSpecLen</fieldref>
2052                 </list>
2053                 <field name="compatMapSpecLen" type="CARD8" />
2054                 <list name="compatMapSpec" type="STRING8">
2055                         <fieldref>compatMapSpecLen</fieldref>
2056                 </list>
2057                 <field name="symbolsSpecLen" type="CARD8" />
2058                 <list name="symbolsSpec" type="STRING8">
2059                         <fieldref>symbolsSpecLen</fieldref>
2060                 </list>
2061                 <field name="geometrySpecLen" type="CARD8" />
2062                 <list name="geometrySpec" type="STRING8">
2063                         <fieldref>geometrySpecLen</fieldref>
2064                 </list>
2065                 -->
2066                 <reply>
2067                         <field name="deviceID" type="CARD8" />
2068                         <field name="minKeyCode" type="KEYCODE" />
2069                         <field name="maxKeyCode" type="KEYCODE" />
2070                         <field name="loaded" type="BOOL" />
2071                         <field name="newKeyboard" type="BOOL" />
2072                         <field name="found" type="CARD16" mask="GBNDetail" />
2073                         <field name="reported" type="CARD16" mask="GBNDetail" />
2074                         <pad bytes="16" />
2075                         <switch name="replies">
2076                                 <fieldref>reported</fieldref>
2077                                 <bitcase name="types">
2078                                         <enumref ref="GBNDetail">Types</enumref>
2079                                         <enumref ref="GBNDetail">ClientSymbols</enumref>
2080                                         <enumref ref="GBNDetail">ServerSymbols</enumref>
2081                                         <!-- from the spec, this has to be a GetMap reply -->
2082                                         <field name="getmap_type" type="CARD8" />
2083                                         <!-- done 'emulating' GetMap reply header-->
2084                                         <field name="typeDeviceID" type="CARD8" />
2085                                         <!-- from the spec, this has to be a GetMap reply -->
2086                                         <field name="getmap_sequence" type="CARD16" />
2087                                         <field name="getmap_length" type="CARD32" />
2088                                         <!-- done 'emulating' GetMap reply header-->
2089                                         <pad bytes="2" />
2090                                         <field name="typeMinKeyCode" type="KEYCODE" />
2091                                         <field name="typeMaxKeyCode" type="KEYCODE" />
2092                                         <field name="present" type="CARD16" mask="MapPart" />
2093                                         <field name="firstType" type="CARD8" />
2094                                         <field name="nTypes" type="CARD8" />
2095                                         <field name="totalTypes" type="CARD8" />
2096                                         <field name="firstKeySym" type="KEYCODE" />
2097                                         <field name="totalSyms" type="CARD16" />
2098                                         <field name="nKeySyms" type="CARD8" />
2099                                         <field name="firstKeyAction" type="KEYCODE" />
2100                                         <field name="totalActions" type="CARD16" />
2101                                         <field name="nKeyActions" type="CARD8" />
2102                                         <field name="firstKeyBehavior" type="KEYCODE" />
2103                                         <field name="nKeyBehaviors" type="CARD8" />
2104                                         <field name="totalKeyBehaviors" type="CARD8" />
2105                                         <field name="firstKeyExplicit" type="KEYCODE" />
2106                                         <field name="nKeyExplicit" type="CARD8" />
2107                                         <field name="totalKeyExplicit" type="CARD8" />
2108                                         <field name="firstModMapKey" type="KEYCODE" />
2109                                         <field name="nModMapKeys" type="CARD8" />
2110                                         <field name="totalModMapKeys" type="CARD8" />
2111                                         <field name="firstVModMapKey" type="KEYCODE" />
2112                                         <field name="nVModMapKeys" type="CARD8" />
2113                                         <field name="totalVModMapKeys" type="CARD8" />
2114                                         <pad bytes="1" />
2115                                         <field name="virtualMods" type="CARD16" mask="VMod" />
2116                                         <switch name="map">
2117                                                 <fieldref>present</fieldref>
2118                                                 <bitcase>
2119                                                         <enumref ref="MapPart">KeyTypes</enumref>
2120                                                         <list name="types_rtrn" type="KeyType">
2121                                                                 <fieldref>nTypes</fieldref>
2122                                                         </list>
2123                                                 </bitcase>
2124                                                 <bitcase>
2125                                                         <enumref ref="MapPart">KeySyms</enumref>
2126                                                         <list name="syms_rtrn" type="KeySymMap">
2127                                                                 <fieldref>nKeySyms</fieldref>
2128                                                         </list>
2129                                                 </bitcase>
2130                                                 <bitcase>
2131                                                         <enumref ref="MapPart">KeyActions</enumref>
2132                                                         <list name="acts_rtrn_count" type="CARD8">
2133                                                                 <fieldref>nKeyActions</fieldref>
2134                                                         </list>
2135                                                         <list name="acts_rtrn_acts" type="Action">
2136                                                                 <fieldref>totalActions</fieldref>
2137                                                         </list>
2138                                                 </bitcase>
2139                                                 <bitcase>
2140                                                         <enumref ref="MapPart">KeyBehaviors</enumref>
2141                                                         <list name="behaviors_rtrn" type="SetBehavior">
2142                                                                 <fieldref>totalKeyBehaviors</fieldref>
2143                                                         </list>
2144                                                 </bitcase>
2145                                                 <bitcase>
2146                                                         <enumref ref="MapPart">VirtualMods</enumref>
2147                                                         <list name="vmods_rtrn" type="CARD8" mask="ModMask">
2148                                                                 <popcount><fieldref>virtualMods</fieldref></popcount>
2149                                                         </list>
2150                                                 </bitcase>
2151                                                 <bitcase>
2152                                                         <enumref ref="MapPart">ExplicitComponents</enumref>
2153                                                         <list name="explicit_rtrn" type="SetExplicit">
2154                                                                 <fieldref>totalKeyExplicit</fieldref>
2155                                                         </list>
2156                                                 </bitcase>
2157                                                 <bitcase>
2158                                                         <enumref ref="MapPart">ModifierMap</enumref>
2159                                                         <list name="modmap_rtrn" type="KeyModMap">
2160                                                                 <fieldref>totalModMapKeys</fieldref>
2161                                                         </list>
2162                                                 </bitcase>
2163                                                 <bitcase>
2164                                                         <enumref ref="MapPart">VirtualModMap</enumref>
2165                                                         <list name="vmodmap_rtrn" type="KeyVModMap">
2166                                                                 <fieldref>totalVModMapKeys</fieldref>
2167                                                         </list>
2168                                                 </bitcase>
2169                                         </switch>
2170                                 </bitcase>
2171                                 <bitcase name="compat_map">
2172                                         <enumref ref="GBNDetail">CompatMap</enumref>
2173                                         <!-- from the spec, this has to include a reply header -->
2174                                         <field name="compatmap_type" type="CARD8" />
2175                                         <field name="compatDeviceID" type="CARD8" />
2176                                         <field name="compatmap_sequence" type="CARD16" />
2177                                         <field name="compatmap_length" type="CARD32" />
2178                                         <!-- done 'emulating' reply header -->
2179                                         <field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
2180                                         <pad bytes="1" />
2181                                         <field name="firstSIRtrn" type="CARD16" />
2182                                         <field name="nSIRtrn" type="CARD16" />
2183                                         <field name="nTotalSI" type="CARD16" />
2184                                         <pad bytes="16" />
2185                                         <list name="si_rtrn" type="SymInterpret">
2186                                                 <fieldref>nSIRtrn</fieldref>
2187                                         </list>
2188                                         <list name="group_rtrn" type="ModDef">
2189                                                 <popcount>
2190                                                         <fieldref>groupsRtrn</fieldref>
2191                                                 </popcount>
2192                                         </list>
2193                                 </bitcase>
2194                                 <bitcase name="indicator_maps">
2195                                         <enumref ref="GBNDetail">IndicatorMaps</enumref>
2196                                         <!-- from the spec, this has to include a reply header -->
2197                                         <field name="indicatormap_type" type="CARD8" />
2198                                         <field name="indicatorDeviceID" type="CARD8" />
2199                                         <field name="indicatormap_sequence" type="CARD16" />
2200                                         <field name="indicatormap_length" type="CARD32" />
2201                                         <!-- done 'emulating' reply header -->
2202                                         <field name="which" type="CARD32" />
2203                                         <field name="realIndicators" type="CARD32" />
2204                                         <field name="nIndicators" type="CARD8" />
2205                                         <pad bytes="15" />
2206                                         <list name="maps" type="IndicatorMap">
2207                                                 <fieldref>nIndicators</fieldref>
2208                                         </list>
2209                                 </bitcase>
2210                                 <bitcase name="key_names">
2211                                         <enumref ref="GBNDetail">KeyNames</enumref>
2212                                         <enumref ref="GBNDetail">OtherNames</enumref>
2213                                         <!-- from the spec, this has to include a reply header -->
2214                                         <field name="keyname_type" type="CARD8" />
2215                                         <field name="keyDeviceID" type="CARD8" />
2216                                         <field name="keyname_sequence" type="CARD16" />
2217                                         <field name="keyname_length" type="CARD32" />
2218                                         <!-- done 'emulating' reply header -->
2219                                         <field name="which" type="CARD32" mask="NameDetail" />
2220                                         <field name="keyMinKeyCode" type="KEYCODE" />
2221                                         <field name="keyMaxKeyCode" type="KEYCODE" />
2222                                         <field name="nTypes" type="CARD8" />
2223                                         <field name="groupNames" type="CARD8" mask="SetOfGroup" />
2224                                         <field name="virtualMods" type="CARD16" mask="VMod" />
2225                                         <field name="firstKey" type="KEYCODE" />
2226                                         <field name="nKeys" type="CARD8" />
2227                                         <field name="indicators" type="CARD32" />
2228                                         <field name="nRadioGroups" type="CARD8" />
2229                                         <field name="nKeyAliases" type="CARD8" />
2230                                         <field name="nKTLevels" type="CARD16" />
2231                                         <pad bytes="4" />
2232                                         <switch name="valueList">
2233                                                 <fieldref>which</fieldref>
2234                                                 <bitcase>
2235                                                         <enumref ref="NameDetail">Keycodes</enumref>
2236                                                         <field name="keycodesName" type="ATOM" />
2237                                                 </bitcase>
2238                                                 <bitcase>
2239                                                         <enumref ref="NameDetail">Geometry</enumref>
2240                                                         <field name="geometryName" type="ATOM" />
2241                                                 </bitcase>
2242                                                 <bitcase>
2243                                                         <enumref ref="NameDetail">Symbols</enumref>
2244                                                         <field name="symbolsName" type="ATOM" />
2245                                                 </bitcase>
2246                                                 <bitcase>
2247                                                         <enumref ref="NameDetail">PhysSymbols</enumref>
2248                                                         <field name="physSymbolsName" type="ATOM" />
2249                                                 </bitcase>
2250                                                 <bitcase>
2251                                                         <enumref ref="NameDetail">Types</enumref>
2252                                                         <field name="typesName" type="ATOM" />
2253                                                 </bitcase>
2254                                                 <bitcase>
2255                                                         <enumref ref="NameDetail">Compat</enumref>
2256                                                         <field name="compatName" type="ATOM" />
2257                                                 </bitcase>
2258                                                 <bitcase>
2259                                                         <enumref ref="NameDetail">KeyTypeNames</enumref>
2260                                                         <list name="typeNames" type="ATOM">
2261                                                                 <fieldref>nTypes</fieldref>
2262                                                         </list>
2263                                                 </bitcase>
2264                                                 <bitcase>
2265                                                         <enumref ref="NameDetail">KTLevelNames</enumref>
2266                                                         <list name="nLevelsPerType" type="CARD8">
2267                                                                 <fieldref>nKTLevels</fieldref>
2268                                                         </list>
2269                                                         <list name="ktLevelNames" type="ATOM">
2270                                                                 <sumof ref="nLevelsPerType" />
2271                                                         </list>
2272                                                 </bitcase>
2273                                                 <bitcase>
2274                                                         <enumref ref="NameDetail">IndicatorNames</enumref>
2275                                                         <list name="indicatorNames" type="ATOM">
2276                                                                 <popcount>
2277                                                                         <fieldref>indicators</fieldref>
2278                                                                 </popcount>
2279                                                         </list>
2280                                                 </bitcase>
2281                                                 <bitcase>
2282                                                         <enumref ref="NameDetail">VirtualModNames</enumref>
2283                                                         <list name="virtualModNames" type="ATOM">
2284                                                                 <popcount>
2285                                                                         <fieldref>virtualMods</fieldref>
2286                                                                 </popcount>
2287                                                         </list>
2288                                                 </bitcase>
2289                                                 <bitcase>
2290                                                         <enumref ref="NameDetail">GroupNames</enumref>
2291                                                         <list name="groups" type="ATOM">
2292                                                                 <popcount>
2293                                                                         <fieldref>groupNames</fieldref>
2294                                                                 </popcount>
2295                                                         </list>
2296                                                 </bitcase>
2297                                                 <bitcase>
2298                                                         <enumref ref="NameDetail">KeyNames</enumref>
2299                                                         <list name="keyNames" type="KeyName">
2300                                                                 <fieldref>nKeys</fieldref>
2301                                                         </list>
2302                                                 </bitcase>
2303                                                 <bitcase>
2304                                                         <enumref ref="NameDetail">KeyAliases</enumref>
2305                                                         <list name="keyAliases" type="KeyAlias">
2306                                                                 <fieldref>nKeyAliases</fieldref>
2307                                                         </list>
2308                                                 </bitcase>
2309                                                 <bitcase>
2310                                                         <enumref ref="NameDetail">RGNames</enumref>
2311                                                         <list name="radioGroupNames" type="ATOM">
2312                                                                 <fieldref>nRadioGroups</fieldref>
2313                                                         </list>
2314                                                 </bitcase>
2315                                         </switch>
2316                                 </bitcase>
2317                                 <bitcase name="geometry">
2318                                         <enumref ref="GBNDetail">Geometry</enumref>
2319                                         <!-- from the spec, this has to include a reply header -->
2320                                         <field name="geometry_type" type="CARD8" />
2321                                         <field name="geometryDeviceID" type="CARD8" />
2322                                         <field name="geometry_sequence" type="CARD16" />
2323                                         <field name="geometry_length" type="CARD32" />
2324                                         <!-- done 'emulating' reply header -->
2325                                         <field name="name" type="ATOM" />
2326                                         <field name="geometryFound" type="BOOL" />
2327                                         <pad bytes="1" />
2328                                         <field name="widthMM" type="CARD16" />
2329                                         <field name="heightMM" type="CARD16" />
2330                                         <field name="nProperties" type="CARD16" />
2331                                         <field name="nColors" type="CARD16" />
2332                                         <field name="nShapes" type="CARD16" />
2333                                         <field name="nSections" type="CARD16" />
2334                                         <field name="nDoodads" type="CARD16" />
2335                                         <field name="nKeyAliases" type="CARD16" />
2336                                         <field name="baseColorNdx" type="CARD8" />
2337                                         <field name="labelColorNdx" type="CARD8" />
2338                                         <field name="labelFont" type="CountedString16" />
2339                                         <!-- XXX: Property is broken
2340                                         <list name="properties" type="Property">
2341                                                 <fieldref>nProperties</fieldref>
2342                                         </list>
2343                                         <list name="colors" type="CountedString16">
2344                                                 <fieldref>nColors</fieldref>
2345                                         </list>
2346                                         <list name="shapes" type="Shape">
2347                                                 <fieldref>nShapes</fieldref>
2348                                         </list>
2349                                         -->
2350                                         <!-- XXX: doodads are broken
2351                                         <list name="sections" type="Section">
2352                                                 <fieldref>nSections</fieldref>
2353                                         </list>
2354                                         <list name="doodads" type="Doodad">
2355                                                 <fieldref>nDoodads</fieldref>
2356                                         </list>
2357                                         <list name="keyAliases" type="KeyAlias">
2358                                                 <fieldref>nKeyAliases</fieldref>
2359                                         </list>
2360                                         -->
2361                                 </bitcase>
2362                         </switch>
2363                 </reply>
2364         </request>
2365
2366         <request name="GetDeviceInfo" opcode="24">
2367                 <field name="deviceSpec" type="DeviceSpec" />
2368                 <field name="wanted" type="CARD16" mask="XIFeature" />
2369                 <field name="allButtons" type="BOOL" />
2370                 <field name="firstButton" type="CARD8" />
2371                 <field name="nButtons" type="CARD8" />
2372                 <pad bytes="1" />
2373                 <field name="ledClass" type="LedClassSpec" enum="LedClass" />
2374                 <field name="ledID" type="IDSpec" altenum="ID" />
2375                 <reply>
2376                         <field name="deviceID" type="CARD8" />
2377                         <field name="present" type="CARD16" mask="XIFeature" />
2378                         <field name="supported" type="CARD16" mask="XIFeature" />
2379                         <field name="unsupported" type="CARD16" mask="XIFeature" />
2380                         <field name="nDeviceLedFBs" type="CARD16" />
2381                         <field name="firstBtnWanted" type="CARD8" />
2382                         <field name="nBtnsWanted" type="CARD8" />
2383                         <field name="firstBtnRtrn" type="CARD8" />
2384                         <field name="nBtnsRtrn" type="CARD8" />
2385                         <field name="totalBtns" type="CARD8" />
2386                         <field name="hasOwnState" type="BOOL" />
2387                         <field name="dfltKbdFB" type="CARD16" altenum="ID" />
2388                         <field name="dfltLedFB" type="CARD16" altenum="ID" />
2389                         <pad bytes="2" />
2390                         <field name="devType" type="ATOM" />
2391                         <field name="nameLen" type="CARD16" />
2392                         <list name="name" type="STRING8">
2393                                 <fieldref>nameLen</fieldref>
2394                         </list>
2395                         <list name="btnActions" type="Action">
2396                                 <fieldref>nBtnsRtrn</fieldref>
2397                         </list>
2398                         <list name="leds" type="DeviceLedInfo">
2399                                 <fieldref>nDeviceLedFBs</fieldref>
2400                         </list>
2401                 </reply>
2402         </request>
2403
2404
2405         <request name="SetDeviceInfo" opcode="25">
2406                 <field name="deviceSpec" type="DeviceSpec" />
2407                 <field name="firstBtn" type="CARD8" />
2408                 <field name="nBtns" type="CARD8" />
2409                 <field name="change" type="CARD16" mask="XIFeature" />
2410                 <field name="nDeviceLedFBs" type="CARD16" />
2411                 <list name="btnActions" type="Action">
2412                         <fieldref>nBtns</fieldref>
2413                 </list>
2414                 <list name="leds" type="DeviceLedInfo">
2415                         <fieldref>nDeviceLedFBs</fieldref>
2416                 </list>
2417         </request>
2418
2419         <request name="SetDebuggingFlags" opcode="101">
2420                 <field name="msgLength" type="CARD16" />
2421                 <pad bytes="2" />
2422                 <field name="affectFlags" type="CARD32" />
2423                 <field name="flags" type="CARD32" />
2424                 <field name="affectCtrls" type="CARD32" />
2425                 <field name="ctrls" type="CARD32" />
2426                 <list name="message" type="STRING8">
2427                         <fieldref>msgLength</fieldref>
2428                 </list>
2429                 <reply>
2430                         <pad bytes="1" />
2431                         <field name="currentFlags" type="CARD32" />
2432                         <field name="currentCtrls" type="CARD32" />
2433                         <field name="supportedFlags" type="CARD32" />
2434                         <field name="supportedCtrls" type="CARD32" />
2435                         <pad bytes="8" />
2436                 </reply>
2437         </request>
2438
2439         <!-- Events -->
2440
2441         <event name="NewKeyboardNotify" number="0">
2442                 <field name="xkbType" type="CARD8" />
2443                 <field name="time" type="TIMESTAMP" />
2444                 <field name="deviceID" type="CARD8" />
2445                 <field name="oldDeviceID" type="CARD8" />
2446                 <field name="minKeyCode" type="KEYCODE" />
2447                 <field name="maxKeyCode" type="KEYCODE" />
2448                 <field name="oldMinKeyCode" type="KEYCODE" />
2449                 <field name="oldMaxKeyCode" type="KEYCODE" />
2450                 <field name="requestMajor" type="CARD8" />
2451                 <field name="requestMinor" type="CARD8" />
2452                 <field name="changed" type="CARD16" mask="NKNDetail" />
2453                 <pad bytes="14" />
2454         </event>
2455
2456         <event name="MapNotify" number="1">
2457                 <field name="xkbType" type="CARD8" />
2458                 <field name="time" type="TIMESTAMP" />
2459                 <field name="deviceID" type="CARD8" />
2460                 <field name="ptrBtnActions" type="CARD8" />
2461                 <field name="changed" type="CARD16" mask="MapPart" />
2462                 <field name="minKeyCode" type="KEYCODE" />
2463                 <field name="maxKeyCode" type="KEYCODE" />
2464                 <field name="firstType" type="CARD8" />
2465                 <field name="nTypes" type="CARD8" />
2466                 <field name="firstKeySym" type="KEYCODE" />
2467                 <field name="nKeySyms" type="CARD8" />
2468                 <field name="firstKeyAct" type="KEYCODE" />
2469                 <field name="nKeyActs" type="CARD8" />
2470                 <field name="firstKeyBehavior" type="KEYCODE" />
2471                 <field name="nKeyBehavior" type="CARD8" />
2472                 <field name="firstKeyExplicit" type="KEYCODE" />
2473                 <field name="nKeyExplicit" type="CARD8" />
2474                 <field name="firstModMapKey" type="KEYCODE" />
2475                 <field name="nModMapKeys" type="CARD8" />
2476                 <field name="firstVModMapKey" type="KEYCODE" />
2477                 <field name="nVModMapKeys" type="CARD8" />
2478                 <field name="virtualMods" type="CARD16" mask="VMod" />
2479                 <pad bytes="2" />
2480         </event>
2481
2482         <event name="StateNotify" number="2">
2483                 <field name="xkbType" type="CARD8" />
2484                 <field name="time" type="TIMESTAMP" />
2485                 <field name="deviceID" type="CARD8" />
2486                 <field name="mods" type="CARD8" mask="ModMask" />
2487                 <field name="baseMods" type="CARD8" mask="ModMask" />
2488                 <field name="latchedMods" type="CARD8" mask="ModMask" />
2489                 <field name="lockedMods" type="CARD8" mask="ModMask" />
2490                 <field name="group" type="CARD8" enum="Group" />
2491                 <field name="baseGroup" type="INT16" />
2492                 <field name="latchedGroup" type="INT16" />
2493                 <field name="lockedGroup" type="CARD8" enum="Group" />
2494                 <field name="compatState" type="CARD8" mask="ModMask" />
2495                 <field name="grabMods" type="CARD8" mask="ModMask" />
2496                 <field name="compatGrabMods" type="CARD8" mask="ModMask" />
2497                 <field name="lookupMods" type="CARD8" mask="ModMask" />
2498                 <field name="compatLoockupMods" type="CARD8" mask="ModMask" />
2499                 <field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
2500                 <field name="changed" type="CARD16" mask="StatePart" />
2501                 <field name="keycode" type="KEYCODE" />
2502                 <field name="eventType" type="CARD8" />
2503                 <field name="requestMajor" type="CARD8" />
2504                 <field name="requestMinor" type="CARD8" />
2505         </event>
2506
2507         <event name="ControlsNotify" number="3">
2508                 <field name="xkbType" type="CARD8" />
2509                 <field name="time" type="TIMESTAMP" />
2510                 <field name="deviceID" type="CARD8" />
2511                 <field name="numGroups" type="CARD8" />
2512                 <pad bytes="2" />
2513                 <field name="changedControls" type="CARD32" mask="Control" />
2514                 <field name="enabledControls" type="CARD32" mask="BoolCtrl" />
2515                 <field name="enabledControlChanges" type="CARD32" mask="BoolCtrl" />
2516                 <field name="keycode" type="KEYCODE" />
2517                 <field name="eventType" type="CARD8" />
2518                 <field name="requestMajor" type="CARD8" />
2519                 <field name="requestMinor" type="CARD8" />
2520                 <pad bytes="4" />
2521         </event>
2522
2523         <event name="IndicatorStateNotify" number="4">
2524                 <field name="xkbType" type="CARD8" />
2525                 <field name="time" type="TIMESTAMP" />
2526                 <field name="deviceID" type="CARD8" />
2527                 <pad bytes="3" />
2528                 <field name="state" type="CARD32" />
2529                 <field name="stateChanged" type="CARD32" />
2530                 <pad bytes="12" />
2531         </event>
2532
2533         <event name="IndicatorMapNotify" number="5">
2534                 <field name="xkbType" type="CARD8" />
2535                 <field name="time" type="TIMESTAMP" />
2536                 <field name="deviceID" type="CARD8" />
2537                 <pad bytes="3" />
2538                 <field name="state" type="CARD32" />
2539                 <field name="mapChanged" type="CARD32" />
2540                 <pad bytes="12" />
2541         </event>
2542
2543         <event name="NamesNotify" number="6">
2544                 <field name="xkbType" type="CARD8" />
2545                 <field name="time" type="TIMESTAMP" />
2546                 <field name="deviceID" type="CARD8" />
2547                 <pad bytes="1" />
2548                 <field name="changed" type="CARD16" mask="NameDetail" />
2549                 <field name="firstType" type="CARD8" />
2550                 <field name="nTypes" type="CARD8" />
2551                 <field name="firstLevelName" type="CARD8" />
2552                 <field name="nLevelNames" type="CARD8" />
2553                 <pad bytes="1" />
2554                 <field name="nRadioGroups" type="CARD8" />
2555                 <field name="nKeyAliases" type="CARD8" />
2556                 <field name="changedGroupNames" type="CARD8" mask="SetOfGroup" />
2557                 <field name="changedVirtualMods" type="CARD16" mask="VMod" />
2558                 <field name="firstKey" type="KEYCODE" />
2559                 <field name="nKeys" type="CARD8" />
2560                 <field name="changedIndicators" type="CARD32" />
2561                 <pad bytes="4" />
2562         </event>
2563
2564         <event name="CompatMapNotify" number="7">
2565                 <field name="xkbType" type="CARD8" />
2566                 <field name="time" type="TIMESTAMP" />
2567                 <field name="deviceID" type="CARD8" />
2568                 <field name="changedGroups" type="CARD8" mask="SetOfGroup" />
2569                 <field name="firstSI" type="CARD16" />
2570                 <field name="nSI" type="CARD16" />
2571                 <field name="nTotalSI" type="CARD16" />
2572                 <pad bytes="16" />
2573         </event>
2574
2575         <event name="BellNotify" number="8">
2576                 <field name="xkbType" type="CARD8" />
2577                 <field name="time" type="TIMESTAMP" />
2578                 <field name="deviceID" type="CARD8" />
2579                 <field name="bellClass" type="CARD8" enum="BellClassResult" />
2580                 <field name="bellID" type="CARD8" />
2581                 <field name="percent" type="CARD8" />
2582                 <field name="pitch" type="CARD16" />
2583                 <field name="duration" type="CARD16" />
2584                 <field name="name" type="ATOM" />
2585                 <field name="window" type="WINDOW" />
2586                 <field name="eventOnly" type="BOOL" />
2587                 <pad bytes="7" />
2588         </event>
2589
2590         <event name="ActionMessage" number="9">
2591                 <field name="xkbType" type="CARD8" />
2592                 <field name="time" type="TIMESTAMP" />
2593                 <field name="deviceID" type="CARD8" />
2594                 <field name="keycode" type="KEYCODE" />
2595                 <field name="press" type="BOOL" />
2596                 <field name="keyEventFollows" type="BOOL" />
2597                 <field name="mods" type="CARD8" mask="ModMask" />
2598                 <field name="group" type="CARD8" enum="Group" />
2599                 <list name="message" type="STRING8">
2600                         <value>8</value>
2601                 </list>
2602                 <pad bytes="10" />
2603         </event>
2604
2605         <event name="AccessXNotify" number="10">
2606                 <field name="xkbType" type="CARD8" />
2607                 <field name="time" type="TIMESTAMP" />
2608                 <field name="deviceID" type="CARD8" />
2609                 <field name="keycode" type="KEYCODE" />
2610                 <field name="detailt" type="CARD16" mask="AXNDetail" />
2611                 <field name="slowKeysDelay" type="CARD16" />
2612                 <field name="debounceDelay" type="CARD16" />
2613                 <pad bytes="16" />
2614         </event>
2615
2616         <event name="ExtensionDeviceNotify" number="11">
2617                 <field name="xkbType" type="CARD8" />
2618                 <field name="time" type="TIMESTAMP" />
2619                 <field name="deviceID" type="CARD8" />
2620                 <pad bytes="1" />
2621                 <field name="reason" type="CARD16" mask="XIFeature" />
2622                 <field name="ledClass" type="CARD16" enum="LedClassResult" />
2623                 <field name="ledID" type="CARD16" />
2624                 <field name="ledsDefined" type="CARD32" />
2625                 <field name="ledState" type="CARD32" />
2626                 <field name="firstButton" type="CARD8" />
2627                 <field name="nButtons" type="CARD8" />
2628                 <field name="supported" type="CARD16" mask="XIFeature" />
2629                 <field name="unsupported" type="CARD16" mask="XIFeature" />
2630                 <pad bytes="2" />
2631         </event>
2632 </xcb>