--- xkb.xml	2009-09-16 12:56:17.000000000 +0200
+++ xkb2.xml	2009-09-16 16:43:25.000000000 +0200
@@ -2456,35 +2456,774 @@
 				<fieldref>reported</fieldref>
 				<bitcase>
 					<enumref ref="GBNDetail">Types</enumref>
-					<replyof request="GetMap" name="map" />
+					<field name="deviceID" type="CARD8" />
+					<pad bytes="2" />
+					<field name="minKeyCode" type="KEYCODE" />
+					<field name="maxKeyCode" type="KEYCODE" />
+					<field name="present" type="CARD16" enum="MapPart" />
+					<field name="firstType" type="CARD8" />
+					<!-- t -->
+					<field name="nTypes" type="CARD8" />
+					<field name="totalTypes" type="CARD8" />
+					<field name="firstKeySym" type="KEYCODE" />
+					<!-- S -->
+					<field name="totalSyms" type="CARD16" />
+					<!-- s -->
+					<field name="nKeySyms" type="CARD8" />
+					<field name="firstKeyAction" type="KEYCODE" />
+					<!-- A -->
+					<field name="totalActions" type="CARD16" />
+					<!-- a -->
+					<field name="nKeyActions" type="CARD8" />
+					<field name="firstKeyBehavior" type="KEYCODE" />
+					<!-- b -->
+					<field name="nKeyBehaviors" type="CARD8" />
+					<!-- B -->
+					<field name="totalKeyBehaviors" type="CARD8" />
+					<field name="firstKeyExplicit" type="KEYCODE" />
+					<!-- e -->
+					<field name="nKeyExplicit" type="CARD8" />
+					<!-- E -->
+					<field name="totalKeyExplicit" type="CARD8" />
+					<field name="firstModMapKey" type="KEYCODE" />
+					<!-- m -->
+					<field name="nModMapKeys" type="CARD8" />
+					<!-- M -->
+					<field name="totalModMapKeys" type="CARD8" />
+					<field name="firstVModMapKey" type="KEYCODE" />
+					<!-- v -->
+					<field name="nVModMapKeys" type="CARD8" />
+					<!-- V -->
+					<field name="totalVModMapKeys" type="CARD8" />
+					<pad bytes="1" />
+					<field name="virtualMods" type="CARD16" mask="VMod" />
+					<switch name="map">
+						<fieldref>present</fieldref>
+						<bitcase>
+							<enumref ref="MapPart">KeyTypes</enumref>
+							<list name="types_rtrn" type="KeyType">
+								<fieldref>nTypes</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeySyms</enumref>
+							<list name="syms_rtrn" type="KeySymMap">
+								<!-- 8s + 4S -->
+								<op op="+">
+									<op op="*">
+										<value>8</value>
+										<fieldref>nKeySyms</fieldref>
+									</op>
+									<op op="*">
+										<value>4</value>
+										<fieldref>totalSyms</fieldref>
+									</op>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyActions</enumref>
+							<list name="acts_rtrn_count" type="CARD8">
+								<!-- a -->
+								<fieldref>nKeyActions</fieldref>
+							</list>
+							<list name="acts_rtrn_acts" type="Action">
+								<!-- 8A -->
+								<op op="*">
+									<value>8</value>
+									<fieldref>totalActions</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyBehaviors</enumref>
+							<list name="behaviors_rtrn" type="SetBehavior">
+								<!-- 4B -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalKeyBehaviors</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualMods</enumref>
+							<list name="vmods_rtrn" type="CARD8" mask="KeyMask">
+								<!-- v -->
+								<fieldref>nVModMapKeys</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ExplicitComponents</enumref>
+							<list name="explicit_rtrn" type="SetExplicit">
+								<!-- 2E -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalKeyExplicit</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ModifierMap</enumref>
+							<list name="modmap_rtrn" type="KeyModMap">
+								<!-- 2M -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualModMap</enumref>
+							<list name="vmodmap_rtrn" type="KeyVModMap">
+								<!-- 4V -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalVModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+					</switch>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">CompatMap</enumref>
-					<replyof request="GetCompatMap" name="compat" />
+					<field name="deviceID" type="CARD8" />
+					<field name="groupsRtrn" type="CARD8" mask="SetOfGroup" />
+					<pad bytes="1" />
+					<field name="firstSIRtrn" type="CARD16" />
+					<!-- n -->
+					<field name="nSIRtrn" type="CARD16" />
+					<field name="nTotalSI" type="CARD16" />
+					<pad bytes="16" />
+					<list name="si_rtrn" type="SymInterpret">
+						<!-- 16n -->
+						<op op="*">
+							<value>16</value>
+							<fieldref>nSIRtrn</fieldref>
+						</op>
+					</list>
+					<list name="group_rtrn" type="ModDef">
+						<!-- 4g -->
+						<!-- g = popcount(groupsRtrn) -->
+						<op op="*">
+							<value>4</value>
+							<popcount>
+								<fieldref>groupsRtrn</fieldref>
+							</popcount>
+						</op>
+					</list>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">ClientSymbols</enumref>
-					<replyof request="GetMap" name="clientmap" />
+					<field name="deviceID" type="CARD8" />
+					<pad bytes="2" />
+					<field name="minKeyCode" type="KEYCODE" />
+					<field name="maxKeyCode" type="KEYCODE" />
+					<field name="present" type="CARD16" enum="MapPart" />
+					<field name="firstType" type="CARD8" />
+					<!-- t -->
+					<field name="nTypes" type="CARD8" />
+					<field name="totalTypes" type="CARD8" />
+					<field name="firstKeySym" type="KEYCODE" />
+					<!-- S -->
+					<field name="totalSyms" type="CARD16" />
+					<!-- s -->
+					<field name="nKeySyms" type="CARD8" />
+					<field name="firstKeyAction" type="KEYCODE" />
+					<!-- A -->
+					<field name="totalActions" type="CARD16" />
+					<!-- a -->
+					<field name="nKeyActions" type="CARD8" />
+					<field name="firstKeyBehavior" type="KEYCODE" />
+					<!-- b -->
+					<field name="nKeyBehaviors" type="CARD8" />
+					<!-- B -->
+					<field name="totalKeyBehaviors" type="CARD8" />
+					<field name="firstKeyExplicit" type="KEYCODE" />
+					<!-- e -->
+					<field name="nKeyExplicit" type="CARD8" />
+					<!-- E -->
+					<field name="totalKeyExplicit" type="CARD8" />
+					<field name="firstModMapKey" type="KEYCODE" />
+					<!-- m -->
+					<field name="nModMapKeys" type="CARD8" />
+					<!-- M -->
+					<field name="totalModMapKeys" type="CARD8" />
+					<field name="firstVModMapKey" type="KEYCODE" />
+					<!-- v -->
+					<field name="nVModMapKeys" type="CARD8" />
+					<!-- V -->
+					<field name="totalVModMapKeys" type="CARD8" />
+					<pad bytes="1" />
+					<field name="virtualMods" type="CARD16" mask="VMod" />
+					<switch name="map">
+						<fieldref>present</fieldref>
+						<bitcase>
+							<enumref ref="MapPart">KeyTypes</enumref>
+							<list name="types_rtrn" type="KeyType">
+								<fieldref>nTypes</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeySyms</enumref>
+							<list name="syms_rtrn" type="KeySymMap">
+								<!-- 8s + 4S -->
+								<op op="+">
+									<op op="*">
+										<value>8</value>
+										<fieldref>nKeySyms</fieldref>
+									</op>
+									<op op="*">
+										<value>4</value>
+										<fieldref>totalSyms</fieldref>
+									</op>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyActions</enumref>
+							<list name="acts_rtrn_count" type="CARD8">
+								<!-- a -->
+								<fieldref>nKeyActions</fieldref>
+							</list>
+							<list name="acts_rtrn_acts" type="Action">
+								<!-- 8A -->
+								<op op="*">
+									<value>8</value>
+									<fieldref>totalActions</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyBehaviors</enumref>
+							<list name="behaviors_rtrn" type="SetBehavior">
+								<!-- 4B -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalKeyBehaviors</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualMods</enumref>
+							<list name="vmods_rtrn" type="CARD8" mask="KeyMask">
+								<!-- v -->
+								<fieldref>nVModMapKeys</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ExplicitComponents</enumref>
+							<list name="explicit_rtrn" type="SetExplicit">
+								<!-- 2E -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalKeyExplicit</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ModifierMap</enumref>
+							<list name="modmap_rtrn" type="KeyModMap">
+								<!-- 2M -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualModMap</enumref>
+							<list name="vmodmap_rtrn" type="KeyVModMap">
+								<!-- 4V -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalVModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+					</switch>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">ServerSymbols</enumref>
-					<replyof request="GetMap" name="servermap" />
+					<field name="deviceID" type="CARD8" />
+					<pad bytes="2" />
+					<field name="minKeyCode" type="KEYCODE" />
+					<field name="maxKeyCode" type="KEYCODE" />
+					<field name="present" type="CARD16" enum="MapPart" />
+					<field name="firstType" type="CARD8" />
+					<!-- t -->
+					<field name="nTypes" type="CARD8" />
+					<field name="totalTypes" type="CARD8" />
+					<field name="firstKeySym" type="KEYCODE" />
+					<!-- S -->
+					<field name="totalSyms" type="CARD16" />
+					<!-- s -->
+					<field name="nKeySyms" type="CARD8" />
+					<field name="firstKeyAction" type="KEYCODE" />
+					<!-- A -->
+					<field name="totalActions" type="CARD16" />
+					<!-- a -->
+					<field name="nKeyActions" type="CARD8" />
+					<field name="firstKeyBehavior" type="KEYCODE" />
+					<!-- b -->
+					<field name="nKeyBehaviors" type="CARD8" />
+					<!-- B -->
+					<field name="totalKeyBehaviors" type="CARD8" />
+					<field name="firstKeyExplicit" type="KEYCODE" />
+					<!-- e -->
+					<field name="nKeyExplicit" type="CARD8" />
+					<!-- E -->
+					<field name="totalKeyExplicit" type="CARD8" />
+					<field name="firstModMapKey" type="KEYCODE" />
+					<!-- m -->
+					<field name="nModMapKeys" type="CARD8" />
+					<!-- M -->
+					<field name="totalModMapKeys" type="CARD8" />
+					<field name="firstVModMapKey" type="KEYCODE" />
+					<!-- v -->
+					<field name="nVModMapKeys" type="CARD8" />
+					<!-- V -->
+					<field name="totalVModMapKeys" type="CARD8" />
+					<pad bytes="1" />
+					<field name="virtualMods" type="CARD16" mask="VMod" />
+					<switch name="map">
+						<fieldref>present</fieldref>
+						<bitcase>
+							<enumref ref="MapPart">KeyTypes</enumref>
+							<list name="types_rtrn" type="KeyType">
+								<fieldref>nTypes</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeySyms</enumref>
+							<list name="syms_rtrn" type="KeySymMap">
+								<!-- 8s + 4S -->
+								<op op="+">
+									<op op="*">
+										<value>8</value>
+										<fieldref>nKeySyms</fieldref>
+									</op>
+									<op op="*">
+										<value>4</value>
+										<fieldref>totalSyms</fieldref>
+									</op>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyActions</enumref>
+							<list name="acts_rtrn_count" type="CARD8">
+								<!-- a -->
+								<fieldref>nKeyActions</fieldref>
+							</list>
+							<list name="acts_rtrn_acts" type="Action">
+								<!-- 8A -->
+								<op op="*">
+									<value>8</value>
+									<fieldref>totalActions</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">KeyBehaviors</enumref>
+							<list name="behaviors_rtrn" type="SetBehavior">
+								<!-- 4B -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalKeyBehaviors</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualMods</enumref>
+							<list name="vmods_rtrn" type="CARD8" mask="KeyMask">
+								<!-- v -->
+								<fieldref>nVModMapKeys</fieldref>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ExplicitComponents</enumref>
+							<list name="explicit_rtrn" type="SetExplicit">
+								<!-- 2E -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalKeyExplicit</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">ModifierMap</enumref>
+							<list name="modmap_rtrn" type="KeyModMap">
+								<!-- 2M -->
+								<op op="*">
+									<value>2</value>
+									<fieldref>totalModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="MapPart">VirtualModMap</enumref>
+							<list name="vmodmap_rtrn" type="KeyVModMap">
+								<!-- 4V -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>totalVModMapKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+					</switch>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">IndicatorMap</enumref>
-					<replyof request="GetIndicatorMap" name="indicators" />
+					<field name="deviceID" type="CARD8" />
+					<field name="which" type="CARD32" />
+					<field name="realIndicators" type="CARD32" />
+					<!-- n -->
+					<field name="nIndicators" type="CARD8" />
+					<pad bytes="15" />
+					<list name="maps" type="IndicatorMap">
+						<!-- 12n -->
+						<op op="*">
+							<value>12</value>
+							<fieldref>nIndicators</fieldref>
+						</op>
+					</list>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">KeyNames</enumref>
-					<replyof request="GetNames" name="keynames" />
+					<field name="deviceID" type="CARD8" />
+					<field name="which" type="CARD32" mask="NameDetail" />
+					<field name="minKeyCode" type="KEYCODE" />
+					<field name="maxKeyCode" type="KEYCODE" />
+					<!-- t -->
+					<field name="nTypes" type="CARD8" />
+					<!-- has g bits set to 1 -->
+					<field name="groupNames" type="CARD8" mask="Group" />
+					<!-- has v bits set to 1 -->
+					<field name="virtualMods" type="CARD16" mask="VMod" />
+					<field name="firstKey" type="KEYCODE" />
+					<!-- k -->
+					<field name="nKeys" type="CARD8" />
+					<!-- has i bits set to 1 -->
+					<field name="indicators" type="CARD32" />
+					<!-- r -->
+					<field name="nRadioGroups" type="CARD8" />
+					<!-- a -->
+					<field name="nKeyAliases" type="CARD8" />
+					<!-- l -->
+					<field name="nKTLevels" type="CARD16" />
+					<pad bytes="4" />
+					<switch name="valueList">
+						<fieldref>which</fieldref>
+						<bitcase>
+							<enumref ref="NameDetail">Keycodes</enumref>
+							<field name="keycodesName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Geometry</enumref>
+							<field name="geometryName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Symbols</enumref>
+							<field name="symbolsName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">PhySymbols</enumref>
+							<field name="physSymbolsName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Types</enumref>
+							<field name="typesName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Compat</enumref>
+							<field name="compatName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyTypeNames</enumref>
+							<list name="typeNames" type="ATOM">
+								<!-- 4t -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nTypes</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KTLevelNames</enumref>
+							<list name="nLevelsPerType" type="CARD8">
+								<!-- l -->
+								<fieldref>nKTLevels</fieldref>
+							</list>
+							<list name="ktLevelNames" type="ATOM">
+								<!-- 4L -->
+								<!-- L = sum of all elements of nLevelsPerType -->
+								<op op="*">
+									<value>4</value>
+									<sumof ref="nLevelsPerType" type="CARD16" />
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">IndicatorNames</enumref>
+							<list name="indicatorNames" type="ATOM">
+								<!-- 4i -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>indicators</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">VirtualModNames</enumref>
+							<list name="virtualModNames" type="ATOM">
+								<!-- 4v -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>virtualMods</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">GroupNames</enumref>
+							<list name="groupNames" type="ATOM">
+								<!-- 4g -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>groupNames</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyNames</enumref>
+							<list name="keyNames" type="KeyName">
+								<!-- 4k -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyAliases</enumref>
+							<list name="keyAliases" type="KeyAlias">
+								<!-- 8a -->
+								<op op="*">
+									<value>8</value>
+									<fieldref>nKeyAliases</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">RGNames</enumref>
+							<list name="radioGroupNames" type="ATOM">
+								<!-- 4r -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nRadioGroups</fieldref>
+								</op>
+							</list>
+						</bitcase>
+					</switch>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">OtherNames</enumref>
-					<replyof request="GetNames" name="othernames" />
+					<field name="deviceID" type="CARD8" />
+					<field name="which" type="CARD32" mask="NameDetail" />
+					<field name="minKeyCode" type="KEYCODE" />
+					<field name="maxKeyCode" type="KEYCODE" />
+					<!-- t -->
+					<field name="nTypes" type="CARD8" />
+					<!-- has g bits set to 1 -->
+					<field name="groupNames" type="CARD8" mask="Group" />
+					<!-- has v bits set to 1 -->
+					<field name="virtualMods" type="CARD16" mask="VMod" />
+					<field name="firstKey" type="KEYCODE" />
+					<!-- k -->
+					<field name="nKeys" type="CARD8" />
+					<!-- has i bits set to 1 -->
+					<field name="indicators" type="CARD32" />
+					<!-- r -->
+					<field name="nRadioGroups" type="CARD8" />
+					<!-- a -->
+					<field name="nKeyAliases" type="CARD8" />
+					<!-- l -->
+					<field name="nKTLevels" type="CARD16" />
+					<pad bytes="4" />
+					<switch name="valueList">
+						<fieldref>which</fieldref>
+						<bitcase>
+							<enumref ref="NameDetail">Keycodes</enumref>
+							<field name="keycodesName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Geometry</enumref>
+							<field name="geometryName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Symbols</enumref>
+							<field name="symbolsName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">PhySymbols</enumref>
+							<field name="physSymbolsName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Types</enumref>
+							<field name="typesName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">Compat</enumref>
+							<field name="compatName" type="ATOM" />
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyTypeNames</enumref>
+							<list name="typeNames" type="ATOM">
+								<!-- 4t -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nTypes</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KTLevelNames</enumref>
+							<list name="nLevelsPerType" type="CARD8">
+								<!-- l -->
+								<fieldref>nKTLevels</fieldref>
+							</list>
+							<list name="ktLevelNames" type="ATOM">
+								<!-- 4L -->
+								<!-- L = sum of all elements of nLevelsPerType -->
+								<op op="*">
+									<value>4</value>
+									<sumof ref="nLevelsPerType" type="CARD16" />
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">IndicatorNames</enumref>
+							<list name="indicatorNames" type="ATOM">
+								<!-- 4i -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>indicators</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">VirtualModNames</enumref>
+							<list name="virtualModNames" type="ATOM">
+								<!-- 4v -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>virtualMods</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">GroupNames</enumref>
+							<list name="groupNames" type="ATOM">
+								<!-- 4g -->
+								<op op="*">
+									<value>4</value>
+									<popcount>
+										<fieldref>groupNames</fieldref>
+									</popcount>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyNames</enumref>
+							<list name="keyNames" type="KeyName">
+								<!-- 4k -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nKeys</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">KeyAliases</enumref>
+							<list name="keyAliases" type="KeyAlias">
+								<!-- 8a -->
+								<op op="*">
+									<value>8</value>
+									<fieldref>nKeyAliases</fieldref>
+								</op>
+							</list>
+						</bitcase>
+						<bitcase>
+							<enumref ref="NameDetail">RGNames</enumref>
+							<list name="radioGroupNames" type="ATOM">
+								<!-- 4r -->
+								<op op="*">
+									<value>4</value>
+									<fieldref>nRadioGroups</fieldref>
+								</op>
+							</list>
+						</bitcase>
+					</switch>
 				</bitcase>
 				<bitcase>
 					<enumref ref="GBNDetail">Geometry</enumref>
