xinput: struct FeedbackState: full support
[free-sw/xcb/proto] / src / xinput.xml
index b20a069..c7e57a5 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:
-* GetFeedbackControl reply field "feedbacks" ( structs FeedbackState, ... )
 * ChangeFeedbackControl request field "feedback" ( structs FeedbackCtl, ... )
 * QueryDeviceState reply field "classes" ( structs InputState, ... )
 * GetDeviceControl reply field "control"  ( structs DeviceState, ... )
@@ -68,13 +67,6 @@ This is needed for the following XI2-events ( and eventcopies thereof )
        TouchBegin
        RawTouchBegin
 
-
-*****
-
-<sumof> should support fields of listmembers.
-
-This is needed for request "ListInputDevices"
-
 *****
 
 xml and generator should support
@@ -182,38 +174,12 @@ in struct DeviceTimeCoord.
         <pad bytes="1" />
     </struct>
 
-    <struct name="KeyInfo">
-        <field type="CARD8"   name="class_id" enum="InputClass" />
-        <field type="CARD8"   name="len" />
-        <field type="KeyCode" name="min_keycode" />
-        <field type="KeyCode" name="max_keycode" />
-        <field type="CARD16"  name="num_keys" />
-        <pad bytes="2" />
-    </struct>
-
-    <struct name="ButtonInfo">
-        <field type="CARD8"  name="class_id" enum="InputClass" />
-        <field type="CARD8"  name="len" />
-        <field type="CARD16" name="num_buttons" />
-    </struct>
-
     <struct name="AxisInfo">
         <field type="CARD32" name="resolution" />
         <field type="INT32"  name="minimum" />
         <field type="INT32"  name="maximum" />
     </struct>
 
-    <struct name="ValuatorInfo">
-        <field type="CARD8"   name="class_id" enum="InputClass" />
-        <field type="CARD8"   name="len" />
-        <field type="CARD8"   name="axes_len" />
-        <field type="CARD8"   name="mode" enum="ValuatorMode" />
-        <field type="CARD32"  name="motion_size" />
-        <list type="AxisInfo" name="axes">
-            <fieldref>axes_len</fieldref>
-        </list>
-    </struct>
-
     <struct name="InputInfo">
         <field type="CARD8" name="class_id" enum="InputClass" />
         <field type="CARD8" name="len" />
@@ -242,13 +208,6 @@ in struct DeviceTimeCoord.
        </switch>
     </struct>
 
-    <struct name="DeviceName">
-        <field type="CARD8" name="len" />
-        <list type="char"  name="string">
-            <fieldref>len</fieldref>
-        </list>
-    </struct>
-
     <request name="ListInputDevices" opcode="2">
         <reply>
             <field type="CARD8" name="xi_reply_type" />
@@ -638,12 +597,56 @@ 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="CARD16" name="pitch" />
+                <field type="CARD16" name="duration" />
+                <field type="CARD32" name="led_mask" />
+                <field type="CARD32" name="led_values" />
+                <field type="BOOL"   name="global_auto_repeat" />
+                <field type="CARD8"  name="click" />
+                <field type="CARD8"  name="percent" />
+                <pad bytes="1" />
+                <list type="CARD8" name="auto_repeats">
+                    <value>32</value>
+                </list>
+            </case>
+            <case name="pointer">
+                <enumref ref="FeedbackClass">Pointer</enumref>
+                <pad bytes="2" />
+                <field type="CARD16" name="accel_num" />
+                <field type="CARD16" name="accel_denom" />
+                <field type="CARD16" name="threshold" />
+            </case>
+            <case name="string">
+                <enumref ref="FeedbackClass">String</enumref>
+                <field type="CARD16" name="max_symbols" />
+                <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="CARD32" name="resolution" />
+                <field type="INT32"  name="min_value" />
+                <field type="INT32"  name="max_value" />
+            </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="CARD8"  name="percent" />
+                <pad bytes="3" />
+                <field type="CARD16" name="pitch" />
+                <field type="CARD16" name="duration" />
+            </case>
+        </switch>
     </struct>
 
     <request name="GetFeedbackControl" opcode="22">