|
|
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.