On Wed, May 26, 2010 at 23:51:45 +0300, Sami Liedes wrote: > This also affects trying to set some options with synclient: > > ------------------------------------------------------------ > $ synclient VertEdgeScroll=0 > Float properties not available. > VertEdgeScroll = format mismatch (32) > X Error of failed request: BadMatch (invalid parameter attributes) > Major opcode of failed request: 141 (XInputExtension) > Minor opcode of failed request: 37 (X_ChangeDeviceProperty) > Serial number of failed request: 22 > Current serial number in output stream: 25 > ------------------------------------------------------------ > > For me, only some of the options in -l are garbage (and setting the > rest works; but my version is 1.2.2-2, the original submitter had > 1.2.1-1): > Can you run 'xtrace -I . synclient -l' with the attached file in the current directory, and send us the output? Thanks, Julien
EXTENSION "XInputExtension" XInput
USE core
TYPE FP1616 FIXED
#define ra(a) { #a , parameterXInput ## a , NULL,NULL,NULL}
#define rb(a) { #a , parameterXInput ## a , returnXInput ## a ,NULL,NULL}
REQUESTS
UNKNOWN /* 0 */
GetExtensionVersion RESPONDS /* 1 */
ListInputDevices RESPONDS /* 2 */
OpenDevice RESPONDS /* 3 */
CloseDevice /* 4 */
SetDeviceMode RESPONDS /* 5 */
SelectExtensionEvent /* 6 */
GetSelectedExtensionEvents RESPONDS /* 7 */
ChangeDeviceDontPropagateList /* 8 */
GetDeviceDontPropagateList RESPONDS /* 9 */
GetDeviceMotionEvents RESPONDS /* 10 */
ChangeKeyboardDevice RESPONDS /* 11 */
ChangePointerDevice RESPONDS /* 12 */
GrabDevice RESPONDS /* 13 */
UngrabDevice /* 14 */
GrabDeviceKey /* 15 */
UngrabDeviceKey /* 16 */
GrabDeviceButton /* 17 */
UngrabDeviceButton /* 18 */
AllowDeviceEvents /* 19 */
GetDeviceFocus RESPONDS /* 20 */
SetDeviceFocus /* 21 */
GetFeedbackControl RESPONDS /* 22 */
ChangeFeedbackControl /* 23 */
GetDeviceKeyMapping RESPONDS /* 24 */
ChangeDeviceKeyMapping /* 25 */
GetDeviceModifierMapping RESPONDS /* 26 */
SetDeviceModifierMapping RESPONDS /* 27 */
GetDeviceButtonMapping RESPONDS /* 28 */
SetDeviceButtonMapping RESPONDS /* 29 */
QueryDeviceState RESPONDS /* 30 */
SendExtensionEvent /* 31 */
DeviceBell /* 32 */
SetDeviceValuators RESPONDS /* 33 */
GetDeviceControl RESPONDS /* 34 */
ChangeDeviceControl RESPONDS /* 35 */
# XI 1.5
ListDeviceProperties RESPONDS /* 36 */
ChangeDeviceProperty /* 37 */
DeleteDeviceProperty /* 38 */
GetDeviceProperty RESPONDS /* 39 */
# XI 2
XIQueryPointer RESPONDS /* 40 */
XIWarpPointer /* 41 */
XIChangeCursor /* 42 */
XIChangeHierarchy /* 43 */
XISetClientPointer /* 44 */
XIGetClientPointer RESPONDS /* 45 */
XISelectEvents /* 46 */
XIQueryVersion RESPONDS /* 47 */
XIQueryDevice UNSUPPORTED RESPONDS /* 48 */
XISetFocus /* 49 */
XIGetFocus RESPONDS /* 50 */
XIGrabDevice /* 51 */
XIUngrabDevice UNSUPPORTED /* 52 */
XIAllowEvents UNSUPPORTED /* 53 */
XIPassiveGrabDevice UNSUPPORTED RESPONDS /* 54 */
XIPassiveUngrabDevice UNSUPPORTED /* 55 */
XIListProperties RESPONDS /* 56 */
XIChangeProperty /* 57 */
XIDeleteProperty /* 58 */
XIGetProperty RESPONDS /* 59 */
XIGetSelectedEvents UNSUPPORTED /* 60 */
END
EVENTS
DeviceValuator
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress
DeviceButtonRelease
DeviceMotionNotify
DeviceFocusIn
DeviceFocusOut
ProximityIn
ProximityOut
DeviceStateNotify
DeviceMappingNotify
ChangeDeviceNotify
DeviceKeystateNotify
DeviceButtonstateNotify
DevicePresenceNotify
DevicePropertyNotify
END
ERRORS
BadDevice
BadEvent
BadMode
DeviceBusy
BadClass
END
CONSTANTS device_change
0 Added
1 Removed
2 Enabled
3 Disabled
4 Unrecoverable
END
CONSTANTS syncmode
0 AsyncThisDevice
1 SyncThisDevice
2 ReplayThisDevice
3 AsyncOtherDevice
4 AsyncAll
5 SyncAll
END
CONSTANTS device_use
0 Pointer
1 Keyboard
2 ExtensionDevice
3 ExtensionKeyboard
4 ExtensionPointer
END
CONSTANTS notify_mode
0 Normal
1 Grab
2 Ungrab
3 WhileGrabbed
4 PassiveGrab
5 PassiveUngrab
END
CONSTANTS notify_detail
0 Ancestor
1 Virtual
2 Inferior
3 Nonlinear
4 NonlinearVirtual
5 Pointer
6 PointerRoot
7 DetailNone
END
CONSTANTS usexkeyboard
0xFF UseXKeyboard
END
CONSTANTS anykey
0x00 AnyKey
END
CONSTANTS anybutton
0x00 AnyButton
END
# there is only one set of constants in the header files for this,
# so I assume this are the correct values and what is described for most
# other status values in the XIproto.ps is just bogus
CONSTANTS device_status
0 Success
1 AlreadyGrabbed
2 InvalidTime
3 NotViewable
4 Frozen
END
CONSTANTS input_class_id
0 key
1 button
2 valuator
3 feedback
4 proximity
5 focus
6 other
END
CONSTANTS device_mode
0 relative
1 absolute
END
CONSTANTS device_mode_and_prox
0 "relative, in proximity"
1 "absolute, in proximity"
2 "relative, out of proximity"
3 "absolute, out of proximity"
END
BITMASK classes_reported
0x01 "reporting keys"
0x02 "reporting buttons"
0x04 "reporting valuators"
0x40 absolute
0x80 "out of proximity"
END
CONSTANTS feedback_class
0 Kbd
1 Ptr
2 String
3 Integer
4 Led
5 Bell
END
CONSTANTS auto_repeat_mode
0 Off
1 On
2 Default
END
BITMASK dv_pointer
1<<0 AccelNum
1<<1 AccelDenom
1<<2 Threshold
END
BITMASK dv_keyboardbellled
1<<0 KeyClickPercent
1<<1 Percent
1<<2 Pitch
1<<3 Duration
1<<4 Led
1<<5 LedMode
1<<6 Key
1<<7 AutoRepeatMode
END
BITMASK dv_string
1<<0 String
END
BITMASK dv_integer
1<<0 Integer
END
CONSTANTS devicecontroltype
0 Resolution?
1 RESOLUTION
2 ABS_CALIB
3 CORE
4 ENABLE
5 ABS_AREA
END
CONSTANTS changereason
1 SlaveSwitch
2 DeviceChange
END
TYPE CHANGEREASON ENUM8 changereason
REQUEST GetExtensionVersion
4 len COUNT16
8 name STRING8
END
RESPONSE GetExtensionVersion
8 major_version UINT16
10 minor_version UINT16
12 present BOOL
END
REQUEST ListInputDevices ALIASES Empty
LIST AXISINFO length 12
0 resolution UINT32
4 min UINT32
8 max UINT32
END
# /* that's what xspecs says it would like:
# LIST INPUTINFO variable length 4
# // { 0, "class id", ft_ENUM8, c_class_id},
# { 0, "\0", ft_IF8, (void*)structpartKEYINFO},
# { 0, "\1", ft_IF8, (void*)structpartBUTTONINFO},
# { 0, "\2", ft_IF8, (void*)structpartVALUATORINFO},
# 1 len COUNT8
# 0 unsupported LISTofCARD8
# END
#
# LIST DEVICEINFO length 8
# 0 type CARD32
# 4 id CARD8
# 6 use ENUM8 device_use
# 5 "#classes" COUNT8
# 8 classes LISTofINPUTINFO
# LATER name LISTofSTRING8
# END
#
# RESPONSE ListInputDevices
# 8 #devices COUNT8
# 32 devices LISTofDEVICEINFO
# END
#
# but the implementation in reality it is totally different:
#
# first come all the device structs, then all the INPUTINFO structs,
# then all the names. To know how many INPUTINFO structs there are,
# one would need to sum the numbers from the devices, which we cannot
# do yet. So we assume that none will have a name with at most 2 characters:
LIST INPUTINFO variable min-length 4
IF 0 CARD8 0
2 "min keycode" CARD8
3 "max keycode" CARD8
4 "#keys" UINT16
NEXT 8
ELSEIF 0 CARD8 1
2 "#buttons" CARD16
NEXT 4
ELSEIF 0 CARD8 2
2 "#axes" CARD16
3 mode ENUM8 device_mode
4 "motion buffer size" UINT32
2 "#axes" COUNT16
8 axes LISTofAXISINFO
ELSE
# otherwise we assume that it is time for the strings
0 len COUNT8
1 name STRING8
END
LIST DEVICEINFO length 8
0 type CARD32
4 id CARD8
5 "#classes" UINT8
6 use ENUM8 device_use
END
RESPONSE ListInputDevices
8 "#devices" COUNT8
32 devices LISTofDEVICEINFO
RESET_COUNTER
LATER infos LISTofINPUTINFO
END
# The rest I had no program to test with. Judging from the problems
# above, that might mean the actual code is totally different, too
templateREQUEST Device
4 device CARD8
END
REQUEST OpenDevice ALIASES Device
LIST INPUTCLASSINFO length 2
0 class ENUM8 input_class_id
1 "event type base" CARD8
END
RESPONSE OpenDevice
8 "#classes" COUNT8
32 classes LISTofINPUTCLASSINFO
END
REQUEST CloseDevice ALIASES Device
REQUEST SetDeviceMode
4 device CARD8
5 mode ENUM8 device_mode
END
templateRESPONSE Status
8 status CARD8 constants device_status
END
RESPONSE SetDeviceMode ALIASES Status
TYPE LISTofEVENTCLASS LISTofCARD32
REQUEST SelectExtensionEvent
4 window WINDOW
8 count UINT16
12 "desired events" LISTofEVENTCLASS
END
REQUEST GetSelectedExtensionEvents
4 window WINDOW
END
RESPONSE GetSelectedExtensionEvents
8 "#this client" COUNT16
32 "this client" LISTofEVENTCLASS
10 "#all clients" COUNT16
LATER "all clients" LISTofEVENTCLASS
END
REQUEST ChangeDeviceDontPropagateList
4 window WINDOW
8 count COUNT16
10 mode ENUM8 device_mode
12 "desired events" LISTofEVENTCLASS
END
REQUEST GetDeviceDontPropagateList ALIASES GetSelectedExtensionEvents
RESPONSE GetDeviceDontPropagateList
8 count COUNT16
32 list LISTofEVENTCLASS
END
REQUEST GetDeviceMotionEvents
4 start-time TIMESTAMP constants curtime
8 stop-time TIMESTAMP constants curtime
10 device CARD8
END
LIST DEVICETIMECOORD variable min-length 4
0 time TIMESTAMP
GET 0
# TODO huch?
0 valuators LISTofUINT32
END
RESPONSE GetDeviceMotionEvents
8 "#events" UINT32
12 axes UINT8
12 axes PUSH8
13 mode ENUM8 device_mode
32 events LISTofDEVICETIMECOORD
END
REQUEST ChangeKeyboardDevice ALIASES Device
RESPONSE ChangeKeyboardDevice ALIASES Status
REQUEST ChangePointerDevice
4 xaxis CARD8
5 yaxis CARD8
6 device CARD8
END
RESPONSE ChangePointerDevice ALIASES Status
REQUEST GrabDevice
4 window WINDOW
8 time TIMESTAMP constants curtime
12 "#event" COUNT16
14 this-device-mode ENUM8 synmode
15 other-device-mode ENUM8 synmode
16 owner-events BOOL
17 device CARD8
20 events LISTofEVENTCLASS
END
RESPONSE GrabDevice ALIASES Status
REQUEST UngrabDevice
4 time TIMESTAMP constants curtime
8 device CARD8
END
REQUEST GrabDeviceKey
4 window WINDOW
8 "#event" COUNT16
10 modifiers SETofKEYMASK
12 modifier_device CARD8 constants usexkeyboard
13 grabbed_device CARD8
14 key CARD8 constants anykey
15 this-device-mode ENUM8 synmode
16 other-device-mode ENUM8 synmode
17 owner-events BOOL
20 events LISTofEVENTCLASS
END
REQUEST UngrabDeviceKey
4 window WINDOW
8 modifiers SETofKEYMASK
10 modifier_device CARD8 constants usexkeyboard
11 key CARD8 constants anykey
12 grabbed_device CARD8
END
REQUEST GrabDeviceButton
4 window WINDOW
8 grabbed_device CARD8
9 modifier_device CARD8 constants usexkeyboard
10 "#event" COUNT16
12 modifiers SETofKEYMASK
14 this-device-mode ENUM8 synmode
15 other-device-mode ENUM8 synmode
16 button UINT8 constants anybutton
17 owner-events BOOL
20 events LISTofEVENTCLASS
END
REQUEST UngrabDeviceButton
4 window WINDOW
8 modifiers SETofKEYMASK
10 modifier_device CARD8 constants usexkeyboard
11 button UINT8 constants anybutton
12 grabbed_device CARD8
END
REQUEST AllowDeviceEvents
4 time TIMESTAMP constants curtime
8 mode ENUM8 syncmode
9 device CARD8
END
REQUEST GetDeviceFocus ALIASES Device
RESPONSE GetDeviceFocus
8 focus WINDOW constants revertto
12 time TIMESTAMP
16 revert-to ENUM8 revertto
END
REQUEST SetDeviceFocus
4 focus WINDOW constants revertto
8 time TIMESTAMP
12 revert-to ENUM8 revertto
13 device CARD8
END
LIST FEEDBACKSTATE variable min-length 4
# XIproto.ps has strange values here, XI.h looks more reasonable:
0 "feedback class" ENUM8 feedback_class
1 id CARD8
IF 0 CARD8 $feedback_class:Kbd
4 pitch UINT16
6 duration UINT16
8 led_mask CARD32
12 led_values CARD32
16 global-auto-repeat BOOL
17 click UINT8
18 percent UINT8
SET_COUNTER 32
20 auto-repeats LISTofCARD8
ELSEIF 0 CARD8 $feedback_class:Ptr
# PTR
6 acceleration FRACTION16_16
10 treshold UINT16
NEXT 12
ELSEIF 0 CARD8 $feedback_class:String
4 "max symbols" UINT16
6 "#keysyms" COUNT16
8 keysyms LISTofKEYSYM
ELSEIF 0 CARD8 $feedback_class:Integer
4 resolution UINT32
8 min INT32
12 max INT32
NEXT 16
ELSEIF 0 CARD8 $feedback_class:Led
4 mask CARD32
8 values CARD32
NEXT 12
ELSEIF 0 CARD8 $feedback_class:Bell
4 percent UINT8
8 pitch UINT16
10 duration UINT16
NEXT 12
ELSE
# fallback in case of unsupported:
2 length COUNT16
0 unsupported LISTofCARD8
END
REQUEST GetFeedbackControl ALIASES Device
RESPONSE GetFeedbackControl
8 "#feedbacks" COUNT16
32 feedbacks LISTofFEEDBACKSTATE
END
REQUEST ChangeFeedbackControl
8 device CARD8
9 "feedback id" CARD8
12 "feedback class" ENUM8 feedback_class
13 "feedback id" CARD8
IF 12 CARD8 $feedback_class:Kbd
4 mask BITMASK32 dv_keyboardbellled
16 key CARD8
17 auto-repeat ENUM8 auto_repeat_mode
18 click-percent UINT8
19 bell-percent UINT8
20 bell-pitch UINT16
22 bell-duration UINT16
24 led_mask CARD32
28 led_values CARD32
ELSEIF 12 CARD8 $feedback_class:Ptr
4 mask BITMASK32 dv_pointer
18 acceleration FRACTION16_16
22 treshold UINT16
ELSEIF 12 CARD8 $feedback_class:String
4 mask BITMASK32 dv_string
18 "#keysyms" COUNT16
20 keysyms LISTofCARD32
ELSEIF 12 CARD8 $feedback_class:Integer
4 mask BITMASK32 dv_integer
16 integer INT32
ELSEIF 12 CARD8 $feedback_class:Led
4 mask BITMASK32 dv_keyboardbellled
16 led_mask CARD32
20 led_values CARD32
ELSEIF 12 CARD8 $feedback_class:Bell
4 mask BITMASK32 dv_keyboardbellled
16 percent UINT8
20 pitch INT16
22 duration INT16
ELSE
14 length COUNT16
12 unsupported LISTofCARD8
END
REQUEST GetDeviceKeyMapping
4 device CARD8
5 firstKeyCode CARD8
6 count UINT8
END
RESPONSE GetDeviceKeyMapping
8 keysSyms/keyCode UINT8
32 keysyms LISTofCARD32
END
REQUEST ChangeDeviceKeyMapping
4 device CARD8
5 firstKeyCode CARD8
6 "#keycodes" UINT8
7 "#keySyms/keyCode" UINT8
8 keysyms LISTofCARD32
END
REQUEST GetDeviceModifierMapping ALIASES Device
RESPONSE GetDeviceModifierMapping
8 keycodes/modifier UINT8
32 keycodes LISTofCARD8
END
REQUEST SetDeviceModifierMapping
4 device CARD8
5 keycodes/modifier UINT8
8 keycodes LISTofCARD8
END
RESPONSE SetDeviceModifierMapping ALIASES Status
REQUEST GetDeviceButtonMapping ALIASES Device
RESPONSE GetDeviceButtonMapping
8 l(map) COUNT8
32 map LISTofCARD8
END
REQUEST SetDeviceButtonMapping
4 device CARD8
5 l(map) COUNT8
8 map LISTofCARD8
END
RESPONSE SetDeviceButtonMapping ALIASES Status
LIST INPUTSTATE variable min-length 2
0 class ENUM8 input_class_id
IF 0 CARD8 $input_class_id:key
2 "#keys" UINT8
SET_COUNTER 32
4 "key states" LISTofCARD8
ELSEIF 0 CARD8 $input_class_id:button
2 "#buttons" UINT8
SET_COUNTER 32
4 "button states" LISTofCARD8
ELSEIF 0 CARD8 $input_class_id:valuator
2 "#valuators" COUNT8
3 mode ENUM8 device_mode_and_prox
4 "valuator states" LISTofCARD32
ELSE
1 length COUNT8
0 unsupported LISTofCARD8
END
REQUEST QueryDeviceState ALIASES Device
RESPONSE QueryDeviceState
8 "#classes" COUNT8
32 classes LISTofINPUTSTATE
END
LIST XiEVENT length 32
0 event EVENT
END
REQUEST SendExtensionEvent
4 destinatione WINDOW
8 device CARD8
9 propagate BOOL
12 "#events" COUNT8
16 events LISTofXiEVENT
10 "#event classes" COUNT16
LATER "desired events" LISTofEVENTCLASS
END
REQUEST DeviceBell
4 device CARD8
5 "feedback id" CARD8
6 "feedback class" ENUM8 feedback_class
7 percent INT8
END
REQUEST SetDeviceValuators
4 device CARD8
5 "first valuator" UINT8
6 "#valuators" COUNT8
8 valuators LISTofUINT32
END
RESPONSE SetDeviceValuators ALIASES Status
LIST DEVICESTATE variable min-length 4
# this is supposed to be the length, but at least in
# lenny the xserver is still buggy and returns bogus values:
2 "length (often faulty)" UINT16
# Xspecs says 0, DEVICE_RESOLUTION is 1...
IF 0 CARD16 0
# RESOLUTIONSTATE
4 "#valuators" COUNT32
8 values LISTofUINT32
4 "#valuators" COUNT32
LATER min_values LISTofUINT32
4 "#valuators" COUNT32
LATER max_values LISTofUINT32
ELSEIF 0 CARD16 1
# RESOLUTIONSTATE
4 "#valuators" COUNT32
8 values LISTofUINT32
4 "#valuators" COUNT32
LATER min_values LISTofUINT32
4 "#valuators" COUNT32
LATER max_values LISTofUINT32
ELSEIF 0 CARD16 2
# ABSCALIBSTATE
4 min_x UINT32
8 max_x UINT32
12 min_y UINT32
16 max_y UINT32
20 flip_x UINT32
24 flip_y UINT32
28 rotation UINT32
32 button_threshold UINT32
NEXT 36
ELSEIF 0 CARD16 3
# CORESTATE
4 status CARD8
5 iscore BOOL
NEXT 8
ELSEIF 0 CARD16 4
# ENABLESTATE
4 enable CARD8
NEXT 8
ELSEIF 0 CARD16 5
# ABSAREASTATE
4 offset_x UINT32
8 offset_y UINT32
12 width UINT32
16 height UINT32
20 screen CARD32
24 following CARD32
NEXT 28
ELSE
2 length COUNT16
0 unsupported LISTofCARD8
END
REQUEST GetDeviceControl
6 device CARD8
4 "device control type" ENUM16 devicecontroltype
END
RESPONSE GetDeviceControl
8 status CARD8 constants device_status
32 states LISTofDEVICESTATE
END
LIST DEVICECONTROL variable min-length 4
2 length UINT16
# Xspecs says 0, DEVICE_RESOLUTION is 1...
IF 0 CARD16 0
# RESOLUTIONCONTOL
4 "first valuator" UINT8
5 "#valuators" COUNT8
8 values LISTofUINT32
ELSEIF 0 CARD16 1
# RESOLUTIONCONTOL
4 "first valuator" UINT8
5 "#valuators" COUNT8
8 values LISTofUINT32
ELSEIF 0 CARD16 2
# ABSCALIBCONTOL
4 min_x UINT32
8 max_x UINT32
12 min_y UINT32
16 max_y UINT32
20 flip_x UINT32
24 flip_y UINT32
28 rotation UINT32
32 button_threshold UINT32
NEXT 36
ELSEIF 0 CARD16 3
# CORECONTOL
4 status CARD8
NEXT 8
ELSEIF 0 CARD16 4
# ENABLECONTOL
4 enable CARD8
NEXT 8
ELSEIF 0 CARD16 5
# ABSAREACONTOL
4 offset_x UINT32
8 offset_y UINT32
12 width UINT32
16 height UINT32
20 screen CARD32
24 following CARD32
NEXT 28
ELSE
2 length COUNT16
0 unsupported LISTofCARD8
END
REQUEST ChangeDeviceControl
6 device CARD8
4 "device control type" ENUM16 devicecontroltype
8 data LISTofDEVICECONTROL
END
RESPONSE ChangeDeviceControl ALIASES Status
REQUEST ListDeviceProperties
4 device UINT8
END
RESPONSE ListDeviceProperties
8 nAtoms COUNT16
32 Atoms LISTofATOM
END
REQUEST ChangeDeviceProperty
4 property ATOM
8 type ATOM
12 device UINT8
13 format FORMAT8
14 mode ENUM8 change_mode
16 nUnits COUNT32
IF 8 ATOM "ATOM"
20 value LISTofATOM
ELSEIF 8 ATOM "FLOAT"
20 value LISTofFLOAT32
ELSE
20 value LISTofFormat
END
REQUEST DeleteDeviceProperty
4 property ATOM
8 device UINT8
END
REQUEST GetDeviceProperty
4 property ATOM
8 type ATOM
12 longOffset UINT32
16 longLength UINT32
20 device UINT8
21 delete BOOL
END
RESPONSE GetDeviceProperty
8 type ATOM
12 bytesAfter UINT32
16 nItems COUNT32
20 format FORMAT8
21 device UINT8
IF 8 ATOM "ATOM"
32 value LISTofATOM
ELSEIF 8 ATOM "FLOAT"
32 value LISTofFLOAT32
ELSE
32 value LISTofFormat
END
STRUCT MODIFIERINFO length 16
0 base_mods CARD32
4 latched_mods CARD32
8 locked_mods CARD32
12 effective_mods CARD32
END
STRUCT GROUPINFO length 4
0 base_group CARD8
1 latched_group CARD8
2 locked_group CARD8
3 effective_group CARD8
END
REQUEST XIQueryPointer
4 window WINDOW
8 device UINT16
END
RESPONSE XIQueryPointer
8 root WINDOW
12 child WINDOW
16 root_x FIXED
20 root_y FIXED
24 win_x FIXED
28 win_y FIXED
32 same_screen BOOL
34 buttons_len COUNT16
36 mods MODIFIERINFO
52 groups GROUPINFO
56 buttons LISTofCARD8
END
REQUEST XIWarpPointer
4 src_win WINDOW
8 dst_win WINDOW
12 src_x FIXED
16 src_y FIXED
20 src_width UINT16
22 src_height UINT16
24 dst_x FIXED
28 dst_y FIXED
32 device CARD16
END
REQUEST XIChangeCursor
4 win WINDOW
8 cursor CURSOR
12 device CARD16
END
CONSTANTS hierarchy_change
1 AddMaster
2 RemoveMaster
3 AttachSlave
4 DetachSlave
END
CONSTANTS change_mode
1 Attach
2 Float
END
LIST HIERARCHYCHANGE variable min-length 8
0 type ENUM16 hierarchy_change
2 length COUNT16
IF 0 CARD16 $hierarchy_change:AddMaster
4 name_len COUNT16
6 send_core BOOL
7 enable BOOL
8 name STRING8
ELSEIF 0 CARD16 $hierarchy_change:RemoveMaster
4 device UINT16
6 return_mode ENUM8 change_mode
8 return_pointer UINT16
10 return_keyboard UINT16
NEXT 12
ELSEIF 0 CARD16 $hierarchy_change:AttachSlave
4 device UINT16
6 new_master UINT16
NEXT 8
ELSEIF 0 CARD16 $hierarchy_change:DetachSlave
4 device UINT16
NEXT 8
ELSE
0 pad LISTofCARD32
END
REQUEST XIChangeHierarchy
4 num_changes COUNT8
8 changes LISTofHIERARCHYCHANGE
END
REQUEST XISetClientPointer
4 win WINDOW
8 device UINT16
END
REQUEST XIGetClientPointer
4 win WINDOW
END
RESPONSE XIGetClientPointer
8 set BOOL
10 device UINT16
END
LIST EVENTMASK variable min-length 4
0 device UINT16
2 mask_len COUNT16
4 mask LISTofCARD32
END
REQUEST XISelectEvents
4 win WINDOW
8 num_masks COUNT16
12 masks LISTofEVENTMASK
END
REQUEST XIQueryVersion
4 major UINT16
6 minor UINT16
END
RESPONSE XIQueryVersion
8 major UINT16
10 minor UINT16
END
# TODO: could be > 32bits if the device has more than 2^32 buttons
TYPE SETofBUTTONMASK CARD32
CONSTANTS class
0 KeyClass
1 ButtonClass
2 AxisClass
END
CONSTANTS xi_device_use
1 MasterPointer
2 MasterKeyboard
3 SlavePointer
4 SlaveKeyboard
5 FloatingSlave
END
CONSTANTS xidevice
0 AllDevices
1 AllMasterDevices
END
REQUEST XISetFocus
4 focus WINDOW
8 time TIMESTAMP
10 device UINT16
END
REQUEST XIGetFocus
4 device UINT16
END
RESPONSE XIGetFocus
8 focus WINDOW
END
REQUEST XIGrabDevice
4 grab_window WINDOW
8 time TIMESTAMP
12 cursor CURSOR
16 device UINT16
18 grab_mode ENUM8 synmode
19 paired_device_mode ENUM8 synmode
20 owner_events BOOL
22 mask_len COUNT16
24 masks LISTofCARD32
END
REQUEST XIListProperties
4 device UINT16
END
RESPONSE XIListProperties
8 "#properties" COUNT16
32 properties LISTofATOM
END
REQUEST XIChangeProperty
4 device UINT16
6 mode ENUM8 device_mode
7 format FORMAT8
8 property ATOM
12 type ATOM
16 num_items COUNT32
IF 12 ATOM "ATOM"
20 value LISTofATOM
ELSEIF 12 ATOM "FLOAT"
20 value LISTofFLOAT32
ELSE
20 value LISTofFormat
END
REQUEST XIDeleteProperty
4 device UINT16
8 property ATOM
END
REQUEST XIGetProperty
4 device UINT16
6 delete BOOL
8 property ATOM
12 type ATOM
16 offset UINT32
20 len UINT32
END
RESPONSE XIGetProperty
8 type ATOM
12 bytes_after UINT32
16 num_items COUNT32
20 format UINT8
20 format FORMAT8
IF 8 ATOM "ATOM"
32 value LISTofATOM
ELSEIF 8 ATOM "FLOAT"
32 value LISTofFLOAT32
ELSE
32 value LISTofFormat
END
# Events
# the top-most bit of the device-id (0x80) always means more events to follow.
# TODO: how to express that?
EVENT DeviceValuator
1 device CARD8
4 state SETofKEYBUTMASK
6 "#valuators" COUNT8
7 "first axis" CARD8
# should be LISTofINT32?
8 valuators LISTofUINT32
END
templateEVENT KeyButtonPointer
# keycode, button, ... depending on actual even
1 detail CARD8
4 "timestamp" TIMESTAMP
8 "root window" WINDOW
12 "event window" WINDOW
16 "child window" WINDOW constants none
20 root-x INT16
22 root-y INT16
24 event-x INT16
26 event-y INT16
28 state SETofKEYBUTMASK
30 same-screen BOOL
31 device CARD8
END
EVENT DeviceKeyPress ALIASES KeyButtonPointer
EVENT DeviceKeyRelease ALIASES KeyButtonPointer
EVENT DeviceButtonPress ALIASES KeyButtonPointer
EVENT DeviceButtonRelease ALIASES KeyButtonPointer
EVENT DeviceMotionNotify
1 detail ENUM8 normalhint
4 "timestamp" TIMESTAMP
8 "root window" WINDOW
12 "event window" WINDOW
16 "child window" WINDOW constants none
20 root-x INT16
22 root-y INT16
24 event-x INT16
26 event-y INT16
28 state SETofKEYBUTMASK
30 same-screen BOOL
31 device CARD8
END
templateEVENT Proximity
4 "timestamp" TIMESTAMP
8 "root window" WINDOW
12 "event window" WINDOW
16 "child window" WINDOW constants none
20 root-x INT16
22 root-y INT16
24 event-x INT16
26 event-y INT16
28 state SETofKEYBUTMASK
30 same-screen BOOL
31 device CARD8
END
EVENT ProximityIn ALIASES Proximity
EVENT ProximityOut ALIASES Proximity
templateEVENT DeviceFocus
1 detail ENUM8 enterdetail
4 "timestamp" TIMESTAMP
8 "event window" WINDOW
12 mode ENUM8 grabmode
13 device CARD8
END
EVENT DeviceFocusOut ALIASES DeviceFocus
EVENT DeviceFocusIn ALIASES DeviceFocus
EVENT DeviceStateNotify
1 device CARD8
4 "timestamp" TIMESTAMP
11 reported BITMASK8 classes_reported
8 "#keys" COUNT8
12 keys LISTofCARD8
9 "#buttons" COUNT8
LATER buttons LISTofCARD8
10 "#valuators" COUNT8
LATER valuators LISTofCARD32
END
EVENT DeviceKeystateNotify
1 device CARD8
4 keys LISTofCARD8
END
EVENT DeviceButtonstateNotify
1 device CARD8
4 buttons LISTofCARD8
END
EVENT DeviceMappingNotify
1 device CARD8
4 request CARD8
5 "first key code" KEYCODE
6 count UINT8
8 "timestamp" TIMESTAMP
END
EVENT ChangeDeviceNotify
1 device CARD8
4 "timestamp" TIMESTAMP
8 request CARD8
END
EVENT DevicePresenceNotify
4 timestamp TIMESTAMP
8 change ENUM8 device_change
9 device CARD8
10 control CARD16
END
EVENT DevicePropertyNotify
1 state ENUM8 newdeleted
4 timestamp TIMESTAMP
8 atom ATOM
31 device CARD8
END
STRUCT ModifierInfo length 16
0 base_mods CARD32
4 latched_mods CARD32
8 locked_mods CARD32
12 effective_mods CARD32
END
STRUCT GroupInfo length 4
0 base_group CARD8
1 latched_group CARD8
2 locked_group CARD8
3 effective_group CARD8
END
EOF
Attachment:
signature.asc
Description: Digital signature