xinput: struct FeedbackCtl: full support
[free-sw/xcb/proto] / src / xinput.xml
index 98f7dec..c99d20c 100644 (file)
@@ -46,7 +46,6 @@ This will, e.g., be necessary for automatically generated byte-order conversion
 which will, e.g., be necessary for server-side xcb.
 
 This affects the following:
-* ChangeFeedbackControl request field "feedback" ( structs FeedbackCtl, ... )
 * QueryDeviceState reply field "classes" ( structs InputState, ... )
 * GetDeviceControl reply field "control"  ( structs DeviceState, ... )
 * ChangeDeviceControl request field "control" ( structs ChangeDeviceControl, ... )
@@ -761,12 +760,51 @@ in struct DeviceTimeCoord.
         <field type="CARD8"  name="class_id" enum="FeedbackClass" />
         <field type="CARD8"  name="feedback_id" />
         <field type="CARD16" name="len" />
-        <list type="CARD8" name="uninterpreted_data">
-            <op op="-">
-                <fieldref>len</fieldref>
-                <value>4</value>
-            </op>
-        </list>
+        <switch name="data">
+           <fieldref>class_id</fieldref>
+            <case name="keyboard">
+                <enumref ref="FeedbackClass">Keyboard</enumref>
+               <field type="KeyCode" name="key" />
+               <field type="CARD8"   name="auto_repeat_mode" />
+               <field type="INT8"    name="key_click_percent" />
+               <field type="INT8"    name="bell_percent" />
+               <field type="INT16"   name="bell_pitch" />
+               <field type="INT16"   name="bell_duration" />
+               <field type="CARD32"  name="led_mask" />
+               <field type="CARD32"  name="led_values" />
+            </case>
+            <case name="pointer">
+                <enumref ref="FeedbackClass">Pointer</enumref>
+               <pad bytes="2" />
+               <field type="INT16"  name="num" />
+               <field type="INT16"  name="denom" />
+               <field type="INT16"  name="threshold" />
+            </case>
+            <case name="string">
+                <enumref ref="FeedbackClass">String</enumref>
+               <pad bytes="2" />
+               <field type="CARD16" name="num_keysyms" />
+               <list type="KEYSYM"  name="keysyms">
+                   <fieldref>num_keysyms</fieldref>
+               </list>
+            </case>
+            <case name="integer">
+                <enumref ref="FeedbackClass">Integer</enumref>
+               <field type="INT32"  name="int_to_display" />
+            </case>
+            <case name="led">
+                <enumref ref="FeedbackClass">Led</enumref>
+               <field type="CARD32" name="led_mask" />
+               <field type="CARD32" name="led_values" />
+            </case>
+            <case name="bell">
+                <enumref ref="FeedbackClass">Bell</enumref>
+               <field type="INT8"   name="percent" />
+               <pad bytes="3" />
+               <field type="INT16"  name="pitch" />
+               <field type="INT16"  name="duration" />
+            </case>
+       </switch>
     </struct>
 
     <enum name="ChangeFeedbackControlMask">