--- /dev/null
+#ifndef MSP_INPUT_CONTROLSCHEME_H_
+#define MSP_INPUT_CONTROLSCHEME_H_
+
+#include <map>
+#include <string>
+
+namespace Msp {
+namespace Input {
+
+class Control;
+
+class ControlScheme
+{
+private:
+ std::map<std::string, Control *> controls;
+
+protected:
+ ControlScheme() = default;
+
+ void add(const std::string &, Control &);
+public:
+ Control &get(const std::string &) const;
+ Control *find(const std::string &) const;
+ const std::map<std::string, Control *> &get_controls() const { return controls; }
+
+ void reset_edges();
+};
+
+} // namespace Input
+} // namespace Msp
+
+#endif