* Copyright 2008-2011 Michael Lotz <mmlr@mlotz.ch>
* Distributed under the terms of the MIT license.
*/
#ifndef USB_MOUSE_PROTOCOL_HANDLER_H
#define USB_MOUSE_PROTOCOL_HANDLER_H
#include <InterfaceDefs.h>
#include "ProtocolHandler.h"
class HIDCollection;
class HIDReportItem;
#ifndef B_MAX_MOUSE_BUTTONS
# define B_MAX_MOUSE_BUTTONS 8
#endif
class MouseProtocolHandler : public ProtocolHandler {
public:
MouseProtocolHandler(HIDReport &report,
HIDReportItem &xAxis,
HIDReportItem &yAxis);
static void AddHandlers(HIDDevice &device,
HIDCollection &collection,
ProtocolHandler *&handlerList);
virtual status_t Control(uint32 *cookie, uint32 op, void *buffer,
size_t length);
private:
status_t _ReadReport(void *buffer, uint32 *cookie);
HIDReport & fReport;
HIDReportItem & fXAxis;
HIDReportItem & fYAxis;
HIDReportItem * fWheel;
HIDReportItem * fHorizontalPan;
HIDReportItem * fButtons[B_MAX_MOUSE_BUTTONS];
uint32 fLastButtons;
uint32 fClickCount;
bigtime_t fLastClickTime;
bigtime_t fClickSpeed;
};
#endif