Annotation of XNU/iokit/IOKit/hidsystem/IOHIPointing.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: #ifndef _IOHIPOINTING_H
                     23: #define _IOHIPOINTING_H
                     24: 
                     25: #include <IOKit/hidsystem/IOHIPointing.h>
                     26: #include <IOKit/hidsystem/IOHIDevice.h>
                     27: #include <IOKit/hidsystem/IOHIDTypes.h>
                     28: 
                     29: /* Start Action Definitions */
                     30: 
                     31: /*
                     32:  * HISTORICAL NOTE:
                     33:  *   The following entry points were part of the IOHIPointingEvents
                     34:  *   protocol.
                     35:  */
                     36: typedef void (*RelativePointerEventAction)(OSObject * target,
                     37:                         /* buttons */      int        buttons,
                     38:                         /* deltaX */       int        dx,
                     39:                         /* deltaY */       int        dy,
                     40:                         /* atTime */       AbsoluteTime ts);
                     41: 
                     42: typedef void (*AbsolutePointerEventAction)(OSObject * target,
                     43:                         /* buttons */      int        buttons,
                     44:                         /* at */           Point *    newLoc,
                     45:                         /* withBounds */   Bounds *   bounds,
                     46:                         /* inProximity */  bool       proximity,
                     47:                         /* withPressure */ int        pressure,
                     48:                         /* withAngle */    int        stylusAngle,
                     49:                         /* atTime */       AbsoluteTime ts);
                     50: 
                     51: typedef void (*ScrollWheelEventAction)(OSObject * target,
                     52:                                        short      deltaAxis1,
                     53:                                        short      deltaAxis2,
                     54:                                        short      deltaAxis3,
                     55:                                        AbsoluteTime ts);
                     56: 
                     57: /* End Action Definitions */
                     58: 
                     59: typedef struct
                     60: {
                     61:     IOFixed    deviceSpeed;
                     62:     IOFixed    cursorSpeed;
                     63: } IOHIAccelerationPoint;
                     64: 
                     65: class IOHIPointing : public IOHIDevice
                     66: {
                     67:     OSDeclareDefaultStructors(IOHIPointing);
                     68: 
                     69: private:
                     70:     IOLock *           _deviceLock;  // Lock for all device access
                     71:     int                        _buttonMode;  // The "handedness" of the pointer
                     72:     IOFixed            _acceleration;
                     73:     bool               _convertAbsoluteToRelative;
                     74:     bool               _contactToMove;
                     75:     bool               _hadContact;
                     76:     Point              _previousLocation;
                     77:     UInt8              _pressureThresholdToClick;      // A scale factor of 0 to 255 to determine how much pressure is necessary to generate a primary mouse click - a value of 255 means no click will be generated
                     78: #define MAXMAG 128
                     79:     int                        _scaleValues[MAXMAG];
                     80:     IOFixed            _fractX;
                     81:     IOFixed            _fractY;
                     82: 
                     83:     OSObject *                 _relativePointerEventTarget;
                     84:     RelativePointerEventAction _relativePointerEventAction;
                     85:     OSObject *                 _absolutePointerEventTarget;
                     86:     AbsolutePointerEventAction _absolutePointerEventAction;
                     87:     OSObject *                 _scrollWheelEventTarget;
                     88:     ScrollWheelEventAction     _scrollWheelEventAction;
                     89:     
                     90: 
                     91: protected:
                     92:   virtual void dispatchRelativePointerEvent(int        dx,
                     93:                                             int        dy,
                     94:                                             UInt32     buttonState,
                     95:                                             AbsoluteTime ts);
                     96:     
                     97:   virtual void dispatchAbsolutePointerEvent(Point *    newLoc,
                     98:                                             Bounds *   bounds,
                     99:                                             UInt32     buttonState,
                    100:                                             bool       proximity,
                    101:                                             int                pressure,
                    102:                                             int                pressureMin,
                    103:                                             int                pressureMax,
                    104:                                             int                stylusAngle,
                    105:                                             AbsoluteTime       ts);
                    106: 
                    107:   virtual void dispatchScrollWheelEvent(short deltaAxis1,
                    108:                                         short deltaAxis2,
                    109:                                         short deltaAxis3,
                    110:                                         AbsoluteTime ts);
                    111: 
                    112: public:
                    113:   virtual bool init(OSDictionary * properties = 0);
                    114:   virtual bool start(IOService * provider);
                    115:   virtual void free();
                    116: 
                    117:   virtual bool open(IOService *                client,
                    118:                    IOOptionBits               options,
                    119:                     RelativePointerEventAction rpeAction,
                    120:                     AbsolutePointerEventAction apeAction,
                    121:                     ScrollWheelEventAction     sweAction);
                    122:   virtual void close(IOService * client, IOOptionBits );
                    123: 
                    124:   virtual IOHIDKind hidKind();
                    125:   virtual bool             updateProperties( void );
                    126:   virtual IOReturn  setParamProperties(OSDictionary * dict);
                    127: 
                    128: protected: // for subclasses to implement
                    129:   virtual void accelerationTable(IOHIAccelerationPoint ** table,
                    130:                                 IOItemCount *            numEntries);
                    131:   virtual IOItemCount buttonCount();
                    132:   virtual IOFixed     resolution();
                    133: 
                    134: private:
                    135:   virtual bool resetPointer();
                    136:   virtual void scalePointer(int * dxp, int * dyp);
                    137:   virtual void setupForAcceleration(IOFixed accl);
                    138: };
                    139: 
                    140: #endif /* !_IOHIPOINTING_H */

unix.superglobalmegacorp.com

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