<item name="ControlsEnabled"> <bit>31</bit> </item>
</enum>
- <enum name="AXFBOpt">
+ <enum name="AXOption">
<item name="SKPressFB"> <bit>0</bit> </item>
<item name="SKAcceptFB"> <bit>1</bit> </item>
<item name="FeatureFB"> <bit>2</bit> </item>
<item name="SlowWarnFB"> <bit>3</bit> </item>
<item name="IndicatorFB"> <bit>4</bit> </item>
<item name="StickyKeysFB"> <bit>5</bit> </item>
- <item name="SKReleaseFB"> <bit>6</bit> </item>
- <item name="SKRejectFB"> <bit>7</bit> </item>
- <item name="BKRejectFB"> <bit>8</bit> </item>
- <item name="DumbBell"> <bit>9</bit> </item>
+ <item name="TwoKeys"> <bit>6</bit> </item>
+ <item name="LatchToLock"> <bit>7</bit> </item>
+ <item name="SKReleaseFB"> <bit>8</bit> </item>
+ <item name="SKRejectFB"> <bit>9</bit> </item>
+ <item name="BKRejectFB"> <bit>10</bit> </item>
+ <item name="DumbBell"> <bit>11</bit> </item>
</enum>
- <enum name="AXSKOpt">
- <item name="TwoKeys"> <bit>6</bit> </item>
- <item name="LatchToLock"> <bit>7</bit> </item>
- </enum>
-
- <union name="AXOption">
- <field name="fbopt" type="CARD16" enum="AXFBOpt" />
- <field name="skopt" type="CARD16" enum="AXSKOpt" />
- </union>
-
<typedef oldname="CARD16" newname="DeviceSpec" />
<enum name="LedClassResult">
<typedef oldname="char" newname="STRING8" />
+ <!-- XXX: Property is broken
<struct name="Property">
<field name="nameLength" type="CARD16" />
<list name="name" type="STRING8">
<fieldref>valueLength</fieldref>
</list>
</struct>
+ -->
+ <!-- XXX: This would be the correct Property structure as per spec.,
+ but it's broken atm. too. Add it anyway here, so we don't
+ loose that information.
+ <struct name="Property">
+ <field name="name" type="CountedString16" />
+ <field name="value" type="CountedString16" />
+ </struct>
+ -->
<struct name="Outline">
<field name="nPoints" type="CARD8" />
<item name="Logo"> <value>5</value> </item>
</enum>
+ <!-- XXX: doodads are broken
<struct name="CommonDoodad">
<field name="name" type="ATOM" />
<field name="type" type="CARD8" enum="DoodadType" />
<field name="top" type="INT16" />
<field name="left" type="INT16" />
<field name="angle" type="INT16" />
+ <pad bytes="8" />
</struct>
<struct name="ShapeDoodad">
<fieldref>nOverlays</fieldref>
</list>
</struct>
+ -->
<struct name="Listing">
<field name="flags" type="CARD16" />
<pad bytes="1" />
<field name="button" type="CARD8" />
<field name="device" type="CARD8" />
+ <pad bytes="3" />
</struct>
<enum name="SAValWhat">
<field name="lockGroup" type="BOOL" />
<field name="groupLock" type="CARD8" enum="Group" />
<field name="affectModLatches" type="CARD8" mask="ModMask" />
+ <pad bytes="1" /> <!-- This pad is a workaround to prevent an API break,
+ which the following field (correct fix) would cause.
+ <field name="modLatches" type="CARD8" mask="ModMask" />
+ -->
<pad bytes="1" />
<field name="latchGroup" type="BOOL" />
<field name="groupLatch" type="CARD16" />
<field name="mouseKeysTimeToMax" type="CARD16" />
<field name="mouseKeysMaxSpeed" type="CARD16" />
<field name="mouseKeysCurve" type="INT16" />
- <field name="accessXOption" type="AXOption" />
+ <field name="accessXOption" type="CARD16" mask="AXOption" />
<field name="accessXTimeout" type="CARD16" />
- <field name="accessXTimeoutOptionsMask" type="AXOption" />
- <field name="accessXTimeoutOptionsValues" type="AXOption" />
+ <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
+ <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
<pad bytes="2" />
<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
<field name="ignoreLockVirtualMods" type="CARD16" mask="VMod" />
<field name="mouseKeysDfltBtn" type="CARD8" />
<field name="groupsWrap" type="CARD8" />
- <field name="accessXOptions" type="AXOption" />
+ <field name="accessXOptions" type="CARD16" mask="AXOption" />
<pad bytes="2" />
<field name="affectEnabledControls" type="CARD32" mask="BoolCtrl" />
<field name="enabledControls" type="CARD32" mask="BoolCtrl" />
<field name="accessXTimeout" type="CARD16" />
<field name="accessXTimeoutMask" type="CARD32" mask="BoolCtrl" />
<field name="accessXTimeoutValues" type="CARD32" mask="BoolCtrl" />
- <field name="accessXTimeoutOptionsMask" type="AXOption" />
- <field name="accessXTimeoutOptionsValues" type="AXOption" />
+ <field name="accessXTimeoutOptionsMask" type="CARD16" mask="AXOption" />
+ <field name="accessXTimeoutOptionsValues" type="CARD16" mask="AXOption" />
<list name="perKeyRepeat" type="CARD8">
<value>32</value>
</list>
<list name="acts_rtrn_count" type="CARD8">
<fieldref>nKeyActions</fieldref>
</list>
- <list type="CARD8" name="alignment_pad">
- <op op="-">
- <op op="&">
- <op op="+">
- <fieldref>nKeyActions</fieldref>
- <value>3</value>
- </op>
- <unop op="~">
- <value>3</value>
- </unop>
- </op>
- <fieldref>nKeyActions</fieldref>
- </op>
- </list>
+ <pad align="4" />
<list name="acts_rtrn_acts" type="Action">
<fieldref>totalActions</fieldref>
</list>
<list name="vmods_rtrn" type="CARD8" mask="ModMask">
<popcount><fieldref>virtualMods</fieldref></popcount>
</list>
- <list type="CARD8" name="alignment_pad2">
- <op op="-">
- <op op="&">
- <op op="+">
- <popcount><fieldref>virtualMods</fieldref></popcount>
- <value>3</value>
- </op>
- <unop op="~">
- <value>3</value>
- </unop>
- </op>
- <popcount><fieldref>virtualMods</fieldref></popcount>
- </op>
- </list>
+ <pad align="4" />
</bitcase>
<bitcase>
<enumref ref="MapPart">ExplicitComponents</enumref>
<list name="explicit_rtrn" type="SetExplicit">
<fieldref>totalKeyExplicit</fieldref>
</list>
- <list type="CARD16" name="alignment_pad3">
- <op op="-">
- <op op="&">
- <op op="+">
- <fieldref>totalKeyExplicit</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- <fieldref>totalKeyExplicit</fieldref>
- </op>
- </list>
+ <pad align="4" />
</bitcase>
<bitcase>
<enumref ref="MapPart">ModifierMap</enumref>
<list name="modmap_rtrn" type="KeyModMap">
<fieldref>totalModMapKeys</fieldref>
</list>
- <list type="CARD16" name="alignment_pad4">
- <op op="-">
- <op op="&">
- <op op="+">
- <fieldref>totalModMapKeys</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- <fieldref>totalModMapKeys</fieldref>
- </op>
- </list>
+ <pad align="4" />
</bitcase>
<bitcase>
<enumref ref="MapPart">VirtualModMap</enumref>
<bitcase>
<enumref ref="NameDetail">KTLevelNames</enumref>
<list name="nLevelsPerType" type="CARD8">
- <fieldref>nKTLevels</fieldref>
+ <fieldref>nTypes</fieldref>
</list>
<list name="ktLevelNames" type="ATOM">
<sumof ref="nLevelsPerType" />
</switch>
</request>
+ <!-- XXX: Property and doodads are broken, which renders GetGeometry useless
<request name="GetGeometry" opcode="19">
<field name="deviceSpec" type="DeviceSpec" />
<pad bytes="2" />
</list>
</reply>
</request>
+ -->
+ <!-- XXX: Property and doodads are broken, which renders SetGeometry useless
<request name="SetGeometry" opcode="20">
<field name="deviceSpec" type="DeviceSpec" />
<field name="nShapes" type="CARD8" />
<fieldref>nKeyAliases</fieldref>
</list>
</request>
+ -->
<request name="PerClientFlags" opcode="21">
<field name="deviceSpec" type="DeviceSpec" />
<request name="ListComponents" opcode="22">
<field name="deviceSpec" type="DeviceSpec" />
<field name="maxNames" type="CARD16" />
+ <!-- XXX: Intermixed fixed size fields and lists are broken
<field name="keymapsSpecLen" type="CARD8" />
<list name="keymapsSpec" type="STRING8">
<fieldref>keymapsSpecLen</fieldref>
<list name="geometrySpec" type="STRING8">
<fieldref>geometrySpecLen</fieldref>
</list>
+ -->
<reply>
<field name="deviceID" type="CARD8" />
<field name="nKeymaps" type="CARD16" />
<field name="want" type="CARD16" mask="GBNDetail" />
<field name="load" type="BOOL" />
<pad bytes="1" />
+ <!-- XXX: Intermixed fixed size fields and lists are broken
<field name="keymapsSpecLen" type="CARD8" />
<list name="keymapsSpec" type="STRING8">
<fieldref>keymapsSpecLen</fieldref>
<list name="geometrySpec" type="STRING8">
<fieldref>geometrySpecLen</fieldref>
</list>
+ -->
<reply>
<field name="deviceID" type="CARD8" />
<field name="minKeyCode" type="KEYCODE" />
<bitcase>
<enumref ref="NameDetail">KTLevelNames</enumref>
<list name="nLevelsPerType" type="CARD8">
- <fieldref>nKTLevels</fieldref>
+ <fieldref>nTypes</fieldref>
</list>
<list name="ktLevelNames" type="ATOM">
<sumof ref="nLevelsPerType" />
<field name="baseColorNdx" type="CARD8" />
<field name="labelColorNdx" type="CARD8" />
<field name="labelFont" type="CountedString16" />
+ <!-- XXX: Property is broken
<list name="properties" type="Property">
<fieldref>nProperties</fieldref>
</list>
<list name="shapes" type="Shape">
<fieldref>nShapes</fieldref>
</list>
+ -->
+ <!-- XXX: doodads are broken
<list name="sections" type="Section">
<fieldref>nSections</fieldref>
</list>
<list name="keyAliases" type="KeyAlias">
<fieldref>nKeyAliases</fieldref>
</list>
+ -->
</bitcase>
</switch>
</reply>
<pad bytes="1" />
<field name="reason" type="CARD16" mask="XIFeature" />
<field name="ledClass" type="CARD16" enum="LedClassResult" />
- <field name="ledID" type="CARD8" />
+ <field name="ledID" type="CARD16" />
<field name="ledsDefined" type="CARD32" />
<field name="ledState" type="CARD32" />
<field name="firstButton" type="CARD8" />