]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/include/extensions/XIproto.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / include / extensions / XIproto.h
diff --git a/Xserver/include/extensions/XIproto.h b/Xserver/include/extensions/XIproto.h
new file mode 100644 (file)
index 0000000..31adf53
--- /dev/null
@@ -0,0 +1,1426 @@
+/* $XConsortium: XIproto.h /main/26 1996/03/20 15:30:59 mor $ */
+
+/************************************************************
+
+Copyright (c) 1989  X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California.
+
+                       All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Hewlett-Packard not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+********************************************************/
+
+#ifndef _XIPROTO_H
+#define _XIPROTO_H
+
+#include <X11/Xproto.h>
+#include <X11/X.h>
+
+/* make sure types have right sizes for protocol structures. */
+#define Window CARD32
+#define Time CARD32
+#define KeyCode CARD8
+
+/*********************************************************
+ *
+ * number of events, errors, and extension name.
+ *
+ */
+
+#define MORE_EVENTS    0x80
+#define DEVICE_BITS    0x7F
+
+#define InputClassBits 0x3F    /* bits in mode field for input classes */
+#define ModeBitsShift  6       /* amount to shift the remaining bits   */
+
+#define numInputClasses 7
+
+#define IEVENTS                15
+#define IERRORS                5
+
+#define CLIENT_REQ             1
+
+typedef struct  _XExtEventInfo
+    {
+    Mask       mask;
+    BYTE       type;
+    BYTE       word;
+    } XExtEventInfo;
+
+typedef unsigned char *Pointer;
+
+struct tmask
+    {
+    Mask       mask;
+    Pointer     dev;
+    };
+
+/*********************************************************
+ *
+ * Event constants used by library.
+ *
+ */
+
+#define XI_DeviceValuator              0
+#define XI_DeviceKeyPress              1
+#define XI_DeviceKeyRelease            2
+#define XI_DeviceButtonPress           3
+#define XI_DeviceButtonRelease         4
+#define XI_DeviceMotionNotify          5
+#define XI_DeviceFocusIn               6
+#define XI_DeviceFocusOut              7
+#define XI_ProximityIn                 8
+#define XI_ProximityOut                        9
+#define XI_DeviceStateNotify           10
+#define XI_DeviceMappingNotify         11
+#define XI_ChangeDeviceNotify          12
+#define XI_DeviceKeystateNotify                13
+#define XI_DeviceButtonstateNotify     14
+
+/*********************************************************
+ *
+ * Protocol request constants
+ *
+ */
+
+#define X_GetExtensionVersion          1
+#define X_ListInputDevices             2
+#define X_OpenDevice                   3
+#define X_CloseDevice                  4
+#define X_SetDeviceMode                        5
+#define X_SelectExtensionEvent         6
+#define X_GetSelectedExtensionEvents   7
+#define X_ChangeDeviceDontPropagateList 8
+#define X_GetDeviceDontPropagateList   9
+#define X_GetDeviceMotionEvents        10
+#define X_ChangeKeyboardDevice         11
+#define X_ChangePointerDevice          12
+#define X_GrabDevice                   13
+#define X_UngrabDevice                 14
+#define X_GrabDeviceKey                        15
+#define X_UngrabDeviceKey              16
+#define X_GrabDeviceButton             17
+#define X_UngrabDeviceButton           18
+#define X_AllowDeviceEvents            19
+#define X_GetDeviceFocus               20
+#define X_SetDeviceFocus               21
+#define X_GetFeedbackControl           22
+#define X_ChangeFeedbackControl                23
+#define X_GetDeviceKeyMapping          24
+#define X_ChangeDeviceKeyMapping       25
+#define X_GetDeviceModifierMapping     26
+#define X_SetDeviceModifierMapping     27
+#define X_GetDeviceButtonMapping       28
+#define X_SetDeviceButtonMapping       29
+#define X_QueryDeviceState             30
+#define X_SendExtensionEvent           31
+#define X_DeviceBell                   32
+#define X_SetDeviceValuators           33
+#define X_GetDeviceControl             34
+#define X_ChangeDeviceControl          35
+
+/*********************************************************
+ *
+ * Protocol request and reply structures.
+ *
+ * GetExtensionVersion.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;       /* input extension major code   */
+    CARD8      ReqType;       /* always X_GetExtensionVersion */
+    CARD16     length B16;
+    CARD16     nbytes B16;
+    CARD8      pad1, pad2;
+} xGetExtensionVersionReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GetExtensionVersion */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD16     major_version B16;
+    CARD16     minor_version B16;
+    BOOL       present;
+    CARD8      pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+} xGetExtensionVersionReply;
+
+/*********************************************************
+ *
+ * ListInputDevices.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_ListInputDevices    */
+    CARD16     length B16;
+} xListInputDevicesReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_ListInputDevices    */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      ndevices;
+    CARD8      pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xListInputDevicesReply;
+
+typedef struct _xDeviceInfo *xDeviceInfoPtr;
+
+typedef struct _xAnyClassinfo *xAnyClassPtr;
+
+typedef struct _xAnyClassinfo {
+    CARD8      class;
+    CARD8      length;
+    } xAnyClassInfo;
+
+typedef struct _xDeviceInfo {
+    CARD32     type B32;
+    CARD8      id;
+    CARD8      num_classes;
+    CARD8      use;
+    CARD8      pad1;
+    } xDeviceInfo;
+
+typedef struct _xKeyInfo *xKeyInfoPtr;
+
+typedef struct _xKeyInfo {
+    CARD8      class;
+    CARD8      length;
+    KeyCode    min_keycode; 
+    KeyCode    max_keycode; 
+    CARD16     num_keys B16;
+    CARD8      pad1,pad2;
+    } xKeyInfo;
+
+typedef struct _xButtonInfo *xButtonInfoPtr;
+
+typedef struct _xButtonInfo {
+    CARD8      class;
+    CARD8      length;
+    CARD16     num_buttons B16;
+    } xButtonInfo;
+
+typedef struct _xValuatorInfo *xValuatorInfoPtr;
+
+typedef struct _xValuatorInfo {
+    CARD8      class;
+    CARD8      length;
+    CARD8      num_axes;
+    CARD8      mode;
+    CARD32     motion_buffer_size B32;
+    } xValuatorInfo;
+
+typedef struct _xAxisInfo *xAxisInfoPtr;
+
+typedef struct _xAxisInfo {
+    CARD32     resolution B32;
+    CARD32     min_value B32;
+    CARD32     max_value B32;
+    } xAxisInfo;
+
+/*********************************************************
+ *
+ * OpenDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_OpenDevice          */
+    CARD16     length B16;
+    CARD8       deviceid;
+    BYTE       pad1, pad2, pad3;
+} xOpenDeviceReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_OpenDevice          */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      num_classes;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad00 B32;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    } xOpenDeviceReply;
+
+typedef struct {
+    CARD8      class;
+    CARD8      event_type_base;
+    } xInputClassInfo;
+
+/*********************************************************
+ *
+ * CloseDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_CloseDevice         */
+    CARD16     length B16;
+    CARD8       deviceid;
+    BYTE       pad1, pad2, pad3;
+} xCloseDeviceReq;
+
+/*********************************************************
+ *
+ * SetDeviceMode.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_SetDeviceMode       */
+    CARD16     length B16;
+    CARD8       deviceid;
+    CARD8       mode;
+    BYTE       pad1, pad2;
+} xSetDeviceModeReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_SetDeviceMode       */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xSetDeviceModeReply;
+
+/*********************************************************
+ *
+ * SelectExtensionEvent.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_SelectExtensionEvent */
+    CARD16     length B16;
+    Window     window B32;
+    CARD16     count B16;
+    CARD16     pad00 B16;
+} xSelectExtensionEventReq;
+
+/*********************************************************
+ *
+ * GetSelectedExtensionEvent.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_GetSelectedExtensionEvents */
+    CARD16     length B16;
+    Window     window B32;
+} xGetSelectedExtensionEventsReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* GetSelectedExtensionEvents   */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD16     this_client_count B16;
+    CARD16     all_clients_count B16;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xGetSelectedExtensionEventsReply;
+
+/*********************************************************
+ *
+ * ChangeDeviceDontPropagateList.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_ChangeDeviceDontPropagateList */
+    CARD16     length B16;
+    Window     window B32;
+    CARD16     count B16;
+    CARD8      mode;
+    BYTE       pad;
+} xChangeDeviceDontPropagateListReq;
+
+/*********************************************************
+ *
+ * GetDeviceDontPropagateList.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_GetDeviceDontPropagateList */
+    CARD16     length B16;
+    Window     window B32;
+} xGetDeviceDontPropagateListReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* GetDeviceDontPropagateList   */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD16     count B16;
+    CARD16     pad00 B16;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+    } xGetDeviceDontPropagateListReply;
+
+/*********************************************************
+ *
+ * GetDeviceMotionEvents.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GetDeviceMotionEvents*/
+    CARD16     length B16;
+    Time       start B32;
+    Time       stop B32;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xGetDeviceMotionEventsReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply */
+    CARD8      RepType;        /* always X_GetDeviceMotionEvents  */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD32     nEvents B32;
+    CARD8      axes;
+    CARD8      mode;
+    BYTE       pad1, pad2;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+} xGetDeviceMotionEventsReply;
+
+/*********************************************************
+ *
+ * ChangeKeyboardDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_ChangeKeyboardDevice       */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xChangeKeyboardDeviceReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_ChangeKeyboardDevice*/
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;  /* 0 */
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+    } xChangeKeyboardDeviceReply;
+
+/*********************************************************
+ *
+ * ChangePointerDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_ChangePointerDevice        */
+    CARD16     length B16;
+    CARD8      xaxis;
+    CARD8      yaxis;
+    CARD8      deviceid;
+    BYTE       pad1;
+} xChangePointerDeviceReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_ChangePointerDevice */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;  /* 0 */
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+    } xChangePointerDeviceReply;
+
+/*********************************************************
+ *
+ * GrabDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GrabDevice */
+    CARD16     length B16;
+    Window     grabWindow B32;
+    Time       time B32;
+    CARD16     event_count B16;
+    CARD8      this_device_mode;
+    CARD8      other_devices_mode;
+    BOOL       ownerEvents;
+    CARD8      deviceid;
+    CARD16     pad01 B16;
+} xGrabDeviceReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GrabDevice          */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;  /* 0 */
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+    } xGrabDeviceReply;
+
+/*********************************************************
+ *
+ * UngrabDevice.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_UnGrabDevice        */
+    CARD16     length B16;
+    Time       time B32;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xUngrabDeviceReq;
+
+/*********************************************************
+ *
+ * GrabDeviceKey.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GrabDeviceKey       */
+    CARD16     length B16;
+    Window     grabWindow B32;
+    CARD16     event_count B16;
+    CARD16     modifiers B16;
+    CARD8      modifier_device;
+    CARD8      grabbed_device;
+    CARD8      key;
+    BYTE       this_device_mode;  
+    BYTE       other_devices_mode;  
+    BOOL       ownerEvents;
+    BYTE       pad1, pad2;
+} xGrabDeviceKeyReq;
+
+/*********************************************************
+ *
+ * UngrabDeviceKey.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_UngrabDeviceKey     */
+    CARD16     length B16;
+    Window     grabWindow B32;
+    CARD16     modifiers B16;
+    CARD8      modifier_device;
+    CARD8      key;
+    CARD8      grabbed_device;
+    BYTE       pad1, pad2, pad3;
+} xUngrabDeviceKeyReq;
+
+/*********************************************************
+ *
+ * GrabDeviceButton.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GrabDeviceButton    */
+    CARD16     length B16;
+    Window     grabWindow B32;
+    CARD8      grabbed_device;
+    CARD8      modifier_device;
+    CARD16     event_count B16;
+    CARD16     modifiers B16;
+    BYTE       this_device_mode;  
+    BYTE       other_devices_mode;  
+    CARD8      button;
+    BOOL       ownerEvents;
+    BYTE       pad1, pad2;
+} xGrabDeviceButtonReq;
+
+/*********************************************************
+ *
+ * UngrabDeviceButton.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_UngrabDeviceButton  */
+    CARD16     length B16;
+    Window     grabWindow B32;
+    CARD16     modifiers B16;
+    CARD8      modifier_device;
+    CARD8      button;
+    CARD8      grabbed_device;
+    BYTE       pad1, pad2, pad3;
+} xUngrabDeviceButtonReq;
+
+/*********************************************************
+ *
+ * AllowDeviceEvents.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_AllowDeviceEvents   */
+    CARD16     length B16;
+    Time       time B32;
+    CARD8      mode;
+    CARD8      deviceid;
+    BYTE       pad1, pad2;
+} xAllowDeviceEventsReq;
+
+/*********************************************************
+ *
+ * GetDeviceFocus.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GetDeviceFocus      */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xGetDeviceFocusReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GetDeviceFocus      */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD32     focus B32;
+    Time       time B32;
+    CARD8      revertTo;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    } xGetDeviceFocusReply;
+
+/*********************************************************
+ *
+ * SetDeviceFocus.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_SetDeviceFocus      */
+    CARD16     length B16;
+    Window     focus B32;
+    Time       time B32;
+    CARD8      revertTo;
+    CARD8      device;
+    CARD16     pad01 B16;
+} xSetDeviceFocusReq;
+
+/*********************************************************
+ *
+ * GetFeedbackControl.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_GetFeedbackControl         */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xGetFeedbackControlReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GetFeedbackControl  */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD16     num_feedbacks B16;
+    CARD16     pad01 B16;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+    CARD32     pad06 B32;
+} xGetFeedbackControlReply;
+
+typedef struct {
+    CARD8      class;          /* feedback class               */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+} xFeedbackState;
+
+typedef struct {
+    CARD8   class;
+    CARD8   id;
+    CARD16  length B16;
+    CARD16  pitch B16;
+    CARD16  duration B16;
+    CARD32  led_mask B32;
+    CARD32  led_values B32;
+    BOOL    global_auto_repeat;
+    CARD8   click;
+    CARD8   percent;
+    BYTE    pad;
+    BYTE    auto_repeats[32];
+} xKbdFeedbackState;
+
+typedef struct {
+    CARD8   class;
+    CARD8   id;
+    CARD16  length B16;
+    CARD8   pad1,pad2;
+    CARD16  accelNum B16;
+    CARD16  accelDenom B16;
+    CARD16  threshold B16;
+} xPtrFeedbackState;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;
+    CARD16     length B16;     /* feedback length              */
+    CARD32     resolution B32;
+    INT32      min_value B32;
+    INT32      max_value B32;
+} xIntegerFeedbackState;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;
+    CARD16     length B16;     /* feedback length              */
+    CARD16     max_symbols B16;
+    CARD16     num_syms_supported B16;
+} xStringFeedbackState;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;
+    CARD16     length B16;     /* feedback length              */
+    CARD8      percent;
+    BYTE       pad1, pad2, pad3;
+    CARD16     pitch B16;
+    CARD16     duration B16;
+} xBellFeedbackState;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;
+    CARD16     length B16;     /* feedback length              */
+    CARD32     led_mask B32;
+    CARD32     led_values B32;
+} xLedFeedbackState;
+
+/*********************************************************
+ *
+ * ChangeFeedbackControl.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_ChangeFeedbackControl      */
+    CARD16     length B16;
+    CARD32     mask B32;
+    CARD8      deviceid;
+    CARD8      feedbackid;
+    BYTE       pad1, pad2;
+} xChangeFeedbackControlReq;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+} xFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback length              */
+    CARD16     length B16;     /* feedback length              */
+    KeyCode    key; 
+    CARD8      auto_repeat_mode;
+    INT8       click;
+    INT8       percent;
+    INT16      pitch B16;
+    INT16      duration B16;
+    CARD32     led_mask B32;
+    CARD32     led_values B32;
+} xKbdFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+    CARD8      pad1,pad2;
+    INT16      num B16;
+    INT16      denom B16;
+    INT16      thresh B16;
+} xPtrFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+    INT32      int_to_display B32;
+} xIntegerFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+    CARD8      pad1,pad2;
+    CARD16     num_keysyms B16;
+} xStringFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+    INT8       percent;
+    BYTE       pad1, pad2, pad3;
+    INT16      pitch B16;
+    INT16      duration B16;
+} xBellFeedbackCtl;
+
+typedef struct {
+    CARD8      class;          /* feedback class id            */
+    CARD8      id;             /* feedback id                  */
+    CARD16     length B16;     /* feedback length              */
+    CARD32     led_mask B32;
+    CARD32     led_values B32;
+} xLedFeedbackCtl;
+
+/*********************************************************
+ *
+ * GetDeviceKeyMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GetDeviceKeyMapping */
+    CARD16     length B16;
+    CARD8      deviceid;
+    KeyCode    firstKeyCode; 
+    CARD8      count;
+    BYTE       pad1;
+} xGetDeviceKeyMappingReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GetDeviceKeyMapping */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      keySymsPerKeyCode;
+    CARD8      pad0;
+    CARD16     pad1 B16;
+    CARD32     pad2 B32;
+    CARD32     pad3 B32;
+    CARD32     pad4 B32;
+    CARD32     pad5 B32;
+    CARD32     pad6 B32;
+} xGetDeviceKeyMappingReply;
+
+/*********************************************************
+ *
+ * ChangeDeviceKeyMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_ChangeDeviceKeyMapping */
+    CARD16     length B16;
+    CARD8      deviceid;
+    KeyCode    firstKeyCode;
+    CARD8      keySymsPerKeyCode;
+    CARD8      keyCodes;
+} xChangeDeviceKeyMappingReq;
+
+/*********************************************************
+ *
+ * GetDeviceModifierMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GetDeviceModifierMapping */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xGetDeviceModifierMappingReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply */
+    CARD8      RepType;        /* always X_GetDeviceModifierMapping */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      numKeyPerModifier;
+    CARD8      pad0;
+    CARD16     pad1 B16;
+    CARD32     pad2 B32;
+    CARD32     pad3 B32;
+    CARD32     pad4 B32;
+    CARD32     pad5 B32;
+    CARD32     pad6 B32;
+} xGetDeviceModifierMappingReply;
+
+/*********************************************************
+ *
+ * SetDeviceModifierMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_SetDeviceModifierMapping */
+    CARD16     length B16;
+    CARD8      deviceid;
+    CARD8      numKeyPerModifier;
+    CARD16     pad1 B16;
+} xSetDeviceModifierMappingReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply */
+    CARD8      RepType;        /* always X_SetDeviceModifierMapping */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      success;
+    CARD8      pad0;
+    CARD16     pad1 B16;
+    CARD32     pad2 B32;
+    CARD32     pad3 B32;
+    CARD32     pad4 B32;
+    CARD32     pad5 B32;
+    CARD32     pad6 B32;
+} xSetDeviceModifierMappingReply;
+
+/*********************************************************
+ *
+ * GetDeviceButtonMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_GetDeviceButtonMapping     */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xGetDeviceButtonMappingReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply */
+    CARD8      RepType;        /* always X_GetDeviceButtonMapping */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      nElts;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xGetDeviceButtonMappingReply;
+
+/*********************************************************
+ *
+ * SetDeviceButtonMapping.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* X_SetDeviceButtonMapping     */
+    CARD16     length B16;
+    CARD8      deviceid;
+    CARD8      map_length;
+    BYTE       pad1, pad2;
+} xSetDeviceButtonMappingReq;
+
+typedef struct {
+    CARD8      repType;                /* X_Reply */
+    CARD8      RepType;                /* always X_SetDeviceButtonMapping */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      status;
+    BYTE       pad0;
+    CARD16     pad1 B16;
+    CARD32     pad2 B32;
+    CARD32     pad3 B32;
+    CARD32     pad4 B32;
+    CARD32     pad5 B32;
+    CARD32     pad6 B32;
+} xSetDeviceButtonMappingReply;
+
+/*********************************************************
+ *
+ * QueryDeviceState.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;
+    CARD8      ReqType;        /* always X_QueryDeviceState */
+    CARD16     length B16;
+    CARD8      deviceid;
+    BYTE       pad1, pad2, pad3;
+} xQueryDeviceStateReq;
+
+typedef struct {
+    CARD8      repType;                /* X_Reply */
+    CARD8      RepType;                /* always X_QueryDeviceState    */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      num_classes;
+    BYTE       pad0;
+    CARD16     pad1 B16;
+    CARD32     pad2 B32;
+    CARD32     pad3 B32;
+    CARD32     pad4 B32;
+    CARD32     pad5 B32;
+    CARD32     pad6 B32;
+} xQueryDeviceStateReply;
+
+typedef struct {
+    CARD8      class;
+    CARD8      length;
+    CARD8      num_keys;
+    BYTE       pad1;
+    CARD8      keys[32];
+} xKeyState;
+
+typedef struct {
+    CARD8      class;
+    CARD8      length;
+    CARD8      num_buttons;
+    BYTE       pad1;
+    CARD8      buttons[32];
+} xButtonState;
+
+typedef struct {
+    CARD8      class;
+    CARD8      length;
+    CARD8      num_valuators;
+    CARD8      mode;
+} xValuatorState;
+
+/*********************************************************
+ *
+ * SendExtensionEvent.
+ * THIS REQUEST MUST BE KEPT A MULTIPLE OF 8 BYTES IN LENGTH!
+ * MORE EVENTS MAY FOLLOW AND THEY MUST BE QUAD-ALIGNED!
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;
+    CARD8      ReqType;        /* always X_SendExtensionEvent */
+    CARD16     length B16;
+    Window     destination B32;
+    CARD8      deviceid;
+    BOOL       propagate;
+    CARD16     count B16;
+    CARD8      num_events;
+    BYTE       pad1,pad2,pad3;
+} xSendExtensionEventReq;
+
+/*********************************************************
+ *
+ * DeviceBell.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;
+    CARD8      ReqType;        /* always X_DeviceBell */
+    CARD16     length B16;
+    CARD8      deviceid;
+    CARD8      feedbackid;
+    CARD8      feedbackclass;
+    INT8       percent;
+} xDeviceBellReq;
+
+/*********************************************************
+ *
+ * SetDeviceValuators.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_SetDeviceValuators  */
+    CARD16     length B16;
+    CARD8       deviceid;
+    CARD8       first_valuator;
+    CARD8       num_valuators;
+    BYTE       pad1;
+} xSetDeviceValuatorsReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_SetDeviceValuators  */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xSetDeviceValuatorsReply;
+
+/*********************************************************
+ *
+ * GetDeviceControl.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_GetDeviceControl    */
+    CARD16     length B16;
+    CARD16      control B16;
+    CARD8       deviceid;
+    BYTE       pad2;
+} xGetDeviceControlReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_GetDeviceControl    */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xGetDeviceControlReply;
+
+typedef struct {
+    CARD16     control B16;    /* control type                 */
+    CARD16     length B16;     /* control length               */
+} xDeviceState;
+
+typedef struct {
+    CARD16     control B16;            /* control type                 */
+    CARD16     length B16;             /* control length               */
+    CARD32     num_valuators B32;      /* number of valuators          */
+} xDeviceResolutionState;
+
+/*********************************************************
+ *
+ * ChangeDeviceControl.
+ *
+ */
+
+typedef struct {
+    CARD8      reqType;        /* input extension major code   */
+    CARD8      ReqType;        /* always X_ChangeDeviceControl */
+    CARD16     length B16;
+    CARD16      control B16;
+    CARD8       deviceid;
+    BYTE        pad0;
+} xChangeDeviceControlReq;
+
+typedef struct {
+    CARD8      repType;        /* X_Reply                      */
+    CARD8      RepType;        /* always X_ChangeDeviceControl */
+    CARD16     sequenceNumber B16;
+    CARD32     length B32;
+    CARD8      status;
+    BYTE       pad1, pad2, pad3;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    CARD32     pad05 B32;
+} xChangeDeviceControlReply;
+
+typedef struct {
+    CARD16     control B16;    /* control type                 */
+    CARD16     length B16;     /* control length               */
+} xDeviceCtl;
+
+typedef struct {
+    CARD16     control B16;            /* control type                 */
+    CARD16     length B16;             /* control length               */
+    CARD8      first_valuator;         /* first valuator to change     */
+    CARD8      num_valuators;          /* number of valuators to change*/
+    CARD8      pad1,pad2;
+} xDeviceResolutionCtl;
+
+/**********************************************************
+ *
+ * Input extension events.
+ *
+ * DeviceValuator
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    CARD8       deviceid;
+    CARD16     sequenceNumber B16;
+    KeyButMask  device_state B16;
+    CARD8      num_valuators;
+    CARD8       first_valuator;
+    INT32      valuator0 B32;
+    INT32      valuator1 B32;
+    INT32      valuator2 B32;
+    INT32      valuator3 B32;
+    INT32      valuator4 B32;
+    INT32      valuator5 B32;
+    }  deviceValuator;
+
+/**********************************************************
+ *
+ * DeviceKeyButtonPointer.
+ *
+ * Used for: DeviceKeyPress, DeviceKeyRelease,
+ *          DeviceButtonPress, DeviceButtonRelease,
+ *          ProximityIn, ProximityOut
+ *          DeviceMotionNotify,
+ * 
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        detail;
+    CARD16     sequenceNumber B16;
+    Time        time B32;
+    Window      root B32;
+    Window      event B32;
+    Window      child B32;
+    INT16       root_x B16;
+    INT16       root_y B16;
+    INT16       event_x B16;
+    INT16       event_y B16;
+    KeyButMask  state B16;
+    BOOL        same_screen;
+    CARD8       deviceid;
+    }  deviceKeyButtonPointer;
+
+/**********************************************************
+ *
+ * DeviceFocus.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        detail;
+    CARD16     sequenceNumber B16;
+    Time        time B32;
+    Window      window B32;
+    BYTE       mode;
+    CARD8       deviceid;
+    BYTE       pad1, pad2;
+    CARD32     pad00 B32;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    }  deviceFocus;
+
+/**********************************************************
+ *
+ * DeviceStateNotify.
+ *
+ * Note that the two high-order bits in the classes_reported
+ * field are the proximity state (InProximity or OutOfProximity),
+ * and the device mode (Absolute or Relative), respectively.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        deviceid;
+    CARD16     sequenceNumber B16;
+    Time        time B32;
+    CARD8      num_keys;
+    CARD8      num_buttons;
+    CARD8      num_valuators;
+    CARD8       classes_reported;
+    CARD8       buttons[4];
+    CARD8       keys[4];
+    INT32      valuator0 B32;
+    INT32      valuator1 B32;
+    INT32      valuator2 B32;
+    }  deviceStateNotify;
+
+/**********************************************************
+ *
+ * DeviceKeyStateNotify.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        deviceid;
+    CARD16     sequenceNumber B16;
+    CARD8       keys[28];
+    }  deviceKeyStateNotify;
+
+/**********************************************************
+ *
+ * DeviceButtonStateNotify.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        deviceid;
+    CARD16     sequenceNumber B16;
+    CARD8       buttons[28];
+    }  deviceButtonStateNotify;
+
+/**********************************************************
+ *
+ * DeviceMappingNotify.
+ * Fields must be kept in sync with core mappingnotify event.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        deviceid;
+    CARD16     sequenceNumber B16;
+    CARD8       request;
+    KeyCode     firstKeyCode;
+    CARD8       count;
+    BYTE        pad1;
+    Time        time B32;
+    CARD32     pad00 B32;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    }  deviceMappingNotify;
+
+/**********************************************************
+ *
+ * ChangeDeviceNotify.
+ *
+ */
+
+typedef struct
+    {
+    BYTE       type;
+    BYTE        deviceid;
+    CARD16     sequenceNumber B16;
+    Time        time B32;
+    CARD8       request;
+    BYTE        pad1, pad2, pad3;
+    CARD32     pad00 B32;
+    CARD32     pad01 B32;
+    CARD32     pad02 B32;
+    CARD32     pad03 B32;
+    CARD32     pad04 B32;
+    }  changeDeviceNotify;
+
+#undef Window
+#undef Time
+#undef KeyCode
+
+#endif