Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:26:33

0001 /************************************************************
0002 
0003 Copyright 1989, 1998  The Open Group
0004 
0005 Permission to use, copy, modify, distribute, and sell this software and its
0006 documentation for any purpose is hereby granted without fee, provided that
0007 the above copyright notice appear in all copies and that both that
0008 copyright notice and this permission notice appear in supporting
0009 documentation.
0010 
0011 The above copyright notice and this permission notice shall be included in
0012 all copies or substantial portions of the Software.
0013 
0014 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
0017 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
0018 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
0019 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0020 
0021 Except as contained in this notice, the name of The Open Group shall not be
0022 used in advertising or otherwise to promote the sale, use or other dealings
0023 in this Software without prior written authorization from The Open Group.
0024 
0025 Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
0026 
0027             All Rights Reserved
0028 
0029 Permission to use, copy, modify, and distribute this software and its
0030 documentation for any purpose and without fee is hereby granted,
0031 provided that the above copyright notice appear in all copies and that
0032 both that copyright notice and this permission notice appear in
0033 supporting documentation, and that the name of Hewlett-Packard not be
0034 used in advertising or publicity pertaining to distribution of the
0035 software without specific, written prior permission.
0036 
0037 HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
0038 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
0039 HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
0040 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
0041 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
0042 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
0043 SOFTWARE.
0044 
0045 ********************************************************/
0046 
0047 #ifndef _XIPROTO_H
0048 #define _XIPROTO_H
0049 
0050 #include <X11/Xproto.h>
0051 #include <X11/X.h>
0052 
0053 /* make sure types have right sizes for protocol structures. */
0054 #define Window CARD32
0055 #define Time CARD32
0056 #define KeyCode CARD8
0057 #define Mask CARD32
0058 #define Atom CARD32
0059 #define Cursor CARD32
0060 
0061 /*********************************************************
0062  *
0063  * number of events, errors, and extension name.
0064  *
0065  */
0066 
0067 #define MORE_EVENTS 0x80
0068 #define DEVICE_BITS 0x7F
0069 
0070 #define InputClassBits  0x3F    /* bits in mode field for input classes */
0071 #define ModeBitsShift   6   /* amount to shift the remaining bits   */
0072 
0073 #define numInputClasses 7
0074 
0075 #define IEVENTS         17       /* does NOT include generic events */
0076 #define IERRORS         5
0077 #define IREQUESTS       39
0078 
0079 #define CLIENT_REQ      1
0080 
0081 typedef struct  _XExtEventInfo
0082     {
0083     Mask    mask;
0084     BYTE    type;
0085     BYTE    word;
0086     } XExtEventInfo;
0087 
0088 #ifndef _XITYPEDEF_POINTER
0089 typedef void *Pointer;
0090 #endif
0091 
0092 struct tmask
0093     {
0094     Mask    mask;
0095     void        *dev;
0096     };
0097 
0098 /*********************************************************
0099  *
0100  * Event constants used by library.
0101  *
0102  */
0103 
0104 #define XI_DeviceValuator       0
0105 #define XI_DeviceKeyPress       1
0106 #define XI_DeviceKeyRelease     2
0107 #define XI_DeviceButtonPress        3
0108 #define XI_DeviceButtonRelease      4
0109 #define XI_DeviceMotionNotify       5
0110 #define XI_DeviceFocusIn        6
0111 #define XI_DeviceFocusOut       7
0112 #define XI_ProximityIn          8
0113 #define XI_ProximityOut         9
0114 #define XI_DeviceStateNotify        10
0115 #define XI_DeviceMappingNotify      11
0116 #define XI_ChangeDeviceNotify       12
0117 #define XI_DeviceKeystateNotify     13
0118 #define XI_DeviceButtonstateNotify  14
0119 #define XI_DevicePresenceNotify     15
0120 #define XI_DevicePropertyNotify         16
0121 
0122 /*********************************************************
0123  *
0124  * Protocol request constants
0125  *
0126  */
0127 
0128 #define X_GetExtensionVersion       1
0129 #define X_ListInputDevices      2
0130 #define X_OpenDevice            3
0131 #define X_CloseDevice           4
0132 #define X_SetDeviceMode         5
0133 #define X_SelectExtensionEvent      6
0134 #define X_GetSelectedExtensionEvents    7
0135 #define X_ChangeDeviceDontPropagateList 8
0136 #define X_GetDeviceDontPropagateList    9
0137 #define X_GetDeviceMotionEvents     10
0138 #define X_ChangeKeyboardDevice      11
0139 #define X_ChangePointerDevice       12
0140 #define X_GrabDevice            13
0141 #define X_UngrabDevice          14
0142 #define X_GrabDeviceKey         15
0143 #define X_UngrabDeviceKey       16
0144 #define X_GrabDeviceButton      17
0145 #define X_UngrabDeviceButton        18
0146 #define X_AllowDeviceEvents     19
0147 #define X_GetDeviceFocus        20
0148 #define X_SetDeviceFocus        21
0149 #define X_GetFeedbackControl        22
0150 #define X_ChangeFeedbackControl     23
0151 #define X_GetDeviceKeyMapping       24
0152 #define X_ChangeDeviceKeyMapping    25
0153 #define X_GetDeviceModifierMapping  26
0154 #define X_SetDeviceModifierMapping  27
0155 #define X_GetDeviceButtonMapping    28
0156 #define X_SetDeviceButtonMapping    29
0157 #define X_QueryDeviceState      30
0158 #define X_SendExtensionEvent        31
0159 #define X_DeviceBell            32
0160 #define X_SetDeviceValuators        33
0161 #define X_GetDeviceControl      34
0162 #define X_ChangeDeviceControl       35
0163 /* XI 1.5 */
0164 #define X_ListDeviceProperties          36
0165 #define X_ChangeDeviceProperty          37
0166 #define X_DeleteDeviceProperty          38
0167 #define X_GetDeviceProperty             39
0168 
0169 /*********************************************************
0170  *
0171  * Protocol request and reply structures.
0172  *
0173  * GetExtensionVersion.
0174  *
0175  */
0176 
0177 typedef struct {
0178     CARD8   reqType;       /* input extension major code   */
0179     CARD8   ReqType;       /* always X_GetExtensionVersion */
0180     CARD16  length B16;
0181     CARD16  nbytes B16;
0182     CARD8   pad1, pad2;
0183 } xGetExtensionVersionReq;
0184 
0185 typedef struct {
0186     CARD8   repType;    /* X_Reply          */
0187     CARD8   RepType;    /* always X_GetExtensionVersion */
0188     CARD16  sequenceNumber B16;
0189     CARD32  length B32;
0190     CARD16  major_version B16;
0191     CARD16  minor_version B16;
0192     BOOL    present;
0193     CARD8   pad1, pad2, pad3;
0194     CARD32  pad01 B32;
0195     CARD32  pad02 B32;
0196     CARD32  pad03 B32;
0197     CARD32  pad04 B32;
0198 } xGetExtensionVersionReply;
0199 
0200 /*********************************************************
0201  *
0202  * ListInputDevices.
0203  *
0204  */
0205 
0206 typedef struct {
0207     CARD8   reqType;    /* input extension major code   */
0208     CARD8   ReqType;    /* always X_ListInputDevices    */
0209     CARD16  length B16;
0210 } xListInputDevicesReq;
0211 
0212 typedef struct {
0213     CARD8   repType;    /* X_Reply          */
0214     CARD8   RepType;        /* always X_ListInputDevices    */
0215     CARD16  sequenceNumber B16;
0216     CARD32  length B32;
0217     CARD8   ndevices;
0218     CARD8   pad1, pad2, pad3;
0219     CARD32  pad01 B32;
0220     CARD32  pad02 B32;
0221     CARD32  pad03 B32;
0222     CARD32  pad04 B32;
0223     CARD32  pad05 B32;
0224 } xListInputDevicesReply;
0225 
0226 typedef struct _xDeviceInfo *xDeviceInfoPtr;
0227 
0228 typedef struct _xAnyClassinfo *xAnyClassPtr;
0229 
0230 typedef struct _xAnyClassinfo {
0231 #if defined(__cplusplus) || defined(c_plusplus)
0232     CARD8   c_class;
0233 #else
0234     CARD8   class;
0235 #endif
0236     CARD8   length;
0237     } xAnyClassInfo;
0238 
0239 typedef struct _xDeviceInfo {
0240     CARD32  type B32;
0241     CARD8   id;
0242     CARD8   num_classes;
0243     CARD8   use;      /* IsXPointer | IsXKeyboard | IsXExtension... */
0244     CARD8   attached; /* id of master dev (if IsXExtension..) */
0245     } xDeviceInfo;
0246 
0247 typedef struct _xKeyInfo *xKeyInfoPtr;
0248 
0249 typedef struct _xKeyInfo {
0250 #if defined(__cplusplus) || defined(c_plusplus)
0251     CARD8   c_class;
0252 #else
0253     CARD8   class;
0254 #endif
0255     CARD8   length;
0256     KeyCode min_keycode;
0257     KeyCode max_keycode;
0258     CARD16  num_keys B16;
0259     CARD8   pad1,pad2;
0260     } xKeyInfo;
0261 
0262 typedef struct _xButtonInfo *xButtonInfoPtr;
0263 
0264 typedef struct _xButtonInfo {
0265 #if defined(__cplusplus) || defined(c_plusplus)
0266     CARD8   c_class;
0267 #else
0268     CARD8   class;
0269 #endif
0270     CARD8   length;
0271     CARD16  num_buttons B16;
0272     } xButtonInfo;
0273 
0274 typedef struct _xValuatorInfo *xValuatorInfoPtr;
0275 
0276 typedef struct _xValuatorInfo {
0277 #if defined(__cplusplus) || defined(c_plusplus)
0278     CARD8   c_class;
0279 #else
0280     CARD8   class;
0281 #endif
0282     CARD8   length;
0283     CARD8   num_axes;
0284     CARD8   mode;
0285     CARD32  motion_buffer_size B32;
0286     } xValuatorInfo;
0287 
0288 typedef struct _xAxisInfo *xAxisInfoPtr;
0289 
0290 typedef struct _xAxisInfo {
0291     CARD32  resolution B32;
0292     CARD32  min_value B32;
0293     CARD32  max_value B32;
0294     } xAxisInfo;
0295 
0296 /*********************************************************
0297  *
0298  * OpenDevice.
0299  *
0300  */
0301 
0302 typedef struct {
0303     CARD8   reqType;    /* input extension major code   */
0304     CARD8   ReqType;        /* always X_OpenDevice      */
0305     CARD16  length B16;
0306     CARD8       deviceid;
0307     BYTE    pad1, pad2, pad3;
0308 } xOpenDeviceReq;
0309 
0310 typedef struct {
0311     CARD8   repType;    /* X_Reply          */
0312     CARD8   RepType;    /* always X_OpenDevice      */
0313     CARD16  sequenceNumber B16;
0314     CARD32  length B32;
0315     CARD8   num_classes;
0316     BYTE    pad1, pad2, pad3;
0317     CARD32  pad00 B32;
0318     CARD32  pad01 B32;
0319     CARD32  pad02 B32;
0320     CARD32  pad03 B32;
0321     CARD32  pad04 B32;
0322     } xOpenDeviceReply;
0323 
0324 typedef struct {
0325 #if defined(__cplusplus) || defined(c_plusplus)
0326     CARD8   c_class;
0327 #else
0328     CARD8   class;
0329 #endif
0330     CARD8   event_type_base;
0331     } xInputClassInfo;
0332 
0333 /*********************************************************
0334  *
0335  * CloseDevice.
0336  *
0337  */
0338 
0339 typedef struct {
0340     CARD8   reqType;    /* input extension major code   */
0341     CARD8   ReqType;        /* always X_CloseDevice */
0342     CARD16  length B16;
0343     CARD8       deviceid;
0344     BYTE    pad1, pad2, pad3;
0345 } xCloseDeviceReq;
0346 
0347 /*********************************************************
0348  *
0349  * SetDeviceMode.
0350  *
0351  */
0352 
0353 typedef struct {
0354     CARD8   reqType;    /* input extension major code   */
0355     CARD8   ReqType;    /* always X_SetDeviceMode   */
0356     CARD16  length B16;
0357     CARD8       deviceid;
0358     CARD8       mode;
0359     BYTE    pad1, pad2;
0360 } xSetDeviceModeReq;
0361 
0362 typedef struct {
0363     CARD8   repType;    /* X_Reply          */
0364     CARD8   RepType;    /* always X_SetDeviceMode   */
0365     CARD16  sequenceNumber B16;
0366     CARD32  length B32;
0367     CARD8   status;
0368     BYTE    pad1, pad2, pad3;
0369     CARD32  pad01 B32;
0370     CARD32  pad02 B32;
0371     CARD32  pad03 B32;
0372     CARD32  pad04 B32;
0373     CARD32  pad05 B32;
0374 } xSetDeviceModeReply;
0375 
0376 /*********************************************************
0377  *
0378  * SelectExtensionEvent.
0379  *
0380  */
0381 
0382 typedef struct {
0383     CARD8   reqType;    /* input extension major code   */
0384     CARD8   ReqType;        /* always X_SelectExtensionEvent */
0385     CARD16  length B16;
0386     Window  window B32;
0387     CARD16  count B16;
0388     CARD16  pad00 B16;
0389 } xSelectExtensionEventReq;
0390 
0391 /*********************************************************
0392  *
0393  * GetSelectedExtensionEvent.
0394  *
0395  */
0396 
0397 typedef struct {
0398     CARD8   reqType;    /* input extension major code   */
0399     CARD8   ReqType;        /* X_GetSelectedExtensionEvents */
0400     CARD16  length B16;
0401     Window  window B32;
0402 } xGetSelectedExtensionEventsReq;
0403 
0404 typedef struct {
0405     CARD8   repType;    /* X_Reply          */
0406     CARD8   RepType;    /* GetSelectedExtensionEvents   */
0407     CARD16  sequenceNumber B16;
0408     CARD32  length B32;
0409     CARD16  this_client_count B16;
0410     CARD16  all_clients_count B16;
0411     CARD32  pad01 B32;
0412     CARD32  pad02 B32;
0413     CARD32  pad03 B32;
0414     CARD32  pad04 B32;
0415     CARD32  pad05 B32;
0416 } xGetSelectedExtensionEventsReply;
0417 
0418 /*********************************************************
0419  *
0420  * ChangeDeviceDontPropagateList.
0421  *
0422  */
0423 
0424 typedef struct {
0425     CARD8   reqType;    /* input extension major code   */
0426     CARD8   ReqType;        /* X_ChangeDeviceDontPropagateList */
0427     CARD16  length B16;
0428     Window  window B32;
0429     CARD16  count B16;
0430     CARD8   mode;
0431     BYTE    pad;
0432 } xChangeDeviceDontPropagateListReq;
0433 
0434 /*********************************************************
0435  *
0436  * GetDeviceDontPropagateList.
0437  *
0438  */
0439 
0440 typedef struct {
0441     CARD8   reqType;    /* input extension major code   */
0442     CARD8   ReqType;        /* X_GetDeviceDontPropagateList */
0443     CARD16  length B16;
0444     Window  window B32;
0445 } xGetDeviceDontPropagateListReq;
0446 
0447 typedef struct {
0448     CARD8   repType;    /* X_Reply          */
0449     CARD8   RepType;        /* GetDeviceDontPropagateList   */
0450     CARD16  sequenceNumber B16;
0451     CARD32  length B32;
0452     CARD16  count B16;
0453     CARD16  pad00 B16;
0454     CARD32  pad01 B32;
0455     CARD32  pad02 B32;
0456     CARD32  pad03 B32;
0457     CARD32  pad04 B32;
0458     CARD32  pad05 B32;
0459     } xGetDeviceDontPropagateListReply;
0460 
0461 /*********************************************************
0462  *
0463  * GetDeviceMotionEvents.
0464  *
0465  */
0466 
0467 typedef struct {
0468     CARD8   reqType;    /* input extension major code   */
0469     CARD8   ReqType;        /* always X_GetDeviceMotionEvents*/
0470     CARD16  length B16;
0471     Time    start B32;
0472     Time    stop B32;
0473     CARD8   deviceid;
0474     BYTE    pad1, pad2, pad3;
0475 } xGetDeviceMotionEventsReq;
0476 
0477 typedef struct {
0478     CARD8   repType;    /* X_Reply */
0479     CARD8   RepType;        /* always X_GetDeviceMotionEvents  */
0480     CARD16  sequenceNumber B16;
0481     CARD32  length B32;
0482     CARD32  nEvents B32;
0483     CARD8   axes;
0484     CARD8   mode;
0485     BYTE    pad1, pad2;
0486     CARD32  pad01 B32;
0487     CARD32  pad02 B32;
0488     CARD32  pad03 B32;
0489     CARD32  pad04 B32;
0490 } xGetDeviceMotionEventsReply;
0491 
0492 /*********************************************************
0493  *
0494  * ChangeKeyboardDevice.
0495  *
0496  */
0497 
0498 typedef struct {
0499     CARD8   reqType;    /* input extension major code   */
0500     CARD8   ReqType;        /* X_ChangeKeyboardDevice   */
0501     CARD16  length B16;
0502     CARD8   deviceid;
0503     BYTE    pad1, pad2, pad3;
0504 } xChangeKeyboardDeviceReq;
0505 
0506 typedef struct {
0507     CARD8   repType;    /* X_Reply          */
0508     CARD8   RepType;        /* always X_ChangeKeyboardDevice*/
0509     CARD16  sequenceNumber B16;
0510     CARD32  length B32;  /* 0 */
0511     CARD8   status;
0512     BYTE    pad1, pad2, pad3;
0513     CARD32  pad01 B32;
0514     CARD32  pad02 B32;
0515     CARD32  pad03 B32;
0516     CARD32  pad04 B32;
0517     CARD32  pad05 B32;
0518     } xChangeKeyboardDeviceReply;
0519 
0520 /*********************************************************
0521  *
0522  * ChangePointerDevice.
0523  *
0524  */
0525 
0526 typedef struct {
0527     CARD8   reqType;    /* input extension major code   */
0528     CARD8   ReqType;        /* X_ChangePointerDevice    */
0529     CARD16  length B16;
0530     CARD8   xaxis;
0531     CARD8   yaxis;
0532     CARD8   deviceid;
0533     BYTE    pad1;
0534 } xChangePointerDeviceReq;
0535 
0536 typedef struct {
0537     CARD8   repType;    /* X_Reply          */
0538     CARD8   RepType;        /* always X_ChangePointerDevice */
0539     CARD16  sequenceNumber B16;
0540     CARD32  length B32;  /* 0 */
0541     CARD8   status;
0542     BYTE    pad1, pad2, pad3;
0543     CARD32  pad01 B32;
0544     CARD32  pad02 B32;
0545     CARD32  pad03 B32;
0546     CARD32  pad04 B32;
0547     CARD32  pad05 B32;
0548     } xChangePointerDeviceReply;
0549 
0550 /*********************************************************
0551  *
0552  * GrabDevice.
0553  *
0554  */
0555 
0556 typedef struct {
0557     CARD8   reqType;    /* input extension major code   */
0558     CARD8   ReqType;        /* always X_GrabDevice */
0559     CARD16  length B16;
0560     Window  grabWindow B32;
0561     Time    time B32;
0562     CARD16  event_count B16;
0563     CARD8   this_device_mode;
0564     CARD8   other_devices_mode;
0565     BOOL    ownerEvents;
0566     CARD8   deviceid;
0567     CARD16  pad01 B16;
0568 } xGrabDeviceReq;
0569 
0570 typedef struct {
0571     CARD8   repType;    /* X_Reply          */
0572     CARD8   RepType;        /* always X_GrabDevice  */
0573     CARD16  sequenceNumber B16;
0574     CARD32  length B32;  /* 0 */
0575     CARD8   status;
0576     BYTE    pad1, pad2, pad3;
0577     CARD32  pad01 B32;
0578     CARD32  pad02 B32;
0579     CARD32  pad03 B32;
0580     CARD32  pad04 B32;
0581     CARD32  pad05 B32;
0582     } xGrabDeviceReply;
0583 
0584 /*********************************************************
0585  *
0586  * UngrabDevice.
0587  *
0588  */
0589 
0590 typedef struct {
0591     CARD8   reqType;    /* input extension major code   */
0592     CARD8   ReqType;        /* always X_UnGrabDevice    */
0593     CARD16  length B16;
0594     Time    time B32;
0595     CARD8   deviceid;
0596     BYTE    pad1, pad2, pad3;
0597 } xUngrabDeviceReq;
0598 
0599 /*********************************************************
0600  *
0601  * GrabDeviceKey.
0602  *
0603  */
0604 
0605 typedef struct {
0606     CARD8   reqType;    /* input extension major code   */
0607     CARD8   ReqType;        /* always X_GrabDeviceKey   */
0608     CARD16  length B16;
0609     Window  grabWindow B32;
0610     CARD16  event_count B16;
0611     CARD16  modifiers B16;
0612     CARD8   modifier_device;
0613     CARD8   grabbed_device;
0614     CARD8   key;
0615     BYTE    this_device_mode;
0616     BYTE    other_devices_mode;
0617     BOOL    ownerEvents;
0618     BYTE    pad1, pad2;
0619 } xGrabDeviceKeyReq;
0620 
0621 /*********************************************************
0622  *
0623  * UngrabDeviceKey.
0624  *
0625  */
0626 
0627 typedef struct {
0628     CARD8   reqType;    /* input extension major code   */
0629     CARD8   ReqType;        /* always X_UngrabDeviceKey */
0630     CARD16  length B16;
0631     Window  grabWindow B32;
0632     CARD16  modifiers B16;
0633     CARD8   modifier_device;
0634     CARD8   key;
0635     CARD8   grabbed_device;
0636     BYTE    pad1, pad2, pad3;
0637 } xUngrabDeviceKeyReq;
0638 
0639 /*********************************************************
0640  *
0641  * GrabDeviceButton.
0642  *
0643  */
0644 
0645 typedef struct {
0646     CARD8   reqType;    /* input extension major code   */
0647     CARD8   ReqType;        /* always X_GrabDeviceButton    */
0648     CARD16  length B16;
0649     Window  grabWindow B32;
0650     CARD8   grabbed_device;
0651     CARD8   modifier_device;
0652     CARD16  event_count B16;
0653     CARD16  modifiers B16;
0654     BYTE    this_device_mode;
0655     BYTE    other_devices_mode;
0656     CARD8   button;
0657     BOOL    ownerEvents;
0658     BYTE    pad1, pad2;
0659 } xGrabDeviceButtonReq;
0660 
0661 /*********************************************************
0662  *
0663  * UngrabDeviceButton.
0664  *
0665  */
0666 
0667 typedef struct {
0668     CARD8   reqType;    /* input extension major code   */
0669     CARD8   ReqType;        /* always X_UngrabDeviceButton  */
0670     CARD16  length B16;
0671     Window  grabWindow B32;
0672     CARD16  modifiers B16;
0673     CARD8   modifier_device;
0674     CARD8   button;
0675     CARD8   grabbed_device;
0676     BYTE    pad1, pad2, pad3;
0677 } xUngrabDeviceButtonReq;
0678 
0679 /*********************************************************
0680  *
0681  * AllowDeviceEvents.
0682  *
0683  */
0684 
0685 typedef struct {
0686     CARD8   reqType;    /* input extension major code   */
0687     CARD8   ReqType;        /* always X_AllowDeviceEvents   */
0688     CARD16  length B16;
0689     Time    time B32;
0690     CARD8   mode;
0691     CARD8   deviceid;
0692     BYTE    pad1, pad2;
0693 } xAllowDeviceEventsReq;
0694 
0695 /*********************************************************
0696  *
0697  * GetDeviceFocus.
0698  *
0699  */
0700 
0701 typedef struct {
0702     CARD8   reqType;        /* input extension major code   */
0703     CARD8   ReqType;        /* always X_GetDeviceFocus  */
0704     CARD16  length B16;
0705     CARD8   deviceid;
0706     BYTE    pad1, pad2, pad3;
0707 } xGetDeviceFocusReq;
0708 
0709 typedef struct {
0710     CARD8   repType;    /* X_Reply          */
0711     CARD8   RepType;        /* always X_GetDeviceFocus  */
0712     CARD16  sequenceNumber B16;
0713     CARD32  length B32;
0714     CARD32  focus B32;
0715     Time    time B32;
0716     CARD8   revertTo;
0717     BYTE    pad1, pad2, pad3;
0718     CARD32  pad01 B32;
0719     CARD32  pad02 B32;
0720     CARD32  pad03 B32;
0721     } xGetDeviceFocusReply;
0722 
0723 /*********************************************************
0724  *
0725  * SetDeviceFocus.
0726  *
0727  */
0728 
0729 typedef struct {
0730     CARD8   reqType;        /* input extension major code   */
0731     CARD8   ReqType;        /* always X_SetDeviceFocus  */
0732     CARD16  length B16;
0733     Window  focus B32;
0734     Time    time B32;
0735     CARD8   revertTo;
0736     CARD8   device;
0737     CARD16  pad01 B16;
0738 } xSetDeviceFocusReq;
0739 
0740 /*********************************************************
0741  *
0742  * GetFeedbackControl.
0743  *
0744  */
0745 
0746 typedef struct {
0747     CARD8   reqType;    /* input extension major code   */
0748     CARD8   ReqType;        /* X_GetFeedbackControl */
0749     CARD16  length B16;
0750     CARD8   deviceid;
0751     BYTE    pad1, pad2, pad3;
0752 } xGetFeedbackControlReq;
0753 
0754 typedef struct {
0755     CARD8   repType;    /* X_Reply          */
0756     CARD8   RepType;        /* always X_GetFeedbackControl  */
0757     CARD16  sequenceNumber B16;
0758     CARD32  length B32;
0759     CARD16  num_feedbacks B16;
0760     CARD16  pad01 B16;
0761     CARD32  pad02 B32;
0762     CARD32  pad03 B32;
0763     CARD32  pad04 B32;
0764     CARD32  pad05 B32;
0765     CARD32  pad06 B32;
0766 } xGetFeedbackControlReply;
0767 
0768 typedef struct {
0769 #if defined(__cplusplus) || defined(c_plusplus)
0770     CARD8   c_class;    /* feedback class       */
0771 #else
0772     CARD8   class;      /* feedback class       */
0773 #endif
0774     CARD8   id;     /* feedback id      */
0775     CARD16  length B16; /* feedback length      */
0776 } xFeedbackState;
0777 
0778 typedef struct {
0779 #if defined(__cplusplus) || defined(c_plusplus)
0780     CARD8   c_class;
0781 #else
0782     CARD8   class;
0783 #endif
0784     CARD8   id;
0785     CARD16  length B16;
0786     CARD16  pitch B16;
0787     CARD16  duration B16;
0788     CARD32  led_mask B32;
0789     CARD32  led_values B32;
0790     BOOL    global_auto_repeat;
0791     CARD8   click;
0792     CARD8   percent;
0793     BYTE    pad;
0794     BYTE    auto_repeats[32];
0795 } xKbdFeedbackState;
0796 
0797 typedef struct {
0798 #if defined(__cplusplus) || defined(c_plusplus)
0799     CARD8   c_class;
0800 #else
0801     CARD8   class;
0802 #endif
0803     CARD8   id;
0804     CARD16  length B16;
0805     CARD8   pad1,pad2;
0806     CARD16  accelNum B16;
0807     CARD16  accelDenom B16;
0808     CARD16  threshold B16;
0809 } xPtrFeedbackState;
0810 
0811 typedef struct {
0812 #if defined(__cplusplus) || defined(c_plusplus)
0813     CARD8   c_class;    /* feedback class id        */
0814 #else
0815     CARD8   class;      /* feedback class id        */
0816 #endif
0817     CARD8   id;
0818     CARD16  length B16; /* feedback length      */
0819     CARD32  resolution B32;
0820     INT32   min_value B32;
0821     INT32   max_value B32;
0822 } xIntegerFeedbackState;
0823 
0824 typedef struct {
0825 #if defined(__cplusplus) || defined(c_plusplus)
0826     CARD8   c_class;    /* feedback class id        */
0827 #else
0828     CARD8   class;      /* feedback class id        */
0829 #endif
0830     CARD8   id;
0831     CARD16  length B16; /* feedback length      */
0832     CARD16  max_symbols B16;
0833     CARD16  num_syms_supported B16;
0834 } xStringFeedbackState;
0835 
0836 typedef struct {
0837 #if defined(__cplusplus) || defined(c_plusplus)
0838     CARD8   c_class;    /* feedback class id        */
0839 #else
0840     CARD8   class;      /* feedback class id        */
0841 #endif
0842     CARD8   id;
0843     CARD16  length B16; /* feedback length      */
0844     CARD8   percent;
0845     BYTE    pad1, pad2, pad3;
0846     CARD16  pitch B16;
0847     CARD16  duration B16;
0848 } xBellFeedbackState;
0849 
0850 typedef struct {
0851 #if defined(__cplusplus) || defined(c_plusplus)
0852     CARD8   c_class;    /* feedback class id        */
0853 #else
0854     CARD8   class;      /* feedback class id        */
0855 #endif
0856     CARD8   id;
0857     CARD16  length B16; /* feedback length      */
0858     CARD32  led_mask B32;
0859     CARD32  led_values B32;
0860 } xLedFeedbackState;
0861 
0862 /*********************************************************
0863  *
0864  * ChangeFeedbackControl.
0865  *
0866  */
0867 
0868 typedef struct {
0869     CARD8   reqType;    /* input extension major code   */
0870     CARD8   ReqType;        /* X_ChangeFeedbackControl  */
0871     CARD16  length B16;
0872     CARD32  mask B32;
0873     CARD8   deviceid;
0874     CARD8   feedbackid;
0875     BYTE    pad1, pad2;
0876 } xChangeFeedbackControlReq;
0877 
0878 typedef struct {
0879 #if defined(__cplusplus) || defined(c_plusplus)
0880     CARD8   c_class;    /* feedback class id        */
0881 #else
0882     CARD8   class;      /* feedback class id        */
0883 #endif
0884     CARD8   id;     /* feedback id      */
0885     CARD16  length B16; /* feedback length      */
0886 } xFeedbackCtl;
0887 
0888 typedef struct {
0889 #if defined(__cplusplus) || defined(c_plusplus)
0890     CARD8   c_class;    /* feedback class id        */
0891 #else
0892     CARD8   class;      /* feedback class id        */
0893 #endif
0894     CARD8   id;     /* feedback length      */
0895     CARD16  length B16; /* feedback length      */
0896     KeyCode key;
0897     CARD8   auto_repeat_mode;
0898     INT8    click;
0899     INT8    percent;
0900     INT16   pitch B16;
0901     INT16   duration B16;
0902     CARD32  led_mask B32;
0903     CARD32  led_values B32;
0904 } xKbdFeedbackCtl;
0905 
0906 typedef struct {
0907 #if defined(__cplusplus) || defined(c_plusplus)
0908     CARD8   c_class;    /* feedback class id        */
0909 #else
0910     CARD8   class;      /* feedback class id        */
0911 #endif
0912     CARD8   id;     /* feedback id      */
0913     CARD16  length B16; /* feedback length      */
0914     CARD8   pad1,pad2;
0915     INT16   num B16;
0916     INT16   denom B16;
0917     INT16   thresh B16;
0918 } xPtrFeedbackCtl;
0919 
0920 typedef struct {
0921 #if defined(__cplusplus) || defined(c_plusplus)
0922     CARD8   c_class;    /* feedback class id        */
0923 #else
0924     CARD8   class;      /* feedback class id        */
0925 #endif
0926     CARD8   id;     /* feedback id      */
0927     CARD16  length B16; /* feedback length      */
0928     INT32   int_to_display B32;
0929 } xIntegerFeedbackCtl;
0930 
0931 typedef struct {
0932 #if defined(__cplusplus) || defined(c_plusplus)
0933     CARD8   c_class;    /* feedback class id        */
0934 #else
0935     CARD8   class;      /* feedback class id        */
0936 #endif
0937     CARD8   id;     /* feedback id      */
0938     CARD16  length B16; /* feedback length      */
0939     CARD8   pad1,pad2;
0940     CARD16  num_keysyms B16;
0941 } xStringFeedbackCtl;
0942 
0943 typedef struct {
0944 #if defined(__cplusplus) || defined(c_plusplus)
0945     CARD8   c_class;    /* feedback class id        */
0946 #else
0947     CARD8   class;      /* feedback class id        */
0948 #endif
0949     CARD8   id;     /* feedback id      */
0950     CARD16  length B16; /* feedback length      */
0951     INT8    percent;
0952     BYTE    pad1, pad2, pad3;
0953     INT16   pitch B16;
0954     INT16   duration B16;
0955 } xBellFeedbackCtl;
0956 
0957 typedef struct {
0958 #if defined(__cplusplus) || defined(c_plusplus)
0959     CARD8   c_class;    /* feedback class id        */
0960 #else
0961     CARD8   class;      /* feedback class id        */
0962 #endif
0963     CARD8   id;     /* feedback id      */
0964     CARD16  length B16; /* feedback length      */
0965     CARD32  led_mask B32;
0966     CARD32  led_values B32;
0967 } xLedFeedbackCtl;
0968 
0969 /*********************************************************
0970  *
0971  * GetDeviceKeyMapping.
0972  *
0973  */
0974 
0975 typedef struct {
0976     CARD8   reqType;        /* input extension major code   */
0977     CARD8   ReqType;    /* always X_GetDeviceKeyMapping */
0978     CARD16  length B16;
0979     CARD8   deviceid;
0980     KeyCode firstKeyCode;
0981     CARD8   count;
0982     BYTE    pad1;
0983 } xGetDeviceKeyMappingReq;
0984 
0985 typedef struct {
0986     CARD8   repType;    /* X_Reply          */
0987     CARD8   RepType;    /* always X_GetDeviceKeyMapping */
0988     CARD16  sequenceNumber B16;
0989     CARD32  length B32;
0990     CARD8   keySymsPerKeyCode;
0991     CARD8   pad0;
0992     CARD16  pad1 B16;
0993     CARD32  pad2 B32;
0994     CARD32  pad3 B32;
0995     CARD32  pad4 B32;
0996     CARD32  pad5 B32;
0997     CARD32  pad6 B32;
0998 } xGetDeviceKeyMappingReply;
0999 
1000 /*********************************************************
1001  *
1002  * ChangeDeviceKeyMapping.
1003  *
1004  */
1005 
1006 typedef struct {
1007     CARD8   reqType;        /* input extension major code   */
1008     CARD8   ReqType;        /* always X_ChangeDeviceKeyMapping */
1009     CARD16  length B16;
1010     CARD8   deviceid;
1011     KeyCode firstKeyCode;
1012     CARD8   keySymsPerKeyCode;
1013     CARD8   keyCodes;
1014 } xChangeDeviceKeyMappingReq;
1015 
1016 /*********************************************************
1017  *
1018  * GetDeviceModifierMapping.
1019  *
1020  */
1021 
1022 typedef struct {
1023     CARD8   reqType;        /* input extension major code   */
1024     CARD8   ReqType;        /* always X_GetDeviceModifierMapping */
1025     CARD16  length B16;
1026     CARD8   deviceid;
1027     BYTE    pad1, pad2, pad3;
1028 } xGetDeviceModifierMappingReq;
1029 
1030 typedef struct {
1031     CARD8   repType;    /* X_Reply */
1032     CARD8   RepType;        /* always X_GetDeviceModifierMapping */
1033     CARD16  sequenceNumber B16;
1034     CARD32  length B32;
1035     CARD8   numKeyPerModifier;
1036     CARD8   pad0;
1037     CARD16  pad1 B16;
1038     CARD32  pad2 B32;
1039     CARD32  pad3 B32;
1040     CARD32  pad4 B32;
1041     CARD32  pad5 B32;
1042     CARD32  pad6 B32;
1043 } xGetDeviceModifierMappingReply;
1044 
1045 /*********************************************************
1046  *
1047  * SetDeviceModifierMapping.
1048  *
1049  */
1050 
1051 typedef struct {
1052     CARD8   reqType;        /* input extension major code   */
1053     CARD8   ReqType;        /* always X_SetDeviceModifierMapping */
1054     CARD16  length B16;
1055     CARD8   deviceid;
1056     CARD8   numKeyPerModifier;
1057     CARD16  pad1 B16;
1058 } xSetDeviceModifierMappingReq;
1059 
1060 typedef struct {
1061     CARD8   repType;    /* X_Reply */
1062     CARD8   RepType;        /* always X_SetDeviceModifierMapping */
1063     CARD16  sequenceNumber B16;
1064     CARD32  length B32;
1065     CARD8   success;
1066     CARD8   pad0;
1067     CARD16  pad1 B16;
1068     CARD32  pad2 B32;
1069     CARD32  pad3 B32;
1070     CARD32  pad4 B32;
1071     CARD32  pad5 B32;
1072     CARD32  pad6 B32;
1073 } xSetDeviceModifierMappingReply;
1074 
1075 /*********************************************************
1076  *
1077  * GetDeviceButtonMapping.
1078  *
1079  */
1080 
1081 typedef struct {
1082     CARD8   reqType;    /* input extension major code   */
1083     CARD8   ReqType;        /* X_GetDeviceButtonMapping     */
1084     CARD16  length B16;
1085     CARD8   deviceid;
1086     BYTE    pad1, pad2, pad3;
1087 } xGetDeviceButtonMappingReq;
1088 
1089 typedef struct {
1090     CARD8   repType;    /* X_Reply */
1091     CARD8   RepType;        /* always X_GetDeviceButtonMapping */
1092     CARD16  sequenceNumber B16;
1093     CARD32  length B32;
1094     CARD8   nElts;
1095     BYTE    pad1, pad2, pad3;
1096     CARD32  pad01 B32;
1097     CARD32  pad02 B32;
1098     CARD32  pad03 B32;
1099     CARD32  pad04 B32;
1100     CARD32  pad05 B32;
1101 } xGetDeviceButtonMappingReply;
1102 
1103 /*********************************************************
1104  *
1105  * SetDeviceButtonMapping.
1106  *
1107  */
1108 
1109 typedef struct {
1110     CARD8   reqType;    /* input extension major code   */
1111     CARD8   ReqType;        /* X_SetDeviceButtonMapping     */
1112     CARD16  length B16;
1113     CARD8   deviceid;
1114     CARD8   map_length;
1115     BYTE    pad1, pad2;
1116 } xSetDeviceButtonMappingReq;
1117 
1118 typedef struct {
1119     CARD8   repType;        /* X_Reply */
1120     CARD8   RepType;    /* always X_SetDeviceButtonMapping */
1121     CARD16  sequenceNumber B16;
1122     CARD32  length B32;
1123     CARD8   status;
1124     BYTE    pad0;
1125     CARD16  pad1 B16;
1126     CARD32  pad2 B32;
1127     CARD32  pad3 B32;
1128     CARD32  pad4 B32;
1129     CARD32  pad5 B32;
1130     CARD32  pad6 B32;
1131 } xSetDeviceButtonMappingReply;
1132 
1133 /*********************************************************
1134  *
1135  * QueryDeviceState.
1136  *
1137  */
1138 
1139 typedef struct {
1140     CARD8   reqType;
1141     CARD8   ReqType;        /* always X_QueryDeviceState */
1142     CARD16  length B16;
1143     CARD8   deviceid;
1144     BYTE    pad1, pad2, pad3;
1145 } xQueryDeviceStateReq;
1146 
1147 typedef struct {
1148     CARD8   repType;        /* X_Reply */
1149     CARD8   RepType;    /* always X_QueryDeviceState    */
1150     CARD16  sequenceNumber B16;
1151     CARD32  length B32;
1152     CARD8   num_classes;
1153     BYTE    pad0;
1154     CARD16  pad1 B16;
1155     CARD32  pad2 B32;
1156     CARD32  pad3 B32;
1157     CARD32  pad4 B32;
1158     CARD32  pad5 B32;
1159     CARD32  pad6 B32;
1160 } xQueryDeviceStateReply;
1161 
1162 typedef struct {
1163 #if defined(__cplusplus) || defined(c_plusplus)
1164     CARD8   c_class;
1165 #else
1166     CARD8   class;
1167 #endif
1168     CARD8   length;
1169     CARD8   num_keys;
1170     BYTE    pad1;
1171     CARD8   keys[32];
1172 } xKeyState;
1173 
1174 typedef struct {
1175 #if defined(__cplusplus) || defined(c_plusplus)
1176     CARD8   c_class;
1177 #else
1178     CARD8   class;
1179 #endif
1180     CARD8   length;
1181     CARD8   num_buttons;
1182     BYTE    pad1;
1183     CARD8   buttons[32];
1184 } xButtonState;
1185 
1186 typedef struct {
1187 #if defined(__cplusplus) || defined(c_plusplus)
1188     CARD8   c_class;
1189 #else
1190     CARD8   class;
1191 #endif
1192     CARD8   length;
1193     CARD8   num_valuators;
1194     CARD8   mode;
1195 } xValuatorState;
1196 
1197 /*********************************************************
1198  *
1199  * SendExtensionEvent.
1200  * THIS REQUEST MUST BE KEPT A MULTIPLE OF 8 BYTES IN LENGTH!
1201  * MORE EVENTS MAY FOLLOW AND THEY MUST BE QUAD-ALIGNED!
1202  *
1203  */
1204 
1205 typedef struct {
1206     CARD8   reqType;
1207     CARD8   ReqType;        /* always X_SendExtensionEvent */
1208     CARD16  length B16;
1209     Window  destination B32;
1210     CARD8   deviceid;
1211     BOOL    propagate;
1212     CARD16  count B16;
1213     CARD8   num_events;
1214     BYTE    pad1,pad2,pad3;
1215 } xSendExtensionEventReq;
1216 
1217 /*********************************************************
1218  *
1219  * DeviceBell.
1220  *
1221  */
1222 
1223 typedef struct {
1224     CARD8   reqType;
1225     CARD8   ReqType;        /* always X_DeviceBell */
1226     CARD16  length B16;
1227     CARD8   deviceid;
1228     CARD8   feedbackid;
1229     CARD8   feedbackclass;
1230     INT8    percent;
1231 } xDeviceBellReq;
1232 
1233 /*********************************************************
1234  *
1235  * SetDeviceValuators.
1236  *
1237  */
1238 
1239 typedef struct {
1240     CARD8   reqType;    /* input extension major code   */
1241     CARD8   ReqType;    /* always X_SetDeviceValuators  */
1242     CARD16  length B16;
1243     CARD8       deviceid;
1244     CARD8       first_valuator;
1245     CARD8       num_valuators;
1246     BYTE    pad1;
1247 } xSetDeviceValuatorsReq;
1248 
1249 typedef struct {
1250     CARD8   repType;    /* X_Reply          */
1251     CARD8   RepType;    /* always X_SetDeviceValuators  */
1252     CARD16  sequenceNumber B16;
1253     CARD32  length B32;
1254     CARD8   status;
1255     BYTE    pad1, pad2, pad3;
1256     CARD32  pad01 B32;
1257     CARD32  pad02 B32;
1258     CARD32  pad03 B32;
1259     CARD32  pad04 B32;
1260     CARD32  pad05 B32;
1261 } xSetDeviceValuatorsReply;
1262 
1263 /*********************************************************
1264  *
1265  * GetDeviceControl.
1266  *
1267  */
1268 
1269 typedef struct {
1270     CARD8   reqType;    /* input extension major code   */
1271     CARD8   ReqType;    /* always X_GetDeviceControl    */
1272     CARD16  length B16;
1273     CARD16      control B16;
1274     CARD8       deviceid;
1275     BYTE    pad2;
1276 } xGetDeviceControlReq;
1277 
1278 typedef struct {
1279     CARD8   repType;    /* X_Reply          */
1280     CARD8   RepType;    /* always X_GetDeviceControl    */
1281     CARD16  sequenceNumber B16;
1282     CARD32  length B32;
1283     CARD8   status;
1284     BYTE    pad1, pad2, pad3;
1285     CARD32  pad01 B32;
1286     CARD32  pad02 B32;
1287     CARD32  pad03 B32;
1288     CARD32  pad04 B32;
1289     CARD32  pad05 B32;
1290 } xGetDeviceControlReply;
1291 
1292 typedef struct {
1293     CARD16  control B16;    /* control type     */
1294     CARD16  length B16; /* control length       */
1295 } xDeviceState;
1296 
1297 typedef struct {
1298     CARD16  control B16;        /* control type     */
1299     CARD16  length B16;     /* control length       */
1300     CARD32  num_valuators B32;  /* number of valuators      */
1301 } xDeviceResolutionState;
1302 
1303 typedef struct {
1304      CARD16         control B16;
1305      CARD16         length B16;
1306      INT32          min_x B32;
1307      INT32          max_x B32;
1308      INT32          min_y B32;
1309      INT32          max_y B32;
1310      CARD32         flip_x B32;
1311      CARD32         flip_y B32;
1312      CARD32         rotation B32;
1313      CARD32         button_threshold B32;
1314 } xDeviceAbsCalibState;
1315 
1316 typedef struct {
1317      CARD16         control B16;
1318      CARD16         length B16;
1319      CARD32         offset_x B32;
1320      CARD32         offset_y B32;
1321      CARD32         width B32;
1322      CARD32         height B32;
1323      CARD32         screen B32;
1324      CARD32         following B32;
1325 } xDeviceAbsAreaState;
1326 
1327 typedef struct {
1328     CARD16      control B16;            /* control type                 */
1329     CARD16      length  B16;            /* control length               */
1330     CARD8       status;
1331     CARD8       iscore;
1332     CARD16      pad1 B16;
1333 } xDeviceCoreState;
1334 
1335 typedef struct {
1336     CARD16      control B16;            /* control type                 */
1337     CARD16      length  B16;            /* control length               */
1338     CARD8       enable;
1339     CARD8       pad0;
1340     CARD16      pad1 B16;
1341 } xDeviceEnableState;
1342 
1343 /*********************************************************
1344  *
1345  * ChangeDeviceControl.
1346  *
1347  */
1348 
1349 typedef struct {
1350     CARD8   reqType;    /* input extension major code   */
1351     CARD8   ReqType;    /* always X_ChangeDeviceControl */
1352     CARD16  length B16;
1353     CARD16      control B16;
1354     CARD8       deviceid;
1355     BYTE        pad0;
1356 } xChangeDeviceControlReq;
1357 
1358 typedef struct {
1359     CARD8   repType;    /* X_Reply          */
1360     CARD8   RepType;    /* always X_ChangeDeviceControl */
1361     CARD16  sequenceNumber B16;
1362     CARD32  length B32;
1363     CARD8   status;
1364     BYTE    pad1, pad2, pad3;
1365     CARD32  pad01 B32;
1366     CARD32  pad02 B32;
1367     CARD32  pad03 B32;
1368     CARD32  pad04 B32;
1369     CARD32  pad05 B32;
1370 } xChangeDeviceControlReply;
1371 
1372 typedef struct {
1373     CARD16  control B16;    /* control type     */
1374     CARD16  length B16; /* control length       */
1375 } xDeviceCtl;
1376 
1377 typedef struct {
1378     CARD16  control B16;        /* control type     */
1379     CARD16  length B16;     /* control length       */
1380     CARD8   first_valuator;     /* first valuator to change     */
1381     CARD8   num_valuators;      /* number of valuators to change*/
1382     CARD8   pad1,pad2;
1383 } xDeviceResolutionCtl;
1384 
1385 typedef struct {
1386      CARD16         control B16;
1387      CARD16         length B16;
1388      INT32          min_x;
1389      INT32          max_x;
1390      INT32          min_y;
1391      INT32          max_y;
1392      CARD32         flip_x;
1393      CARD32         flip_y;
1394      CARD32         rotation;
1395      CARD32         button_threshold;
1396 } xDeviceAbsCalibCtl;
1397 
1398 typedef struct {
1399      CARD16         control B16;
1400      CARD16         length B16;
1401      CARD32         offset_x;
1402      CARD32         offset_y;
1403      INT32          width;
1404      INT32          height;
1405      INT32          screen;
1406      CARD32         following;
1407 } xDeviceAbsAreaCtl;
1408 
1409 typedef struct {
1410     CARD16          control B16;
1411     CARD16          length  B16;
1412     CARD8           status;
1413     CARD8           pad0;
1414     CARD16          pad1 B16;
1415 } xDeviceCoreCtl;
1416 
1417 typedef struct {
1418     CARD16          control B16;
1419     CARD16          length  B16;
1420     CARD8           enable;
1421     CARD8           pad0;
1422     CARD16          pad1 B16;
1423 } xDeviceEnableCtl;
1424 
1425 /* XI 1.5 */
1426 
1427 /*********************************************************
1428  *
1429  * ListDeviceProperties.
1430  *
1431  */
1432 
1433 typedef struct {
1434     CARD8       reqType;        /* input extension major opcode */
1435     CARD8       ReqType;        /* always X_ListDeviceProperties */
1436     CARD16      length B16;
1437     CARD8       deviceid;
1438     CARD8       pad0;
1439     CARD16      pad1 B16;
1440 } xListDevicePropertiesReq;
1441 
1442 typedef struct {
1443     CARD8       repType;        /* X_Reply                       */
1444     CARD8       RepType;        /* always X_ListDeviceProperties */
1445     CARD16      sequenceNumber B16;
1446     CARD32      length B32;
1447     CARD16      nAtoms B16;
1448     CARD16      pad1 B16;
1449     CARD32      pad2 B32;
1450     CARD32      pad3 B32;
1451     CARD32      pad4 B32;
1452     CARD32      pad5 B32;
1453     CARD32      pad6 B32;
1454 } xListDevicePropertiesReply;
1455 
1456 /*********************************************************
1457  *
1458  * ChangeDeviceProperty.
1459  *
1460  */
1461 
1462 typedef struct {
1463     CARD8       reqType;        /* input extension major opcode */
1464     CARD8       ReqType;        /* always X_ChangeDeviceProperty */
1465     CARD16      length B16;
1466     Atom        property B32;
1467     Atom        type B32;
1468     CARD8       deviceid;
1469     CARD8       format;
1470     CARD8       mode;
1471     CARD8       pad;
1472     CARD32      nUnits B32;
1473 } xChangeDevicePropertyReq;
1474 
1475 /*********************************************************
1476  *
1477  * DeleteDeviceProperty.
1478  *
1479  */
1480 
1481 typedef struct {
1482     CARD8       reqType;        /* input extension major opcode */
1483     CARD8       ReqType;        /* always X_DeleteDeviceProperty */
1484     CARD16      length B16;
1485     Atom        property B32;
1486     CARD8       deviceid;
1487     CARD8       pad0;
1488     CARD16      pad1 B16;
1489 } xDeleteDevicePropertyReq;
1490 
1491 /*********************************************************
1492  *
1493  * GetDeviceProperty.
1494  *
1495  */
1496 
1497 typedef struct {
1498     CARD8       reqType;        /* input extension major opcode */
1499     CARD8       ReqType;        /* always X_GetDeviceProperty */
1500     CARD16      length B16;
1501     Atom        property B32;
1502     Atom        type B32;
1503     CARD32      longOffset B32;
1504     CARD32      longLength B32;
1505     CARD8       deviceid;
1506 #if defined(__cplusplus) || defined(c_plusplus)
1507     BOOL        c_delete;
1508 #else
1509     BOOL        delete;
1510 #endif
1511     CARD16      pad;
1512 } xGetDevicePropertyReq;
1513 
1514 typedef struct {
1515     CARD8       repType;        /* X_Reply                        */
1516     CARD8       RepType;        /* always X_GetDeviceProperty   */
1517     CARD16      sequenceNumber B16;
1518     CARD32      length B32;
1519     Atom        propertyType B32;
1520     CARD32      bytesAfter B32;
1521     CARD32      nItems B32;
1522     CARD8       format;
1523     CARD8       deviceid;
1524     CARD16      pad1 B16;
1525     CARD32      pad2 B32;
1526     CARD32      pad3 B32;
1527 } xGetDevicePropertyReply;
1528 
1529 
1530 /**********************************************************
1531  *
1532  * Input extension events.
1533  *
1534  * DeviceValuator
1535  *
1536  */
1537 
1538 typedef struct
1539     {
1540     BYTE    type;
1541     CARD8       deviceid;
1542     CARD16  sequenceNumber B16;
1543     KeyButMask  device_state B16;
1544     CARD8   num_valuators;
1545     CARD8       first_valuator;
1546     INT32   valuator0 B32;
1547     INT32   valuator1 B32;
1548     INT32   valuator2 B32;
1549     INT32   valuator3 B32;
1550     INT32   valuator4 B32;
1551     INT32   valuator5 B32;
1552     }  deviceValuator;
1553 
1554 /**********************************************************
1555  *
1556  * DeviceKeyButtonPointer.
1557  *
1558  * Used for: DeviceKeyPress, DeviceKeyRelease,
1559  *       DeviceButtonPress, DeviceButtonRelease,
1560  *       ProximityIn, ProximityOut
1561  *       DeviceMotionNotify,
1562  *
1563  */
1564 
1565 typedef struct
1566     {
1567     BYTE    type;
1568     BYTE        detail;
1569     CARD16  sequenceNumber B16;
1570     Time        time B32;
1571     Window      root B32;
1572     Window      event B32;
1573     Window      child B32;
1574     INT16       root_x B16;
1575     INT16       root_y B16;
1576     INT16       event_x B16;
1577     INT16       event_y B16;
1578     KeyButMask  state B16;
1579     BOOL        same_screen;
1580     CARD8       deviceid;
1581     }  deviceKeyButtonPointer;
1582 
1583 /**********************************************************
1584  *
1585  * DeviceFocus.
1586  *
1587  */
1588 
1589 typedef struct
1590     {
1591     BYTE    type;
1592     BYTE        detail;
1593     CARD16  sequenceNumber B16;
1594     Time        time B32;
1595     Window      window B32;
1596     BYTE    mode;
1597     CARD8       deviceid;
1598     BYTE    pad1, pad2;
1599     CARD32  pad00 B32;
1600     CARD32  pad01 B32;
1601     CARD32  pad02 B32;
1602     CARD32  pad03 B32;
1603     }  deviceFocus;
1604 
1605 /**********************************************************
1606  *
1607  * DeviceStateNotify.
1608  *
1609  * Note that the two high-order bits in the classes_reported
1610  * field are the proximity state (InProximity or OutOfProximity),
1611  * and the device mode (Absolute or Relative), respectively.
1612  *
1613  */
1614 
1615 typedef struct
1616     {
1617     BYTE    type;
1618     BYTE        deviceid;
1619     CARD16  sequenceNumber B16;
1620     Time        time B32;
1621     CARD8   num_keys;
1622     CARD8   num_buttons;
1623     CARD8   num_valuators;
1624     CARD8       classes_reported;
1625     CARD8       buttons[4];
1626     CARD8       keys[4];
1627     INT32   valuator0 B32;
1628     INT32   valuator1 B32;
1629     INT32   valuator2 B32;
1630     }  deviceStateNotify;
1631 
1632 /**********************************************************
1633  *
1634  * DeviceKeyStateNotify.
1635  *
1636  */
1637 
1638 typedef struct
1639     {
1640     BYTE    type;
1641     BYTE        deviceid;
1642     CARD16  sequenceNumber B16;
1643     CARD8       keys[28];
1644     }  deviceKeyStateNotify;
1645 
1646 /**********************************************************
1647  *
1648  * DeviceButtonStateNotify.
1649  *
1650  */
1651 
1652 typedef struct
1653     {
1654     BYTE    type;
1655     BYTE        deviceid;
1656     CARD16  sequenceNumber B16;
1657     CARD8       buttons[28];
1658     }  deviceButtonStateNotify;
1659 
1660 /**********************************************************
1661  *
1662  * DeviceMappingNotify.
1663  * Fields must be kept in sync with core mappingnotify event.
1664  *
1665  */
1666 
1667 typedef struct
1668     {
1669     BYTE    type;
1670     BYTE        deviceid;
1671     CARD16  sequenceNumber B16;
1672     CARD8       request;
1673     KeyCode     firstKeyCode;
1674     CARD8       count;
1675     BYTE        pad1;
1676     Time        time B32;
1677     CARD32  pad00 B32;
1678     CARD32  pad01 B32;
1679     CARD32  pad02 B32;
1680     CARD32  pad03 B32;
1681     CARD32  pad04 B32;
1682     }  deviceMappingNotify;
1683 
1684 /**********************************************************
1685  *
1686  * ChangeDeviceNotify.
1687  *
1688  */
1689 
1690 typedef struct
1691     {
1692     BYTE    type;
1693     BYTE        deviceid;
1694     CARD16  sequenceNumber B16;
1695     Time        time B32;
1696     CARD8       request;
1697     BYTE        pad1, pad2, pad3;
1698     CARD32  pad00 B32;
1699     CARD32  pad01 B32;
1700     CARD32  pad02 B32;
1701     CARD32  pad03 B32;
1702     CARD32  pad04 B32;
1703     }  changeDeviceNotify;
1704 
1705 /**********************************************************
1706  *
1707  * devicePresenceNotify.
1708  *
1709  */
1710 
1711 typedef struct
1712     {
1713     BYTE    type;
1714     BYTE        pad00;
1715     CARD16  sequenceNumber B16;
1716     Time        time B32;
1717     BYTE        devchange; /* Device{Added|Removed|Enabled|Disabled|ControlChanged} */
1718     BYTE        deviceid;
1719     CARD16      control B16;
1720     CARD32  pad02 B32;
1721     CARD32  pad03 B32;
1722     CARD32  pad04 B32;
1723     CARD32  pad05 B32;
1724     CARD32  pad06 B32;
1725     }  devicePresenceNotify;
1726 
1727 
1728 /*********************************************************
1729  * DevicePropertyNotifyEvent
1730  *
1731  * Sent whenever a device's property changes.
1732  *
1733  */
1734 
1735 typedef struct
1736     {
1737     BYTE        type;
1738     BYTE        state;               /* NewValue or Deleted */
1739     CARD16      sequenceNumber B16;
1740     CARD32      time B32;
1741     Atom        atom B32;            /* affected property */
1742     CARD32      pad0 B32;
1743     CARD32      pad1 B32;
1744     CARD32      pad2 B32;
1745     CARD32      pad3 B32;
1746     CARD16      pad5 B16;
1747     CARD8       pad4;
1748     CARD8       deviceid;            /* id of device */
1749     } devicePropertyNotify;
1750 
1751 #undef Window
1752 #undef Time
1753 #undef KeyCode
1754 #undef Mask
1755 #undef Atom
1756 #undef Cursor
1757 
1758 #endif