-					<replyof request="GetGeometry" name="geometry" />
+					<field name="deviceID" type="CARD8" />
+					<field name="name" type="ATOM" />
+					<field name="found" type="BOOL" />
+					<pad bytes="1" />
+					<field name="widthMM" type="CARD16" />
+					<field name="heightMM" type="CARD16" />
+					<!-- p -->
+					<field name="nProperties" type="CARD16" />
+					<!-- c -->
+					<field name="nColors" type="CARD16" />
+					<!-- h -->
+					<field name="nShapes" type="CARD16" />
+					<!-- s -->
+					<field name="nSections" type="CARD16" />
+					<!-- d -->
+					<field name="nDoodads" type="CARD16" />
+					<!-- a -->
+					<field name="nKeyAliases" type="CARD16" />
+					<field name="baseColorNdx" type="CARD8" />
+					<field name="labelColorNdx" type="CARD8" />
+					<field name="labelFont" type="CountedString16" />
+					<list name="properties" type="Property">
+						<!-- 8p -->
+						<op op="*">
+							<value>8</value>
+							<fieldref>nProperties</fieldref>
+						</op>
+					</list>
+					<list name="colors" type="CountedString16">
+						<!-- c -->
+						<fieldref>nColors</fieldref>
+					</list>
+					<list name="shapes" type="Shape">
+						<!-- h -->
+						<fieldref>nShapes</fieldref>
+					</list>
+					<list name="sections" type="Section">
+						<!-- s -->
+						<fieldref>nSections</fieldref>
+					</list>
+					<list name="doodads" type="Doodad">
+						<!-- d -->
+						<fieldref>nDoodads</fieldref>
+					</list>
+					<list name="keyAliases" type="KeyAlias">
+						<!-- a -->
+						<fieldref>nKeyAliases</fieldref>
+					</list>
 				</bitcase>
 			</switch>
 		</reply>
