X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fdevice.h;h=5ef63053ed8e9b59b5ad3442edce6d1f6c28b402;hb=2ed9d7a0a96638bdf0614c1cf858719e7ced40d3;hp=b42ed3fde4991feb8d87b05258831585db57efec;hpb=e217a93d59aecfa80eec8bfa16b3976abdceca81;p=libs%2Fgui.git diff --git a/source/input/device.h b/source/input/device.h index b42ed3f..5ef6305 100644 --- a/source/input/device.h +++ b/source/input/device.h @@ -5,6 +5,7 @@ #include #include #include +#include namespace Msp { namespace Input { @@ -13,7 +14,16 @@ class device_not_available: public std::runtime_error { public: device_not_available(const std::string &w): std::runtime_error(w) { } - virtual ~device_not_available() throw() { } +}; + + +enum DeviceType +{ + UNSPECIFIED, + KEYBOARD, + MOUSE, + TOUCH_SURFACE, + GAME_CONTROLLER }; @@ -47,15 +57,19 @@ public: sigc::signal::accumulated signal_axis_motion; protected: + DeviceType type; std::string name; std::vector buttons; std::vector axes; - Device(); + Device(DeviceType); public: virtual ~Device(); + DeviceType get_type() const { return type; } const std::string &get_name() const { return name; } + virtual Device *find_subdevice(DeviceType, unsigned = 0); + virtual Device *find_subdevice(const std::string &); bool get_button_state(unsigned) const; float get_axis_value(unsigned) const; @@ -66,6 +80,10 @@ protected: void set_axis_value(unsigned, float, bool); }; + +void operator>>(const LexicalConverter &, DeviceType &); +void operator<<(LexicalConverter &, DeviceType); + } // namespace Input } // namespace Msp