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.
937 lines
28 KiB
937 lines
28 KiB
/* |
|
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__ */ |
|
|
|
|