struct Mouse : Controller { enum : uint { X, Y, Left, Right, }; Mouse(bool port); auto data() -> uint2; auto latch(bool data) -> void; private: bool latched; unsigned counter; unsigned speed; //0 = slow, 1 = normal, 2 = fast signed x; //x-coordinate signed y; //y-coordinate bool dx; //x-direction bool dy; //y-direction bool l; //left button bool r; //right button };