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