home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-bin / x11r6.1 / include / x11 / extensions / xiproto.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-17  |  34.4 KB  |  1,433 lines

  1. /* $XConsortium: XIproto.h /main/25 1995/12/05 11:19:05 dpw $ */
  2.  
  3. /************************************************************
  4.  
  5. Copyright (c) 1989  X Consortium
  6.  
  7. Permission is hereby granted, free of charge, to any person obtaining a copy
  8. of this software and associated documentation files (the "Software"), to deal
  9. in the Software without restriction, including without limitation the rights
  10. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. copies of the Software, and to permit persons to whom the Software is
  12. furnished to do so, subject to the following conditions:
  13.  
  14. The above copyright notice and this permission notice shall be included in
  15. all copies or substantial portions of the Software.
  16.  
  17. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  20. X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  21. AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  22. CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23.  
  24. Except as contained in this notice, the name of the X Consortium shall not be
  25. used in advertising or otherwise to promote the sale, use or other dealings
  26. in this Software without prior written authorization from the X Consortium.
  27.  
  28. Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California.
  29.  
  30.             All Rights Reserved
  31.  
  32. Permission to use, copy, modify, and distribute this software and its
  33. documentation for any purpose and without fee is hereby granted,
  34. provided that the above copyright notice appear in all copies and that
  35. both that copyright notice and this permission notice appear in
  36. supporting documentation, and that the name of Hewlett-Packard not be
  37. used in advertising or publicity pertaining to distribution of the
  38. software without specific, written prior permission.
  39.  
  40. HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  41. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  42. HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  43. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  44. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  45. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  46. SOFTWARE.
  47.  
  48. ********************************************************/
  49.  
  50. #ifndef _XIPROTO_H
  51. #define _XIPROTO_H
  52.  
  53. #ifndef NEED_EVENTS
  54. #define  NEED_EVENTS
  55. #endif
  56. #ifndef NEED_REPLIES
  57. #define  NEED_REPLIES
  58. #endif
  59. #include <X11/Xproto.h>
  60. #include <X11/X.h>
  61.  
  62. /* make sure types have right sizes for protocol structures. */
  63. #define Window CARD32
  64. #define Time CARD32
  65. #define KeyCode CARD8
  66.  
  67. /*********************************************************
  68.  *
  69.  * number of events, errors, and extension name.
  70.  *
  71.  */
  72.  
  73. #define MORE_EVENTS    0x80
  74. #define DEVICE_BITS    0x7F
  75.  
  76. #define InputClassBits    0x3F    /* bits in mode field for input classes */
  77. #define ModeBitsShift    6    /* amount to shift the remaining bits   */
  78.  
  79. #define numInputClasses 7
  80.  
  81. #define IEVENTS        15
  82. #define IERRORS        5
  83.  
  84. #define CLIENT_REQ        1
  85.  
  86. typedef struct  _XExtEventInfo
  87.     {
  88.     Mask    mask;
  89.     BYTE     type;
  90.     BYTE    word;
  91.     } XExtEventInfo;
  92.  
  93. typedef unsigned char *Pointer;
  94.  
  95. struct tmask
  96.     {
  97.     Mask    mask;
  98.     Pointer     dev;
  99.     };
  100.  
  101. /*********************************************************
  102.  *
  103.  * Event constants used by library.
  104.  *
  105.  */
  106.  
  107. #define XI_DeviceValuator        0
  108. #define XI_DeviceKeyPress        1
  109. #define XI_DeviceKeyRelease        2
  110. #define XI_DeviceButtonPress        3
  111. #define XI_DeviceButtonRelease        4
  112. #define XI_DeviceMotionNotify        5
  113. #define XI_DeviceFocusIn        6
  114. #define XI_DeviceFocusOut        7
  115. #define XI_ProximityIn            8
  116. #define XI_ProximityOut            9
  117. #define XI_DeviceStateNotify        10
  118. #define XI_DeviceMappingNotify        11
  119. #define XI_ChangeDeviceNotify        12
  120. #define XI_DeviceKeystateNotify        13
  121. #define XI_DeviceButtonstateNotify    14
  122.  
  123. /*********************************************************
  124.  *
  125.  * Protocol request constants
  126.  *
  127.  */
  128.  
  129. #define X_GetExtensionVersion        1
  130. #define X_ListInputDevices        2
  131. #define X_OpenDevice            3
  132. #define X_CloseDevice            4
  133. #define X_SetDeviceMode            5
  134. #define X_SelectExtensionEvent      6
  135. #define X_GetSelectedExtensionEvents    7
  136. #define X_ChangeDeviceDontPropagateList 8
  137. #define X_GetDeviceDontPropagateList     9
  138. #define X_GetDeviceMotionEvents     10
  139. #define X_ChangeKeyboardDevice        11
  140. #define X_ChangePointerDevice        12
  141. #define X_GrabDevice             13
  142. #define X_UngrabDevice          14
  143. #define X_GrabDeviceKey            15
  144. #define X_UngrabDeviceKey        16
  145. #define X_GrabDeviceButton        17
  146. #define X_UngrabDeviceButton        18
  147. #define X_AllowDeviceEvents        19
  148. #define X_GetDeviceFocus        20
  149. #define X_SetDeviceFocus        21
  150. #define X_GetFeedbackControl        22
  151. #define X_ChangeFeedbackControl        23
  152. #define X_GetDeviceKeyMapping        24
  153. #define X_ChangeDeviceKeyMapping    25
  154. #define X_GetDeviceModifierMapping    26
  155. #define X_SetDeviceModifierMapping    27
  156. #define X_GetDeviceButtonMapping    28
  157. #define X_SetDeviceButtonMapping    29
  158. #define X_QueryDeviceState         30
  159. #define X_SendExtensionEvent         31
  160. #define X_DeviceBell            32
  161. #define X_SetDeviceValuators        33
  162. #define X_GetDeviceControl        34
  163. #define X_ChangeDeviceControl        35
  164.  
  165. /*********************************************************
  166.  *
  167.  * Protocol request and reply structures.
  168.  *
  169.  * GetExtensionVersion.
  170.  *
  171.  */
  172.  
  173. typedef struct {
  174.     CARD8     reqType;       /* input extension major code   */
  175.     CARD8     ReqType;       /* always X_GetExtensionVersion */
  176.     CARD16     length B16;
  177.     CARD16     nbytes B16;
  178.     CARD8     pad1, pad2;
  179. } xGetExtensionVersionReq;
  180.  
  181. typedef struct {
  182.     CARD8     repType;      /* X_Reply             */
  183.     CARD8     RepType;           /* always X_GetExtensionVersion */
  184.     CARD16     sequenceNumber B16;
  185.     CARD32     length B32;
  186.     CARD16     major_version B16;
  187.     CARD16     minor_version B16;
  188.     BOOL     present;
  189.     CARD8     pad1, pad2, pad3;
  190.     CARD32     pad01 B32;
  191.     CARD32     pad02 B32;
  192.     CARD32     pad03 B32;
  193.     CARD32     pad04 B32;
  194. } xGetExtensionVersionReply;
  195.  
  196. /*********************************************************
  197.  *
  198.  * ListInputDevices.
  199.  *
  200.  */
  201.  
  202. typedef struct {
  203.     CARD8     reqType;    /* input extension major code    */
  204.     CARD8     ReqType;    /* always X_ListInputDevices     */
  205.     CARD16     length B16;
  206. } xListInputDevicesReq;
  207.  
  208. typedef struct {
  209.     CARD8     repType;      /* X_Reply             */
  210.     CARD8     RepType;        /* always X_ListInputDevices      */
  211.     CARD16     sequenceNumber B16;
  212.     CARD32     length B32;
  213.     CARD8     ndevices;
  214.     CARD8     pad1, pad2, pad3;
  215.     CARD32     pad01 B32;
  216.     CARD32     pad02 B32;
  217.     CARD32     pad03 B32;
  218.     CARD32     pad04 B32;
  219.     CARD32     pad05 B32;
  220. } xListInputDevicesReply;
  221.  
  222. typedef struct _xDeviceInfo *xDeviceInfoPtr;
  223.  
  224. typedef struct _xAnyClassinfo *xAnyClassPtr;
  225.  
  226. typedef struct _xAnyClassinfo {
  227.     CARD8     class;
  228.     CARD8     length;
  229.     } xAnyClassInfo;
  230.  
  231. typedef struct _xDeviceInfo {
  232.     CARD32    type B32;
  233.     CARD8    id;
  234.     CARD8     num_classes;
  235.     CARD8     use;
  236.     CARD8     pad1;
  237.     } xDeviceInfo;
  238.  
  239. typedef struct _xKeyInfo *xKeyInfoPtr;
  240.  
  241. typedef struct _xKeyInfo {
  242.     CARD8     class;
  243.     CARD8     length;
  244.     KeyCode     min_keycode; 
  245.     KeyCode     max_keycode; 
  246.     CARD16     num_keys B16;
  247.     CARD8     pad1,pad2;
  248.     } xKeyInfo;
  249.  
  250. typedef struct _xButtonInfo *xButtonInfoPtr;
  251.  
  252. typedef struct _xButtonInfo {
  253.     CARD8     class;
  254.     CARD8     length;
  255.     CARD16     num_buttons B16;
  256.     } xButtonInfo;
  257.  
  258. typedef struct _xValuatorInfo *xValuatorInfoPtr;
  259.  
  260. typedef struct _xValuatorInfo {
  261.     CARD8     class;
  262.     CARD8     length;
  263.     CARD8     num_axes;
  264.     CARD8     mode;
  265.     CARD32     motion_buffer_size B32;
  266.     } xValuatorInfo;
  267.  
  268. typedef struct _xAxisInfo *xAxisInfoPtr;
  269.  
  270. typedef struct _xAxisInfo {
  271.     CARD32     resolution B32;
  272.     CARD32     min_value B32;
  273.     CARD32     max_value B32;
  274.     } xAxisInfo;
  275.  
  276. /*********************************************************
  277.  *
  278.  * OpenDevice.
  279.  *
  280.  */
  281.  
  282. typedef struct {
  283.     CARD8    reqType;    /* input extension major code    */
  284.     CARD8     ReqType;        /* always X_OpenDevice         */
  285.     CARD16     length B16;
  286.     CARD8       deviceid;
  287.     BYTE    pad1, pad2, pad3;
  288. } xOpenDeviceReq;
  289.  
  290. typedef struct {
  291.     CARD8     repType;      /* X_Reply             */
  292.     CARD8     RepType;           /* always X_OpenDevice            */
  293.     CARD16     sequenceNumber B16;
  294.     CARD32     length B32;
  295.     CARD8     num_classes;
  296.     BYTE     pad1, pad2, pad3;
  297.     CARD32     pad00 B32;
  298.     CARD32     pad01 B32;
  299.     CARD32     pad02 B32;
  300.     CARD32     pad03 B32;
  301.     CARD32     pad04 B32;
  302.     } xOpenDeviceReply;
  303.  
  304. typedef struct {
  305.     CARD8     class;
  306.     CARD8     event_type_base;
  307.     } xInputClassInfo;
  308.  
  309. /*********************************************************
  310.  *
  311.  * CloseDevice.
  312.  *
  313.  */
  314.  
  315. typedef struct {
  316.     CARD8    reqType;    /* input extension major code    */
  317.     CARD8     ReqType;        /* always X_CloseDevice     */
  318.     CARD16     length B16;
  319.     CARD8       deviceid;
  320.     BYTE    pad1, pad2, pad3;
  321. } xCloseDeviceReq;
  322.  
  323. /*********************************************************
  324.  *
  325.  * SetDeviceMode.
  326.  *
  327.  */
  328.  
  329. typedef struct {
  330.     CARD8     reqType;    /* input extension major code    */
  331.     CARD8     ReqType;         /* always X_SetDeviceMode     */
  332.     CARD16     length B16;
  333.     CARD8       deviceid;
  334.     CARD8       mode;
  335.     BYTE     pad1, pad2;
  336. } xSetDeviceModeReq;
  337.  
  338. typedef struct {
  339.     CARD8     repType;      /* X_Reply             */
  340.     CARD8     RepType;         /* always X_SetDeviceMode      */
  341.     CARD16     sequenceNumber B16;
  342.     CARD32     length B32;
  343.     CARD8     status;
  344.     BYTE    pad1, pad2, pad3;
  345.     CARD32     pad01 B32;
  346.     CARD32     pad02 B32;
  347.     CARD32     pad03 B32;
  348.     CARD32     pad04 B32;
  349.     CARD32     pad05 B32;
  350. } xSetDeviceModeReply;
  351.  
  352. /*********************************************************
  353.  *
  354.  * SelectExtensionEvent.
  355.  *
  356.  */
  357.  
  358. typedef struct {
  359.     CARD8    reqType;    /* input extension major code    */
  360.     CARD8     ReqType;        /* always X_SelectExtensionEvent */
  361.     CARD16     length B16;
  362.     Window     window B32;
  363.     CARD16    count B16;
  364.     CARD16    pad00 B16;
  365. } xSelectExtensionEventReq;
  366.  
  367. /*********************************************************
  368.  *
  369.  * GetSelectedExtensionEvent.
  370.  *
  371.  */
  372.  
  373. typedef struct {
  374.     CARD8    reqType;    /* input extension major code    */
  375.     CARD8     ReqType;        /* X_GetSelectedExtensionEvents */
  376.     CARD16     length B16;
  377.     Window    window B32;
  378. } xGetSelectedExtensionEventsReq;
  379.  
  380. typedef struct {
  381.     CARD8     repType;      /* X_Reply             */
  382.     CARD8     RepType;           /* GetSelectedExtensionEvents    */
  383.     CARD16     sequenceNumber B16;
  384.     CARD32     length B32;
  385.     CARD16     this_client_count B16;
  386.     CARD16     all_clients_count B16;
  387.     CARD32     pad01 B32;
  388.     CARD32     pad02 B32;
  389.     CARD32     pad03 B32;
  390.     CARD32     pad04 B32;
  391.     CARD32     pad05 B32;
  392. } xGetSelectedExtensionEventsReply;
  393.  
  394. /*********************************************************
  395.  *
  396.  * ChangeDeviceDontPropagateList.
  397.  *
  398.  */
  399.  
  400. typedef struct {
  401.     CARD8    reqType;    /* input extension major code    */
  402.     CARD8     ReqType;        /* X_ChangeDeviceDontPropagateList */
  403.     CARD16     length B16;
  404.     Window    window B32;
  405.     CARD16     count B16;
  406.     CARD8     mode;
  407.     BYTE    pad;
  408. } xChangeDeviceDontPropagateListReq;
  409.  
  410. /*********************************************************
  411.  *
  412.  * GetDeviceDontPropagateList.
  413.  *
  414.  */
  415.  
  416. typedef struct {
  417.     CARD8    reqType;    /* input extension major code    */
  418.     CARD8     ReqType;        /* X_GetDeviceDontPropagateList */
  419.     CARD16     length B16;
  420.     Window    window B32;
  421. } xGetDeviceDontPropagateListReq;
  422.  
  423. typedef struct {
  424.     CARD8     repType;      /* X_Reply             */
  425.     CARD8     RepType;        /* GetDeviceDontPropagateList   */
  426.     CARD16     sequenceNumber B16;
  427.     CARD32     length B32;
  428.     CARD16     count B16;
  429.     CARD16     pad00 B16;
  430.     CARD32     pad01 B32;
  431.     CARD32     pad02 B32;
  432.     CARD32     pad03 B32;
  433.     CARD32     pad04 B32;
  434.     CARD32     pad05 B32;
  435.     } xGetDeviceDontPropagateListReply;
  436.  
  437. /*********************************************************
  438.  *
  439.  * GetDeviceMotionEvents.
  440.  *
  441.  */
  442.  
  443. typedef struct {
  444.     CARD8     reqType;    /* input extension major code    */
  445.     CARD8     ReqType;        /* always X_GetDeviceMotionEvents*/
  446.     CARD16     length B16;
  447.     Time     start B32;
  448.     Time    stop B32;
  449.     CARD8    deviceid;
  450.     BYTE    pad1, pad2, pad3;
  451. } xGetDeviceMotionEventsReq;
  452.  
  453. typedef struct {
  454.     CARD8     repType;      /* X_Reply */
  455.     CARD8     RepType;        /* always X_GetDeviceMotionEvents  */
  456.     CARD16     sequenceNumber B16;
  457.     CARD32     length B32;
  458.     CARD32     nEvents B32;
  459.     CARD8      axes;
  460.     CARD8      mode;
  461.     BYTE    pad1, pad2;
  462.     CARD32     pad01 B32;
  463.     CARD32     pad02 B32;
  464.     CARD32     pad03 B32;
  465.     CARD32     pad04 B32;
  466. } xGetDeviceMotionEventsReply;
  467.  
  468. /*********************************************************
  469.  *
  470.  * ChangeKeyboardDevice.
  471.  *
  472.  */
  473.  
  474. typedef struct {
  475.     CARD8    reqType;    /* input extension major code    */
  476.     CARD8     ReqType;        /* X_ChangeKeyboardDevice     */
  477.     CARD16     length B16;
  478.     CARD8     deviceid;
  479.     BYTE    pad1, pad2, pad3;
  480. } xChangeKeyboardDeviceReq;
  481.  
  482. typedef struct {
  483.     CARD8     repType;      /* X_Reply             */
  484.     CARD8     RepType;        /* always X_ChangeKeyboardDevice*/
  485.     CARD16     sequenceNumber B16;
  486.     CARD32     length B32;  /* 0 */
  487.     CARD8     status;
  488.     BYTE    pad1, pad2, pad3;
  489.     CARD32     pad01 B32;
  490.     CARD32     pad02 B32;
  491.     CARD32     pad03 B32;
  492.     CARD32     pad04 B32;
  493.     CARD32     pad05 B32;
  494.     } xChangeKeyboardDeviceReply;
  495.  
  496. /*********************************************************
  497.  *
  498.  * ChangePointerDevice.
  499.  *
  500.  */
  501.  
  502. typedef struct {
  503.     CARD8    reqType;    /* input extension major code    */
  504.     CARD8     ReqType;        /* X_ChangePointerDevice     */
  505.     CARD16     length B16;
  506.     CARD8     xaxis;
  507.     CARD8     yaxis;
  508.     CARD8     deviceid;
  509.     BYTE    pad1;
  510. } xChangePointerDeviceReq;
  511.  
  512. typedef struct {
  513.     CARD8     repType;      /* X_Reply             */
  514.     CARD8     RepType;        /* always X_ChangePointerDevice */
  515.     CARD16     sequenceNumber B16;
  516.     CARD32     length B32;  /* 0 */
  517.     CARD8     status;
  518.     BYTE    pad1, pad2, pad3;
  519.     CARD32     pad01 B32;
  520.     CARD32     pad02 B32;
  521.     CARD32     pad03 B32;
  522.     CARD32     pad04 B32;
  523.     CARD32     pad05 B32;
  524.     } xChangePointerDeviceReply;
  525.  
  526. /*********************************************************
  527.  *
  528.  * GrabDevice.
  529.  *
  530.  */
  531.  
  532. typedef struct {
  533.     CARD8    reqType;    /* input extension major code    */
  534.     CARD8     ReqType;        /* always X_GrabDevice */
  535.     CARD16     length B16;
  536.     Window     grabWindow B32;
  537.     Time     time B32;
  538.     CARD16    event_count B16;
  539.     CARD8    this_device_mode;
  540.     CARD8    other_devices_mode;
  541.     BOOL     ownerEvents;
  542.     CARD8     deviceid;
  543.     CARD16     pad01 B16;
  544. } xGrabDeviceReq;
  545.  
  546. typedef struct {
  547.     CARD8     repType;      /* X_Reply             */
  548.     CARD8     RepType;        /* always X_GrabDevice      */
  549.     CARD16     sequenceNumber B16;
  550.     CARD32     length B32;  /* 0 */
  551.     CARD8     status;
  552.     BYTE    pad1, pad2, pad3;
  553.     CARD32     pad01 B32;
  554.     CARD32     pad02 B32;
  555.     CARD32     pad03 B32;
  556.     CARD32     pad04 B32;
  557.     CARD32     pad05 B32;
  558.     } xGrabDeviceReply;
  559.  
  560. /*********************************************************
  561.  *
  562.  * UngrabDevice.
  563.  *
  564.  */
  565.  
  566. typedef struct {
  567.     CARD8    reqType;    /* input extension major code    */
  568.     CARD8     ReqType;        /* always X_UnGrabDevice     */
  569.     CARD16     length B16;
  570.     Time     time B32;
  571.     CARD8     deviceid;
  572.     BYTE    pad1, pad2, pad3;
  573. } xUngrabDeviceReq;
  574.  
  575. /*********************************************************
  576.  *
  577.  * GrabDeviceKey.
  578.  *
  579.  */
  580.  
  581. typedef struct {
  582.     CARD8    reqType;    /* input extension major code    */
  583.     CARD8     ReqType;        /* always X_GrabDeviceKey     */
  584.     CARD16     length B16;
  585.     Window     grabWindow B32;
  586.     CARD16    event_count B16;
  587.     CARD16     modifiers B16;
  588.     CARD8    modifier_device;
  589.     CARD8    grabbed_device;
  590.     CARD8    key;
  591.     BYTE     this_device_mode;  
  592.     BYTE     other_devices_mode;  
  593.     BOOL     ownerEvents;
  594.     BYTE    pad1, pad2;
  595. } xGrabDeviceKeyReq;
  596.  
  597. /*********************************************************
  598.  *
  599.  * UngrabDeviceKey.
  600.  *
  601.  */
  602.  
  603. typedef struct {
  604.     CARD8    reqType;    /* input extension major code    */
  605.     CARD8     ReqType;        /* always X_UngrabDeviceKey     */
  606.     CARD16     length B16;
  607.     Window     grabWindow B32;
  608.     CARD16    modifiers B16;
  609.     CARD8     modifier_device;
  610.     CARD8    key;
  611.     CARD8    grabbed_device;
  612.     BYTE    pad1, pad2, pad3;
  613. } xUngrabDeviceKeyReq;
  614.  
  615. /*********************************************************
  616.  *
  617.  * GrabDeviceButton.
  618.  *
  619.  */
  620.  
  621. typedef struct {
  622.     CARD8    reqType;    /* input extension major code    */
  623.     CARD8     ReqType;        /* always X_GrabDeviceButton     */
  624.     CARD16     length B16;
  625.     Window     grabWindow B32;
  626.     CARD8    grabbed_device;
  627.     CARD8    modifier_device;
  628.     CARD16     event_count B16;
  629.     CARD16     modifiers B16;
  630.     BYTE     this_device_mode;  
  631.     BYTE     other_devices_mode;  
  632.     CARD8     button;
  633.     BOOL     ownerEvents;
  634.     BYTE    pad1, pad2;
  635. } xGrabDeviceButtonReq;
  636.  
  637. /*********************************************************
  638.  *
  639.  * UngrabDeviceButton.
  640.  *
  641.  */
  642.  
  643. typedef struct {
  644.     CARD8    reqType;    /* input extension major code    */
  645.     CARD8     ReqType;        /* always X_UngrabDeviceButton     */
  646.     CARD16     length B16;
  647.     Window     grabWindow B32;
  648.     CARD16     modifiers B16;
  649.     CARD8     modifier_device;
  650.     CARD8     button;
  651.     CARD8     grabbed_device;
  652.     BYTE    pad1, pad2, pad3;
  653. } xUngrabDeviceButtonReq;
  654.  
  655. /*********************************************************
  656.  *
  657.  * AllowDeviceEvents.
  658.  *
  659.  */
  660.  
  661. typedef struct {
  662.     CARD8    reqType;    /* input extension major code    */
  663.     CARD8     ReqType;        /* always X_AllowDeviceEvents     */
  664.     CARD16     length B16;
  665.     Time     time B32;
  666.     CARD8    mode;
  667.     CARD8     deviceid;
  668.     BYTE    pad1, pad2;
  669. } xAllowDeviceEventsReq;
  670.  
  671. /*********************************************************
  672.  *
  673.  * GetDeviceFocus.
  674.  *
  675.  */
  676.  
  677. typedef struct {
  678.     CARD8     reqType;        /* input extension major code   */
  679.     CARD8     ReqType;        /* always X_GetDeviceFocus     */
  680.     CARD16     length B16;
  681.     CARD8     deviceid;
  682.     BYTE     pad1, pad2, pad3;
  683. } xGetDeviceFocusReq;
  684.  
  685. typedef struct {
  686.     CARD8     repType;      /* X_Reply             */
  687.     CARD8     RepType;        /* always X_GetDeviceFocus      */
  688.     CARD16     sequenceNumber B16;
  689.     CARD32     length B32;
  690.     CARD32     focus B32;
  691.     Time     time B32;
  692.     CARD8      revertTo;
  693.     BYTE     pad1, pad2, pad3;
  694.     CARD32     pad01 B32;
  695.     CARD32     pad02 B32;
  696.     CARD32     pad03 B32;
  697.     } xGetDeviceFocusReply;
  698.  
  699. /*********************************************************
  700.  *
  701.  * SetDeviceFocus.
  702.  *
  703.  */
  704.  
  705. typedef struct {
  706.     CARD8     reqType;        /* input extension major code   */
  707.     CARD8     ReqType;        /* always X_SetDeviceFocus     */
  708.     CARD16     length B16;
  709.     Window     focus B32;
  710.     Time       time B32;
  711.     CARD8      revertTo;
  712.     CARD8      device;
  713.     CARD16     pad01 B16;
  714. } xSetDeviceFocusReq;
  715.  
  716. /*********************************************************
  717.  *
  718.  * GetFeedbackControl.
  719.  *
  720.  */
  721.  
  722. typedef struct {
  723.     CARD8    reqType;    /* input extension major code    */
  724.     CARD8     ReqType;        /* X_GetFeedbackControl      */
  725.     CARD16     length B16;
  726.     CARD8     deviceid;
  727.     BYTE    pad1, pad2, pad3;
  728. } xGetFeedbackControlReq;
  729.  
  730. typedef struct {
  731.     CARD8      repType;      /* X_Reply             */
  732.     CARD8      RepType;        /* always X_GetFeedbackControl     */
  733.     CARD16     sequenceNumber B16;
  734.     CARD32     length B32;
  735.     CARD16    num_feedbacks B16;
  736.     CARD16    pad01 B16;
  737.     CARD32    pad02 B32;
  738.     CARD32    pad03 B32;
  739.     CARD32    pad04 B32;
  740.     CARD32    pad05 B32;
  741.     CARD32    pad06 B32;
  742. } xGetFeedbackControlReply;
  743.  
  744. typedef struct {
  745.     CARD8      class;         /* feedback class        */
  746.     CARD8      id;         /* feedback id            */
  747.     CARD16      length B16;     /* feedback length        */
  748. } xFeedbackState;
  749.  
  750. typedef struct {
  751.     CARD8   class;
  752.     CARD8   id;
  753.     CARD16  length B16;
  754.     CARD16  pitch B16;
  755.     CARD16  duration B16;
  756.     CARD32  led_mask B32;
  757.     CARD32  led_values B32;
  758.     BOOL    global_auto_repeat;
  759.     CARD8   click;
  760.     CARD8   percent;
  761.     BYTE    pad;
  762.     BYTE    auto_repeats[32];
  763. } xKbdFeedbackState;
  764.  
  765. typedef struct {
  766.     CARD8   class;
  767.     CARD8   id;
  768.     CARD16  length B16;
  769.     CARD8   pad1,pad2;
  770.     CARD16  accelNum B16;
  771.     CARD16  accelDenom B16;
  772.     CARD16  threshold B16;
  773. } xPtrFeedbackState;
  774.  
  775. typedef struct {
  776.     CARD8      class;      /* feedback class id        */
  777.     CARD8       id;
  778.     CARD16      length B16;     /* feedback length          */
  779.     CARD32    resolution B32;
  780.     INT32    min_value B32;
  781.     INT32    max_value B32;
  782. } xIntegerFeedbackState;
  783.  
  784. typedef struct {
  785.     CARD8      class;      /* feedback class id        */
  786.     CARD8       id;
  787.     CARD16      length B16;     /* feedback length          */
  788.     CARD16    max_symbols B16;
  789.     CARD16    num_syms_supported B16;
  790. } xStringFeedbackState;
  791.  
  792. typedef struct {
  793.     CARD8      class;      /* feedback class id        */
  794.     CARD8    id;
  795.     CARD16      length B16;     /* feedback length          */
  796.     CARD8    percent;
  797.     BYTE    pad1, pad2, pad3;
  798.     CARD16    pitch B16;
  799.     CARD16    duration B16;
  800. } xBellFeedbackState;
  801.  
  802. typedef struct {
  803.     CARD8      class;      /* feedback class id        */
  804.     CARD8    id;
  805.     CARD16      length B16;     /* feedback length          */
  806.     CARD32    led_mask B32;
  807.     CARD32    led_values B32;
  808. } xLedFeedbackState;
  809.  
  810. /*********************************************************
  811.  *
  812.  * ChangeFeedbackControl.
  813.  *
  814.  */
  815.  
  816. typedef struct {
  817.     CARD8    reqType;    /* input extension major code    */
  818.     CARD8     ReqType;        /* X_ChangeFeedbackControl      */
  819.     CARD16     length B16;
  820.     CARD32    mask B32;
  821.     CARD8      deviceid;
  822.     CARD8      feedbackid;
  823.     BYTE    pad1, pad2;
  824. } xChangeFeedbackControlReq;
  825.  
  826. typedef struct {
  827.     CARD8      class;      /* feedback class id        */
  828.     CARD8      id;         /* feedback id              */
  829.     CARD16      length B16;     /* feedback length          */
  830. } xFeedbackCtl;
  831.  
  832. typedef struct {
  833.     CARD8      class;      /* feedback class id        */
  834.     CARD8      id;         /* feedback length          */
  835.     CARD16      length B16;     /* feedback length          */
  836.     KeyCode     key; 
  837.     CARD8    auto_repeat_mode;
  838.     INT8    click;
  839.     INT8    percent;
  840.     INT16    pitch B16;
  841.     INT16    duration B16;
  842.     CARD32    led_mask B32;
  843.     CARD32    led_values B32;
  844. } xKbdFeedbackCtl;
  845.  
  846. typedef struct {
  847.     CARD8      class;      /* feedback class id        */
  848.     CARD8      id;         /* feedback id              */
  849.     CARD16      length B16;     /* feedback length          */
  850.     CARD8      pad1,pad2;
  851.     INT16    num B16;
  852.     INT16    denom B16;
  853.     INT16    thresh B16;
  854. } xPtrFeedbackCtl;
  855.  
  856. typedef struct {
  857.     CARD8      class;      /* feedback class id        */
  858.     CARD8      id;         /* feedback id              */
  859.     CARD16      length B16;     /* feedback length          */
  860.     INT32    int_to_display B32;
  861. } xIntegerFeedbackCtl;
  862.  
  863. typedef struct {
  864.     CARD8      class;      /* feedback class id        */
  865.     CARD8      id;         /* feedback id              */
  866.     CARD16      length B16;     /* feedback length          */
  867.     CARD8      pad1,pad2;
  868.     CARD16    num_keysyms B16;
  869. } xStringFeedbackCtl;
  870.  
  871. typedef struct {
  872.     CARD8      class;      /* feedback class id        */
  873.     CARD8      id;         /* feedback id              */
  874.     CARD16      length B16;     /* feedback length          */
  875.     INT8    percent;
  876.     BYTE    pad1, pad2, pad3;
  877.     INT16    pitch B16;
  878.     INT16    duration B16;
  879. } xBellFeedbackCtl;
  880.  
  881. typedef struct {
  882.     CARD8      class;      /* feedback class id        */
  883.     CARD8      id;         /* feedback id              */
  884.     CARD16      length B16;     /* feedback length          */
  885.     CARD32    led_mask B32;
  886.     CARD32    led_values B32;
  887. } xLedFeedbackCtl;
  888.  
  889. /*********************************************************
  890.  *
  891.  * GetDeviceKeyMapping.
  892.  *
  893.  */
  894.  
  895. typedef struct {
  896.     CARD8     reqType;        /* input extension major code   */
  897.     CARD8     ReqType;         /* always X_GetDeviceKeyMapping */
  898.     CARD16     length B16;
  899.     CARD8       deviceid;
  900.     KeyCode     firstKeyCode; 
  901.     CARD8     count;
  902.     BYTE    pad1;
  903. } xGetDeviceKeyMappingReq;
  904.  
  905. typedef struct {
  906.     CARD8      repType;      /* X_Reply             */
  907.     CARD8      RepType;           /* always X_GetDeviceKeyMapping */
  908.     CARD16     sequenceNumber B16;
  909.     CARD32     length B32;
  910.     CARD8      keySymsPerKeyCode;
  911.     CARD8      pad0;
  912.     CARD16     pad1 B16;
  913.     CARD32     pad2 B32;
  914.     CARD32     pad3 B32;
  915.     CARD32     pad4 B32;
  916.     CARD32     pad5 B32;
  917.     CARD32     pad6 B32;
  918. } xGetDeviceKeyMappingReply;
  919.  
  920. /*********************************************************
  921.  *
  922.  * ChangeDeviceKeyMapping.
  923.  *
  924.  */
  925.  
  926. typedef struct {
  927.     CARD8     reqType;        /* input extension major code   */
  928.     CARD8     ReqType;        /* always X_ChangeDeviceKeyMapping */
  929.     CARD16     length B16;
  930.     CARD8       deviceid;
  931.     KeyCode     firstKeyCode;
  932.     CARD8     keySymsPerKeyCode;
  933.     CARD8     keyCodes;
  934. } xChangeDeviceKeyMappingReq;
  935.  
  936. /*********************************************************
  937.  *
  938.  * GetDeviceModifierMapping.
  939.  *
  940.  */
  941.  
  942. typedef struct {
  943.     CARD8     reqType;        /* input extension major code   */
  944.     CARD8     ReqType;        /* always X_GetDeviceModifierMapping */
  945.     CARD16     length B16;
  946.     CARD8       deviceid;
  947.     BYTE    pad1, pad2, pad3;
  948. } xGetDeviceModifierMappingReq;
  949.  
  950. typedef struct {
  951.     CARD8      repType;      /* X_Reply */
  952.     CARD8      RepType;        /* always X_GetDeviceModifierMapping */
  953.     CARD16     sequenceNumber B16;
  954.     CARD32     length B32;
  955.     CARD8      numKeyPerModifier;
  956.     CARD8      pad0;
  957.     CARD16     pad1 B16;
  958.     CARD32     pad2 B32;
  959.     CARD32     pad3 B32;
  960.     CARD32     pad4 B32;
  961.     CARD32     pad5 B32;
  962.     CARD32     pad6 B32;
  963. } xGetDeviceModifierMappingReply;
  964.  
  965. /*********************************************************
  966.  *
  967.  * SetDeviceModifierMapping.
  968.  *
  969.  */
  970.  
  971. typedef struct {
  972.     CARD8     reqType;        /* input extension major code   */
  973.     CARD8     ReqType;        /* always X_SetDeviceModifierMapping */
  974.     CARD16     length B16;
  975.     CARD8       deviceid;
  976.     CARD8       numKeyPerModifier;
  977.     CARD16      pad1 B16;
  978. } xSetDeviceModifierMappingReq;
  979.  
  980. typedef struct {
  981.     CARD8      repType;      /* X_Reply */
  982.     CARD8      RepType;        /* always X_SetDeviceModifierMapping */
  983.     CARD16     sequenceNumber B16;
  984.     CARD32     length B32;
  985.     CARD8      success;
  986.     CARD8      pad0;
  987.     CARD16     pad1 B16;
  988.     CARD32     pad2 B32;
  989.     CARD32     pad3 B32;
  990.     CARD32     pad4 B32;
  991.     CARD32     pad5 B32;
  992.     CARD32     pad6 B32;
  993. } xSetDeviceModifierMappingReply;
  994.  
  995. /*********************************************************
  996.  *
  997.  * GetDeviceButtonMapping.
  998.  *
  999.  */
  1000.  
  1001. typedef struct {
  1002.     CARD8    reqType;    /* input extension major code    */
  1003.     CARD8     ReqType;        /* X_GetDeviceButtonMapping     */
  1004.     CARD16     length B16;
  1005.     CARD8       deviceid;
  1006.     BYTE    pad1, pad2, pad3;
  1007. } xGetDeviceButtonMappingReq;
  1008.  
  1009. typedef struct {
  1010.     CARD8      repType;      /* X_Reply */
  1011.     CARD8      RepType;        /* always X_GetDeviceButtonMapping */
  1012.     CARD16     sequenceNumber B16;
  1013.     CARD32     length B32;
  1014.     CARD8     nElts;
  1015.     BYTE    pad1, pad2, pad3;
  1016.     CARD32     pad01 B32;
  1017.     CARD32     pad02 B32;
  1018.     CARD32     pad03 B32;
  1019.     CARD32     pad04 B32;
  1020.     CARD32     pad05 B32;
  1021. } xGetDeviceButtonMappingReply;
  1022.  
  1023. /*********************************************************
  1024.  *
  1025.  * SetDeviceButtonMapping.
  1026.  *
  1027.  */
  1028.  
  1029. typedef struct {
  1030.     CARD8    reqType;    /* input extension major code    */
  1031.     CARD8     ReqType;        /* X_SetDeviceButtonMapping     */
  1032.     CARD16     length B16;
  1033.     CARD8       deviceid;
  1034.     CARD8       map_length;
  1035.     BYTE    pad1, pad2;
  1036. } xSetDeviceButtonMappingReq;
  1037.  
  1038. typedef struct {
  1039.     CARD8      repType;          /* X_Reply */
  1040.     CARD8      RepType;            /* always X_SetDeviceButtonMapping */
  1041.     CARD16     sequenceNumber B16;
  1042.     CARD32     length B32;
  1043.     CARD8     status;
  1044.     BYTE     pad0;
  1045.     CARD16     pad1 B16;
  1046.     CARD32     pad2 B32;
  1047.     CARD32     pad3 B32;
  1048.     CARD32     pad4 B32;
  1049.     CARD32     pad5 B32;
  1050.     CARD32     pad6 B32;
  1051. } xSetDeviceButtonMappingReply;
  1052.  
  1053. /*********************************************************
  1054.  *
  1055.  * QueryDeviceState.
  1056.  *
  1057.  */
  1058.  
  1059. typedef struct {
  1060.     CARD8    reqType;
  1061.     CARD8     ReqType;        /* always X_QueryDeviceState */
  1062.     CARD16     length B16;
  1063.     CARD8       deviceid;
  1064.     BYTE    pad1, pad2, pad3;
  1065. } xQueryDeviceStateReq;
  1066.  
  1067. typedef struct {
  1068.     CARD8      repType;          /* X_Reply */
  1069.     CARD8      RepType;            /* always X_QueryDeviceState    */
  1070.     CARD16     sequenceNumber B16;
  1071.     CARD32     length B32;
  1072.     CARD8     num_classes;
  1073.     BYTE     pad0;
  1074.     CARD16     pad1 B16;
  1075.     CARD32     pad2 B32;
  1076.     CARD32     pad3 B32;
  1077.     CARD32     pad4 B32;
  1078.     CARD32     pad5 B32;
  1079.     CARD32     pad6 B32;
  1080. } xQueryDeviceStateReply;
  1081.  
  1082. typedef struct {
  1083.     CARD8      class;
  1084.     CARD8      length;
  1085.     CARD8    num_keys;
  1086.     BYTE       pad1;
  1087.     CARD8      keys[32];
  1088. } xKeyState;
  1089.  
  1090. typedef struct {
  1091.     CARD8      class;
  1092.     CARD8      length;
  1093.     CARD8    num_buttons;
  1094.     BYTE       pad1;
  1095.     CARD8      buttons[32];
  1096. } xButtonState;
  1097.  
  1098. typedef struct {
  1099.     CARD8      class;
  1100.     CARD8      length;
  1101.     CARD8      num_valuators;
  1102.     CARD8    mode;
  1103. } xValuatorState;
  1104.  
  1105. /*********************************************************
  1106.  *
  1107.  * SendExtensionEvent.
  1108.  * THIS REQUEST MUST BE KEPT A MULTIPLE OF 8 BYTES IN LENGTH!
  1109.  * MORE EVENTS MAY FOLLOW AND THEY MUST BE QUAD-ALIGNED!
  1110.  *
  1111.  */
  1112.  
  1113. typedef struct {
  1114.     CARD8    reqType;
  1115.     CARD8     ReqType;        /* always X_SendExtensionEvent */
  1116.     CARD16     length B16;
  1117.     Window    destination B32;
  1118.     CARD8       deviceid;
  1119.     BOOL       propagate;
  1120.     CARD16    count B16;
  1121.     CARD8    num_events;
  1122.     BYTE    pad1,pad2,pad3;
  1123. } xSendExtensionEventReq;
  1124.  
  1125. /*********************************************************
  1126.  *
  1127.  * DeviceBell.
  1128.  *
  1129.  */
  1130.  
  1131. typedef struct {
  1132.     CARD8    reqType;
  1133.     CARD8     ReqType;        /* always X_DeviceBell */
  1134.     CARD16     length B16;
  1135.     CARD8       deviceid;
  1136.     CARD8    feedbackid;
  1137.     CARD8    feedbackclass;
  1138.     INT8    percent;
  1139. } xDeviceBellReq;
  1140.  
  1141. /*********************************************************
  1142.  *
  1143.  * SetDeviceValuators.
  1144.  *
  1145.  */
  1146.  
  1147. typedef struct {
  1148.     CARD8     reqType;    /* input extension major code    */
  1149.     CARD8     ReqType;         /* always X_SetDeviceValuators     */
  1150.     CARD16     length B16;
  1151.     CARD8       deviceid;
  1152.     CARD8       first_valuator;
  1153.     CARD8       num_valuators;
  1154.     BYTE     pad1;
  1155. } xSetDeviceValuatorsReq;
  1156.  
  1157. typedef struct {
  1158.     CARD8     repType;      /* X_Reply             */
  1159.     CARD8     RepType;         /* always X_SetDeviceValuators     */
  1160.     CARD16     sequenceNumber B16;
  1161.     CARD32     length B32;
  1162.     CARD8     status;
  1163.     BYTE    pad1, pad2, pad3;
  1164.     CARD32     pad01 B32;
  1165.     CARD32     pad02 B32;
  1166.     CARD32     pad03 B32;
  1167.     CARD32     pad04 B32;
  1168.     CARD32     pad05 B32;
  1169. } xSetDeviceValuatorsReply;
  1170.  
  1171. /*********************************************************
  1172.  *
  1173.  * GetDeviceControl.
  1174.  *
  1175.  */
  1176.  
  1177. typedef struct {
  1178.     CARD8     reqType;    /* input extension major code    */
  1179.     CARD8     ReqType;         /* always X_GetDeviceControl     */
  1180.     CARD16     length B16;
  1181.     CARD16      control B16;
  1182.     CARD8       deviceid;
  1183.     BYTE     pad2;
  1184. } xGetDeviceControlReq;
  1185.  
  1186. typedef struct {
  1187.     CARD8     repType;      /* X_Reply             */
  1188.     CARD8     RepType;         /* always X_GetDeviceControl     */
  1189.     CARD16     sequenceNumber B16;
  1190.     CARD32     length B32;
  1191.     CARD8     status;
  1192.     BYTE    pad1, pad2, pad3;
  1193.     CARD32     pad01 B32;
  1194.     CARD32     pad02 B32;
  1195.     CARD32     pad03 B32;
  1196.     CARD32     pad04 B32;
  1197.     CARD32     pad05 B32;
  1198. } xGetDeviceControlReply;
  1199.  
  1200. typedef struct {
  1201.     CARD16      control B16;     /* control type              */
  1202.     CARD16      length B16;     /* control length          */
  1203. } xDeviceState;
  1204.  
  1205. typedef struct {
  1206.     CARD16      control B16;         /* control type              */
  1207.     CARD16      length B16;         /* control length          */
  1208.     CARD32      num_valuators B32;     /* number of valuators        */
  1209. } xDeviceResolutionState;
  1210.  
  1211. /*********************************************************
  1212.  *
  1213.  * ChangeDeviceControl.
  1214.  *
  1215.  */
  1216.  
  1217. typedef struct {
  1218.     CARD8     reqType;    /* input extension major code    */
  1219.     CARD8     ReqType;         /* always X_ChangeDeviceControl */
  1220.     CARD16     length B16;
  1221.     CARD16      control B16;
  1222.     CARD8       deviceid;
  1223.     BYTE        pad0;
  1224. } xChangeDeviceControlReq;
  1225.  
  1226. typedef struct {
  1227.     CARD8     repType;      /* X_Reply             */
  1228.     CARD8     RepType;         /* always X_ChangeDeviceControl    */
  1229.     CARD16     sequenceNumber B16;
  1230.     CARD32     length B32;
  1231.     CARD8     status;
  1232.     BYTE    pad1, pad2, pad3;
  1233.     CARD32     pad01 B32;
  1234.     CARD32     pad02 B32;
  1235.     CARD32     pad03 B32;
  1236.     CARD32     pad04 B32;
  1237.     CARD32     pad05 B32;
  1238. } xChangeDeviceControlReply;
  1239.  
  1240. typedef struct {
  1241.     CARD16      control B16;     /* control type              */
  1242.     CARD16      length B16;     /* control length          */
  1243. } xDeviceCtl;
  1244.  
  1245. typedef struct {
  1246.     CARD16      control B16;         /* control type              */
  1247.     CARD16      length B16;         /* control length          */
  1248.     CARD8      first_valuator;     /* first valuator to change     */
  1249.     CARD8      num_valuators;         /* number of valuators to change*/
  1250.     CARD8      pad1,pad2;
  1251. } xDeviceResolutionCtl;
  1252.  
  1253. /**********************************************************
  1254.  *
  1255.  * Input extension events.
  1256.  *
  1257.  * DeviceValuator
  1258.  *
  1259.  */
  1260.  
  1261. typedef struct
  1262.     {
  1263.     BYTE     type;
  1264.     CARD8       deviceid;
  1265.     CARD16     sequenceNumber B16;
  1266.     KeyButMask  device_state B16;
  1267.     CARD8    num_valuators;
  1268.     CARD8       first_valuator;
  1269.     INT32     valuator0 B32;
  1270.     INT32     valuator1 B32;
  1271.     INT32     valuator2 B32;
  1272.     INT32     valuator3 B32;
  1273.     INT32     valuator4 B32;
  1274.     INT32     valuator5 B32;
  1275.     }  deviceValuator;
  1276.  
  1277. /**********************************************************
  1278.  *
  1279.  * DeviceKeyButtonPointer.
  1280.  *
  1281.  * Used for: DeviceKeyPress, DeviceKeyRelease,
  1282.  *         DeviceButtonPress, DeviceButtonRelease,
  1283.  *         ProximityIn, ProximityOut
  1284.  *         DeviceMotionNotify,
  1285.  * 
  1286.  */
  1287.  
  1288. typedef struct
  1289.     {
  1290.     BYTE     type;
  1291.     BYTE        detail;
  1292.     CARD16     sequenceNumber B16;
  1293.     Time        time B32;
  1294.     Window      root B32;
  1295.     Window      event B32;
  1296.     Window      child B32;
  1297.     INT16       root_x B16;
  1298.     INT16       root_y B16;
  1299.     INT16       event_x B16;
  1300.     INT16       event_y B16;
  1301.     KeyButMask  state B16;
  1302.     BOOL        same_screen;
  1303.     CARD8       deviceid;
  1304.     }  deviceKeyButtonPointer;
  1305.  
  1306. /**********************************************************
  1307.  *
  1308.  * DeviceFocus.
  1309.  *
  1310.  */
  1311.  
  1312. typedef struct
  1313.     {
  1314.     BYTE     type;
  1315.     BYTE        detail;
  1316.     CARD16     sequenceNumber B16;
  1317.     Time        time B32;
  1318.     Window      window B32;
  1319.     BYTE    mode;
  1320.     CARD8       deviceid;
  1321.     BYTE    pad1, pad2;
  1322.     CARD32    pad00 B32;
  1323.     CARD32    pad01 B32;
  1324.     CARD32    pad02 B32;
  1325.     CARD32    pad03 B32;
  1326.     }  deviceFocus;
  1327.  
  1328. /**********************************************************
  1329.  *
  1330.  * DeviceStateNotify.
  1331.  *
  1332.  * Note that the two high-order bits in the classes_reported
  1333.  * field are the proximity state (InProximity or OutOfProximity),
  1334.  * and the device mode (Absolute or Relative), respectively.
  1335.  *
  1336.  */
  1337.  
  1338. typedef struct
  1339.     {
  1340.     BYTE     type;
  1341.     BYTE        deviceid;
  1342.     CARD16     sequenceNumber B16;
  1343.     Time        time B32;
  1344.     CARD8    num_keys;
  1345.     CARD8    num_buttons;
  1346.     CARD8    num_valuators;
  1347.     CARD8       classes_reported;
  1348.     CARD8       buttons[4];
  1349.     CARD8       keys[4];
  1350.     INT32    valuator0 B32;
  1351.     INT32    valuator1 B32;
  1352.     INT32    valuator2 B32;
  1353.     }  deviceStateNotify;
  1354.  
  1355. /**********************************************************
  1356.  *
  1357.  * DeviceKeyStateNotify.
  1358.  *
  1359.  */
  1360.  
  1361. typedef struct
  1362.     {
  1363.     BYTE     type;
  1364.     BYTE        deviceid;
  1365.     CARD16     sequenceNumber B16;
  1366.     CARD8       keys[28];
  1367.     }  deviceKeyStateNotify;
  1368.  
  1369. /**********************************************************
  1370.  *
  1371.  * DeviceButtonStateNotify.
  1372.  *
  1373.  */
  1374.  
  1375. typedef struct
  1376.     {
  1377.     BYTE     type;
  1378.     BYTE        deviceid;
  1379.     CARD16     sequenceNumber B16;
  1380.     CARD8       buttons[28];
  1381.     }  deviceButtonStateNotify;
  1382.  
  1383. /**********************************************************
  1384.  *
  1385.  * DeviceMappingNotify.
  1386.  * Fields must be kept in sync with core mappingnotify event.
  1387.  *
  1388.  */
  1389.  
  1390. typedef struct
  1391.     {
  1392.     BYTE     type;
  1393.     BYTE        deviceid;
  1394.     CARD16     sequenceNumber B16;
  1395.     CARD8       request;
  1396.     KeyCode     firstKeyCode;
  1397.     CARD8       count;
  1398.     BYTE        pad1;
  1399.     Time        time B32;
  1400.     CARD32    pad00 B32;
  1401.     CARD32    pad01 B32;
  1402.     CARD32    pad02 B32;
  1403.     CARD32    pad03 B32;
  1404.     CARD32    pad04 B32;
  1405.     }  deviceMappingNotify;
  1406.  
  1407. /**********************************************************
  1408.  *
  1409.  * ChangeDeviceNotify.
  1410.  *
  1411.  */
  1412.  
  1413. typedef struct
  1414.     {
  1415.     BYTE     type;
  1416.     BYTE        deviceid;
  1417.     CARD16     sequenceNumber B16;
  1418.     Time        time B32;
  1419.     CARD8       request;
  1420.     BYTE        pad1, pad2, pad3;
  1421.     CARD32    pad00 B32;
  1422.     CARD32    pad01 B32;
  1423.     CARD32    pad02 B32;
  1424.     CARD32    pad03 B32;
  1425.     CARD32    pad04 B32;
  1426.     }  changeDeviceNotify;
  1427.  
  1428. #undef Window
  1429. #undef Time
  1430. #undef KeyCode
  1431.  
  1432. #endif
  1433.