diff --git a/QtScrcpy/device/controller/inputconvert/inputconvert.pri b/QtScrcpy/device/controller/inputconvert/inputconvert.pri index 57568a5..5b8763f 100644 --- a/QtScrcpy/device/controller/inputconvert/inputconvert.pri +++ b/QtScrcpy/device/controller/inputconvert/inputconvert.pri @@ -10,3 +10,8 @@ SOURCES += \ $$PWD/inputconvertnormal.cpp \ $$PWD/controlmsg.cpp +include ($$PWD/keymap/keymap.pri) + +INCLUDEPATH += \ + $$PWD/keymap + diff --git a/QtScrcpy/device/controller/inputconvert/keymap/keymap.cpp b/QtScrcpy/device/controller/inputconvert/keymap/keymap.cpp new file mode 100644 index 0000000..d27ac0a --- /dev/null +++ b/QtScrcpy/device/controller/inputconvert/keymap/keymap.cpp @@ -0,0 +1,39 @@ +#include "keymap.h" + +KeyMap::KeyMap() +{ + +} + +void KeyMap::loadKeyMapNode() +{ + KeyMapNode node; + node.type = KMT_CLICK; + node.click.keyNode.key = Qt::Key_J; + node.click.keyNode.pos = QPointF(0.5f, 0.5f); + node.click.quitMap = false; + + m_keyMapNodes.push_back(node); +} + +KeyMap::KeyMapNode KeyMap::getKeyMapNode(int key) +{ + KeyMapNode retNode; + bool find = false; + for (auto& node : m_keyMapNodes) { + switch (node.type) { + case KMT_CLICK: + if (node.click.keyNode.key == key) { + retNode = node; + find = true; + } + break; + } + + if (find) { + break; + } + } + + return retNode; +} diff --git a/QtScrcpy/device/controller/inputconvert/keymap/keymap.h b/QtScrcpy/device/controller/inputconvert/keymap/keymap.h new file mode 100644 index 0000000..f220112 --- /dev/null +++ b/QtScrcpy/device/controller/inputconvert/keymap/keymap.h @@ -0,0 +1,47 @@ +#ifndef KEYMAP_H +#define KEYMAP_H +#include +#include + + +class KeyMap +{ +public: + enum KeyMapType { + KMT_INVALID = -1, + KMT_CLICK = 0, + KMT_CLICK_TWICE, + }; + + struct KeyNode { + int key = Qt::Key_unknown; + QPointF pos = QPointF(0, 0); + }; + + struct KeyMapNode { + KeyMapType type = KMT_INVALID; + union { + struct { + KeyNode keyNode; + bool quitMap = false; + } click; + struct { + KeyNode keyNode; + bool quitMap = false; + } clickTwice; + }; + KeyMapNode() {} + ~KeyMapNode() {} + }; + + KeyMap(); + + void loadKeyMapNode(); + KeyMap::KeyMapNode getKeyMapNode(int key); + +private: + QVector m_keyMapNodes; + +}; + +#endif // KEYMAP_H diff --git a/QtScrcpy/device/controller/inputconvert/keymap/keymap.pri b/QtScrcpy/device/controller/inputconvert/keymap/keymap.pri new file mode 100644 index 0000000..825b777 --- /dev/null +++ b/QtScrcpy/device/controller/inputconvert/keymap/keymap.pri @@ -0,0 +1,5 @@ +HEADERS += \ + $$PWD/keymap.h + +SOURCES += \ + $$PWD/keymap.cpp