--- /dev/null
+#ifndef GAMECONTROLLER_PRIVATE_H_
+#define GAMECONTROLLER_PRIVATE_H_
+
+#include <msp/io/eventobject.h>
+#include <msp/io/handle.h>
+
+namespace Msp {
+namespace Input {
+
+class JsDevice: public IO::EventObject
+{
+private:
+ IO::Handle handle;
+
+public:
+ JsDevice(const std::string &);
+
+ std::string get_name() const;
+
+protected:
+ virtual unsigned do_read(char *, unsigned);
+ virtual unsigned do_write(const char *, unsigned);
+
+public:
+ virtual const IO::Handle &get_event_handle() { return handle; }
+};
+
+
+struct GameController::Private
+{
+ JsDevice *dev;
+};
+
+} // namespace Input
+} // namespace Msp
+
+#endif