#include <IOKit/adb/IOADBDevice.h>
#include <IOKit/hidsystem/IOHIPointing.h>
#include <IOKit/hid/IOHIDDevice.h>
#define TRUE 1
#define FALSE 0
class AppleADBMouse: public IOHIPointing
{
OSDeclareDefaultStructors(AppleADBMouse);
protected:
IOADBDevice * adbDevice;
IOFixed _resolution;
IOItemCount _buttonCount;
public:
virtual IOService * probe(IOService * provider, SInt32 * score);
virtual bool start(IOService * provider);
virtual UInt32 interfaceID(void);
virtual UInt32 deviceType(void);
virtual IOFixed resolution(void);
virtual IOItemCount buttonCount(void);
virtual void packet(UInt8 adbCommand, IOByteCount length, UInt8 * data);
};
class AppleADBMouseType1 : public AppleADBMouse
{
OSDeclareDefaultStructors(AppleADBMouseType1);
public:
virtual IOService * probe(IOService * provider, SInt32 * score);
virtual bool start(IOService * provider);
};
class AppleADBMouseType2 : public AppleADBMouse
{
OSDeclareDefaultStructors(AppleADBMouseType2);
public:
virtual IOService * probe(IOService * provider, SInt32 * score);
virtual bool start(IOService * provider);
};
class AppleADBMouseType4 : public AppleADBMouse
{
OSDeclareDefaultStructors(AppleADBMouseType4);
private:
bool Clicking, Dragging, DragLock, typeTrackpad;
bool _jitterclick, _jittermove;
bool _palmnomove, _palmnoaction, _2fingernoaction, _sticky2finger, _zonenomove,
_zonenoaction, _zonepecknomove, _ignorezone, _isWEnhanced, _usePantherSettings;
UInt8 _WThreshold;
UInt16 _jitterdelta;
UInt32 _ignoreTrackpadState, _oldButtonState;
UInt64 _jitterclicktime64, _zonepeckingtime64, _timeoutSticky64, _sticky2fingerTime64,
_fake5min;
AbsoluteTime _jitterclicktimeAB, _zonepeckingtimeAB, _timeoutStickyAB, _sticky2fingerTimeAB,
_fake5minAB, _keyboardTimeAB;
virtual IOReturn setParamProperties( OSDictionary * dict );
bool enableEnhancedMode();
IOService *_pADBKeyboard;
IONotifier * _notifierA, * _notifierT;
const OSSymbol *_gettime;
IOLock * _mouseLock;
OSSet * _externalMice;
protected:
UInt32 deviceSignature;
UInt16 deviceResolution;
UInt8 deviceClass;
UInt8 deviceNumButtons;
public:
virtual IOService * probe(IOService * provider, SInt32 * score);
virtual bool start(IOService * provider);
virtual void packet(UInt8 adbCommand, IOByteCount length, UInt8 * data);
virtual void packetW(UInt8 adbCommand, IOByteCount length, UInt8 * data);
virtual void packetWP(UInt8 adbCommand, IOByteCount length, UInt8 * data);
virtual OSData * copyAccelerationTable();
virtual void _check_usb_mouse(IOService * service, bool added);
virtual void free();
};