74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* $XFree86: xc/include/extensions/xtrapdi.h,v 1.1 2001/11/02 23:29:26 dawes Exp $ */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*****************************************************************************
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncCopyright 1987, 1988, 1989, 1990, 1991, 1992, 1994 by Digital Equipment Corp.,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncPermission to use, copy, modify, and distribute this software and its
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncdocumentation for any purpose and without fee is hereby granted,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncprovided that the above copyright notice appear in all copies and that
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncboth that copyright notice and this permission notice appear in
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncsupporting documentation, and that the name of Digital not be
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncused in advertising or publicity pertaining to distribution of the
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncsoftware without specific, written prior permission.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync*****************************************************************************/
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * CONTRIBUTORS:
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Dick Annicchiarico
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Robert Chesler
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Dan Coutu
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Gene Durso
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Marc Evans
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Alan Jamison
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Mark Henry
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Ken Miller
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * DESCRIPTION:
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This header file defines the common structures/constants
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * between the XTrap extension and clients. All protocol
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * definitions between XTrap extension/clients can be found
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Current Release, Version, and Revision of the XTrap Extension */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#ifndef XETrapRevision /* Changed from the Makefile by users */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif /* XETrapRevision */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync# endif /* if ANSI C compiler else not */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* This is used as flags to indicate desired request traps
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Note: This has been padded to a CARD32 to keep structure aligned
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapMaxRequest (((SIZEOF(CARD32)+((256L-1L) / \
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync (BitsInByte*SIZEOF(CARD8))))/SIZEOF(CARD32))*SIZEOF(CARD32))
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* This is used as flags to indicate desired event traps
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Until events become *fully vectored*, we'll have to fake it
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * by defining an array of 5 events (KeyPress, KeyRelease,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * ButtonPress, ButtonRelease, and MotionNotify. The extra 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * are required as the event types start with "2" (errors and
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * replies are 0 & 1). The event type is the index into the
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Note: This has been padded to a longword to keep structure aligned
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapMaxEvent (((SIZEOF(CARD32)+((XETrapCoreEvents-1L) / \
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync (BitsInByte*SIZEOF(CARD8))))/SIZEOF(CARD32))*SIZEOF(CARD32))
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* This structure is used in a request to specify the types of
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * configuration information that should be changed or updated.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 valid[4L]; /* Bits TRUE indicates data field is used */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 data[4L]; /* Bits looked at if corresponding valid bit set */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync ReqFlags req; /* Bits coorespond to core requests */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync EventFlags event; /* Bits correspond to core events */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Bit definitions for the above XETrapFlags structure. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapTimestamp 0L /* hdr timestamps desired */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapCmdKeyMod 2L /* cmd key is a modifier */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapRequest 3L /* output requests array */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapEvent 4L /* future output events array */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapMaxPacket 5L /* Maximum packet length set */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapStatistics 7L /* collect counts on requests */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapWinXY 8L /* Fill in Window (X,Y) in hdr */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapCursor 10L /* Trap cursor state changes */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapVectorEvents 12L /* Use Vectored Events (128) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapColorReplies 13L /* Return replies with Color Req's */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapGrabServer 14L /* Disables client GrabServers */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct /* used by XEConfigRequest */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XETrapFlags flags; /* Flags to specify what should be chg'd */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 max_pkt_size B16; /* Maximum number of bytes in a packet */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 cmd_key; /* Keyboard command_key (KeyCode) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * cmd_key is intentionally *not* defined KeyCode since it's definition is
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * ambiguous (int in Intrinsic.h and unsigned char in X.h.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* These structures are used within the Xtrap request structure for
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * the various types of xtrap request
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* (see the definition of XEvent as a reference) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct /* used by XESimulateXEventRequest for synthesizing core evts */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 detail; /* Detail keycode/button as in XEvent */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* These are constants that refer to the extension request vector table.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * A request will use these values as minor opcodes.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_GetAvailable 1L /* get available funct from ext */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_StopTrap 4L /* stop using Trapping */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_GetCurrent 5L /* get current info from ext */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_GetStatistics 6L /* get count statistics from ext */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_SimulateXEvent 7L /* async input simulation */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_GetVersion 8L /* Get (Just) Version */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrap_GetLastInpTime 9L /* Get Timestamp of last client input */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* The following are formats of a request to the XTRAP
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * extension. The data-less XTrap requests all use xXTrapReq
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* For retrieving version/available info (passes lib-side protocol number) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 protocol B16; /* The xtrap extension protocol number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * The follwing is done so that structure padding wont be
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * a problem. The request structure contains a shadow for
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * the XETrapCfg structure. Since the XETrapCfg also has a
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * substructure (XETrapFlags) this structure is also shadowed.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * The following are a shadow of the XETrapFlags
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * structure.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /* End Shadow (XETrapFlags)*/
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 config_max_pkt_size B16; /* Max number of bytes in a packet */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 config_cmd_key; /* Keyboard command_key (KeyCode) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * cmd_key is intentionally *not* defined KeyCode since it's definition is
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * ambiguous (int in Intrinsic.h and unsigned char in X.h.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /* End Shadow (XETrapCfg) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_xXTrapConfigReq (sizeof(xXTrapConfigReq))
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* The following structures are used by the server extension to send
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * information and replies to the client.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* header for all X replies */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Structure of Get Available Functionality reply */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 pf_ident B32; /* Contains constant identifying the platform */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_release B16; /* The xtrap extension release number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_version B16; /* The xtrap extension version number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_revision B16; /* The xtrap extension revision number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 max_pkt_size B16; /* Maximum number of bytes in a packet */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 valid[4]; /* What specific configuration flags are valid */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 major_opcode B32; /* The major opcode identifying xtrap */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 event_base B32; /* The event value we start at */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 pad1 B16, pad2 B16, pad3 B16; /* obsolete field */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_protocol B16; /* The xtrap extension protocol number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync INT16 cur_x B16; /* Current X & Y coord for relative motion */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_release B16; /* The xtrap extension release number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_version B16; /* The xtrap extension version number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_revision B16; /* The xtrap extension revision number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 xtrap_protocol B16; /* The xtrap extension protocol number */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 last_time B32; /* Timestamp of last input time */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Structure of Get Current Configuration Information reply */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 state_flags[2]; /* Miscelaneous flags, see below #define's */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Mask definitions for the above flags. */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapTrapActive 0L /* If sending/receiving between client/ext */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Structure of Get Statistics Information reply */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 requests[256L]; /* Array containing request counts if trapped */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 events[XETrapCoreEvents]; /* Array containing event stats */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_Other 0L /* server not one of the below */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECUltrix 40L /* server on DEC ULTRIX system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECVMS 41L /* server on DEC VMS system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECVT1000 42L /* server on DEC-VT1000-terminal */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECXTerm 43L /* server on DEC-X-terminal */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECELN 44L /* server on DEC VAXELN X terminal */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_DECOSF1 45L /* server on DEC's OSF/1 system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_HP9000s800 50L /* server on HP 9000/800 system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_HP9000s300 51L /* server on HP 9000/300 system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_IBMPS2 62L /* server on IBM/PS2 system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_Pegasus 80L /* server on Tektronix Pegasus system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_SGI 90L /* server on Silicon Graphcis system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_Sun386i 111L /* server on Sun 386i system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define PF_SunSparc 112L /* server on Sun Sparc system */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* reply sent back by XETrapGetAvailable request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_xXTrapGetAvailReply sizeof(xXTrapGetAvailReply)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* reply sent back by XETrapGetVersion request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_xXTrapGetVersReply sizeof(xXTrapGetVersReply)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* reply sent back by XETrapGetLastInpTime request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * The following is a shadow of the XETrapGetLastInpTimeRep
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * structure. This is done to avoid structure padding.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 data_last_time B32; /* Timestamp of last input time */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_xXTrapGetLITimReply sizeof(xXTrapGetLITimReply)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* reply sent back by XETrapGetCurrent request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * The following is a shadow of the XETrapGetCurRep
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * structure. This is done to avoid structure padding.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Since the XETrapGetCurRep structure contains a sub-structure
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * (XETrapCfg) there is a shadow for that as well.*/
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 data_state_flags[2]; /* Misc flags, see below #define's */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 data_pad0 B16; /* Assure quadword alignment */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /* XETrapCfg Shadow Starts */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD16 data_config_max_pkt_size B16; /* Max num of bytes in a pkt */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 data_config_cmd_key; /* Keyboard cmd_key (KeyCode) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * cmd_key is intentionally *not* defined KeyCode since it's definition is
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * ambiguous (int in Intrinsic.h and unsigned char in X.h.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD8 data_config_pad[1L]; /* pad out to a quadword */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /* End Shadow (XETrapCfg) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_xXTrapGetCurReply sizeof(xXTrapGetCurReply)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* reply sent back by XETrapGetStatistics request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * The following does *not* use the standard XETrapRepHdr, but instead
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * one which is padded out to 32-bytes. This is because Cray's have a problem
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * reading arrays of CARD32s without using the _Read32 macro (see XERqsts.c).
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * This requires that none of the data be in the _Reply area.
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct /* the XTrap Output header (for output from ext to client) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync{ /* this must be quadword aligned for portability */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync CARD32 count B32; /* Length including this header */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* the following works because all fields are defined as bit (Bnn) fields */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapHeaderIsEvent(phdr) (XETrapGetHeaderType(phdr) == 0x1L)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapHeaderIsRequest(phdr) (XETrapGetHeaderType(phdr) == 0x2L)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapHeaderIsSpecial(phdr) (XETrapGetHeaderType(phdr) == 0x3L)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapHeaderIsCursor(phdr) (XETrapGetHeaderType(phdr) == 0x4L)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapHeaderIsReply(phdr) (XETrapGetHeaderType(phdr) == 0x5L)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Define a structure used for reading/writing datum of type XTrap */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync /* special? */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* this doesn't get picked up for VMS server builds (different Xproto.h) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Minimum size of a packet from the server extension */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapMinPktSize (SIZEOF(XETrapHeader) + SIZEOF(xEvent))
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Constants used with the XLIB transport */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapDataStart 0L /* Used in the detail field */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapDataContinued 1L /* Used in the detail field */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XETrapDataLast 2L /* Used in the detail field */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* This is the representation on the wire(see also XLib.h) */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define sz_EventData 24L /* 32 bytes - type, detail, seq, index */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Error message indexes added to X for extension */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define BadScreen 7L /* Can't send event to given screen */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define BadSwapReq 8L /* Can't send swapped extension requests */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif /* __XTRAPDI__ */