1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<!-- a request with padding *after* a complex type -->
<enum name="DeviceClassType">
<item name="Key"> <value>0</value> </item>
<item name="Button"> <value>1</value> </item>
<item name="Valuator"> <value>2</value> </item>
<item name="Scroll"> <value>3</value> </item>
<item name="Touch"> <value>8</value> </item>
<item name="Gesture"> <value>9</value> </item>
</enum>
<struct name="DeviceClass">
<length>
<op op="*">
<fieldref>len</fieldref>
<value>4</value>
</op>
</length>
<field type="CARD16" name="type" enum="DeviceClassType" />
<field type="CARD16" name="len" />
<field type="DeviceId" name="sourceid" />
<switch name="data">
<fieldref>type</fieldref>
<required_start_align align="4" offset="2" />
<case name="key">
<enumref ref="DeviceClassType">Key</enumref>
<required_start_align align="4" offset="2" />
<field type="CARD16" name="num_keys" />
<list type="CARD32" name="keys">
<fieldref>num_keys</fieldref>
</list>
</case>
<case name="button">
<enumref ref="DeviceClassType">Button</enumref>
<required_start_align align="4" offset="2" />
<field type="CARD16" name="num_buttons" />
<list type="CARD32" name="state">
<op op="/">
<op op="+">
<fieldref>num_buttons</fieldref>
<value>31</value>
</op>
<value>32</value>
</op>
</list>
<list type="ATOM" name="labels">
<fieldref>num_buttons</fieldref>
</list>
</case>
<case name="valuator">
<enumref ref="DeviceClassType">Valuator</enumref>
<required_start_align align="4" offset="2" />
<field type="CARD16" name="number" />
<field type="ATOM" name="label" />
<field type="FP3232" name="min" />
<field type="FP3232" name="max" />
<field type="FP3232" name="value" />
<field type="CARD32" name="resolution" />
<field type="CARD8" name="mode" enum="ValuatorMode" />
<pad bytes="3" />
</case>
<case name="scroll">
<enumref ref="DeviceClassType">Scroll</enumref>
<required_start_align align="4" offset="2" />
<field type="CARD16" name="number" />
<field type="CARD16" name="scroll_type" enum="ScrollType" />
<pad bytes="2" />
<field type="CARD32" name="flags" mask="ScrollFlags" />
<field type="FP3232" name="increment" />
</case>
<case name="touch">
<enumref ref="DeviceClassType">Touch</enumref>
<field type="CARD8" name="mode" enum="TouchMode" />
<field type="CARD8" name="num_touches" />
</case>
<case name="gesture">
<enumref ref="DeviceClassType">Gesture</enumref>
<field type="CARD8" name="num_touches" />
<pad bytes="1" />
</case>
</switch>
</struct>
|