diff options
-rw-r--r-- | src/xinput.xml | 799 |
1 files changed, 797 insertions, 2 deletions
diff --git a/src/xinput.xml b/src/xinput.xml index 20ac52b..b6bcaa7 100644 --- a/src/xinput.xml +++ b/src/xinput.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -Copyright (C) 2006 Peter Hutterer +Copyright (C) 2006 Peter Hutterer +Copyright (C) 2013 Daniel Martin All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -28,10 +29,11 @@ authorization from the authors. <!-- Specifications: http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XIproto.txt + http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XI2proto.txt --> <xcb header="xinput" extension-xname="XInputExtension" extension-name="Input" - major-version="1" minor-version="5"> + major-version="2" minor-version="0"> <import>xproto</import> <!-- ⋅⋅⋅ Types (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> @@ -39,6 +41,16 @@ authorization from the authors. <typedef oldname="CARD32" newname="EventClass" /> <typedef oldname="CARD8" newname="KeyCode" /> + <!-- ⋅⋅⋅ Types (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> + + <typedef oldname="CARD16" newname="DeviceId" /> + <typedef oldname="INT32" newname="FP1616" /> + + <struct name="FP3232"> + <field type="INT32" name="integral" /> + <field type="CARD32" name="frac" /> + </struct> + <!-- ⋅⋅⋅ Requests (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> <!-- GetExtensionVersion --> @@ -1046,6 +1058,594 @@ authorization from the authors. </reply> </request> + <!-- ⋅⋅⋅ Requests (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> + + <!-- XIQueryPointer --> + + <enum name="Device"> + <item name="All" /> + <item name="AllMaster" /> + </enum> + + <struct name="GroupInfo"> + <field type="CARD8" name="base" /> + <field type="CARD8" name="latched" /> + <field type="CARD8" name="locked" /> + <field type="CARD8" name="effective" /> + </struct> + + <struct name="ModifierInfo"> + <field type="CARD32" name="base" /> + <field type="CARD32" name="latched" /> + <field type="CARD32" name="locked" /> + <field type="CARD32" name="effective" /> + </struct> + + <request name="XIQueryPointer" opcode="40"> + <field type="WINDOW" name="window" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + <reply> + <pad bytes="1" /> + <field type="WINDOW" name="root" /> + <field type="WINDOW" name="child" /> + <field type="FP1616" name="root_x" /> + <field type="FP1616" name="root_y" /> + <field type="FP1616" name="win_x" /> + <field type="FP1616" name="win_y" /> + <field type="CARD8" name="same_screen" /> + <pad bytes="1" /> + <field type="CARD16" name="buttons_len" /> + <field type="ModifierInfo" name="mods" /> + <field type="GroupInfo" name="group" /> + <list type="CARD32" name="buttons"> + <fieldref>buttons_len</fieldref> + </list> + </reply> + </request> + + <!-- XIWarpPointer --> + + <request name="XIWarpPointer" opcode="41"> + <field type="WINDOW" name="src_win" /> + <field type="WINDOW" name="dst_win" /> + <field type="FP1616" name="src_x" /> + <field type="FP1616" name="src_y" /> + <field type="CARD16" name="src_width" /> + <field type="CARD16" name="src_height" /> + <field type="FP1616" name="dst_x" /> + <field type="FP1616" name="dst_y" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </request> + + <!-- XIChangeCursor --> + + <request name="XIChangeCursor" opcode="42"> + <field type="WINDOW" name="window" /> + <field type="CURSOR" name="cursor" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </request> + + <!-- XIChangeHierarchy --> + + <enum name="HierarchyChangeType"> + <item name="AddMaster"> <value>1</value> </item> + <item name="RemoveMaster"> <value>2</value> </item> + <item name="AttachSlave"> <value>3</value> </item> + <item name="DetachSlave"> <value>4</value> </item> + </enum> + + <enum name="ChangeMode"> + <item name="Attach"> <value>1</value> </item> + <item name="Float"> <value>2</value> </item> + </enum> + + <struct name="AddMaster"> + <field type="CARD16" name="type" enum="HierarchyChangeType" /> + <field type="CARD16" name="len" /> + <field type="CARD16" name="name_len" /> + <field type="CARD8" name="send_core" /> + <field type="CARD8" name="enable" /> + <list type="char" name="name"> + <fieldref>name_len</fieldref> + </list> + </struct> + + <struct name="RemoveMaster"> + <field type="CARD16" name="type" enum="HierarchyChangeType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD8" name="return_mode" enum="ChangeMode" /> + <pad bytes="1" /> + <field type="DeviceId" name="return_pointer" altenum="Device" /> + <field type="DeviceId" name="return_keyboard" altenum="Device" /> + </struct> + + <struct name="AttachSlave"> + <field type="CARD16" name="type" enum="HierarchyChangeType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="DeviceId" name="master" altenum="Device" /> + </struct> + + <struct name="DetachSlave"> + <field type="CARD16" name="type" enum="HierarchyChangeType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </struct> + + <struct name="HierarchyChange"> + <field type="CARD16" name="type" enum="HierarchyChangeType" /> + <field type="CARD16" name="len" /> + </struct> + + <request name="XIChangeHierarchy" opcode="43"> + <field type="CARD8" name="num_changes" /> + <!-- Uninterpreted: list (changes) of HierarchyChange structures --> + </request> + + <!-- XISetClientPointer --> + + <request name="XISetClientPointer" opcode="44"> + <field type="WINDOW" name="window" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </request> + + <!-- XIGetClientPointer --> + + <request name="XIGetClientPointer" opcode="45"> + <field type="WINDOW" name="window" /> + <reply> + <pad bytes="1" /> + <field type="BOOL" name="set" /> + <pad bytes="1" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="20" /> + </reply> + </request> + + <!-- XISelectEvents --> + + <struct name="EventMask"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD16" name="mask_len" /> + <list type="CARD32" name="mask"> <!-- set of EventMaskBit --> + <fieldref>mask_len</fieldref> + </list> + </struct> + + <request name="XISelectEvents" opcode="46"> + <field type="WINDOW" name="window" /> + <field type="CARD16" name="num_mask" /> + <pad bytes="2" /> + <list type="EventMask" name="masks"> + <fieldref>num_mask</fieldref> + </list> + </request> + + <!-- XIQueryVersion --> + + <request name="XIQueryVersion" opcode="47"> + <field type="CARD16" name="major_version" /> + <field type="CARD16" name="minor_version" /> + + <reply> + <pad bytes="1" /> + <field type="CARD16" name="major_version" /> + <field type="CARD16" name="minor_version" /> + <pad bytes="20" /> + </reply> + </request> + + <!-- XIQueryDevice --> + + <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> + </enum> + + <enum name="DeviceType"> + <item name="MasterPointer"> <value>1</value> </item> + <item name="MasterKeyboard"> <value>2</value> </item> + <item name="SlavePointer"> <value>3</value> </item> + <item name="SlaveKeyboard"> <value>4</value> </item> + <item name="FloatingSlave"> <value>5</value> </item> + </enum> + + <enum name="ScrollFlags"> + <item name="NoEmulation"> <bit>0</bit> </item> + <item name="Preferred"> <bit>1</bit> </item> + </enum> + + <enum name="ScrollType"> + <item name="Vertical"> <value>1</value> </item> + <item name="Horizontal"> <value>2</value> </item> + </enum> + + <enum name="TouchMode"> + <item name="Direct"> <value>1</value> </item> + <item name="Dependent"> <value>2</value> </item> + </enum> + + <struct name="ButtonClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <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> + </struct> + + <struct name="KeyClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <field type="CARD16" name="num_keys" /> + <list type="CARD32" name="keys"> + <fieldref>num_keys</fieldref> + </list> + </struct> + + <struct name="ScrollClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <field type="CARD16" name="number" /> + <field type="CARD16" name="scroll_type" enum="ScrollType" /> + <pad bytes="2" /> + <field type="CARD32" name="flags" enum="ScrollFlags" /> + <field type="FP3232" name="increment" /> + </struct> + + <struct name="TouchClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <field type="CARD8" name="mode" enum="TouchMode" /> + <field type="CARD8" name="num_touches" /> + </struct> + + <struct name="ValuatorClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <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" /> + </struct> + + <struct name="DeviceClass"> + <field type="CARD16" name="type" enum="DeviceClassType" /> + <field type="CARD16" name="len" /> + <field type="DeviceId" name="sourceid" /> + <pad bytes="2" /> + </struct> + + <struct name="XIDeviceInfo"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD16" name="type" altenum="DeviceType" /> + <field type="DeviceId" name="attachment" altenum="Device" /> + <field type="CARD16" name="num_classes" /> + <field type="CARD16" name="name_len" /> + <field type="BOOL" name="enabled" /> + <pad bytes="1" /> + <list type="char" name="name"> + <!-- name_len is without padding, so we've to pad on our own, + auto align pad after the list would be helpfull --> + <op op="*"> + <op op="/"> + <op op="+"> + <fieldref>name_len</fieldref> + <value>3</value> + </op> + <value>4</value> + </op> + <value>4</value> + </op> + </list> + <!-- Uninterpreted: list (classes) of DeviceClass structures --> + </struct> + + <request name="XIQueryDevice" opcode="48"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + <reply> + <pad bytes="1" /> + <field type="CARD16" name="num_infos" /> + <pad bytes="22" /> + <list type="XIDeviceInfo" name="infos"> + <fieldref>num_infos</fieldref> + </list> + </reply> + </request> + + <!-- XISetFocus --> + + <request name="XISetFocus" opcode="49"> + <field type="WINDOW" name="window" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </request> + + <!-- XIGetFocus --> + + <request name="XIGetFocus" opcode="50"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + <reply> + <pad bytes="1" /> + <field type="WINDOW" name="focus" /> + <pad bytes="20" /> + </reply> + </request> + + <!-- XIGrabDevice --> + + <enum name="GrabOwner"> + <item name="NoOwner" /> + <item name="Owner" /> + </enum> + + <request name="XIGrabDevice" opcode="51"> + <field type="WINDOW" name="window" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <field type="CURSOR" name="cursor" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD8" name="mode" enum="GrabMode" /> + <field type="CARD8" name="paired_device_mode" enum="GrabMode" /> + <field type="BOOL" name="owner_events" enum="GrabOwner" /> + <pad bytes="1" /> + <field type="CARD16" name="mask_len" /> + <list type="CARD32" name="mask"> + <fieldref>mask_len</fieldref> + </list> + <reply> + <pad bytes="1" /> + <field type="CARD8" name="status" enum="GrabStatus" /> + <pad bytes="23" /> + </reply> + </request> + + <!-- XIUngrabDevice --> + + <request name="XIUngrabDevice" opcode="52"> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + </request> + + <!-- XIAllowEvents --> + + <enum name="EventMode"> + <item name="AsyncDevice" /> + <item name="SyncDevice" /> + <item name="ReplayDevice" /> + <item name="AsyncPairedDevice" /> + <item name="AsyncPair" /> + <item name="SyncPair" /> + <item name="AcceptTouch" /> + <item name="RejectTouch" /> + </enum> + + <request name="XIAllowEvents" opcode="53"> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD8" name="event_mode" enum="EventMode" /> + <pad bytes="1" /> + <field type="CARD32" name="touchid" /> + <field type="WINDOW" name="grab_window" /> + </request> + + <!-- XIPassiveGrabDevice --> + + <enum name="GrabMode22"> + <item name="Sync" /> + <item name="Async" /> + <item name="Touch" /> + </enum> + + <enum name="GrabType"> + <item name="Button" /> + <item name="Keycode" /> + <item name="Enter" /> + <item name="FocusIn" /> + <item name="TouchBegin" /> + </enum> + + <enum name="ModifierMask"> + <item name="Any"> <bit>31</bit> </item> + </enum> + + <struct name="GrabModifierInfo"> + <field type="CARD32" name="modifiers" altenum="ModifierMask" /> + <field type="CARD8" name="status" enum="GrabStatus" /> + <pad bytes="3" /> + </struct> + + <request name="XIPassiveGrabDevice" opcode="54"> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <field type="WINDOW" name="grab_window" /> + <field type="CURSOR" name="cursor" /> + <field type="CARD32" name="detail" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD16" name="num_modifiers" /> + <field type="CARD16" name="mask_len" /> + <field type="CARD8" name="grab_type" enum="GrabType" /> + <field type="CARD8" name="grab_mode" enum="GrabMode22" /> + <field type="CARD8" name="paired_device_mode" enum="GrabMode" /> + <field type="BOOL" name="owner_events" enum="GrabOwner" /> + <pad bytes="2" /> + <list type="CARD32" name="mask"> + <fieldref>mask_len</fieldref> + </list> + <list type="CARD32" name="modifiers"> + <fieldref>num_modifiers</fieldref> + </list> + <reply> + <pad bytes="1" /> + <field type="CARD16" name="num_modifiers" /> + <pad bytes="22" /> + <list type="GrabModifierInfo" name="modifiers"> + <fieldref>num_modifiers</fieldref> + </list> + </reply> + </request> + + <!-- XIPassiveUngrabDevice --> + + <request name="XIPassiveUngrabDevice" opcode="55"> + <field type="WINDOW" name="grab_window" /> + <field type="CARD32" name="detail" /> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD16" name="num_modifiers" /> + <field type="CARD8" name="grab_type" enum="GrabType" /> + <pad bytes="3" /> + <list type="CARD32" name="modifiers"> + <fieldref>num_modifiers</fieldref> + </list> + </request> + + <!-- XIListProperties --> + + <request name="XIListProperties" opcode="56"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + <reply> + <pad bytes="1" /> + <field type="CARD16" name="num_properties" /> + <pad bytes="22" /> + <list type="ATOM" name="properties"> + <fieldref>num_properties</fieldref> + </list> + </reply> + </request> + + <!-- XIChangeProperty --> + + <request name="XIChangeProperty" opcode="57"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="CARD8" name="mode" enum="PropMode" /> + <field type="CARD8" name="format" enum="PropertyFormat" /> + <field type="ATOM" name="property" /> + <field type="ATOM" name="type" /> + <field type="CARD32" name="num_items" /> + <switch name="items"> + <fieldref>format</fieldref> + <!-- <bitcase> is not correct, this would need <cases>s. + It works in that case, because PropertyFormat items can be + distinguished exactly as their values don't have equal bits. + --> + <bitcase> + <enumref ref="PropertyFormat">8Bits</enumref> + <list type="CARD8" name="data8"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + <bitcase> + <enumref ref="PropertyFormat">16Bits</enumref> + <list type="CARD16" name="data16"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + <bitcase> + <enumref ref="PropertyFormat">32Bits</enumref> + <list type="CARD32" name="data32"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + </switch> + </request> + + <!-- XIDeleteProperty --> + + <request name="XIDeleteProperty" opcode="58"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <pad bytes="2" /> + <field type="ATOM" name="property" /> + </request> + + <!-- XIGetProperty --> + + <request name="XIGetProperty" opcode="59"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="BOOL" name="delete" /> + <pad bytes="1" /> + <field type="ATOM" name="property" /> + <field type="ATOM" name="type" /> + <field type="CARD32" name="offset" /> + <field type="CARD32" name="len" /> + <reply> + <pad bytes="1" /> + <field type="ATOM" name="type" /> + <field type="CARD32" name="bytes_after" /> + <field type="CARD32" name="num_items" /> + <field type="CARD8" name="format" enum="PropertyFormat" /> + <pad bytes="11" /> + <switch name="items"> + <fieldref>format</fieldref> + <!-- <bitcase> is not correct, this would need <cases>s. + It works in that case, because PropertyFormat items can be + distinguished exactly as their values don't have equal bits. + --> + <bitcase> + <enumref ref="PropertyFormat">8Bits</enumref> + <list type="CARD8" name="data8"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + <bitcase> + <enumref ref="PropertyFormat">16Bits</enumref> + <list type="CARD16" name="data16"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + <bitcase> + <enumref ref="PropertyFormat">32Bits</enumref> + <list type="CARD32" name="data32"> + <fieldref>num_items</fieldref> + </list> + </bitcase> + </switch> + </reply> + </request> + + <!-- XIGetSelectedEvents --> + + <request name="XIGetSelectedEvents" opcode="60"> + <field type="WINDOW" name="window" /> + <reply> + <pad bytes="1" /> + <field type="CARD16" name="num_masks" /> + <pad bytes="22" /> + <list type="EventMask" name="masks"> + <fieldref>num_masks</fieldref> + </list> + </reply> + </request> + <!-- ⋅⋅⋅ Events (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> <!-- Notes: - A 'len' field in a v1++ structure is in bytes. @@ -1173,6 +1773,201 @@ authorization from the authors. <field type="CARD8" name="device_id" /> </event> + <!-- ⋅⋅⋅ Events (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> + <!-- Notes: + - A 'len' field in a v2++ structure is in 4 byte units. + --> + + <enum name="ChangeReason"> + <item name="SlaveSwitch"> <value>1</value> </item> + <item name="DeviceChange"> <value>2</value> </item> + </enum> + + <event name="DeviceChanged" number="1" xge="true"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <!-- event specific fields --> + <field type="CARD16" name="num_classes" /> + <field type="DeviceId" name="sourceid" altenum="Device" /> + <field type="CARD8" name="reason" enum="ChangeReason" /> + <pad bytes="11" /> + <!-- 32 byte boundary --> + <list type="DeviceClass" name="classes"> + <fieldref>num_classes</fieldref> + </list> + </event> + + <enum name="KeyEventFlags"> + <item name="KeyRepeat"> <bit>16</bit> </item> + </enum> + + <event name="KeyPress" number="2" 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="KeyEventFlags" /> + <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="KeyRelease" number="3" ref="KeyPress" /> + + <enum name="PointerEventFlags"> + <item name="PointerEmulated"> <bit>16</bit> </item> + </enum> + + <event name="ButtonPress" number="4" 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="PointerEventFlags" /> + <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="ButtonRelease" number="5" ref="ButtonPress" /> + <eventcopy name="Motion" number="6" ref="ButtonPress" /> + + <enum name="NotifyMode"> + <item name="Normal" /> + <item name="Grab" /> + <item name="Ungrab" /> + <item name="WhileGrabbed" /> + <item name="PassiveGrab" /> + <item name="PassiveUngrab" /> + </enum> + + <enum name="NotifyDetail"> + <item name="Ancestor" /> + <item name="Virtual" /> + <item name="Inferior" /> + <item name="Nonlinear" /> + <item name="NonlinearVirtual" /> + <item name="Pointer" /> + <item name="PointerRoot" /> + <item name="None" /> + </enum> + + <event name="Enter" number="7" xge="true"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <!-- event specific fields --> + <field type="DeviceId" name="sourceid" altenum="Device" /> + <field type="CARD8" name="mode" enum="NotifyMode" /> + <field type="CARD8" name="detail" enum="NotifyDetail" /> + <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="CARD8" name="same_screen" /> + <field type="CARD8" name="focus" /> + <field type="CARD16" name="buttons_len" /> + <field type="ModifierInfo" name="mods" /> + <field type="GroupInfo" name="group" /> + <list type="CARD32" name="buttons"> + <fieldref>buttons_len</fieldref> + </list> + </event> + + <eventcopy name="Leave" number="8" ref="Enter" /> + <eventcopy name="FocusIn" number="9" ref="Enter" /> + <eventcopy name="FocusOut" number="10" ref="Enter" /> + + <enum name="HierarchyMask"> + <item name="MasterAdded"> <bit>0</bit> </item> + <item name="MasterRemoved"> <bit>1</bit> </item> + <item name="SlaveAdded"> <bit>2</bit> </item> + <item name="SlaveRemoved"> <bit>3</bit> </item> + <item name="SlaveAttached"> <bit>4</bit> </item> + <item name="SlaveDetached"> <bit>5</bit> </item> + <item name="DeviceEnabled"> <bit>6</bit> </item> + <item name="DeviceDisabled"> <bit>7</bit> </item> + </enum> + + <struct name="HierarchyInfo"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="DeviceId" name="attachment" altenum="Device" /> + <field type="CARD8" name="type" enum="DeviceType"/> + <field type="BOOL" name="enabled" /> + <pad bytes="2" /> + <field type="CARD32" name="flags" mask="HierarchyMask" /> + </struct> + + <event name="Hierarchy" number="11" xge="true"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <!-- event specific fields --> + <field type="CARD32" name="flags" mask="HierarchyMask" /> + <field type="CARD16" name="num_infos" /> + <pad bytes="10" /> + <!-- 32 byte boundary --> + <list type="HierarchyInfo" name="infos"> + <fieldref>num_infos</fieldref> + </list> + </event> + + <enum name="PropertyFlag"> + <item name="Deleted" /> + <item name="Created" /> + <item name="Modified" /> + </enum> + + <event name="Property" number="12" xge="true"> + <field type="DeviceId" name="deviceid" altenum="Device" /> + <field type="TIMESTAMP" name="time" altenum="Time" /> + <!-- event specific fields --> + <field type="ATOM" name="property" /> + <field type="CARD8" name="what" enum="PropertyFlag" /> + <pad bytes="11" /> + <!-- 32 byte boundary --> + </event> + <!-- ⋅⋅⋅ Errors (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> <error name="Device" number="0" /> |