xkb.xml revision f591e195
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>
748986c8b3dSmrg	</struct>
749986c8b3dSmrg
750986c8b3dSmrg	<struct name="DeviceLedInfo">
751986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
752986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
753986c8b3dSmrg		<field name="namesPresent" type="CARD32" />
754986c8b3dSmrg		<field name="mapsPresent" type="CARD32" />
755986c8b3dSmrg		<field name="physIndicators" type="CARD32" />
756986c8b3dSmrg		<field name="state" type="CARD32" />
757986c8b3dSmrg		<list name="names" type="ATOM">
758986c8b3dSmrg			<popcount>
759986c8b3dSmrg				<fieldref>namesPresent</fieldref>
760986c8b3dSmrg			</popcount>
761986c8b3dSmrg		</list>
762986c8b3dSmrg		<list name="maps" type="IndicatorMap">
763986c8b3dSmrg			<popcount>
764986c8b3dSmrg				<fieldref>mapsPresent</fieldref>
765986c8b3dSmrg			</popcount>
766986c8b3dSmrg		</list>
767986c8b3dSmrg	</struct>
768986c8b3dSmrg
769986c8b3dSmrg	<!-- Errors -->
770986c8b3dSmrg
771986c8b3dSmrg	<enum name="Error">
772986c8b3dSmrg		<item name="BadDevice"> <value>255</value> </item>	<!--0xff-->
773986c8b3dSmrg		<item name="BadClass">  <value>254</value> </item>	<!--0xfe-->
774986c8b3dSmrg		<item name="BadId">     <value>253</value> </item>	<!--0xfd-->
775986c8b3dSmrg	</enum>
776986c8b3dSmrg
777986c8b3dSmrg	<error name="Keyboard" number="0">
778986c8b3dSmrg		<field name="value" type="CARD32" />
779986c8b3dSmrg		<field name="minorOpcode" type="CARD16" />
780986c8b3dSmrg		<field name="majorOpcode" type="CARD8" />
781986c8b3dSmrg		<pad bytes="21" />
782986c8b3dSmrg	</error>
783986c8b3dSmrg
784986c8b3dSmrg	<!-- Key Actions -->
785986c8b3dSmrg
786986c8b3dSmrg	<enum name="SA">
787986c8b3dSmrg		<item name="ClearLocks">    <bit>0</bit> </item>
788986c8b3dSmrg		<item name="LatchToLock">   <bit>1</bit> </item>
789986c8b3dSmrg		<item name="UseModMapMods"> <bit>2</bit> </item>
790986c8b3dSmrg		<item name="GroupAbsolute"> <bit>2</bit> </item>
791986c8b3dSmrg	</enum>
792986c8b3dSmrg
793986c8b3dSmrg	<enum name="SAType">
794986c8b3dSmrg		<item name="NoAction">       <value>0</value> </item>
795986c8b3dSmrg		<item name="SetMods">        <value>1</value> </item>
796986c8b3dSmrg		<item name="LatchMods">      <value>2</value> </item>
797986c8b3dSmrg		<item name="LockMods">       <value>3</value> </item>
798986c8b3dSmrg		<item name="SetGroup">       <value>4</value> </item>
799986c8b3dSmrg		<item name="LatchGroup">     <value>5</value> </item>
800986c8b3dSmrg		<item name="LockGroup">      <value>6</value> </item>
801986c8b3dSmrg		<item name="MovePtr">        <value>7</value> </item>
802986c8b3dSmrg		<item name="PtrBtn">         <value>8</value> </item>
803986c8b3dSmrg		<item name="LockPtrBtn">     <value>9</value> </item>
804986c8b3dSmrg		<item name="SetPtrDflt">     <value>10</value> </item>
805986c8b3dSmrg		<item name="ISOLock">        <value>11</value> </item>
806986c8b3dSmrg		<item name="Terminate">      <value>12</value> </item>
807986c8b3dSmrg		<item name="SwitchScreen">   <value>13</value> </item>
808986c8b3dSmrg		<item name="SetControls">    <value>14</value> </item>
809986c8b3dSmrg		<item name="LockControls">   <value>15</value> </item>
810986c8b3dSmrg		<item name="ActionMessage">  <value>16</value> </item>
811986c8b3dSmrg		<item name="RedirectKey">    <value>17</value> </item>
812986c8b3dSmrg		<item name="DeviceBtn">      <value>18</value> </item>
813986c8b3dSmrg		<item name="LockDeviceBtn">  <value>19</value> </item>
814986c8b3dSmrg		<item name="DeviceValuator"> <value>20</value> </item>
815986c8b3dSmrg	</enum>
816986c8b3dSmrg
817986c8b3dSmrg	<struct name="SANoAction">
818986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
819986c8b3dSmrg		<pad bytes="7" />
820986c8b3dSmrg	</struct>
821986c8b3dSmrg
822986c8b3dSmrg	<struct name="SASetMods">
823986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
824986c8b3dSmrg		<field name="flags" type="CARD8" mask="SA" />
825986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
826986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
827986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
828986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow" />
829986c8b3dSmrg		<pad bytes="2" />
830986c8b3dSmrg	</struct>
831986c8b3dSmrg
832986c8b3dSmrg	<typedef oldname="SASetMods" newname="SALatchMods" />
833986c8b3dSmrg
834986c8b3dSmrg	<typedef oldname="SASetMods" newname="SALockMods" />
835986c8b3dSmrg
836986c8b3dSmrg	<struct name="SASetGroup">
837986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
838986c8b3dSmrg		<field name="flags" type="CARD8" mask="SA" />
839986c8b3dSmrg		<field name="group" type="INT8" />
840986c8b3dSmrg		<pad bytes="5" />
841986c8b3dSmrg	</struct>
842986c8b3dSmrg
843986c8b3dSmrg	<typedef oldname="SASetGroup" newname="SALatchGroup" />
844986c8b3dSmrg
845986c8b3dSmrg	<typedef oldname="SASetGroup" newname="SALockGroup" />
846986c8b3dSmrg
847986c8b3dSmrg	<enum name="SAMovePtrFlag">
848986c8b3dSmrg		<item name="NoAcceleration"> <bit>0</bit> </item>
849986c8b3dSmrg		<item name="MoveAbsoluteX">  <bit>1</bit> </item>
850986c8b3dSmrg		<item name="MoveAbsoluteY">  <bit>2</bit> </item>
851986c8b3dSmrg	</enum>
852986c8b3dSmrg
853986c8b3dSmrg	<struct name="SAMovePtr">
854986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
855986c8b3dSmrg		<field name="flags" type="CARD8" mask="SAMovePtrFlag" />
856986c8b3dSmrg		<field name="xHigh" type="INT8" />
857986c8b3dSmrg		<field name="xLow" type="CARD8" />
858986c8b3dSmrg		<field name="yHigh" type="INT8" />
859986c8b3dSmrg		<field name="yLow" type="CARD8" />
860986c8b3dSmrg		<pad bytes="2" />
861986c8b3dSmrg	</struct>
862986c8b3dSmrg
863986c8b3dSmrg	<struct name="SAPtrBtn">
864986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
865986c8b3dSmrg		<field name="flags" type="CARD8" />
866986c8b3dSmrg		<field name="count" type="CARD8" />
867986c8b3dSmrg		<field name="button" type="CARD8" />
868986c8b3dSmrg		<pad bytes="4" />
869986c8b3dSmrg	</struct>
870986c8b3dSmrg
871986c8b3dSmrg	<struct name="SALockPtrBtn">
872986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
873986c8b3dSmrg		<field name="flags" type="CARD8" />
874986c8b3dSmrg		<pad bytes="1" />
875986c8b3dSmrg		<field name="button" type="CARD8" />
876986c8b3dSmrg		<pad bytes="4" />
877986c8b3dSmrg	</struct>
878986c8b3dSmrg
879986c8b3dSmrg	<enum name="SASetPtrDfltFlag">
880f591e195Smrg		<!-- The spec says 0x02 but Xlib uses 0x04. -->
881f591e195Smrg		<item name="DfltBtnAbsolute">  <bit>2</bit> </item>
882986c8b3dSmrg		<item name="AffectDfltButton"> <bit>0</bit> </item>
883986c8b3dSmrg	</enum>
884986c8b3dSmrg
885986c8b3dSmrg	<struct name="SASetPtrDflt">
886986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
887986c8b3dSmrg		<field name="flags" type="CARD8" mask="SASetPtrDfltFlag" />
888986c8b3dSmrg		<field name="affect" type="CARD8" mask="SASetPtrDfltFlag" />
889986c8b3dSmrg		<field name="value" type="INT8" />
890986c8b3dSmrg		<pad bytes="4" />
891986c8b3dSmrg	</struct>
892986c8b3dSmrg
893986c8b3dSmrg	<enum name="SAIsoLockFlag">
894986c8b3dSmrg		<item name="NoLock">         <bit>0</bit> </item>
895986c8b3dSmrg		<item name="NoUnlock">       <bit>1</bit> </item>
896986c8b3dSmrg		<item name="UseModMapMods">  <bit>2</bit> </item>
897986c8b3dSmrg		<item name="GroupAbsolute">  <bit>2</bit> </item>
898986c8b3dSmrg		<item name="ISODfltIsGroup"> <bit>3</bit> </item>
899986c8b3dSmrg	</enum>
900986c8b3dSmrg
901986c8b3dSmrg	<enum name="SAIsoLockNoAffect">
902986c8b3dSmrg		<item name="Ctrls"> <bit>3</bit> </item>
903986c8b3dSmrg		<item name="Ptr">   <bit>4</bit> </item>
904986c8b3dSmrg		<item name="Group"> <bit>5</bit> </item>
905986c8b3dSmrg		<item name="Mods">  <bit>6</bit> </item>
906986c8b3dSmrg	</enum>
907986c8b3dSmrg
908986c8b3dSmrg	<struct name="SAIsoLock">
909986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
910986c8b3dSmrg		<field name="flags" type="CARD8" mask="SAIsoLockFlag" />
911986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
912986c8b3dSmrg		<field name="realMods" type="CARD8" mask="ModMask" />
913986c8b3dSmrg		<field name="group" type="INT8" />
914986c8b3dSmrg		<field name="affect" type="CARD8" mask="SAIsoLockNoAffect" />
915986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh" />
916986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow" />
917986c8b3dSmrg	</struct>
918986c8b3dSmrg
919986c8b3dSmrg	<struct name="SATerminate">
920986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
921986c8b3dSmrg		<pad bytes="7" />
922986c8b3dSmrg	</struct>
923986c8b3dSmrg
924986c8b3dSmrg	<enum name="SwitchScreenFlag">
925986c8b3dSmrg		<item name="Application"> <bit>0</bit> </item>
926986c8b3dSmrg		<item name="Absolute" >   <bit>2</bit> </item>
927986c8b3dSmrg	</enum>
928986c8b3dSmrg
929986c8b3dSmrg	<struct name="SASwitchScreen">
930986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
931986c8b3dSmrg		<field name="flags" type="CARD8" />
932986c8b3dSmrg		<field name="newScreen" type="INT8" />
933986c8b3dSmrg		<pad bytes="5" />
934986c8b3dSmrg	</struct>
935986c8b3dSmrg
936986c8b3dSmrg	<enum name="BoolCtrlsHigh">
937986c8b3dSmrg		<item name="AccessXFeedback"> <bit>0</bit> </item>
938986c8b3dSmrg		<item name="AudibleBell">     <bit>1</bit> </item>
939986c8b3dSmrg		<item name="Overlay1">        <bit>2</bit> </item>
940986c8b3dSmrg		<item name="Overlay2">        <bit>3</bit> </item>
941986c8b3dSmrg		<item name="IgnoreGroupLock"> <bit>4</bit> </item>
942986c8b3dSmrg	</enum>
943986c8b3dSmrg
944986c8b3dSmrg	<enum name="BoolCtrlsLow">
945986c8b3dSmrg		<item name="RepeatKeys">     <bit>0</bit> </item>
946986c8b3dSmrg		<item name="SlowKeys">       <bit>1</bit> </item>
947986c8b3dSmrg		<item name="BounceKeys">     <bit>2</bit> </item>
948986c8b3dSmrg		<item name="StickyKeys">     <bit>3</bit> </item>
949986c8b3dSmrg		<item name="MouseKeys">      <bit>4</bit> </item>
950986c8b3dSmrg		<item name="MouseKeysAccel"> <bit>5</bit> </item>
951986c8b3dSmrg		<item name="AccessXKeys">    <bit>6</bit> </item>
952986c8b3dSmrg		<item name="AccessXTimeout"> <bit>7</bit> </item>
953986c8b3dSmrg	</enum>
954986c8b3dSmrg
955986c8b3dSmrg	<struct name="SASetControls">
956986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
957986c8b3dSmrg		<pad bytes="3" />
958986c8b3dSmrg		<field name="boolCtrlsHigh" type="CARD8" mask="BoolCtrlsHigh" />
959986c8b3dSmrg		<field name="boolCtrlsLow"  type="CARD8" mask="BoolCtrlsLow" />
960986c8b3dSmrg		<pad bytes="2" />
961986c8b3dSmrg	</struct>
962986c8b3dSmrg
963986c8b3dSmrg	<typedef oldname="SASetControls" newname="SALockControls" />
964986c8b3dSmrg
965986c8b3dSmrg	<enum name="ActionMessageFlag">
966986c8b3dSmrg		<item name="OnPress">     <bit>0</bit> </item>
967986c8b3dSmrg		<item name="OnRelease">   <bit>1</bit> </item>
968986c8b3dSmrg		<item name="GenKeyEvent"> <bit>2</bit> </item>
969986c8b3dSmrg	</enum>
970986c8b3dSmrg
971986c8b3dSmrg	<struct name="SAActionMessage">
972986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
973986c8b3dSmrg		<field name="flags" type="CARD8" mask="ActionMessageFlag" />
974986c8b3dSmrg		<list name="message" type="CARD8">
975986c8b3dSmrg			<value>6</value>
976986c8b3dSmrg		</list>
977986c8b3dSmrg	</struct>
978986c8b3dSmrg
979986c8b3dSmrg	<struct name="SARedirectKey">
980986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
981986c8b3dSmrg		<field name="newkey" type="KEYCODE" />
982986c8b3dSmrg		<field name="mask" type="CARD8" mask="ModMask" />
983986c8b3dSmrg		<field name="realModifiers" type="CARD8" mask="ModMask" />
984986c8b3dSmrg		<field name="vmodsMaskHigh" type="CARD8" mask="VModsHigh"/>
985986c8b3dSmrg		<field name="vmodsMaskLow" type="CARD8" mask="VModsLow"/>
986986c8b3dSmrg		<field name="vmodsHigh" type="CARD8" mask="VModsHigh"/>
987986c8b3dSmrg		<field name="vmodsLow" type="CARD8" mask="VModsLow"/>
988986c8b3dSmrg	</struct>
989986c8b3dSmrg
990986c8b3dSmrg	<struct name="SADeviceBtn">
991986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
992986c8b3dSmrg		<field name="flags" type="CARD8" />
993986c8b3dSmrg		<field name="count" type="CARD8" />
994986c8b3dSmrg		<field name="button" type="CARD8" />
995986c8b3dSmrg		<field name="device" type="CARD8" />
996986c8b3dSmrg		<pad bytes="3" />
997986c8b3dSmrg	</struct>
998986c8b3dSmrg
999986c8b3dSmrg	<enum name="LockDeviceFlags">
1000986c8b3dSmrg		<item name="NoLock">   <bit>0</bit> </item>
1001986c8b3dSmrg		<item name="NoUnlock"> <bit>1</bit> </item>
1002986c8b3dSmrg	</enum>
1003986c8b3dSmrg
1004986c8b3dSmrg	<struct name="SALockDeviceBtn">
1005986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1006986c8b3dSmrg		<field name="flags" type="CARD8" mask="LockDeviceFlags" />
1007986c8b3dSmrg		<pad bytes="1" />
1008986c8b3dSmrg		<field name="button" type="CARD8" />
1009986c8b3dSmrg		<field name="device" type="CARD8" />
1010f591e195Smrg		<pad bytes="3" />
1011986c8b3dSmrg	</struct>
1012986c8b3dSmrg
1013986c8b3dSmrg	<enum name="SAValWhat">
1014986c8b3dSmrg		<item name="IgnoreVal">      <value>0</value> </item>
1015986c8b3dSmrg		<item name="SetValMin">      <value>1</value> </item>
1016986c8b3dSmrg		<item name="SetValCenter">   <value>2</value> </item>
1017986c8b3dSmrg		<item name="SetValMax">      <value>3</value> </item>
1018986c8b3dSmrg		<item name="SetValRelative"> <value>4</value> </item>
1019986c8b3dSmrg		<item name="SetValAbsolute"> <value>5</value> </item>
1020986c8b3dSmrg	</enum>
1021986c8b3dSmrg
1022986c8b3dSmrg	<struct name="SADeviceValuator">
1023986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1024986c8b3dSmrg		<field name="device" type="CARD8" />
1025986c8b3dSmrg		<field name="val1what" type="CARD8" enum="SAValWhat" />
1026986c8b3dSmrg		<field name="val1index" type="CARD8" />
1027986c8b3dSmrg		<field name="val1value" type="CARD8" />
1028986c8b3dSmrg		<field name="val2what" type="CARD8" enum="SAValWhat" />
1029986c8b3dSmrg		<field name="val2index" type="CARD8" />
1030986c8b3dSmrg		<field name="val2value" type="CARD8" />
1031986c8b3dSmrg	</struct>
1032986c8b3dSmrg
1033f591e195Smrg	<struct name="SIAction">
1034f591e195Smrg		<field name="type" type="CARD8" enum="SAType" />
1035f591e195Smrg		<list name="data" type="CARD8">
1036f591e195Smrg			<value>7</value>
1037f591e195Smrg		</list>
1038f591e195Smrg	</struct>
1039f591e195Smrg
1040f591e195Smrg	<struct name="SymInterpret">
1041f591e195Smrg		<field name="sym" type="KEYSYM" />
1042f591e195Smrg		<field name="mods" type="CARD8" mask="ModMask" />
1043f591e195Smrg		<!-- "match" may also have XkbSI_LevelOneOnly (0x80) or'd into it -->
1044f591e195Smrg		<field name="match" type="CARD8" altenum="SymInterpretMatch" />
1045f591e195Smrg		<field name="virtualMod" type="CARD8" mask="VModsLow" />
1046f591e195Smrg		<field name="flags" type="CARD8" />
1047f591e195Smrg		<field name="action" type="SIAction" />
1048f591e195Smrg	</struct>
1049f591e195Smrg
1050986c8b3dSmrg	<union name="Action">
1051986c8b3dSmrg		<field name="noaction" type="SANoAction" />
1052986c8b3dSmrg		<field name="setmods" type="SASetMods" />
1053986c8b3dSmrg		<field name="latchmods" type="SALatchMods" />
1054986c8b3dSmrg		<field name="lockmods" type="SALockMods" />
1055986c8b3dSmrg		<field name="setgroup" type="SASetGroup" />
1056986c8b3dSmrg		<field name="latchgroup" type="SALatchGroup" />
1057986c8b3dSmrg		<field name="lockgroup" type="SALockGroup" />
1058986c8b3dSmrg		<field name="moveptr" type="SAMovePtr" />
1059986c8b3dSmrg		<field name="ptrbtn" type="SAPtrBtn" />
1060986c8b3dSmrg		<field name="lockptrbtn" type="SALockPtrBtn" />
1061986c8b3dSmrg		<field name="setptrdflt" type="SASetPtrDflt" />
1062986c8b3dSmrg		<field name="isolock" type="SAIsoLock" />
1063986c8b3dSmrg		<field name="terminate" type="SATerminate" />
1064986c8b3dSmrg		<field name="switchscreen" type="SASwitchScreen" />
1065986c8b3dSmrg		<field name="setcontrols" type="SASetControls" />
1066986c8b3dSmrg		<field name="lockcontrols" type="SALockControls" />
1067986c8b3dSmrg		<field name="message" type="SAActionMessage" />
1068986c8b3dSmrg		<field name="redirect" type="SARedirectKey" />
1069986c8b3dSmrg		<field name="devbtn" type="SADeviceBtn" />
1070986c8b3dSmrg		<field name="lockdevbtn" type="SALockDeviceBtn" />
1071986c8b3dSmrg		<field name="devval" type="SADeviceValuator" />
1072986c8b3dSmrg		<field name="type" type="CARD8" enum="SAType" />
1073986c8b3dSmrg	</union>
1074986c8b3dSmrg
1075986c8b3dSmrg	<!-- Requests -->
1076986c8b3dSmrg
1077986c8b3dSmrg	<request name="UseExtension" opcode="0">
1078986c8b3dSmrg		<field name="wantedMajor" type="CARD16" />
1079986c8b3dSmrg		<field name="wantedMinor" type="CARD16" />
1080986c8b3dSmrg		<reply>
1081986c8b3dSmrg			<field name="supported" type="BOOL" />
1082986c8b3dSmrg			<field name="serverMajor" type="CARD16" />
1083986c8b3dSmrg			<field name="serverMinor" type="CARD16" />
1084986c8b3dSmrg			<pad bytes="20" />
1085986c8b3dSmrg		</reply>
1086986c8b3dSmrg	</request>
1087986c8b3dSmrg
1088986c8b3dSmrg	<request name="SelectEvents" opcode="1">
1089986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1090f591e195Smrg		<field name="affectWhich" type="CARD16" mask="EventType" />
1091f591e195Smrg		<field name="clear" type="CARD16" mask="EventType" />
1092f591e195Smrg		<field name="selectAll" type="CARD16" mask="EventType" />
1093f591e195Smrg		<field name="affectMap" type="CARD16" mask="MapPart" />
1094f591e195Smrg		<field name="map" type="CARD16" mask="MapPart" />
1095986c8b3dSmrg		<switch name="details">
1096986c8b3dSmrg			<op op="&amp;">
1097986c8b3dSmrg				<fieldref>affectWhich</fieldref>
1098986c8b3dSmrg				<op op="&amp;">
1099986c8b3dSmrg					<unop op="~"><fieldref>clear</fieldref></unop>
1100986c8b3dSmrg					<unop op="~"><fieldref>selectAll</fieldref></unop>
1101986c8b3dSmrg				</op>
1102986c8b3dSmrg			</op>
1103986c8b3dSmrg			<bitcase>
1104986c8b3dSmrg				<enumref ref="EventType">NewKeyboardNotify</enumref>
1105986c8b3dSmrg				<field name="affectNewKeyboard" type="CARD16" mask="NKNDetail" />
1106986c8b3dSmrg				<field name="newKeyboardDetails" type="CARD16" mask="NKNDetail" />
1107986c8b3dSmrg			</bitcase>
1108986c8b3dSmrg			<bitcase>
1109986c8b3dSmrg				<enumref ref="EventType">StateNotify</enumref>
1110986c8b3dSmrg				<field name="affectState" type="CARD16" mask="StatePart" />
1111986c8b3dSmrg				<field name="stateDetails" type="CARD16" mask="StatePart" />
1112986c8b3dSmrg			</bitcase>
1113986c8b3dSmrg			<bitcase>
1114986c8b3dSmrg				<enumref ref="EventType">ControlsNotify</enumref>
1115986c8b3dSmrg				<field name="affectCtrls" type="CARD32" mask="Control" />
1116986c8b3dSmrg				<field name="ctrlDetails" type="CARD32" mask="Control" />
1117986c8b3dSmrg			</bitcase>
1118986c8b3dSmrg			<bitcase>
1119986c8b3dSmrg				<enumref ref="EventType">IndicatorStateNotify</enumref>
1120986c8b3dSmrg				<field name="affectIndicatorState" type="CARD32" />
1121986c8b3dSmrg				<field name="indicatorStateDetails" type="CARD32" />
1122986c8b3dSmrg			</bitcase>
1123986c8b3dSmrg			<bitcase>
1124986c8b3dSmrg				<enumref ref="EventType">IndicatorMapNotify</enumref>
1125986c8b3dSmrg				<field name="affectIndicatorMap" type="CARD32" />
1126986c8b3dSmrg				<field name="indicatorMapDetails" type="CARD32" />
1127986c8b3dSmrg			</bitcase>
1128986c8b3dSmrg			<bitcase>
1129986c8b3dSmrg				<enumref ref="EventType">NamesNotify</enumref>
1130986c8b3dSmrg				<field name="affectNames" type="CARD16" mask="NameDetail" />
1131986c8b3dSmrg				<field name="namesDetails" type="CARD16" mask="NameDetail" />
1132986c8b3dSmrg			</bitcase>
1133986c8b3dSmrg			<bitcase>
1134986c8b3dSmrg				<enumref ref="EventType">CompatMapNotify</enumref>
1135986c8b3dSmrg				<field name="affectCompat" type="CARD8" mask="CMDetail" />
1136986c8b3dSmrg				<field name="compatDetails" type="CARD8" mask="CMDetail" />
1137986c8b3dSmrg			</bitcase>
1138986c8b3dSmrg			<bitcase>
1139986c8b3dSmrg				<enumref ref="EventType">BellNotify</enumref>
1140986c8b3dSmrg				<field name="affectBell" type="CARD8" />
1141986c8b3dSmrg				<field name="bellDetails" type="CARD8" />
1142986c8b3dSmrg			</bitcase>
1143986c8b3dSmrg			<bitcase>
1144986c8b3dSmrg				<enumref ref="EventType">ActionMessage</enumref>
1145986c8b3dSmrg				<field name="affectMsgDetails" type="CARD8" />
1146986c8b3dSmrg				<field name="msgDetails" type="CARD8" />
1147986c8b3dSmrg			</bitcase>
1148986c8b3dSmrg			<bitcase>
1149986c8b3dSmrg				<enumref ref="EventType">AccessXNotify</enumref>
1150986c8b3dSmrg				<field name="affectAccessX" type="CARD16" mask="AXNDetail" />
1151986c8b3dSmrg				<field name="accessXDetails" type="CARD16" mask="AXNDetail" />
1152986c8b3dSmrg			</bitcase>
1153986c8b3dSmrg			<bitcase>
1154986c8b3dSmrg				<enumref ref="EventType">ExtensionDeviceNotify</enumref>
1155986c8b3dSmrg				<field name="affectExtDev" type="CARD16" mask="XIFeature" />
1156986c8b3dSmrg				<field name="extdevDetails" type="CARD16" mask="XIFeature" />
1157986c8b3dSmrg			</bitcase>
1158986c8b3dSmrg		</switch>
1159986c8b3dSmrg	</request>
1160986c8b3dSmrg
1161986c8b3dSmrg	<request name="Bell" opcode="3">
1162986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1163986c8b3dSmrg		<field name="bellClass" type="BellClassSpec" />
1164986c8b3dSmrg		<field name="bellID" type="IDSpec" />
1165986c8b3dSmrg		<field name="percent" type="INT8" />
1166986c8b3dSmrg		<field name="forceSound" type="BOOL" />
1167986c8b3dSmrg		<field name="eventOnly" type="BOOL" />
1168986c8b3dSmrg		<pad bytes="1" />
1169986c8b3dSmrg		<field name="pitch" type="INT16" />
1170986c8b3dSmrg		<field name="duration" type="INT16" />
1171986c8b3dSmrg		<pad bytes="2" />
1172986c8b3dSmrg		<field name="name" type="ATOM" />
1173986c8b3dSmrg		<field name="window" type="WINDOW" />
1174986c8b3dSmrg	</request>
1175986c8b3dSmrg
1176986c8b3dSmrg	<request name="GetState" opcode="4">
1177986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1178986c8b3dSmrg		<pad bytes="2" />
1179986c8b3dSmrg		<reply>
1180986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1181986c8b3dSmrg			<field name="mods" type="CARD8" mask="ModMask" />
1182986c8b3dSmrg			<field name="baseMods" type="CARD8" mask="ModMask" />
1183986c8b3dSmrg			<field name="latchedMods" type="CARD8" mask="ModMask" />
1184986c8b3dSmrg			<field name="lockedMods" type="CARD8" mask="ModMask" />
1185986c8b3dSmrg			<field name="group" type="CARD8" enum="Group" />
1186986c8b3dSmrg			<field name="lockedGroup" type="CARD8" enum="Group" />
1187986c8b3dSmrg			<field name="baseGroup" type="INT16" />
1188986c8b3dSmrg			<field name="latchedGroup" type="INT16" />
1189986c8b3dSmrg			<field name="compatState" type="CARD8" mask="ModMask" />
1190986c8b3dSmrg			<field name="grabMods" type="CARD8" mask="ModMask" />
1191986c8b3dSmrg			<field name="compatGrabMods" type="CARD8" mask="ModMask" />
1192986c8b3dSmrg                        <field name="lookupMods" type="CARD8" mask="ModMask" />
1193986c8b3dSmrg			<field name="compatLookupMods" type="CARD8" mask="ModMask" />
1194986c8b3dSmrg			<pad bytes="1" />
1195986c8b3dSmrg			<field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
1196986c8b3dSmrg			<pad bytes="6" />
1197986c8b3dSmrg		</reply>
1198986c8b3dSmrg	</request>
1199986c8b3dSmrg
1200986c8b3dSmrg	<request name="LatchLockState" opcode="5">
1201986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1202986c8b3dSmrg		<field name="affectModLocks" type="CARD8" mask="ModMask" />
1203986c8b3dSmrg		<field name="modLocks" type="CARD8" mask="ModMask" />
1204986c8b3dSmrg		<field name="lockGroup" type="BOOL" />
1205986c8b3dSmrg		<field name="groupLock" type="CARD8" enum="Group" />
1206986c8b3dSmrg		<field name="affectModLatches" type="CARD8" mask="ModMask" />
1207986c8b3dSmrg		<pad bytes="1" />
1208986c8b3dSmrg		<field name="latchGroup" type="BOOL" />
1209986c8b3dSmrg		<field name="groupLatch" type="CARD16" />
1210986c8b3dSmrg	</request>
1211986c8b3dSmrg
1212986c8b3dSmrg	<request name="GetControls" opcode="6">
1213986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1214986c8b3dSmrg		<pad bytes="2" />
1215986c8b3dSmrg		<reply>
1216986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1217986c8b3dSmrg			<field name="mouseKeysDfltBtn" type="CARD8" />
1218986c8b3dSmrg			<field name="numGroups" type="CARD8" />
1219986c8b3dSmrg			<field name="groupsWrap" type="CARD8" />
1220986c8b3dSmrg			<field name="internalModsMask" type="CARD8" mask="ModMask" />
1221986c8b3dSmrg			<field name="ignoreLockModsMask" type="CARD8" mask="ModMask" />
1222986c8b3dSmrg			<field name="internalModsRealMods" type="CARD8" mask="ModMask" />
1223986c8b3dSmrg			<field name="ignoreLockModsRealMods" type="CARD8" mask="ModMask" />
1224986c8b3dSmrg			<pad bytes="1" />
1225986c8b3dSmrg			<field name="internalModsVmods" type="CARD16" mask="VMod" />
1226986c8b3dSmrg			<field name="ignoreLockModsVmods" type="CARD16" mask="VMod" />
1227986c8b3dSmrg			<field name="repeatDelay" type="CARD16" />
1228986c8b3dSmrg			<field name="repeatInterval" type="CARD16" />
1229986c8b3dSmrg			<field name="slowKeysDelay" type="CARD16" />
1230986c8b3dSmrg			<field name="debounceDelay" type="CARD16" />
1231986c8b3dSmrg			<field name="mouseKeysDelay" type="CARD16" />
1232986c8b3dSmrg			<field name="mouseKeysInterval" type="CARD16" />
1233986c8b3dSmrg			<field name="mouseKeysTimeToMax" type="CARD16" />
1234986c8b3dSmrg			<field name="mouseKeysMaxSpeed" type="CARD16" />
1235986c8b3dSmrg			<field name="mouseKeysCurve" type="INT16" />
1236f591e195Smrg			<field name="accessXOption" type="CARD16" mask="AXOption" />
1237986c8b3dSmrg			<field name="accessXTimeout" type="CARD16" />
1238f591e195Smrg			<field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1239f591e195Smrg			<field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1240986c8b3dSmrg			<pad bytes="2" />
1241f591e195Smrg			<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1242f591e195Smrg			<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1243f591e195Smrg			<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1244986c8b3dSmrg			<list name="perKeyRepeat" type="CARD8">
1245986c8b3dSmrg				<value>32</value>
1246986c8b3dSmrg			</list>
1247986c8b3dSmrg		</reply>
1248986c8b3dSmrg	</request>
1249986c8b3dSmrg
1250986c8b3dSmrg	<request name="SetControls" opcode="7">
1251986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1252986c8b3dSmrg		<field name="affectInternalRealMods" type="CARD8" mask="ModMask" />
1253986c8b3dSmrg		<field name="internalRealMods" type="CARD8" mask="ModMask" />
1254986c8b3dSmrg		<field name="affectIgnoreLockRealMods" type="CARD8" mask="ModMask" />
1255986c8b3dSmrg		<field name="ignoreLockRealMods" type="CARD8" mask="ModMask" />
1256986c8b3dSmrg		<field name="affectInternalVirtualMods" type="CARD16" mask="VMod" />
1257986c8b3dSmrg		<field name="internalVirtualMods" type="CARD16" mask="VMod" />
1258986c8b3dSmrg		<field name="affectIgnoreLockVirtualMods" type="CARD16" mask="VMod" />
1259986c8b3dSmrg		<field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
1260986c8b3dSmrg		<field name="mouseKeysDfltBtn" type="CARD8" />
1261986c8b3dSmrg		<field name="groupsWrap" type="CARD8" />
1262f591e195Smrg		<field name="accessXOptions" type="CARD16" mask="AXOption" />
1263986c8b3dSmrg		<pad bytes="2" />
1264f591e195Smrg		<field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
1265f591e195Smrg		<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
1266986c8b3dSmrg		<field name="changeControls" type="CARD32" mask="Control" />
1267986c8b3dSmrg		<field name="repeatDelay" type="CARD16" />
1268986c8b3dSmrg		<field name="repeatInterval" type="CARD16" />
1269986c8b3dSmrg		<field name="slowKeysDelay" type="CARD16" />
1270986c8b3dSmrg		<field name="debounceDelay" type="CARD16" />
1271986c8b3dSmrg		<field name="mouseKeysDelay" type="CARD16" />
1272986c8b3dSmrg		<field name="mouseKeysInterval" type="CARD16" />
1273986c8b3dSmrg		<field name="mouseKeysTimeToMax" type="CARD16" />
1274986c8b3dSmrg		<field name="mouseKeysMaxSpeed" type="CARD16" />
1275986c8b3dSmrg		<field name="mouseKeysCurve" type="INT16" />
1276986c8b3dSmrg		<field name="accessXTimeout" type="CARD16" />
1277f591e195Smrg		<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
1278f591e195Smrg		<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
1279f591e195Smrg		<field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
1280f591e195Smrg		<field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
1281986c8b3dSmrg		<list name="perKeyRepeat" type="CARD8">
1282986c8b3dSmrg			<value>32</value>
1283986c8b3dSmrg		</list>
1284986c8b3dSmrg	</request>
1285986c8b3dSmrg
1286986c8b3dSmrg	<request name="GetMap" opcode="8">
1287986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1288f591e195Smrg		<field name="full" type="CARD16" mask="MapPart" />
1289f591e195Smrg		<field name="partial" type="CARD16" mask="MapPart" />
1290986c8b3dSmrg		<field name="firstType" type="CARD8" />
1291986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1292986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
1293986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
1294986c8b3dSmrg		<field name="firstKeyAction" type="KEYCODE" />
1295986c8b3dSmrg		<field name="nKeyActions" type="CARD8" />
1296986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
1297986c8b3dSmrg		<field name="nKeyBehaviors" type="CARD8" />
1298986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1299986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
1300986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
1301986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
1302986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
1303986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
1304986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
1305986c8b3dSmrg		<pad bytes="2" />
1306986c8b3dSmrg		<reply>
1307986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1308986c8b3dSmrg			<pad bytes="2" />
1309986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
1310986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
1311f591e195Smrg			<field name="present" type="CARD16" mask="MapPart" />
1312986c8b3dSmrg			<field name="firstType" type="CARD8" />
1313986c8b3dSmrg			<field name="nTypes" type="CARD8" />
1314986c8b3dSmrg			<field name="totalTypes" type="CARD8" />
1315986c8b3dSmrg			<field name="firstKeySym" type="KEYCODE" />
1316986c8b3dSmrg			<field name="totalSyms" type="CARD16" />
1317986c8b3dSmrg			<field name="nKeySyms" type="CARD8" />
1318986c8b3dSmrg			<field name="firstKeyAction" type="KEYCODE" />
1319986c8b3dSmrg			<field name="totalActions" type="CARD16" />
1320986c8b3dSmrg			<field name="nKeyActions" type="CARD8" />
1321986c8b3dSmrg			<field name="firstKeyBehavior" type="KEYCODE" />
1322986c8b3dSmrg			<field name="nKeyBehaviors" type="CARD8" />
1323986c8b3dSmrg			<field name="totalKeyBehaviors" type="CARD8" />
1324986c8b3dSmrg			<field name="firstKeyExplicit" type="KEYCODE" />
1325986c8b3dSmrg			<field name="nKeyExplicit" type="CARD8" />
1326986c8b3dSmrg			<field name="totalKeyExplicit" type="CARD8" />
1327986c8b3dSmrg			<field name="firstModMapKey" type="KEYCODE" />
1328986c8b3dSmrg			<field name="nModMapKeys" type="CARD8" />
1329986c8b3dSmrg			<field name="totalModMapKeys" type="CARD8" />
1330986c8b3dSmrg			<field name="firstVModMapKey" type="KEYCODE" />
1331986c8b3dSmrg			<field name="nVModMapKeys" type="CARD8" />
1332986c8b3dSmrg			<field name="totalVModMapKeys" type="CARD8" />
1333986c8b3dSmrg			<pad bytes="1" />
1334986c8b3dSmrg			<field name="virtualMods" type="CARD16" mask="VMod" />
1335986c8b3dSmrg			<switch name="map">
1336986c8b3dSmrg				<fieldref>present</fieldref>
1337986c8b3dSmrg				<bitcase>
1338986c8b3dSmrg					<enumref ref="MapPart">KeyTypes</enumref>
1339986c8b3dSmrg					<list name="types_rtrn" type="KeyType">
1340986c8b3dSmrg						<fieldref>nTypes</fieldref>
1341986c8b3dSmrg					</list>
1342986c8b3dSmrg				</bitcase>
1343986c8b3dSmrg				<bitcase>
1344986c8b3dSmrg					<enumref ref="MapPart">KeySyms</enumref>
1345986c8b3dSmrg					<list name="syms_rtrn" type="KeySymMap">
1346986c8b3dSmrg						<fieldref>nKeySyms</fieldref>
1347986c8b3dSmrg					</list>
1348986c8b3dSmrg				</bitcase>
1349986c8b3dSmrg				<bitcase>
1350986c8b3dSmrg					<enumref ref="MapPart">KeyActions</enumref>
1351986c8b3dSmrg					<list name="acts_rtrn_count" type="CARD8">
1352986c8b3dSmrg						<fieldref>nKeyActions</fieldref>
1353986c8b3dSmrg					</list>
1354f591e195Smrg					<list type="CARD8" name="alignment_pad">
1355f591e195Smrg					    <op op="-">
1356f591e195Smrg						<op op="&amp;">
1357f591e195Smrg						    <op op="+">
1358f591e195Smrg							<fieldref>nKeyActions</fieldref>
1359f591e195Smrg							<value>3</value>
1360f591e195Smrg						    </op>
1361f591e195Smrg						    <unop op="~">
1362f591e195Smrg							<value>3</value>
1363f591e195Smrg						    </unop>
1364f591e195Smrg						</op>
1365f591e195Smrg						<fieldref>nKeyActions</fieldref>
1366f591e195Smrg					    </op>
1367f591e195Smrg					</list>
1368986c8b3dSmrg					<list name="acts_rtrn_acts" type="Action">
1369986c8b3dSmrg						<fieldref>totalActions</fieldref>
1370986c8b3dSmrg					</list>
1371986c8b3dSmrg				</bitcase>
1372986c8b3dSmrg				<bitcase>
1373986c8b3dSmrg					<enumref ref="MapPart">KeyBehaviors</enumref>
1374986c8b3dSmrg					<list name="behaviors_rtrn" type="SetBehavior">
1375986c8b3dSmrg						<fieldref>totalKeyBehaviors</fieldref>
1376986c8b3dSmrg					</list>
1377986c8b3dSmrg				</bitcase>
1378986c8b3dSmrg				<bitcase>
1379986c8b3dSmrg					<enumref ref="MapPart">VirtualMods</enumref>
1380986c8b3dSmrg					<list name="vmods_rtrn" type="CARD8" mask="ModMask">
1381f591e195Smrg						<popcount><fieldref>virtualMods</fieldref></popcount>
1382f591e195Smrg					</list>
1383f591e195Smrg					<list type="CARD8" name="alignment_pad2">
1384f591e195Smrg					    <op op="-">
1385f591e195Smrg						<op op="&amp;">
1386f591e195Smrg						    <op op="+">
1387f591e195Smrg							<popcount><fieldref>virtualMods</fieldref></popcount>
1388f591e195Smrg							<value>3</value>
1389f591e195Smrg						    </op>
1390f591e195Smrg						    <unop op="~">
1391f591e195Smrg							<value>3</value>
1392f591e195Smrg						    </unop>
1393f591e195Smrg						</op>
1394f591e195Smrg						<popcount><fieldref>virtualMods</fieldref></popcount>
1395f591e195Smrg					    </op>
1396986c8b3dSmrg					</list>
1397986c8b3dSmrg				</bitcase>
1398986c8b3dSmrg				<bitcase>
1399986c8b3dSmrg					<enumref ref="MapPart">ExplicitComponents</enumref>
1400986c8b3dSmrg					<list name="explicit_rtrn" type="SetExplicit">
1401986c8b3dSmrg						<fieldref>totalKeyExplicit</fieldref>
1402986c8b3dSmrg					</list>
1403f591e195Smrg					<list type="CARD16" name="alignment_pad3">
1404f591e195Smrg					    <op op="-">
1405f591e195Smrg						<op op="&amp;">
1406f591e195Smrg						    <op op="+">
1407f591e195Smrg							<fieldref>totalKeyExplicit</fieldref>
1408f591e195Smrg							<value>1</value>
1409f591e195Smrg						    </op>
1410f591e195Smrg						    <unop op="~">
1411f591e195Smrg							<value>1</value>
1412f591e195Smrg						    </unop>
1413f591e195Smrg						</op>
1414f591e195Smrg						<fieldref>totalKeyExplicit</fieldref>
1415f591e195Smrg					    </op>
1416f591e195Smrg					</list>
1417986c8b3dSmrg				</bitcase>
1418986c8b3dSmrg				<bitcase>
1419986c8b3dSmrg					<enumref ref="MapPart">ModifierMap</enumref>
1420986c8b3dSmrg					<list name="modmap_rtrn" type="KeyModMap">
1421986c8b3dSmrg						<fieldref>totalModMapKeys</fieldref>
1422986c8b3dSmrg					</list>
1423f591e195Smrg					<list type="CARD16" name="alignment_pad4">
1424f591e195Smrg					    <op op="-">
1425f591e195Smrg						<op op="&amp;">
1426f591e195Smrg						    <op op="+">
1427f591e195Smrg							<fieldref>totalModMapKeys</fieldref>
1428f591e195Smrg							<value>1</value>
1429f591e195Smrg						    </op>
1430f591e195Smrg						    <unop op="~">
1431f591e195Smrg							<value>1</value>
1432f591e195Smrg						    </unop>
1433f591e195Smrg						</op>
1434f591e195Smrg						<fieldref>totalModMapKeys</fieldref>
1435f591e195Smrg					    </op>
1436f591e195Smrg					</list>
1437986c8b3dSmrg				</bitcase>
1438986c8b3dSmrg				<bitcase>
1439986c8b3dSmrg					<enumref ref="MapPart">VirtualModMap</enumref>
1440986c8b3dSmrg					<list name="vmodmap_rtrn" type="KeyVModMap">
1441986c8b3dSmrg						<fieldref>totalVModMapKeys</fieldref>
1442986c8b3dSmrg					</list>
1443986c8b3dSmrg				</bitcase>
1444986c8b3dSmrg			</switch>
1445986c8b3dSmrg		</reply>
1446986c8b3dSmrg	</request>
1447986c8b3dSmrg
1448986c8b3dSmrg	<request name="SetMap" opcode="9">
1449986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1450f591e195Smrg		<field name="present" type="CARD16" mask="MapPart" />
1451986c8b3dSmrg		<field name="flags" type="CARD16" mask="SetMapFlags" />
1452986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
1453986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
1454986c8b3dSmrg		<field name="firstType" type="CARD8" />
1455986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1456986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
1457986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
1458986c8b3dSmrg		<field name="totalSyms" type="CARD16" />
1459986c8b3dSmrg		<field name="firstKeyAction" type="KEYCODE" />
1460986c8b3dSmrg		<field name="nKeyActions" type="CARD8" />
1461986c8b3dSmrg		<field name="totalActions" type="CARD16" />
1462986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
1463986c8b3dSmrg		<field name="nKeyBehaviors" type="CARD8" />
1464986c8b3dSmrg		<field name="totalKeyBehaviors" type="CARD8" />
1465986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
1466986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
1467986c8b3dSmrg		<field name="totalKeyExplicit" type="CARD8" />
1468986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
1469986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
1470986c8b3dSmrg		<field name="totalModMapKeys" type="CARD8" />
1471986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
1472986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
1473986c8b3dSmrg		<field name="totalVModMapKeys" type="CARD8" />
1474986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1475986c8b3dSmrg		<switch name="values">
1476986c8b3dSmrg			<fieldref>present</fieldref>
1477986c8b3dSmrg			<bitcase>
1478986c8b3dSmrg				<enumref ref="MapPart">KeyTypes</enumref>
1479986c8b3dSmrg				<list name="types" type="SetKeyType">
1480986c8b3dSmrg					<fieldref>nTypes</fieldref>
1481986c8b3dSmrg				</list>
1482986c8b3dSmrg			</bitcase>
1483986c8b3dSmrg			<bitcase>
1484986c8b3dSmrg				<enumref ref="MapPart">KeySyms</enumref>
1485986c8b3dSmrg				<list name="syms" type="KeySymMap">
1486986c8b3dSmrg					<fieldref>nKeySyms</fieldref>
1487986c8b3dSmrg				</list>
1488986c8b3dSmrg			</bitcase>
1489986c8b3dSmrg			<bitcase>
1490986c8b3dSmrg				<enumref ref="MapPart">KeyActions</enumref>
1491986c8b3dSmrg				<list name="actionsCount" type="CARD8">
1492986c8b3dSmrg					<fieldref>nKeyActions</fieldref>
1493986c8b3dSmrg				</list>
1494986c8b3dSmrg				<list name="actions" type="Action">
1495986c8b3dSmrg					<fieldref>totalActions</fieldref>
1496986c8b3dSmrg				</list>
1497986c8b3dSmrg			</bitcase>
1498986c8b3dSmrg			<bitcase>
1499986c8b3dSmrg				<enumref ref="MapPart">KeyBehaviors</enumref>
1500986c8b3dSmrg				<list name="behaviors" type="SetBehavior">
1501986c8b3dSmrg					<fieldref>totalKeyBehaviors</fieldref>
1502986c8b3dSmrg				</list>
1503986c8b3dSmrg			</bitcase>
1504986c8b3dSmrg			<bitcase>
1505986c8b3dSmrg				<enumref ref="MapPart">VirtualMods</enumref>
1506986c8b3dSmrg				<list name="vmods" type="CARD8">
1507f591e195Smrg					<popcount><fieldref>virtualMods</fieldref></popcount>
1508986c8b3dSmrg				</list>
1509986c8b3dSmrg			</bitcase>
1510986c8b3dSmrg			<bitcase>
1511986c8b3dSmrg				<enumref ref="MapPart">ExplicitComponents</enumref>
1512986c8b3dSmrg				<list name="explicit" type="SetExplicit">
1513986c8b3dSmrg					<fieldref>totalKeyExplicit</fieldref>
1514986c8b3dSmrg				</list>
1515986c8b3dSmrg			</bitcase>
1516986c8b3dSmrg			<bitcase>
1517986c8b3dSmrg				<enumref ref="MapPart">ModifierMap</enumref>
1518986c8b3dSmrg				<list name="modmap" type="KeyModMap">
1519986c8b3dSmrg					<fieldref>totalModMapKeys</fieldref>
1520986c8b3dSmrg				</list>
1521986c8b3dSmrg			</bitcase>
1522986c8b3dSmrg			<bitcase>
1523986c8b3dSmrg				<enumref ref="MapPart">VirtualModMap</enumref>
1524986c8b3dSmrg				<list name="vmodmap" type="KeyVModMap">
1525986c8b3dSmrg					<fieldref>totalVModMapKeys</fieldref>
1526986c8b3dSmrg				</list>
1527986c8b3dSmrg			</bitcase>
1528986c8b3dSmrg		</switch>
1529986c8b3dSmrg	</request>
1530986c8b3dSmrg
1531986c8b3dSmrg	<request name="GetCompatMap" opcode="10">
1532986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1533986c8b3dSmrg		<field name="groups" type="CARD8" mask="SetOfGroup" />
1534986c8b3dSmrg		<field name="getAllSI" type="BOOL" />
1535986c8b3dSmrg		<field name="firstSI" type="CARD16" />
1536986c8b3dSmrg		<field name="nSI" type="CARD16" />
1537986c8b3dSmrg		<reply>
1538986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1539986c8b3dSmrg			<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
1540986c8b3dSmrg			<pad bytes="1" />
1541986c8b3dSmrg			<field name="firstSIRtrn" type="CARD16" />
1542986c8b3dSmrg			<field name="nSIRtrn" type="CARD16" />
1543986c8b3dSmrg			<field name="nTotalSI" type="CARD16" />
1544986c8b3dSmrg			<pad bytes="16" />
1545f591e195Smrg			<list name="si_rtrn" type="SymInterpret">
1546f591e195Smrg				<fieldref>nSIRtrn</fieldref>
1547986c8b3dSmrg			</list>
1548986c8b3dSmrg			<list name="group_rtrn" type="ModDef">
1549986c8b3dSmrg				<popcount>
1550986c8b3dSmrg					<fieldref>groupsRtrn</fieldref>
1551986c8b3dSmrg				</popcount>
1552986c8b3dSmrg			</list>
1553986c8b3dSmrg		</reply>
1554986c8b3dSmrg	</request>
1555986c8b3dSmrg
1556986c8b3dSmrg	<request name="SetCompatMap" opcode="11">
1557986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1558986c8b3dSmrg		<pad bytes="1" />
1559986c8b3dSmrg		<field name="recomputeActions" type="BOOL" />
1560986c8b3dSmrg		<field name="truncateSI" type="BOOL" />
1561986c8b3dSmrg		<field name="groups" type="CARD8" mask="SetOfGroup" />
1562986c8b3dSmrg		<field name="firstSI" type="CARD16" />
1563986c8b3dSmrg		<field name="nSI" type="CARD16" />
1564986c8b3dSmrg		<pad bytes="2"/>
1565f591e195Smrg		<list name="si" type="SymInterpret">
1566f591e195Smrg			<fieldref>nSI</fieldref>
1567986c8b3dSmrg		</list>
1568986c8b3dSmrg		<list name="groupMaps" type="ModDef">
1569986c8b3dSmrg			<popcount>
1570986c8b3dSmrg				<fieldref>groups</fieldref>
1571986c8b3dSmrg			</popcount>
1572986c8b3dSmrg		</list>
1573986c8b3dSmrg	</request>
1574986c8b3dSmrg
1575986c8b3dSmrg	<request name="GetIndicatorState" opcode="12">
1576986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1577986c8b3dSmrg		<pad bytes="2" />
1578986c8b3dSmrg		<reply>
1579986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1580986c8b3dSmrg			<field name="state" type="CARD32" />
1581986c8b3dSmrg			<pad bytes="20" />
1582986c8b3dSmrg		</reply>
1583986c8b3dSmrg	</request>
1584986c8b3dSmrg
1585986c8b3dSmrg	<request name="GetIndicatorMap" opcode="13">
1586986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1587986c8b3dSmrg		<pad bytes="2" />
1588986c8b3dSmrg		<field name="which" type="CARD32" />
1589986c8b3dSmrg		<reply>
1590986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1591986c8b3dSmrg			<field name="which" type="CARD32" />
1592986c8b3dSmrg			<field name="realIndicators" type="CARD32" />
1593986c8b3dSmrg			<field name="nIndicators" type="CARD8" />
1594986c8b3dSmrg			<pad bytes="15" />
1595986c8b3dSmrg			<list name="maps" type="IndicatorMap">
1596f591e195Smrg				<popcount><fieldref>which</fieldref></popcount>
1597986c8b3dSmrg			</list>
1598986c8b3dSmrg		</reply>
1599986c8b3dSmrg	</request>
1600986c8b3dSmrg
1601986c8b3dSmrg	<request name="SetIndicatorMap" opcode="14">
1602986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1603986c8b3dSmrg		<pad bytes="2" />
1604986c8b3dSmrg		<field name="which" type="CARD32" />
1605986c8b3dSmrg		<list name="maps" type="IndicatorMap">
1606986c8b3dSmrg			<popcount>
1607986c8b3dSmrg				<fieldref>which</fieldref>
1608986c8b3dSmrg			</popcount>
1609986c8b3dSmrg		</list>
1610986c8b3dSmrg	</request>
1611986c8b3dSmrg
1612986c8b3dSmrg	<request name="GetNamedIndicator" opcode="15">
1613986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1614986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
1615986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
1616986c8b3dSmrg		<pad bytes="2" />
1617986c8b3dSmrg		<field name="indicator" type="ATOM" />
1618986c8b3dSmrg		<reply>
1619986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1620986c8b3dSmrg			<field name="indicator" type="ATOM" />
1621986c8b3dSmrg			<field name="found" type="BOOL" />
1622986c8b3dSmrg			<field name="on" type="BOOL" />
1623986c8b3dSmrg			<field name="realIndicator" type="BOOL" />
1624986c8b3dSmrg			<field name="ndx" type="CARD8" />
1625986c8b3dSmrg			<field name="map_flags" type="CARD8" mask="IMFlag" />
1626986c8b3dSmrg			<field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1627986c8b3dSmrg			<field name="map_groups" type="CARD8" mask="SetOfGroups" />
1628986c8b3dSmrg			<field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1629986c8b3dSmrg			<field name="map_mods" type="CARD8" mask="ModMask" />
1630986c8b3dSmrg			<field name="map_realMods" type="CARD8" mask="ModMask" />
1631986c8b3dSmrg			<field name="map_vmod" type="CARD16" mask="VMod" />
1632986c8b3dSmrg			<field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1633f591e195Smrg			<field name="supported" type="BOOL" />
1634986c8b3dSmrg			<pad bytes="3" />
1635986c8b3dSmrg		</reply>
1636986c8b3dSmrg	</request>
1637986c8b3dSmrg
1638986c8b3dSmrg	<request name="SetNamedIndicator" opcode="16" >
1639986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1640986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
1641986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
1642986c8b3dSmrg		<pad bytes="2" />
1643986c8b3dSmrg		<field name="indicator" type="ATOM" />
1644986c8b3dSmrg		<field name="setState" type="BOOL" />
1645986c8b3dSmrg		<field name="on" type="BOOL" />
1646986c8b3dSmrg		<field name="setMap" type="BOOL" />
1647986c8b3dSmrg		<field name="createMap" type="BOOL" />
1648986c8b3dSmrg		<pad bytes="1" />
1649986c8b3dSmrg		<field name="map_flags" type="CARD8" mask="IMFlag" />
1650986c8b3dSmrg		<field name="map_whichGroups" type="CARD8" mask="IMGroupsWhich" />
1651986c8b3dSmrg		<field name="map_groups" type="CARD8" mask="SetOfGroups" />
1652986c8b3dSmrg		<field name="map_whichMods" type="CARD8" mask="IMModsWhich" />
1653986c8b3dSmrg		<field name="map_realMods" type="CARD8" mask="ModMask" />
1654986c8b3dSmrg		<field name="map_vmods" type="CARD16" mask="VMod" />
1655986c8b3dSmrg		<field name="map_ctrls" type="CARD32" mask="BoolCtrl" />
1656986c8b3dSmrg	</request>
1657986c8b3dSmrg
1658986c8b3dSmrg	<request name="GetNames" opcode="17">
1659986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1660986c8b3dSmrg		<pad bytes="2" />
1661986c8b3dSmrg		<field name="which" type="CARD32" mask="NameDetail" />
1662986c8b3dSmrg		<reply>
1663986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1664986c8b3dSmrg			<field name="which" type="CARD32" mask="NameDetail" />
1665986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
1666986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
1667986c8b3dSmrg			<field name="nTypes" type="CARD8" />
1668986c8b3dSmrg			<field name="groupNames" type="CARD8" mask="SetOfGroup" />
1669986c8b3dSmrg			<field name="virtualMods" type="CARD16" mask="VMod" />
1670986c8b3dSmrg			<field name="firstKey" type="KEYCODE" />
1671986c8b3dSmrg			<field name="nKeys" type="CARD8" />
1672986c8b3dSmrg			<field name="indicators" type="CARD32" />
1673986c8b3dSmrg			<field name="nRadioGroups" type="CARD8" />
1674986c8b3dSmrg			<field name="nKeyAliases" type="CARD8" />
1675986c8b3dSmrg			<field name="nKTLevels" type="CARD16" />
1676986c8b3dSmrg			<pad bytes="4" />
1677986c8b3dSmrg			<switch name="valueList">
1678986c8b3dSmrg				<fieldref>which</fieldref>
1679986c8b3dSmrg				<bitcase>
1680986c8b3dSmrg					<enumref ref="NameDetail">Keycodes</enumref>
1681986c8b3dSmrg					<field name="keycodesName" type="ATOM" />
1682986c8b3dSmrg				</bitcase>
1683986c8b3dSmrg				<bitcase>
1684986c8b3dSmrg					<enumref ref="NameDetail">Geometry</enumref>
1685986c8b3dSmrg					<field name="geometryName" type="ATOM" />
1686986c8b3dSmrg				</bitcase>
1687986c8b3dSmrg				<bitcase>
1688986c8b3dSmrg					<enumref ref="NameDetail">Symbols</enumref>
1689986c8b3dSmrg					<field name="symbolsName" type="ATOM" />
1690986c8b3dSmrg				</bitcase>
1691986c8b3dSmrg				<bitcase>
1692986c8b3dSmrg					<enumref ref="NameDetail">PhysSymbols</enumref>
1693986c8b3dSmrg					<field name="physSymbolsName" type="ATOM" />
1694986c8b3dSmrg				</bitcase>
1695986c8b3dSmrg				<bitcase>
1696986c8b3dSmrg					<enumref ref="NameDetail">Types</enumref>
1697986c8b3dSmrg					<field name="typesName" type="ATOM" />
1698986c8b3dSmrg				</bitcase>
1699986c8b3dSmrg				<bitcase>
1700986c8b3dSmrg					<enumref ref="NameDetail">Compat</enumref>
1701986c8b3dSmrg					<field name="compatName" type="ATOM" />
1702986c8b3dSmrg				</bitcase>
1703986c8b3dSmrg				<bitcase>
1704986c8b3dSmrg					<enumref ref="NameDetail">KeyTypeNames</enumref>
1705986c8b3dSmrg					<list name="typeNames" type="ATOM">
1706986c8b3dSmrg						<fieldref>nTypes</fieldref>
1707986c8b3dSmrg					</list>
1708986c8b3dSmrg				</bitcase>
1709986c8b3dSmrg				<bitcase>
1710986c8b3dSmrg					<enumref ref="NameDetail">KTLevelNames</enumref>
1711986c8b3dSmrg					<list name="nLevelsPerType" type="CARD8">
1712986c8b3dSmrg					  <!-- Xlib uses NTypes here - 
1713986c8b3dSmrg					       the spec says nKTLevels is correct, but
1714986c8b3dSmrg					       it does not work in reality
1715986c8b3dSmrg					       <fieldref>nKTLevels</fieldref> -->
1716986c8b3dSmrg					        <fieldref>nTypes</fieldref>
1717986c8b3dSmrg					</list>
1718f591e195Smrg					<list type="CARD8" name="alignment_pad">
1719f591e195Smrg					    <op op="-">
1720f591e195Smrg						<op op="&amp;">
1721f591e195Smrg						    <op op="+">
1722f591e195Smrg							<fieldref>nTypes</fieldref>
1723f591e195Smrg							<value>3</value>
1724f591e195Smrg						    </op>
1725f591e195Smrg						    <unop op="~">
1726f591e195Smrg							<value>3</value>
1727f591e195Smrg						    </unop>
1728f591e195Smrg						</op>
1729f591e195Smrg						<fieldref>nTypes</fieldref>
1730f591e195Smrg					    </op>
1731f591e195Smrg					</list>
1732986c8b3dSmrg					<list name="ktLevelNames" type="ATOM">
1733986c8b3dSmrg						<sumof ref="nLevelsPerType" />
1734986c8b3dSmrg					</list>
1735986c8b3dSmrg				</bitcase>
1736986c8b3dSmrg				<bitcase>
1737986c8b3dSmrg					<enumref ref="NameDetail">IndicatorNames</enumref>
1738986c8b3dSmrg					<list name="indicatorNames" type="ATOM">
1739986c8b3dSmrg						<popcount>
1740986c8b3dSmrg							<fieldref>indicators</fieldref>
1741986c8b3dSmrg						</popcount>
1742986c8b3dSmrg					</list>
1743986c8b3dSmrg				</bitcase>
1744986c8b3dSmrg				<bitcase>
1745986c8b3dSmrg					<enumref ref="NameDetail">VirtualModNames</enumref>
1746986c8b3dSmrg					<list name="virtualModNames" type="ATOM">
1747986c8b3dSmrg						<popcount>
1748986c8b3dSmrg							<fieldref>virtualMods</fieldref>
1749986c8b3dSmrg						</popcount>
1750986c8b3dSmrg					</list>
1751986c8b3dSmrg				</bitcase>
1752986c8b3dSmrg				<bitcase>
1753986c8b3dSmrg					<enumref ref="NameDetail">GroupNames</enumref>
1754986c8b3dSmrg					<list name="groups" type="ATOM">
1755986c8b3dSmrg						<popcount>
1756986c8b3dSmrg							<fieldref>groupNames</fieldref>
1757986c8b3dSmrg						</popcount>
1758986c8b3dSmrg					</list>
1759986c8b3dSmrg				</bitcase>
1760986c8b3dSmrg				<bitcase>
1761986c8b3dSmrg					<enumref ref="NameDetail">KeyNames</enumref>
1762986c8b3dSmrg					<list name="keyNames" type="KeyName">
1763986c8b3dSmrg						<fieldref>nKeys</fieldref>
1764986c8b3dSmrg					</list>
1765986c8b3dSmrg				</bitcase>
1766986c8b3dSmrg				<bitcase>
1767986c8b3dSmrg					<enumref ref="NameDetail">KeyAliases</enumref>
1768986c8b3dSmrg					<list name="keyAliases" type="KeyAlias">
1769986c8b3dSmrg						<fieldref>nKeyAliases</fieldref>
1770986c8b3dSmrg					</list>
1771986c8b3dSmrg				</bitcase>
1772986c8b3dSmrg				<bitcase>
1773986c8b3dSmrg					<enumref ref="NameDetail">RGNames</enumref>
1774986c8b3dSmrg					<list name="radioGroupNames" type="ATOM">
1775986c8b3dSmrg						<fieldref>nRadioGroups</fieldref>
1776986c8b3dSmrg					</list>
1777986c8b3dSmrg				</bitcase>
1778986c8b3dSmrg			</switch>
1779986c8b3dSmrg		</reply>
1780986c8b3dSmrg	</request>
1781986c8b3dSmrg
1782986c8b3dSmrg	<request name="SetNames" opcode="18">
1783986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1784986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
1785986c8b3dSmrg		<field name="which" type="CARD32" mask="NameDetail" />
1786986c8b3dSmrg		<field name="firstType" type="CARD8" />
1787986c8b3dSmrg		<field name="nTypes" type="CARD8" />
1788986c8b3dSmrg		<field name="firstKTLevelt" type="CARD8" />
1789986c8b3dSmrg		<field name="nKTLevels" type="CARD8" />
1790986c8b3dSmrg		<field name="indicators" type="CARD32" />
1791986c8b3dSmrg		<field name="groupNames" type="CARD8" mask="SetOfGroup" />
1792986c8b3dSmrg		<field name="nRadioGroups" type="CARD8" />
1793986c8b3dSmrg		<field name="firstKey" type="KEYCODE" />
1794986c8b3dSmrg		<field name="nKeys" type="CARD8" />
1795986c8b3dSmrg		<field name="nKeyAliases" type="CARD8"/>
1796986c8b3dSmrg		<pad bytes="1" />
1797986c8b3dSmrg		<field name="totalKTLevelNames" type="CARD16" />
1798986c8b3dSmrg		<switch name="values">
1799986c8b3dSmrg			<fieldref>which</fieldref>
1800986c8b3dSmrg			<bitcase>
1801986c8b3dSmrg				<enumref ref="NameDetail">Keycodes</enumref>
1802986c8b3dSmrg				<field name="keycodesName" type="ATOM" />
1803986c8b3dSmrg			</bitcase>
1804986c8b3dSmrg			<bitcase>
1805986c8b3dSmrg				<enumref ref="NameDetail">Geometry</enumref>
1806986c8b3dSmrg				<field name="geometryName" type="ATOM" />
1807986c8b3dSmrg			</bitcase>
1808986c8b3dSmrg			<bitcase>
1809986c8b3dSmrg				<enumref ref="NameDetail">Symbols</enumref>
1810986c8b3dSmrg				<field name="symbolsName" type="ATOM" />
1811986c8b3dSmrg			</bitcase>
1812986c8b3dSmrg			<bitcase>
1813986c8b3dSmrg				<enumref ref="NameDetail">PhysSymbols</enumref>
1814986c8b3dSmrg				<field name="physSymbolsName" type="ATOM" />
1815986c8b3dSmrg			</bitcase>
1816986c8b3dSmrg			<bitcase>
1817986c8b3dSmrg				<enumref ref="NameDetail">Types</enumref>
1818986c8b3dSmrg				<field name="typesName" type="ATOM" />
1819986c8b3dSmrg			</bitcase>
1820986c8b3dSmrg			<bitcase>
1821986c8b3dSmrg				<enumref ref="NameDetail">Compat</enumref>
1822986c8b3dSmrg				<field name="compatName" type="ATOM" />
1823986c8b3dSmrg			</bitcase>
1824986c8b3dSmrg			<bitcase>
1825986c8b3dSmrg				<enumref ref="NameDetail">KeyTypeNames</enumref>
1826986c8b3dSmrg				<list name="typeNames" type="ATOM">
1827986c8b3dSmrg					<fieldref>nTypes</fieldref>
1828986c8b3dSmrg				</list>
1829986c8b3dSmrg			</bitcase>
1830986c8b3dSmrg			<bitcase>
1831986c8b3dSmrg				<enumref ref="NameDetail">KTLevelNames</enumref>
1832986c8b3dSmrg				<list name="nLevelsPerType" type="CARD8">
1833986c8b3dSmrg					<fieldref>nKTLevels</fieldref>
1834986c8b3dSmrg				</list>
1835986c8b3dSmrg				<list name="ktLevelNames" type="ATOM">
1836986c8b3dSmrg					<sumof ref="nLevelsPerType" />
1837986c8b3dSmrg				</list>
1838986c8b3dSmrg			</bitcase>
1839986c8b3dSmrg			<bitcase>
1840986c8b3dSmrg				<enumref ref="NameDetail">IndicatorNames</enumref>
1841986c8b3dSmrg				<list name="indicatorNames" type="ATOM">
1842986c8b3dSmrg					<popcount>
1843986c8b3dSmrg						<fieldref>indicators</fieldref>
1844986c8b3dSmrg					</popcount>
1845986c8b3dSmrg				</list>
1846986c8b3dSmrg			</bitcase>
1847986c8b3dSmrg			<bitcase>
1848986c8b3dSmrg				<enumref ref="NameDetail">VirtualModNames</enumref>
1849986c8b3dSmrg				<list name="virtualModNames" type="ATOM">
1850986c8b3dSmrg					<popcount>
1851986c8b3dSmrg						<fieldref>virtualMods</fieldref>
1852986c8b3dSmrg					</popcount>
1853986c8b3dSmrg				</list>
1854986c8b3dSmrg			</bitcase>
1855986c8b3dSmrg			<bitcase>
1856986c8b3dSmrg				<enumref ref="NameDetail">GroupNames</enumref>
1857986c8b3dSmrg				<list name="groups" type="ATOM">
1858986c8b3dSmrg					<popcount>
1859986c8b3dSmrg						<fieldref>groupNames</fieldref>
1860986c8b3dSmrg					</popcount>
1861986c8b3dSmrg				</list>
1862986c8b3dSmrg			</bitcase>
1863986c8b3dSmrg			<bitcase>
1864986c8b3dSmrg				<enumref ref="NameDetail">KeyNames</enumref>
1865986c8b3dSmrg				<list name="keyNames" type="KeyName">
1866986c8b3dSmrg					<fieldref>nKeys</fieldref>
1867986c8b3dSmrg				</list>
1868986c8b3dSmrg			</bitcase>
1869986c8b3dSmrg			<bitcase>
1870986c8b3dSmrg				<enumref ref="NameDetail">KeyAliases</enumref>
1871986c8b3dSmrg				<list name="keyAliases" type="KeyAlias">
1872986c8b3dSmrg					<fieldref>nKeyAliases</fieldref>
1873986c8b3dSmrg				</list>
1874986c8b3dSmrg			</bitcase>
1875986c8b3dSmrg			<bitcase>
1876986c8b3dSmrg				<enumref ref="NameDetail">RGNames</enumref>
1877986c8b3dSmrg				<list name="radioGroupNames" type="ATOM">
1878986c8b3dSmrg					<fieldref>nRadioGroups</fieldref>
1879986c8b3dSmrg				</list>
1880986c8b3dSmrg			</bitcase>
1881986c8b3dSmrg		</switch>
1882986c8b3dSmrg	</request>
1883986c8b3dSmrg
1884f591e195Smrg	<!-- XXX: Property and doodads are broken, which renders GetGeometry useless
1885986c8b3dSmrg	<request name="GetGeometry" opcode="19">
1886986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1887986c8b3dSmrg		<pad bytes="2" />
1888986c8b3dSmrg		<field name="name" type="ATOM" />
1889986c8b3dSmrg		<reply>
1890986c8b3dSmrg			<field name="deviceID" type="CARD8" />
1891986c8b3dSmrg			<field name="name" type="ATOM" />
1892986c8b3dSmrg			<field name="found" type="BOOL" />
1893986c8b3dSmrg			<pad bytes="1" />
1894986c8b3dSmrg			<field name="widthMM" type="CARD16" />
1895986c8b3dSmrg			<field name="heightMM" type="CARD16" />
1896986c8b3dSmrg			<field name="nProperties" type="CARD16" />
1897986c8b3dSmrg			<field name="nColors" type="CARD16" />
1898986c8b3dSmrg			<field name="nShapes" type="CARD16" />
1899986c8b3dSmrg			<field name="nSections" type="CARD16" />
1900986c8b3dSmrg			<field name="nDoodads" type="CARD16" />
1901986c8b3dSmrg			<field name="nKeyAliases" type="CARD16" />
1902986c8b3dSmrg			<field name="baseColorNdx" type="CARD8" />
1903986c8b3dSmrg			<field name="labelColorNdx" type="CARD8" />
1904986c8b3dSmrg			<field name="labelFont" type="CountedString16" />
1905986c8b3dSmrg			<list name="properties" type="Property">
1906986c8b3dSmrg				<fieldref>nProperties</fieldref>
1907986c8b3dSmrg			</list>
1908986c8b3dSmrg			<list name="colors" type="CountedString16">
1909986c8b3dSmrg				<fieldref>nColors</fieldref>
1910986c8b3dSmrg			</list>
1911986c8b3dSmrg			<list name="shapes" type="Shape">
1912986c8b3dSmrg				<fieldref>nShapes</fieldref>
1913986c8b3dSmrg			</list>
1914986c8b3dSmrg			<list name="sections" type="Section">
1915986c8b3dSmrg				<fieldref>nSections</fieldref>
1916986c8b3dSmrg			</list>
1917986c8b3dSmrg			<list name="doodads" type="Doodad">
1918986c8b3dSmrg				<fieldref>nDoodads</fieldref>
1919986c8b3dSmrg			</list>
1920986c8b3dSmrg			<list name="keyAliases" type="KeyAlias">
1921986c8b3dSmrg				<fieldref>nKeyAliases</fieldref>
1922986c8b3dSmrg			</list>
1923986c8b3dSmrg		</reply>
1924986c8b3dSmrg	</request>
1925f591e195Smrg	-->
1926986c8b3dSmrg
1927f591e195Smrg	<!-- XXX: Property and doodads are broken, which renders SetGeometry useless
1928986c8b3dSmrg	<request name="SetGeometry" opcode="20">
1929986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1930986c8b3dSmrg		<field name="nShapes" type="CARD8" />
1931986c8b3dSmrg		<field name="nSections" type="CARD8" />
1932986c8b3dSmrg		<field name="name" type="ATOM" />
1933986c8b3dSmrg		<field name="widthMM" type="CARD16" />
1934986c8b3dSmrg		<field name="heightMM" type="CARD16" />
1935986c8b3dSmrg		<field name="nProperties" type="CARD16" />
1936986c8b3dSmrg		<field name="nColors" type="CARD16" />
1937986c8b3dSmrg		<field name="nDoodads" type="CARD16" />
1938986c8b3dSmrg		<field name="nKeyAliases" type="CARD16" />
1939986c8b3dSmrg		<field name="baseColorNdx" type="CARD8" />
1940986c8b3dSmrg		<field name="labelColorNdx" type="CARD8" />
1941986c8b3dSmrg		<pad bytes="2" />
1942986c8b3dSmrg		<field name="labelFont" type="CountedString16" />
1943986c8b3dSmrg		<list name="properties" type="Property">
1944986c8b3dSmrg			<fieldref>nProperties</fieldref>
1945986c8b3dSmrg		</list>
1946986c8b3dSmrg		<list name="colors" type="CountedString16">
1947986c8b3dSmrg			<fieldref>nColors</fieldref>
1948986c8b3dSmrg		</list>
1949986c8b3dSmrg		<list name="shapes" type="Shape">
1950986c8b3dSmrg			<fieldref>nShapes</fieldref>
1951986c8b3dSmrg		</list>
1952986c8b3dSmrg		<list name="sections" type="Section">
1953986c8b3dSmrg			<fieldref>nSections</fieldref>
1954986c8b3dSmrg		</list>
1955986c8b3dSmrg		<list name="doodads" type="Doodad">
1956986c8b3dSmrg			<fieldref>nDoodads</fieldref>
1957986c8b3dSmrg		</list>
1958986c8b3dSmrg		<list name="keyAliases" type="KeyAlias">
1959986c8b3dSmrg			<fieldref>nKeyAliases</fieldref>
1960986c8b3dSmrg		</list>
1961986c8b3dSmrg	</request>
1962f591e195Smrg	-->
1963986c8b3dSmrg
1964986c8b3dSmrg	<request name="PerClientFlags" opcode="21">
1965986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1966986c8b3dSmrg		<pad bytes="2" />
1967986c8b3dSmrg		<field name="change" type="CARD32" mask="PerClientFlag" />
1968986c8b3dSmrg		<field name="value" type="CARD32" mask="PerClientFlag" />
1969986c8b3dSmrg		<field name="ctrlsToChange" type="CARD32" mask="BoolCtrl" />
1970986c8b3dSmrg		<field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1971986c8b3dSmrg		<field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1972986c8b3dSmrg		<reply>
1973986c8b3dSmrg			<field name="deviceID" type="CARD8"/>
1974986c8b3dSmrg			<field name="supported" type="CARD32" mask="PerClientFlag" />
1975986c8b3dSmrg			<field name="value" type="CARD32" mask="PerClientFlag" />
1976986c8b3dSmrg			<field name="autoCtrls" type="CARD32" mask="BoolCtrl" />
1977986c8b3dSmrg			<field name="autoCtrlsValues" type="CARD32" mask="BoolCtrl" />
1978986c8b3dSmrg			<pad bytes="8" />
1979986c8b3dSmrg		</reply>
1980986c8b3dSmrg	</request>
1981986c8b3dSmrg
1982986c8b3dSmrg	<request name="ListComponents" opcode="22">
1983986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
1984986c8b3dSmrg		<field name="maxNames" type="CARD16" />
1985f591e195Smrg		<!-- XXX: Intermixed fixed size fields and lists are broken
1986986c8b3dSmrg		<field name="keymapsSpecLen" type="CARD8" />
1987986c8b3dSmrg		<list name="keymapsSpec" type="STRING8">
1988986c8b3dSmrg			<fieldref>keymapsSpecLen</fieldref>
1989986c8b3dSmrg		</list>
1990986c8b3dSmrg		<field name="keycodesSpecLen" type="CARD8" />
1991986c8b3dSmrg		<list name="keycodesSpec" type="STRING8">
1992986c8b3dSmrg			<fieldref>keycodesSpecLen</fieldref>
1993986c8b3dSmrg		</list>
1994986c8b3dSmrg		<field name="typesSpecLen" type="CARD8" />
1995986c8b3dSmrg		<list name="typesSpec" type="STRING8">
1996986c8b3dSmrg			<fieldref>typesSpecLen</fieldref>
1997986c8b3dSmrg		</list>
1998986c8b3dSmrg		<field name="compatMapSpecLen" type="CARD8" />
1999986c8b3dSmrg		<list name="compatMapSpec" type="STRING8">
2000986c8b3dSmrg			<fieldref>compatMapSpecLen</fieldref>
2001986c8b3dSmrg		</list>
2002986c8b3dSmrg		<field name="symbolsSpecLen" type="CARD8" />
2003986c8b3dSmrg		<list name="symbolsSpec" type="STRING8">
2004986c8b3dSmrg			<fieldref>symbolsSpecLen</fieldref>
2005986c8b3dSmrg		</list>
2006986c8b3dSmrg		<field name="geometrySpecLen" type="CARD8" />
2007986c8b3dSmrg		<list name="geometrySpec" type="STRING8">
2008986c8b3dSmrg			<fieldref>geometrySpecLen</fieldref>
2009986c8b3dSmrg		</list>
2010f591e195Smrg		-->
2011986c8b3dSmrg		<reply>
2012986c8b3dSmrg			<field name="deviceID" type="CARD8" />
2013986c8b3dSmrg			<field name="nKeymaps" type="CARD16" />
2014986c8b3dSmrg			<field name="nKeycodes" type="CARD16" />
2015986c8b3dSmrg			<field name="nTypes" type="CARD16" />
2016986c8b3dSmrg			<field name="nCompatMaps" type="CARD16" />
2017986c8b3dSmrg			<field name="nSymbols" type="CARD16" />
2018986c8b3dSmrg			<field name="nGeometries" type="CARD16" />
2019986c8b3dSmrg			<field name="extra" type="CARD16" />
2020986c8b3dSmrg			<pad bytes="10" />
2021986c8b3dSmrg			<list name="keymaps" type="Listing">
2022986c8b3dSmrg				<fieldref>nKeymaps</fieldref>
2023986c8b3dSmrg			</list>
2024986c8b3dSmrg			<list name="keycodes" type="Listing">
2025986c8b3dSmrg				<fieldref>nKeycodes</fieldref>
2026986c8b3dSmrg			</list>
2027986c8b3dSmrg			<list name="types" type="Listing">
2028986c8b3dSmrg				<fieldref>nTypes</fieldref>
2029986c8b3dSmrg			</list>
2030986c8b3dSmrg			<list name="compatMaps" type="Listing">
2031986c8b3dSmrg				<fieldref>nCompatMaps</fieldref>
2032986c8b3dSmrg			</list>
2033986c8b3dSmrg			<list name="symbols" type="Listing">
2034986c8b3dSmrg				<fieldref>nSymbols</fieldref>
2035986c8b3dSmrg			</list>
2036986c8b3dSmrg			<list name="geometries" type="Listing">
2037986c8b3dSmrg				<fieldref>nGeometries</fieldref>
2038986c8b3dSmrg			</list>
2039986c8b3dSmrg		</reply>
2040986c8b3dSmrg	</request>
2041986c8b3dSmrg
2042986c8b3dSmrg	<request name="GetKbdByName" opcode="23">
2043986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
2044986c8b3dSmrg		<field name="need" type="CARD16" mask="GBNDetail" />
2045986c8b3dSmrg		<field name="want" type="CARD16" mask="GBNDetail" />
2046986c8b3dSmrg		<field name="load" type="BOOL" />
2047986c8b3dSmrg		<pad bytes="1" />
2048f591e195Smrg		<!-- XXX: Intermixed fixed size fields and lists are broken
2049986c8b3dSmrg		<field name="keymapsSpecLen" type="CARD8" />
2050986c8b3dSmrg		<list name="keymapsSpec" type="STRING8">
2051986c8b3dSmrg			<fieldref>keymapsSpecLen</fieldref>
2052986c8b3dSmrg		</list>
2053986c8b3dSmrg		<field name="keycodesSpecLen" type="CARD8" />
2054986c8b3dSmrg		<list name="keycodesSpec" type="STRING8">
2055986c8b3dSmrg			<fieldref>keycodesSpecLen</fieldref>
2056986c8b3dSmrg		</list>
2057986c8b3dSmrg		<field name="typesSpecLen" type="CARD8" />
2058986c8b3dSmrg		<list name="typesSpec" type="STRING8">
2059986c8b3dSmrg			<fieldref>typesSpecLen</fieldref>
2060986c8b3dSmrg		</list>
2061986c8b3dSmrg		<field name="compatMapSpecLen" type="CARD8" />
2062986c8b3dSmrg		<list name="compatMapSpec" type="STRING8">
2063986c8b3dSmrg			<fieldref>compatMapSpecLen</fieldref>
2064986c8b3dSmrg		</list>
2065986c8b3dSmrg		<field name="symbolsSpecLen" type="CARD8" />
2066986c8b3dSmrg		<list name="symbolsSpec" type="STRING8">
2067986c8b3dSmrg			<fieldref>symbolsSpecLen</fieldref>
2068986c8b3dSmrg		</list>
2069986c8b3dSmrg		<field name="geometrySpecLen" type="CARD8" />
2070986c8b3dSmrg		<list name="geometrySpec" type="STRING8">
2071986c8b3dSmrg			<fieldref>geometrySpecLen</fieldref>
2072986c8b3dSmrg		</list>
2073f591e195Smrg		-->
2074986c8b3dSmrg		<reply>
2075986c8b3dSmrg			<field name="deviceID" type="CARD8" />
2076986c8b3dSmrg			<field name="minKeyCode" type="KEYCODE" />
2077986c8b3dSmrg			<field name="maxKeyCode" type="KEYCODE" />
2078986c8b3dSmrg			<field name="loaded" type="BOOL" />
2079986c8b3dSmrg			<field name="newKeyboard" type="BOOL" />
2080986c8b3dSmrg			<field name="found" type="CARD16" mask="GBNDetail" />
2081986c8b3dSmrg			<field name="reported" type="CARD16" mask="GBNDetail" />
2082986c8b3dSmrg			<pad bytes="16" />
2083986c8b3dSmrg			<switch name="replies">
2084986c8b3dSmrg				<fieldref>reported</fieldref>
2085986c8b3dSmrg				<bitcase name="types">
2086986c8b3dSmrg					<enumref ref="GBNDetail">Types</enumref>
2087f591e195Smrg					<enumref ref="GBNDetail">ClientSymbols</enumref>
2088f591e195Smrg					<enumref ref="GBNDetail">ServerSymbols</enumref>
2089986c8b3dSmrg					<!-- from the spec, this has to be a GetMap reply -->
2090986c8b3dSmrg					<field name="getmap_type" type="CARD8" />
2091986c8b3dSmrg				        <!-- done 'emulating' GetMap reply header-->
2092986c8b3dSmrg					<field name="typeDeviceID" type="CARD8" />
2093986c8b3dSmrg					<!-- from the spec, this has to be a GetMap reply -->
2094986c8b3dSmrg					<field name="getmap_sequence" type="CARD16" />
2095986c8b3dSmrg					<field name="getmap_length" type="CARD32" />
2096986c8b3dSmrg				        <!-- done 'emulating' GetMap reply header-->
2097986c8b3dSmrg					<pad bytes="2" />
2098986c8b3dSmrg					<field name="typeMinKeyCode" type="KEYCODE" />
2099986c8b3dSmrg					<field name="typeMaxKeyCode" type="KEYCODE" />
2100f591e195Smrg					<field name="present" type="CARD16" mask="MapPart" />
2101986c8b3dSmrg					<field name="firstType" type="CARD8" />
2102986c8b3dSmrg					<field name="nTypes" type="CARD8" />
2103986c8b3dSmrg					<field name="totalTypes" type="CARD8" />
2104986c8b3dSmrg					<field name="firstKeySym" type="KEYCODE" />
2105986c8b3dSmrg					<field name="totalSyms" type="CARD16" />
2106986c8b3dSmrg					<field name="nKeySyms" type="CARD8" />
2107986c8b3dSmrg					<field name="firstKeyAction" type="KEYCODE" />
2108986c8b3dSmrg					<field name="totalActions" type="CARD16" />
2109986c8b3dSmrg					<field name="nKeyActions" type="CARD8" />
2110986c8b3dSmrg					<field name="firstKeyBehavior" type="KEYCODE" />
2111986c8b3dSmrg					<field name="nKeyBehaviors" type="CARD8" />
2112986c8b3dSmrg					<field name="totalKeyBehaviors" type="CARD8" />
2113986c8b3dSmrg					<field name="firstKeyExplicit" type="KEYCODE" />
2114986c8b3dSmrg					<field name="nKeyExplicit" type="CARD8" />
2115986c8b3dSmrg					<field name="totalKeyExplicit" type="CARD8" />
2116986c8b3dSmrg					<field name="firstModMapKey" type="KEYCODE" />
2117986c8b3dSmrg					<field name="nModMapKeys" type="CARD8" />
2118986c8b3dSmrg					<field name="totalModMapKeys" type="CARD8" />
2119986c8b3dSmrg					<field name="firstVModMapKey" type="KEYCODE" />
2120986c8b3dSmrg					<field name="nVModMapKeys" type="CARD8" />
2121986c8b3dSmrg					<field name="totalVModMapKeys" type="CARD8" />
2122986c8b3dSmrg					<pad bytes="1" />
2123986c8b3dSmrg					<field name="virtualMods" type="CARD16" mask="VMod" />
2124986c8b3dSmrg					<switch name="map">
2125986c8b3dSmrg						<fieldref>present</fieldref>
2126986c8b3dSmrg						<bitcase>
2127986c8b3dSmrg							<enumref ref="MapPart">KeyTypes</enumref>
2128986c8b3dSmrg							<list name="types_rtrn" type="KeyType">
2129986c8b3dSmrg								<fieldref>nTypes</fieldref>
2130986c8b3dSmrg							</list>
2131986c8b3dSmrg						</bitcase>
2132986c8b3dSmrg						<bitcase>
2133986c8b3dSmrg							<enumref ref="MapPart">KeySyms</enumref>
2134986c8b3dSmrg							<list name="syms_rtrn" type="KeySymMap">
2135986c8b3dSmrg								<fieldref>nKeySyms</fieldref>
2136986c8b3dSmrg							</list>
2137986c8b3dSmrg						</bitcase>
2138986c8b3dSmrg						<bitcase>
2139986c8b3dSmrg							<enumref ref="MapPart">KeyActions</enumref>
2140986c8b3dSmrg							<list name="acts_rtrn_count" type="CARD8">
2141986c8b3dSmrg								<fieldref>nKeyActions</fieldref>
2142986c8b3dSmrg							</list>
2143986c8b3dSmrg							<list name="acts_rtrn_acts" type="Action">
2144986c8b3dSmrg								<fieldref>totalActions</fieldref>
2145986c8b3dSmrg							</list>
2146986c8b3dSmrg						</bitcase>
2147986c8b3dSmrg						<bitcase>
2148986c8b3dSmrg							<enumref ref="MapPart">KeyBehaviors</enumref>
2149986c8b3dSmrg							<list name="behaviors_rtrn" type="SetBehavior">
2150986c8b3dSmrg								<fieldref>totalKeyBehaviors</fieldref>
2151986c8b3dSmrg							</list>
2152986c8b3dSmrg						</bitcase>
2153986c8b3dSmrg						<bitcase>
2154986c8b3dSmrg							<enumref ref="MapPart">VirtualMods</enumref>
2155986c8b3dSmrg							<list name="vmods_rtrn" type="CARD8" mask="ModMask">
2156f591e195Smrg								<popcount><fieldref>virtualMods</fieldref></popcount>
2157986c8b3dSmrg							</list>
2158986c8b3dSmrg						</bitcase>
2159986c8b3dSmrg						<bitcase>
2160986c8b3dSmrg							<enumref ref="MapPart">ExplicitComponents</enumref>
2161986c8b3dSmrg							<list name="explicit_rtrn" type="SetExplicit">
2162986c8b3dSmrg								<fieldref>totalKeyExplicit</fieldref>
2163986c8b3dSmrg							</list>
2164986c8b3dSmrg						</bitcase>
2165986c8b3dSmrg						<bitcase>
2166986c8b3dSmrg							<enumref ref="MapPart">ModifierMap</enumref>
2167986c8b3dSmrg							<list name="modmap_rtrn" type="KeyModMap">
2168986c8b3dSmrg								<fieldref>totalModMapKeys</fieldref>
2169986c8b3dSmrg							</list>
2170986c8b3dSmrg						</bitcase>
2171986c8b3dSmrg						<bitcase>
2172986c8b3dSmrg							<enumref ref="MapPart">VirtualModMap</enumref>
2173986c8b3dSmrg							<list name="vmodmap_rtrn" type="KeyVModMap">
2174986c8b3dSmrg								<fieldref>totalVModMapKeys</fieldref>
2175986c8b3dSmrg							</list>
2176986c8b3dSmrg						</bitcase>
2177986c8b3dSmrg					</switch>
2178986c8b3dSmrg				</bitcase>
2179986c8b3dSmrg				<bitcase name="compat_map">
2180986c8b3dSmrg					<enumref ref="GBNDetail">CompatMap</enumref>
2181f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2182f591e195Smrg					<field name="compatmap_type" type="CARD8" />
2183986c8b3dSmrg					<field name="compatDeviceID" type="CARD8" />
2184f591e195Smrg					<field name="compatmap_sequence" type="CARD16" />
2185f591e195Smrg					<field name="compatmap_length" type="CARD32" />
2186f591e195Smrg					<!-- done 'emulating' reply header -->
2187986c8b3dSmrg					<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
2188986c8b3dSmrg					<pad bytes="1" />
2189986c8b3dSmrg					<field name="firstSIRtrn" type="CARD16" />
2190986c8b3dSmrg					<field name="nSIRtrn" type="CARD16" />
2191986c8b3dSmrg					<field name="nTotalSI" type="CARD16" />
2192986c8b3dSmrg					<pad bytes="16" />
2193f591e195Smrg					<list name="si_rtrn" type="SymInterpret">
2194f591e195Smrg						<fieldref>nSIRtrn</fieldref>
2195986c8b3dSmrg					</list>
2196986c8b3dSmrg					<list name="group_rtrn" type="ModDef">
2197986c8b3dSmrg						<popcount>
2198986c8b3dSmrg							<fieldref>groupsRtrn</fieldref>
2199986c8b3dSmrg						</popcount>
2200986c8b3dSmrg					</list>
2201986c8b3dSmrg				</bitcase>
2202986c8b3dSmrg				<bitcase name="indicator_maps">
2203986c8b3dSmrg					<enumref ref="GBNDetail">IndicatorMaps</enumref>
2204f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2205f591e195Smrg					<field name="indicatormap_type" type="CARD8" />
2206986c8b3dSmrg					<field name="indicatorDeviceID" type="CARD8" />
2207f591e195Smrg					<field name="indicatormap_sequence" type="CARD16" />
2208f591e195Smrg					<field name="indicatormap_length" type="CARD32" />
2209f591e195Smrg					<!-- done 'emulating' reply header -->
2210986c8b3dSmrg					<field name="which" type="CARD32" />
2211986c8b3dSmrg					<field name="realIndicators" type="CARD32" />
2212986c8b3dSmrg					<field name="nIndicators" type="CARD8" />
2213986c8b3dSmrg					<pad bytes="15" />
2214986c8b3dSmrg					<list name="maps" type="IndicatorMap">
2215986c8b3dSmrg						<fieldref>nIndicators</fieldref>
2216986c8b3dSmrg					</list>
2217986c8b3dSmrg				</bitcase>
2218986c8b3dSmrg				<bitcase name="key_names">
2219986c8b3dSmrg					<enumref ref="GBNDetail">KeyNames</enumref>
2220f591e195Smrg					<enumref ref="GBNDetail">OtherNames</enumref>
2221f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2222f591e195Smrg					<field name="keyname_type" type="CARD8" />
2223986c8b3dSmrg					<field name="keyDeviceID" type="CARD8" />
2224f591e195Smrg					<field name="keyname_sequence" type="CARD16" />
2225f591e195Smrg					<field name="keyname_length" type="CARD32" />
2226f591e195Smrg					<!-- done 'emulating' reply header -->
2227986c8b3dSmrg					<field name="which" type="CARD32" mask="NameDetail" />
2228986c8b3dSmrg					<field name="keyMinKeyCode" type="KEYCODE" />
2229986c8b3dSmrg					<field name="keyMaxKeyCode" type="KEYCODE" />
2230986c8b3dSmrg					<field name="nTypes" type="CARD8" />
2231986c8b3dSmrg					<field name="groupNames" type="CARD8" mask="SetOfGroup" />
2232986c8b3dSmrg					<field name="virtualMods" type="CARD16" mask="VMod" />
2233986c8b3dSmrg					<field name="firstKey" type="KEYCODE" />
2234986c8b3dSmrg					<field name="nKeys" type="CARD8" />
2235986c8b3dSmrg					<field name="indicators" type="CARD32" />
2236986c8b3dSmrg					<field name="nRadioGroups" type="CARD8" />
2237986c8b3dSmrg					<field name="nKeyAliases" type="CARD8" />
2238986c8b3dSmrg					<field name="nKTLevels" type="CARD16" />
2239986c8b3dSmrg					<pad bytes="4" />
2240986c8b3dSmrg					<switch name="valueList">
2241986c8b3dSmrg						<fieldref>which</fieldref>
2242986c8b3dSmrg						<bitcase>
2243986c8b3dSmrg							<enumref ref="NameDetail">Keycodes</enumref>
2244986c8b3dSmrg							<field name="keycodesName" type="ATOM" />
2245986c8b3dSmrg						</bitcase>
2246986c8b3dSmrg						<bitcase>
2247986c8b3dSmrg							<enumref ref="NameDetail">Geometry</enumref>
2248986c8b3dSmrg							<field name="geometryName" type="ATOM" />
2249986c8b3dSmrg						</bitcase>
2250986c8b3dSmrg						<bitcase>
2251986c8b3dSmrg							<enumref ref="NameDetail">Symbols</enumref>
2252986c8b3dSmrg							<field name="symbolsName" type="ATOM" />
2253986c8b3dSmrg						</bitcase>
2254986c8b3dSmrg						<bitcase>
2255986c8b3dSmrg							<enumref ref="NameDetail">PhysSymbols</enumref>
2256986c8b3dSmrg							<field name="physSymbolsName" type="ATOM" />
2257986c8b3dSmrg						</bitcase>
2258986c8b3dSmrg						<bitcase>
2259986c8b3dSmrg							<enumref ref="NameDetail">Types</enumref>
2260986c8b3dSmrg							<field name="typesName" type="ATOM" />
2261986c8b3dSmrg						</bitcase>
2262986c8b3dSmrg						<bitcase>
2263986c8b3dSmrg							<enumref ref="NameDetail">Compat</enumref>
2264986c8b3dSmrg							<field name="compatName" type="ATOM" />
2265986c8b3dSmrg						</bitcase>
2266986c8b3dSmrg						<bitcase>
2267986c8b3dSmrg							<enumref ref="NameDetail">KeyTypeNames</enumref>
2268986c8b3dSmrg							<list name="typeNames" type="ATOM">
2269986c8b3dSmrg								<fieldref>nTypes</fieldref>
2270986c8b3dSmrg							</list>
2271986c8b3dSmrg						</bitcase>
2272986c8b3dSmrg						<bitcase>
2273986c8b3dSmrg							<enumref ref="NameDetail">KTLevelNames</enumref>
2274986c8b3dSmrg							<list name="nLevelsPerType" type="CARD8">
2275986c8b3dSmrg								<fieldref>nKTLevels</fieldref>
2276986c8b3dSmrg							</list>
2277986c8b3dSmrg							<list name="ktLevelNames" type="ATOM">
2278986c8b3dSmrg								<sumof ref="nLevelsPerType" />
2279986c8b3dSmrg							</list>
2280986c8b3dSmrg						</bitcase>
2281986c8b3dSmrg						<bitcase>
2282986c8b3dSmrg							<enumref ref="NameDetail">IndicatorNames</enumref>
2283986c8b3dSmrg							<list name="indicatorNames" type="ATOM">
2284986c8b3dSmrg								<popcount>
2285986c8b3dSmrg									<fieldref>indicators</fieldref>
2286986c8b3dSmrg								</popcount>
2287986c8b3dSmrg							</list>
2288986c8b3dSmrg						</bitcase>
2289986c8b3dSmrg						<bitcase>
2290986c8b3dSmrg							<enumref ref="NameDetail">VirtualModNames</enumref>
2291986c8b3dSmrg							<list name="virtualModNames" type="ATOM">
2292986c8b3dSmrg								<popcount>
2293986c8b3dSmrg									<fieldref>virtualMods</fieldref>
2294986c8b3dSmrg								</popcount>
2295986c8b3dSmrg							</list>
2296986c8b3dSmrg						</bitcase>
2297986c8b3dSmrg						<bitcase>
2298986c8b3dSmrg							<enumref ref="NameDetail">GroupNames</enumref>
2299986c8b3dSmrg							<list name="groups" type="ATOM">
2300986c8b3dSmrg								<popcount>
2301986c8b3dSmrg									<fieldref>groupNames</fieldref>
2302986c8b3dSmrg								</popcount>
2303986c8b3dSmrg							</list>
2304986c8b3dSmrg						</bitcase>
2305986c8b3dSmrg						<bitcase>
2306986c8b3dSmrg							<enumref ref="NameDetail">KeyNames</enumref>
2307986c8b3dSmrg							<list name="keyNames" type="KeyName">
2308986c8b3dSmrg								<fieldref>nKeys</fieldref>
2309986c8b3dSmrg							</list>
2310986c8b3dSmrg						</bitcase>
2311986c8b3dSmrg						<bitcase>
2312986c8b3dSmrg							<enumref ref="NameDetail">KeyAliases</enumref>
2313986c8b3dSmrg							<list name="keyAliases" type="KeyAlias">
2314986c8b3dSmrg								<fieldref>nKeyAliases</fieldref>
2315986c8b3dSmrg							</list>
2316986c8b3dSmrg						</bitcase>
2317986c8b3dSmrg						<bitcase>
2318986c8b3dSmrg							<enumref ref="NameDetail">RGNames</enumref>
2319986c8b3dSmrg							<list name="radioGroupNames" type="ATOM">
2320986c8b3dSmrg								<fieldref>nRadioGroups</fieldref>
2321986c8b3dSmrg							</list>
2322986c8b3dSmrg						</bitcase>
2323986c8b3dSmrg					</switch>
2324986c8b3dSmrg				</bitcase>
2325986c8b3dSmrg				<bitcase name="geometry">
2326986c8b3dSmrg					<enumref ref="GBNDetail">Geometry</enumref>
2327f591e195Smrg					<!-- from the spec, this has to include a reply header -->
2328f591e195Smrg					<field name="geometry_type" type="CARD8" />
2329986c8b3dSmrg					<field name="geometryDeviceID" type="CARD8" />
2330f591e195Smrg					<field name="geometry_sequence" type="CARD16" />
2331f591e195Smrg					<field name="geometry_length" type="CARD32" />
2332f591e195Smrg					<!-- done 'emulating' reply header -->
2333986c8b3dSmrg					<field name="name" type="ATOM" />
2334986c8b3dSmrg					<field name="geometryFound" type="BOOL" />
2335986c8b3dSmrg					<pad bytes="1" />
2336986c8b3dSmrg					<field name="widthMM" type="CARD16" />
2337986c8b3dSmrg					<field name="heightMM" type="CARD16" />
2338986c8b3dSmrg					<field name="nProperties" type="CARD16" />
2339986c8b3dSmrg					<field name="nColors" type="CARD16" />
2340986c8b3dSmrg					<field name="nShapes" type="CARD16" />
2341986c8b3dSmrg					<field name="nSections" type="CARD16" />
2342986c8b3dSmrg					<field name="nDoodads" type="CARD16" />
2343986c8b3dSmrg					<field name="nKeyAliases" type="CARD16" />
2344986c8b3dSmrg					<field name="baseColorNdx" type="CARD8" />
2345986c8b3dSmrg					<field name="labelColorNdx" type="CARD8" />
2346986c8b3dSmrg					<field name="labelFont" type="CountedString16" />
2347f591e195Smrg					<!-- XXX: Property is broken
2348986c8b3dSmrg					<list name="properties" type="Property">
2349986c8b3dSmrg						<fieldref>nProperties</fieldref>
2350986c8b3dSmrg					</list>
2351986c8b3dSmrg					<list name="colors" type="CountedString16">
2352986c8b3dSmrg						<fieldref>nColors</fieldref>
2353986c8b3dSmrg					</list>
2354986c8b3dSmrg					<list name="shapes" type="Shape">
2355986c8b3dSmrg						<fieldref>nShapes</fieldref>
2356986c8b3dSmrg					</list>
2357f591e195Smrg					-->
2358f591e195Smrg					<!-- XXX: doodads are broken
2359986c8b3dSmrg					<list name="sections" type="Section">
2360986c8b3dSmrg						<fieldref>nSections</fieldref>
2361986c8b3dSmrg					</list>
2362986c8b3dSmrg					<list name="doodads" type="Doodad">
2363986c8b3dSmrg						<fieldref>nDoodads</fieldref>
2364986c8b3dSmrg					</list>
2365986c8b3dSmrg					<list name="keyAliases" type="KeyAlias">
2366986c8b3dSmrg						<fieldref>nKeyAliases</fieldref>
2367986c8b3dSmrg					</list>
2368f591e195Smrg					-->
2369986c8b3dSmrg				</bitcase>
2370986c8b3dSmrg			</switch>
2371986c8b3dSmrg		</reply>
2372986c8b3dSmrg	</request>
2373986c8b3dSmrg
2374986c8b3dSmrg	<request name="GetDeviceInfo" opcode="24">
2375986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
2376986c8b3dSmrg		<field name="wanted" type="CARD16" mask="XIFeature" />
2377986c8b3dSmrg		<field name="allButtons" type="BOOL" />
2378986c8b3dSmrg		<field name="firstButton" type="CARD8" />
2379986c8b3dSmrg		<field name="nButtons" type="CARD8" />
2380986c8b3dSmrg		<pad bytes="1" />
2381986c8b3dSmrg		<field name="ledClass" type="LedClassSpec" enum="LedClass" />
2382986c8b3dSmrg		<field name="ledID" type="IDSpec" altenum="ID" />
2383986c8b3dSmrg		<reply>
2384986c8b3dSmrg			<field name="deviceID" type="CARD8" />
2385986c8b3dSmrg			<field name="present" type="CARD16" mask="XIFeature" />
2386986c8b3dSmrg			<field name="supported" type="CARD16" mask="XIFeature" />
2387986c8b3dSmrg			<field name="unsupported" type="CARD16" mask="XIFeature" />
2388986c8b3dSmrg			<field name="nDeviceLedFBs" type="CARD16" />
2389986c8b3dSmrg			<field name="firstBtnWanted" type="CARD8" />
2390986c8b3dSmrg			<field name="nBtnsWanted" type="CARD8" />
2391986c8b3dSmrg			<field name="firstBtnRtrn" type="CARD8" />
2392986c8b3dSmrg			<field name="nBtnsRtrn" type="CARD8" />
2393986c8b3dSmrg			<field name="totalBtns" type="CARD8" />
2394986c8b3dSmrg			<field name="hasOwnState" type="BOOL" />
2395986c8b3dSmrg			<field name="dfltKbdFB" type="CARD16" altenum="ID" />
2396986c8b3dSmrg			<field name="dfltLedFB" type="CARD16" altenum="ID" />
2397986c8b3dSmrg			<pad bytes="2" />
2398986c8b3dSmrg			<field name="devType" type="ATOM" />
2399986c8b3dSmrg			<field name="nameLen" type="CARD16" />
2400986c8b3dSmrg			<list name="name" type="STRING8">
2401986c8b3dSmrg				<fieldref>nameLen</fieldref>
2402986c8b3dSmrg			</list>
2403986c8b3dSmrg			<list name="btnActions" type="Action">
2404986c8b3dSmrg				<fieldref>nBtnsRtrn</fieldref>
2405986c8b3dSmrg			</list>
2406986c8b3dSmrg			<list name="leds" type="DeviceLedInfo">
2407986c8b3dSmrg				<fieldref>nDeviceLedFBs</fieldref>
2408986c8b3dSmrg			</list>
2409986c8b3dSmrg		</reply>
2410986c8b3dSmrg	</request>
2411986c8b3dSmrg
2412986c8b3dSmrg
2413986c8b3dSmrg	<request name="SetDeviceInfo" opcode="25">
2414986c8b3dSmrg		<field name="deviceSpec" type="DeviceSpec" />
2415986c8b3dSmrg		<field name="firstBtn" type="CARD8" />
2416986c8b3dSmrg		<field name="nBtns" type="CARD8" />
2417986c8b3dSmrg		<field name="change" type="CARD16" mask="XIFeature" />
2418986c8b3dSmrg		<field name="nDeviceLedFBs" type="CARD16" />
2419986c8b3dSmrg		<list name="btnActions" type="Action">
2420986c8b3dSmrg			<fieldref>nBtns</fieldref>
2421986c8b3dSmrg		</list>
2422986c8b3dSmrg		<list name="leds" type="DeviceLedInfo">
2423986c8b3dSmrg			<fieldref>nDeviceLedFBs</fieldref>
2424986c8b3dSmrg		</list>
2425986c8b3dSmrg	</request>
2426986c8b3dSmrg
2427986c8b3dSmrg	<request name="SetDebuggingFlags" opcode="101">
2428986c8b3dSmrg		<field name="msgLength" type="CARD16" />
2429986c8b3dSmrg		<pad bytes="2" />
2430986c8b3dSmrg		<field name="affectFlags" type="CARD32" />
2431986c8b3dSmrg		<field name="flags" type="CARD32" />
2432986c8b3dSmrg		<field name="affectCtrls" type="CARD32" />
2433986c8b3dSmrg		<field name="ctrls" type="CARD32" />
2434986c8b3dSmrg		<list name="message" type="STRING8">
2435986c8b3dSmrg			<fieldref>msgLength</fieldref>
2436986c8b3dSmrg		</list>
2437986c8b3dSmrg		<reply>
2438986c8b3dSmrg			<pad bytes="1" />
2439986c8b3dSmrg			<field name="currentFlags" type="CARD32" />
2440986c8b3dSmrg			<field name="currentCtrls" type="CARD32" />
2441986c8b3dSmrg			<field name="supportedFlags" type="CARD32" />
2442986c8b3dSmrg			<field name="supportedCtrls" type="CARD32" />
2443986c8b3dSmrg			<pad bytes="8" />
2444986c8b3dSmrg		</reply>
2445986c8b3dSmrg	</request>
2446986c8b3dSmrg
2447986c8b3dSmrg	<!-- Events -->
2448986c8b3dSmrg
2449f591e195Smrg	<event name="NewKeyboardNotify" number="0">
2450986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2451986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2452986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2453986c8b3dSmrg		<field name="oldDeviceID" type="CARD8" />
2454986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
2455986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
2456986c8b3dSmrg		<field name="oldMinKeyCode" type="KEYCODE" />
2457986c8b3dSmrg		<field name="oldMaxKeyCode" type="KEYCODE" />
2458986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2459986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2460986c8b3dSmrg		<field name="changed" type="CARD16" mask="NKNDetail" />
2461986c8b3dSmrg		<pad bytes="14" />
2462986c8b3dSmrg	</event>
2463986c8b3dSmrg
2464f591e195Smrg	<event name="MapNotify" number="1">
2465986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2466986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2467986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2468986c8b3dSmrg		<field name="ptrBtnActions" type="CARD8" />
2469986c8b3dSmrg		<field name="changed" type="CARD16" mask="MapPart" />
2470986c8b3dSmrg		<field name="minKeyCode" type="KEYCODE" />
2471986c8b3dSmrg		<field name="maxKeyCode" type="KEYCODE" />
2472986c8b3dSmrg		<field name="firstType" type="CARD8" />
2473986c8b3dSmrg		<field name="nTypes" type="CARD8" />
2474986c8b3dSmrg		<field name="firstKeySym" type="KEYCODE" />
2475986c8b3dSmrg		<field name="nKeySyms" type="CARD8" />
2476986c8b3dSmrg		<field name="firstKeyAct" type="KEYCODE" />
2477986c8b3dSmrg		<field name="nKeyActs" type="CARD8" />
2478986c8b3dSmrg		<field name="firstKeyBehavior" type="KEYCODE" />
2479986c8b3dSmrg		<field name="nKeyBehavior" type="CARD8" />
2480986c8b3dSmrg		<field name="firstKeyExplicit" type="KEYCODE" />
2481986c8b3dSmrg		<field name="nKeyExplicit" type="CARD8" />
2482986c8b3dSmrg		<field name="firstModMapKey" type="KEYCODE" />
2483986c8b3dSmrg		<field name="nModMapKeys" type="CARD8" />
2484986c8b3dSmrg		<field name="firstVModMapKey" type="KEYCODE" />
2485986c8b3dSmrg		<field name="nVModMapKeys" type="CARD8" />
2486986c8b3dSmrg		<field name="virtualMods" type="CARD16" mask="VMod" />
2487986c8b3dSmrg		<pad bytes="2" />
2488986c8b3dSmrg	</event>
2489986c8b3dSmrg
2490f591e195Smrg	<event name="StateNotify" number="2">
2491986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2492986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2493986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2494986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
2495986c8b3dSmrg		<field name="baseMods" type="CARD8" mask="ModMask" />
2496986c8b3dSmrg		<field name="latchedMods" type="CARD8" mask="ModMask" />
2497986c8b3dSmrg		<field name="lockedMods" type="CARD8" mask="ModMask" />
2498986c8b3dSmrg		<field name="group" type="CARD8" enum="Group" />
2499986c8b3dSmrg		<field name="baseGroup" type="INT16" />
2500986c8b3dSmrg		<field name="latchedGroup" type="INT16" />
2501986c8b3dSmrg		<field name="lockedGroup" type="CARD8" enum="Group" />
2502986c8b3dSmrg		<field name="compatState" type="CARD8" mask="ModMask" />
2503986c8b3dSmrg		<field name="grabMods" type="CARD8" mask="ModMask" />
2504986c8b3dSmrg		<field name="compatGrabMods" type="CARD8" mask="ModMask" />
2505986c8b3dSmrg		<field name="lookupMods" type="CARD8" mask="ModMask" />
2506986c8b3dSmrg		<field name="compatLoockupMods" type="CARD8" mask="ModMask" />
2507986c8b3dSmrg		<field name="ptrBtnState" type="CARD16" mask="KeyButMask" />
2508986c8b3dSmrg		<field name="changed" type="CARD16" mask="StatePart" />
2509986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2510986c8b3dSmrg		<field name="eventType" type="CARD8" />
2511986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2512986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2513986c8b3dSmrg	</event>
2514986c8b3dSmrg
2515f591e195Smrg	<event name="ControlsNotify" number="3">
2516986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2517986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2518986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2519986c8b3dSmrg		<field name="numGroups" type="CARD8" />
2520986c8b3dSmrg		<pad bytes="2" />
2521986c8b3dSmrg		<field name="changedControls" type="CARD32" mask="Control" />
2522986c8b3dSmrg		<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
2523986c8b3dSmrg		<field name="enabledControlChanges" type="CARD32" mask="BoolCtrl" />
2524986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2525986c8b3dSmrg		<field name="eventType" type="CARD8" />
2526986c8b3dSmrg		<field name="requestMajor" type="CARD8" />
2527986c8b3dSmrg		<field name="requestMinor" type="CARD8" />
2528986c8b3dSmrg		<pad bytes="4" />
2529986c8b3dSmrg	</event>
2530986c8b3dSmrg
2531f591e195Smrg	<event name="IndicatorStateNotify" number="4">
2532986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2533986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2534986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2535986c8b3dSmrg		<pad bytes="3" />
2536986c8b3dSmrg		<field name="state" type="CARD32" />
2537986c8b3dSmrg		<field name="stateChanged" type="CARD32" />
2538986c8b3dSmrg		<pad bytes="12" />
2539986c8b3dSmrg	</event>
2540986c8b3dSmrg
2541f591e195Smrg	<event name="IndicatorMapNotify" number="5">
2542986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2543986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2544986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2545986c8b3dSmrg		<pad bytes="3" />
2546986c8b3dSmrg		<field name="state" type="CARD32" />
2547986c8b3dSmrg		<field name="mapChanged" type="CARD32" />
2548986c8b3dSmrg		<pad bytes="12" />
2549986c8b3dSmrg	</event>
2550986c8b3dSmrg
2551f591e195Smrg	<event name="NamesNotify" number="6">
2552986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2553986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2554986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2555986c8b3dSmrg		<pad bytes="1" />
2556986c8b3dSmrg		<field name="changed" type="CARD16" mask="NameDetail" />
2557986c8b3dSmrg		<field name="firstType" type="CARD8" />
2558986c8b3dSmrg		<field name="nTypes" type="CARD8" />
2559986c8b3dSmrg		<field name="firstLevelName" type="CARD8" />
2560986c8b3dSmrg		<field name="nLevelNames" type="CARD8" />
2561986c8b3dSmrg		<pad bytes="1" />
2562986c8b3dSmrg		<field name="nRadioGroups" type="CARD8" />
2563986c8b3dSmrg		<field name="nKeyAliases" type="CARD8" />
2564986c8b3dSmrg		<field name="changedGroupNames" type="CARD8" mask="SetOfGroup" />
2565986c8b3dSmrg		<field name="changedVirtualMods" type="CARD16" mask="VMod" />
2566986c8b3dSmrg		<field name="firstKey" type="KEYCODE" />
2567986c8b3dSmrg		<field name="nKeys" type="CARD8" />
2568986c8b3dSmrg		<field name="changedIndicators" type="CARD32" />
2569986c8b3dSmrg		<pad bytes="4" />
2570986c8b3dSmrg	</event>
2571986c8b3dSmrg
2572f591e195Smrg	<event name="CompatMapNotify" number="7">
2573986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2574986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2575986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2576986c8b3dSmrg		<field name="changedGroups" type="CARD8" mask="SetOfGroup" />
2577986c8b3dSmrg		<field name="firstSI" type="CARD16" />
2578986c8b3dSmrg		<field name="nSI" type="CARD16" />
2579986c8b3dSmrg		<field name="nTotalSI" type="CARD16" />
2580986c8b3dSmrg		<pad bytes="16" />
2581986c8b3dSmrg	</event>
2582986c8b3dSmrg
2583f591e195Smrg	<event name="BellNotify" number="8">
2584986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2585986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2586986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2587986c8b3dSmrg		<field name="bellClass" type="CARD8" enum="BellClassResult" />
2588986c8b3dSmrg		<field name="bellID" type="CARD8" />
2589986c8b3dSmrg		<field name="percent" type="CARD8" />
2590986c8b3dSmrg		<field name="pitch" type="CARD16" />
2591986c8b3dSmrg		<field name="duration" type="CARD16" />
2592986c8b3dSmrg		<field name="name" type="ATOM" />
2593986c8b3dSmrg		<field name="window" type="WINDOW" />
2594986c8b3dSmrg		<field name="eventOnly" type="BOOL" />
2595986c8b3dSmrg		<pad bytes="7" />
2596986c8b3dSmrg	</event>
2597986c8b3dSmrg
2598f591e195Smrg	<event name="ActionMessage" number="9">
2599986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2600986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2601986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2602986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2603986c8b3dSmrg		<field name="press" type="BOOL" />
2604986c8b3dSmrg		<field name="keyEventFollows" type="BOOL" />
2605986c8b3dSmrg		<field name="mods" type="CARD8" mask="ModMask" />
2606986c8b3dSmrg		<field name="group" type="CARD8" enum="Group" />
2607986c8b3dSmrg		<list name="message" type="STRING8">
2608986c8b3dSmrg			<value>8</value>
2609986c8b3dSmrg		</list>
2610986c8b3dSmrg		<pad bytes="10" />
2611986c8b3dSmrg	</event>
2612986c8b3dSmrg
2613f591e195Smrg	<event name="AccessXNotify" number="10">
2614986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2615986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2616986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2617986c8b3dSmrg		<field name="keycode" type="KEYCODE" />
2618986c8b3dSmrg		<field name="detailt" type="CARD16" mask="AXNDetail" />
2619986c8b3dSmrg		<field name="slowKeysDelay" type="CARD16" />
2620986c8b3dSmrg		<field name="debounceDelay" type="CARD16" />
2621986c8b3dSmrg		<pad bytes="16" />
2622986c8b3dSmrg	</event>
2623986c8b3dSmrg
2624f591e195Smrg	<event name="ExtensionDeviceNotify" number="11">
2625986c8b3dSmrg		<field name="xkbType" type="CARD8" />
2626986c8b3dSmrg		<field name="time" type="TIMESTAMP" />
2627986c8b3dSmrg		<field name="deviceID" type="CARD8" />
2628986c8b3dSmrg		<pad bytes="1" />
2629986c8b3dSmrg		<field name="reason" type="CARD16" mask="XIFeature" />
2630986c8b3dSmrg		<field name="ledClass" type="CARD16" enum="LedClassResult" />
2631f591e195Smrg		<field name="ledID" type="CARD16" />
2632986c8b3dSmrg		<field name="ledsDefined" type="CARD32" />
2633986c8b3dSmrg		<field name="ledState" type="CARD32" />
2634986c8b3dSmrg		<field name="firstButton" type="CARD8" />
2635986c8b3dSmrg		<field name="nButtons" type="CARD8" />
2636986c8b3dSmrg		<field name="supported" type="CARD16" mask="XIFeature" />
2637986c8b3dSmrg		<field name="unsupported" type="CARD16" mask="XIFeature" />
2638986c8b3dSmrg		<pad bytes="2" />
2639986c8b3dSmrg	</event>
2640986c8b3dSmrg</xcb>
2641