diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-05-23 22:33:00 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-05-23 22:33:00 +0300 |
commit | 7863473dc201f4a497669cbf69875eb6e9389273 (patch) | |
tree | b80920475c72e64951798541274ca13b084c6ae6 /src/actions | |
parent | 50b6e25bb094fc1942028b711a9d9cc3ac491831 (diff) | |
download | manaplus-7863473dc201f4a497669cbf69875eb6e9389273.tar.gz manaplus-7863473dc201f4a497669cbf69875eb6e9389273.tar.bz2 manaplus-7863473dc201f4a497669cbf69875eb6e9389273.tar.xz manaplus-7863473dc201f4a497669cbf69875eb6e9389273.zip |
Add chat command for simulate mouse click by any position and button.
Diffstat (limited to 'src/actions')
-rw-r--r-- | src/actions/chat.cpp | 27 | ||||
-rw-r--r-- | src/actions/chat.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/actions/chat.cpp b/src/actions/chat.cpp index 9591ea00f..d8743e06a 100644 --- a/src/actions/chat.cpp +++ b/src/actions/chat.cpp @@ -753,4 +753,31 @@ impHandler(sendGuiKey) return true; } +impHandler(sendMouseKey) +{ + if (!guiInput) + return false; + const std::string args = event.args; + if (args.empty()) + return false; + StringVect pars; + if (!splitParameters(pars, args, " ,", '\"')) + return false; + const int sz = CAST_S32(pars.size()); + if (sz != 3) + return false; + + const int x = atoi(pars[0].c_str()); + const int y = atoi(pars[1].c_str()); + const int key1 = CAST_S32(MouseButton::LEFT); + const int key2 = CAST_S32(MouseButton::MIDDLE); + const int key = atoi(pars[2].c_str()); + if (key < key1 || key > key2) + return false; + guiInput->simulateMouseClick(x, + y, + static_cast<MouseButtonT>(key)); + return true; +} + } // namespace Actions diff --git a/src/actions/chat.h b/src/actions/chat.h index 3815e53e7..5d4f1c02d 100644 --- a/src/actions/chat.h +++ b/src/actions/chat.h @@ -63,6 +63,7 @@ namespace Actions decHandler(guildNotice); decHandler(translate); decHandler(sendGuiKey); + decHandler(sendMouseKey); } // namespace Actions #undef decHandler |