Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

304 lines
8.9 KiB

/*
File: Events.h
Contains: Event Manager Interfaces.
Version: Technology: System 7.5
Package: Universal Interfaces 2.1 in ÒMPW LatestÓ on ETO #18
Copyright: © 1984-1995 by Apple Computer, Inc.
All rights reserved.
Bugs?: If you find a problem with this file, use the Apple Bug Reporter
stack. Include the file and version information (from above)
in the problem description and send to:
Internet: [email protected]
AppleLink: APPLE.BUGS
*/
#ifndef __EVENTS__
#define __EVENTS__
#ifndef __TYPES__
#include <Types.h>
#endif
/* #include <ConditionalMacros.h> */
#ifndef __QUICKDRAW__
#include <Quickdraw.h>
#endif
/* #include <MixedMode.h> */
/* #include <QuickdrawText.h> */
#ifndef __OSUTILS__
#include <OSUtils.h>
#endif
/* #include <Memory.h> */
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import on
#endif
typedef UInt16 EventKind;
enum {
nullEvent = 0,
mouseDown = 1,
mouseUp = 2,
keyDown = 3,
keyUp = 4,
autoKey = 5,
updateEvt = 6,
diskEvt = 7,
activateEvt = 8,
osEvt = 15
};
typedef UInt16 MacOSEventMask;
enum {
mDownMask = 0x0002, /* mouse button pressed */
mUpMask = 0x0004, /* mouse button released */
keyDownMask = 0x0008, /* key pressed */
keyUpMask = 0x0010, /* key released */
autoKeyMask = 0x0020, /* key repeatedly held down */
updateMask = 0x0040, /* window needs updating */
diskMask = 0x0080, /* disk inserted */
activMask = 0x0100, /* activate/deactivate window */
highLevelEventMask = 0x0400, /* high-level events (includes AppleEvents) */
osMask = 0x8000, /* operating system events (suspend, resume) */
everyEvent = 0xFFFF /* all of the above */
};
enum {
/* event message equates */
charCodeMask = 0x000000FF,
keyCodeMask = 0x0000FF00,
adbAddrMask = 0x00FF0000,
osEvtMessageMask = 0xFF000000L,
/* OS event messages. Event (sub)code is in the high byte of the message field. */
mouseMovedMessage = 0x00FA,
suspendResumeMessage = 0x0001,
resumeFlag = 1, /* Bit 0 of message indicates resume vs suspend */
convertClipboardFlag = 2 /* Bit 1 in resume message indicates clipboard change */
};
typedef UInt16 EventModifiers;
enum {
/* modifiers */
activeFlag = 0x0001, /* Bit 0 of modifiers for activateEvt and mouseDown events */
btnState = 0x0080, /* Bit 7 of low byte is mouse button state */
cmdKey = 0x0100, /* Bit 0 of high byte */
shiftKey = 0x0200, /* Bit 1 of high byte */
alphaLock = 0x0400, /* Bit 2 of high byte */
optionKey = 0x0800, /* Bit 3 of high byte */
controlKey = 0x1000, /* Bit 4 of high byte */
rightShiftKey = 0x2000, /* Bit 5 of high byte */
rightOptionKey = 0x4000, /* Bit 6 of high byte */
rightControlKey = 0x8000, /* Bit 7 of high byte */
activeFlagBit = 0, /* activate? (activateEvt and mouseDown) */
btnStateBit = 7, /* state of button? */
cmdKeyBit = 8, /* command key down? */
shiftKeyBit = 9, /* shift key down? */
alphaLockBit = 10, /* alpha lock down? */
optionKeyBit = 11, /* option key down? */
controlKeyBit = 12, /* control key down? */
rightShiftKeyBit = 13, /* right shift key down? */
rightOptionKeyBit = 14, /* right Option key down? */
rightControlKeyBit = 15 /* right Control key down? */
};
struct EventRecord {
EventKind what;
UInt32 message;
UInt32 when;
Point where;
EventModifiers modifiers;
};
typedef struct EventRecord EventRecord;
typedef UInt32 KeyMap[4];
struct EvQEl {
QElemPtr qLink;
short qType;
EventKind evtQWhat; /* this part is identical to the EventRecord as... */
UInt32 evtQMessage; /* defined above */
UInt32 evtQWhen;
Point evtQWhere;
EventModifiers evtQModifiers;
};
typedef struct EvQEl EvQEl;
typedef EvQEl *EvQElPtr;
typedef void (*GetNextEventFilterProcPtr)(EventRecord *theEvent, Boolean *result);
#if USESROUTINEDESCRIPTORS
typedef UniversalProcPtr GetNextEventFilterUPP;
#else
typedef Register68kProcPtr GetNextEventFilterUPP;
#endif
enum {
uppGetNextEventFilterProcInfo = SPECIAL_CASE_PROCINFO( kSpecialCaseGNEFilterProc )
};
#if USESROUTINEDESCRIPTORS
#define NewGetNextEventFilterProc(userRoutine) \
(GetNextEventFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetNextEventFilterProcInfo, GetCurrentArchitecture())
#else
#define NewGetNextEventFilterProc(userRoutine) \
((GetNextEventFilterUPP) (userRoutine))
#endif
#if USESROUTINEDESCRIPTORS
#define CallGetNextEventFilterProc(userRoutine, theEvent, result) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppGetNextEventFilterProcInfo, (theEvent), (result))
#else
/* (*GetNextEventFilterProcPtr) cannot be called from a high-level language without the Mixed Mode Manager */
#endif
typedef GetNextEventFilterUPP GNEFilterUPP;
typedef pascal void (*FKEYProcPtr)(void);
#if USESROUTINEDESCRIPTORS
typedef UniversalProcPtr FKEYUPP;
#else
typedef FKEYProcPtr FKEYUPP;
#endif
enum {
uppFKEYProcInfo = kPascalStackBased
};
#if USESROUTINEDESCRIPTORS
#define NewFKEYProc(userRoutine) \
(FKEYUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppFKEYProcInfo, GetCurrentArchitecture())
#else
#define NewFKEYProc(userRoutine) \
((FKEYUPP) (userRoutine))
#endif
#if USESROUTINEDESCRIPTORS
#define CallFKEYProc(userRoutine) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppFKEYProcInfo)
#else
#define CallFKEYProc(userRoutine) \
(*(userRoutine))()
#endif
extern pascal UInt32 GetCaretTime( void )
TWOWORDINLINE( 0x2EB8, 0x02F4 ); /* MOVE.l $02F4,(SP) */
extern pascal void SetEventMask( MacOSEventMask value )
TWOWORDINLINE( 0x31DF, 0x0144 ); /* MOVE.w (SP)+,$0144 */
extern pascal MacOSEventMask GetEventMask( void )
TWOWORDINLINE( 0x3EB8, 0x0144 ); /* MOVE.w $0144,(SP) */
extern pascal QHdrPtr GetEvQHdr(void)
THREEWORDINLINE(0x2EBC, 0x0000, 0x014A);
/* InterfaceLib exports GetEvQHdr, so make GetEventQueue map to that */
#define GetEventQueue() GetEvQHdr()
extern pascal UInt32 GetDblTime( void )
TWOWORDINLINE( 0x2EB8, 0x02F0 ); /* MOVE.l $02F0,(SP) */
/* InterfaceLib exports GetDblTime, so make GetDoubleClickTime map to that */
#define GetDoubleClickTime() GetDblTime()
extern pascal Boolean GetNextEvent(MacOSEventMask eventMask, EventRecord *theEvent)
ONEWORDINLINE(0xA970);
extern pascal Boolean WaitNextEvent(MacOSEventMask eventMask, EventRecord *theEvent, UInt32 sleep, RgnHandle mouseRgn)
ONEWORDINLINE(0xA860);
extern pascal Boolean EventAvail(MacOSEventMask eventMask, EventRecord *theEvent)
ONEWORDINLINE(0xA971);
extern pascal void GetMouse(Point *mouseLoc)
ONEWORDINLINE(0xA972);
extern pascal Boolean Button(void)
ONEWORDINLINE(0xA974);
extern pascal Boolean StillDown(void)
ONEWORDINLINE(0xA973);
extern pascal Boolean WaitMouseUp(void)
ONEWORDINLINE(0xA977);
extern pascal void GetKeys(KeyMap theKeys)
ONEWORDINLINE(0xA976);
extern pascal UInt32 KeyTranslate(const void *transData, UInt16 keycode, UInt32 *state)
ONEWORDINLINE(0xA9C3);
extern pascal UInt32 TickCount(void)
ONEWORDINLINE(0xA975);
#if !GENERATINGCFM
#pragma parameter __D0 PostEvent(__A0, __D0)
#endif
extern pascal OSErr PostEvent(EventKind eventNum, UInt32 eventMsg)
ONEWORDINLINE(0xA02F);
#if !GENERATINGCFM
#pragma parameter __D0 PPostEvent(__A0, __D0, __A1)
#endif
extern pascal OSErr PPostEvent(EventKind eventCode, UInt32 eventMsg, EvQElPtr *qEl)
TWOWORDINLINE(0xA12F, 0x2288);
#if !GENERATINGCFM
#pragma parameter __D0 OSEventAvail(__D0, __A0)
#endif
extern pascal Boolean OSEventAvail(MacOSEventMask mask, EventRecord *theEvent)
TWOWORDINLINE(0xA030, 0x5240);
#if !GENERATINGCFM
#pragma parameter __D0 GetOSEvent(__D0, __A0)
#endif
extern pascal Boolean GetOSEvent(MacOSEventMask mask, EventRecord *theEvent)
TWOWORDINLINE(0xA031, 0x5240);
extern pascal void FlushEvents(MacOSEventMask whichMask, MacOSEventMask stopMask)
TWOWORDINLINE(0x201F, 0xA032);
extern pascal void SystemClick(const EventRecord *theEvent, WindowPtr theWindow)
ONEWORDINLINE(0xA9B3);
extern pascal void SystemTask(void)
ONEWORDINLINE(0xA9B4);
extern pascal Boolean SystemEvent(const EventRecord *theEvent)
ONEWORDINLINE(0xA9B2);
#if OLDROUTINENAMES
enum {
networkEvt = 10,
driverEvt = 11,
app1Evt = 12,
app2Evt = 13,
app3Evt = 14,
app4Evt = 15,
networkMask = 0x0400,
driverMask = 0x0800,
app1Mask = 0x1000,
app2Mask = 0x2000,
app3Mask = 0x4000,
app4Mask = 0x8000
};
#define KeyTrans(transData, keycode, state) KeyTranslate(transData, keycode, state)
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import off
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#endif
#ifdef __cplusplus
}
#endif
#endif /* __EVENTS__ */