|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: File: Events.h
27:
28: Contains: Event Manager Interfaces.
29:
30: Version: Mac OS 8
31:
32: DRI: Rich Wilkes
33:
34: Copyright: � 1985-1998 by Apple Computer, Inc., all rights reserved
35:
36: Warning: *** APPLE INTERNAL USE ONLY ***
37: This file may contain unreleased API's
38:
39: BuildInfo: Built by: Naga Pappireddi
40: With Interfacer: 3.0d9 (PowerPC native)
41: From: Events.i
42: Revision: 69
43: Dated: 9/23/98
44: Last change by: NG
45: Last comment: More Syncing with Carbon; add GetGlobalMouse
46:
47: Bugs: Report bugs to Radar component "System Interfaces", "Latest"
48: List the version information (from above) in the Problem Description.
49:
50: */
51: #include "../OSUtils.h"
52: #ifndef __EVENTS__
53: #define __EVENTS__
54:
55: /*naga
56: #ifndef __OSUTILS__
57: #include "../OSUtils.h"
58: #endif
59: #ifndef __QUICKDRAW__
60: #include <Quickdraw.h>
61: #endif
62: #ifndef __MACTYPES__
63: #include <MacTypes.h>
64: #endif
65:
66: #if !TARGET_OS_MAC
67: #ifndef __ENDIAN__
68: #include <Endian.h>
69: #endif
70: #endif*/ /* !TARGET_OS_MAC */
71:
72:
73:
74: #if PRAGMA_ONCE
75: #pragma once
76: #endif
77:
78: #ifdef __cplusplus
79: extern "C" {
80: #endif
81:
82: #if PRAGMA_IMPORT
83: #pragma import on
84: #endif
85:
86: #if PRAGMA_STRUCT_ALIGN
87: #pragma options align=mac68k
88: #elif PRAGMA_STRUCT_PACKPUSH
89: #pragma pack(push, 2)
90: #elif PRAGMA_STRUCT_PACK
91: #pragma pack(2)
92: #endif
93:
94: typedef UInt16 EventKind;
95: typedef UInt16 EventMask;
96:
97: enum {
98: nullEvent = 0,
99: mouseDown = 1,
100: mouseUp = 2,
101: keyDown = 3,
102: keyUp = 4,
103: autoKey = 5,
104: updateEvt = 6,
105: diskEvt = 7,
106: activateEvt = 8,
107: osEvt = 15,
108: kHighLevelEvent = 23
109: };
110:
111:
112: enum {
113: mDownMask = 1 << mouseDown, /* mouse button pressed*/
114: mUpMask = 1 << mouseUp, /* mouse button released*/
115: keyDownMask = 1 << keyDown, /* key pressed*/
116: keyUpMask = 1 << keyUp, /* key released*/
117: autoKeyMask = 1 << autoKey, /* key repeatedly held down*/
118: updateMask = 1 << updateEvt, /* window needs updating*/
119: diskMask = 1 << diskEvt, /* disk inserted*/
120: activMask = 1 << activateEvt, /* activate/deactivate window*/
121: highLevelEventMask = 0x0400, /* high-level events (includes AppleEvents)*/
122: osMask = 1 << osEvt, /* operating system events (suspend, resume)*/
123: everyEvent = 0xFFFF /* all of the above*/
124: };
125:
126:
127: enum {
128: charCodeMask = 0x000000FF,
129: keyCodeMask = 0x0000FF00,
130: adbAddrMask = 0x00FF0000,
131: osEvtMessageMask = (long)0xFF000000
132: };
133:
134:
135: enum {
136: /* OS event messages. Event (sub)code is in the high byte of the message field.*/
137: mouseMovedMessage = 0x00FA,
138: suspendResumeMessage = 0x0001
139: };
140:
141:
142: enum {
143: resumeFlag = 1, /* Bit 0 of message indicates resume vs suspend*/
144: convertClipboardFlag = 2 /* Bit 1 in resume message indicates clipboard change*/
145: };
146:
147:
148: typedef UInt16 EventModifiers;
149:
150: enum {
151: /* modifiers */
152: activeFlagBit = 0, /* activate? (activateEvt and mouseDown)*/
153: btnStateBit = 7, /* state of button?*/
154: cmdKeyBit = 8, /* command key down?*/
155: shiftKeyBit = 9, /* shift key down?*/
156: alphaLockBit = 10, /* alpha lock down?*/
157: optionKeyBit = 11, /* option key down?*/
158: controlKeyBit = 12, /* control key down?*/
159: rightShiftKeyBit = 13, /* right shift key down?*/
160: rightOptionKeyBit = 14, /* right Option key down?*/
161: rightControlKeyBit = 15 /* right Control key down?*/
162: };
163:
164:
165: enum {
166: activeFlag = 1 << activeFlagBit,
167: btnState = 1 << btnStateBit,
168: cmdKey = 1 << cmdKeyBit,
169: shiftKey = 1 << shiftKeyBit,
170: alphaLock = 1 << alphaLockBit,
171: optionKey = 1 << optionKeyBit,
172: controlKey = 1 << controlKeyBit,
173: rightShiftKey = 1 << rightShiftKeyBit,
174: rightOptionKey = 1 << rightOptionKeyBit,
175: rightControlKey = 1 << rightControlKeyBit
176: };
177:
178:
179: enum {
180: kNullCharCode = 0,
181: kHomeCharCode = 1,
182: kEnterCharCode = 3,
183: kEndCharCode = 4,
184: kHelpCharCode = 5,
185: kBellCharCode = 7,
186: kBackspaceCharCode = 8,
187: kTabCharCode = 9,
188: kLineFeedCharCode = 10,
189: kVerticalTabCharCode = 11,
190: kPageUpCharCode = 11,
191: kFormFeedCharCode = 12,
192: kPageDownCharCode = 12,
193: kReturnCharCode = 13,
194: kFunctionKeyCharCode = 16,
195: kEscapeCharCode = 27,
196: kClearCharCode = 27,
197: kLeftArrowCharCode = 28,
198: kRightArrowCharCode = 29,
199: kUpArrowCharCode = 30,
200: kDownArrowCharCode = 31,
201: kDeleteCharCode = 127,
202: kNonBreakingSpaceCharCode = 202
203: };
204:
205:
206: struct EventRecord {
207: EventKind what;
208: UInt32 message;
209: UInt32 when;
210: Point where;
211: EventModifiers modifiers;
212: };
213: typedef struct EventRecord EventRecord;
214: #if 0 //naga
215: typedef CALLBACK_API( void , FKEYProcPtr )(void );
216: typedef STACK_UPP_TYPE(FKEYProcPtr) FKEYUPP;
217: enum { uppFKEYProcInfo = 0x00000000 }; /* pascal no_return_value Func() */
218: #if MIXEDMODE_CALLS_ARE_FUNCTIONS
219: EXTERN_API(FKEYUPP)
220: NewFKEYProc (FKEYProcPtr userRoutine);
221: EXTERN_API(void)
222: CallFKEYProc (FKEYUPP userRoutine);
223: #else
224: #define NewFKEYProc(userRoutine) (FKEYUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFKEYProcInfo, GetCurrentArchitecture())
225: #define CallFKEYProc(userRoutine) CALL_ZERO_PARAMETER_UPP((userRoutine), uppFKEYProcInfo)
226: #endif
227: EXTERN_API( void )
228: GetMouse (Point * mouseLoc) ONEWORDINLINE(0xA972);
229:
230: EXTERN_API( Boolean )
231: Button (void) ONEWORDINLINE(0xA974);
232:
233: EXTERN_API( Boolean )
234: StillDown (void) ONEWORDINLINE(0xA973);
235:
236: EXTERN_API( Boolean )
237: WaitMouseUp (void) ONEWORDINLINE(0xA977);
238:
239: EXTERN_API( UInt32 )
240: TickCount (void) ONEWORDINLINE(0xA975);
241:
242: EXTERN_API( UInt32 )
243: KeyTranslate (const void * transData,
244: UInt16 keycode,
245: UInt32 * state) ONEWORDINLINE(0xA9C3);
246:
247: EXTERN_API( UInt32 )
248: GetCaretTime (void) TWOWORDINLINE(0x2EB8, 0x02F4);
249:
250:
251: /*
252: QuickTime 3.0 supports GetKeys() on unix and win32
253: But, on little endian machines you will have to be
254: careful about bit numberings and/or use a KeyMapByteArray
255: instead.
256: */
257: #endif 0 //naga
258: //naga#if TARGET_OS_MAC
259:
260: typedef UInt32 KeyMap[4];
261: /*naga
262: #else
263: typedef BigEndianLong KeyMap[4];
264: #endif*/ /* TARGET_OS_MAC */
265:
266: typedef UInt8 KeyMapByteArray[16];
267: EXTERN_API( void )
268: GetKeys (KeyMap theKeys) ONEWORDINLINE(0xA976);
269:
270:
271: /* Obsolete event types & masks */
272:
273: enum {
274: networkEvt = 10,
275: driverEvt = 11,
276: app1Evt = 12,
277: app2Evt = 13,
278: app3Evt = 14,
279: app4Evt = 15,
280: networkMask = 0x0400,
281: driverMask = 0x0800,
282: app1Mask = 0x1000,
283: app2Mask = 0x2000,
284: app3Mask = 0x4000,
285: app4Mask = 0x8000
286: };
287:
288:
289: struct EvQEl {
290: QElemPtr qLink;
291: SInt16 qType;
292: EventKind evtQWhat; /* this part is identical to the EventRecord as defined above */
293: UInt32 evtQMessage;
294: UInt32 evtQWhen;
295: Point evtQWhere;
296: EventModifiers evtQModifiers;
297: };
298: typedef struct EvQEl EvQEl;
299: typedef EvQEl * EvQElPtr;
300: typedef CALLBACK_API( void , GetNextEventFilterProcPtr )(EventRecord *theEvent, Boolean *result);
301: /*
302: WARNING: GetNextEventFilterProcPtr uses register based parameters under classic 68k
303: and cannot be written in a high-level language without
304: the help of mixed mode or assembly glue.
305: */
306: //naga
307: #if 0
308: typedef REGISTER_UPP_TYPE(GetNextEventFilterProcPtr) GetNextEventFilterUPP;
309: enum { uppGetNextEventFilterProcInfo = 0x000000BF }; /* SPECIAL_CASE_PROCINFO(11) */
310: #if MIXEDMODE_CALLS_ARE_FUNCTIONS
311: EXTERN_API(GetNextEventFilterUPP)
312: NewGetNextEventFilterProc (GetNextEventFilterProcPtr userRoutine);
313: EXTERN_API(void)
314: CallGetNextEventFilterProc (GetNextEventFilterUPP userRoutine,
315: EventRecord * theEvent,
316: Boolean * result);
317: #else
318: #define NewGetNextEventFilterProc(userRoutine) (GetNextEventFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetNextEventFilterProcInfo, GetCurrentArchitecture())
319: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
320: /* CallGetNextEventFilterProc can't be called from classic 68k without glue code */
321: #else
322: #define CallGetNextEventFilterProc(userRoutine, theEvent, result) CALL_TWO_PARAMETER_UPP((userRoutine), uppGetNextEventFilterProcInfo, (theEvent), (result))
323: #endif
324: #endif
325: typedef GetNextEventFilterUPP GNEFilterUPP;
326: EXTERN_API( QHdrPtr )
327: GetEvQHdr (void) THREEWORDINLINE(0x2EBC, 0x0000, 0x014A);
328:
329: EXTERN_API( UInt32 )
330: GetDblTime (void) TWOWORDINLINE(0x2EB8, 0x02F0);
331:
332: EXTERN_API( void )
333: SetEventMask (EventMask value) TWOWORDINLINE(0x31DF, 0x0144);
334:
335: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
336: #pragma parameter __D0 PPostEvent(__A0, __D0, __A1)
337: #endif
338: EXTERN_API( OSErr )
339: PPostEvent (EventKind eventCode,
340: UInt32 eventMsg,
341: EvQElPtr * qEl) TWOWORDINLINE(0xA12F, 0x2288);
342:
343: #define KeyTrans(transData, keycode, state) KeyTranslate(transData, keycode, state)
344: EXTERN_API( Boolean )
345: GetNextEvent (EventMask eventMask,
346: EventRecord * theEvent) ONEWORDINLINE(0xA970);
347:
348: EXTERN_API( Boolean )
349: WaitNextEvent (EventMask eventMask,
350: EventRecord * theEvent,
351: UInt32 sleep,
352: RgnHandle mouseRgn) /* can be NULL */ ONEWORDINLINE(0xA860);
353:
354: EXTERN_API( Boolean )
355: EventAvail (EventMask eventMask,
356: EventRecord * theEvent) ONEWORDINLINE(0xA971);
357:
358:
359: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
360: #pragma parameter __D0 PostEvent(__A0, __D0)
361: #endif
362: EXTERN_API( OSErr )
363: PostEvent (EventKind eventNum,
364: UInt32 eventMsg) ONEWORDINLINE(0xA02F);
365:
366: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
367: #pragma parameter __D0 OSEventAvail(__D0, __A0)
368: #endif
369: EXTERN_API( Boolean )
370: OSEventAvail (EventMask mask,
371: EventRecord * theEvent) TWOWORDINLINE(0xA030, 0x5240);
372:
373: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
374: #pragma parameter __D0 GetOSEvent(__D0, __A0)
375: #endif
376: EXTERN_API( Boolean )
377: GetOSEvent (EventMask mask,
378: EventRecord * theEvent) TWOWORDINLINE(0xA031, 0x5240);
379:
380: EXTERN_API( void )
381: FlushEvents (EventMask whichMask,
382: EventMask stopMask) TWOWORDINLINE(0x201F, 0xA032);
383:
384: EXTERN_API( void )
385: SystemClick (const EventRecord * theEvent,
386: WindowPtr theWindow) ONEWORDINLINE(0xA9B3);
387:
388: EXTERN_API( void )
389: SystemTask (void) ONEWORDINLINE(0xA9B4);
390:
391: EXTERN_API( Boolean )
392: SystemEvent (const EventRecord * theEvent) ONEWORDINLINE(0xA9B2);
393:
394: /* This call is only available as part of the Carbon API*/
395: EXTERN_API( void )
396: GetGlobalMouse (Point * globalMouse);
397:
398:
399:
400: #if PRAGMA_STRUCT_ALIGN
401: #pragma options align=reset
402: #elif PRAGMA_STRUCT_PACKPUSH
403: #pragma pack(pop)
404: #elif PRAGMA_STRUCT_PACK
405: #pragma pack()
406: #endif
407:
408: #ifdef PRAGMA_IMPORT_OFF
409: #pragma import off
410: #elif PRAGMA_IMPORT
411: #pragma import reset
412: #endif
413:
414: #ifdef __cplusplus
415: }
416: #endif
417: #endif 0 //naga
418: #endif /* __EVENTS__ */
419:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.