github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xcb/include/X11/extensions/recordproto.h (about) 1 /*************************************************************************** 2 * Copyright 1995 Network Computing Devices 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and 5 * its documentation for any purpose is hereby granted without fee, provided 6 * that the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Network Computing Devices 9 * not be used in advertising or publicity pertaining to distribution 10 * of the software without specific, written prior permission. 11 * 12 * NETWORK COMPUTING DEVICES DISCLAIMs ALL WARRANTIES WITH REGARD TO 13 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 14 * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE 15 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 17 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 18 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 **************************************************************************/ 20 21 #ifndef _RECORDPROTO_H_ 22 #define _RECORDPROTO_H_ 23 24 #include <X11/extensions/recordconst.h> 25 26 /* only difference between 1.12 and 1.13 is byte order of device events, 27 which the library doesn't deal with. */ 28 29 /********************************************************* 30 * 31 * Protocol request constants 32 * 33 */ 34 #define X_RecordQueryVersion 0 /* First request from client */ 35 #define X_RecordCreateContext 1 /* Create client RC */ 36 #define X_RecordRegisterClients 2 /* Add to client RC */ 37 #define X_RecordUnregisterClients 3 /* Delete from client RC */ 38 #define X_RecordGetContext 4 /* Query client RC */ 39 #define X_RecordEnableContext 5 /* Enable interception and reporting */ 40 #define X_RecordDisableContext 6 /* Disable interception and reporting */ 41 #define X_RecordFreeContext 7 /* Free client RC */ 42 43 #define sz_XRecordRange 32 44 #define sz_XRecordClientInfo 12 45 #define sz_XRecordState 16 46 #define sz_XRecordDatum 32 47 48 49 #define XRecordGlobaldef 50 #define XRecordGlobalref extern 51 52 #define RecordMaxEvent (128L-1L) 53 #define RecordMinDeviceEvent (2L) 54 #define RecordMaxDeviceEvent (6L) 55 #define RecordMaxError (256L-1L) 56 #define RecordMaxCoreRequest (128L-1L) 57 #define RecordMaxExtRequest (256L-1L) 58 #define RecordMinExtRequest (129L-1L) 59 60 #define RECORD_RC CARD32 61 #define RECORD_XIDBASE CARD32 62 #define RECORD_CLIENTSPEC CARD32 63 #define RECORD_ELEMENT_HEADER CARD8 64 65 typedef RECORD_CLIENTSPEC RecordClientSpec, *RecordClientSpecPtr; 66 67 typedef struct 68 { 69 CARD8 first; 70 CARD8 last; 71 } RECORD_RANGE8; 72 73 typedef struct 74 { 75 CARD16 first; 76 CARD16 last; 77 } RECORD_RANGE16; 78 79 typedef struct 80 { 81 RECORD_RANGE8 majorCode; 82 RECORD_RANGE16 minorCode; 83 } RECORD_EXTRANGE; 84 85 typedef struct 86 { 87 RECORD_RANGE8 coreRequests; 88 RECORD_RANGE8 coreReplies; 89 RECORD_EXTRANGE extRequests; 90 RECORD_EXTRANGE extReplies; 91 RECORD_RANGE8 deliveredEvents; 92 RECORD_RANGE8 deviceEvents; 93 RECORD_RANGE8 errors; 94 BOOL clientStarted; 95 BOOL clientDied; 96 } RECORDRANGE; 97 #define sz_RECORDRANGE 24 98 99 /* typedef RECORDRANGE xRecordRange, *xRecordRangePtr; 100 #define sz_xRecordRange 24 */ 101 102 /* Cannot have structures within structures going over the wire */ 103 typedef struct 104 { 105 CARD8 coreRequestsFirst; 106 CARD8 coreRequestsLast; 107 CARD8 coreRepliesFirst; 108 CARD8 coreRepliesLast; 109 CARD8 extRequestsMajorFirst; 110 CARD8 extRequestsMajorLast; 111 CARD16 extRequestsMinorFirst; 112 CARD16 extRequestsMinorLast; 113 CARD8 extRepliesMajorFirst; 114 CARD8 extRepliesMajorLast; 115 CARD16 extRepliesMinorFirst; 116 CARD16 extRepliesMinorLast; 117 CARD8 deliveredEventsFirst; 118 CARD8 deliveredEventsLast; 119 CARD8 deviceEventsFirst; 120 CARD8 deviceEventsLast; 121 CARD8 errorsFirst; 122 CARD8 errorsLast; 123 BOOL clientStarted; 124 BOOL clientDied; 125 } xRecordRange; 126 #define sz_xRecordRange 24 127 128 typedef struct 129 { 130 RECORD_CLIENTSPEC clientResource; 131 CARD32 nRanges; 132 /* LISTofRECORDRANGE */ 133 } RECORD_CLIENT_INFO; 134 135 typedef RECORD_CLIENT_INFO xRecordClientInfo; 136 137 /* 138 * Initialize 139 */ 140 typedef struct { 141 CARD8 reqType; 142 CARD8 recordReqType; 143 CARD16 length; 144 CARD16 majorVersion; 145 CARD16 minorVersion; 146 } xRecordQueryVersionReq; 147 #define sz_xRecordQueryVersionReq 8 148 149 typedef struct 150 { 151 CARD8 type; 152 CARD8 pad0; 153 CARD16 sequenceNumber; 154 CARD32 length; 155 CARD16 majorVersion; 156 CARD16 minorVersion; 157 CARD32 pad1; 158 CARD32 pad2; 159 CARD32 pad3; 160 CARD32 pad4; 161 CARD32 pad5; 162 } xRecordQueryVersionReply; 163 #define sz_xRecordQueryVersionReply 32 164 165 /* 166 * Create RC 167 */ 168 typedef struct 169 { 170 CARD8 reqType; 171 CARD8 recordReqType; 172 CARD16 length; 173 RECORD_RC context; 174 RECORD_ELEMENT_HEADER elementHeader; 175 CARD8 pad; 176 CARD16 pad0; 177 CARD32 nClients; 178 CARD32 nRanges; 179 /* LISTofRECORD_CLIENTSPEC */ 180 /* LISTofRECORDRANGE */ 181 } xRecordCreateContextReq; 182 #define sz_xRecordCreateContextReq 20 183 184 /* 185 * Add to RC 186 */ 187 typedef struct 188 { 189 CARD8 reqType; 190 CARD8 recordReqType; 191 CARD16 length; 192 RECORD_RC context; 193 RECORD_ELEMENT_HEADER elementHeader; 194 CARD8 pad; 195 CARD16 pad0; 196 CARD32 nClients; 197 CARD32 nRanges; 198 /* LISTofRECORD_CLIENTSPEC */ 199 /* LISTofRECORDRANGE */ 200 } xRecordRegisterClientsReq; 201 #define sz_xRecordRegisterClientsReq 20 202 203 /* 204 * Delete from RC 205 */ 206 typedef struct 207 { 208 CARD8 reqType; 209 CARD8 recordReqType; 210 CARD16 length; 211 RECORD_RC context; 212 CARD32 nClients; 213 /* LISTofRECORD_CLIENTSPEC */ 214 } xRecordUnregisterClientsReq; 215 #define sz_xRecordUnregisterClientsReq 12 216 217 /* 218 * Query RC 219 */ 220 typedef struct 221 { 222 CARD8 reqType; 223 CARD8 recordReqType; 224 CARD16 length; 225 RECORD_RC context; 226 } xRecordGetContextReq; 227 #define sz_xRecordGetContextReq 8 228 229 typedef struct 230 { 231 CARD8 type; 232 BOOL enabled; 233 CARD16 sequenceNumber; 234 CARD32 length; 235 RECORD_ELEMENT_HEADER elementHeader; 236 CARD8 pad; 237 CARD16 pad0; 238 CARD32 nClients; 239 CARD32 pad1; 240 CARD32 pad2; 241 CARD32 pad3; 242 CARD32 pad4; 243 /* LISTofCLIENT_INFO */ /* intercepted-clients */ 244 } xRecordGetContextReply; 245 #define sz_xRecordGetContextReply 32 246 247 /* 248 * Enable data interception 249 */ 250 typedef struct 251 { 252 CARD8 reqType; 253 CARD8 recordReqType; 254 CARD16 length; 255 RECORD_RC context; 256 } xRecordEnableContextReq; 257 #define sz_xRecordEnableContextReq 8 258 259 typedef struct 260 { 261 CARD8 type; 262 CARD8 category; 263 CARD16 sequenceNumber; 264 CARD32 length; 265 RECORD_ELEMENT_HEADER elementHeader; 266 BOOL clientSwapped; 267 CARD16 pad1; 268 RECORD_XIDBASE idBase; 269 CARD32 serverTime; 270 CARD32 recordedSequenceNumber; 271 CARD32 pad3; 272 CARD32 pad4; 273 /* BYTE data; */ 274 } xRecordEnableContextReply; 275 #define sz_xRecordEnableContextReply 32 276 277 /* 278 * Disable data interception 279 */ 280 typedef struct 281 { 282 CARD8 reqType; 283 CARD8 recordReqType; 284 CARD16 length; 285 RECORD_RC context; 286 } xRecordDisableContextReq; 287 #define sz_xRecordDisableContextReq 8 288 289 /* 290 * Free RC 291 */ 292 typedef struct 293 { 294 CARD8 reqType; 295 CARD8 recordReqType; 296 CARD16 length; 297 RECORD_RC context; 298 } xRecordFreeContextReq; 299 #define sz_xRecordFreeContextReq 8 300 301 #undef RECORD_RC 302 #undef RECORD_XIDBASE 303 #undef RECORD_ELEMENT_HEADER 304 #undef RECORD_CLIENTSPEC 305 306 #endif