-#ifndef MSP_GBASE_INPUTHUB_H_
-#define MSP_GBASE_INPUTHUB_H_
+#ifndef MSP_INPUT_INPUTHUB_H_
+#define MSP_INPUT_INPUTHUB_H_
+#include <vector>
+#include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
#include "device.h"
namespace Msp {
The Hub device collects events from multiple input devices and presents an
aggregate of them. Button and axis numbers are mapped to unique values.
*/
-class Hub: public Device
+class MSPGUI_API Hub: public Device, public sigc::trackable
{
protected:
std::vector<Device *> devices;
public:
Hub();
- /** Attaches an input device to the hub. Returns the index of the device
- within the hub. */
- unsigned attach(Device &dev);
+ /// Attaches an input device to the hub.
+ void attach(Device &dev);
- virtual std::string get_button_name(unsigned) const;
- virtual std::string get_axis_name(unsigned) const;
+ Device *find_subdevice(DeviceType, unsigned = 0) override;
+ Device *find_subdevice(const std::string &) override;
+
+ std::string get_button_name(unsigned) const override;
+ std::string get_axis_name(unsigned) const override;
protected:
void button_press(unsigned, unsigned);
void button_release(unsigned, unsigned);