]> git.tdb.fi Git - libs/gui.git/blob - source/input/binarycontrol.h
Generate synthetic key release events for repeated keys on Windows
[libs/gui.git] / source / input / binarycontrol.h
1 #ifndef MSP_INPUT_BINARYCONTROL_H_
2 #define MSP_INPUT_BINARYCONTROL_H_
3
4 #include "control.h"
5
6 namespace Msp {
7 namespace Input {
8
9 /**
10 A control with two possible states.  Button state is mapped directly.  An axis
11 is considered to be active when its value is above a threshold (0.5 by
12 default).
13 */
14 class BinaryControl: public Control
15 {
16 public:
17         sigc::signal<void> signal_press;
18         sigc::signal<void> signal_release;
19
20 private:
21         bool state;
22         float threshold;
23
24 public:
25         BinaryControl();
26         BinaryControl(const ControlSource &);
27         BinaryControl(Device &, ControlSrcType, unsigned);
28         virtual ~BinaryControl();
29
30         /** Sets the threshold between states for axis sources.  No effect on button
31         sources */
32         void set_threshold(float);
33
34         bool get_state() const { return state; }
35
36 private:
37         virtual void on_press();
38         virtual void on_release();
39         virtual void on_motion(float, float);
40 };
41
42 } // namespace Input
43 } // namespace Msp
44
45 #endif