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/KeySeqParser.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/keymap/KeySeqParser.hpp (limited to 'src/keymap/KeySeqParser.hpp') diff --git a/src/keymap/KeySeqParser.hpp b/src/keymap/KeySeqParser.hpp new file mode 100644 index 0000000..fac2546 --- /dev/null +++ b/src/keymap/KeySeqParser.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include + +struct KeyChord { + Qt::KeyboardModifiers mod; + Qt::Key key; +}; +bool operator==(const KeyChord a, const KeyChord b); + +typedef QList KeySequence; + +enum KeyMatchType { + NoMatch, + Match, + Pending, +}; + +class KeySeqParser { +public: + static const KeyMatchType keySequenceMatch(const KeySequence target, + const KeySequence current) { + for (int i = 0; i < target.length(); i++) { + if (current.length() <= i) + return KeyMatchType::Pending; + + if (target[i].key != current[i].key || + !target[i].mod.testFlags(current[i].mod)) + return KeyMatchType::NoMatch; + } + + return KeyMatchType::Match; + } + +public: + KeySeqParser(); + + KeySequence parse(QString keySequence); + +private: + Qt::Key parseKey(QString keyName); +}; -- cgit v1.3.1