Annotation of XNU/iokit/IOKit/hidsystem/IOLLEvent.h, revision 1.1.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.