2005-08-26 17:39:27 +00:00
/*
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Copyright ( C ) 1999 - 2005 Id Software , Inc .
This file is part of Quake III Arena source code .
Quake III Arena source code is free software ; you can redistribute it
and / or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation ; either version 2 of the License ,
or ( at your option ) any later version .
Quake III Arena source code is distributed in the hope that it will be
useful , but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2005-10-29 01:53:09 +00:00
along with Quake III Arena source code ; if not , write to the Free Software
2005-08-26 17:39:27 +00:00
Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
*/
typedef unsigned long CGSNotificationType ;
typedef void * CGSNotificationData ;
typedef void * CGSNotificationArg ;
typedef void * CGSWindowID ;
typedef void * CGSConnectionID ;
typedef unsigned long long CGSUInt64 ;
typedef long long CGSInt64 ;
typedef unsigned long CGSUInt32 ;
typedef long CGSInt32 ;
typedef unsigned short CGSUInt16 ;
typedef short CGSInt16 ;
typedef unsigned char CGSUInt8 ;
typedef char CGSInt8 ;
typedef float CGSFloat32 ;
typedef CGSUInt32 CGSByteCount ;
typedef CGSUInt16 CGSEventRecordVersion ;
typedef unsigned long CGSEventType ;
typedef CGSUInt64 CGSEventRecordTime ; /* nanosecond timer */
typedef unsigned long CGSEventFlag ;
typedef CGSUInt32 CGSError ;
typedef union {
struct { /* For mouse events */
CGSUInt8 subx ; /* sub-pixel position for x */
CGSUInt8 suby ; /* sub-pixel position for y */
CGSInt16 eventNum ; /* unique identifier for this button */
CGSInt32 click ; /* click state of this event */
CGSUInt8 pressure ; /* pressure value: 0=none, 255=full */
CGSInt8 _reserved1 ;
CGSInt16 _reserved2 ;
CGSInt16 deltaX ;
CGSInt16 deltaY ;
CGSInt32 _padding [ 8 ] ;
} mouse ;
struct { /* For pointer movement events */
CGSInt16 _obsolete_deltaX ; /* Revert to subX, subY, eventNum */
CGSInt16 _obsolete_deltaY ; /* for Gonzo 1H */
CGSInt32 click ; /* click state of this event */
CGSUInt8 pressure ; /* pressure value: 0=none, 255=full */
CGSInt8 _reserved1 ;
CGSInt16 _reserved2 ;
CGSInt16 deltaX ;
CGSInt16 deltaY ;
CGSInt32 _padding [ 8 ] ;
} move ;
struct { /* For key-down and key-up events */
CGSInt16 reserved ;
CGSInt16 repeat ; /* for key-down: nonzero if really a repeat */
CGSUInt16 charSet ; /* character set code */
CGSUInt16 charCode ; /* character code in that set */
CGSUInt16 keyCode ; /* device-dependent virtual key code */
CGSInt16 keyData ; /* device-dependent info */
CGSInt16 specialKey ; /* CPSSpecialKeyID if kCGSFlagsMaskSpecialKey is set */
CGSInt16 _pad ;
CGSInt32 _padding [ 8 ] ;
} key ;
struct { /* For mouse-entered and mouse-exited events */
CGSInt16 reserved ;
CGSInt16 eventNum ; /* unique identifier from mouse down event */
CGSInt32 trackingNum ; /* unique identifier from settrackingrect */
CGSInt32 userData ; /* unCGSInt32erpreted CGSInt32eger from settrackingrect */
CGSInt32 _padding [ 9 ] ;
} tracking ;
struct { /* For process-related events */
CGSUInt16 notifyCode ; /* CPSNotificationCodes in CPSProcesses.h */
CGSUInt16 flags ; /* CPSEventFlags in CPSProcesses.h */
CGSUInt32 targetHiPSN ; /* hiword of PSN */
CGSUInt32 targetLoPSN ; /* loword of PSN */
CGSInt32 status ; /* operation result */
CGSInt32 _padding [ 8 ] ;
} process ;
struct { /* For scroll wheel events */
CGSInt16 deltaAxis1 ;
CGSInt16 deltaAxis2 ;
CGSInt16 deltaAxis3 ;
CGSInt16 reserved1 ;
CGSInt32 reserved2 ;
CGSInt32 _padding [ 9 ] ;
} scrollWheel ;
struct {
CGSInt32 x ; /* absolute x coordinate in tablet space at full tablet resolution */
CGSInt32 y ; /* absolute y coordinate in tablet space at full tablet resolution */
CGSInt32 z ; /* absolute z coordinate in tablet space at full tablet resolution */
CGSUInt16 buttons ; /* one bit per button - bit 0 is first button - 1 = closed */
CGSUInt16 pressure ; /* scaled pressure value; MAXPRESSURE=(2^16)-1, MINPRESSURE=0 */
struct {
CGSInt16 x ; /* scaled tilt x value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */
CGSInt16 y ; /* scaled tilt y value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */
} tilt ;
CGSUInt16 rotation ; /* Fixed-point representation of device rotation in a 10.6 format */
CGSInt16 tangentialPressure ; /* tangential pressure on the device; range same as tilt */
CGSUInt16 deviceID ; /* system-assigned unique device ID - matches to deviceID field in proximity event */
CGSInt16 vendor1 ; /* vendor-defined signed 16-bit integer */
CGSInt16 vendor2 ; /* vendor-defined signed 16-bit integer */
CGSInt16 vendor3 ; /* vendor-defined signed 16-bit integer */
CGSInt32 _padding [ 4 ] ;
} tablet ;
struct {
CGSUInt16 vendorID ; /* vendor-defined ID - typically will be USB vendor ID */
CGSUInt16 tabletID ; /* vendor-defined tablet ID - typically will be USB product ID for the tablet */
CGSUInt16 pointerID ; /* vendor-defined ID of the specific pointing device */
CGSUInt16 deviceID ; /* system-assigned unique device ID - matches to deviceID field in tablet event */
CGSUInt16 systemTabletID ; /* system-assigned unique tablet ID */
CGSUInt16 vendorPointerType ; /* vendor-defined pointer type */
CGSUInt32 pointerSerialNumber ; /* vendor-defined serial number of the specific pointing device */
CGSUInt64 uniqueID ; /* vendor-defined unique ID for this pointer */
CGSUInt32 capabilityMask ; /* mask representing the capabilities of the device */
CGSUInt8 pointerType ; /* type of pointing device - enum to be defined */
CGSUInt8 enterProximity ; /* non-zero = entering; zero = leaving */
CGSInt16 reserved1 ;
CGSInt32 _padding [ 4 ] ;
} proximity ;
struct { /* For AppKit-defined, sys-defined, and app-defined events */
CGSInt16 reserved ;
CGSInt16 subtype ; /* event subtype for compound events */
union {
CGSFloat32 F [ 11 ] ; /* for use in compound events */
CGSInt32 L [ 11 ] ; /* for use in compound events */
CGSInt16 S [ 22 ] ; /* for use in compound events */
CGSInt8 C [ 44 ] ; /* for use in compound events */
} misc ;
} compound ;
} CGSEventRecordData ;
struct _CGSEventRecord {
CGSEventRecordVersion major ;
CGSEventRecordVersion minor ;
CGSByteCount length ; /* Length of complete event record */
CGSEventType type ; /* An event type from above */
CGPoint location ; /* Base coordinates (global), from upper-left */
CGPoint windowLocation ; /* Coordinates relative to window */
CGSEventRecordTime time ; /* nanoseconds since startup */
CGSEventFlag flags ; /* key state flags */
CGSWindowID window ; /* window number of assigned window */
CGSConnectionID connection ; /* connection the event came from */
CGSEventRecordData data ; /* type-dependent data: 40 bytes */
} ;
typedef struct _CGSEventRecord CGSEventRecord ;
typedef CGSEventRecord * CGSEventRecordPtr ;
typedef void ( * CGSNotifyProcPtr ) ( CGSNotificationType type ,
CGSNotificationData data ,
CGSByteCount dataLength ,
CGSNotificationArg arg ) ;
// Define a type for the 'CGSRegisterNotifyProc' call. Don't reference it explicitly since we don't want link errors if Apple removes this private function.
typedef CGSError ( * CGSRegisterNotifyProcType ) ( CGSNotifyProcPtr proc ,
CGSNotificationType type ,
CGSNotificationArg arg ) ;
# define kCGSEventNotificationMouseMoved (710 + 5)
# define kCGSEventNotificationLeftMouseDragged (710 + 6)
# define kCGSEventNotificationRightMouseDragged (710 + 7)
# define kCGSEventNotificationNotificationOtherMouseDragged (710 + 27)