#include #include #include struct libevdev; struct input_event; class Input { public: Input(const std::string & device); ~Input(); int poll(); bool getButton(int i) const; int getAxis(int i) const; static void initialise(const std::string & device); static Input & instance(); private: int myFD; std::shared_ptr myDev; void process(const input_event & ev); std::vector myButtonCodes; std::vector myAxisCodes; std::vector myAxisMins; std::vector myAxisMaxs; static std::shared_ptr ourSingleton; };