#ifndef _IOHIDPOINTING_H
#define _IOHIDPOINTING_H
#include <IOKit/hidsystem/IOHIDTypes.h>
#include <IOKit/hidsystem/IOHIPointing.h>
#include "IOHIDDevice.h"
class IOHIDPointing : public IOHIPointing
{
OSDeclareDefaultStructors(IOHIDPointing);
private:
HIDPreparsedDataRef _preparsedReportDescriptorData;
Bounds _bounds;
IOItemCount _numButtons;
IOFixed _resolution;
IOFixed _scrollResolution;
SInt32 _buttonCollection;
SInt32 _xCollection;
SInt32 _yCollection;
SInt32 _tipPressureCollection;
SInt32 _digitizerButtonCollection;
SInt32 _scrollWheelCollection;
SInt32 _horzScrollCollection;
int _tipPressureMin;
SInt16 _tipPressureMax;
bool _absoluteCoordinates;
bool _hasInRangeReport;
IOHIDDevice * _provider;
public:
virtual bool init(OSDictionary * properties = 0);
virtual bool start(IOService * provider);
virtual void free();
virtual IOReturn parseReportDescriptor(
IOMemoryDescriptor * report,
IOOptionBits options = 0 );
virtual IOReturn handleReport(
IOMemoryDescriptor * report,
IOOptionBits options = 0 );
protected:
virtual IOItemCount buttonCount();
virtual IOFixed resolution();
private:
void propagateProperties();
};
#endif