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.
938 lines
28 KiB
938 lines
28 KiB
5 years ago
|
/*
|
||
|
File: Events.h
|
||
|
|
||
|
Contains: Event Manager Interfaces.
|
||
|
|
||
|
Version: QuickTime 7.3
|
||
|
|
||
|
Copyright: (c) 2007 (c) 1985-2001 by Apple Computer, Inc., all rights reserved
|
||
|
|
||
|
Bugs?: For bug reports, consult the following page on
|
||
|
the World Wide Web:
|
||
|
|
||
|
http://developer.apple.com/bugreporter/
|
||
|
|
||
|
*/
|
||
|
#ifndef __EVENTS__
|
||
|
#define __EVENTS__
|
||
|
|
||
|
#ifndef __OSUTILS__
|
||
|
#include <OSUtils.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef __MACTYPES__
|
||
|
#include <MacTypes.h>
|
||
|
#endif
|
||
|
|
||
|
#if !TARGET_OS_MAC || !TARGET_API_MAC_OS8
|
||
|
#ifndef __ENDIAN__
|
||
|
#include <Endian.h>
|
||
|
#endif
|
||
|
|
||
|
#endif /* !TARGET_OS_MAC || !TARGET_API_MAC_OS8 */
|
||
|
|
||
|
#ifndef __QUICKDRAW__
|
||
|
#include <Quickdraw.h>
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
#if PRAGMA_ONCE
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#if PRAGMA_IMPORT
|
||
|
#pragma import on
|
||
|
#endif
|
||
|
|
||
|
#if PRAGMA_STRUCT_ALIGN
|
||
|
#pragma options align=mac68k
|
||
|
#elif PRAGMA_STRUCT_PACKPUSH
|
||
|
#pragma pack(push, 2)
|
||
|
#elif PRAGMA_STRUCT_PACK
|
||
|
#pragma pack(2)
|
||
|
#endif
|
||
|
|
||
|
typedef UInt16 EventKind;
|
||
|
typedef UInt16 EventMask;
|
||
|
enum {
|
||
|
nullEvent = 0,
|
||
|
mouseDown = 1,
|
||
|
mouseUp = 2,
|
||
|
keyDown = 3,
|
||
|
keyUp = 4,
|
||
|
autoKey = 5,
|
||
|
updateEvt = 6,
|
||
|
diskEvt = 7, /* Not sent in Carbon. See kEventClassVolume in CarbonEvents.h*/
|
||
|
activateEvt = 8,
|
||
|
osEvt = 15,
|
||
|
kHighLevelEvent = 23
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
mDownMask = 1 << mouseDown, /* mouse button pressed*/
|
||
|
mUpMask = 1 << mouseUp, /* mouse button released*/
|
||
|
keyDownMask = 1 << keyDown, /* key pressed*/
|
||
|
keyUpMask = 1 << keyUp, /* key released*/
|
||
|
autoKeyMask = 1 << autoKey, /* key repeatedly held down*/
|
||
|
updateMask = 1 << updateEvt, /* window needs updating*/
|
||
|
diskMask = 1 << diskEvt, /* disk inserted*/
|
||
|
activMask = 1 << activateEvt, /* activate/deactivate window*/
|
||
|
highLevelEventMask = 0x0400, /* high-level events (includes AppleEvents)*/
|
||
|
osMask = 1 << osEvt, /* operating system events (suspend, resume)*/
|
||
|
everyEvent = 0xFFFF /* all of the above*/
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
charCodeMask = 0x000000FF,
|
||
|
keyCodeMask = 0x0000FF00,
|
||
|
adbAddrMask = 0x00FF0000,
|
||
|
osEvtMessageMask = (unsigned long)0xFF000000
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
/* OS event messages. Event (sub)code is in the high byte of the message field.*/
|
||
|
mouseMovedMessage = 0x00FA,
|
||
|
suspendResumeMessage = 0x0001
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
resumeFlag = 1 /* Bit 0 of message indicates resume vs suspend*/
|
||
|
};
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/* convertClipboardFlag is not ever set under Carbon. This is because scrap conversion is */
|
||
|
/* not tied to suspend/resume events any longer. Your application should instead use the */
|
||
|
/* scrap promise mechanism and fulfill scrap requests only when your promise keeper proc */
|
||
|
/* is called. If you need to know if the scrap has changed, you can cache the last */
|
||
|
/* ScrapRef you received and compare it with the current ScrapRef */
|
||
|
enum {
|
||
|
convertClipboardFlag = 2 /* Bit 1 in resume message indicates clipboard change*/
|
||
|
};
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
/*
|
||
|
CARBON ALERT! BATTLESTATIONS!
|
||
|
|
||
|
The EventModifiers bits defined here are also used in the newer Carbon Event
|
||
|
key modifiers parameters. There are two main differences:
|
||
|
|
||
|
1) The Carbon key modifiers parameter is a UInt32, not a UInt16. Never try to
|
||
|
extract the key modifiers parameter from a Carbon Event into an EventModifiers
|
||
|
type. You will probably get your stack trashed.
|
||
|
2) The Carbon key modifiers is just that: key modifiers. That parameter will
|
||
|
never contain the button state bit.
|
||
|
*/
|
||
|
typedef UInt16 EventModifiers;
|
||
|
enum {
|
||
|
/* modifiers */
|
||
|
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?*/
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
activeFlag = 1 << activeFlagBit,
|
||
|
btnState = 1 << btnStateBit,
|
||
|
cmdKey = 1 << cmdKeyBit,
|
||
|
shiftKey = 1 << shiftKeyBit,
|
||
|
alphaLock = 1 << alphaLockBit,
|
||
|
optionKey = 1 << optionKeyBit,
|
||
|
controlKey = 1 << controlKeyBit,
|
||
|
rightShiftKey = 1 << rightShiftKeyBit,
|
||
|
rightOptionKey = 1 << rightOptionKeyBit,
|
||
|
rightControlKey = 1 << rightControlKeyBit
|
||
|
};
|
||
|
|
||
|
/* MacRoman character codes*/
|
||
|
enum {
|
||
|
kNullCharCode = 0,
|
||
|
kHomeCharCode = 1,
|
||
|
kEnterCharCode = 3,
|
||
|
kEndCharCode = 4,
|
||
|
kHelpCharCode = 5,
|
||
|
kBellCharCode = 7,
|
||
|
kBackspaceCharCode = 8,
|
||
|
kTabCharCode = 9,
|
||
|
kLineFeedCharCode = 10,
|
||
|
kVerticalTabCharCode = 11,
|
||
|
kPageUpCharCode = 11,
|
||
|
kFormFeedCharCode = 12,
|
||
|
kPageDownCharCode = 12,
|
||
|
kReturnCharCode = 13,
|
||
|
kFunctionKeyCharCode = 16,
|
||
|
kCommandCharCode = 17, /* glyph available only in system fonts*/
|
||
|
kCheckCharCode = 18, /* glyph available only in system fonts*/
|
||
|
kDiamondCharCode = 19, /* glyph available only in system fonts*/
|
||
|
kAppleLogoCharCode = 20, /* glyph available only in system fonts*/
|
||
|
kEscapeCharCode = 27,
|
||
|
kClearCharCode = 27,
|
||
|
kLeftArrowCharCode = 28,
|
||
|
kRightArrowCharCode = 29,
|
||
|
kUpArrowCharCode = 30,
|
||
|
kDownArrowCharCode = 31,
|
||
|
kSpaceCharCode = 32,
|
||
|
kDeleteCharCode = 127,
|
||
|
kBulletCharCode = 165,
|
||
|
kNonBreakingSpaceCharCode = 202
|
||
|
};
|
||
|
|
||
|
/* useful Unicode code points*/
|
||
|
enum {
|
||
|
kShiftUnicode = 0x21E7, /* Unicode UPWARDS WHITE ARROW*/
|
||
|
kControlUnicode = 0x2303, /* Unicode UP ARROWHEAD*/
|
||
|
kOptionUnicode = 0x2325, /* Unicode OPTION KEY*/
|
||
|
kCommandUnicode = 0x2318, /* Unicode PLACE OF INTEREST SIGN*/
|
||
|
kPencilUnicode = 0x270E, /* Unicode LOWER RIGHT PENCIL*/
|
||
|
kCheckUnicode = 0x2713, /* Unicode CHECK MARK*/
|
||
|
kDiamondUnicode = 0x25C6, /* Unicode BLACK DIAMOND*/
|
||
|
kBulletUnicode = 0x2022, /* Unicode BULLET*/
|
||
|
kAppleLogoUnicode = 0xF8FF /* Unicode APPLE LOGO*/
|
||
|
};
|
||
|
|
||
|
struct EventRecord {
|
||
|
EventKind what;
|
||
|
UInt32 message;
|
||
|
UInt32 when;
|
||
|
Point where;
|
||
|
EventModifiers modifiers;
|
||
|
};
|
||
|
typedef struct EventRecord EventRecord;
|
||
|
typedef CALLBACK_API( void , FKEYProcPtr )(void);
|
||
|
typedef STACK_UPP_TYPE(FKEYProcPtr) FKEYUPP;
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* NewFKEYUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( FKEYUPP )
|
||
|
NewFKEYUPP(FKEYProcPtr userRoutine);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
enum { uppFKEYProcInfo = 0x00000000 }; /* pascal no_return_value Func() */
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(FKEYUPP) NewFKEYUPP(FKEYProcPtr userRoutine) { return (FKEYUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFKEYProcInfo, GetCurrentArchitecture()); }
|
||
|
#else
|
||
|
#define NewFKEYUPP(userRoutine) (FKEYUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFKEYProcInfo, GetCurrentArchitecture())
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* DisposeFKEYUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( void )
|
||
|
DisposeFKEYUPP(FKEYUPP userUPP);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) DisposeFKEYUPP(FKEYUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
|
||
|
#else
|
||
|
#define DisposeFKEYUPP(userUPP) DisposeRoutineDescriptor(userUPP)
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* InvokeFKEYUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( void )
|
||
|
InvokeFKEYUPP(FKEYUPP userUPP);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) InvokeFKEYUPP(FKEYUPP userUPP) { CALL_ZERO_PARAMETER_UPP(userUPP, uppFKEYProcInfo); }
|
||
|
#else
|
||
|
#define InvokeFKEYUPP(userUPP) CALL_ZERO_PARAMETER_UPP((userUPP), uppFKEYProcInfo)
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
|
||
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
|
||
|
#define NewFKEYProc(userRoutine) NewFKEYUPP(userRoutine)
|
||
|
#define CallFKEYProc(userRoutine) InvokeFKEYUPP(userRoutine)
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
/*
|
||
|
* GetMouse()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
GetMouse(Point * mouseLoc) ONEWORDINLINE(0xA972);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Button()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
Button(void) ONEWORDINLINE(0xA974);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* StillDown()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
StillDown(void) ONEWORDINLINE(0xA973);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* WaitMouseUp()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
WaitMouseUp(void) ONEWORDINLINE(0xA977);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* KeyTranslate()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt32 )
|
||
|
KeyTranslate(
|
||
|
const void * transData,
|
||
|
UInt16 keycode,
|
||
|
UInt32 * state) ONEWORDINLINE(0xA9C3);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GetCaretTime()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt32 )
|
||
|
GetCaretTime(void) TWOWORDINLINE(0x2EB8, 0x02F4);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
QuickTime 3.0 supports GetKeys() on win32.
|
||
|
But, on little endian machines you will have to be
|
||
|
careful about bit numberings and/or use a KeyMapByteArray
|
||
|
instead.
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_API_MAC_OS8
|
||
|
|
||
|
typedef UInt32 KeyMap[4];
|
||
|
#else
|
||
|
typedef BigEndianLong KeyMap[4];
|
||
|
#endif /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
|
||
|
|
||
|
typedef UInt8 KeyMapByteArray[16];
|
||
|
/*
|
||
|
* GetKeys()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
GetKeys(KeyMap theKeys) ONEWORDINLINE(0xA976);
|
||
|
|
||
|
|
||
|
/* Obsolete event types & masks */
|
||
|
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
|
||
|
};
|
||
|
|
||
|
struct EvQEl {
|
||
|
QElemPtr qLink;
|
||
|
SInt16 qType;
|
||
|
EventKind evtQWhat; /* this part is identical to the EventRecord as defined above */
|
||
|
UInt32 evtQMessage;
|
||
|
UInt32 evtQWhen;
|
||
|
Point evtQWhere;
|
||
|
EventModifiers evtQModifiers;
|
||
|
};
|
||
|
typedef struct EvQEl EvQEl;
|
||
|
typedef EvQEl * EvQElPtr;
|
||
|
typedef CALLBACK_API_REGISTER68K( void , GetNextEventFilterProcPtr, (EventRecord *theEvent, Boolean *result) );
|
||
|
typedef REGISTER_UPP_TYPE(GetNextEventFilterProcPtr) GetNextEventFilterUPP;
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* NewGetNextEventFilterUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( GetNextEventFilterUPP )
|
||
|
NewGetNextEventFilterUPP(GetNextEventFilterProcPtr userRoutine);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
enum { uppGetNextEventFilterProcInfo = 0x000000BF }; /* SPECIAL_CASE_PROCINFO(11) */
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(GetNextEventFilterUPP) NewGetNextEventFilterUPP(GetNextEventFilterProcPtr userRoutine) { return (GetNextEventFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetNextEventFilterProcInfo, GetCurrentArchitecture()); }
|
||
|
#else
|
||
|
#define NewGetNextEventFilterUPP(userRoutine) (GetNextEventFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetNextEventFilterProcInfo, GetCurrentArchitecture())
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* DisposeGetNextEventFilterUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( void )
|
||
|
DisposeGetNextEventFilterUPP(GetNextEventFilterUPP userUPP);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) DisposeGetNextEventFilterUPP(GetNextEventFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
|
||
|
#else
|
||
|
#define DisposeGetNextEventFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* InvokeGetNextEventFilterUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API_C( void )
|
||
|
InvokeGetNextEventFilterUPP(
|
||
|
EventRecord * theEvent,
|
||
|
Boolean * result,
|
||
|
GetNextEventFilterUPP userUPP);
|
||
|
#if !OPAQUE_UPP_TYPES && (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) InvokeGetNextEventFilterUPP(EventRecord * theEvent, Boolean * result, GetNextEventFilterUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppGetNextEventFilterProcInfo, theEvent, result); }
|
||
|
#else
|
||
|
#define InvokeGetNextEventFilterUPP(theEvent, result, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppGetNextEventFilterProcInfo, (theEvent), (result))
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
|
||
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
|
||
|
#define NewGetNextEventFilterProc(userRoutine) NewGetNextEventFilterUPP(userRoutine)
|
||
|
#define CallGetNextEventFilterProc(userRoutine, theEvent, result) InvokeGetNextEventFilterUPP(theEvent, result, userRoutine)
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
typedef GetNextEventFilterUPP GNEFilterUPP;
|
||
|
/*
|
||
|
* GetDblTime()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt32 )
|
||
|
GetDblTime(void) TWOWORDINLINE(0x2EB8, 0x02F0);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SetEventMask()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
SetEventMask(EventMask value) TWOWORDINLINE(0x31DF, 0x0144);
|
||
|
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* GetEvQHdr()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( QHdrPtr )
|
||
|
GetEvQHdr(void) THREEWORDINLINE(0x2EBC, 0x0000, 0x014A);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* PPostEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 PPostEvent(__A0, __D0, __A1)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
PPostEvent(
|
||
|
EventKind eventCode,
|
||
|
UInt32 eventMsg,
|
||
|
EvQElPtr * qEl) TWOWORDINLINE(0xA12F, 0x2288);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
/*
|
||
|
* GetNextEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
GetNextEvent(
|
||
|
EventMask eventMask,
|
||
|
EventRecord * theEvent) ONEWORDINLINE(0xA970);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* WaitNextEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
WaitNextEvent(
|
||
|
EventMask eventMask,
|
||
|
EventRecord * theEvent,
|
||
|
UInt32 sleep,
|
||
|
RgnHandle mouseRgn) /* can be NULL */ ONEWORDINLINE(0xA860);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EventAvail()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
EventAvail(
|
||
|
EventMask eventMask,
|
||
|
EventRecord * theEvent) ONEWORDINLINE(0xA971);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* PostEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 PostEvent(__A0, __D0)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
PostEvent(
|
||
|
EventKind eventNum,
|
||
|
UInt32 eventMsg) ONEWORDINLINE(0xA02F);
|
||
|
|
||
|
|
||
|
/*
|
||
|
For Carbon, use EventAvail, TickCount, GetGlobalMouse,
|
||
|
GetKeys, or GetCurrentKeyModifiers instead of
|
||
|
OSEventAvail, and use GetNextEvent or WaitNextEvent
|
||
|
instead of GetOSEvent.
|
||
|
*/
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* OSEventAvail()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 OSEventAvail(__D0, __A0)
|
||
|
#endif
|
||
|
EXTERN_API( Boolean )
|
||
|
OSEventAvail(
|
||
|
EventMask mask,
|
||
|
EventRecord * theEvent) TWOWORDINLINE(0xA030, 0x5240);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GetOSEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 GetOSEvent(__D0, __A0)
|
||
|
#endif
|
||
|
EXTERN_API( Boolean )
|
||
|
GetOSEvent(
|
||
|
EventMask mask,
|
||
|
EventRecord * theEvent) TWOWORDINLINE(0xA031, 0x5240);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
/*
|
||
|
* FlushEvents()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
FlushEvents(
|
||
|
EventMask whichMask,
|
||
|
EventMask stopMask) TWOWORDINLINE(0x201F, 0xA032);
|
||
|
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* SystemClick()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
SystemClick(
|
||
|
const EventRecord * theEvent,
|
||
|
WindowRef theWindow) ONEWORDINLINE(0xA9B3);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SystemTask()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
SystemTask(void) ONEWORDINLINE(0xA9B4);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SystemEvent()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
SystemEvent(const EventRecord * theEvent) ONEWORDINLINE(0xA9B2);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if OLDROUTINENAMES
|
||
|
#define KeyTrans(transData, keycode, state) KeyTranslate(transData, keycode, state)
|
||
|
#endif /* OLDROUTINENAMES */
|
||
|
|
||
|
/*
|
||
|
GetGlobalMouse, GetCurrentKeyModifiers, and CheckEventQueueForUserCancel
|
||
|
are only available as part of the Carbon API.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* GetGlobalMouse()
|
||
|
*
|
||
|
* Summary:
|
||
|
* Returns the position of the mouse in global coordinates.
|
||
|
*
|
||
|
* Parameters:
|
||
|
*
|
||
|
* globalMouse:
|
||
|
* On exit, contains the mouse position in global coordinates.
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
GetGlobalMouse(Point * globalMouse);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GetCurrentKeyModifiers()
|
||
|
*
|
||
|
* Summary:
|
||
|
* Returns the current hardware keyboard modifier state.
|
||
|
*
|
||
|
* Discussion:
|
||
|
* In most cases, you should not use GetCurrentKeyModifiers, but
|
||
|
* should use the GetCurrentEventKeyModifiers function instead.
|
||
|
* GetCurrentEventKeyModifiers is much faster than
|
||
|
* GetCurrentKeyModifiers because it returns the locally cached
|
||
|
* modifier state; GetCurrentKeyModifiers must get the modifier
|
||
|
* state from the window server, which is slower. Using
|
||
|
* GetCurrentKeyModifiers also can prevent your application from
|
||
|
* being operated by remote posting of events, since the hardware
|
||
|
* input device is not actually changing state in that case. Most
|
||
|
* commonly, you might need to use GetCurrentKeyModifiers when your
|
||
|
* application is not the active application (as determined by the
|
||
|
* Process Manager function GetFrontProcess). In that case, the
|
||
|
* cached modifier state returned by GetCurrentEventKeyModifiers is
|
||
|
* not valid because modifier-changed events are not flowing to your
|
||
|
* application, and you must use GetCurrentKeyModifiers to determine
|
||
|
* the current hardware state.
|
||
|
*
|
||
|
* Result:
|
||
|
* The hardware state of the keyboard modifiers. The format of the
|
||
|
* return value is the same as the modifiers field of an EventRecord
|
||
|
* (but only includes keyboard modifiers and not the other modifier
|
||
|
* flags included in an EventRecord).
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt32 )
|
||
|
GetCurrentKeyModifiers(void);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* CheckEventQueueForUserCancel()
|
||
|
*
|
||
|
* Summary:
|
||
|
* Determines if there is a cancel event in the main thread's event
|
||
|
* queue.
|
||
|
*
|
||
|
* Discussion:
|
||
|
* This API supports two cancel events: Escape and Cmd-Period. The
|
||
|
* cancel event itself, as well as mouse or keyboard events in front
|
||
|
* of the cancel event in the event queue, will be removed from the
|
||
|
* queue.
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: in CarbonLib 1.0.2 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
CheckEventQueueForUserCancel(void);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* KeyScript()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
KeyScript(short code) FOURWORDINLINE(0x2F3C, 0x8002, 0x0004, 0xA8B5);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* IsCmdChar()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
IsCmdChar(
|
||
|
const EventRecord * event,
|
||
|
short test) FOURWORDINLINE(0x2F3C, 0x8206, 0xFFD0, 0xA8B5);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
LowMem accessor functions previously in LowMem.h
|
||
|
*/
|
||
|
/*
|
||
|
* LMGetKeyThresh()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( SInt16 )
|
||
|
LMGetKeyThresh(void) TWOWORDINLINE(0x3EB8, 0x018E);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMSetKeyThresh()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
LMSetKeyThresh(SInt16 value) TWOWORDINLINE(0x31DF, 0x018E);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMGetKeyRepThresh()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( SInt16 )
|
||
|
LMGetKeyRepThresh(void) TWOWORDINLINE(0x3EB8, 0x0190);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMSetKeyRepThresh()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
LMSetKeyRepThresh(SInt16 value) TWOWORDINLINE(0x31DF, 0x0190);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMGetKbdLast()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt8 )
|
||
|
LMGetKbdLast(void) TWOWORDINLINE(0x1EB8, 0x0218);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMSetKbdLast()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
LMSetKbdLast(UInt8 value) TWOWORDINLINE(0x11DF, 0x0218);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMGetKbdType()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt8 )
|
||
|
LMGetKbdType(void) TWOWORDINLINE(0x1EB8, 0x021E);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* LMSetKbdType()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
LMSetKbdType(UInt8 value) TWOWORDINLINE(0x11DF, 0x021E);
|
||
|
|
||
|
|
||
|
|
||
|
#if PRAGMA_STRUCT_ALIGN
|
||
|
#pragma options align=reset
|
||
|
#elif PRAGMA_STRUCT_PACKPUSH
|
||
|
#pragma pack(pop)
|
||
|
#elif PRAGMA_STRUCT_PACK
|
||
|
#pragma pack()
|
||
|
#endif
|
||
|
|
||
|
#ifdef PRAGMA_IMPORT_OFF
|
||
|
#pragma import off
|
||
|
#elif PRAGMA_IMPORT
|
||
|
#pragma import reset
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __EVENTS__ */
|
||
|
|