github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xkbcommon/include/X11/extensions/XIproto.h (about)

     1  /************************************************************
     2  
     3  Copyright 1989, 1998  The Open Group
     4  
     5  Permission to use, copy, modify, distribute, and sell this software and its
     6  documentation for any purpose is hereby granted without fee, provided that
     7  the above copyright notice appear in all copies and that both that
     8  copyright notice and this permission notice appear in supporting
     9  documentation.
    10  
    11  The above copyright notice and this permission notice shall be included in
    12  all copies or substantial portions of the Software.
    13  
    14  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
    17  OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
    18  AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    19  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    20  
    21  Except as contained in this notice, the name of The Open Group shall not be
    22  used in advertising or otherwise to promote the sale, use or other dealings
    23  in this Software without prior written authorization from The Open Group.
    24  
    25  Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
    26  
    27  			All Rights Reserved
    28  
    29  Permission to use, copy, modify, and distribute this software and its
    30  documentation for any purpose and without fee is hereby granted,
    31  provided that the above copyright notice appear in all copies and that
    32  both that copyright notice and this permission notice appear in
    33  supporting documentation, and that the name of Hewlett-Packard not be
    34  used in advertising or publicity pertaining to distribution of the
    35  software without specific, written prior permission.
    36  
    37  HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
    38  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
    39  HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
    40  ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
    41  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
    42  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
    43  SOFTWARE.
    44  
    45  ********************************************************/
    46  
    47  #ifndef _XIPROTO_H
    48  #define _XIPROTO_H
    49  
    50  #include <X11/Xproto.h>
    51  #include <X11/X.h>
    52  
    53  /* make sure types have right sizes for protocol structures. */
    54  #define Window CARD32
    55  #define Time CARD32
    56  #define KeyCode CARD8
    57  #define Mask CARD32
    58  #define Atom CARD32
    59  #define Cursor CARD32
    60  
    61  /*********************************************************
    62   *
    63   * number of events, errors, and extension name.
    64   *
    65   */
    66  
    67  #define MORE_EVENTS	0x80
    68  #define DEVICE_BITS	0x7F
    69  
    70  #define InputClassBits	0x3F	/* bits in mode field for input classes */
    71  #define ModeBitsShift	6	/* amount to shift the remaining bits   */
    72  
    73  #define numInputClasses 7
    74  
    75  #define IEVENTS         17       /* does NOT include generic events */
    76  #define IERRORS         5
    77  #define IREQUESTS       39
    78  
    79  #define CLIENT_REQ      1
    80  
    81  typedef struct  _XExtEventInfo
    82      {
    83      Mask	mask;
    84      BYTE	type;
    85      BYTE	word;
    86      } XExtEventInfo;
    87  
    88  #ifndef _XITYPEDEF_POINTER
    89  typedef void *Pointer;
    90  #endif
    91  
    92  struct tmask
    93      {
    94      Mask	mask;
    95      void        *dev;
    96      };
    97  
    98  /*********************************************************
    99   *
   100   * Event constants used by library.
   101   *
   102   */
   103  
   104  #define XI_DeviceValuator		0
   105  #define XI_DeviceKeyPress		1
   106  #define XI_DeviceKeyRelease		2
   107  #define XI_DeviceButtonPress		3
   108  #define XI_DeviceButtonRelease		4
   109  #define XI_DeviceMotionNotify		5
   110  #define XI_DeviceFocusIn		6
   111  #define XI_DeviceFocusOut		7
   112  #define XI_ProximityIn			8
   113  #define XI_ProximityOut			9
   114  #define XI_DeviceStateNotify		10
   115  #define XI_DeviceMappingNotify		11
   116  #define XI_ChangeDeviceNotify		12
   117  #define XI_DeviceKeystateNotify		13
   118  #define XI_DeviceButtonstateNotify	14
   119  #define XI_DevicePresenceNotify		15
   120  #define XI_DevicePropertyNotify         16
   121  
   122  /*********************************************************
   123   *
   124   * Protocol request constants
   125   *
   126   */
   127  
   128  #define X_GetExtensionVersion		1
   129  #define X_ListInputDevices		2
   130  #define X_OpenDevice			3
   131  #define X_CloseDevice			4
   132  #define X_SetDeviceMode			5
   133  #define X_SelectExtensionEvent		6
   134  #define X_GetSelectedExtensionEvents	7
   135  #define X_ChangeDeviceDontPropagateList 8
   136  #define X_GetDeviceDontPropagateList	9
   137  #define X_GetDeviceMotionEvents		10
   138  #define X_ChangeKeyboardDevice		11
   139  #define X_ChangePointerDevice		12
   140  #define X_GrabDevice			13
   141  #define X_UngrabDevice			14
   142  #define X_GrabDeviceKey			15
   143  #define X_UngrabDeviceKey		16
   144  #define X_GrabDeviceButton		17
   145  #define X_UngrabDeviceButton		18
   146  #define X_AllowDeviceEvents		19
   147  #define X_GetDeviceFocus		20
   148  #define X_SetDeviceFocus		21
   149  #define X_GetFeedbackControl		22
   150  #define X_ChangeFeedbackControl		23
   151  #define X_GetDeviceKeyMapping		24
   152  #define X_ChangeDeviceKeyMapping	25
   153  #define X_GetDeviceModifierMapping	26
   154  #define X_SetDeviceModifierMapping	27
   155  #define X_GetDeviceButtonMapping	28
   156  #define X_SetDeviceButtonMapping	29
   157  #define X_QueryDeviceState		30
   158  #define X_SendExtensionEvent		31
   159  #define X_DeviceBell			32
   160  #define X_SetDeviceValuators		33
   161  #define X_GetDeviceControl		34
   162  #define X_ChangeDeviceControl		35
   163  /* XI 1.5 */
   164  #define X_ListDeviceProperties          36
   165  #define X_ChangeDeviceProperty          37
   166  #define X_DeleteDeviceProperty          38
   167  #define X_GetDeviceProperty             39
   168  
   169  /*********************************************************
   170   *
   171   * Protocol request and reply structures.
   172   *
   173   * GetExtensionVersion.
   174   *
   175   */
   176  
   177  typedef struct {
   178      CARD8	reqType;       /* input extension major code   */
   179      CARD8	ReqType;       /* always X_GetExtensionVersion */
   180      CARD16	length;
   181      CARD16	nbytes;
   182      CARD8	pad1, pad2;
   183  } xGetExtensionVersionReq;
   184  
   185  typedef struct {
   186      CARD8	repType;	/* X_Reply			*/
   187      CARD8	RepType;	/* always X_GetExtensionVersion */
   188      CARD16	sequenceNumber;
   189      CARD32	length;
   190      CARD16	major_version;
   191      CARD16	minor_version;
   192      BOOL	present;
   193      CARD8	pad1, pad2, pad3;
   194      CARD32	pad01;
   195      CARD32	pad02;
   196      CARD32	pad03;
   197      CARD32	pad04;
   198  } xGetExtensionVersionReply;
   199  
   200  /*********************************************************
   201   *
   202   * ListInputDevices.
   203   *
   204   */
   205  
   206  typedef struct {
   207      CARD8	reqType;	/* input extension major code	*/
   208      CARD8	ReqType;	/* always X_ListInputDevices	*/
   209      CARD16	length;
   210  } xListInputDevicesReq;
   211  
   212  typedef struct {
   213      CARD8	repType;	/* X_Reply			*/
   214      CARD8	RepType;        /* always X_ListInputDevices	*/
   215      CARD16	sequenceNumber;
   216      CARD32	length;
   217      CARD8	ndevices;
   218      CARD8	pad1, pad2, pad3;
   219      CARD32	pad01;
   220      CARD32	pad02;
   221      CARD32	pad03;
   222      CARD32	pad04;
   223      CARD32	pad05;
   224  } xListInputDevicesReply;
   225  
   226  typedef struct _xDeviceInfo *xDeviceInfoPtr;
   227  
   228  typedef struct _xAnyClassinfo *xAnyClassPtr;
   229  
   230  typedef struct _xAnyClassinfo {
   231  #if defined(__cplusplus) || defined(c_plusplus)
   232      CARD8	c_class;
   233  #else
   234      CARD8	class;
   235  #endif
   236      CARD8	length;
   237      } xAnyClassInfo;
   238  
   239  typedef struct _xDeviceInfo {
   240      CARD32	type;
   241      CARD8	id;
   242      CARD8	num_classes;
   243      CARD8	use;      /* IsXPointer | IsXKeyboard | IsXExtension... */
   244      CARD8	attached; /* id of master dev (if IsXExtension..) */
   245      } xDeviceInfo;
   246  
   247  typedef struct _xKeyInfo *xKeyInfoPtr;
   248  
   249  typedef struct _xKeyInfo {
   250  #if defined(__cplusplus) || defined(c_plusplus)
   251      CARD8	c_class;
   252  #else
   253      CARD8	class;
   254  #endif
   255      CARD8	length;
   256      KeyCode	min_keycode;
   257      KeyCode	max_keycode;
   258      CARD16	num_keys;
   259      CARD8	pad1,pad2;
   260      } xKeyInfo;
   261  
   262  typedef struct _xButtonInfo *xButtonInfoPtr;
   263  
   264  typedef struct _xButtonInfo {
   265  #if defined(__cplusplus) || defined(c_plusplus)
   266      CARD8	c_class;
   267  #else
   268      CARD8	class;
   269  #endif
   270      CARD8	length;
   271      CARD16	num_buttons;
   272      } xButtonInfo;
   273  
   274  typedef struct _xValuatorInfo *xValuatorInfoPtr;
   275  
   276  typedef struct _xValuatorInfo {
   277  #if defined(__cplusplus) || defined(c_plusplus)
   278      CARD8	c_class;
   279  #else
   280      CARD8	class;
   281  #endif
   282      CARD8	length;
   283      CARD8	num_axes;
   284      CARD8	mode;
   285      CARD32	motion_buffer_size;
   286      } xValuatorInfo;
   287  
   288  typedef struct _xAxisInfo *xAxisInfoPtr;
   289  
   290  typedef struct _xAxisInfo {
   291      CARD32	resolution;
   292      CARD32	min_value;
   293      CARD32	max_value;
   294      } xAxisInfo;
   295  
   296  /*********************************************************
   297   *
   298   * OpenDevice.
   299   *
   300   */
   301  
   302  typedef struct {
   303      CARD8	reqType;	/* input extension major code	*/
   304      CARD8	ReqType;        /* always X_OpenDevice		*/
   305      CARD16	length;
   306      CARD8       deviceid;
   307      BYTE	pad1, pad2, pad3;
   308  } xOpenDeviceReq;
   309  
   310  typedef struct {
   311      CARD8	repType;	/* X_Reply			*/
   312      CARD8	RepType;	/* always X_OpenDevice		*/
   313      CARD16	sequenceNumber;
   314      CARD32	length;
   315      CARD8	num_classes;
   316      BYTE	pad1, pad2, pad3;
   317      CARD32	pad00;
   318      CARD32	pad01;
   319      CARD32	pad02;
   320      CARD32	pad03;
   321      CARD32	pad04;
   322      } xOpenDeviceReply;
   323  
   324  typedef struct {
   325  #if defined(__cplusplus) || defined(c_plusplus)
   326      CARD8	c_class;
   327  #else
   328      CARD8	class;
   329  #endif
   330      CARD8	event_type_base;
   331      } xInputClassInfo;
   332  
   333  /*********************************************************
   334   *
   335   * CloseDevice.
   336   *
   337   */
   338  
   339  typedef struct {
   340      CARD8	reqType;	/* input extension major code	*/
   341      CARD8	ReqType;        /* always X_CloseDevice	*/
   342      CARD16	length;
   343      CARD8       deviceid;
   344      BYTE	pad1, pad2, pad3;
   345  } xCloseDeviceReq;
   346  
   347  /*********************************************************
   348   *
   349   * SetDeviceMode.
   350   *
   351   */
   352  
   353  typedef struct {
   354      CARD8	reqType;	/* input extension major code	*/
   355      CARD8	ReqType;	/* always X_SetDeviceMode	*/
   356      CARD16	length;
   357      CARD8       deviceid;
   358      CARD8       mode;
   359      BYTE	pad1, pad2;
   360  } xSetDeviceModeReq;
   361  
   362  typedef struct {
   363      CARD8	repType;	/* X_Reply			*/
   364      CARD8	RepType;	/* always X_SetDeviceMode	*/
   365      CARD16	sequenceNumber;
   366      CARD32	length;
   367      CARD8	status;
   368      BYTE	pad1, pad2, pad3;
   369      CARD32	pad01;
   370      CARD32	pad02;
   371      CARD32	pad03;
   372      CARD32	pad04;
   373      CARD32	pad05;
   374  } xSetDeviceModeReply;
   375  
   376  /*********************************************************
   377   *
   378   * SelectExtensionEvent.
   379   *
   380   */
   381  
   382  typedef struct {
   383      CARD8	reqType;	/* input extension major code	*/
   384      CARD8	ReqType;        /* always X_SelectExtensionEvent */
   385      CARD16	length;
   386      Window	window;
   387      CARD16	count;
   388      CARD16	pad00;
   389  } xSelectExtensionEventReq;
   390  
   391  /*********************************************************
   392   *
   393   * GetSelectedExtensionEvent.
   394   *
   395   */
   396  
   397  typedef struct {
   398      CARD8	reqType;	/* input extension major code	*/
   399      CARD8	ReqType;        /* X_GetSelectedExtensionEvents */
   400      CARD16	length;
   401      Window	window;
   402  } xGetSelectedExtensionEventsReq;
   403  
   404  typedef struct {
   405      CARD8	repType;	/* X_Reply			*/
   406      CARD8	RepType;	/* GetSelectedExtensionEvents	*/
   407      CARD16	sequenceNumber;
   408      CARD32	length;
   409      CARD16	this_client_count;
   410      CARD16	all_clients_count;
   411      CARD32	pad01;
   412      CARD32	pad02;
   413      CARD32	pad03;
   414      CARD32	pad04;
   415      CARD32	pad05;
   416  } xGetSelectedExtensionEventsReply;
   417  
   418  /*********************************************************
   419   *
   420   * ChangeDeviceDontPropagateList.
   421   *
   422   */
   423  
   424  typedef struct {
   425      CARD8	reqType;	/* input extension major code	*/
   426      CARD8	ReqType;        /* X_ChangeDeviceDontPropagateList */
   427      CARD16	length;
   428      Window	window;
   429      CARD16	count;
   430      CARD8	mode;
   431      BYTE	pad;
   432  } xChangeDeviceDontPropagateListReq;
   433  
   434  /*********************************************************
   435   *
   436   * GetDeviceDontPropagateList.
   437   *
   438   */
   439  
   440  typedef struct {
   441      CARD8	reqType;	/* input extension major code	*/
   442      CARD8	ReqType;        /* X_GetDeviceDontPropagateList */
   443      CARD16	length;
   444      Window	window;
   445  } xGetDeviceDontPropagateListReq;
   446  
   447  typedef struct {
   448      CARD8	repType;	/* X_Reply			*/
   449      CARD8	RepType;        /* GetDeviceDontPropagateList   */
   450      CARD16	sequenceNumber;
   451      CARD32	length;
   452      CARD16	count;
   453      CARD16	pad00;
   454      CARD32	pad01;
   455      CARD32	pad02;
   456      CARD32	pad03;
   457      CARD32	pad04;
   458      CARD32	pad05;
   459      } xGetDeviceDontPropagateListReply;
   460  
   461  /*********************************************************
   462   *
   463   * GetDeviceMotionEvents.
   464   *
   465   */
   466  
   467  typedef struct {
   468      CARD8	reqType;	/* input extension major code	*/
   469      CARD8	ReqType;        /* always X_GetDeviceMotionEvents*/
   470      CARD16	length;
   471      Time	start;
   472      Time	stop;
   473      CARD8	deviceid;
   474      BYTE	pad1, pad2, pad3;
   475  } xGetDeviceMotionEventsReq;
   476  
   477  typedef struct {
   478      CARD8	repType;	/* X_Reply */
   479      CARD8	RepType;        /* always X_GetDeviceMotionEvents  */
   480      CARD16	sequenceNumber;
   481      CARD32	length;
   482      CARD32	nEvents;
   483      CARD8	axes;
   484      CARD8	mode;
   485      BYTE	pad1, pad2;
   486      CARD32	pad01;
   487      CARD32	pad02;
   488      CARD32	pad03;
   489      CARD32	pad04;
   490  } xGetDeviceMotionEventsReply;
   491  
   492  /*********************************************************
   493   *
   494   * ChangeKeyboardDevice.
   495   *
   496   */
   497  
   498  typedef struct {
   499      CARD8	reqType;	/* input extension major code	*/
   500      CARD8	ReqType;        /* X_ChangeKeyboardDevice	*/
   501      CARD16	length;
   502      CARD8	deviceid;
   503      BYTE	pad1, pad2, pad3;
   504  } xChangeKeyboardDeviceReq;
   505  
   506  typedef struct {
   507      CARD8	repType;	/* X_Reply			*/
   508      CARD8	RepType;        /* always X_ChangeKeyboardDevice*/
   509      CARD16	sequenceNumber;
   510      CARD32	length;		/* 0 */
   511      CARD8	status;
   512      BYTE	pad1, pad2, pad3;
   513      CARD32	pad01;
   514      CARD32	pad02;
   515      CARD32	pad03;
   516      CARD32	pad04;
   517      CARD32	pad05;
   518      } xChangeKeyboardDeviceReply;
   519  
   520  /*********************************************************
   521   *
   522   * ChangePointerDevice.
   523   *
   524   */
   525  
   526  typedef struct {
   527      CARD8	reqType;	/* input extension major code	*/
   528      CARD8	ReqType;        /* X_ChangePointerDevice	*/
   529      CARD16	length;
   530      CARD8	xaxis;
   531      CARD8	yaxis;
   532      CARD8	deviceid;
   533      BYTE	pad1;
   534  } xChangePointerDeviceReq;
   535  
   536  typedef struct {
   537      CARD8	repType;	/* X_Reply			*/
   538      CARD8	RepType;        /* always X_ChangePointerDevice */
   539      CARD16	sequenceNumber;
   540      CARD32	length;		/* 0 */
   541      CARD8	status;
   542      BYTE	pad1, pad2, pad3;
   543      CARD32	pad01;
   544      CARD32	pad02;
   545      CARD32	pad03;
   546      CARD32	pad04;
   547      CARD32	pad05;
   548      } xChangePointerDeviceReply;
   549  
   550  /*********************************************************
   551   *
   552   * GrabDevice.
   553   *
   554   */
   555  
   556  typedef struct {
   557      CARD8	reqType;	/* input extension major code	*/
   558      CARD8	ReqType;        /* always X_GrabDevice */
   559      CARD16	length;
   560      Window	grabWindow;
   561      Time	time;
   562      CARD16	event_count;
   563      CARD8	this_device_mode;
   564      CARD8	other_devices_mode;
   565      BOOL	ownerEvents;
   566      CARD8	deviceid;
   567      CARD16	pad01;
   568  } xGrabDeviceReq;
   569  
   570  typedef struct {
   571      CARD8	repType;	/* X_Reply			*/
   572      CARD8	RepType;        /* always X_GrabDevice	*/
   573      CARD16	sequenceNumber;
   574      CARD32	length;		/* 0 */
   575      CARD8	status;
   576      BYTE	pad1, pad2, pad3;
   577      CARD32	pad01;
   578      CARD32	pad02;
   579      CARD32	pad03;
   580      CARD32	pad04;
   581      CARD32	pad05;
   582      } xGrabDeviceReply;
   583  
   584  /*********************************************************
   585   *
   586   * UngrabDevice.
   587   *
   588   */
   589  
   590  typedef struct {
   591      CARD8	reqType;	/* input extension major code	*/
   592      CARD8	ReqType;        /* always X_UnGrabDevice	*/
   593      CARD16	length;
   594      Time	time;
   595      CARD8	deviceid;
   596      BYTE	pad1, pad2, pad3;
   597  } xUngrabDeviceReq;
   598  
   599  /*********************************************************
   600   *
   601   * GrabDeviceKey.
   602   *
   603   */
   604  
   605  typedef struct {
   606      CARD8	reqType;	/* input extension major code	*/
   607      CARD8	ReqType;        /* always X_GrabDeviceKey	*/
   608      CARD16	length;
   609      Window	grabWindow;
   610      CARD16	event_count;
   611      CARD16	modifiers;
   612      CARD8	modifier_device;
   613      CARD8	grabbed_device;
   614      CARD8	key;
   615      BYTE	this_device_mode;
   616      BYTE	other_devices_mode;
   617      BOOL	ownerEvents;
   618      BYTE	pad1, pad2;
   619  } xGrabDeviceKeyReq;
   620  
   621  /*********************************************************
   622   *
   623   * UngrabDeviceKey.
   624   *
   625   */
   626  
   627  typedef struct {
   628      CARD8	reqType;	/* input extension major code	*/
   629      CARD8	ReqType;        /* always X_UngrabDeviceKey	*/
   630      CARD16	length;
   631      Window	grabWindow;
   632      CARD16	modifiers;
   633      CARD8	modifier_device;
   634      CARD8	key;
   635      CARD8	grabbed_device;
   636      BYTE	pad1, pad2, pad3;
   637  } xUngrabDeviceKeyReq;
   638  
   639  /*********************************************************
   640   *
   641   * GrabDeviceButton.
   642   *
   643   */
   644  
   645  typedef struct {
   646      CARD8	reqType;	/* input extension major code	*/
   647      CARD8	ReqType;        /* always X_GrabDeviceButton	*/
   648      CARD16	length;
   649      Window	grabWindow;
   650      CARD8	grabbed_device;
   651      CARD8	modifier_device;
   652      CARD16	event_count;
   653      CARD16	modifiers;
   654      BYTE	this_device_mode;
   655      BYTE	other_devices_mode;
   656      CARD8	button;
   657      BOOL	ownerEvents;
   658      BYTE	pad1, pad2;
   659  } xGrabDeviceButtonReq;
   660  
   661  /*********************************************************
   662   *
   663   * UngrabDeviceButton.
   664   *
   665   */
   666  
   667  typedef struct {
   668      CARD8	reqType;	/* input extension major code	*/
   669      CARD8	ReqType;        /* always X_UngrabDeviceButton	*/
   670      CARD16	length;
   671      Window	grabWindow;
   672      CARD16	modifiers;
   673      CARD8	modifier_device;
   674      CARD8	button;
   675      CARD8	grabbed_device;
   676      BYTE	pad1, pad2, pad3;
   677  } xUngrabDeviceButtonReq;
   678  
   679  /*********************************************************
   680   *
   681   * AllowDeviceEvents.
   682   *
   683   */
   684  
   685  typedef struct {
   686      CARD8	reqType;	/* input extension major code	*/
   687      CARD8	ReqType;        /* always X_AllowDeviceEvents	*/
   688      CARD16	length;
   689      Time	time;
   690      CARD8	mode;
   691      CARD8	deviceid;
   692      BYTE	pad1, pad2;
   693  } xAllowDeviceEventsReq;
   694  
   695  /*********************************************************
   696   *
   697   * GetDeviceFocus.
   698   *
   699   */
   700  
   701  typedef struct {
   702      CARD8	reqType;        /* input extension major code   */
   703      CARD8	ReqType;        /* always X_GetDeviceFocus	*/
   704      CARD16	length;
   705      CARD8	deviceid;
   706      BYTE	pad1, pad2, pad3;
   707  } xGetDeviceFocusReq;
   708  
   709  typedef struct {
   710      CARD8	repType;	/* X_Reply			*/
   711      CARD8	RepType;        /* always X_GetDeviceFocus	*/
   712      CARD16	sequenceNumber;
   713      CARD32	length;
   714      CARD32	focus;
   715      Time	time;
   716      CARD8	revertTo;
   717      BYTE	pad1, pad2, pad3;
   718      CARD32	pad01;
   719      CARD32	pad02;
   720      CARD32	pad03;
   721      } xGetDeviceFocusReply;
   722  
   723  /*********************************************************
   724   *
   725   * SetDeviceFocus.
   726   *
   727   */
   728  
   729  typedef struct {
   730      CARD8	reqType;        /* input extension major code   */
   731      CARD8	ReqType;        /* always X_SetDeviceFocus	*/
   732      CARD16	length;
   733      Window	focus;
   734      Time	time;
   735      CARD8	revertTo;
   736      CARD8	device;
   737      CARD16	pad01;
   738  } xSetDeviceFocusReq;
   739  
   740  /*********************************************************
   741   *
   742   * GetFeedbackControl.
   743   *
   744   */
   745  
   746  typedef struct {
   747      CARD8	reqType;	/* input extension major code	*/
   748      CARD8	ReqType;        /* X_GetFeedbackControl	*/
   749      CARD16	length;
   750      CARD8	deviceid;
   751      BYTE	pad1, pad2, pad3;
   752  } xGetFeedbackControlReq;
   753  
   754  typedef struct {
   755      CARD8	repType;	/* X_Reply			*/
   756      CARD8	RepType;        /* always X_GetFeedbackControl	*/
   757      CARD16	sequenceNumber;
   758      CARD32	length;
   759      CARD16	num_feedbacks;
   760      CARD16	pad01;
   761      CARD32	pad02;
   762      CARD32	pad03;
   763      CARD32	pad04;
   764      CARD32	pad05;
   765      CARD32	pad06;
   766  } xGetFeedbackControlReply;
   767  
   768  typedef struct {
   769  #if defined(__cplusplus) || defined(c_plusplus)
   770      CARD8	c_class;	/* feedback class		*/
   771  #else
   772      CARD8	class;		/* feedback class		*/
   773  #endif
   774      CARD8	id;		/* feedback id		*/
   775      CARD16	length;		/* feedback length		*/
   776  } xFeedbackState;
   777  
   778  typedef struct {
   779  #if defined(__cplusplus) || defined(c_plusplus)
   780      CARD8   c_class;
   781  #else
   782      CARD8   class;
   783  #endif
   784      CARD8   id;
   785      CARD16  length;
   786      CARD16  pitch;
   787      CARD16  duration;
   788      CARD32  led_mask;
   789      CARD32  led_values;
   790      BOOL    global_auto_repeat;
   791      CARD8   click;
   792      CARD8   percent;
   793      BYTE    pad;
   794      BYTE    auto_repeats[32];
   795  } xKbdFeedbackState;
   796  
   797  typedef struct {
   798  #if defined(__cplusplus) || defined(c_plusplus)
   799      CARD8   c_class;
   800  #else
   801      CARD8   class;
   802  #endif
   803      CARD8   id;
   804      CARD16  length;
   805      CARD8   pad1,pad2;
   806      CARD16  accelNum;
   807      CARD16  accelDenom;
   808      CARD16  threshold;
   809  } xPtrFeedbackState;
   810  
   811  typedef struct {
   812  #if defined(__cplusplus) || defined(c_plusplus)
   813      CARD8	c_class;	/* feedback class id		*/
   814  #else
   815      CARD8	class;		/* feedback class id		*/
   816  #endif
   817      CARD8	id;
   818      CARD16	length;		/* feedback length		*/
   819      CARD32	resolution;
   820      INT32	min_value;
   821      INT32	max_value;
   822  } xIntegerFeedbackState;
   823  
   824  typedef struct {
   825  #if defined(__cplusplus) || defined(c_plusplus)
   826      CARD8	c_class;	/* feedback class id		*/
   827  #else
   828      CARD8	class;		/* feedback class id		*/
   829  #endif
   830      CARD8	id;
   831      CARD16	length;		/* feedback length		*/
   832      CARD16	max_symbols;
   833      CARD16	num_syms_supported;
   834  } xStringFeedbackState;
   835  
   836  typedef struct {
   837  #if defined(__cplusplus) || defined(c_plusplus)
   838      CARD8	c_class;	/* feedback class id		*/
   839  #else
   840      CARD8	class;		/* feedback class id		*/
   841  #endif
   842      CARD8	id;
   843      CARD16	length;		/* feedback length		*/
   844      CARD8	percent;
   845      BYTE	pad1, pad2, pad3;
   846      CARD16	pitch;
   847      CARD16	duration;
   848  } xBellFeedbackState;
   849  
   850  typedef struct {
   851  #if defined(__cplusplus) || defined(c_plusplus)
   852      CARD8	c_class;	/* feedback class id		*/
   853  #else
   854      CARD8	class;		/* feedback class id		*/
   855  #endif
   856      CARD8	id;
   857      CARD16	length;		/* feedback length		*/
   858      CARD32	led_mask;
   859      CARD32	led_values;
   860  } xLedFeedbackState;
   861  
   862  /*********************************************************
   863   *
   864   * ChangeFeedbackControl.
   865   *
   866   */
   867  
   868  typedef struct {
   869      CARD8	reqType;	/* input extension major code	*/
   870      CARD8	ReqType;        /* X_ChangeFeedbackControl	*/
   871      CARD16	length;
   872      CARD32	mask;
   873      CARD8	deviceid;
   874      CARD8	feedbackid;
   875      BYTE	pad1, pad2;
   876  } xChangeFeedbackControlReq;
   877  
   878  typedef struct {
   879  #if defined(__cplusplus) || defined(c_plusplus)
   880      CARD8	c_class;	/* feedback class id		*/
   881  #else
   882      CARD8	class;		/* feedback class id		*/
   883  #endif
   884      CARD8	id;		/* feedback id		*/
   885      CARD16	length;		/* feedback length		*/
   886  } xFeedbackCtl;
   887  
   888  typedef struct {
   889  #if defined(__cplusplus) || defined(c_plusplus)
   890      CARD8	c_class;	/* feedback class id		*/
   891  #else
   892      CARD8	class;		/* feedback class id		*/
   893  #endif
   894      CARD8	id;		/* feedback length		*/
   895      CARD16	length;		/* feedback length		*/
   896      KeyCode	key;
   897      CARD8	auto_repeat_mode;
   898      INT8	click;
   899      INT8	percent;
   900      INT16	pitch;
   901      INT16	duration;
   902      CARD32	led_mask;
   903      CARD32	led_values;
   904  } xKbdFeedbackCtl;
   905  
   906  typedef struct {
   907  #if defined(__cplusplus) || defined(c_plusplus)
   908      CARD8	c_class;	/* feedback class id		*/
   909  #else
   910      CARD8	class;		/* feedback class id		*/
   911  #endif
   912      CARD8	id;		/* feedback id		*/
   913      CARD16	length;		/* feedback length		*/
   914      CARD8	pad1,pad2;
   915      INT16	num;
   916      INT16	denom;
   917      INT16	thresh;
   918  } xPtrFeedbackCtl;
   919  
   920  typedef struct {
   921  #if defined(__cplusplus) || defined(c_plusplus)
   922      CARD8	c_class;	/* feedback class id		*/
   923  #else
   924      CARD8	class;		/* feedback class id		*/
   925  #endif
   926      CARD8	id;		/* feedback id		*/
   927      CARD16	length;		/* feedback length		*/
   928      INT32	int_to_display;
   929  } xIntegerFeedbackCtl;
   930  
   931  typedef struct {
   932  #if defined(__cplusplus) || defined(c_plusplus)
   933      CARD8	c_class;	/* feedback class id		*/
   934  #else
   935      CARD8	class;		/* feedback class id		*/
   936  #endif
   937      CARD8	id;		/* feedback id		*/
   938      CARD16	length;		/* feedback length		*/
   939      CARD8	pad1,pad2;
   940      CARD16	num_keysyms;
   941  } xStringFeedbackCtl;
   942  
   943  typedef struct {
   944  #if defined(__cplusplus) || defined(c_plusplus)
   945      CARD8	c_class;	/* feedback class id		*/
   946  #else
   947      CARD8	class;		/* feedback class id		*/
   948  #endif
   949      CARD8	id;		/* feedback id		*/
   950      CARD16	length;		/* feedback length		*/
   951      INT8	percent;
   952      BYTE	pad1, pad2, pad3;
   953      INT16	pitch;
   954      INT16	duration;
   955  } xBellFeedbackCtl;
   956  
   957  typedef struct {
   958  #if defined(__cplusplus) || defined(c_plusplus)
   959      CARD8	c_class;	/* feedback class id		*/
   960  #else
   961      CARD8	class;		/* feedback class id		*/
   962  #endif
   963      CARD8	id;		/* feedback id		*/
   964      CARD16	length;		/* feedback length		*/
   965      CARD32	led_mask;
   966      CARD32	led_values;
   967  } xLedFeedbackCtl;
   968  
   969  /*********************************************************
   970   *
   971   * GetDeviceKeyMapping.
   972   *
   973   */
   974  
   975  typedef struct {
   976      CARD8	reqType;        /* input extension major code   */
   977      CARD8	ReqType;	/* always X_GetDeviceKeyMapping */
   978      CARD16	length;
   979      CARD8	deviceid;
   980      KeyCode	firstKeyCode;
   981      CARD8	count;
   982      BYTE	pad1;
   983  } xGetDeviceKeyMappingReq;
   984  
   985  typedef struct {
   986      CARD8	repType;	/* X_Reply			*/
   987      CARD8	RepType;	/* always X_GetDeviceKeyMapping */
   988      CARD16	sequenceNumber;
   989      CARD32	length;
   990      CARD8	keySymsPerKeyCode;
   991      CARD8	pad0;
   992      CARD16	pad1;
   993      CARD32	pad2;
   994      CARD32	pad3;
   995      CARD32	pad4;
   996      CARD32	pad5;
   997      CARD32	pad6;
   998  } xGetDeviceKeyMappingReply;
   999  
  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;
  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;
  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;
  1034      CARD32	length;
  1035      CARD8	numKeyPerModifier;
  1036      CARD8	pad0;
  1037      CARD16	pad1;
  1038      CARD32	pad2;
  1039      CARD32	pad3;
  1040      CARD32	pad4;
  1041      CARD32	pad5;
  1042      CARD32	pad6;
  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;
  1055      CARD8	deviceid;
  1056      CARD8	numKeyPerModifier;
  1057      CARD16	pad1;
  1058  } xSetDeviceModifierMappingReq;
  1059  
  1060  typedef struct {
  1061      CARD8	repType;	/* X_Reply */
  1062      CARD8	RepType;        /* always X_SetDeviceModifierMapping */
  1063      CARD16	sequenceNumber;
  1064      CARD32	length;
  1065      CARD8	success;
  1066      CARD8	pad0;
  1067      CARD16	pad1;
  1068      CARD32	pad2;
  1069      CARD32	pad3;
  1070      CARD32	pad4;
  1071      CARD32	pad5;
  1072      CARD32	pad6;
  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;
  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;
  1093      CARD32	length;
  1094      CARD8	nElts;
  1095      BYTE	pad1, pad2, pad3;
  1096      CARD32	pad01;
  1097      CARD32	pad02;
  1098      CARD32	pad03;
  1099      CARD32	pad04;
  1100      CARD32	pad05;
  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;
  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;
  1122      CARD32	length;
  1123      CARD8	status;
  1124      BYTE	pad0;
  1125      CARD16	pad1;
  1126      CARD32	pad2;
  1127      CARD32	pad3;
  1128      CARD32	pad4;
  1129      CARD32	pad5;
  1130      CARD32	pad6;
  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;
  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;
  1151      CARD32	length;
  1152      CARD8	num_classes;
  1153      BYTE	pad0;
  1154      CARD16	pad1;
  1155      CARD32	pad2;
  1156      CARD32	pad3;
  1157      CARD32	pad4;
  1158      CARD32	pad5;
  1159      CARD32	pad6;
  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;
  1209      Window	destination;
  1210      CARD8	deviceid;
  1211      BOOL	propagate;
  1212      CARD16	count;
  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;
  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;
  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;
  1253      CARD32	length;
  1254      CARD8	status;
  1255      BYTE	pad1, pad2, pad3;
  1256      CARD32	pad01;
  1257      CARD32	pad02;
  1258      CARD32	pad03;
  1259      CARD32	pad04;
  1260      CARD32	pad05;
  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;
  1273      CARD16	control;
  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;
  1282      CARD32	length;
  1283      CARD8	status;
  1284      BYTE	pad1, pad2, pad3;
  1285      CARD32	pad01;
  1286      CARD32	pad02;
  1287      CARD32	pad03;
  1288      CARD32	pad04;
  1289      CARD32	pad05;
  1290  } xGetDeviceControlReply;
  1291  
  1292  typedef struct {
  1293      CARD16	control;	/* control type			*/
  1294      CARD16	length;		/* control length		*/
  1295  } xDeviceState;
  1296  
  1297  typedef struct {
  1298      CARD16	control;	/* control type			*/
  1299      CARD16	length;		/* control length		*/
  1300      CARD32	num_valuators;	/* number of valuators		*/
  1301  } xDeviceResolutionState;
  1302  
  1303  typedef struct {
  1304       CARD16         control;
  1305       CARD16         length;
  1306       INT32          min_x;
  1307       INT32          max_x;
  1308       INT32          min_y;
  1309       INT32          max_y;
  1310       CARD32         flip_x;
  1311       CARD32         flip_y;
  1312       CARD32         rotation;
  1313       CARD32         button_threshold;
  1314  } xDeviceAbsCalibState;
  1315  
  1316  typedef struct {
  1317       CARD16         control;
  1318       CARD16         length;
  1319       CARD32         offset_x;
  1320       CARD32         offset_y;
  1321       CARD32         width;
  1322       CARD32         height;
  1323       CARD32         screen;
  1324       CARD32         following;
  1325  } xDeviceAbsAreaState;
  1326  
  1327  typedef struct {
  1328      CARD16      control;	/* control type                 */
  1329      CARD16      length; 	/* control length               */
  1330      CARD8       status;
  1331      CARD8       iscore;
  1332      CARD16      pad1;
  1333  } xDeviceCoreState;
  1334  
  1335  typedef struct {
  1336      CARD16      control;	/* control type                 */
  1337      CARD16      length; 	/* control length               */
  1338      CARD8       enable;
  1339      CARD8       pad0;
  1340      CARD16      pad1;
  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;
  1353      CARD16      control;
  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;
  1362      CARD32	length;
  1363      CARD8	status;
  1364      BYTE	pad1, pad2, pad3;
  1365      CARD32	pad01;
  1366      CARD32	pad02;
  1367      CARD32	pad03;
  1368      CARD32	pad04;
  1369      CARD32	pad05;
  1370  } xChangeDeviceControlReply;
  1371  
  1372  typedef struct {
  1373      CARD16	control;		/* control type			*/
  1374      CARD16	length;			/* control length		*/
  1375  } xDeviceCtl;
  1376  
  1377  typedef struct {
  1378      CARD16	control;		/* control type			*/
  1379      CARD16	length;			/* 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;
  1387       CARD16         length;
  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;
  1400       CARD16         length;
  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;
  1411      CARD16          length;
  1412      CARD8           status;
  1413      CARD8           pad0;
  1414      CARD16          pad1;
  1415  } xDeviceCoreCtl;
  1416  
  1417  typedef struct {
  1418      CARD16          control;
  1419      CARD16          length;
  1420      CARD8           enable;
  1421      CARD8           pad0;
  1422      CARD16          pad1;
  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;
  1437      CARD8       deviceid;
  1438      CARD8       pad0;
  1439      CARD16      pad1;
  1440  } xListDevicePropertiesReq;
  1441  
  1442  typedef struct {
  1443      CARD8       repType;        /* X_Reply                       */
  1444      CARD8       RepType;        /* always X_ListDeviceProperties */
  1445      CARD16      sequenceNumber;
  1446      CARD32      length;
  1447      CARD16      nAtoms;
  1448      CARD16      pad1;
  1449      CARD32      pad2;
  1450      CARD32      pad3;
  1451      CARD32      pad4;
  1452      CARD32      pad5;
  1453      CARD32      pad6;
  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;
  1466      Atom        property;
  1467      Atom        type;
  1468      CARD8       deviceid;
  1469      CARD8       format;
  1470      CARD8       mode;
  1471      CARD8       pad;
  1472      CARD32      nUnits;
  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;
  1485      Atom        property;
  1486      CARD8       deviceid;
  1487      CARD8       pad0;
  1488      CARD16      pad1;
  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;
  1501      Atom        property;
  1502      Atom        type;
  1503      CARD32      longOffset;
  1504      CARD32      longLength;
  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;
  1518      CARD32      length;
  1519      Atom        propertyType;
  1520      CARD32      bytesAfter;
  1521      CARD32      nItems;
  1522      CARD8       format;
  1523      CARD8       deviceid;
  1524      CARD16      pad1;
  1525      CARD32      pad2;
  1526      CARD32      pad3;
  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;
  1543      KeyButMask	device_state;
  1544      CARD8	num_valuators;
  1545      CARD8       first_valuator;
  1546      INT32	valuator0;
  1547      INT32	valuator1;
  1548      INT32	valuator2;
  1549      INT32	valuator3;
  1550      INT32	valuator4;
  1551      INT32	valuator5;
  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;
  1570      Time        time;
  1571      Window      root;
  1572      Window      event;
  1573      Window      child;
  1574      INT16       root_x;
  1575      INT16       root_y;
  1576      INT16       event_x;
  1577      INT16       event_y;
  1578      KeyButMask  state;
  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;
  1594      Time	time;
  1595      Window	window;
  1596      BYTE	mode;
  1597      CARD8       deviceid;
  1598      BYTE	pad1, pad2;
  1599      CARD32	pad00;
  1600      CARD32	pad01;
  1601      CARD32	pad02;
  1602      CARD32	pad03;
  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;
  1620      Time	time;
  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;
  1628      INT32	valuator1;
  1629      INT32	valuator2;
  1630      }  deviceStateNotify;
  1631  
  1632  /**********************************************************
  1633   *
  1634   * DeviceKeyStateNotify.
  1635   *
  1636   */
  1637  
  1638  typedef struct
  1639      {
  1640      BYTE	type;
  1641      BYTE        deviceid;
  1642      CARD16	sequenceNumber;
  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;
  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;
  1672      CARD8       request;
  1673      KeyCode     firstKeyCode;
  1674      CARD8       count;
  1675      BYTE        pad1;
  1676      Time        time;
  1677      CARD32      pad00;
  1678      CARD32      pad01;
  1679      CARD32      pad02;
  1680      CARD32      pad03;
  1681      CARD32      pad04;
  1682      }  deviceMappingNotify;
  1683  
  1684  /**********************************************************
  1685   *
  1686   * ChangeDeviceNotify.
  1687   *
  1688   */
  1689  
  1690  typedef struct
  1691      {
  1692      BYTE	type;
  1693      BYTE        deviceid;
  1694      CARD16      sequenceNumber;
  1695      Time        time;
  1696      CARD8       request;
  1697      BYTE        pad1, pad2, pad3;
  1698      CARD32      pad00;
  1699      CARD32      pad01;
  1700      CARD32      pad02;
  1701      CARD32      pad03;
  1702      CARD32      pad04;
  1703      }  changeDeviceNotify;
  1704  
  1705  /**********************************************************
  1706   *
  1707   * devicePresenceNotify.
  1708   *
  1709   */
  1710  
  1711  typedef struct
  1712      {
  1713      BYTE	type;
  1714      BYTE        pad00;
  1715      CARD16      sequenceNumber;
  1716      Time        time;
  1717      BYTE        devchange; /* Device{Added|Removed|Enabled|Disabled|ControlChanged} */
  1718      BYTE        deviceid;
  1719      CARD16      control;
  1720      CARD32      pad02;
  1721      CARD32      pad03;
  1722      CARD32      pad04;
  1723      CARD32      pad05;
  1724      CARD32      pad06;
  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;
  1740      CARD32      time;
  1741      Atom        atom;                /* affected property */
  1742      CARD32      pad0;
  1743      CARD32      pad1;
  1744      CARD32      pad2;
  1745      CARD32      pad3;
  1746      CARD16      pad5;
  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