]> git.tdb.fi Git - libs/gui.git/blob - source/input/hub.h
Drop Id tags and copyright notices from files
[libs/gui.git] / source / input / hub.h
1 #ifndef MSP_GBASE_INPUTHUB_H_
2 #define MSP_GBASE_INPUTHUB_H_
3
4 #include "device.h"
5
6 namespace Msp {
7 namespace Input {
8
9 /**
10 The Hub device collects events from multiple input devices and presents an
11 aggregate of them.  Button and axis numbers are mapped to unique values.
12 */
13 class Hub: public Device
14 {
15 protected:
16         std::vector<Device *> devices;
17
18 public:
19         Hub();
20
21         /**
22         Attaches an input device to the hub.
23
24         @param   dev  Device to attach
25
26         @return  Index of the device within the hub
27         */
28         unsigned attach(Device &dev);
29
30         virtual std::string get_button_name(unsigned) const;
31         virtual std::string get_axis_name(unsigned) const;
32 protected:
33         void button_press(unsigned, unsigned);
34         void button_release(unsigned, unsigned);
35         void axis_motion(unsigned, float, float, unsigned);
36 };
37
38 } // namespace Input
39 } // namespace Msp
40
41 #endif