|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /****************************************************************************** ! 23: event.h (PostScript side version) ! 24: ! 25: CONFIDENTIAL ! 26: Copyright (c) 1988 NeXT, Inc. as an unpublished work. ! 27: All Rights Reserved. ! 28: ! 29: Created Leo 01Mar88 ! 30: ! 31: Modified: ! 32: 04May88 Leo Final event types and record ! 33: 22Aug88 Leo Change short -> int for window, add reserved ! 34: 26May90 Ted Added NX_UNDIMMASK to correct triggering of UndoAutoDim ! 35: 12Dec91 Mike Brought into sync with dpsclient/event.h, and fixed ! 36: the #ifndef interlock with dpsclient/event.h that was ! 37: broken during the Great Header Revision. ! 38: ! 39: The PostScript version of this file differs from the ! 40: Window Kit version in that the coordinates here are ! 41: ints instead of floats. ! 42: ******************************************************************************/ ! 43: ! 44: #ifndef _DEV_EVENT_H ! 45: #define _DEV_EVENT_H ! 46: ! 47: #include <libkern/OSTypes.h> ! 48: #include <IOKit/hidsystem/IOHIDTypes.h> ! 49: ! 50: #ifdef EVENT_H /* Interlock with dpsclient/event.h */ ! 51: #if !defined(_NXSIZE_) /* Work around patch for old event.h in Phase 3 projs*/ ! 52: #define _NXSIZE_ 1 /* NXCoord, NXPoint, NXSize decl seen */ ! 53: #define _NXSize_ NXSize ! 54: #endif /* _NXSIZE_ */ ! 55: #else /* EVENT_H */ /* Haven't seen dpsclient/event.h, so define away */ ! 56: #define EVENT_H ! 57: ! 58: #ifdef KERNEL ! 59: #else /* KERNEL */ ! 60: ! 61: #if !defined(_NXSIZE_) /* Work around patch for old event.h in Phase 3 projs*/ ! 62: #define _NXSIZE_ 1 /* NXCoord, NXPoint, NXSize decl seen */ ! 63: typedef float NXCoord; ! 64: ! 65: typedef struct _NXPoint { /* point */ ! 66: NXCoord x, y; ! 67: } NXPoint; ! 68: ! 69: typedef struct _NXSize { /* size */ ! 70: NXCoord width, height; ! 71: } NXSize; ! 72: #define _NXSize_ NXSize /* Correct usage in event_status_driver.h */ ! 73: #endif /* _NXSIZE_ */ ! 74: ! 75: #endif /* KERNEL */ ! 76: ! 77: /* Event types */ ! 78: ! 79: #define NX_NULLEVENT 0 /* internal use */ ! 80: ! 81: /* mouse events */ ! 82: ! 83: #define NX_LMOUSEDOWN 1 /* left mouse-down event */ ! 84: #define NX_LMOUSEUP 2 /* left mouse-up event */ ! 85: #define NX_RMOUSEDOWN 3 /* right mouse-down event */ ! 86: #define NX_RMOUSEUP 4 /* right mouse-up event */ ! 87: #define NX_MOUSEMOVED 5 /* mouse-moved event */ ! 88: #define NX_LMOUSEDRAGGED 6 /* left mouse-dragged event */ ! 89: #define NX_RMOUSEDRAGGED 7 /* right mouse-dragged event */ ! 90: #define NX_MOUSEENTERED 8 /* mouse-entered event */ ! 91: #define NX_MOUSEEXITED 9 /* mouse-exited event */ ! 92: ! 93: /* keyboard events */ ! 94: ! 95: #define NX_KEYDOWN 10 /* key-down event */ ! 96: #define NX_KEYUP 11 /* key-up event */ ! 97: #define NX_FLAGSCHANGED 12 /* flags-changed event */ ! 98: ! 99: /* composite events */ ! 100: ! 101: #define NX_KITDEFINED 13 /* application-kit-defined event */ ! 102: #define NX_SYSDEFINED 14 /* system-defined event */ ! 103: #define NX_APPDEFINED 15 /* application-defined event */ ! 104: /* There are additional DPS client defined events past this point. */ ! 105: ! 106: /* Scroll wheel events */ ! 107: ! 108: #define NX_SCROLLWHEELMOVED 22 ! 109: ! 110: /* tablet events */ ! 111: ! 112: #define NX_TABLETPOINTER 23 ! 113: #define NX_TABLETPROXIMITY 24 ! 114: ! 115: #define NX_FIRSTEVENT 0 ! 116: #define NX_LASTEVENT 24 ! 117: #define NX_NUMPROCS (NX_LASTEVENT-NX_FIRSTEVENT+1) ! 118: ! 119: /* Event masks */ ! 120: ! 121: #define NX_LMOUSEDOWNMASK (1 << NX_LMOUSEDOWN) /* left mouse-down */ ! 122: #define NX_LMOUSEUPMASK (1 << NX_LMOUSEUP) /* left mouse-up */ ! 123: #define NX_RMOUSEDOWNMASK (1 << NX_RMOUSEDOWN) /* right mouse-down */ ! 124: #define NX_RMOUSEUPMASK (1 << NX_RMOUSEUP) /* right mouse-up */ ! 125: #define NX_MOUSEMOVEDMASK (1 << NX_MOUSEMOVED) /* mouse-moved */ ! 126: #define NX_LMOUSEDRAGGEDMASK (1 << NX_LMOUSEDRAGGED) /* left-dragged */ ! 127: #define NX_RMOUSEDRAGGEDMASK (1 << NX_RMOUSEDRAGGED) /* right-dragged */ ! 128: #define NX_MOUSEENTEREDMASK (1 << NX_MOUSEENTERED) /* mouse-entered */ ! 129: #define NX_MOUSEEXITEDMASK (1 << NX_MOUSEEXITED) /* mouse-exited */ ! 130: #define NX_KEYDOWNMASK (1 << NX_KEYDOWN) /* key-down */ ! 131: #define NX_KEYUPMASK (1 << NX_KEYUP) /* key-up */ ! 132: #define NX_FLAGSCHANGEDMASK (1 << NX_FLAGSCHANGED) /* flags-changed */ ! 133: #define NX_KITDEFINEDMASK (1 << NX_WINCHANGED) /* kit-defined */ ! 134: #define NX_SYSDEFINEDMASK (1 << NX_SYSDEFINED) /* system-defined */ ! 135: #define NX_APPDEFINEDMASK (1 << NX_APPDEFINED) /* app-defined */ ! 136: #define NX_SCROLLWHEELMOVEDMASK (1 << NX_SCROLLWHEELMOVED) /* scroll wheel moved */ ! 137: #define NX_TABLETPOINTERMASK (1 << NX_TABLETPOINTER) /* tablet pointer moved */ ! 138: #define NX_TABLETPROXIMITYMASK (1 << NX_TABLETPROXIMITY) /* tablet pointer proximity */ ! 139: ! 140: #define EventCodeMask(type) (1 << (type)) ! 141: #define NX_ALLEVENTS -1 /* Check for all events */ ! 142: ! 143: ! 144: /* Masks for the bits in event.flags */ ! 145: ! 146: /* device-independent */ ! 147: ! 148: #define NX_ALPHASHIFTMASK 0x00010000 ! 149: #define NX_SHIFTMASK 0x00020000 ! 150: #define NX_CONTROLMASK 0x00040000 ! 151: #define NX_ALTERNATEMASK 0x00080000 ! 152: #define NX_COMMANDMASK 0x00100000 ! 153: #define NX_NUMERICPADMASK 0x00200000 ! 154: #define NX_HELPMASK 0x00400000 ! 155: ! 156: /* device-dependent (really?) */ ! 157: ! 158: //#define NX_NEXTCTLKEYMASK 0x00000001 ! 159: //#define NX_NEXTLSHIFTKEYMASK 0x00000002 ! 160: //#define NX_NEXTRSHIFTKEYMASK 0x00000004 ! 161: //#define NX_NEXTLCMDKEYMASK 0x00000008 ! 162: //#define NX_NEXTRCMDKEYMASK 0x00000010 ! 163: //#define NX_NEXTLALTKEYMASK 0x00000020 ! 164: //#define NX_NEXTRALTKEYMASK 0x00000040 ! 165: ! 166: /* ! 167: * Additional reserved bits in event.flags ! 168: */ ! 169: ! 170: #define NX_STYLUSPROXIMITYMASK 0x00000080 ! 171: #define NX_NONCOALSESCEDMASK 0x00000100 ! 172: ! 173: /* click state values ! 174: * If you have the following events in close succession, the click ! 175: * field has the indicated value: ! 176: * ! 177: * Event Click Value Comments ! 178: * mouse-down 1 Not part of any click yet ! 179: * mouse-up 1 Aha! A click! ! 180: * mouse-down 2 Doing a double-click ! 181: * mouse-up 2 It's finished ! 182: * mouse-down 3 A triple ! 183: * mouse-up 3 ! 184: */ ! 185: ! 186: /* Values for the character set in event.data.key.charSet */ ! 187: ! 188: #define NX_ASCIISET 0 ! 189: #define NX_SYMBOLSET 1 ! 190: #define NX_DINGBATSSET 2 ! 191: ! 192: /* EventData type: defines the data field of an event */ ! 193: ! 194: #if EVENT_SYSTEM_VERSION > 1 /****** EVENT_SYSTEM_VERSION > 1 ******/ ! 195: ! 196: typedef union { ! 197: struct { /* For mouse-down and mouse-up events */ ! 198: unsigned char subx; /* sub-pixel position for x */ ! 199: unsigned char suby; /* sub-pixel position for y */ ! 200: short eventNum; /* unique identifier for this button */ ! 201: int click; /* click state of this event */ ! 202: unsigned char pressure; /* pressure value: 0=none, 255=full */ ! 203: char reserved1; ! 204: short reserved2; ! 205: int reserved3; ! 206: int reserved4; ! 207: int reserved5; ! 208: int reserved6; ! 209: int reserved7; ! 210: } mouse; ! 211: struct { ! 212: int dx; ! 213: int dy; ! 214: int reserved1; ! 215: int reserved2; ! 216: int reserved3; ! 217: int reserved4; ! 218: int reserved5; ! 219: int reserved6; ! 220: } mouseMove; ! 221: struct { /* For key-down and key-up events */ ! 222: unsigned short origCharSet; /* unmodified character set code */ ! 223: short repeat; /* for key-down: nonzero if really a repeat */ ! 224: unsigned short charSet; /* character set code */ ! 225: unsigned short charCode; /* character code in that set */ ! 226: unsigned short keyCode; /* device-dependent key number */ ! 227: unsigned short origCharCode; /* unmodified character code */ ! 228: int reserved1; ! 229: int reserved2; ! 230: int reserved3; ! 231: int reserved4; ! 232: int reserved5; ! 233: } key; ! 234: struct { /* For mouse-entered and mouse-exited events */ ! 235: short reserved; ! 236: short eventNum; /* unique identifier from mouse down event */ ! 237: int trackingNum; /* unique identifier from settrackingrect */ ! 238: int userData; /* uninterpreted integer from settrackingrect */ ! 239: int reserved1; ! 240: int reserved2; ! 241: int reserved3; ! 242: int reserved4; ! 243: int reserved5; ! 244: } tracking; ! 245: struct { ! 246: short deltaAxis1; ! 247: short deltaAxis2; ! 248: short deltaAxis3; ! 249: short reserved1; ! 250: int reserved2; ! 251: int reserved3; ! 252: int reserved4; ! 253: int reserved5; ! 254: int reserved6; ! 255: int reserved7; ! 256: } scrollWheel; ! 257: struct { /* For window-changed, sys-defined, and app-defined events */ ! 258: short reserved; ! 259: short subType; /* event subtype for compound events */ ! 260: union { ! 261: float F[2]; /* for use in compound events */ ! 262: long L[2]; /* for use in compound events */ ! 263: short S[4]; /* for use in compound events */ ! 264: char C[8]; /* for use in compound events */ ! 265: } misc; ! 266: int reserved2; ! 267: int reserved3; ! 268: int reserved4; ! 269: int reserved5; ! 270: int reserved6; ! 271: } compound; ! 272: struct { ! 273: SInt32 x; /* absolute x coordinate in tablet space at full tablet resolution */ ! 274: SInt32 y; /* absolute y coordinate in tablet space at full tablet resolution */ ! 275: SInt32 z; /* absolute z coordinate in tablet space at full tablet resolution */ ! 276: UInt16 buttons; /* one bit per button - bit 0 is first button - 1 = closed */ ! 277: UInt16 pressure; /* scaled pressure value; MAXPRESSURE=(2^16)-1, MINPRESSURE=0 */ ! 278: struct { ! 279: SInt16 x; /* scaled tilt x value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */ ! 280: SInt16 y; /* scaled tilt y value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */ ! 281: } tilt; ! 282: UInt16 rotation; /* Fixed-point representation of device rotation in a 10.6 format */ ! 283: SInt16 tangentialPressure; /* tangential pressure on the device; range same as tilt */ ! 284: UInt16 deviceID; /* system-assigned unique device ID - matches to deviceID field in proximity event */ ! 285: SInt16 vendor1; /* vendor-defined signed 16-bit integer */ ! 286: SInt16 vendor2; /* vendor-defined signed 16-bit integer */ ! 287: SInt16 vendor3; /* vendor-defined signed 16-bit integer */ ! 288: } tablet; ! 289: struct { ! 290: UInt16 vendorID; /* vendor-defined ID - typically will be USB vendor ID */ ! 291: UInt16 tabletID; /* vendor-defined tablet ID - typically will be USB product ID for the tablet */ ! 292: UInt16 pointerID; /* vendor-defined ID of the specific pointing device */ ! 293: UInt16 deviceID; /* system-assigned unique device ID - matches to deviceID field in tablet event */ ! 294: UInt16 systemTabletID; /* system-assigned unique tablet ID */ ! 295: UInt16 vendorPointerType; /* vendor-defined pointer type */ ! 296: UInt32 pointerSerialNumber; /* vendor-defined serial number of the specific pointing device */ ! 297: UInt64 uniqueID; /* vendor-defined unique ID for this pointer */ ! 298: UInt32 capabilityMask; /* mask representing the capabilities of the device */ ! 299: UInt8 pointerType; /* type of pointing device - enum to be defined */ ! 300: UInt8 enterProximity; /* non-zero = entering; zero = leaving */ ! 301: SInt16 reserved1; ! 302: } proximity; ! 303: } NXEventData; ! 304: ! 305: /* Finally! The event record! */ ! 306: typedef struct _NXEvent { ! 307: int type; /* An event type from above */ ! 308: struct { ! 309: int x, y; /* Base coordinates in window, */ ! 310: } location; /* from bottom left */ ! 311: unsigned long long time; /* time since launch */ ! 312: int flags; /* key state flags */ ! 313: unsigned int window; /* window number of assigned window */ ! 314: NXEventData data; /* type-dependent data */ ! 315: } NXEvent, *NXEventPtr; ! 316: ! 317: #else /****** EVENT_SYSTEM_VERSION <= 1 ******/ ! 318: ! 319: typedef union { ! 320: struct { /* For mouse-down and mouse-up events */ ! 321: unsigned char subx; /* sub-pixel position for x */ ! 322: unsigned char suby; /* sub-pixel position for y */ ! 323: short eventNum; /* unique identifier for this button */ ! 324: int click; /* click state of this event */ ! 325: unsigned char pressure; /* pressure value: 0=none, 255=full */ ! 326: char reserved1; ! 327: short reserved2; ! 328: } mouse; ! 329: struct { /* For key-down and key-up events */ ! 330: unsigned short origCharSet; /* unmodified character set code */ ! 331: short repeat; /* for key-down: nonzero if really a repeat */ ! 332: unsigned short charSet; /* character set code */ ! 333: unsigned short charCode; /* character code in that set */ ! 334: unsigned short keyCode; /* device-dependent key number */ ! 335: unsigned short origCharCode; /* unmodified character code */ ! 336: } key; ! 337: struct { /* For mouse-entered and mouse-exited events */ ! 338: short reserved; ! 339: short eventNum; /* unique identifier from mouse down event */ ! 340: int trackingNum; /* unique identifier from settrackingrect */ ! 341: int userData; /* uninterpreted integer from settrackingrect */ ! 342: } tracking; ! 343: struct { ! 344: short deltaAxis1; ! 345: short deltaAxis2; ! 346: short deltaAxis3; ! 347: short reserved1; ! 348: int reserved2; ! 349: } scrollWheel; ! 350: struct { /* For window-changed, sys-defined, and app-defined events */ ! 351: short reserved; ! 352: short subType; /* event subtype for compound events */ ! 353: union { ! 354: float F[2]; /* for use in compound events */ ! 355: long L[2]; /* for use in compound events */ ! 356: short S[4]; /* for use in compound events */ ! 357: char C[8]; /* for use in compound events */ ! 358: } misc; ! 359: } compound; ! 360: } NXEventData; ! 361: ! 362: /* Finally! The event record! */ ! 363: typedef struct _NXEvent { ! 364: int type; /* An event type from above */ ! 365: struct { ! 366: int x, y; /* Base coordinates in window, */ ! 367: } location; /* from bottom left */ ! 368: long time; /* vertical intervals since launch */ ! 369: int flags; /* key state flags */ ! 370: unsigned int window; /* window number of assigned window */ ! 371: NXEventData data; /* type-dependent data */ ! 372: } NXEvent, *NXEventPtr; ! 373: ! 374: #endif /****** EVENT_SYSTEM_VERSION <= 1 ******/ ! 375: ! 376: /* How to pick window(s) for event (for PostEvent) */ ! 377: #define NX_NOWINDOW -1 ! 378: #define NX_BYTYPE 0 ! 379: #define NX_BROADCAST 1 ! 380: #define NX_TOPWINDOW 2 ! 381: #define NX_FIRSTWINDOW 3 ! 382: #define NX_MOUSEWINDOW 4 ! 383: #define NX_NEXTWINDOW 5 ! 384: #define NX_LASTLEFT 6 ! 385: #define NX_LASTRIGHT 7 ! 386: #define NX_LASTKEY 8 ! 387: #define NX_EXPLICIT 9 ! 388: #define NX_TRANSMIT 10 ! 389: #define NX_BYPSCONTEXT 11 ! 390: ! 391: #endif /* EVENT_H */ /* End of defs common with dpsclient/event.h */ ! 392: ! 393: /* Mask of events that cause screen to undim */ ! 394: ! 395: #define NX_UNDIMMASK (NX_KEYDOWNMASK | NX_KEYUPMASK | \ ! 396: NX_LMOUSEDOWNMASK | NX_LMOUSEUPMASK | \ ! 397: NX_RMOUSEDOWNMASK | NX_RMOUSEUPMASK | \ ! 398: NX_MOUSEMOVEDMASK | NX_FLAGSCHANGEDMASK | \ ! 399: NX_MOUSEENTEREDMASK | NX_MOUSEEXITEDMASK | \ ! 400: NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK | \ ! 401: NX_SCROLLWHEELMOVEDMASK | NX_TABLETPOINTERMASK | \ ! 402: NX_TABLETPROXIMITYMASK) ! 403: ! 404: #endif /* !_DEV_EVENT_H */ ! 405:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.