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