From fdeb33d34a97d062a120f72da919f81d7b1d45bf Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Thu, 20 Mar 2025 22:10:57 +0530 Subject: Move header files to src --- src/keymap/KeymapEvaluator.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/keymap/KeymapEvaluator.hpp (limited to 'src/keymap/KeymapEvaluator.hpp') diff --git a/src/keymap/KeymapEvaluator.hpp b/src/keymap/KeymapEvaluator.hpp new file mode 100644 index 0000000..db93900 --- /dev/null +++ b/src/keymap/KeymapEvaluator.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "keymap/KeySeqParser.hpp" +#include "utils.hpp" + +typedef std::function KeyAction; + +struct KeyMap { + KeySequence keySequence; + KeyAction action; +}; + +enum KeyMode { Normal, Insert }; + +class KeymapEvaluator : public QObject { + Q_OBJECT + +public: + KeymapEvaluator(); + + void addKeymap(KeyMode mode, QString key, KeyAction action); + bool evaluate(Qt::KeyboardModifiers modifiers, Qt::Key key); + + DEFINE_SETTER(setCurrentMode, currentMode) + DEFINE_GETTER(getCurrentMode, currentMode) + +private: + const QList *currentModeKeys(); + bool isInsertableMode(); + +private: + QMap> modalKeys; + KeySeqParser keySeqParser; + KeyMode currentMode = KeyMode::Normal; + KeySequence activeKeySequence; +}; -- cgit v1.3.1