Annotation of XNU/iokit/IOKit/hidsystem/IOLLEvent.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /******************************************************************************
        !            23:        event.h (PostScript side version)
        !            24:        
        !            25:        CONFIDENTIAL
        !            26:        Copyright (c) 1988 NeXT, Inc. as an unpublished work.
        !            27:        All Rights Reserved.
        !            28: 
        !            29:        Created Leo 01Mar88
        !            30: 
        !            31:        Modified:
        !            32:        04May88 Leo  Final event types and record
        !            33:        22Aug88 Leo  Change short -> int for window, add reserved
        !            34:        26May90 Ted  Added NX_UNDIMMASK to correct triggering of UndoAutoDim
        !            35:        12Dec91 Mike Brought into sync with dpsclient/event.h, and fixed
        !            36:                     the #ifndef interlock with dpsclient/event.h that was
        !            37:                     broken during the Great Header Revision.
        !            38: 
        !            39:        The PostScript version of this file differs from the
        !            40:        Window Kit version in that the coordinates here are
        !            41:        ints instead of floats.
        !            42: ******************************************************************************/
        !            43: 
        !            44: #ifndef _DEV_EVENT_H
        !            45: #define _DEV_EVENT_H
        !            46: 
        !            47: #include <libkern/OSTypes.h>
        !            48: #include <IOKit/hidsystem/IOHIDTypes.h>
        !            49: 
        !            50: #ifdef EVENT_H         /* Interlock with dpsclient/event.h */
        !            51: #if !defined(_NXSIZE_) /* Work around patch for old event.h in Phase 3 projs*/
        !            52: #define _NXSIZE_       1       /* NXCoord, NXPoint, NXSize decl seen */
        !            53: #define _NXSize_       NXSize
        !            54: #endif /* _NXSIZE_ */
        !            55: #else  /* EVENT_H */           /* Haven't seen dpsclient/event.h, so define away */
        !            56: #define EVENT_H
        !            57: 
        !            58: #ifdef KERNEL
        !            59: #else  /* KERNEL */
        !            60: 
        !            61: #if !defined(_NXSIZE_) /* Work around patch for old event.h in Phase 3 projs*/
        !            62: #define _NXSIZE_       1       /* NXCoord, NXPoint, NXSize decl seen */
        !            63: typedef float   NXCoord;
        !            64: 
        !            65: typedef struct _NXPoint {      /* point */
        !            66:     NXCoord         x, y;
        !            67: } NXPoint;
        !            68: 
        !            69: typedef struct _NXSize {       /* size */
        !            70:     NXCoord         width, height;
        !            71: } NXSize;
        !            72: #define _NXSize_       NXSize  /* Correct usage in event_status_driver.h */
        !            73: #endif /* _NXSIZE_ */
        !            74: 
        !            75: #endif /* KERNEL */
        !            76: 
        !            77: /* Event types */
        !            78: 
        !            79: #define NX_NULLEVENT           0       /* internal use */
        !            80: 
        !            81: /* mouse events */
        !            82: 
        !            83: #define NX_LMOUSEDOWN          1       /* left mouse-down event */
        !            84: #define NX_LMOUSEUP            2       /* left mouse-up event */
        !            85: #define NX_RMOUSEDOWN          3       /* right mouse-down event */
        !            86: #define NX_RMOUSEUP            4       /* right mouse-up event */
        !            87: #define NX_MOUSEMOVED          5       /* mouse-moved event */
        !            88: #define NX_LMOUSEDRAGGED       6       /* left mouse-dragged event */
        !            89: #define NX_RMOUSEDRAGGED       7       /* right mouse-dragged event */
        !            90: #define NX_MOUSEENTERED                8       /* mouse-entered event */
        !            91: #define NX_MOUSEEXITED         9       /* mouse-exited event */
        !            92: 
        !            93: /* keyboard events */
        !            94: 
        !            95: #define NX_KEYDOWN             10      /* key-down event */
        !            96: #define NX_KEYUP               11      /* key-up event */
        !            97: #define NX_FLAGSCHANGED                12      /* flags-changed event */
        !            98: 
        !            99: /* composite events */
        !           100: 
        !           101: #define NX_KITDEFINED          13      /* application-kit-defined event */
        !           102: #define NX_SYSDEFINED          14      /* system-defined event */
        !           103: #define NX_APPDEFINED          15      /* application-defined event */
        !           104: /* There are additional DPS client defined events past this point. */
        !           105: 
        !           106: /* Scroll wheel events */
        !           107: 
        !           108: #define NX_SCROLLWHEELMOVED    22
        !           109: 
        !           110: /* tablet events */
        !           111: 
        !           112: #define NX_TABLETPOINTER       23
        !           113: #define NX_TABLETPROXIMITY     24
        !           114: 
        !           115: #define NX_FIRSTEVENT          0
        !           116: #define NX_LASTEVENT           24
        !           117: #define NX_NUMPROCS            (NX_LASTEVENT-NX_FIRSTEVENT+1)
        !           118: 
        !           119: /* Event masks */
        !           120: 
        !           121: #define NX_LMOUSEDOWNMASK      (1 << NX_LMOUSEDOWN)    /* left mouse-down */
        !           122: #define NX_LMOUSEUPMASK                (1 << NX_LMOUSEUP)      /* left mouse-up */
        !           123: #define NX_RMOUSEDOWNMASK      (1 << NX_RMOUSEDOWN)    /* right mouse-down */
        !           124: #define NX_RMOUSEUPMASK                (1 << NX_RMOUSEUP)      /* right mouse-up */
        !           125: #define NX_MOUSEMOVEDMASK      (1 << NX_MOUSEMOVED)    /* mouse-moved */
        !           126: #define NX_LMOUSEDRAGGEDMASK   (1 << NX_LMOUSEDRAGGED) /* left-dragged */
        !           127: #define NX_RMOUSEDRAGGEDMASK   (1 << NX_RMOUSEDRAGGED) /* right-dragged */
        !           128: #define NX_MOUSEENTEREDMASK    (1 << NX_MOUSEENTERED)  /* mouse-entered */
        !           129: #define NX_MOUSEEXITEDMASK     (1 << NX_MOUSEEXITED)   /* mouse-exited */
        !           130: #define NX_KEYDOWNMASK         (1 << NX_KEYDOWN)       /* key-down */
        !           131: #define NX_KEYUPMASK           (1 << NX_KEYUP)         /* key-up */
        !           132: #define NX_FLAGSCHANGEDMASK    (1 << NX_FLAGSCHANGED)  /* flags-changed */
        !           133: #define NX_KITDEFINEDMASK      (1 << NX_WINCHANGED)    /* kit-defined */
        !           134: #define NX_SYSDEFINEDMASK      (1 << NX_SYSDEFINED)    /* system-defined */
        !           135: #define NX_APPDEFINEDMASK      (1 << NX_APPDEFINED)    /* app-defined */
        !           136: #define NX_SCROLLWHEELMOVEDMASK        (1 << NX_SCROLLWHEELMOVED)      /* scroll wheel moved */
        !           137: #define NX_TABLETPOINTERMASK   (1 << NX_TABLETPOINTER) /* tablet pointer moved */
        !           138: #define NX_TABLETPROXIMITYMASK (1 << NX_TABLETPROXIMITY)       /* tablet pointer proximity */
        !           139: 
        !           140: #define EventCodeMask(type)    (1 << (type))
        !           141: #define NX_ALLEVENTS           -1      /* Check for all events */
        !           142: 
        !           143: 
        !           144: /* Masks for the bits in event.flags */
        !           145: 
        !           146: /* device-independent */
        !           147: 
        !           148: #define        NX_ALPHASHIFTMASK       0x00010000
        !           149: #define        NX_SHIFTMASK            0x00020000
        !           150: #define        NX_CONTROLMASK          0x00040000
        !           151: #define        NX_ALTERNATEMASK        0x00080000
        !           152: #define        NX_COMMANDMASK          0x00100000
        !           153: #define        NX_NUMERICPADMASK       0x00200000
        !           154: #define        NX_HELPMASK             0x00400000
        !           155: 
        !           156: /* device-dependent (really?) */
        !           157: 
        !           158: //#define      NX_NEXTCTLKEYMASK       0x00000001
        !           159: //#define      NX_NEXTLSHIFTKEYMASK    0x00000002
        !           160: //#define      NX_NEXTRSHIFTKEYMASK    0x00000004
        !           161: //#define      NX_NEXTLCMDKEYMASK      0x00000008
        !           162: //#define      NX_NEXTRCMDKEYMASK      0x00000010
        !           163: //#define      NX_NEXTLALTKEYMASK      0x00000020
        !           164: //#define      NX_NEXTRALTKEYMASK      0x00000040
        !           165: 
        !           166: /* 
        !           167:  * Additional reserved bits in event.flags
        !           168:  */
        !           169: 
        !           170: #define NX_STYLUSPROXIMITYMASK 0x00000080
        !           171: #define NX_NONCOALSESCEDMASK   0x00000100
        !           172: 
        !           173: /* click state values
        !           174:  * If you have the following events in close succession, the click
        !           175:  * field has the indicated value:
        !           176:  *     
        !           177:  *  Event      Click Value     Comments
        !           178:  *  mouse-down 1               Not part of any click yet
        !           179:  *  mouse-up   1               Aha! A click!
        !           180:  *  mouse-down 2               Doing a double-click
        !           181:  *  mouse-up   2               It's finished
        !           182:  *  mouse-down 3               A triple
        !           183:  *  mouse-up   3
        !           184:  */
        !           185: 
        !           186: /* Values for the character set in event.data.key.charSet */
        !           187: 
        !           188: #define        NX_ASCIISET             0
        !           189: #define NX_SYMBOLSET           1
        !           190: #define        NX_DINGBATSSET          2
        !           191: 
        !           192: /* EventData type: defines the data field of an event */
        !           193: 
        !           194: #if EVENT_SYSTEM_VERSION > 1                   /****** EVENT_SYSTEM_VERSION > 1 ******/
        !           195: 
        !           196: typedef        union {
        !           197:     struct {   /* For mouse-down and mouse-up events */
        !           198:        unsigned char   subx;           /* sub-pixel position for x */
        !           199:        unsigned char   suby;           /* sub-pixel position for y */
        !           200:        short           eventNum;       /* unique identifier for this button */
        !           201:        int             click;          /* click state of this event */
        !           202:        unsigned char   pressure;       /* pressure value: 0=none, 255=full */
        !           203:        char            reserved1;
        !           204:        short           reserved2;
        !           205:         int            reserved3;
        !           206:         int            reserved4;
        !           207:         int            reserved5;
        !           208:         int            reserved6;
        !           209:         int            reserved7;
        !           210:     } mouse;
        !           211:     struct {
        !           212:         int            dx;
        !           213:         int            dy;
        !           214:         int            reserved1;
        !           215:         int            reserved2;
        !           216:         int            reserved3;
        !           217:         int            reserved4;
        !           218:         int            reserved5;
        !           219:         int            reserved6;
        !           220:     } mouseMove;
        !           221:     struct {   /* For key-down and key-up events */
        !           222:        unsigned short  origCharSet;    /* unmodified character set code */
        !           223:        short           repeat;  /* for key-down: nonzero if really a repeat */
        !           224:        unsigned short  charSet;        /* character set code */
        !           225:        unsigned short  charCode;       /* character code in that set */
        !           226:        unsigned short  keyCode;        /* device-dependent key number */
        !           227:        unsigned short  origCharCode;   /* unmodified character code */
        !           228:         int            reserved1;
        !           229:         int            reserved2;
        !           230:         int            reserved3;
        !           231:         int            reserved4;
        !           232:         int            reserved5;
        !           233:     } key;
        !           234:     struct {   /* For mouse-entered and mouse-exited events */
        !           235:        short   reserved;
        !           236:         short  eventNum;       /* unique identifier from mouse down event */
        !           237:         int    trackingNum;    /* unique identifier from settrackingrect */
        !           238:         int    userData;   /* uninterpreted integer from settrackingrect */
        !           239:         int            reserved1;
        !           240:         int            reserved2;
        !           241:         int            reserved3;
        !           242:         int            reserved4;
        !           243:         int            reserved5;
        !           244:     } tracking;
        !           245:     struct {
        !           246:         short  deltaAxis1;
        !           247:         short  deltaAxis2;
        !           248:         short  deltaAxis3;
        !           249:         short  reserved1;
        !           250:         int    reserved2;
        !           251:         int    reserved3;
        !           252:         int    reserved4;
        !           253:         int    reserved5;
        !           254:         int    reserved6;
        !           255:         int    reserved7;
        !           256:     } scrollWheel;
        !           257:     struct {   /* For window-changed, sys-defined, and app-defined events */
        !           258:        short   reserved;
        !           259:         short  subType;        /* event subtype for compound events */
        !           260:         union {
        !           261:             float      F[2];   /* for use in compound events */
        !           262:             long       L[2];   /* for use in compound events */
        !           263:             short      S[4];   /* for use in compound events */
        !           264:             char       C[8];   /* for use in compound events */
        !           265:         } misc;
        !           266:         int    reserved2;
        !           267:         int    reserved3;
        !           268:         int    reserved4;
        !           269:         int    reserved5;
        !           270:         int    reserved6;
        !           271:     } compound;
        !           272:     struct {
        !           273:         SInt32 x;      /* absolute x coordinate in tablet space at full tablet resolution */
        !           274:         SInt32 y;      /* absolute y coordinate in tablet space at full tablet resolution */
        !           275:         SInt32 z;      /* absolute z coordinate in tablet space at full tablet resolution */
        !           276:         UInt16 buttons;        /* one bit per button - bit 0 is first button - 1 = closed */ 
        !           277:         UInt16 pressure;       /* scaled pressure value; MAXPRESSURE=(2^16)-1, MINPRESSURE=0 */
        !           278:         struct {
        !           279:             SInt16 x;  /* scaled tilt x value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */
        !           280:             SInt16 y;  /* scaled tilt y value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */
        !           281:         } tilt;
        !           282:         UInt16 rotation;       /* Fixed-point representation of device rotation in a 10.6 format */
        !           283:         SInt16 tangentialPressure;     /* tangential pressure on the device; range same as tilt */
        !           284:         UInt16 deviceID;       /* system-assigned unique device ID - matches to deviceID field in proximity event */
        !           285:         SInt16 vendor1;        /* vendor-defined signed 16-bit integer */
        !           286:         SInt16 vendor2;        /* vendor-defined signed 16-bit integer */
        !           287:         SInt16 vendor3;        /* vendor-defined signed 16-bit integer */
        !           288:     } tablet;
        !           289:     struct {
        !           290:         UInt16 vendorID;       /* vendor-defined ID - typically will be USB vendor ID */
        !           291:         UInt16 tabletID;       /* vendor-defined tablet ID - typically will be USB product ID for the tablet */
        !           292:         UInt16 pointerID;      /* vendor-defined ID of the specific pointing device */
        !           293:         UInt16 deviceID;       /* system-assigned unique device ID - matches to deviceID field in tablet event */
        !           294:         UInt16 systemTabletID; /* system-assigned unique tablet ID */
        !           295:         UInt16 vendorPointerType;      /* vendor-defined pointer type */
        !           296:         UInt32  pointerSerialNumber;   /* vendor-defined serial number of the specific pointing device */
        !           297:         UInt64 uniqueID;       /* vendor-defined unique ID for this pointer */
        !           298:         UInt32 capabilityMask; /* mask representing the capabilities of the device */
        !           299:         UInt8  pointerType;    /* type of pointing device - enum to be defined */
        !           300:         UInt8  enterProximity; /* non-zero = entering; zero = leaving */
        !           301:         SInt16 reserved1;
        !           302:     } proximity;
        !           303: } NXEventData;
        !           304: 
        !           305: /* Finally! The event record! */
        !           306: typedef struct _NXEvent {
        !           307:     int                        type;           /* An event type from above */
        !           308:     struct {
        !           309:        int             x, y;           /* Base coordinates in window, */
        !           310:     }                  location;       /* from bottom left */
        !           311:     unsigned long long time;           /* time since launch */
        !           312:     int                        flags;          /* key state flags */
        !           313:     unsigned int       window;         /* window number of assigned window */
        !           314:     NXEventData                data;           /* type-dependent data */
        !           315: } NXEvent, *NXEventPtr;
        !           316: 
        !           317: #else                          /****** EVENT_SYSTEM_VERSION <= 1 ******/
        !           318: 
        !           319: typedef        union {
        !           320:     struct {   /* For mouse-down and mouse-up events */
        !           321:         unsigned char  subx;           /* sub-pixel position for x */
        !           322:         unsigned char  suby;           /* sub-pixel position for y */
        !           323:         short          eventNum;       /* unique identifier for this button */
        !           324:         int            click;          /* click state of this event */
        !           325:         unsigned char  pressure;       /* pressure value: 0=none, 255=full */
        !           326:         char           reserved1;
        !           327:         short          reserved2;
        !           328:     } mouse;
        !           329:     struct {   /* For key-down and key-up events */
        !           330:         unsigned short origCharSet;    /* unmodified character set code */
        !           331:         short          repeat;  /* for key-down: nonzero if really a repeat */
        !           332:         unsigned short charSet;        /* character set code */
        !           333:         unsigned short charCode;       /* character code in that set */
        !           334:         unsigned short keyCode;        /* device-dependent key number */
        !           335:         unsigned short origCharCode;   /* unmodified character code */
        !           336:     } key;
        !           337:     struct {   /* For mouse-entered and mouse-exited events */
        !           338:         short  reserved;
        !           339:         short  eventNum;       /* unique identifier from mouse down event */
        !           340:         int    trackingNum;    /* unique identifier from settrackingrect */
        !           341:         int    userData;   /* uninterpreted integer from settrackingrect */
        !           342:     } tracking;
        !           343:     struct {
        !           344:         short  deltaAxis1;
        !           345:         short  deltaAxis2;
        !           346:         short  deltaAxis3;
        !           347:         short  reserved1;
        !           348:         int    reserved2;
        !           349:     } scrollWheel;
        !           350:     struct {   /* For window-changed, sys-defined, and app-defined events */
        !           351:         short  reserved;
        !           352:         short  subType;        /* event subtype for compound events */
        !           353:         union {
        !           354:             float      F[2];   /* for use in compound events */
        !           355:             long       L[2];   /* for use in compound events */
        !           356:             short      S[4];   /* for use in compound events */
        !           357:             char       C[8];   /* for use in compound events */
        !           358:         } misc;
        !           359:     } compound;
        !           360: } NXEventData;
        !           361: 
        !           362: /* Finally! The event record! */
        !           363: typedef struct _NXEvent {
        !           364:     int                        type;           /* An event type from above */
        !           365:     struct {
        !           366:         int            x, y;           /* Base coordinates in window, */
        !           367:     }                  location;       /* from bottom left */
        !           368:     long               time;           /* vertical intervals since launch */
        !           369:     int                        flags;          /* key state flags */
        !           370:     unsigned int       window;         /* window number of assigned window */
        !           371:     NXEventData                data;           /* type-dependent data */
        !           372: } NXEvent, *NXEventPtr;
        !           373: 
        !           374: #endif                                                 /****** EVENT_SYSTEM_VERSION <= 1 ******/
        !           375: 
        !           376: /* How to pick window(s) for event (for PostEvent) */
        !           377: #define NX_NOWINDOW            -1
        !           378: #define NX_BYTYPE              0
        !           379: #define NX_BROADCAST           1
        !           380: #define NX_TOPWINDOW           2
        !           381: #define NX_FIRSTWINDOW         3
        !           382: #define NX_MOUSEWINDOW         4
        !           383: #define NX_NEXTWINDOW          5
        !           384: #define NX_LASTLEFT            6
        !           385: #define NX_LASTRIGHT           7
        !           386: #define NX_LASTKEY             8
        !           387: #define NX_EXPLICIT            9
        !           388: #define NX_TRANSMIT            10
        !           389: #define NX_BYPSCONTEXT         11
        !           390: 
        !           391: #endif /* EVENT_H */   /* End of defs common with dpsclient/event.h */
        !           392: 
        !           393: /* Mask of events that cause screen to undim */
        !           394: 
        !           395: #define NX_UNDIMMASK           (NX_KEYDOWNMASK | NX_KEYUPMASK | \
        !           396:                                 NX_LMOUSEDOWNMASK | NX_LMOUSEUPMASK | \
        !           397:                                 NX_RMOUSEDOWNMASK | NX_RMOUSEUPMASK | \
        !           398:                                 NX_MOUSEMOVEDMASK | NX_FLAGSCHANGEDMASK | \
        !           399:                                 NX_MOUSEENTEREDMASK | NX_MOUSEEXITEDMASK | \
        !           400:                                 NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK | \
        !           401:                  NX_SCROLLWHEELMOVEDMASK | NX_TABLETPOINTERMASK | \
        !           402:                        NX_TABLETPROXIMITYMASK)
        !           403: 
        !           404: #endif /* !_DEV_EVENT_H */
        !           405: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.