1986c8b3dSmrg<?xml version="1.0" encoding="utf-8" ?>
2986c8b3dSmrg<!--
3986c8b3dSmrgCopyright (C) 2009 Open Text Corporation.  All Rights Reserved.
4986c8b3dSmrg
5986c8b3dSmrgPermission is hereby granted, free of charge, to any person obtaining a copy
6986c8b3dSmrgof this software and associated documentation files (the "Software"), to deal
7986c8b3dSmrgin the Software without restriction, including without limitation the rights
8986c8b3dSmrgto use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9986c8b3dSmrgcopies of the Software, and to permit persons to whom the Software is
10986c8b3dSmrgfurnished to do so, subject to the following conditions:
11986c8b3dSmrg
12986c8b3dSmrgThe above copyright notice and this permission notice shall be included in all
13986c8b3dSmrgcopies or substantial portions of the Software.
14986c8b3dSmrg
15986c8b3dSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16986c8b3dSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17986c8b3dSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18986c8b3dSmrgAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19986c8b3dSmrgACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20986c8b3dSmrgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21986c8b3dSmrg
22986c8b3dSmrgExcept as contained in this notice, the names of the authors or their
23986c8b3dSmrginstitutions shall not be used in advertising or otherwise to promote the
24986c8b3dSmrgsale, use or other dealings in this Software without prior written
25986c8b3dSmrgauthorization from the authors.
26986c8b3dSmrg-->
27986c8b3dSmrg<xcb header="xkb" extension-xname="XKEYBOARD" extension-name="xkb"
28986c8b3dSmrg	major-version="1" minor-version="0">
29986c8b3dSmrg
30986c8b3dSmrg	<import>xproto</import>
31986c8b3dSmrg
32986c8b3dSmrg	<!-- Common Types -->
33986c8b3dSmrg	<enum name="Const">
34986c8b3dSmrg		<item name="MaxLegalKeyCode"> <value>255</value> </item>
35986c8b3dSmrg		<item name="PerKeyBitArraySize">
36986c8b3dSmrg			<value>32</value>
37986c8b3dSmrg		</item>
38986c8b3dSmrg		<item name="KeyNameLength">
39986c8b3dSmrg			<value>4</value>
40986c8b3dSmrg		</item>
41986c8b3dSmrg	</enum>
42986c8b3dSmrg
43986c8b3dSmrg	<enum name="EventType">
44986c8b3dSmrg		<item name="NewKeyboardNotify">      <bit>0</bit> </item>
45986c8b3dSmrg		<item name="MapNotify">              <bit>1</bit> </item>
46986c8b3dSmrg		<item name="StateNotify">            <bit>2</bit> </item>
47986c8b3dSmrg		<item name="ControlsNotify">         <bit>3</bit> </item>
48986c8b3dSmrg		<item name="IndicatorStateNotify">   <bit>4</bit> </item>
49986c8b3dSmrg		<item name="IndicatorMapNotify">     <bit>5</bit> </item>
50986c8b3dSmrg		<item name="NamesNotify">            <bit>6</bit> </item>
51986c8b3dSmrg		<item name="CompatMapNotify">        <bit>7</bit> </item>
52986c8b3dSmrg		<item name="BellNotify">             <bit>8</bit> </item>
53986c8b3dSmrg		<item name="ActionMessage">          <bit>9</bit> </item>
54986c8b3dSmrg		<item name="AccessXNotify">          <bit>10</bit> </item>
55986c8b3dSmrg		<item name="ExtensionDeviceNotify">  <bit>11</bit> </item>
56986c8b3dSmrg	</enum>
57986c8b3dSmrg
58986c8b3dSmrg	<enum name="NKNDetail">
59986c8b3dSmrg		<item name="Keycodes"> <bit>0</bit> </item>
60986c8b3dSmrg		<item name="Geometry"> <bit>1</bit> </item>
61986c8b3dSmrg		<item name="DeviceID"> <bit>2</bit> </item>
62986c8b3dSmrg	</enum>
63986c8b3dSmrg
64986c8b3dSmrg	<enum name="AXNDetail">
65986c8b3dSmrg		<item name="SKPress">      <bit>0</bit> </item>
66986c8b3dSmrg		<item name="SKAccept">     <bit>1</bit> </item>
67986c8b3dSmrg		<item name="SKReject">     <bit>2</bit> </item>
68986c8b3dSmrg		<item name="SKRelease">    <bit>3</bit> </item>
69986c8b3dSmrg		<item name="BKAccept">     <bit>4</bit> </item>
70986c8b3dSmrg		<item name="BKReject">     <bit>5</bit> </item>
71986c8b3dSmrg		<item name="AXKWarning">   <bit>6</bit> </item>
72986c8b3dSmrg	</enum>
73986c8b3dSmrg
74986c8b3dSmrg	<enum name="MapPart">
75986c8b3dSmrg		<item name="KeyTypes">            <bit>0</bit> </item>
76986c8b3dSmrg		<item name="KeySyms">             <bit>1</bit> </item>
77986c8b3dSmrg		<item name="ModifierMap">         <bit>2</bit> </item>
78986c8b3dSmrg		<item name="ExplicitComponents">  <bit>3</bit> </item>
79986c8b3dSmrg		<item name="KeyActions">          <bit>4</bit> </item>
80986c8b3dSmrg		<item name="KeyBehaviors">        <bit>5</bit> </item>
81986c8b3dSmrg		<item name="VirtualMods">         <bit>6</bit> </item>
82986c8b3dSmrg		<item name="VirtualModMap">       <bit>7</bit> </item>
83986c8b3dSmrg	</enum>
84986c8b3dSmrg
85986c8b3dSmrg	<enum name="SetMapFlags">
86986c8b3dSmrg		<item name="ResizeTypes">       <bit>0</bit> </item>
87986c8b3dSmrg		<item name="RecomputeActions">  <bit>1</bit> </item>
88986c8b3dSmrg	</enum>
89986c8b3dSmrg
90986c8b3dSmrg	<enum name="StatePart">
91986c8b3dSmrg		<item name="ModifierState">     <bit>0</bit> </item>
92986c8b3dSmrg		<item name="ModifierBase">      <bit>1</bit> </item>
93986c8b3dSmrg		<item name="ModifierLatch">     <bit>2</bit> </item>
94986c8b3dSmrg		<item name="ModifierLock">      <bit>3</bit> </item>
95986c8b3dSmrg		<item name="GroupState">        <bit>4</bit> </item>
96986c8b3dSmrg		<item name="GroupBase">         <bit>5</bit> </item>
97986c8b3dSmrg		<item name="GroupLatch">        <bit>6</bit> </item>
98986c8b3dSmrg		<item name="GroupLock">         <bit>7</bit> </item>
99986c8b3dSmrg		<item name="CompatState">       <bit>8</bit> </item>
100986c8b3dSmrg		<item name="GrabMods">          <bit>9</bit> </item>
101986c8b3dSmrg		<item name="CompatGrabMods">    <bit>10</bit> </item>
102986c8b3dSmrg		<item name="LookupMods">        <bit>11</bit> </item>
103986c8b3dSmrg		<item name="CompatLookupMods">  <bit>12</bit> </item>
104986c8b3dSmrg		<item name="PointerButtons">    <bit>13</bit> </item>
105986c8b3dSmrg	</enum>
106986c8b3dSmrg
107986c8b3dSmrg	<enum name="BoolCtrl">
108986c8b3dSmrg		<item name="RepeatKeys">           <bit>0</bit> </item>
109986c8b3dSmrg		<item name="SlowKeys">             <bit>1</bit> </item>
110986c8b3dSmrg		<item name="BounceKeys">           <bit>2</bit> </item>
111986c8b3dSmrg		<item name="StickyKeys">           <bit>3</bit> </item>
112986c8b3dSmrg		<item name="MouseKeys">            <bit>4</bit> </item>
113986c8b3dSmrg		<item name="MouseKeysAccel">       <bit>5</bit> </item>
114986c8b3dSmrg		<item name="AccessXKeys">          <bit>6</bit> </item>
115986c8b3dSmrg		<item name="AccessXTimeoutMask">   <bit>7</bit> </item>
116986c8b3dSmrg		<item name="AccessXFeedbackMask">  <bit>8</bit> </item>
117986c8b3dSmrg		<item name="AudibleBellMask">      <bit>9</bit> </item>
118986c8b3dSmrg		<item name="Overlay1Mask">         <bit>10</bit> </item>
119986c8b3dSmrg		<item name="Overlay2Mask">         <bit>11</bit> </item>
120986c8b3dSmrg		<item name="IgnoreGroupLockMask">  <bit>12</bit> </item>
121986c8b3dSmrg	</enum>
122986c8b3dSmrg
123986c8b3dSmrg	<!-- XXX: one zero less than XKB specification says,
124986c8b3dSmrg	          uses the same values as libX11 -->
125986c8b3dSmrg	<enum name="Control" >
126986c8b3dSmrg		<item name="GroupsWrap">      <bit>27</bit> </item>
127986c8b3dSmrg		<item name="InternalMods">    <bit>28</bit> </item>
128986c8b3dSmrg		<item name="IgnoreLockMods">  <bit>29</bit> </item>
129986c8b3dSmrg		<item name="PerKeyRepeat">    <bit>30</bit> </item>
130986c8b3dSmrg		<item name="ControlsEnabled"> <bit>31</bit> </item>
131986c8b3dSmrg	</enum>
132986c8b3dSmrg
133f591e195Smrg	<enum name="AXOption">
134986c8b3dSmrg		<item name="SKPressFB">     <bit>0</bit> </item>
135986c8b3dSmrg		<item name="SKAcceptFB">    <bit>1</bit> </item>
136986c8b3dSmrg		<item name="FeatureFB">     <bit>2</bit> </item>
137986c8b3dSmrg		<item name="SlowWarnFB">    <bit>3</bit> </item>
138986c8b3dSmrg		<item name="IndicatorFB">   <bit>4</bit> </item>
139986c8b3dSmrg		<item name="StickyKeysFB">  <bit>5</bit> </item>
140f591e195Smrg		<item name="TwoKeys">       <bit>6</bit> </item>
141f591e195Smrg		<item name="LatchToLock">   <bit>7</bit> </item>
142f591e195Smrg		<item name="SKReleaseFB">   <bit>8</bit> </item>
143f591e195Smrg		<item name="SKRejectFB">    <bit>9</bit> </item>
144f591e195Smrg		<item name="BKRejectFB">    <bit>10</bit> </item>
145f591e195Smrg		<item name="DumbBell">      <bit>11</bit> </item>
146986c8b3dSmrg	</enum>
147986c8b3dSmrg
148986c8b3dSmrg	<typedef oldname="CARD16" newname="DeviceSpec" />
149986c8b3dSmrg
150986c8b3dSmrg	<enum name="LedClassResult">
151986c8b3dSmrg		<item name="KbdFeedbackClass"> <value>0</value> </item>
152986c8b3dSmrg		<item name="LedFeedbackClass"> <value>4</value> </item>
153986c8b3dSmrg	</enum>
154986c8b3dSmrg
155986c8b3dSmrg	<enum name="LedClass">
156f591e195Smrg		<item name="KbdFeedbackClass"> <value>0</value> </item>
157f591e195Smrg		<item name="LedFeedbackClass"> <value>4</value> </item>
158f591e195Smrg		<item name="DfltXIClass">      <value>768</value> </item>	<!--0x300-->
159f591e195Smrg		<item name="AllXIClasses">     <value>1280</value> </item>	<!--0x500-->
160986c8b3dSmrg	</enum>
161986c8b3dSmrg	<typedef oldname="CARD16" newname="LedClassSpec" />
162986c8b3dSmrg
163986c8b3dSmrg	<enum name="BellClassResult">
164986c8b3dSmrg		<item name="KbdFeedbackClass">  <value>0</value> </item>
165986c8b3dSmrg		<item name="BellFeedbackClass"> <value>5</value> </item>
166986c8b3dSmrg	</enum>
167986c8b3dSmrg
168986c8b3dSmrg	<enum name="BellClass">
169f591e195Smrg		<item name="KbdFeedbackClass">  <value>0</value> </item>
170f591e195Smrg		<item name="BellFeedbackClass"> <value>5</value> </item>
171f591e195Smrg		<item name="DfltXIClass">       <value>768</value> </item>	<!--0x300-->
172986c8b3dSmrg	</enum>
173986c8b3dSmrg	<typedef oldname="CARD16" newname="BellClassSpec" />
174986c8b3dSmrg
175986c8b3dSmrg	<enum name="ID">
176986c8b3dSmrg		<item name="UseCoreKbd">  <value>256</value> </item>    <!-- 0x100 -->
177986c8b3dSmrg		<item name="UseCorePtr">  <value>512</value> </item>    <!-- 0x200 -->
178986c8b3dSmrg		<item name="DfltXIClass"> <value>768</value> </item>    <!-- 0x300 -->
179986c8b3dSmrg		<item name="DfltXIId">   <value>1024</value> </item>    <!-- 0x400 -->
180986c8b3dSmrg		<item name="AllXIClass"> <value>1280</value> </item>    <!-- 0x500 -->
181986c8b3dSmrg		<item name="AllXIId">    <value>1536</value> </item>    <!-- 0x600 -->
182986c8b3dSmrg		<item name="XINone">     <value>65280</value> </item>	<!--0xff00-->
183986c8b3dSmrg	</enum>
184986c8b3dSmrg	<typedef oldname="CARD16" newname="IDSpec" />
185986c8b3dSmrg
186986c8b3dSmrg	<enum name="Group">
187986c8b3dSmrg		<item name="1"> <value>0</value> </item>
188986c8b3dSmrg		<item name="2"> <value>1</value> </item>
189986c8b3dSmrg		<item name="3"> <value>2</value> </item>
190986c8b3dSmrg		<item name="4"> <value>3</value> </item>
191986c8b3dSmrg	</enum>
192986c8b3dSmrg
193986c8b3dSmrg	<enum name="Groups">
194986c8b3dSmrg		<item name="Any"> <value>254</value> </item>
195986c8b3dSmrg		<item name="All"> <value>255</value> </item>
196986c8b3dSmrg	</enum>
197986c8b3dSmrg
198986c8b3dSmrg	<enum name="SetOfGroup">
199986c8b3dSmrg		<item name="Group1"> <bit>0</bit> </item>
200986c8b3dSmrg		<item name="Group2"> <bit>1</bit> </item>
201986c8b3dSmrg		<item name="Group3"> <bit>2</bit> </item>
202986c8b3dSmrg		<item name="Group4"> <bit>3</bit> </item>
203986c8b3dSmrg	</enum>
204986c8b3dSmrg
205986c8b3dSmrg	<enum name="SetOfGroups">
206986c8b3dSmrg		<item name="Any"> <bit>7</bit> </item>
207986c8b3dSmrg	</enum>
208986c8b3dSmrg
209986c8b3dSmrg	<enum name="GroupsWrap">
210986c8b3dSmrg		<item name="WrapIntoRange">     <value>0</value> </item>
211986c8b3dSmrg		<item name="ClampIntoRange">    <bit>6</bit> </item>
212986c8b3dSmrg		<item name="RedirectIntoRange"> <bit>7</bit> </item>
213986c8b3dSmrg	</enum>
214986c8b3dSmrg
215986c8b3dSmrg	<enum name="VModsHigh">
216986c8b3dSmrg		<item name="15"> <bit>7</bit> </item>
217986c8b3dSmrg		<item name="14"> <bit>6</bit> </item>
218986c8b3dSmrg		<item name="13"> <bit>5</bit> </item>
219986c8b3dSmrg		<item name="12"> <bit>4</bit> </item>
220986c8b3dSmrg		<item name="11"> <bit>3</bit> </item>
221986c8b3dSmrg		<item name="10"> <bit>2</bit> </item>
222986c8b3dSmrg		<item name="9">  <bit>1</bit> </item>
223986c8b3dSmrg		<item name="8">  <bit>0</bit> </item>
224986c8b3dSmrg	</enum>
225986c8b3dSmrg
226986c8b3dSmrg	<enum name="VModsLow">
227986c8b3dSmrg		<item name="7"> <bit>7</bit> </item>
228986c8b3dSmrg		<item name="6"> <bit>6</bit> </item>
229986c8b3dSmrg		<item name="5"> <bit>5</bit> </item>
230986c8b3dSmrg		<item name="4"> <bit>4</bit> </item>
231986c8b3dSmrg		<item name="3"> <bit>3</bit> </item>
232986c8b3dSmrg		<item name="2"> <bit>2</bit> </item>
233986c8b3dSmrg		<item name="1"> <bit>1</bit> </item>
234986c8b3dSmrg		<item name="0"> <bit>0</bit> </item>
235986c8b3dSmrg	</enum>
236986c8b3dSmrg
237986c8b3dSmrg	<enum name="VMod">
238986c8b3dSmrg		<item name="15"> <bit>15</bit> </item>
239986c8b3dSmrg		<item name="14"> <bit>14</bit> </item>
240986c8b3dSmrg		<item name="13"> <bit>13</bit> </item>
241986c8b3dSmrg		<item name="12"> <bit>12</bit> </item>
242986c8b3dSmrg		<item name="11"> <bit>11</bit> </item>
243986c8b3dSmrg		<item name="10"> <bit>10</bit> </item>
244986c8b3dSmrg		<item name="9">  <bit>9</bit> </item>
245986c8b3dSmrg		<item name="8">  <bit>8</bit> </item>
246986c8b3dSmrg		<item name="7">  <bit>7</bit> </item>
247986c8b3dSmrg		<item name="6">  <bit>6</bit> </item>
248986c8b3dSmrg		<item name="5">  <bit>5</bit> </item>
249986c8b3dSmrg		<item name="4">  <bit>4</bit> </item>
250986c8b3dSmrg		<item name="3">  <bit>3</bit> </item>
251986c8b3dSmrg		<item name="2">  <bit>2</bit> </item>
252986c8b3dSmrg		<item name="1">  <bit>1</bit> </item>
253986c8b3dSmrg		<item name="0">  <bit>0</bit> </item>
254986c8b3dSmrg	</enum>
255986c8b3dSmrg
256986c8b3dSmrg	<enum name="Explicit">
257986c8b3dSmrg		<item name="VModMap">     <bit>7</bit> </item>
258986c8b3dSmrg		<item name="Behavior">    <bit>6</bit> </item>
259986c8b3dSmrg		<item name="AutoRepeat">  <bit>5</bit> </item>
260986c8b3dSmrg		<item name="Interpret">   <bit>4</bit> </item>
261986c8b3dSmrg		<item name="KeyType4">    <bit>3</bit> </item>
262986c8b3dSmrg		<item name="KeyType3">    <bit>2</bit> </item>
263986c8b3dSmrg		<item name="KeyType2">    <bit>1</bit> </item>
264986c8b3dSmrg		<item name="KeyType1">    <bit>0</bit> </item>
265986c8b3dSmrg	</enum>
266986c8b3dSmrg
267f591e195Smrg	<enum name="SymInterpretMatch">
268986c8b3dSmrg		<item name="NoneOf">      <value>0</value> </item>
269986c8b3dSmrg		<item name="AnyOfOrNone"> <value>1</value> </item>
270986c8b3dSmrg		<item name="AnyOf">       <value>2</value> </item>
271986c8b3dSmrg		<item name="AllOf">       <value>3</value> </item>
272986c8b3dSmrg		<item name="Exactly">     <value>4</value> </item>
273986c8b3dSmrg	</enum>
274986c8b3dSmrg
275986c8b3dSmrg	<enum name="SymInterpMatch">
276986c8b3dSmrg		<item name="LevelOneOnly"> <bit>7</bit> </item>
277986c8b3dSmrg		<item name="OpMask">       <value>127</value> </item>	<!--0x7f-->
278986c8b3dSmrg	</enum>
279986c8b3dSmrg
280986c8b3dSmrg	<enum name="IMFlag">
281986c8b3dSmrg		<item name="NoExplicit">  <bit>7</bit> </item>
282986c8b3dSmrg		<item name="NoAutomatic"> <bit>6</bit> </item>
283986c8b3dSmrg		<item name="LEDDrivesKB"> <bit>5</bit> </item>
284986c8b3dSmrg	</enum>
285986c8b3dSmrg
286986c8b3dSmrg	<enum name="IMModsWhich">
287986c8b3dSmrg		<item name="UseCompat">    <bit>4</bit> </item>
288986c8b3dSmrg		<item name="UseEffective"> <bit>3</bit> </item>
289986c8b3dSmrg		<item name="UseLocked">    <bit>2</bit> </item>
290986c8b3dSmrg		<item name="UseLatched">   <bit>1</bit> </item>
291986c8b3dSmrg		<item name="UseBase">      <bit>0</bit> </item>
292986c8b3dSmrg	</enum>
293986c8b3dSmrg
294986c8b3dSmrg	<enum name="IMGroupsWhich">
295986c8b3dSmrg		<item name="UseCompat">    <bit>4</bit> </item>
296986c8b3dSmrg		<item name="UseEffective"> <bit>3</bit> </item>
297986c8b3dSmrg		<item name="UseLocked">    <bit>2</bit> </item>
298986c8b3dSmrg		<item name="UseLatched">   <bit>1</bit> </item>
299986c8b3dSmrg		<item name="UseBase">      <bit>0</bit> </item>
300986c8b3dSmrg	</enum>
301986c8b3dSmrg
302986c8b3dSmrg	<struct name="IndicatorMap">
303986c8b3dSmrg		<field name="flags" type="CARD8" enum="IMFlag" />
304986c8b3dSmrg		<field name="whichGroups" type="CARD8" enum="IMGroupsWhich" />
305986c8b3dSmrg		<field name="groups" type="CARD8" enum="SetOfGroup" />
306986c8b3dSmrg		<field name="whichMods" type="CARD8" enum="IMModsWhich" />
307986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
308986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
309986c8b3dSmrg		<field name="vmods" type="CARD16" mask="VMod" />
310f591e195Smrg		<field name="ctrls" type="CARD32" mask="BoolCtrl" />
311986c8b3dSmrg	</struct>
312986c8b3dSmrg
313986c8b3dSmrg	<enum name="CMDetail">
314986c8b3dSmrg		<item name="SymInterp">   <bit>0</bit> </item>
315986c8b3dSmrg		<item name="GroupCompat"> <bit>1</bit> </item>
316986c8b3dSmrg	</enum>
317986c8b3dSmrg
318986c8b3dSmrg	<enum name="NameDetail">
319986c8b3dSmrg		<item name="Keycodes">        <bit>0</bit> </item>
320986c8b3dSmrg		<item name="Geometry">        <bit>1</bit> </item>
321986c8b3dSmrg		<item name="Symbols">         <bit>2</bit> </item>
322986c8b3dSmrg		<item name="PhysSymbols">     <bit>3</bit> </item>
323986c8b3dSmrg		<item name="Types">           <bit>4</bit> </item>
324986c8b3dSmrg		<item name="Compat">          <bit>5</bit> </item>
325986c8b3dSmrg		<item name="KeyTypeNames">    <bit>6</bit> </item>
326986c8b3dSmrg		<item name="KTLevelNames">    <bit>7</bit> </item>
327986c8b3dSmrg		<item name="IndicatorNames">  <bit>8</bit> </item>
328986c8b3dSmrg		<item name="KeyNames">        <bit>9</bit> </item>
329986c8b3dSmrg		<item name="KeyAliases">      <bit>10</bit> </item>
330986c8b3dSmrg		<item name="VirtualModNames"> <bit>11</bit> </item>
331986c8b3dSmrg		<item name="GroupNames">      <bit>12</bit> </item>
332986c8b3dSmrg		<item name="RGNames">         <bit>13</bit> </item>
333986c8b3dSmrg	</enum>
334986c8b3dSmrg
335986c8b3dSmrg	<enum name="GBNDetail">
336986c8b3dSmrg		<item name="Types">         <bit>0</bit> </item>
337986c8b3dSmrg		<item name="CompatMap">     <bit>1</bit> </item>
338986c8b3dSmrg		<item name="ClientSymbols"> <bit>2</bit> </item>
339986c8b3dSmrg		<item name="ServerSymbols"> <bit>3</bit> </item>
340986c8b3dSmrg		<item name="IndicatorMaps"> <bit>4</bit> </item>
341986c8b3dSmrg		<item name="KeyNames">      <bit>5</bit> </item>
342986c8b3dSmrg		<item name="Geometry">      <bit>6</bit> </item>
343986c8b3dSmrg		<item name="OtherNames">    <bit>7</bit> </item>
344986c8b3dSmrg	</enum>
345986c8b3dSmrg
346986c8b3dSmrg	<enum name="XIFeature">
347986c8b3dSmrg		<item name="Keyboards">      <bit>0</bit> </item>
348986c8b3dSmrg		<item name="ButtonActions">  <bit>1</bit> </item>
349986c8b3dSmrg		<item name="IndicatorNames"> <bit>2</bit> </item>
350986c8b3dSmrg		<item name="IndicatorMaps">  <bit>3</bit> </item>
351986c8b3dSmrg		<item name="IndicatorState"> <bit>4</bit> </item>
352986c8b3dSmrg	</enum>
353986c8b3dSmrg
354986c8b3dSmrg	<enum name="PerClientFlag">
355986c8b3dSmrg		<item name="DetectableAutoRepeat">   <bit>0</bit> </item>
356986c8b3dSmrg		<item name="GrabsUseXKBState">       <bit>1</bit> </item>
357986c8b3dSmrg		<item name="AutoResetControls">      <bit>2</bit> </item>
358986c8b3dSmrg		<item name="LookupStateWhenGrabbed"> <bit>3</bit> </item>
359986c8b3dSmrg		<item name="SendEventUsesXKBState">  <bit>4</bit> </item>
360986c8b3dSmrg	</enum>
361986c8b3dSmrg
362986c8b3dSmrg	<struct name="ModDef">
363986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
364986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
365986c8b3dSmrg		<field name="vmods" type="CARD16" mask="VMod" />
366986c8b3dSmrg	</struct>
367986c8b3dSmrg
368986c8b3dSmrg	<struct name="KeyName">
369f591e195Smrg		<list name="name" type="char">
370986c8b3dSmrg			<value>4</value>
371986c8b3dSmrg		</list>
372986c8b3dSmrg	</struct>
373986c8b3dSmrg
374986c8b3dSmrg	<struct name="KeyAlias">
375f591e195Smrg		<list name="real" type="char">
376986c8b3dSmrg			<value>4</value>
377986c8b3dSmrg		</list>
378f591e195Smrg		<list name="alias" type="char">
379986c8b3dSmrg			<value>4</value>
380986c8b3dSmrg		</list>
381986c8b3dSmrg	</struct>
382986c8b3dSmrg
383986c8b3dSmrg	<struct name="CountedString16">
384986c8b3dSmrg		<field name="length" type="CARD16" />
385f591e195Smrg		<list name="string" type="char">
386986c8b3dSmrg			<fieldref>length</fieldref>
387986c8b3dSmrg		</list>
388f591e195Smrg		<list type="void" name="alignment_pad">
389f591e195Smrg			<op op="-">
390f591e195Smrg				<op op="&amp;">
391f591e195Smrg					<op op="+">
392f591e195Smrg						<fieldref>length</fieldref>
393f591e195Smrg						<value>5</value>
394f591e195Smrg					</op>
395f591e195Smrg					<unop op="~">
396f591e195Smrg						<value>3</value>
397f591e195Smrg					</unop>
398f591e195Smrg				</op>
399f591e195Smrg				<op op="+">
400f591e195Smrg					<fieldref>length</fieldref>
401f591e195Smrg					<value>2</value>
402f591e195Smrg				</op>
403f591e195Smrg			</op>
404f591e195Smrg		</list>
405986c8b3dSmrg	</struct>
406986c8b3dSmrg
407986c8b3dSmrg	<struct name="KTMapEntry">
408986c8b3dSmrg		<field name="active" type="BOOL" />
409986c8b3dSmrg		<field name="mods_mask" type="CARD8" mask="ModMask" />
410986c8b3dSmrg		<field name="level" type="CARD8" />
411986c8b3dSmrg		<field name="mods_mods" type="CARD8" mask="ModMask" />
412986c8b3dSmrg		<field name="mods_vmods" type="CARD16" mask="VMod" />
413986c8b3dSmrg		<pad bytes="2" />
414986c8b3dSmrg	</struct>
415986c8b3dSmrg
416986c8b3dSmrg	<struct name="KeyType">
417986c8b3dSmrg		<field name="mods_mask" type="CARD8" mask="ModMask" />
418986c8b3dSmrg		<field name="mods_mods" type="CARD8" mask="ModMask" />
419986c8b3dSmrg		<field name="mods_vmods" type="CARD16" mask="VMod" />
420986c8b3dSmrg		<field name="numLevels" type="CARD8" />
421986c8b3dSmrg		<field name="nMapEntries" type="CARD8" />
422986c8b3dSmrg		<field name="hasPreserve" type="BOOL" />
423986c8b3dSmrg		<pad bytes="1" />
424986c8b3dSmrg		<list name="map" type="KTMapEntry">
425986c8b3dSmrg			<fieldref>nMapEntries</fieldref>
426986c8b3dSmrg		</list>
427986c8b3dSmrg		<list name="preserve" type="ModDef">
428986c8b3dSmrg		    <op op="*">
429986c8b3dSmrg			<fieldref>hasPreserve</fieldref>
430986c8b3dSmrg			<fieldref>nMapEntries</fieldref>
431986c8b3dSmrg		    </op>
432986c8b3dSmrg		</list>
433986c8b3dSmrg	</struct>
434986c8b3dSmrg
435986c8b3dSmrg	<struct name="KeySymMap">
436986c8b3dSmrg		<list name="kt_index" type="CARD8">
437986c8b3dSmrg			<value>4</value>
438986c8b3dSmrg		</list>
439986c8b3dSmrg		<field name="groupInfo" type="CARD8" />
440986c8b3dSmrg		<field name="width" type="CARD8" />
441986c8b3dSmrg		<field name="nSyms" type="CARD16" />
442986c8b3dSmrg		<list name="syms" type="KEYSYM">
443986c8b3dSmrg			<fieldref>nSyms</fieldref>
444986c8b3dSmrg		</list>
445986c8b3dSmrg	</struct>
446986c8b3dSmrg
447986c8b3dSmrg	<!-- Key Behaviors -->
448986c8b3dSmrg
449986c8b3dSmrg	<struct name="CommonBehavior">
450986c8b3dSmrg		<field name="type" type="CARD8" />
451986c8b3dSmrg		<field name="data" type="CARD8" />
452986c8b3dSmrg	</struct>
453986c8b3dSmrg
454986c8b3dSmrg	<struct name="DefaultBehavior">
455986c8b3dSmrg		<field name="type" type="CARD8" />
456986c8b3dSmrg		<pad bytes="1" />
457986c8b3dSmrg	</struct>
458986c8b3dSmrg
459986c8b3dSmrg	<typedef oldname="DefaultBehavior" newname="LockBehavior" />
460986c8b3dSmrg
461986c8b3dSmrg	<struct name="RadioGroupBehavior">
462986c8b3dSmrg		<field name="type" type="CARD8" />
463986c8b3dSmrg		<field name="group" type="CARD8" />
464986c8b3dSmrg	</struct>
465986c8b3dSmrg
466f591e195Smrg	<struct name="OverlayBehavior">
467986c8b3dSmrg		<field name="type" type="CARD8" />
468986c8b3dSmrg		<field name="key" type="KEYCODE" />
469986c8b3dSmrg	</struct>
470986c8b3dSmrg
471986c8b3dSmrg	<typedef oldname="LockBehavior" newname="PermamentLockBehavior" />
472986c8b3dSmrg	<typedef oldname="RadioGroupBehavior" newname="PermamentRadioGroupBehavior" />
473f591e195Smrg	<typedef oldname="OverlayBehavior" newname="PermamentOverlayBehavior" />
474986c8b3dSmrg
475986c8b3dSmrg	<union name="Behavior">
476986c8b3dSmrg		<field name="common" type="CommonBehavior" />
477986c8b3dSmrg		<field name="default" type="DefaultBehavior" />
478986c8b3dSmrg		<field name="lock" type="LockBehavior" />
479986c8b3dSmrg		<field name="radioGroup" type="RadioGroupBehavior" />
480f591e195Smrg		<field name="overlay1" type="OverlayBehavior" />
481f591e195Smrg		<field name="overlay2" type="OverlayBehavior" />
482986c8b3dSmrg		<field name="permamentLock" type="PermamentLockBehavior" />
483986c8b3dSmrg		<field name="permamentRadioGroup" type="PermamentRadioGroupBehavior" />
484f591e195Smrg		<field name="permamentOverlay1" type="PermamentOverlayBehavior" />
485f591e195Smrg		<field name="permamentOverlay2" type="PermamentOverlayBehavior" />
486986c8b3dSmrg		<field name="type" type="CARD8" />
487986c8b3dSmrg	</union>
488986c8b3dSmrg
489986c8b3dSmrg	<enum name="BehaviorType">
490986c8b3dSmrg		<item name="Default">             <value>0</value> </item>	<!--0x00-->
491986c8b3dSmrg		<item name="Lock">                <value>1</value> </item>	<!--0x01-->
492986c8b3dSmrg		<item name="RadioGroup">          <value>2</value> </item>	<!--0x02-->
493986c8b3dSmrg		<item name="Overlay1">            <value>3</value> </item>	<!--0x03-->
494986c8b3dSmrg		<item name="Overlay2">            <value>4</value> </item>	<!--0x04-->
495986c8b3dSmrg		<item name="PermamentLock">       <value>129</value> </item>	<!--0x81-->
496986c8b3dSmrg		<item name="PermamentRadioGroup"> <value>130</value> </item>	<!--0x82-->
497986c8b3dSmrg		<item name="PermamentOverlay1">   <value>131</value> </item>	<!--0x83-->
498986c8b3dSmrg		<item name="PermamentOverlay2">   <value>132</value> </item>	<!--0x84-->
499986c8b3dSmrg	</enum>
500986c8b3dSmrg
501986c8b3dSmrg	<struct name="SetBehavior">
502986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
503986c8b3dSmrg		<field name="behavior" type="Behavior" />
504986c8b3dSmrg		<pad bytes="1" />
505986c8b3dSmrg	</struct>
506986c8b3dSmrg
507986c8b3dSmrg	<struct name="SetExplicit">
508986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
509986c8b3dSmrg		<field name="explicit" type="CARD8" mask="Explicit" />
510986c8b3dSmrg	</struct>
511986c8b3dSmrg
512986c8b3dSmrg	<struct name="KeyModMap">
513986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
514986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
515986c8b3dSmrg	</struct>
516986c8b3dSmrg
517986c8b3dSmrg	<struct name="KeyVModMap">
518986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
519986c8b3dSmrg		<pad bytes="1" />
520986c8b3dSmrg		<field name="vmods" type="CARD16" mask="VMod" />
521986c8b3dSmrg	</struct>
522986c8b3dSmrg
523986c8b3dSmrg	<struct name="KTSetMapEntry">
524986c8b3dSmrg		<field name="level" type="CARD8" />
525986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
526986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
527986c8b3dSmrg	</struct>
528986c8b3dSmrg
529986c8b3dSmrg	<struct name="SetKeyType">
530986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
531986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
532986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
533986c8b3dSmrg		<field name="numLevels" type="CARD8" />
534986c8b3dSmrg		<field name="nMapEntries" type="CARD8" />
535986c8b3dSmrg		<field name="preserve" type="BOOL" />
536986c8b3dSmrg		<pad bytes="1" />
537986c8b3dSmrg		<list name="entries" type="KTSetMapEntry">
538986c8b3dSmrg			<fieldref>nMapEntries</fieldref>
539986c8b3dSmrg		</list>
540986c8b3dSmrg		<list name="preserve_entries" type="KTSetMapEntry">
541986c8b3dSmrg		    <op op = "*">
542986c8b3dSmrg			<fieldref>preserve</fieldref>
543986c8b3dSmrg			<fieldref>nMapEntries</fieldref>
544986c8b3dSmrg		    </op>
545986c8b3dSmrg		</list>
546986c8b3dSmrg	</struct>
547986c8b3dSmrg
548986c8b3dSmrg	<typedef oldname="char" newname="STRING8" />
549986c8b3dSmrg
550f591e195Smrg	<!-- XXX: Property is broken
551986c8b3dSmrg	<struct name="Property">
552986c8b3dSmrg		<field name="nameLength" type="CARD16" />
553986c8b3dSmrg		<list name="name" type="STRING8">
554986c8b3dSmrg			<fieldref>nameLength</fieldref>
555986c8b3dSmrg		</list>
556986c8b3dSmrg		<field name="valueLength" type="CARD16" />
557986c8b3dSmrg		<list name="value" type="STRING8">
558986c8b3dSmrg			<fieldref>valueLength</fieldref>
559986c8b3dSmrg		</list>
560986c8b3dSmrg	</struct>
561f591e195Smrg	-->
562f591e195Smrg	<!-- XXX: This would be the correct Property structure as per spec.,
563f591e195Smrg		  but it's broken atm. too. Add it anyway here, so we don't
564f591e195Smrg		  loose that information.
565f591e195Smrg	<struct name="Property">
566f591e195Smrg		<field name="name" type="CountedString16" />
567f591e195Smrg		<field name="value" type="CountedString16" />
568f591e195Smrg	</struct>
569f591e195Smrg	-->
570986c8b3dSmrg
571986c8b3dSmrg	<struct name="Outline">
572986c8b3dSmrg		<field name="nPoints" type="CARD8" />
573986c8b3dSmrg		<field name="cornerRadius" type="CARD8" />
574986c8b3dSmrg		<pad bytes="2" />
575986c8b3dSmrg		<list name="points" type="POINT">
576986c8b3dSmrg			<fieldref>nPoints</fieldref>
577986c8b3dSmrg		</list>
578986c8b3dSmrg	</struct>
579986c8b3dSmrg
580986c8b3dSmrg	<struct name="Shape">
581986c8b3dSmrg		<field name="name" type="ATOM" />
582986c8b3dSmrg		<field name="nOutlines" type="CARD8" />
583986c8b3dSmrg		<field name="primaryNdx" type="CARD8" />
584986c8b3dSmrg		<field name="approxNdx" type="CARD8" />
585986c8b3dSmrg		<pad bytes="1" />
586986c8b3dSmrg		<list name="outlines" type="Outline">
587986c8b3dSmrg			<fieldref>nOutlines</fieldref>
588986c8b3dSmrg		</list>
589986c8b3dSmrg	</struct>
590986c8b3dSmrg
591986c8b3dSmrg	<struct name="Key">
592986c8b3dSmrg		<list name="name" type="STRING8">
593986c8b3dSmrg			<value>4</value>
594986c8b3dSmrg		</list>
595986c8b3dSmrg		<field name="gap" type="INT16" />
596986c8b3dSmrg		<field name="shapeNdx" type="CARD8" />
597986c8b3dSmrg		<field name="colorNdx" type="CARD8" />
598986c8b3dSmrg	</struct>
599986c8b3dSmrg
600986c8b3dSmrg	<struct name="OverlayKey">
601986c8b3dSmrg		<list name="over" type="STRING8">
602986c8b3dSmrg			<value>4</value>
603986c8b3dSmrg		</list>
604986c8b3dSmrg		<list name="under" type="STRING8">
605986c8b3dSmrg			<value>4</value>
606986c8b3dSmrg		</list>
607986c8b3dSmrg	</struct>
608986c8b3dSmrg
609986c8b3dSmrg	<struct name="OverlayRow">
610986c8b3dSmrg		<field name="rowUnder" type="CARD8" />
611986c8b3dSmrg		<field name="nKeys" type="CARD8" />
612986c8b3dSmrg		<pad bytes="2" />
613986c8b3dSmrg		<list name="keys" type="OverlayKey">
614986c8b3dSmrg			<fieldref>nKeys</fieldref>
615986c8b3dSmrg		</list>
616986c8b3dSmrg	</struct>
617986c8b3dSmrg
618986c8b3dSmrg	<struct name="Overlay">
619986c8b3dSmrg		<field name="name" type="ATOM" />
620986c8b3dSmrg		<field name="nRows" type="CARD8" />
621986c8b3dSmrg		<pad bytes="3" />
622986c8b3dSmrg		<list name="rows" type="OverlayRow">
623986c8b3dSmrg			<fieldref>nRows</fieldref>
624986c8b3dSmrg		</list>
625986c8b3dSmrg	</struct>
626986c8b3dSmrg
627986c8b3dSmrg	<struct name="Row">
628986c8b3dSmrg		<field name="top" type="INT16" />
629986c8b3dSmrg		<field name="left" type="INT16" />
630986c8b3dSmrg		<field name="nKeys" type="CARD8" />
631986c8b3dSmrg		<field name="vertical" type="BOOL" />
632986c8b3dSmrg		<pad bytes="2" />
633986c8b3dSmrg		<list name="keys" type="Key">
634986c8b3dSmrg			<fieldref>nKeys</fieldref>
635986c8b3dSmrg		</list>
636986c8b3dSmrg	</struct>
637986c8b3dSmrg
638986c8b3dSmrg	<enum name="DoodadType">
639986c8b3dSmrg		<item name="Outline">   <value>1</value> </item>
640986c8b3dSmrg		<item name="Solid">     <value>2</value> </item>
641986c8b3dSmrg		<item name="Text">      <value>3</value> </item>
642986c8b3dSmrg		<item name="Indicator"> <value>4</value> </item>
643986c8b3dSmrg		<item name="Logo">      <value>5</value> </item>
644986c8b3dSmrg	</enum>
645986c8b3dSmrg
646f591e195Smrg	<!-- XXX: doodads are broken
647986c8b3dSmrg	<struct name="CommonDoodad">
648986c8b3dSmrg		<field name="name" type="ATOM" />
649986c8b3dSmrg		<field name="type" type="CARD8" enum="DoodadType" />
650986c8b3dSmrg		<field name="priority" type="CARD8" />
651986c8b3dSmrg		<field name="top" type="INT16" />
652986c8b3dSmrg		<field name="left" type="INT16" />
653986c8b3dSmrg		<field name="angle" type="INT16" />
654f591e195Smrg		<pad bytes="8" />
655986c8b3dSmrg	</struct>
656986c8b3dSmrg
657986c8b3dSmrg	<struct name="ShapeDoodad">
658986c8b3dSmrg		<field name="name" type="ATOM" />
659986c8b3dSmrg		<field name="type" type="CARD8" enum="DoodadType" />
660986c8b3dSmrg		<field name="priority" type="CARD8" />
661986c8b3dSmrg		<field name="top" type="INT16" />
662986c8b3dSmrg		<field name="left" type="INT16" />
663986c8b3dSmrg		<field name="angle" type="INT16" />
664986c8b3dSmrg		<field name="colorNdx" type="CARD8" />
665986c8b3dSmrg		<field name="shapeNdx" type="CARD8" />
666986c8b3dSmrg		<pad bytes="6" />
667986c8b3dSmrg	</struct>
668986c8b3dSmrg
669986c8b3dSmrg	<struct name="TextDoodad">
670986c8b3dSmrg		<field name="name" type="ATOM" />
671986c8b3dSmrg		<field name="type" type="CARD8" enum="DoodadType" />
672986c8b3dSmrg		<field name="priority" type="CARD8" />
673986c8b3dSmrg		<field name="top" type="INT16" />
674986c8b3dSmrg		<field name="left" type="INT16" />
675986c8b3dSmrg		<field name="angle" type="INT16" />
676986c8b3dSmrg		<field name="width" type="CARD16" />
677986c8b3dSmrg		<field name="height" type="CARD16" />
678986c8b3dSmrg		<field name="colorNdx" type="CARD8" />
679986c8b3dSmrg		<pad bytes="3" />
680986c8b3dSmrg		<field name="text" type="CountedString16" />
681986c8b3dSmrg		<field name="font" type="CountedString16" />
682986c8b3dSmrg	</struct>
683986c8b3dSmrg
684986c8b3dSmrg	<struct name="IndicatorDoodad">
685986c8b3dSmrg		<field name="name" type="ATOM" />
686986c8b3dSmrg		<field name="type" type="CARD8" enum="DoodadType" />
687986c8b3dSmrg		<field name="priority" type="CARD8" />
688986c8b3dSmrg		<field name="top" type="INT16" />
689986c8b3dSmrg		<field name="left" type="INT16" />
690986c8b3dSmrg		<field name="angle" type="INT16" />
691986c8b3dSmrg		<field name="shapeNdx" type="CARD8" />
692986c8b3dSmrg		<field name="onColorNdx" type="CARD8" />
693986c8b3dSmrg		<field name="offColorNdx" type="CARD8" />
694986c8b3dSmrg		<pad bytes="5" />
695986c8b3dSmrg	</struct>
696986c8b3dSmrg
697986c8b3dSmrg	<struct name="LogoDoodad">
698986c8b3dSmrg		<field name="name" type="ATOM" />
699986c8b3dSmrg		<field name="type" type="CARD8" enum="DoodadType" />
700986c8b3dSmrg		<field name="priority" type="CARD8" />
701986c8b3dSmrg		<field name="top" type="INT16" />
702986c8b3dSmrg		<field name="left" type="INT16" />
703986c8b3dSmrg		<field name="angle" type="INT16" />
704986c8b3dSmrg		<field name="colorNdx" type="CARD8" />
705986c8b3dSmrg		<field name="shapeNdx" type="CARD8" />
706986c8b3dSmrg		<pad bytes="6" />
707986c8b3dSmrg		<field name="logoName" type="CountedString16" />
708986c8b3dSmrg	</struct>
709986c8b3dSmrg
710986c8b3dSmrg	<union name="Doodad">
711986c8b3dSmrg		<field name="common" type="CommonDoodad" />
712986c8b3dSmrg		<field name="shape" type="ShapeDoodad" />
713986c8b3dSmrg		<field name="text" type="TextDoodad" />
714986c8b3dSmrg		<field name="indicator" type="IndicatorDoodad" />
715986c8b3dSmrg		<field name="logo" type="LogoDoodad" />
716986c8b3dSmrg	</union>
717986c8b3dSmrg
718986c8b3dSmrg	<struct name="Section">
719986c8b3dSmrg		<field name="name" type="ATOM" />
720986c8b3dSmrg		<field name="top" type="INT16" />
721986c8b3dSmrg		<field name="left" type="INT16" />
722986c8b3dSmrg		<field name="width" type="CARD16" />
723986c8b3dSmrg		<field name="height" type="CARD16" />
724986c8b3dSmrg		<field name="angle" type="INT16" />
725986c8b3dSmrg		<field name="priority" type="CARD8" />
726986c8b3dSmrg		<field name="nRows" type="CARD8" />
727986c8b3dSmrg		<field name="nDoodads" type="CARD8" />
728986c8b3dSmrg		<field name="nOverlays" type="CARD8" />
729986c8b3dSmrg		<pad bytes="2" />
730986c8b3dSmrg		<list name="rows" type="Row">
731986c8b3dSmrg			<fieldref>nRows</fieldref>
732986c8b3dSmrg		</list>
733986c8b3dSmrg		<list name="doodads" type="Doodad">
734986c8b3dSmrg			<fieldref>nDoodads</fieldref>
735986c8b3dSmrg		</list>
736986c8b3dSmrg		<list name="overlays" type="Overlay">
737986c8b3dSmrg			<fieldref>nOverlays</fieldref>
738986c8b3dSmrg		</list>
739986c8b3dSmrg	</struct>
740f591e195Smrg	-->
741986c8b3dSmrg
742986c8b3dSmrg	<struct name="Listing">
743986c8b3dSmrg		<field name="flags" type="CARD16" />
744986c8b3dSmrg		<field name="length" type="CARD16" />
745986c8b3dSmrg		<list name="string" type="STRING8">
746986c8b3dSmrg			<fieldref>length</fieldref>
747986c8b3dSmrg		</list>
748891601f5Smrg		<pad align="2" />
749986c8b3dSmrg	</struct>
750986c8b3dSmrg
751986c8b3dSmrg	<struct name="DeviceLedInfo">
752986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
753986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
754986c8b3dSmrg		<field name="namesPresent" type="CARD32" />
755986c8b3dSmrg		<field name="mapsPresent" type="CARD32" />
756986c8b3dSmrg		<field name="physIndicators" type="CARD32" />
757986c8b3dSmrg		<field name="state" type="CARD32" />
758986c8b3dSmrg		<list name="names" type="ATOM">
759986c8b3dSmrg			<popcount>
760986c8b3dSmrg				<fieldref>namesPresent</fieldref>
761986c8b3dSmrg			</popcount>
762986c8b3dSmrg		</list>
763986c8b3dSmrg		<list name="maps" type="IndicatorMap">
764986c8b3dSmrg			<popcount>
765986c8b3dSmrg				<fieldref>mapsPresent</fieldref>
766986c8b3dSmrg			</popcount>
767986c8b3dSmrg		</list>
768986c8b3dSmrg	</struct>
769986c8b3dSmrg
770986c8b3dSmrg	<!-- Errors -->
771986c8b3dSmrg
772986c8b3dSmrg	<enum name="Error">
773986c8b3dSmrg		<item name="BadDevice"> <value>255</value> </item>	<!--0xff-->
774986c8b3dSmrg		<item name="BadClass">  <value>254</value> </item>	<!--0xfe-->
775986c8b3dSmrg		<item name="BadId">     <value>253</value> </item>	<!--0xfd-->
776986c8b3dSmrg	</enum>
777986c8b3dSmrg
778986c8b3dSmrg	<error name="Keyboard" number="0">
779986c8b3dSmrg		<field name="value" type="CARD32" />
780986c8b3dSmrg		<field name="minorOpcode" type="CARD16" />
781986c8b3dSmrg		<field name="majorOpcode" type="CARD8" />
782986c8b3dSmrg		<pad bytes="21" />
783986c8b3dSmrg	</error>
784986c8b3dSmrg
785986c8b3dSmrg	<!-- Key Actions -->
786986c8b3dSmrg
787986c8b3dSmrg	<enum name="SA">
788986c8b3dSmrg		<item name="ClearLocks">    <bit>0</bit> </item>
789986c8b3dSmrg		<item name="LatchToLock">   <bit>1</bit> </item>
790986c8b3dSmrg		<item name="UseModMapMods"> <bit>2</bit> </item>
791986c8b3dSmrg		<item name="GroupAbsolute"> <bit>2</bit> </item>
792986c8b3dSmrg	</enum>
793986c8b3dSmrg
794986c8b3dSmrg	<enum name="SAType">
795986c8b3dSmrg		<item name="NoAction">       <value>0</value> </item>
796986c8b3dSmrg		<item name="SetMods">        <value>1</value> </item>
797986c8b3dSmrg		<item name="LatchMods">      <value>2</value> </item>
798986c8b3dSmrg		<item name="LockMods">       <value>3</value> </item>
799986c8b3dSmrg		<item name="SetGroup">       <value>4</value> </item>
800986c8b3dSmrg		<item name="LatchGroup">     <value>5</value> </item>
801986c8b3dSmrg		<item name="LockGroup">      <value>6</value> </item>
802986c8b3dSmrg		<item name="MovePtr">        <value>7</value> </item>
803986c8b3dSmrg		<item name="PtrBtn">         <value>8</value> </item>
804986c8b3dSmrg		<item name="LockPtrBtn">     <value>9</value> </item>
805986c8b3dSmrg		<item name="SetPtrDflt">     <value>10</value> </item>
806986c8b3dSmrg		<item name="ISOLock">        <value>11</value> </item>
807986c8b3dSmrg		<item name="Terminate">      <value>12</value> </item>
808986c8b3dSmrg		<item name="SwitchScreen">   <value>13</value> </item>
809986c8b3dSmrg		<item name="SetControls">    <value>14</value> </item>
810986c8b3dSmrg		<item name="LockControls">   <value>15</value> </item>
811986c8b3dSmrg		<item name="ActionMessage">  <value>16</value> </item>
812986c8b3dSmrg		<item name="RedirectKey">    <value>17</value> </item>
813986c8b3dSmrg		<item name="DeviceBtn">      <value>18</value> </item>
814986c8b3dSmrg		<item name="LockDeviceBtn">  <value>19</value> </item>
815986c8b3dSmrg		<item name="DeviceValuator"> <value>20</value> </item>
816986c8b3dSmrg	</enum>
817986c8b3dSmrg
818986c8b3dSmrg	<struct name="SANoAction">
819986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
820986c8b3dSmrg		<pad bytes="7" />
821986c8b3dSmrg	</struct>
822986c8b3dSmrg
823986c8b3dSmrg	<struct name="SASetMods">
824986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
825986c8b3dSmrg		<field name="flags" type="CARD8" mask="SA" />
826986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
827986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
828986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
829986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow" />
830986c8b3dSmrg		<pad bytes="2" />
831986c8b3dSmrg	</struct>
832986c8b3dSmrg
833986c8b3dSmrg	<typedef oldname="SASetMods" newname="SALatchMods" />
834986c8b3dSmrg
835986c8b3dSmrg	<typedef oldname="SASetMods" newname="SALockMods" />
836986c8b3dSmrg
837986c8b3dSmrg	<struct name="SASetGroup">
838986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
839986c8b3dSmrg		<field name="flags" type="CARD8" mask="SA" />
840986c8b3dSmrg		<field name="group" type="INT8" />
841986c8b3dSmrg		<pad bytes="5" />
842986c8b3dSmrg	</struct>
843986c8b3dSmrg
844986c8b3dSmrg	<typedef oldname="SASetGroup" newname="SALatchGroup" />
845986c8b3dSmrg
846986c8b3dSmrg	<typedef oldname="SASetGroup" newname="SALockGroup" />
847986c8b3dSmrg
848986c8b3dSmrg	<enum name="SAMovePtrFlag">
849986c8b3dSmrg		<item name="NoAcceleration"> <bit>0</bit> </item>
850986c8b3dSmrg		<item name="MoveAbsoluteX">  <bit>1</bit> </item>
851986c8b3dSmrg		<item name="MoveAbsoluteY">  <bit>2</bit> </item>
852986c8b3dSmrg	</enum>
853986c8b3dSmrg
854986c8b3dSmrg	<struct name="SAMovePtr">
855986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
856986c8b3dSmrg		<field name="flags" type="CARD8" mask="SAMovePtrFlag" />
857986c8b3dSmrg		<field name="xHigh" type="INT8" />
858986c8b3dSmrg		<field name="xLow" type="CARD8" />
859986c8b3dSmrg		<field name="yHigh" type="INT8" />
860986c8b3dSmrg		<field name="yLow" type="CARD8" />
861986c8b3dSmrg		<pad bytes="2" />
862986c8b3dSmrg	</struct>
863986c8b3dSmrg
864986c8b3dSmrg	<struct name="SAPtrBtn">
865986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
866986c8b3dSmrg		<field name="flags" type="CARD8" />
867986c8b3dSmrg		<field name="count" type="CARD8" />
868986c8b3dSmrg		<field name="button" type="CARD8" />
869986c8b3dSmrg		<pad bytes="4" />
870986c8b3dSmrg	</struct>
871986c8b3dSmrg
872986c8b3dSmrg	<struct name="SALockPtrBtn">
873986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
874986c8b3dSmrg		<field name="flags" type="CARD8" />
875986c8b3dSmrg		<pad bytes="1" />
876986c8b3dSmrg		<field name="button" type="CARD8" />
877986c8b3dSmrg		<pad bytes="4" />
878986c8b3dSmrg	</struct>
879986c8b3dSmrg
880986c8b3dSmrg	<enum name="SASetPtrDfltFlag">
881f591e195Smrg		<!-- The spec says 0x02 but Xlib uses 0x04. -->
882f591e195Smrg		<item name="DfltBtnAbsolute">  <bit>2</bit> </item>
883986c8b3dSmrg		<item name="AffectDfltButton"> <bit>0</bit> </item>
884986c8b3dSmrg	</enum>
885986c8b3dSmrg
886986c8b3dSmrg	<struct name="SASetPtrDflt">
887986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
888986c8b3dSmrg		<field name="flags" type="CARD8" mask="SASetPtrDfltFlag" />
889986c8b3dSmrg		<field name="affect" type="CARD8" mask="SASetPtrDfltFlag" />
890986c8b3dSmrg		<field name="value" type="INT8" />
891986c8b3dSmrg		<pad bytes="4" />
892986c8b3dSmrg	</struct>
893986c8b3dSmrg
894986c8b3dSmrg	<enum name="SAIsoLockFlag">
895986c8b3dSmrg		<item name="NoLock">         <bit>0</bit> </item>
896986c8b3dSmrg		<item name="NoUnlock">       <bit>1</bit> </item>
897986c8b3dSmrg		<item name="UseModMapMods">  <bit>2</bit> </item>
898986c8b3dSmrg		<item name="GroupAbsolute">  <bit>2</bit> </item>
899986c8b3dSmrg		<item name="ISODfltIsGroup"> <bit>3</bit> </item>
900986c8b3dSmrg	</enum>
901986c8b3dSmrg
902986c8b3dSmrg	<enum name="SAIsoLockNoAffect">
903986c8b3dSmrg		<item name="Ctrls"> <bit>3</bit> </item>
904986c8b3dSmrg		<item name="Ptr">   <bit>4</bit> </item>
905986c8b3dSmrg		<item name="Group"> <bit>5</bit> </item>
906986c8b3dSmrg		<item name="Mods">  <bit>6</bit> </item>
907986c8b3dSmrg	</enum>
908986c8b3dSmrg
909986c8b3dSmrg	<struct name="SAIsoLock">
910986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
911986c8b3dSmrg		<field name="flags" type="CARD8" mask="SAIsoLockFlag" />
912986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
913986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
914986c8b3dSmrg		<field name="group" type="INT8" />
915986c8b3dSmrg		<field name="affect" type="CARD8" mask="SAIsoLockNoAffect" />
916986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
917986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow" />
918986c8b3dSmrg	</struct>
919986c8b3dSmrg
920986c8b3dSmrg	<struct name="SATerminate">
921986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
922986c8b3dSmrg		<pad bytes="7" />
923986c8b3dSmrg	</struct>
924986c8b3dSmrg
925986c8b3dSmrg	<enum name="SwitchScreenFlag">
926986c8b3dSmrg		<item name="Application"> <bit>0</bit> </item>
927986c8b3dSmrg		<item name="Absolute" >   <bit>2</bit> </item>
928986c8b3dSmrg	</enum>
929986c8b3dSmrg
930986c8b3dSmrg	<struct name="SASwitchScreen">
931986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
932986c8b3dSmrg		<field name="flags" type="CARD8" />
933986c8b3dSmrg		<field name="newScreen" type="INT8" />
934986c8b3dSmrg		<pad bytes="5" />
935986c8b3dSmrg	</struct>
936986c8b3dSmrg
937986c8b3dSmrg	<enum name="BoolCtrlsHigh">
938986c8b3dSmrg		<item name="AccessXFeedback"> <bit>0</bit> </item>
939986c8b3dSmrg		<item name="AudibleBell">     <bit>1</bit> </item>
940986c8b3dSmrg		<item name="Overlay1">        <bit>2</bit> </item>
941986c8b3dSmrg		<item name="Overlay2">        <bit>3</bit> </item>
942986c8b3dSmrg		<item name="IgnoreGroupLock"> <bit>4</bit> </item>
943986c8b3dSmrg	</enum>
944986c8b3dSmrg
945986c8b3dSmrg	<enum name="BoolCtrlsLow">
946986c8b3dSmrg		<item name="RepeatKeys">     <bit>0</bit> </item>
947986c8b3dSmrg		<item name="SlowKeys">       <bit>1</bit> </item>
948986c8b3dSmrg		<item name="BounceKeys">     <bit>2</bit> </item>
949986c8b3dSmrg		<item name="StickyKeys">     <bit>3</bit> </item>
950986c8b3dSmrg		<item name="MouseKeys">      <bit>4</bit> </item>
951986c8b3dSmrg		<item name="MouseKeysAccel"> <bit>5</bit> </item>
952986c8b3dSmrg		<item name="AccessXKeys">    <bit>6</bit> </item>
953986c8b3dSmrg		<item name="AccessXTimeout"> <bit>7</bit> </item>
954986c8b3dSmrg	</enum>
955986c8b3dSmrg
956986c8b3dSmrg	<struct name="SASetControls">
957986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
958986c8b3dSmrg		<pad bytes="3" />
959986c8b3dSmrg		<field name="boolCtrlsHigh" type="CARD8" mask="BoolCtrlsHigh" />
960986c8b3dSmrg		<field name="boolCtrlsLow"  type="CARD8" mask="BoolCtrlsLow" />
961986c8b3dSmrg		<pad bytes="2" />
962986c8b3dSmrg	</struct>
963986c8b3dSmrg
964986c8b3dSmrg	<typedef oldname="SASetControls" newname="SALockControls" />
965986c8b3dSmrg
966986c8b3dSmrg	<enum name="ActionMessageFlag">
967986c8b3dSmrg		<item name="OnPress">     <bit>0</bit> </item>
968986c8b3dSmrg		<item name="OnRelease">   <bit>1</bit> </item>
969986c8b3dSmrg		<item name="GenKeyEvent"> <bit>2</bit> </item>
970986c8b3dSmrg	</enum>
971986c8b3dSmrg
972986c8b3dSmrg	<struct name="SAActionMessage">
973986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
974986c8b3dSmrg		<field name="flags" type="CARD8" mask="ActionMessageFlag" />
975986c8b3dSmrg		<list name="message" type="CARD8">
976986c8b3dSmrg			<value>6</value>
977986c8b3dSmrg		</list>
978986c8b3dSmrg	</struct>
979986c8b3dSmrg
980986c8b3dSmrg	<struct name="SARedirectKey">
981986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
982986c8b3dSmrg		<field name="newkey" type="KEYCODE" />
983986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
984986c8b3dSmrg		<field name="realModifiers" type="CARD8" mask="ModMask" />
985986c8b3dSmrg		<field name="vmodsMaskHigh" type="CARD8" mask="VModsHigh"/>
986986c8b3dSmrg		<field name="vmodsMaskLow" type="CARD8" mask="VModsLow"/>
987986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh"/>
988986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow"/>
989986c8b3dSmrg	</struct>
990986c8b3dSmrg
991986c8b3dSmrg	<struct name="SADeviceBtn">
992986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
993986c8b3dSmrg		<field name="flags" type="CARD8" />
994986c8b3dSmrg		<field name="count" type="CARD8" />
995986c8b3dSmrg		<field name="button" type="CARD8" />
996986c8b3dSmrg		<field name="device" type="CARD8" />
997986c8b3dSmrg		<pad bytes="3" />
998986c8b3dSmrg	</struct>
999986c8b3dSmrg
1000986c8b3dSmrg	<enum name="LockDeviceFlags">
1001986c8b3dSmrg		<item name="NoLock">   <bit>0</bit> </item>
1002986c8b3dSmrg		<item name="NoUnlock"> <bit>1</bit> </item>
1003986c8b3dSmrg	</enum>
1004986c8b3dSmrg
1005986c8b3dSmrg	<struct name="SALockDeviceBtn">
1006986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1007986c8b3dSmrg		<field name="flags" type="CARD8" mask="LockDeviceFlags" />
1008986c8b3dSmrg		<pad bytes="1" />
1009986c8b3dSmrg		<field name="button" type="CARD8" />
1010986c8b3dSmrg		<field name="device" type="CARD8" />
1011f591e195Smrg		<pad bytes="3" />
1012986c8b3dSmrg	</struct>
1013986c8b3dSmrg
1014986c8b3dSmrg	<enum name="SAValWhat">
1015986c8b3dSmrg		<item name="IgnoreVal">      <value>0</value> </item>
1016986c8b3dSmrg		<item name="SetValMin">      <value>1</value> </item>
1017986c8b3dSmrg		<item name="SetValCenter">   <value>2</value> </item>
1018986c8b3dSmrg		<item name="SetValMax">      <value>3</value> </item>
1019986c8b3dSmrg		<item name="SetValRelative"> <value>4</value> </item>
1020986c8b3dSmrg		<item name="SetValAbsolute"> <value>5</value> </item>
1021986c8b3dSmrg	</enum>
1022986c8b3dSmrg
1023986c8b3dSmrg	<struct name="SADeviceValuator">
1024986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1025986c8b3dSmrg		<field name="device" type="CARD8" />
1026986c8b3dSmrg		<field name="val1what" type="CARD8" enum="SAValWhat" />
1027986c8b3dSmrg		<field name="val1index" type="CARD8" />
1028986c8b3dSmrg		<field name="val1value" type="CARD8" />
1029986c8b3dSmrg		<field name="val2what" type="CARD8" enum="SAValWhat" />
1030986c8b3dSmrg		<field name="val2index" type="CARD8" />
1031986c8b3dSmrg		<field name="val2value" type="CARD8" />
1032986c8b3dSmrg	</struct>
1033986c8b3dSmrg
1034f591e195Smrg	<struct name="SIAction">
1035f591e195Smrg		<field name="type" type="CARD8" enum="SAType" />
1036f591e195Smrg		<list name="data" type="CARD8">
1037f591e195Smrg			<value>7</value>
1038f591e195Smrg		</list>
1039f591e195Smrg	</struct>
1040f591e195Smrg
1041f591e195Smrg	<struct name="SymInterpret">
1042f591e195Smrg		<field name="sym" type="KEYSYM" />
1043f591e195Smrg		<field name="mods" type="CARD8" mask="ModMask" />
1044f591e195Smrg		<!-- "match" may also have XkbSI_LevelOneOnly (0x80) or'd into it -->
1045f591e195Smrg		<field name="match" type="CARD8" altenum="SymInterpretMatch" />
1046f591e195Smrg		<field name="virtualMod" type="CARD8" mask="VModsLow" />
1047f591e195Smrg		<field name="flags" type="CARD8" />
1048f591e195Smrg		<field name="action" type="SIAction" />
1049f591e195Smrg	</struct>
1050f591e195Smrg
1051986c8b3dSmrg	<union name="Action">
1052986c8b3dSmrg		<field name="noaction" type="SANoAction" />
1053986c8b3dSmrg		<field name="setmods" type="SASetMods" />
1054986c8b3dSmrg		<field name="latchmods" type="SALatchMods" />
1055986c8b3dSmrg		<field name="lockmods" type="SALockMods" />
1056986c8b3dSmrg		<field name="setgroup" type="SASetGroup" />
1057986c8b3dSmrg		<field name="latchgroup" type="SALatchGroup" />
1058986c8b3dSmrg		<field name="lockgroup" type="SALockGroup" />
1059986c8b3dSmrg		<field name="moveptr" type="SAMovePtr" />
1060986c8b3dSmrg		<field name="ptrbtn" type="SAPtrBtn" />
1061986c8b3dSmrg		<field name="lockptrbtn" type="SALockPtrBtn" />
1062986c8b3dSmrg		<field name="setptrdflt" type="SASetPtrDflt" />
1063986c8b3dSmrg		<field name="isolock" type="SAIsoLock" />
1064986c8b3dSmrg		<field name="terminate" type="SATerminate" />
1065986c8b3dSmrg		<field name="switchscreen" type="SASwitchScreen" />
1066986c8b3dSmrg		<field name="setcontrols" type="SASetControls" />
1067986c8b3dSmrg		<field name="lockcontrols" type="SALockControls" />
1068986c8b3dSmrg		<field name="message" type="SAActionMessage" />
1069986c8b3dSmrg		<field name="redirect" type="SARedirectKey" />
1070986c8b3dSmrg		<field name="devbtn" type="SADeviceBtn" />
1071986c8b3dSmrg		<field name="lockdevbtn" type="SALockDeviceBtn" />
1072986c8b3dSmrg		<field name="devval" type="SADeviceValuator" />
1073986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1074986c8b3dSmrg	</union>
1075986c8b3dSmrg
1076986c8b3dSmrg	<!-- Requests -->
1077986c8b3dSmrg
1078986c8b3dSmrg	<request name="UseExtension" opcode="0">
1079986c8b3dSmrg		<field name="wantedMajor" type="CARD16" />
1080986c8b3dSmrg		<field name="wantedMinor" type="CARD16" />
1081986c8b3dSmrg		<reply>
1082986c8b3dSmrg			<field name="supported" type="BOOL" />
1083986c8b3dSmrg			<field name="serverMajor" type="CARD16" />
1084986c8b3dSmrg			<field name="serverMinor" type="CARD16" />
1085986c8b3dSmrg			<pad bytes="20" />
1086986c8b3dSmrg		</reply>
1087986c8b3dSmrg	</request>
1088986c8b3dSmrg
1089986c8b3dSmrg	<request name="SelectEvents" opcode="1">
1090986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1091f591e195Smrg		<field name="affectWhich" type="CARD16" mask="EventType" />
1092f591e195Smrg		<field name="clear" type="CARD16" mask="EventType" />
1093f591e195Smrg		<field name="selectAll" type="CARD16" mask="EventType" />
1094f591e195Smrg		<field name="affectMap" type="CARD16" mask="MapPart" />
1095f591e195Smrg		<field name="map" type="CARD16" mask="MapPart" />
1096986c8b3dSmrg		<switch name="details">
1097986c8b3dSmrg			<op op="&amp;">
1098986c8b3dSmrg				<fieldref>affectWhich</fieldref>
1099986c8b3dSmrg				<op op="&amp;">
1100986c8b3dSmrg					<unop op="~"><fieldref>clear</fieldref></unop>
1101986c8b3dSmrg					<unop op="~"><fieldref>selectAll</fieldref></unop>
1102986c8b3dSmrg				</op>
1103986c8b3dSmrg			</op>
1104986c8b3dSmrg			<bitcase>
1105986c8b3dSmrg				<enumref ref="EventType">NewKeyboardNotify</enumref>
1106986c8b3dSmrg				<field name="affectNewKeyboard" type="CARD16" mask="NKNDetail" />
1107986c8b3dSmrg				<field name="newKeyboardDetails" type="CARD16" mask="NKNDetail" />
1108986c8b3dSmrg			</bitcase>
1109986c8b3dSmrg			<bitcase>
1110986c8b3dSmrg				<enumref ref="EventType">StateNotify</enumref>
1111986c8b3dSmrg				<field name="affectState" type="CARD16" mask="StatePart" />
1112986c8b3dSmrg				<field name="stateDetails" type="CARD16" mask="StatePart" />
1113986c8b3dSmrg			</bitcase>
1114986c8b3dSmrg			<bitcase>
1115986c8b3dSmrg				<enumref ref="EventType">ControlsNotify</enumref>
1116986c8b3dSmrg				<field name="affectCtrls" type="CARD32" mask="Control" />
1117986c8b3dSmrg				<field name="ctrlDetails" type="CARD32" mask="Control" />
1118986c8b3dSmrg			</bitcase>
1119986c8b3dSmrg			<bitcase>
1120986c8b3dSmrg				<enumref ref="EventType">IndicatorStateNotify</enumref>
1121986c8b3dSmrg				<field name="affectIndicatorState" type="CARD32" />
1122986c8b3dSmrg				<field name="indicatorStateDetails" type="CARD32" />
1123986c8b3dSmrg			</bitcase>
1124986c8b3dSmrg			<bitcase>
1125986c8b3dSmrg				<enumref ref="EventType">IndicatorMapNotify</enumref>
1126986c8b3dSmrg				<field name="affectIndicatorMap" type="CARD32" />
1127986c8b3dSmrg				<field name="indicatorMapDetails" type="CARD32" />
1128986c8b3dSmrg			</bitcase>
1129986c8b3dSmrg			<bitcase>
1130986c8b3dSmrg				<enumref ref="EventType">NamesNotify</enumref>
1131986c8b3dSmrg				<field name="affectNames" type="CARD16" mask="NameDetail" />
1132986c8b3dSmrg				<field name="namesDetails" type="CARD16" mask="NameDetail" />
1133986c8b3dSmrg			</bitcase>
1134986c8b3dSmrg			<bitcase>
1135986c8b3dSmrg				<enumref ref="EventType">CompatMapNotify</enumref>
1136986c8b3dSmrg				<field name="affectCompat" type="CARD8" mask="CMDetail" />
1137986c8b3dSmrg				<field name="compatDetails" type="CARD8" mask="CMDetail" />
1138986c8b3dSmrg			</bitcase>
1139986c8b3dSmrg			<bitcase>
1140986c8b3dSmrg				<enumref ref="EventType">BellNotify</enumref>
1141986c8b3dSmrg				<field name="affectBell" type="CARD8" />
1142986c8b3dSmrg				<field name="bellDetails" type="CARD8" />
1143986c8b3dSmrg			</bitcase>
1144986c8b3dSmrg			<bitcase>
1145986c8b3dSmrg				<enumref ref="EventType">ActionMessage</enumref>
1146986c8b3dSmrg				<field name="affectMsgDetails" type="CARD8" />
1147986c8b3dSmrg				<field name="msgDetails" type="CARD8" />
1148986c8b3dSmrg			</bitcase>
1149986c8b3dSmrg			<bitcase>
1150986c8b3dSmrg				<enumref ref="EventType">AccessXNotify</enumref>
1151986c8b3dSmrg				<field name="affectAccessX" type="CARD16" mask="AXNDetail" />
1152986c8b3dSmrg				<field name="accessXDetails" type="CARD16" mask="AXNDetail" />
1153986c8b3dSmrg			</bitcase>
1154986c8b3dSmrg			<bitcase>
1155986c8b3dSmrg				<enumref ref="EventType">ExtensionDeviceNotify</enumref>
1156986c8b3dSmrg				<field name="affectExtDev" type="CARD16" mask="XIFeature" />
1157986c8b3dSmrg				<field name="extdevDetails" type="CARD16" mask="XIFeature" />
1158986c8b3dSmrg			</bitcase>
1159986c8b3dSmrg		</switch>
1160986c8b3dSmrg	</request>
1161986c8b3dSmrg
1162986c8b3dSmrg	<request name="Bell" opcode="3">
1163986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1164986c8b3dSmrg		<field name="bellClass" type="BellClassSpec" />
1165986c8b3dSmrg		<field name="bellID" type="IDSpec" />
1166986c8b3dSmrg		<field name="percent" type="INT8" />
1167986c8b3dSmrg		<field name="forceSound" type="BOOL" />
1168986c8b3dSmrg		<field name="eventOnly" type="BOOL" />
1169986c8b3dSmrg		<pad bytes="1" />
1170986c8b3dSmrg		<field name="pitch" type="INT16" />
1171986c8b3dSmrg		<field name="duration" type="INT16" />
1172986c8b3dSmrg		<pad bytes="2" />
1173986c8b3dSmrg		<field name="name" type="ATOM" />
1174986c8b3dSmrg		<field name="window" type="WINDOW" />
1175986c8b3dSmrg	</request>
1176986c8b3dSmrg
1177986c8b3dSmrg	<request name="GetState" opcode="4">
1178986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1179986c8b3dSmrg		<pad bytes="2" />
1180986c8b3dSmrg		<reply>
1181986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1182986c8b3dSmrg			<field name="mods" type="CARD8" mask="ModMask" />
1183986c8b3dSmrg			<field name="baseMods" type="CARD8" mask="ModMask" />
1184986c8b3dSmrg			<field name="latchedMods" type="CARD8" mask="ModMask" />
1185986c8b3dSmrg			<field name="lockedMods" type="CARD8" mask="ModMask" />
1186986c8b3dSmrg			<field name="group" type="CARD8" enum="Group" />
1187986c8b3dSmrg			<field name="lockedGroup" type="CARD8" enum="Group" />
1188986c8b3dSmrg			<field name="baseGroup" type="INT16" />
1189986c8b3dSmrg			<field name="latchedGroup" type="INT16" />
1190986c8b3dSmrg			<field name="compatState" type="CARD8" mask="ModMask" />
1191986c8b3dSmrg			<field name="grabMods" type="CARD8" mask="ModMask" />
1192986c8b3dSmrg			<field name="compatGrabMods" type="CARD8" mask="ModMask" />
1193986c8b3dSmrg                        <field name="lookupMods" type="CARD8" mask="ModMask" />
1194986c8b3dSmrg			<field name="compatLookupMods" type="CARD8" mask="ModMask" />
1195986c8b3dSmrg			<pad bytes="1" />
1196986c8b3dSmrg			<field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
1197986c8b3dSmrg			<pad bytes="6" />
1198986c8b3dSmrg		</reply>
1199986c8b3dSmrg	</request>
1200986c8b3dSmrg
1201986c8b3dSmrg	<request name="LatchLockState" opcode="5">
1202986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1203986c8b3dSmrg		<field name="affectModLocks" type="CARD8" mask="ModMask" />
1204986c8b3dSmrg		<field name="modLocks" type="CARD8" mask="ModMask" />
1205986c8b3dSmrg		<field name="lockGroup" type="BOOL" />
1206986c8b3dSmrg		<field name="groupLock" type="CARD8" enum="Group" />
1207986c8b3dSmrg		<field name="affectModLatches" type="CARD8" mask="ModMask" />
1208b26960f7Smrg		<pad bytes="1" /> <!-- This pad is a workaround to prevent an API break,
1209b26960f7Smrg		                       which the following field (correct fix) would cause.
1210b26960f7Smrg		<field name="modLatches" type="CARD8" mask="ModMask" />
1211b26960f7Smrg		-->
1212986c8b3dSmrg		<pad bytes="1" />
1213986c8b3dSmrg		<field name="latchGroup" type="BOOL" />
1214986c8b3dSmrg		<field name="groupLatch" type="CARD16" />
1215986c8b3dSmrg	</request>
1216986c8b3dSmrg
1217986c8b3dSmrg	<request name="GetControls" opcode="6">
1218986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1219986c8b3dSmrg		<pad bytes="2" />
1220986c8b3dSmrg		<reply>
1221986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1222986c8b3dSmrg			<field name="mouseKeysDfltBtn" type="CARD8" />
1223986c8b3dSmrg			<field name="numGroups" type="CARD8" />
1224986c8b3dSmrg			<field name="groupsWrap" type="CARD8" />
1225986c8b3dSmrg			<field name="internalModsMask" type="CARD8" mask="ModMask" />
1226986c8b3dSmrg			<field name="ignoreLockModsMask" type="CARD8" mask="ModMask" />
1227986c8b3dSmrg			<field name="internalModsRealMods" type="CARD8" mask="ModMask" />
1228986c8b3dSmrg			<field name="ignoreLockModsRealMods" type="CARD8" mask="ModMask" />
1229986c8b3dSmrg			<pad bytes="1" />
1230986c8b3dSmrg			<field name="internalModsVmods" type="CARD16" mask="VMod" />
1231986c8b3dSmrg			<field name="ignoreLockModsVmods" type="CARD16" mask="VMod" />
1232986c8b3dSmrg			<field name="repeatDelay" type="CARD16" />
1233986c8b3dSmrg			<field name="repeatInterval" type="CARD16" />
1234986c8b3dSmrg			<field name="slowKeysDelay" type="CARD16" />
1235986c8b3dSmrg			<field name="debounceDelay" type="CARD16" />
1236986c8b3dSmrg			<field name="mouseKeysDelay" type="CARD16" />
1237986c8b3dSmrg			<field name="mouseKeysInterval" type="CARD16" />
1238986c8b3dSmrg			<field name="mouseKeysTimeToMax" type="CARD16" />
1239986c8b3dSmrg			<field name="mouseKeysMaxSpeed" type="CARD16" />
1240986c8b3dSmrg			<field name="mouseKeysCurve" type="INT16" />
1241f591e195Smrg			<field name="accessXOption" type="CARD16" mask="AXOption" />
1242986c8b3dSmrg			<field name="accessXTimeout" type="CARD16" />
1243f591e195Smrg			<field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1244f591e195Smrg			<field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1245986c8b3dSmrg			<pad bytes="2" />
1246f591e195Smrg			<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1247f591e195Smrg			<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1248f591e195Smrg			<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1249986c8b3dSmrg			<list name="perKeyRepeat" type="CARD8">
1250986c8b3dSmrg				<value>32</value>
1251986c8b3dSmrg			</list>
1252986c8b3dSmrg		</reply>
1253986c8b3dSmrg	</request>
1254986c8b3dSmrg
1255986c8b3dSmrg	<request name="SetControls" opcode="7">
1256986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1257986c8b3dSmrg		<field name="affectInternalRealMods" type="CARD8" mask="ModMask" />
1258986c8b3dSmrg		<field name="internalRealMods" type="CARD8" mask="ModMask" />
1259986c8b3dSmrg		<field name="affectIgnoreLockRealMods" type="CARD8" mask="ModMask" />
1260986c8b3dSmrg		<field name="ignoreLockRealMods" type="CARD8" mask="ModMask" />
1261986c8b3dSmrg		<field name="affectInternalVirtualMods" type="CARD16" mask="VMod" />
1262986c8b3dSmrg		<field name="internalVirtualMods" type="CARD16" mask="VMod" />
1263986c8b3dSmrg		<field name="affectIgnoreLockVirtualMods" type="CARD16" mask="VMod" />
1264986c8b3dSmrg		<field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
1265986c8b3dSmrg		<field name="mouseKeysDfltBtn" type="CARD8" />
1266986c8b3dSmrg		<field name="groupsWrap" type="CARD8" />
1267f591e195Smrg		<field name="accessXOptions" type="CARD16" mask="AXOption" />
1268986c8b3dSmrg		<pad bytes="2" />
1269f591e195Smrg		<field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
1270f591e195Smrg		<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1271986c8b3dSmrg		<field name="changeControls" type="CARD32" mask="Control" />
1272986c8b3dSmrg		<field name="repeatDelay" type="CARD16" />
1273986c8b3dSmrg		<field name="repeatInterval" type="CARD16" />
1274986c8b3dSmrg		<field name="slowKeysDelay" type="CARD16" />
1275986c8b3dSmrg		<field name="debounceDelay" type="CARD16" />
1276986c8b3dSmrg		<field name="mouseKeysDelay" type="CARD16" />
1277986c8b3dSmrg		<field name="mouseKeysInterval" type="CARD16" />
1278986c8b3dSmrg		<field name="mouseKeysTimeToMax" type="CARD16" />
1279986c8b3dSmrg		<field name="mouseKeysMaxSpeed" type="CARD16" />
1280986c8b3dSmrg		<field name="mouseKeysCurve" type="INT16" />
1281986c8b3dSmrg		<field name="accessXTimeout" type="CARD16" />
1282f591e195Smrg		<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1283f591e195Smrg		<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1284f591e195Smrg		<field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1285f591e195Smrg		<field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1286986c8b3dSmrg		<list name="perKeyRepeat" type="CARD8">
1287986c8b3dSmrg			<value>32</value>
1288986c8b3dSmrg		</list>
1289986c8b3dSmrg	</request>
1290986c8b3dSmrg
1291986c8b3dSmrg	<request name="GetMap" opcode="8">
1292986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1293f591e195Smrg		<field name="full" type="CARD16" mask="MapPart" />
1294f591e195Smrg		<field name="partial" type="CARD16" mask="MapPart" />
1295986c8b3dSmrg		<field name="firstType" type="CARD8" />
1296986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1297986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
1298986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
1299986c8b3dSmrg		<field name="firstKeyAction" type="KEYCODE" />
1300986c8b3dSmrg		<field name="nKeyActions" type="CARD8" />
1301986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
1302986c8b3dSmrg		<field name="nKeyBehaviors" type="CARD8" />
1303986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1304986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
1305986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
1306986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
1307986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
1308986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
1309986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
1310986c8b3dSmrg		<pad bytes="2" />
1311986c8b3dSmrg		<reply>
1312986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1313986c8b3dSmrg			<pad bytes="2" />
1314986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
1315986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
1316f591e195Smrg			<field name="present" type="CARD16" mask="MapPart" />
1317986c8b3dSmrg			<field name="firstType" type="CARD8" />
1318986c8b3dSmrg			<field name="nTypes" type="CARD8" />
1319986c8b3dSmrg			<field name="totalTypes" type="CARD8" />
1320986c8b3dSmrg			<field name="firstKeySym" type="KEYCODE" />
1321986c8b3dSmrg			<field name="totalSyms" type="CARD16" />
1322986c8b3dSmrg			<field name="nKeySyms" type="CARD8" />
1323986c8b3dSmrg			<field name="firstKeyAction" type="KEYCODE" />
1324986c8b3dSmrg			<field name="totalActions" type="CARD16" />
1325986c8b3dSmrg			<field name="nKeyActions" type="CARD8" />
1326986c8b3dSmrg			<field name="firstKeyBehavior" type="KEYCODE" />
1327986c8b3dSmrg			<field name="nKeyBehaviors" type="CARD8" />
1328986c8b3dSmrg			<field name="totalKeyBehaviors" type="CARD8" />
1329986c8b3dSmrg			<field name="firstKeyExplicit" type="KEYCODE" />
1330986c8b3dSmrg			<field name="nKeyExplicit" type="CARD8" />
1331986c8b3dSmrg			<field name="totalKeyExplicit" type="CARD8" />
1332986c8b3dSmrg			<field name="firstModMapKey" type="KEYCODE" />
1333986c8b3dSmrg			<field name="nModMapKeys" type="CARD8" />
1334986c8b3dSmrg			<field name="totalModMapKeys" type="CARD8" />
1335986c8b3dSmrg			<field name="firstVModMapKey" type="KEYCODE" />
1336986c8b3dSmrg			<field name="nVModMapKeys" type="CARD8" />
1337986c8b3dSmrg			<field name="totalVModMapKeys" type="CARD8" />
1338986c8b3dSmrg			<pad bytes="1" />
1339986c8b3dSmrg			<field name="virtualMods" type="CARD16" mask="VMod" />
1340986c8b3dSmrg			<switch name="map">
1341986c8b3dSmrg				<fieldref>present</fieldref>
1342986c8b3dSmrg				<bitcase>
1343986c8b3dSmrg					<enumref ref="MapPart">KeyTypes</enumref>
1344986c8b3dSmrg					<list name="types_rtrn" type="KeyType">
1345986c8b3dSmrg						<fieldref>nTypes</fieldref>
1346986c8b3dSmrg					</list>
1347986c8b3dSmrg				</bitcase>
1348986c8b3dSmrg				<bitcase>
1349986c8b3dSmrg					<enumref ref="MapPart">KeySyms</enumref>
1350986c8b3dSmrg					<list name="syms_rtrn" type="KeySymMap">
1351986c8b3dSmrg						<fieldref>nKeySyms</fieldref>
1352986c8b3dSmrg					</list>
1353986c8b3dSmrg				</bitcase>
1354986c8b3dSmrg				<bitcase>
1355986c8b3dSmrg					<enumref ref="MapPart">KeyActions</enumref>
1356986c8b3dSmrg					<list name="acts_rtrn_count" type="CARD8">
1357986c8b3dSmrg						<fieldref>nKeyActions</fieldref>
1358986c8b3dSmrg					</list>
1359891601f5Smrg                                        <pad align="4" serialize="true"/>
1360986c8b3dSmrg					<list name="acts_rtrn_acts" type="Action">
1361986c8b3dSmrg						<fieldref>totalActions</fieldref>
1362986c8b3dSmrg					</list>
1363986c8b3dSmrg				</bitcase>
1364986c8b3dSmrg				<bitcase>
1365986c8b3dSmrg					<enumref ref="MapPart">KeyBehaviors</enumref>
1366986c8b3dSmrg					<list name="behaviors_rtrn" type="SetBehavior">
1367986c8b3dSmrg						<fieldref>totalKeyBehaviors</fieldref>
1368986c8b3dSmrg					</list>
1369986c8b3dSmrg				</bitcase>
1370986c8b3dSmrg				<bitcase>
1371986c8b3dSmrg					<enumref ref="MapPart">VirtualMods</enumref>
1372986c8b3dSmrg					<list name="vmods_rtrn" type="CARD8" mask="ModMask">
1373f591e195Smrg						<popcount><fieldref>virtualMods</fieldref></popcount>
1374f591e195Smrg					</list>
1375891601f5Smrg                                        <pad align="4" serialize="true" />
1376986c8b3dSmrg				</bitcase>
1377986c8b3dSmrg				<bitcase>
1378986c8b3dSmrg					<enumref ref="MapPart">ExplicitComponents</enumref>
1379986c8b3dSmrg					<list name="explicit_rtrn" type="SetExplicit">
1380986c8b3dSmrg						<fieldref>totalKeyExplicit</fieldref>
1381986c8b3dSmrg					</list>
1382891601f5Smrg                                        <pad align="4" serialize="true" />
1383986c8b3dSmrg				</bitcase>
1384986c8b3dSmrg				<bitcase>
1385986c8b3dSmrg					<enumref ref="MapPart">ModifierMap</enumref>
1386986c8b3dSmrg					<list name="modmap_rtrn" type="KeyModMap">
1387986c8b3dSmrg						<fieldref>totalModMapKeys</fieldref>
1388986c8b3dSmrg					</list>
1389891601f5Smrg                                        <pad align="4" serialize="true" />
1390986c8b3dSmrg				</bitcase>
1391986c8b3dSmrg				<bitcase>
1392986c8b3dSmrg					<enumref ref="MapPart">VirtualModMap</enumref>
1393986c8b3dSmrg					<list name="vmodmap_rtrn" type="KeyVModMap">
1394986c8b3dSmrg						<fieldref>totalVModMapKeys</fieldref>
1395986c8b3dSmrg					</list>
1396986c8b3dSmrg				</bitcase>
1397986c8b3dSmrg			</switch>
1398986c8b3dSmrg		</reply>
1399986c8b3dSmrg	</request>
1400986c8b3dSmrg
1401986c8b3dSmrg	<request name="SetMap" opcode="9">
1402986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1403f591e195Smrg		<field name="present" type="CARD16" mask="MapPart" />
1404986c8b3dSmrg		<field name="flags" type="CARD16" mask="SetMapFlags" />
1405986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
1406986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
1407986c8b3dSmrg		<field name="firstType" type="CARD8" />
1408986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1409986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
1410986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
1411986c8b3dSmrg		<field name="totalSyms" type="CARD16" />
1412986c8b3dSmrg		<field name="firstKeyAction" type="KEYCODE" />
1413986c8b3dSmrg		<field name="nKeyActions" type="CARD8" />
1414986c8b3dSmrg		<field name="totalActions" type="CARD16" />
1415986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
1416986c8b3dSmrg		<field name="nKeyBehaviors" type="CARD8" />
1417986c8b3dSmrg		<field name="totalKeyBehaviors" type="CARD8" />
1418986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
1419986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
1420986c8b3dSmrg		<field name="totalKeyExplicit" type="CARD8" />
1421986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
1422986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
1423986c8b3dSmrg		<field name="totalModMapKeys" type="CARD8" />
1424986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
1425986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
1426986c8b3dSmrg		<field name="totalVModMapKeys" type="CARD8" />
1427986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1428986c8b3dSmrg		<switch name="values">
1429986c8b3dSmrg			<fieldref>present</fieldref>
1430986c8b3dSmrg			<bitcase>
1431986c8b3dSmrg				<enumref ref="MapPart">KeyTypes</enumref>
1432986c8b3dSmrg				<list name="types" type="SetKeyType">
1433986c8b3dSmrg					<fieldref>nTypes</fieldref>
1434986c8b3dSmrg				</list>
1435986c8b3dSmrg			</bitcase>
1436986c8b3dSmrg			<bitcase>
1437986c8b3dSmrg				<enumref ref="MapPart">KeySyms</enumref>
1438986c8b3dSmrg				<list name="syms" type="KeySymMap">
1439986c8b3dSmrg					<fieldref>nKeySyms</fieldref>
1440986c8b3dSmrg				</list>
1441986c8b3dSmrg			</bitcase>
1442986c8b3dSmrg			<bitcase>
1443986c8b3dSmrg				<enumref ref="MapPart">KeyActions</enumref>
1444986c8b3dSmrg				<list name="actionsCount" type="CARD8">
1445986c8b3dSmrg					<fieldref>nKeyActions</fieldref>
1446986c8b3dSmrg				</list>
1447891601f5Smrg				<pad align="4" />
1448986c8b3dSmrg				<list name="actions" type="Action">
1449986c8b3dSmrg					<fieldref>totalActions</fieldref>
1450986c8b3dSmrg				</list>
1451986c8b3dSmrg			</bitcase>
1452986c8b3dSmrg			<bitcase>
1453986c8b3dSmrg				<enumref ref="MapPart">KeyBehaviors</enumref>
1454986c8b3dSmrg				<list name="behaviors" type="SetBehavior">
1455986c8b3dSmrg					<fieldref>totalKeyBehaviors</fieldref>
1456986c8b3dSmrg				</list>
1457986c8b3dSmrg			</bitcase>
1458986c8b3dSmrg			<bitcase>
1459986c8b3dSmrg				<enumref ref="MapPart">VirtualMods</enumref>
1460986c8b3dSmrg				<list name="vmods" type="CARD8">
1461f591e195Smrg					<popcount><fieldref>virtualMods</fieldref></popcount>
1462986c8b3dSmrg				</list>
1463891601f5Smrg				<pad align="4" />
1464986c8b3dSmrg			</bitcase>
1465986c8b3dSmrg			<bitcase>
1466986c8b3dSmrg				<enumref ref="MapPart">ExplicitComponents</enumref>
1467986c8b3dSmrg				<list name="explicit" type="SetExplicit">
1468986c8b3dSmrg					<fieldref>totalKeyExplicit</fieldref>
1469986c8b3dSmrg				</list>
1470986c8b3dSmrg			</bitcase>
1471986c8b3dSmrg			<bitcase>
1472986c8b3dSmrg				<enumref ref="MapPart">ModifierMap</enumref>
1473986c8b3dSmrg				<list name="modmap" type="KeyModMap">
1474986c8b3dSmrg					<fieldref>totalModMapKeys</fieldref>
1475986c8b3dSmrg				</list>
1476986c8b3dSmrg			</bitcase>
1477986c8b3dSmrg			<bitcase>
1478986c8b3dSmrg				<enumref ref="MapPart">VirtualModMap</enumref>
1479986c8b3dSmrg				<list name="vmodmap" type="KeyVModMap">
1480986c8b3dSmrg					<fieldref>totalVModMapKeys</fieldref>
1481986c8b3dSmrg				</list>
1482986c8b3dSmrg			</bitcase>
1483986c8b3dSmrg		</switch>
1484986c8b3dSmrg	</request>
1485986c8b3dSmrg
1486986c8b3dSmrg	<request name="GetCompatMap" opcode="10">
1487986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1488986c8b3dSmrg		<field name="groups" type="CARD8" mask="SetOfGroup" />
1489986c8b3dSmrg		<field name="getAllSI" type="BOOL" />
1490986c8b3dSmrg		<field name="firstSI" type="CARD16" />
1491986c8b3dSmrg		<field name="nSI" type="CARD16" />
1492986c8b3dSmrg		<reply>
1493986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1494986c8b3dSmrg			<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
1495986c8b3dSmrg			<pad bytes="1" />
1496986c8b3dSmrg			<field name="firstSIRtrn" type="CARD16" />
1497986c8b3dSmrg			<field name="nSIRtrn" type="CARD16" />
1498986c8b3dSmrg			<field name="nTotalSI" type="CARD16" />
1499986c8b3dSmrg			<pad bytes="16" />
1500f591e195Smrg			<list name="si_rtrn" type="SymInterpret">
1501f591e195Smrg				<fieldref>nSIRtrn</fieldref>
1502986c8b3dSmrg			</list>
1503986c8b3dSmrg			<list name="group_rtrn" type="ModDef">
1504986c8b3dSmrg				<popcount>
1505986c8b3dSmrg					<fieldref>groupsRtrn</fieldref>
1506986c8b3dSmrg				</popcount>
1507986c8b3dSmrg			</list>
1508986c8b3dSmrg		</reply>
1509986c8b3dSmrg	</request>
1510986c8b3dSmrg
1511986c8b3dSmrg	<request name="SetCompatMap" opcode="11">
1512986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1513986c8b3dSmrg		<pad bytes="1" />
1514986c8b3dSmrg		<field name="recomputeActions" type="BOOL" />
1515986c8b3dSmrg		<field name="truncateSI" type="BOOL" />
1516986c8b3dSmrg		<field name="groups" type="CARD8" mask="SetOfGroup" />
1517986c8b3dSmrg		<field name="firstSI" type="CARD16" />
1518986c8b3dSmrg		<field name="nSI" type="CARD16" />
1519986c8b3dSmrg		<pad bytes="2"/>
1520f591e195Smrg		<list name="si" type="SymInterpret">
1521f591e195Smrg			<fieldref>nSI</fieldref>
1522986c8b3dSmrg		</list>
1523986c8b3dSmrg		<list name="groupMaps" type="ModDef">
1524986c8b3dSmrg			<popcount>
1525986c8b3dSmrg				<fieldref>groups</fieldref>
1526986c8b3dSmrg			</popcount>
1527986c8b3dSmrg		</list>
1528986c8b3dSmrg	</request>
1529986c8b3dSmrg
1530986c8b3dSmrg	<request name="GetIndicatorState" opcode="12">
1531986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1532986c8b3dSmrg		<pad bytes="2" />
1533986c8b3dSmrg		<reply>
1534986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1535986c8b3dSmrg			<field name="state" type="CARD32" />
1536986c8b3dSmrg			<pad bytes="20" />
1537986c8b3dSmrg		</reply>
1538986c8b3dSmrg	</request>
1539986c8b3dSmrg
1540986c8b3dSmrg	<request name="GetIndicatorMap" opcode="13">
1541986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1542986c8b3dSmrg		<pad bytes="2" />
1543986c8b3dSmrg		<field name="which" type="CARD32" />
1544986c8b3dSmrg		<reply>
1545986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1546986c8b3dSmrg			<field name="which" type="CARD32" />
1547986c8b3dSmrg			<field name="realIndicators" type="CARD32" />
1548986c8b3dSmrg			<field name="nIndicators" type="CARD8" />
1549986c8b3dSmrg			<pad bytes="15" />
1550986c8b3dSmrg			<list name="maps" type="IndicatorMap">
1551f591e195Smrg				<popcount><fieldref>which</fieldref></popcount>
1552986c8b3dSmrg			</list>
1553986c8b3dSmrg		</reply>
1554986c8b3dSmrg	</request>
1555986c8b3dSmrg
1556986c8b3dSmrg	<request name="SetIndicatorMap" opcode="14">
1557986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1558986c8b3dSmrg		<pad bytes="2" />
1559986c8b3dSmrg		<field name="which" type="CARD32" />
1560986c8b3dSmrg		<list name="maps" type="IndicatorMap">
1561986c8b3dSmrg			<popcount>
1562986c8b3dSmrg				<fieldref>which</fieldref>
1563986c8b3dSmrg			</popcount>
1564986c8b3dSmrg		</list>
1565986c8b3dSmrg	</request>
1566986c8b3dSmrg
1567986c8b3dSmrg	<request name="GetNamedIndicator" opcode="15">
1568986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1569986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
1570986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
1571986c8b3dSmrg		<pad bytes="2" />
1572986c8b3dSmrg		<field name="indicator" type="ATOM" />
1573986c8b3dSmrg		<reply>
1574986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1575986c8b3dSmrg			<field name="indicator" type="ATOM" />
1576986c8b3dSmrg			<field name="found" type="BOOL" />
1577986c8b3dSmrg			<field name="on" type="BOOL" />
1578986c8b3dSmrg			<field name="realIndicator" type="BOOL" />
1579986c8b3dSmrg			<field name="ndx" type="CARD8" />
1580986c8b3dSmrg			<field name="map_flags" type="CARD8" mask="IMFlag" />
1581986c8b3dSmrg			<field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1582986c8b3dSmrg			<field name="map_groups" type="CARD8" mask="SetOfGroups" />
1583986c8b3dSmrg			<field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1584986c8b3dSmrg			<field name="map_mods" type="CARD8" mask="ModMask" />
1585986c8b3dSmrg			<field name="map_realMods" type="CARD8" mask="ModMask" />
1586986c8b3dSmrg			<field name="map_vmod" type="CARD16" mask="VMod" />
1587986c8b3dSmrg			<field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1588f591e195Smrg			<field name="supported" type="BOOL" />
1589986c8b3dSmrg			<pad bytes="3" />
1590986c8b3dSmrg		</reply>
1591986c8b3dSmrg	</request>
1592986c8b3dSmrg
1593986c8b3dSmrg	<request name="SetNamedIndicator" opcode="16" >
1594986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1595986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
1596986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
1597986c8b3dSmrg		<pad bytes="2" />
1598986c8b3dSmrg		<field name="indicator" type="ATOM" />
1599986c8b3dSmrg		<field name="setState" type="BOOL" />
1600986c8b3dSmrg		<field name="on" type="BOOL" />
1601986c8b3dSmrg		<field name="setMap" type="BOOL" />
1602986c8b3dSmrg		<field name="createMap" type="BOOL" />
1603986c8b3dSmrg		<pad bytes="1" />
1604986c8b3dSmrg		<field name="map_flags" type="CARD8" mask="IMFlag" />
1605986c8b3dSmrg		<field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1606986c8b3dSmrg		<field name="map_groups" type="CARD8" mask="SetOfGroups" />
1607986c8b3dSmrg		<field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1608986c8b3dSmrg		<field name="map_realMods" type="CARD8" mask="ModMask" />
1609986c8b3dSmrg		<field name="map_vmods" type="CARD16" mask="VMod" />
1610986c8b3dSmrg		<field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1611986c8b3dSmrg	</request>
1612986c8b3dSmrg
1613986c8b3dSmrg	<request name="GetNames" opcode="17">
1614986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1615986c8b3dSmrg		<pad bytes="2" />
1616986c8b3dSmrg		<field name="which" type="CARD32" mask="NameDetail" />
1617986c8b3dSmrg		<reply>
1618986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1619986c8b3dSmrg			<field name="which" type="CARD32" mask="NameDetail" />
1620986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
1621986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
1622986c8b3dSmrg			<field name="nTypes" type="CARD8" />
1623986c8b3dSmrg			<field name="groupNames" type="CARD8" mask="SetOfGroup" />
1624986c8b3dSmrg			<field name="virtualMods" type="CARD16" mask="VMod" />
1625986c8b3dSmrg			<field name="firstKey" type="KEYCODE" />
1626986c8b3dSmrg			<field name="nKeys" type="CARD8" />
1627986c8b3dSmrg			<field name="indicators" type="CARD32" />
1628986c8b3dSmrg			<field name="nRadioGroups" type="CARD8" />
1629986c8b3dSmrg			<field name="nKeyAliases" type="CARD8" />
1630986c8b3dSmrg			<field name="nKTLevels" type="CARD16" />
1631986c8b3dSmrg			<pad bytes="4" />
1632986c8b3dSmrg			<switch name="valueList">
1633986c8b3dSmrg				<fieldref>which</fieldref>
1634986c8b3dSmrg				<bitcase>
1635986c8b3dSmrg					<enumref ref="NameDetail">Keycodes</enumref>
1636986c8b3dSmrg					<field name="keycodesName" type="ATOM" />
1637986c8b3dSmrg				</bitcase>
1638986c8b3dSmrg				<bitcase>
1639986c8b3dSmrg					<enumref ref="NameDetail">Geometry</enumref>
1640986c8b3dSmrg					<field name="geometryName" type="ATOM" />
1641986c8b3dSmrg				</bitcase>
1642986c8b3dSmrg				<bitcase>
1643986c8b3dSmrg					<enumref ref="NameDetail">Symbols</enumref>
1644986c8b3dSmrg					<field name="symbolsName" type="ATOM" />
1645986c8b3dSmrg				</bitcase>
1646986c8b3dSmrg				<bitcase>
1647986c8b3dSmrg					<enumref ref="NameDetail">PhysSymbols</enumref>
1648986c8b3dSmrg					<field name="physSymbolsName" type="ATOM" />
1649986c8b3dSmrg				</bitcase>
1650986c8b3dSmrg				<bitcase>
1651986c8b3dSmrg					<enumref ref="NameDetail">Types</enumref>
1652986c8b3dSmrg					<field name="typesName" type="ATOM" />
1653986c8b3dSmrg				</bitcase>
1654986c8b3dSmrg				<bitcase>
1655986c8b3dSmrg					<enumref ref="NameDetail">Compat</enumref>
1656986c8b3dSmrg					<field name="compatName" type="ATOM" />
1657986c8b3dSmrg				</bitcase>
1658986c8b3dSmrg				<bitcase>
1659986c8b3dSmrg					<enumref ref="NameDetail">KeyTypeNames</enumref>
1660986c8b3dSmrg					<list name="typeNames" type="ATOM">
1661986c8b3dSmrg						<fieldref>nTypes</fieldref>
1662986c8b3dSmrg					</list>
1663986c8b3dSmrg				</bitcase>
1664986c8b3dSmrg				<bitcase>
1665986c8b3dSmrg					<enumref ref="NameDetail">KTLevelNames</enumref>
1666986c8b3dSmrg					<list name="nLevelsPerType" type="CARD8">
1667986c8b3dSmrg					  <!-- Xlib uses NTypes here - 
1668986c8b3dSmrg					       the spec says nKTLevels is correct, but
1669986c8b3dSmrg					       it does not work in reality
1670986c8b3dSmrg					       <fieldref>nKTLevels</fieldref> -->
1671986c8b3dSmrg					        <fieldref>nTypes</fieldref>
1672986c8b3dSmrg					</list>
1673891601f5Smrg					<pad align="4" serialize="true" />
1674986c8b3dSmrg					<list name="ktLevelNames" type="ATOM">
1675986c8b3dSmrg						<sumof ref="nLevelsPerType" />
1676986c8b3dSmrg					</list>
1677986c8b3dSmrg				</bitcase>
1678986c8b3dSmrg				<bitcase>
1679986c8b3dSmrg					<enumref ref="NameDetail">IndicatorNames</enumref>
1680986c8b3dSmrg					<list name="indicatorNames" type="ATOM">
1681986c8b3dSmrg						<popcount>
1682986c8b3dSmrg							<fieldref>indicators</fieldref>
1683986c8b3dSmrg						</popcount>
1684986c8b3dSmrg					</list>
1685986c8b3dSmrg				</bitcase>
1686986c8b3dSmrg				<bitcase>
1687986c8b3dSmrg					<enumref ref="NameDetail">VirtualModNames</enumref>
1688986c8b3dSmrg					<list name="virtualModNames" type="ATOM">
1689986c8b3dSmrg						<popcount>
1690986c8b3dSmrg							<fieldref>virtualMods</fieldref>
1691986c8b3dSmrg						</popcount>
1692986c8b3dSmrg					</list>
1693986c8b3dSmrg				</bitcase>
1694986c8b3dSmrg				<bitcase>
1695986c8b3dSmrg					<enumref ref="NameDetail">GroupNames</enumref>
1696986c8b3dSmrg					<list name="groups" type="ATOM">
1697986c8b3dSmrg						<popcount>
1698986c8b3dSmrg							<fieldref>groupNames</fieldref>
1699986c8b3dSmrg						</popcount>
1700986c8b3dSmrg					</list>
1701986c8b3dSmrg				</bitcase>
1702986c8b3dSmrg				<bitcase>
1703986c8b3dSmrg					<enumref ref="NameDetail">KeyNames</enumref>
1704986c8b3dSmrg					<list name="keyNames" type="KeyName">
1705986c8b3dSmrg						<fieldref>nKeys</fieldref>
1706986c8b3dSmrg					</list>
1707986c8b3dSmrg				</bitcase>
1708986c8b3dSmrg				<bitcase>
1709986c8b3dSmrg					<enumref ref="NameDetail">KeyAliases</enumref>
1710986c8b3dSmrg					<list name="keyAliases" type="KeyAlias">
1711986c8b3dSmrg						<fieldref>nKeyAliases</fieldref>
1712986c8b3dSmrg					</list>
1713986c8b3dSmrg				</bitcase>
1714986c8b3dSmrg				<bitcase>
1715986c8b3dSmrg					<enumref ref="NameDetail">RGNames</enumref>
1716986c8b3dSmrg					<list name="radioGroupNames" type="ATOM">
1717986c8b3dSmrg						<fieldref>nRadioGroups</fieldref>
1718986c8b3dSmrg					</list>
1719986c8b3dSmrg				</bitcase>
1720986c8b3dSmrg			</switch>
1721986c8b3dSmrg		</reply>
1722986c8b3dSmrg	</request>
1723986c8b3dSmrg
1724986c8b3dSmrg	<request name="SetNames" opcode="18">
1725986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1726986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1727986c8b3dSmrg		<field name="which" type="CARD32" mask="NameDetail" />
1728986c8b3dSmrg		<field name="firstType" type="CARD8" />
1729986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1730986c8b3dSmrg		<field name="firstKTLevelt" type="CARD8" />
1731986c8b3dSmrg		<field name="nKTLevels" type="CARD8" />
1732986c8b3dSmrg		<field name="indicators" type="CARD32" />
1733986c8b3dSmrg		<field name="groupNames" type="CARD8" mask="SetOfGroup" />
1734986c8b3dSmrg		<field name="nRadioGroups" type="CARD8" />
1735986c8b3dSmrg		<field name="firstKey" type="KEYCODE" />
1736986c8b3dSmrg		<field name="nKeys" type="CARD8" />
1737986c8b3dSmrg		<field name="nKeyAliases" type="CARD8"/>
1738986c8b3dSmrg		<pad bytes="1" />
1739986c8b3dSmrg		<field name="totalKTLevelNames" type="CARD16" />
1740986c8b3dSmrg		<switch name="values">
1741986c8b3dSmrg			<fieldref>which</fieldref>
1742986c8b3dSmrg			<bitcase>
1743986c8b3dSmrg				<enumref ref="NameDetail">Keycodes</enumref>
1744986c8b3dSmrg				<field name="keycodesName" type="ATOM" />
1745986c8b3dSmrg			</bitcase>
1746986c8b3dSmrg			<bitcase>
1747986c8b3dSmrg				<enumref ref="NameDetail">Geometry</enumref>
1748986c8b3dSmrg				<field name="geometryName" type="ATOM" />
1749986c8b3dSmrg			</bitcase>
1750986c8b3dSmrg			<bitcase>
1751986c8b3dSmrg				<enumref ref="NameDetail">Symbols</enumref>
1752986c8b3dSmrg				<field name="symbolsName" type="ATOM" />
1753986c8b3dSmrg			</bitcase>
1754986c8b3dSmrg			<bitcase>
1755986c8b3dSmrg				<enumref ref="NameDetail">PhysSymbols</enumref>
1756986c8b3dSmrg				<field name="physSymbolsName" type="ATOM" />
1757986c8b3dSmrg			</bitcase>
1758986c8b3dSmrg			<bitcase>
1759986c8b3dSmrg				<enumref ref="NameDetail">Types</enumref>
1760986c8b3dSmrg				<field name="typesName" type="ATOM" />
1761986c8b3dSmrg			</bitcase>
1762986c8b3dSmrg			<bitcase>
1763986c8b3dSmrg				<enumref ref="NameDetail">Compat</enumref>
1764986c8b3dSmrg				<field name="compatName" type="ATOM" />
1765986c8b3dSmrg			</bitcase>
1766986c8b3dSmrg			<bitcase>
1767986c8b3dSmrg				<enumref ref="NameDetail">KeyTypeNames</enumref>
1768986c8b3dSmrg				<list name="typeNames" type="ATOM">
1769986c8b3dSmrg					<fieldref>nTypes</fieldref>
1770986c8b3dSmrg				</list>
1771986c8b3dSmrg			</bitcase>
1772986c8b3dSmrg			<bitcase>
1773986c8b3dSmrg				<enumref ref="NameDetail">KTLevelNames</enumref>
1774986c8b3dSmrg				<list name="nLevelsPerType" type="CARD8">
1775b26960f7Smrg					<fieldref>nTypes</fieldref>
1776986c8b3dSmrg				</list>
1777891601f5Smrg				<pad align="4"/>
1778986c8b3dSmrg				<list name="ktLevelNames" type="ATOM">
1779986c8b3dSmrg					<sumof ref="nLevelsPerType" />
1780986c8b3dSmrg				</list>
1781986c8b3dSmrg			</bitcase>
1782986c8b3dSmrg			<bitcase>
1783986c8b3dSmrg				<enumref ref="NameDetail">IndicatorNames</enumref>
1784986c8b3dSmrg				<list name="indicatorNames" type="ATOM">
1785986c8b3dSmrg					<popcount>
1786986c8b3dSmrg						<fieldref>indicators</fieldref>
1787986c8b3dSmrg					</popcount>
1788986c8b3dSmrg				</list>
1789986c8b3dSmrg			</bitcase>
1790986c8b3dSmrg			<bitcase>
1791986c8b3dSmrg				<enumref ref="NameDetail">VirtualModNames</enumref>
1792986c8b3dSmrg				<list name="virtualModNames" type="ATOM">
1793986c8b3dSmrg					<popcount>
1794986c8b3dSmrg						<fieldref>virtualMods</fieldref>
1795986c8b3dSmrg					</popcount>
1796986c8b3dSmrg				</list>
1797986c8b3dSmrg			</bitcase>
1798986c8b3dSmrg			<bitcase>
1799986c8b3dSmrg				<enumref ref="NameDetail">GroupNames</enumref>
1800986c8b3dSmrg				<list name="groups" type="ATOM">
1801986c8b3dSmrg					<popcount>
1802986c8b3dSmrg						<fieldref>groupNames</fieldref>
1803986c8b3dSmrg					</popcount>
1804986c8b3dSmrg				</list>
1805986c8b3dSmrg			</bitcase>
1806986c8b3dSmrg			<bitcase>
1807986c8b3dSmrg				<enumref ref="NameDetail">KeyNames</enumref>
1808986c8b3dSmrg				<list name="keyNames" type="KeyName">
1809986c8b3dSmrg					<fieldref>nKeys</fieldref>
1810986c8b3dSmrg				</list>
1811986c8b3dSmrg			</bitcase>
1812986c8b3dSmrg			<bitcase>
1813986c8b3dSmrg				<enumref ref="NameDetail">KeyAliases</enumref>
1814986c8b3dSmrg				<list name="keyAliases" type="KeyAlias">
1815986c8b3dSmrg					<fieldref>nKeyAliases</fieldref>
1816986c8b3dSmrg				</list>
1817986c8b3dSmrg			</bitcase>
1818986c8b3dSmrg			<bitcase>
1819986c8b3dSmrg				<enumref ref="NameDetail">RGNames</enumref>
1820986c8b3dSmrg				<list name="radioGroupNames" type="ATOM">
1821986c8b3dSmrg					<fieldref>nRadioGroups</fieldref>
1822986c8b3dSmrg				</list>
1823986c8b3dSmrg			</bitcase>
1824986c8b3dSmrg		</switch>
1825986c8b3dSmrg	</request>
1826986c8b3dSmrg
1827f591e195Smrg	<!-- XXX: Property and doodads are broken, which renders GetGeometry useless
1828986c8b3dSmrg	<request name="GetGeometry" opcode="19">
1829986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1830986c8b3dSmrg		<pad bytes="2" />
1831986c8b3dSmrg		<field name="name" type="ATOM" />
1832986c8b3dSmrg		<reply>
1833986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1834986c8b3dSmrg			<field name="name" type="ATOM" />
1835986c8b3dSmrg			<field name="found" type="BOOL" />
1836986c8b3dSmrg			<pad bytes="1" />
1837986c8b3dSmrg			<field name="widthMM" type="CARD16" />
1838986c8b3dSmrg			<field name="heightMM" type="CARD16" />
1839986c8b3dSmrg			<field name="nProperties" type="CARD16" />
1840986c8b3dSmrg			<field name="nColors" type="CARD16" />
1841986c8b3dSmrg			<field name="nShapes" type="CARD16" />
1842986c8b3dSmrg			<field name="nSections" type="CARD16" />
1843986c8b3dSmrg			<field name="nDoodads" type="CARD16" />
1844986c8b3dSmrg			<field name="nKeyAliases" type="CARD16" />
1845986c8b3dSmrg			<field name="baseColorNdx" type="CARD8" />
1846986c8b3dSmrg			<field name="labelColorNdx" type="CARD8" />
1847986c8b3dSmrg			<field name="labelFont" type="CountedString16" />
1848986c8b3dSmrg			<list name="properties" type="Property">
1849986c8b3dSmrg				<fieldref>nProperties</fieldref>
1850986c8b3dSmrg			</list>
1851986c8b3dSmrg			<list name="colors" type="CountedString16">
1852986c8b3dSmrg				<fieldref>nColors</fieldref>
1853986c8b3dSmrg			</list>
1854986c8b3dSmrg			<list name="shapes" type="Shape">
1855986c8b3dSmrg				<fieldref>nShapes</fieldref>
1856986c8b3dSmrg			</list>
1857986c8b3dSmrg			<list name="sections" type="Section">
1858986c8b3dSmrg				<fieldref>nSections</fieldref>
1859986c8b3dSmrg			</list>
1860986c8b3dSmrg			<list name="doodads" type="Doodad">
1861986c8b3dSmrg				<fieldref>nDoodads</fieldref>
1862986c8b3dSmrg			</list>
1863986c8b3dSmrg			<list name="keyAliases" type="KeyAlias">
1864986c8b3dSmrg				<fieldref>nKeyAliases</fieldref>
1865986c8b3dSmrg			</list>
1866986c8b3dSmrg		</reply>
1867986c8b3dSmrg	</request>
1868f591e195Smrg	-->
1869986c8b3dSmrg
1870f591e195Smrg	<!-- XXX: Property and doodads are broken, which renders SetGeometry useless
1871986c8b3dSmrg	<request name="SetGeometry" opcode="20">
1872986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1873986c8b3dSmrg		<field name="nShapes" type="CARD8" />
1874986c8b3dSmrg		<field name="nSections" type="CARD8" />
1875986c8b3dSmrg		<field name="name" type="ATOM" />
1876986c8b3dSmrg		<field name="widthMM" type="CARD16" />
1877986c8b3dSmrg		<field name="heightMM" type="CARD16" />
1878986c8b3dSmrg		<field name="nProperties" type="CARD16" />
1879986c8b3dSmrg		<field name="nColors" type="CARD16" />
1880986c8b3dSmrg		<field name="nDoodads" type="CARD16" />
1881986c8b3dSmrg		<field name="nKeyAliases" type="CARD16" />
1882986c8b3dSmrg		<field name="baseColorNdx" type="CARD8" />
1883986c8b3dSmrg		<field name="labelColorNdx" type="CARD8" />
1884986c8b3dSmrg		<pad bytes="2" />
1885986c8b3dSmrg		<field name="labelFont" type="CountedString16" />
1886986c8b3dSmrg		<list name="properties" type="Property">
1887986c8b3dSmrg			<fieldref>nProperties</fieldref>
1888986c8b3dSmrg		</list>
1889986c8b3dSmrg		<list name="colors" type="CountedString16">
1890986c8b3dSmrg			<fieldref>nColors</fieldref>
1891986c8b3dSmrg		</list>
1892986c8b3dSmrg		<list name="shapes" type="Shape">
1893986c8b3dSmrg			<fieldref>nShapes</fieldref>
1894986c8b3dSmrg		</list>
1895986c8b3dSmrg		<list name="sections" type="Section">
1896986c8b3dSmrg			<fieldref>nSections</fieldref>
1897986c8b3dSmrg		</list>
1898986c8b3dSmrg		<list name="doodads" type="Doodad">
1899986c8b3dSmrg			<fieldref>nDoodads</fieldref>
1900986c8b3dSmrg		</list>
1901986c8b3dSmrg		<list name="keyAliases" type="KeyAlias">
1902986c8b3dSmrg			<fieldref>nKeyAliases</fieldref>
1903986c8b3dSmrg		</list>
1904986c8b3dSmrg	</request>
1905f591e195Smrg	-->
1906986c8b3dSmrg
1907986c8b3dSmrg	<request name="PerClientFlags" opcode="21">
1908986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1909986c8b3dSmrg		<pad bytes="2" />
1910986c8b3dSmrg		<field name="change" type="CARD32" mask="PerClientFlag" />
1911986c8b3dSmrg		<field name="value" type="CARD32" mask="PerClientFlag" />
1912986c8b3dSmrg		<field name="ctrlsToChange" type="CARD32" mask="BoolCtrl" />
1913986c8b3dSmrg		<field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1914986c8b3dSmrg		<field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1915986c8b3dSmrg		<reply>
1916986c8b3dSmrg			<field name="deviceID" type="CARD8"/>
1917986c8b3dSmrg			<field name="supported" type="CARD32" mask="PerClientFlag" />
1918986c8b3dSmrg			<field name="value" type="CARD32" mask="PerClientFlag" />
1919986c8b3dSmrg			<field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1920986c8b3dSmrg			<field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1921986c8b3dSmrg			<pad bytes="8" />
1922986c8b3dSmrg		</reply>
1923986c8b3dSmrg	</request>
1924986c8b3dSmrg
1925986c8b3dSmrg	<request name="ListComponents" opcode="22">
1926986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1927986c8b3dSmrg		<field name="maxNames" type="CARD16" />
1928f591e195Smrg		<!-- XXX: Intermixed fixed size fields and lists are broken
1929986c8b3dSmrg		<field name="keymapsSpecLen" type="CARD8" />
1930986c8b3dSmrg		<list name="keymapsSpec" type="STRING8">
1931986c8b3dSmrg			<fieldref>keymapsSpecLen</fieldref>
1932986c8b3dSmrg		</list>
1933986c8b3dSmrg		<field name="keycodesSpecLen" type="CARD8" />
1934986c8b3dSmrg		<list name="keycodesSpec" type="STRING8">
1935986c8b3dSmrg			<fieldref>keycodesSpecLen</fieldref>
1936986c8b3dSmrg		</list>
1937986c8b3dSmrg		<field name="typesSpecLen" type="CARD8" />
1938986c8b3dSmrg		<list name="typesSpec" type="STRING8">
1939986c8b3dSmrg			<fieldref>typesSpecLen</fieldref>
1940986c8b3dSmrg		</list>
1941986c8b3dSmrg		<field name="compatMapSpecLen" type="CARD8" />
1942986c8b3dSmrg		<list name="compatMapSpec" type="STRING8">
1943986c8b3dSmrg			<fieldref>compatMapSpecLen</fieldref>
1944986c8b3dSmrg		</list>
1945986c8b3dSmrg		<field name="symbolsSpecLen" type="CARD8" />
1946986c8b3dSmrg		<list name="symbolsSpec" type="STRING8">
1947986c8b3dSmrg			<fieldref>symbolsSpecLen</fieldref>
1948986c8b3dSmrg		</list>
1949986c8b3dSmrg		<field name="geometrySpecLen" type="CARD8" />
1950986c8b3dSmrg		<list name="geometrySpec" type="STRING8">
1951986c8b3dSmrg			<fieldref>geometrySpecLen</fieldref>
1952986c8b3dSmrg		</list>
1953f591e195Smrg		-->
1954986c8b3dSmrg		<reply>
1955986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1956986c8b3dSmrg			<field name="nKeymaps" type="CARD16" />
1957986c8b3dSmrg			<field name="nKeycodes" type="CARD16" />
1958986c8b3dSmrg			<field name="nTypes" type="CARD16" />
1959986c8b3dSmrg			<field name="nCompatMaps" type="CARD16" />
1960986c8b3dSmrg			<field name="nSymbols" type="CARD16" />
1961986c8b3dSmrg			<field name="nGeometries" type="CARD16" />
1962986c8b3dSmrg			<field name="extra" type="CARD16" />
1963986c8b3dSmrg			<pad bytes="10" />
1964986c8b3dSmrg			<list name="keymaps" type="Listing">
1965986c8b3dSmrg				<fieldref>nKeymaps</fieldref>
1966986c8b3dSmrg			</list>
1967986c8b3dSmrg			<list name="keycodes" type="Listing">
1968986c8b3dSmrg				<fieldref>nKeycodes</fieldref>
1969986c8b3dSmrg			</list>
1970986c8b3dSmrg			<list name="types" type="Listing">
1971986c8b3dSmrg				<fieldref>nTypes</fieldref>
1972986c8b3dSmrg			</list>
1973986c8b3dSmrg			<list name="compatMaps" type="Listing">
1974986c8b3dSmrg				<fieldref>nCompatMaps</fieldref>
1975986c8b3dSmrg			</list>
1976986c8b3dSmrg			<list name="symbols" type="Listing">
1977986c8b3dSmrg				<fieldref>nSymbols</fieldref>
1978986c8b3dSmrg			</list>
1979986c8b3dSmrg			<list name="geometries" type="Listing">
1980986c8b3dSmrg				<fieldref>nGeometries</fieldref>
1981986c8b3dSmrg			</list>
1982986c8b3dSmrg		</reply>
1983986c8b3dSmrg	</request>
1984986c8b3dSmrg
1985986c8b3dSmrg	<request name="GetKbdByName" opcode="23">
1986986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1987986c8b3dSmrg		<field name="need" type="CARD16" mask="GBNDetail" />
1988986c8b3dSmrg		<field name="want" type="CARD16" mask="GBNDetail" />
1989986c8b3dSmrg		<field name="load" type="BOOL" />
1990986c8b3dSmrg		<pad bytes="1" />
1991f591e195Smrg		<!-- XXX: Intermixed fixed size fields and lists are broken
1992986c8b3dSmrg		<field name="keymapsSpecLen" type="CARD8" />
1993986c8b3dSmrg		<list name="keymapsSpec" type="STRING8">
1994986c8b3dSmrg			<fieldref>keymapsSpecLen</fieldref>
1995986c8b3dSmrg		</list>
1996986c8b3dSmrg		<field name="keycodesSpecLen" type="CARD8" />
1997986c8b3dSmrg		<list name="keycodesSpec" type="STRING8">
1998986c8b3dSmrg			<fieldref>keycodesSpecLen</fieldref>
1999986c8b3dSmrg		</list>
2000986c8b3dSmrg		<field name="typesSpecLen" type="CARD8" />
2001986c8b3dSmrg		<list name="typesSpec" type="STRING8">
2002986c8b3dSmrg			<fieldref>typesSpecLen</fieldref>
2003986c8b3dSmrg		</list>
2004986c8b3dSmrg		<field name="compatMapSpecLen" type="CARD8" />
2005986c8b3dSmrg		<list name="compatMapSpec" type="STRING8">
2006986c8b3dSmrg			<fieldref>compatMapSpecLen</fieldref>
2007986c8b3dSmrg		</list>
2008986c8b3dSmrg		<field name="symbolsSpecLen" type="CARD8" />
2009986c8b3dSmrg		<list name="symbolsSpec" type="STRING8">
2010986c8b3dSmrg			<fieldref>symbolsSpecLen</fieldref>
2011986c8b3dSmrg		</list>
2012986c8b3dSmrg		<field name="geometrySpecLen" type="CARD8" />
2013986c8b3dSmrg		<list name="geometrySpec" type="STRING8">
2014986c8b3dSmrg			<fieldref>geometrySpecLen</fieldref>
2015986c8b3dSmrg		</list>
2016f591e195Smrg		-->
2017986c8b3dSmrg		<reply>
2018986c8b3dSmrg			<field name="deviceID" type="CARD8" />
2019986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
2020986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
2021986c8b3dSmrg			<field name="loaded" type="BOOL" />
2022986c8b3dSmrg			<field name="newKeyboard" type="BOOL" />
2023986c8b3dSmrg			<field name="found" type="CARD16" mask="GBNDetail" />
2024986c8b3dSmrg			<field name="reported" type="CARD16" mask="GBNDetail" />
2025986c8b3dSmrg			<pad bytes="16" />
2026986c8b3dSmrg			<switch name="replies">
2027986c8b3dSmrg				<fieldref>reported</fieldref>
2028986c8b3dSmrg				<bitcase name="types">
2029986c8b3dSmrg					<enumref ref="GBNDetail">Types</enumref>
2030f591e195Smrg					<enumref ref="GBNDetail">ClientSymbols</enumref>
2031f591e195Smrg					<enumref ref="GBNDetail">ServerSymbols</enumref>
2032986c8b3dSmrg					<!-- from the spec, this has to be a GetMap reply -->
2033986c8b3dSmrg					<field name="getmap_type" type="CARD8" />
2034986c8b3dSmrg				        <!-- done 'emulating' GetMap reply header-->
2035986c8b3dSmrg					<field name="typeDeviceID" type="CARD8" />
2036986c8b3dSmrg					<!-- from the spec, this has to be a GetMap reply -->
2037986c8b3dSmrg					<field name="getmap_sequence" type="CARD16" />
2038986c8b3dSmrg					<field name="getmap_length" type="CARD32" />
2039986c8b3dSmrg				        <!-- done 'emulating' GetMap reply header-->
2040986c8b3dSmrg					<pad bytes="2" />
2041986c8b3dSmrg					<field name="typeMinKeyCode" type="KEYCODE" />
2042986c8b3dSmrg					<field name="typeMaxKeyCode" type="KEYCODE" />
2043f591e195Smrg					<field name="present" type="CARD16" mask="MapPart" />
2044986c8b3dSmrg					<field name="firstType" type="CARD8" />
2045986c8b3dSmrg					<field name="nTypes" type="CARD8" />
2046986c8b3dSmrg					<field name="totalTypes" type="CARD8" />
2047986c8b3dSmrg					<field name="firstKeySym" type="KEYCODE" />
2048986c8b3dSmrg					<field name="totalSyms" type="CARD16" />
2049986c8b3dSmrg					<field name="nKeySyms" type="CARD8" />
2050986c8b3dSmrg					<field name="firstKeyAction" type="KEYCODE" />
2051986c8b3dSmrg					<field name="totalActions" type="CARD16" />
2052986c8b3dSmrg					<field name="nKeyActions" type="CARD8" />
2053986c8b3dSmrg					<field name="firstKeyBehavior" type="KEYCODE" />
2054986c8b3dSmrg					<field name="nKeyBehaviors" type="CARD8" />
2055986c8b3dSmrg					<field name="totalKeyBehaviors" type="CARD8" />
2056986c8b3dSmrg					<field name="firstKeyExplicit" type="KEYCODE" />
2057986c8b3dSmrg					<field name="nKeyExplicit" type="CARD8" />
2058986c8b3dSmrg					<field name="totalKeyExplicit" type="CARD8" />
2059986c8b3dSmrg					<field name="firstModMapKey" type="KEYCODE" />
2060986c8b3dSmrg					<field name="nModMapKeys" type="CARD8" />
2061986c8b3dSmrg					<field name="totalModMapKeys" type="CARD8" />
2062986c8b3dSmrg					<field name="firstVModMapKey" type="KEYCODE" />
2063986c8b3dSmrg					<field name="nVModMapKeys" type="CARD8" />
2064986c8b3dSmrg					<field name="totalVModMapKeys" type="CARD8" />
2065986c8b3dSmrg					<pad bytes="1" />
2066986c8b3dSmrg					<field name="virtualMods" type="CARD16" mask="VMod" />
2067986c8b3dSmrg					<switch name="map">
2068986c8b3dSmrg						<fieldref>present</fieldref>
2069986c8b3dSmrg						<bitcase>
2070986c8b3dSmrg							<enumref ref="MapPart">KeyTypes</enumref>
2071986c8b3dSmrg							<list name="types_rtrn" type="KeyType">
2072986c8b3dSmrg								<fieldref>nTypes</fieldref>
2073986c8b3dSmrg							</list>
2074986c8b3dSmrg						</bitcase>
2075986c8b3dSmrg						<bitcase>
2076986c8b3dSmrg							<enumref ref="MapPart">KeySyms</enumref>
2077986c8b3dSmrg							<list name="syms_rtrn" type="KeySymMap">
2078986c8b3dSmrg								<fieldref>nKeySyms</fieldref>
2079986c8b3dSmrg							</list>
2080986c8b3dSmrg						</bitcase>
2081986c8b3dSmrg						<bitcase>
2082986c8b3dSmrg							<enumref ref="MapPart">KeyActions</enumref>
2083986c8b3dSmrg							<list name="acts_rtrn_count" type="CARD8">
2084986c8b3dSmrg								<fieldref>nKeyActions</fieldref>
2085986c8b3dSmrg							</list>
2086891601f5Smrg							<pad align="4" />
2087986c8b3dSmrg							<list name="acts_rtrn_acts" type="Action">
2088986c8b3dSmrg								<fieldref>totalActions</fieldref>
2089986c8b3dSmrg							</list>
2090986c8b3dSmrg						</bitcase>
2091986c8b3dSmrg						<bitcase>
2092986c8b3dSmrg							<enumref ref="MapPart">KeyBehaviors</enumref>
2093986c8b3dSmrg							<list name="behaviors_rtrn" type="SetBehavior">
2094986c8b3dSmrg								<fieldref>totalKeyBehaviors</fieldref>
2095986c8b3dSmrg							</list>
2096986c8b3dSmrg						</bitcase>
2097986c8b3dSmrg						<bitcase>
2098986c8b3dSmrg							<enumref ref="MapPart">VirtualMods</enumref>
2099986c8b3dSmrg							<list name="vmods_rtrn" type="CARD8" mask="ModMask">
2100f591e195Smrg								<popcount><fieldref>virtualMods</fieldref></popcount>
2101986c8b3dSmrg							</list>
2102891601f5Smrg							<pad align="4" />
2103986c8b3dSmrg						</bitcase>
2104986c8b3dSmrg						<bitcase>
2105986c8b3dSmrg							<enumref ref="MapPart">ExplicitComponents</enumref>
2106986c8b3dSmrg							<list name="explicit_rtrn" type="SetExplicit">
2107986c8b3dSmrg								<fieldref>totalKeyExplicit</fieldref>
2108986c8b3dSmrg							</list>
2109891601f5Smrg							<pad align="4" />
2110986c8b3dSmrg						</bitcase>
2111986c8b3dSmrg						<bitcase>
2112986c8b3dSmrg							<enumref ref="MapPart">ModifierMap</enumref>
2113986c8b3dSmrg							<list name="modmap_rtrn" type="KeyModMap">
2114986c8b3dSmrg								<fieldref>totalModMapKeys</fieldref>
2115986c8b3dSmrg							</list>
2116891601f5Smrg							<pad align="4" />
2117986c8b3dSmrg						</bitcase>
2118986c8b3dSmrg						<bitcase>
2119986c8b3dSmrg							<enumref ref="MapPart">VirtualModMap</enumref>
2120986c8b3dSmrg							<list name="vmodmap_rtrn" type="KeyVModMap">
2121986c8b3dSmrg								<fieldref>totalVModMapKeys</fieldref>
2122986c8b3dSmrg							</list>
2123986c8b3dSmrg						</bitcase>
2124986c8b3dSmrg					</switch>
2125986c8b3dSmrg				</bitcase>
2126986c8b3dSmrg				<bitcase name="compat_map">
2127986c8b3dSmrg					<enumref ref="GBNDetail">CompatMap</enumref>
2128f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2129f591e195Smrg					<field name="compatmap_type" type="CARD8" />
2130986c8b3dSmrg					<field name="compatDeviceID" type="CARD8" />
2131f591e195Smrg					<field name="compatmap_sequence" type="CARD16" />
2132f591e195Smrg					<field name="compatmap_length" type="CARD32" />
2133f591e195Smrg					<!-- done 'emulating' reply header -->
2134986c8b3dSmrg					<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
2135986c8b3dSmrg					<pad bytes="1" />
2136986c8b3dSmrg					<field name="firstSIRtrn" type="CARD16" />
2137986c8b3dSmrg					<field name="nSIRtrn" type="CARD16" />
2138986c8b3dSmrg					<field name="nTotalSI" type="CARD16" />
2139986c8b3dSmrg					<pad bytes="16" />
2140f591e195Smrg					<list name="si_rtrn" type="SymInterpret">
2141f591e195Smrg						<fieldref>nSIRtrn</fieldref>
2142986c8b3dSmrg					</list>
2143986c8b3dSmrg					<list name="group_rtrn" type="ModDef">
2144986c8b3dSmrg						<popcount>
2145986c8b3dSmrg							<fieldref>groupsRtrn</fieldref>
2146986c8b3dSmrg						</popcount>
2147986c8b3dSmrg					</list>
2148986c8b3dSmrg				</bitcase>
2149986c8b3dSmrg				<bitcase name="indicator_maps">
2150986c8b3dSmrg					<enumref ref="GBNDetail">IndicatorMaps</enumref>
2151f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2152f591e195Smrg					<field name="indicatormap_type" type="CARD8" />
2153986c8b3dSmrg					<field name="indicatorDeviceID" type="CARD8" />
2154f591e195Smrg					<field name="indicatormap_sequence" type="CARD16" />
2155f591e195Smrg					<field name="indicatormap_length" type="CARD32" />
2156f591e195Smrg					<!-- done 'emulating' reply header -->
2157986c8b3dSmrg					<field name="which" type="CARD32" />
2158986c8b3dSmrg					<field name="realIndicators" type="CARD32" />
2159986c8b3dSmrg					<field name="nIndicators" type="CARD8" />
2160986c8b3dSmrg					<pad bytes="15" />
2161986c8b3dSmrg					<list name="maps" type="IndicatorMap">
2162986c8b3dSmrg						<fieldref>nIndicators</fieldref>
2163986c8b3dSmrg					</list>
2164986c8b3dSmrg				</bitcase>
2165986c8b3dSmrg				<bitcase name="key_names">
2166986c8b3dSmrg					<enumref ref="GBNDetail">KeyNames</enumref>
2167f591e195Smrg					<enumref ref="GBNDetail">OtherNames</enumref>
2168f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2169f591e195Smrg					<field name="keyname_type" type="CARD8" />
2170986c8b3dSmrg					<field name="keyDeviceID" type="CARD8" />
2171f591e195Smrg					<field name="keyname_sequence" type="CARD16" />
2172f591e195Smrg					<field name="keyname_length" type="CARD32" />
2173f591e195Smrg					<!-- done 'emulating' reply header -->
2174986c8b3dSmrg					<field name="which" type="CARD32" mask="NameDetail" />
2175986c8b3dSmrg					<field name="keyMinKeyCode" type="KEYCODE" />
2176986c8b3dSmrg					<field name="keyMaxKeyCode" type="KEYCODE" />
2177986c8b3dSmrg					<field name="nTypes" type="CARD8" />
2178986c8b3dSmrg					<field name="groupNames" type="CARD8" mask="SetOfGroup" />
2179986c8b3dSmrg					<field name="virtualMods" type="CARD16" mask="VMod" />
2180986c8b3dSmrg					<field name="firstKey" type="KEYCODE" />
2181986c8b3dSmrg					<field name="nKeys" type="CARD8" />
2182986c8b3dSmrg					<field name="indicators" type="CARD32" />
2183986c8b3dSmrg					<field name="nRadioGroups" type="CARD8" />
2184986c8b3dSmrg					<field name="nKeyAliases" type="CARD8" />
2185986c8b3dSmrg					<field name="nKTLevels" type="CARD16" />
2186986c8b3dSmrg					<pad bytes="4" />
2187986c8b3dSmrg					<switch name="valueList">
2188986c8b3dSmrg						<fieldref>which</fieldref>
2189986c8b3dSmrg						<bitcase>
2190986c8b3dSmrg							<enumref ref="NameDetail">Keycodes</enumref>
2191986c8b3dSmrg							<field name="keycodesName" type="ATOM" />
2192986c8b3dSmrg						</bitcase>
2193986c8b3dSmrg						<bitcase>
2194986c8b3dSmrg							<enumref ref="NameDetail">Geometry</enumref>
2195986c8b3dSmrg							<field name="geometryName" type="ATOM" />
2196986c8b3dSmrg						</bitcase>
2197986c8b3dSmrg						<bitcase>
2198986c8b3dSmrg							<enumref ref="NameDetail">Symbols</enumref>
2199986c8b3dSmrg							<field name="symbolsName" type="ATOM" />
2200986c8b3dSmrg						</bitcase>
2201986c8b3dSmrg						<bitcase>
2202986c8b3dSmrg							<enumref ref="NameDetail">PhysSymbols</enumref>
2203986c8b3dSmrg							<field name="physSymbolsName" type="ATOM" />
2204986c8b3dSmrg						</bitcase>
2205986c8b3dSmrg						<bitcase>
2206986c8b3dSmrg							<enumref ref="NameDetail">Types</enumref>
2207986c8b3dSmrg							<field name="typesName" type="ATOM" />
2208986c8b3dSmrg						</bitcase>
2209986c8b3dSmrg						<bitcase>
2210986c8b3dSmrg							<enumref ref="NameDetail">Compat</enumref>
2211986c8b3dSmrg							<field name="compatName" type="ATOM" />
2212986c8b3dSmrg						</bitcase>
2213986c8b3dSmrg						<bitcase>
2214986c8b3dSmrg							<enumref ref="NameDetail">KeyTypeNames</enumref>
2215986c8b3dSmrg							<list name="typeNames" type="ATOM">
2216986c8b3dSmrg								<fieldref>nTypes</fieldref>
2217986c8b3dSmrg							</list>
2218986c8b3dSmrg						</bitcase>
2219986c8b3dSmrg						<bitcase>
2220986c8b3dSmrg							<enumref ref="NameDetail">KTLevelNames</enumref>
2221986c8b3dSmrg							<list name="nLevelsPerType" type="CARD8">
2222b26960f7Smrg								<fieldref>nTypes</fieldref>
2223986c8b3dSmrg							</list>
2224891601f5Smrg							<pad align="4" />
2225986c8b3dSmrg							<list name="ktLevelNames" type="ATOM">
2226986c8b3dSmrg								<sumof ref="nLevelsPerType" />
2227986c8b3dSmrg							</list>
2228986c8b3dSmrg						</bitcase>
2229986c8b3dSmrg						<bitcase>
2230986c8b3dSmrg							<enumref ref="NameDetail">IndicatorNames</enumref>
2231986c8b3dSmrg							<list name="indicatorNames" type="ATOM">
2232986c8b3dSmrg								<popcount>
2233986c8b3dSmrg									<fieldref>indicators</fieldref>
2234986c8b3dSmrg								</popcount>
2235986c8b3dSmrg							</list>
2236986c8b3dSmrg						</bitcase>
2237986c8b3dSmrg						<bitcase>
2238986c8b3dSmrg							<enumref ref="NameDetail">VirtualModNames</enumref>
2239986c8b3dSmrg							<list name="virtualModNames" type="ATOM">
2240986c8b3dSmrg								<popcount>
2241986c8b3dSmrg									<fieldref>virtualMods</fieldref>
2242986c8b3dSmrg								</popcount>
2243986c8b3dSmrg							</list>
2244986c8b3dSmrg						</bitcase>
2245986c8b3dSmrg						<bitcase>
2246986c8b3dSmrg							<enumref ref="NameDetail">GroupNames</enumref>
2247986c8b3dSmrg							<list name="groups" type="ATOM">
2248986c8b3dSmrg								<popcount>
2249986c8b3dSmrg									<fieldref>groupNames</fieldref>
2250986c8b3dSmrg								</popcount>
2251986c8b3dSmrg							</list>
2252986c8b3dSmrg						</bitcase>
2253986c8b3dSmrg						<bitcase>
2254986c8b3dSmrg							<enumref ref="NameDetail">KeyNames</enumref>
2255986c8b3dSmrg							<list name="keyNames" type="KeyName">
2256986c8b3dSmrg								<fieldref>nKeys</fieldref>
2257986c8b3dSmrg							</list>
2258986c8b3dSmrg						</bitcase>
2259986c8b3dSmrg						<bitcase>
2260986c8b3dSmrg							<enumref ref="NameDetail">KeyAliases</enumref>
2261986c8b3dSmrg							<list name="keyAliases" type="KeyAlias">
2262986c8b3dSmrg								<fieldref>nKeyAliases</fieldref>
2263986c8b3dSmrg							</list>
2264986c8b3dSmrg						</bitcase>
2265986c8b3dSmrg						<bitcase>
2266986c8b3dSmrg							<enumref ref="NameDetail">RGNames</enumref>
2267986c8b3dSmrg							<list name="radioGroupNames" type="ATOM">
2268986c8b3dSmrg								<fieldref>nRadioGroups</fieldref>
2269986c8b3dSmrg							</list>
2270986c8b3dSmrg						</bitcase>
2271986c8b3dSmrg					</switch>
2272986c8b3dSmrg				</bitcase>
2273986c8b3dSmrg				<bitcase name="geometry">
2274986c8b3dSmrg					<enumref ref="GBNDetail">Geometry</enumref>
2275f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2276f591e195Smrg					<field name="geometry_type" type="CARD8" />
2277986c8b3dSmrg					<field name="geometryDeviceID" type="CARD8" />
2278f591e195Smrg					<field name="geometry_sequence" type="CARD16" />
2279f591e195Smrg					<field name="geometry_length" type="CARD32" />
2280f591e195Smrg					<!-- done 'emulating' reply header -->
2281986c8b3dSmrg					<field name="name" type="ATOM" />
2282986c8b3dSmrg					<field name="geometryFound" type="BOOL" />
2283986c8b3dSmrg					<pad bytes="1" />
2284986c8b3dSmrg					<field name="widthMM" type="CARD16" />
2285986c8b3dSmrg					<field name="heightMM" type="CARD16" />
2286986c8b3dSmrg					<field name="nProperties" type="CARD16" />
2287986c8b3dSmrg					<field name="nColors" type="CARD16" />
2288986c8b3dSmrg					<field name="nShapes" type="CARD16" />
2289986c8b3dSmrg					<field name="nSections" type="CARD16" />
2290986c8b3dSmrg					<field name="nDoodads" type="CARD16" />
2291986c8b3dSmrg					<field name="nKeyAliases" type="CARD16" />
2292986c8b3dSmrg					<field name="baseColorNdx" type="CARD8" />
2293986c8b3dSmrg					<field name="labelColorNdx" type="CARD8" />
2294986c8b3dSmrg					<field name="labelFont" type="CountedString16" />
2295f591e195Smrg					<!-- XXX: Property is broken
2296986c8b3dSmrg					<list name="properties" type="Property">
2297986c8b3dSmrg						<fieldref>nProperties</fieldref>
2298986c8b3dSmrg					</list>
2299986c8b3dSmrg					<list name="colors" type="CountedString16">
2300986c8b3dSmrg						<fieldref>nColors</fieldref>
2301986c8b3dSmrg					</list>
2302986c8b3dSmrg					<list name="shapes" type="Shape">
2303986c8b3dSmrg						<fieldref>nShapes</fieldref>
2304986c8b3dSmrg					</list>
2305f591e195Smrg					-->
2306f591e195Smrg					<!-- XXX: doodads are broken
2307986c8b3dSmrg					<list name="sections" type="Section">
2308986c8b3dSmrg						<fieldref>nSections</fieldref>
2309986c8b3dSmrg					</list>
2310986c8b3dSmrg					<list name="doodads" type="Doodad">
2311986c8b3dSmrg						<fieldref>nDoodads</fieldref>
2312986c8b3dSmrg					</list>
2313986c8b3dSmrg					<list name="keyAliases" type="KeyAlias">
2314986c8b3dSmrg						<fieldref>nKeyAliases</fieldref>
2315986c8b3dSmrg					</list>
2316f591e195Smrg					-->
2317986c8b3dSmrg				</bitcase>
2318986c8b3dSmrg			</switch>
2319986c8b3dSmrg		</reply>
2320986c8b3dSmrg	</request>
2321986c8b3dSmrg
2322986c8b3dSmrg	<request name="GetDeviceInfo" opcode="24">
2323986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
2324986c8b3dSmrg		<field name="wanted" type="CARD16" mask="XIFeature" />
2325986c8b3dSmrg		<field name="allButtons" type="BOOL" />
2326986c8b3dSmrg		<field name="firstButton" type="CARD8" />
2327986c8b3dSmrg		<field name="nButtons" type="CARD8" />
2328986c8b3dSmrg		<pad bytes="1" />
2329986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
2330986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
2331986c8b3dSmrg		<reply>
2332986c8b3dSmrg			<field name="deviceID" type="CARD8" />
2333986c8b3dSmrg			<field name="present" type="CARD16" mask="XIFeature" />
2334986c8b3dSmrg			<field name="supported" type="CARD16" mask="XIFeature" />
2335986c8b3dSmrg			<field name="unsupported" type="CARD16" mask="XIFeature" />
2336986c8b3dSmrg			<field name="nDeviceLedFBs" type="CARD16" />
2337986c8b3dSmrg			<field name="firstBtnWanted" type="CARD8" />
2338986c8b3dSmrg			<field name="nBtnsWanted" type="CARD8" />
2339986c8b3dSmrg			<field name="firstBtnRtrn" type="CARD8" />
2340986c8b3dSmrg			<field name="nBtnsRtrn" type="CARD8" />
2341986c8b3dSmrg			<field name="totalBtns" type="CARD8" />
2342986c8b3dSmrg			<field name="hasOwnState" type="BOOL" />
2343986c8b3dSmrg			<field name="dfltKbdFB" type="CARD16" altenum="ID" />
2344986c8b3dSmrg			<field name="dfltLedFB" type="CARD16" altenum="ID" />
2345986c8b3dSmrg			<pad bytes="2" />
2346986c8b3dSmrg			<field name="devType" type="ATOM" />
2347986c8b3dSmrg			<field name="nameLen" type="CARD16" />
2348986c8b3dSmrg			<list name="name" type="STRING8">
2349986c8b3dSmrg				<fieldref>nameLen</fieldref>
2350986c8b3dSmrg			</list>
2351891601f5Smrg			<pad align="4" />
2352986c8b3dSmrg			<list name="btnActions" type="Action">
2353986c8b3dSmrg				<fieldref>nBtnsRtrn</fieldref>
2354986c8b3dSmrg			</list>
2355986c8b3dSmrg			<list name="leds" type="DeviceLedInfo">
2356986c8b3dSmrg				<fieldref>nDeviceLedFBs</fieldref>
2357986c8b3dSmrg			</list>
2358986c8b3dSmrg		</reply>
2359986c8b3dSmrg	</request>
2360986c8b3dSmrg
2361986c8b3dSmrg
2362986c8b3dSmrg	<request name="SetDeviceInfo" opcode="25">
2363986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
2364986c8b3dSmrg		<field name="firstBtn" type="CARD8" />
2365986c8b3dSmrg		<field name="nBtns" type="CARD8" />
2366986c8b3dSmrg		<field name="change" type="CARD16" mask="XIFeature" />
2367986c8b3dSmrg		<field name="nDeviceLedFBs" type="CARD16" />
2368986c8b3dSmrg		<list name="btnActions" type="Action">
2369986c8b3dSmrg			<fieldref>nBtns</fieldref>
2370986c8b3dSmrg		</list>
2371986c8b3dSmrg		<list name="leds" type="DeviceLedInfo">
2372986c8b3dSmrg			<fieldref>nDeviceLedFBs</fieldref>
2373986c8b3dSmrg		</list>
2374986c8b3dSmrg	</request>
2375986c8b3dSmrg
2376986c8b3dSmrg	<request name="SetDebuggingFlags" opcode="101">
2377986c8b3dSmrg		<field name="msgLength" type="CARD16" />
2378986c8b3dSmrg		<pad bytes="2" />
2379986c8b3dSmrg		<field name="affectFlags" type="CARD32" />
2380986c8b3dSmrg		<field name="flags" type="CARD32" />
2381986c8b3dSmrg		<field name="affectCtrls" type="CARD32" />
2382986c8b3dSmrg		<field name="ctrls" type="CARD32" />
2383986c8b3dSmrg		<list name="message" type="STRING8">
2384986c8b3dSmrg			<fieldref>msgLength</fieldref>
2385986c8b3dSmrg		</list>
2386986c8b3dSmrg		<reply>
2387986c8b3dSmrg			<pad bytes="1" />
2388986c8b3dSmrg			<field name="currentFlags" type="CARD32" />
2389986c8b3dSmrg			<field name="currentCtrls" type="CARD32" />
2390986c8b3dSmrg			<field name="supportedFlags" type="CARD32" />
2391986c8b3dSmrg			<field name="supportedCtrls" type="CARD32" />
2392986c8b3dSmrg			<pad bytes="8" />
2393986c8b3dSmrg		</reply>
2394986c8b3dSmrg	</request>
2395986c8b3dSmrg
2396986c8b3dSmrg	<!-- Events -->
2397986c8b3dSmrg
2398f591e195Smrg	<event name="NewKeyboardNotify" number="0">
2399986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2400986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2401986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2402986c8b3dSmrg		<field name="oldDeviceID" type="CARD8" />
2403986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
2404986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
2405986c8b3dSmrg		<field name="oldMinKeyCode" type="KEYCODE" />
2406986c8b3dSmrg		<field name="oldMaxKeyCode" type="KEYCODE" />
2407986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2408986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2409986c8b3dSmrg		<field name="changed" type="CARD16" mask="NKNDetail" />
2410986c8b3dSmrg		<pad bytes="14" />
2411986c8b3dSmrg	</event>
2412986c8b3dSmrg
2413f591e195Smrg	<event name="MapNotify" number="1">
2414986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2415986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2416986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2417986c8b3dSmrg		<field name="ptrBtnActions" type="CARD8" />
2418986c8b3dSmrg		<field name="changed" type="CARD16" mask="MapPart" />
2419986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
2420986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
2421986c8b3dSmrg		<field name="firstType" type="CARD8" />
2422986c8b3dSmrg		<field name="nTypes" type="CARD8" />
2423986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
2424986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
2425986c8b3dSmrg		<field name="firstKeyAct" type="KEYCODE" />
2426986c8b3dSmrg		<field name="nKeyActs" type="CARD8" />
2427986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
2428986c8b3dSmrg		<field name="nKeyBehavior" type="CARD8" />
2429986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
2430986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
2431986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
2432986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
2433986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
2434986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
2435986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
2436986c8b3dSmrg		<pad bytes="2" />
2437986c8b3dSmrg	</event>
2438986c8b3dSmrg
2439f591e195Smrg	<event name="StateNotify" number="2">
2440986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2441986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2442986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2443986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
2444986c8b3dSmrg		<field name="baseMods" type="CARD8" mask="ModMask" />
2445986c8b3dSmrg		<field name="latchedMods" type="CARD8" mask="ModMask" />
2446986c8b3dSmrg		<field name="lockedMods" type="CARD8" mask="ModMask" />
2447986c8b3dSmrg		<field name="group" type="CARD8" enum="Group" />
2448986c8b3dSmrg		<field name="baseGroup" type="INT16" />
2449986c8b3dSmrg		<field name="latchedGroup" type="INT16" />
2450986c8b3dSmrg		<field name="lockedGroup" type="CARD8" enum="Group" />
2451986c8b3dSmrg		<field name="compatState" type="CARD8" mask="ModMask" />
2452986c8b3dSmrg		<field name="grabMods" type="CARD8" mask="ModMask" />
2453986c8b3dSmrg		<field name="compatGrabMods" type="CARD8" mask="ModMask" />
2454986c8b3dSmrg		<field name="lookupMods" type="CARD8" mask="ModMask" />
2455986c8b3dSmrg		<field name="compatLoockupMods" type="CARD8" mask="ModMask" />
2456986c8b3dSmrg		<field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
2457986c8b3dSmrg		<field name="changed" type="CARD16" mask="StatePart" />
2458986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2459986c8b3dSmrg		<field name="eventType" type="CARD8" />
2460986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2461986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2462986c8b3dSmrg	</event>
2463986c8b3dSmrg
2464f591e195Smrg	<event name="ControlsNotify" number="3">
2465986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2466986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2467986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2468986c8b3dSmrg		<field name="numGroups" type="CARD8" />
2469986c8b3dSmrg		<pad bytes="2" />
2470986c8b3dSmrg		<field name="changedControls" type="CARD32" mask="Control" />
2471986c8b3dSmrg		<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
2472986c8b3dSmrg		<field name="enabledControlChanges" type="CARD32" mask="BoolCtrl" />
2473986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2474986c8b3dSmrg		<field name="eventType" type="CARD8" />
2475986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2476986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2477986c8b3dSmrg		<pad bytes="4" />
2478986c8b3dSmrg	</event>
2479986c8b3dSmrg
2480f591e195Smrg	<event name="IndicatorStateNotify" number="4">
2481986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2482986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2483986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2484986c8b3dSmrg		<pad bytes="3" />
2485986c8b3dSmrg		<field name="state" type="CARD32" />
2486986c8b3dSmrg		<field name="stateChanged" type="CARD32" />
2487986c8b3dSmrg		<pad bytes="12" />
2488986c8b3dSmrg	</event>
2489986c8b3dSmrg
2490f591e195Smrg	<event name="IndicatorMapNotify" number="5">
2491986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2492986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2493986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2494986c8b3dSmrg		<pad bytes="3" />
2495986c8b3dSmrg		<field name="state" type="CARD32" />
2496986c8b3dSmrg		<field name="mapChanged" type="CARD32" />
2497986c8b3dSmrg		<pad bytes="12" />
2498986c8b3dSmrg	</event>
2499986c8b3dSmrg
2500f591e195Smrg	<event name="NamesNotify" number="6">
2501986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2502986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2503986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2504986c8b3dSmrg		<pad bytes="1" />
2505986c8b3dSmrg		<field name="changed" type="CARD16" mask="NameDetail" />
2506986c8b3dSmrg		<field name="firstType" type="CARD8" />
2507986c8b3dSmrg		<field name="nTypes" type="CARD8" />
2508986c8b3dSmrg		<field name="firstLevelName" type="CARD8" />
2509986c8b3dSmrg		<field name="nLevelNames" type="CARD8" />
2510986c8b3dSmrg		<pad bytes="1" />
2511986c8b3dSmrg		<field name="nRadioGroups" type="CARD8" />
2512986c8b3dSmrg		<field name="nKeyAliases" type="CARD8" />
2513986c8b3dSmrg		<field name="changedGroupNames" type="CARD8" mask="SetOfGroup" />
2514986c8b3dSmrg		<field name="changedVirtualMods" type="CARD16" mask="VMod" />
2515986c8b3dSmrg		<field name="firstKey" type="KEYCODE" />
2516986c8b3dSmrg		<field name="nKeys" type="CARD8" />
2517986c8b3dSmrg		<field name="changedIndicators" type="CARD32" />
2518986c8b3dSmrg		<pad bytes="4" />
2519986c8b3dSmrg	</event>
2520986c8b3dSmrg
2521f591e195Smrg	<event name="CompatMapNotify" number="7">
2522986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2523986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2524986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2525986c8b3dSmrg		<field name="changedGroups" type="CARD8" mask="SetOfGroup" />
2526986c8b3dSmrg		<field name="firstSI" type="CARD16" />
2527986c8b3dSmrg		<field name="nSI" type="CARD16" />
2528986c8b3dSmrg		<field name="nTotalSI" type="CARD16" />
2529986c8b3dSmrg		<pad bytes="16" />
2530986c8b3dSmrg	</event>
2531986c8b3dSmrg
2532f591e195Smrg	<event name="BellNotify" number="8">
2533986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2534986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2535986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2536986c8b3dSmrg		<field name="bellClass" type="CARD8" enum="BellClassResult" />
2537986c8b3dSmrg		<field name="bellID" type="CARD8" />
2538986c8b3dSmrg		<field name="percent" type="CARD8" />
2539986c8b3dSmrg		<field name="pitch" type="CARD16" />
2540986c8b3dSmrg		<field name="duration" type="CARD16" />
2541986c8b3dSmrg		<field name="name" type="ATOM" />
2542986c8b3dSmrg		<field name="window" type="WINDOW" />
2543986c8b3dSmrg		<field name="eventOnly" type="BOOL" />
2544986c8b3dSmrg		<pad bytes="7" />
2545986c8b3dSmrg	</event>
2546986c8b3dSmrg
2547f591e195Smrg	<event name="ActionMessage" number="9">
2548986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2549986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2550986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2551986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2552986c8b3dSmrg		<field name="press" type="BOOL" />
2553986c8b3dSmrg		<field name="keyEventFollows" type="BOOL" />
2554986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
2555986c8b3dSmrg		<field name="group" type="CARD8" enum="Group" />
2556986c8b3dSmrg		<list name="message" type="STRING8">
2557986c8b3dSmrg			<value>8</value>
2558986c8b3dSmrg		</list>
2559986c8b3dSmrg		<pad bytes="10" />
2560986c8b3dSmrg	</event>
2561986c8b3dSmrg
2562f591e195Smrg	<event name="AccessXNotify" number="10">
2563986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2564986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2565986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2566986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2567986c8b3dSmrg		<field name="detailt" type="CARD16" mask="AXNDetail" />
2568986c8b3dSmrg		<field name="slowKeysDelay" type="CARD16" />
2569986c8b3dSmrg		<field name="debounceDelay" type="CARD16" />
2570986c8b3dSmrg		<pad bytes="16" />
2571986c8b3dSmrg	</event>
2572986c8b3dSmrg
2573f591e195Smrg	<event name="ExtensionDeviceNotify" number="11">
2574986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2575986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2576986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2577986c8b3dSmrg		<pad bytes="1" />
2578986c8b3dSmrg		<field name="reason" type="CARD16" mask="XIFeature" />
2579986c8b3dSmrg		<field name="ledClass" type="CARD16" enum="LedClassResult" />
2580f591e195Smrg		<field name="ledID" type="CARD16" />
2581986c8b3dSmrg		<field name="ledsDefined" type="CARD32" />
2582986c8b3dSmrg		<field name="ledState" type="CARD32" />
2583986c8b3dSmrg		<field name="firstButton" type="CARD8" />
2584986c8b3dSmrg		<field name="nButtons" type="CARD8" />
2585986c8b3dSmrg		<field name="supported" type="CARD16" mask="XIFeature" />
2586986c8b3dSmrg		<field name="unsupported" type="CARD16" mask="XIFeature" />
2587986c8b3dSmrg		<pad bytes="2" />
2588986c8b3dSmrg	</event>
2589986c8b3dSmrg</xcb>
2590