ioef/code/macosx/CGPrivateAPI.h
2005-08-28 17:54:51 +00:00

185 lines
8.4 KiB
C

/*
===========================================================================
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
along with Foobar; if not, write to the Free Software
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)