-->
<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
- major-version="2" minor-version="0">
+ major-version="2" minor-version="3">
+ <import>xfixes</import>
<import>xproto</import>
<!-- ⋅⋅⋅ Types (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
<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>
</struct>
<request name="GetFeedbackControl" opcode="22">
<pad bytes="1" />
<field type="CARD16" name="num_feedbacks" />
<pad bytes="22" />
- <!-- Uninterpreted: list (feedbacks) of FeedbackState structures -->
+ <list type="FeedbackState" name="feedbacks">
+ <fieldref>num_feedbacks</fieldref>
+ </list>
</reply>
</request>
<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>
</struct>
<request name="ChangeFeedbackControl" opcode="23">
<field type="CARD32" name="mask" />
<field type="CARD8" name="device_id" />
<field type="CARD8" name="feedback_id" />
- <!-- Uninterpreted: field (feedback) of FeedbackCtl structure -->
+ <field type="FeedbackCtl" name="feedback" />
</request>
<!-- GetDeviceKeyMapping -->
<field type="CARD8" name="class_id" enum="InputClass" />
<field type="CARD8" name="len" />
<field type="CARD8" name="num_items" />
+ <pad bytes="1" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
</struct>
<request name="QueryDeviceState" opcode="30">
<pad bytes="1" />
<field type="CARD8" name="num_classes" />
<pad bytes="23" />
- <!-- Uninterpreted: list (classes) of InputState structures -->
+ <list type="InputState" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</reply>
</request>
<struct name="DeviceState">
<field type="CARD16" name="control_id" enum="DeviceControl" />
<field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
</struct>
<request name="GetDeviceControl" opcode="34">
<pad bytes="1" />
<field type="CARD8" name="status" altenum="GrabStatus" />
<pad bytes="23" />
- <!-- Uninterpreted: field (control) of DeviceState structure -->
+ <field type="DeviceState" name="control" />
</reply>
</request>
<struct name="DeviceCtl">
<field type="CARD16" name="control_id" enum="DeviceControl" />
<field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ </list>
</struct>
<request name="ChangeDeviceControl" opcode="35">
<field type="CARD16" name="control_id" enum="DeviceControl" />
<field type="CARD8" name="device_id" />
<pad bytes="1" />
- <!-- Uninterpreted: field (control) of DeviceCtl structure -->
+ <field type="DeviceCtl" name="control" />
<reply>
<pad bytes="1" />
<field type="CARD8" name="status" altenum="GrabStatus" />
<struct name="HierarchyChange">
<field type="CARD16" name="type" enum="HierarchyChangeType" />
<field type="CARD16" name="len" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <op op="*">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ <value>4</value>
+ </op>
+ </list>
</struct>
<request name="XIChangeHierarchy" opcode="43">
<field type="CARD8" name="num_changes" />
- <!-- Uninterpreted: list (changes) of HierarchyChange structures -->
+ <list type="HierarchyChange" name="changes">
+ <fieldref>num_changes</fieldref>
+ </list>
</request>
<!-- XISetClientPointer -->
<field type="CARD16" name="len" />
<field type="DeviceId" name="sourceid" />
<pad bytes="2" />
+ <list type="CARD8" name="uninterpreted_data">
+ <op op="-">
+ <op op="*">
+ <fieldref>len</fieldref>
+ <value>4</value>
+ </op>
+ <value>8</value>
+ </op>
+ </list>
</struct>
<struct name="XIDeviceInfo">
<value>4</value>
</op>
</list>
- <!-- Uninterpreted: list (classes) of DeviceClass structures -->
+ <list type="DeviceClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
</struct>
<request name="XIQueryDevice" opcode="48">
</reply>
</request>
+ <!-- ⋅⋅⋅ Requests (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <!-- XIBarrierReleasePointer -->
+
+ <struct name="BarrierReleasePointerInfo">
+ <field type="DeviceId" name="deviceid" />
+ <pad bytes="2" />
+ <field type="BARRIER" name="barrier" />
+ <field type="CARD32" name="eventid" />
+ </struct>
+
+ <request name="XIBarrierReleasePointer" opcode="61">
+ <field type="CARD32" name="num_barriers" />
+ <list type="BarrierReleasePointerInfo" name="barriers">
+ <fieldref>num_barriers</fieldref>
+ </list>
+ </request>
+
<!-- ⋅⋅⋅ Events (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
<!-- Notes:
- A 'len' field in a v1++ structure is in bytes.
<!-- 32 byte boundary -->
</event>
+ <!-- ⋅⋅⋅ Events (v2.1) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <event name="RawKeyPress" number="13" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="KeyEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawKeyRelease" number="14" ref="RawKeyPress" />
+
+ <event name="RawButtonPress" number="15" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="PointerEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawButtonRelease" number="16" ref="RawButtonPress" />
+ <eventcopy name="RawMotion" number="17" ref="RawButtonPress" />
+
+ <!-- ⋅⋅⋅ Events (v2.2) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <enum name="TouchEventFlags">
+ <item name="TouchPendingEnd"> <bit>16</bit> </item>
+ <item name="TouchEmulatingPointer"> <bit>17</bit> </item>
+ </enum>
+
+ <event name="TouchBegin" number="18" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP1616" name="event_x" />
+ <field type="FP1616" name="event_y" />
+ <field type="CARD16" name="buttons_len" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="TouchEventFlags" />
+ <field type="ModifierInfo" name="mods" />
+ <field type="GroupInfo" name="group" />
+ <list type="CARD32" name="button_mask">
+ <fieldref>buttons_len</fieldref>
+ </list>
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="TouchUpdate" number="19" ref="TouchBegin" />
+ <eventcopy name="TouchEnd" number="20" ref="TouchBegin" />
+
+ <enum name="TouchOwnershipFlags">
+ <!-- XXX: Remove this enum? Currently, no flag is defined. -->
+ <item name="None" />
+ </enum>
+
+ <event name="TouchOwnership" number="21" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="touchid" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" />
+ <!-- 32 byte boundary -->
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" enum="TouchOwnershipFlags" />
+ <pad bytes="8" />
+ </event>
+
+ <event name="RawTouchBegin" number="22" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="detail" />
+ <field type="DeviceId" name="sourceid" />
+ <field type="CARD16" name="valuators_len" />
+ <field type="CARD32" name="flags" mask="TouchEventFlags"/>
+ <pad bytes="4" />
+ <!-- 32 byte boundary -->
+ <list type="CARD32" name="valuator_mask">
+ <fieldref>valuators_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list (axisvalues) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ <!-- Uninterpreted: list (axisvalues_raw) of FP3232,
+ length is <popcount> on valuator_mask list -->
+ </event>
+
+ <eventcopy name="RawTouchUpdate" number="23" ref="RawTouchBegin" />
+ <eventcopy name="RawTouchEnd" number="24" ref="RawTouchBegin" />
+
+ <!-- ⋅⋅⋅ Events (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
+
+ <event name="BarrierHit" number="25" xge="true">
+ <field type="DeviceId" name="deviceid" altenum="Device" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <!-- event specific fields -->
+ <field type="CARD32" name="eventid" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="BARRIER" name="barrier" />
+ <!-- 32 byte boundary -->
+ <field type="CARD32" name="dtime" />
+ <field type="CARD32" name="flags" />
+ <field type="DeviceId" name="sourceid" altenum="Device" />
+ <pad bytes="2" />
+ <field type="FP1616" name="root_x" />
+ <field type="FP1616" name="root_y" />
+ <field type="FP3232" name="dx" />
+ <field type="FP3232" name="dy" />
+ </event>
+
+ <eventcopy name="BarrierLeave" number="26" ref="BarrierHit" />
+
<!-- ⋅⋅⋅ Errors (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ -->
<error name="Device" number="0" />