namespace Msp {
namespace Input {
+class BinaryControl;
class Device;
enum ControlSrcType
source. How the source values are interpreted depends on the exact type of the
control. Controls also support interactive binding by capturing a button press
or axis motion.
+
+A BinaryControl can be used as an activator, requiring that control to be
+active for any events to be processed. This can be used to implement shifted
+controls (when used on a BinaryControl) or click-and-drag functionality (when
+used on a SmoothControl).
*/
class Control: public sigc::trackable
{
protected:
ControlSource src;
Device *capture_dev;
+ BinaryControl *activator;
+ float origin;
Control();
Control(const ControlSource &);
void set_source(Device &, ControlSrcType, unsigned);
void set_source(const ControlSource &);
const ControlSource &get_source() const { return src; }
+ void set_activator(BinaryControl *);
+ BinaryControl *get_activator() const { return activator; }
protected:
virtual void on_press() = 0;
virtual void on_release() = 0;
void button_press(unsigned);
void button_release(unsigned);
void axis_motion(unsigned, float, float);
+ void deactivate();
Control(const Control &);
Control &operator=(const Control &);