1/* 2 * Copyright 2004-2008, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stefano Ceccherini 7 */ 8#ifndef MOUSE_INPUT_DEVICE_H 9#define MOUSE_INPUT_DEVICE_H 10 11 12#include <InputServerDevice.h> 13#include <InterfaceDefs.h> 14#include <Locker.h> 15 16#include <ObjectList.h> 17 18 19class MouseDevice; 20 21class MouseInputDevice : public BInputServerDevice { 22public: 23 MouseInputDevice(); 24 virtual ~MouseInputDevice(); 25 26 virtual status_t InitCheck(); 27 28 virtual status_t Start(const char* name, void* cookie); 29 virtual status_t Stop(const char* name, void* cookie); 30 31 virtual status_t Control(const char* name, void* cookie, 32 uint32 command, BMessage* message); 33 34private: 35 friend class MouseDevice; 36 // TODO: needed by the control thread to remove a dead device 37 // find a better way... 38 39 status_t _HandleMonitor(BMessage* message); 40 void _RecursiveScan(const char* directory); 41 42 MouseDevice* _FindDevice(const char* path) const; 43 status_t _AddDevice(const char* path); 44 status_t _RemoveDevice(const char* path); 45 46private: 47 BObjectList<MouseDevice> fDevices; 48 BLocker fDeviceListLock; 49}; 50 51extern "C" BInputServerDevice* instantiate_input_device(); 52 53#endif // MOUSE_INPUT_DEVICE_H 54