aboutsummaryrefslogtreecommitdiff
path: root/backends/keymapper/keymapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'backends/keymapper/keymapper.h')
-rw-r--r--backends/keymapper/keymapper.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/backends/keymapper/keymapper.h b/backends/keymapper/keymapper.h
index 9a80911dbf..1e8d1c08c3 100644
--- a/backends/keymapper/keymapper.h
+++ b/backends/keymapper/keymapper.h
@@ -149,6 +149,7 @@ public:
* @return mapped events
*/
List<Event> mapKey(const KeyState& key, bool keyDown);
+ List<Event> mapNonKey(const HardwareInputCode code);
/**
* @brief Map a key down event.
@@ -168,6 +169,24 @@ public:
void setEnabled(bool enabled) { _enabled = enabled; }
/**
+ * @brief Activate remapping mode
+ * While this mode is active, any mappable event will be bound to the action
+ * provided.
+ * @param actionToRemap Action that is the target of the remap
+ */
+ void startRemappingMode(Action *actionToRemap);
+
+ /**
+ * @brief Force-stop the remapping mode
+ */
+ void stopRemappingMode() { _remapping = false; }
+
+ /**
+ * Query whether the keymapper is currently in the remapping mode
+ */
+ bool isRemapping() const { return _remapping; }
+
+ /**
* Return a HardwareInput pointer for the given key state
*/
const HardwareInput *findHardwareInput(const KeyState& key);
@@ -183,6 +202,12 @@ public:
private:
+ enum IncomingEventType {
+ kIncomingKeyDown,
+ kIncomingKeyUp,
+ kIncomingNonKey
+ };
+
void initKeymap(Domain &domain, Keymap *keymap);
Domain _globalDomain;
@@ -193,12 +218,16 @@ private:
void pushKeymap(Keymap *newMap, bool transparent, bool global);
Action *getAction(const KeyState& key);
- List<Event> executeAction(const Action *act, bool keyDown);
+ List<Event> executeAction(const Action *act, IncomingEventType incomingType = kIncomingNonKey);
+ EventType convertDownToUp(EventType eventType);
+ List<Event> remap(const Event &ev);
EventManager *_eventMan;
bool _enabled;
+ bool _remapping;
+ Action *_actionToRemap;
Stack<MapRecord> _activeMaps;
HashMap<KeyState, Action *> _keysDown;