diff options
Diffstat (limited to 'src/input')
43 files changed, 0 insertions, 13936 deletions
diff --git a/src/input/inputactiondata.h b/src/input/inputactiondata.h deleted file mode 100644 index 507b30b49..000000000 --- a/src/input/inputactiondata.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTACTIONDATA_H -#define INPUT_INPUTACTIONDATA_H - -#include "actions/actionfuncptr.h" - -#include "enums/input/inputtype.h" - -#include "enums/simpletypes/useargs.h" -#include "enums/simpletypes/protected.h" - -struct InputActionData final -{ - A_DEFAULT_COPY(InputActionData) - - const char *const configField; - const InputTypeT defaultType1; - const int defaultValue1; - const InputTypeT defaultType2; - const int defaultValue2; - const int grp; - const ActionFuncPtr action; - const InputActionT modKeyIndex; - const int priority; - const int condition; - const std::string chatCommand; - const UseArgs useArgs; - const Protected isProtected; -}; - -#endif // INPUT_INPUTACTIONDATA_H diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h deleted file mode 100644 index 0c81000bc..000000000 --- a/src/input/inputactionmap.h +++ /dev/null @@ -1,5963 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTACTIONMAP_H -#define INPUT_INPUTACTIONMAP_H - -#include "sdlshared.h" - -#include "actions/actions.h" -#include "actions/chat.h" -#include "actions/commands.h" -#include "actions/move.h" -#include "actions/pets.h" -#include "actions/statusbar.h" -#include "actions/tabs.h" -#include "actions/target.h" -#include "actions/windows.h" - -#include "enums/input/inputcondition.h" -#include "enums/input/inputgroup.h" - -#include "input/inputactiondata.h" -#include "input/inputmanager.h" - -#include "localconsts.h" - -#define defaultAction(name) \ - InputType::UNKNOWN, -1, \ - InputType::UNKNOWN, -1, \ - Input::GRP_DEFAULT, \ - name, \ - InputAction::NO_VALUE, 50 - -#define addKey(name) InputType::KEYBOARD, name -#define emptyKey InputType::UNKNOWN, -1 -#define joystickButton(num) InputType::JOYSTICK, num - -// keyData must be in same order as enum keyAction. -static const InputActionData inputActionData - [CAST_SIZE(InputAction::TOTAL)] = - { - {"keyMoveUp", - addKey(SDLK_UP), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveUp, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::ARROWKEYS, - "", - UseArgs_false, - Protected_false}, - {"keyMoveDown", - addKey(SDLK_DOWN), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveDown, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::ARROWKEYS, - "", - UseArgs_false, - Protected_false}, - {"keyMoveLeft", - addKey(SDLK_LEFT), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveLeft, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::ARROWKEYS, - "", - UseArgs_false, - Protected_false}, - {"keyMoveRight", - addKey(SDLK_RIGHT), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveRight, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::ARROWKEYS, - "", - UseArgs_false, - Protected_false}, - {"keyAttack", - addKey(SDLK_x), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_REPEAT, - &Actions::attack, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOFOLLOW | - InputCondition::VALIDSPEED, - "attack", - UseArgs_false, - Protected_false}, - {"keyTargetAttack", - addKey(SDLK_LCTRL), - joystickButton(0), - Input::GRP_DEFAULT, - &Actions::targetAttack, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOFOLLOW | - InputCondition::VALIDSPEED | - InputCondition::ALIVE, - "targetattack", - UseArgs_true, - Protected_false}, - {"keyMoveToTarget", - addKey(SDLK_v), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveToTarget, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "movetotarget", - UseArgs_false, - Protected_false}, - {"keyChangeMoveToTarget", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeMoveToTarget, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToHome", - addKey(SDLK_d), - emptyKey, - Input::GRP_DEFAULT, - &Actions::moveToHome, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "movetohome", - UseArgs_false, - Protected_false}, - {"keySetHome", - addKey(SDLK_KP5), - emptyKey, - Input::GRP_DEFAULT, - &Actions::setHome, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "sethome", - UseArgs_false, - Protected_true}, - {"keyMoveToPoint", - addKey(SDLK_RSHIFT), - emptyKey, - Input::GRP_DEFAULT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyTalk", - addKey(SDLK_t), - emptyKey, - Input::GRP_DEFAULT, - &Actions::talk, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::GAME, - "talk", - UseArgs_false, - Protected_false}, - {"keyTarget", - addKey(SDLK_LSHIFT), - joystickButton(4), - Input::GRP_DEFAULT, - &Actions::stopAttack, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::GAME, - "stopattack", - UseArgs_false, - Protected_false}, - {"keyUnTarget", - defaultAction(&Actions::untarget), - InputCondition::KEY_DOWN | InputCondition::GAME, - "untarget", - UseArgs_false, - Protected_false}, - {"keyTargetMonster", - addKey(SDLK_a), - joystickButton(3), - Input::GRP_DEFAULT | Input::GRP_REPEAT, - &Actions::targetMonster, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET | - InputCondition::VALIDSPEED, - "targetmonster", - UseArgs_false, - Protected_false}, - {"keyTargetNPC", - addKey(SDLK_n), - emptyKey, - Input::GRP_DEFAULT, - &Actions::targetNPC, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "targetnpc", - UseArgs_false, - Protected_false}, - {"keyTargetPlayer", - addKey(SDLK_q), - emptyKey, - Input::GRP_DEFAULT, - &Actions::targetPlayer, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "targetplayer", - UseArgs_false, - Protected_false}, - {"keyPickup", - addKey(SDLK_z), - joystickButton(1), - Input::GRP_DEFAULT, - &Actions::pickup, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "pickup", - UseArgs_false, - Protected_false}, - {"keyChangePickupType", - addKey(SDLK_o), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changePickupType, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyHideWindows", - addKey(SDLK_h), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::hideWindows, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "hidewindows", - UseArgs_false, - Protected_true}, - {"keyBeingSit", - addKey(SDLK_s), - joystickButton(2), - Input::GRP_DEFAULT, - &Actions::sit, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET | - InputCondition::NOBLOCK, - "sit", - UseArgs_false, - Protected_false}, - {"keyScreenshot", - addKey(SDLK_p), - emptyKey, - Input::GRP_DEFAULT, - &Actions::screenshot, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOTARGET | - InputCondition::NOINPUT, - "screenshot", - UseArgs_false, - Protected_true}, - {"keyTrade", - addKey(SDLK_r), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeTrade, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "changetrade", - UseArgs_false, - Protected_true}, - {"keyPathfind", - addKey(SDLK_f), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeMapMode, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_false}, - {"keyOK", - addKey(SDLK_SPACE), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::ok, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_false}, - {"keyQuit", - addKey(SDLK_ESCAPE), -#if defined(USE_SDL2) && defined(ANDROID) - addKey(SDLK_AC_BACK), -#else // defined(USE_SDL2) && defined(ANDROID) - emptyKey, -#endif // defined(USE_SDL2) && defined(ANDROID) - Input::GRP_DEFAULT, - &Actions::quit, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "quit", - UseArgs_false, - Protected_true}, - {"keyShortcutsKey", - addKey(SDLK_MENU), - emptyKey, - Input::GRP_DEFAULT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_DEFAULT, - &Actions::shortcut, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut16", - defaultAction(&Actions::shortcut), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut17", - defaultAction(&Actions::shortcut), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut18", - defaultAction(&Actions::shortcut), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut19", - defaultAction(&Actions::shortcut), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyShortcut20", - defaultAction(&Actions::shortcut), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT, - "", - UseArgs_false, - Protected_true}, - {"keyWindowHelp", - addKey(SDLK_F1), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::helpWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "help|openhelp", - UseArgs_false, - Protected_false}, - {"keyWindowStatus", - addKey(SDLK_F2), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::statusWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "status|openstatus", - UseArgs_false, - Protected_false}, - {"keyWindowInventory", - addKey(SDLK_F3), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::inventoryWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "inventory|openinventory", - UseArgs_false, - Protected_false}, - {"keyWindowEquipment", - addKey(SDLK_F4), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::equipmentWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "equipment|openequipment", - UseArgs_false, - Protected_false}, - {"keyWindowSkill", - addKey(SDLK_F5), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::skillDialogShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "skill|skills|openskills", - UseArgs_false, - Protected_false}, - {"keyWindowMinimap", - addKey(SDLK_F6), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::minimapWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "minimap|openminimap", - UseArgs_false, - Protected_false}, - {"keyWindowChat", - addKey(SDLK_F7), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::chatWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "openchat", - UseArgs_false, - Protected_false}, - {"keyWindowShortcut", - addKey(SDLK_F8), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::shortcutWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "openshortcut|openshortcuts", - UseArgs_false, - Protected_false}, - {"keyWindowSetup", - addKey(SDLK_F9), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::setupWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOTARGET | - InputCondition::NOINPUT | - InputCondition::ENABLED, - "setup|opensetup", - UseArgs_false, - Protected_false}, - {"keyWindowDebug", - addKey(SDLK_F10), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::debugWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::SHORTCUT0 | - InputCondition::NOTARGET, - "debug|opendebug", - UseArgs_false, - Protected_false}, - {"keyWindowSocial", - addKey(SDLK_F11), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::socialWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "social|opensocial", - UseArgs_false, - Protected_false}, - {"keyWindowEmoteBar", - addKey(SDLK_F12), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::emoteShortcutWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "emotes|openemotes", - UseArgs_false, - Protected_false}, - {"keyWindowOutfit", - addKey(SDLK_BACKQUOTE), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::outfitWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "openoutfit|openoutfits", - UseArgs_false, - Protected_false}, - {"keyWindowShop", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::shopWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "shop|openshop", - UseArgs_false, - Protected_false}, - {"keyWindowDrop", - addKey(SDLK_w), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::dropShortcutWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "opendrop", - UseArgs_false, - Protected_false}, - {"keyWindowKills", - addKey(SDLK_e), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::killStatsWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "kills|openkills", - UseArgs_false, - Protected_false}, - {"keyWindowSpells", - addKey(SDLK_j), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::spellShortcutWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "spells|openspells", - UseArgs_false, - Protected_false}, - {"keyWindowBotChecker", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "", - UseArgs_false, - Protected_false}, - {"keyWindowOnline", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::whoIsOnlineWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "online|openonline", - UseArgs_false, - Protected_false}, - {"keyWindowDidYouKnow", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::didYouKnowWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "didyouknow|opendidyouknow", - UseArgs_false, - Protected_false}, - {"keyWindowQuests", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::questsWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "quests|openquests", - UseArgs_false, - Protected_false}, - {"keySocialPrevTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::prevSocialTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "prevsocialtab", - UseArgs_false, - Protected_false}, - {"keySocialNextTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::nextSocialTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "nextsocialtab", - UseArgs_false, - Protected_false}, - {"keySmilie", - addKey(SDLK_LALT), - emptyKey, - Input::GRP_DEFAULT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut16", - addKey(SDLK_q), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut17", - addKey(SDLK_w), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut18", - addKey(SDLK_e), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut19", - addKey(SDLK_r), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut20", - addKey(SDLK_t), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut21", - addKey(SDLK_y), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut22", - addKey(SDLK_u), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut23", - addKey(SDLK_i), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut24", - addKey(SDLK_o), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut25", - addKey(SDLK_p), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut26", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut27", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut28", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut29", - addKey(SDLK_a), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut30", - addKey(SDLK_s), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut31", - addKey(SDLK_d), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut32", - addKey(SDLK_f), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut33", - addKey(SDLK_g), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut34", - addKey(SDLK_h), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut35", - addKey(SDLK_j), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut36", - addKey(SDLK_k), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut37", - addKey(SDLK_l), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut38", - addKey(SDLK_SEMICOLON), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut39", - addKey(SDLK_QUOTE), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut40", - addKey(SDLK_z), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut41", - addKey(SDLK_x), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut42", - addKey(SDLK_c), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut43", - addKey(SDLK_v), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut44", - addKey(SDLK_b), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut45", - addKey(SDLK_n), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut46", - addKey(SDLK_m), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut47", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyEmoteShortcut48", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_EMOTION, - &Actions::emote, - InputAction::EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyWearOutfit", - addKey(SDLK_RCTRL), - emptyKey, - Input::GRP_DEFAULT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_true}, - {"keyCopyOutfit", - addKey(SDLK_RALT), - emptyKey, - Input::GRP_DEFAULT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_true}, - {"keyCopyEquipedOutfit", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_DEFAULT, - &Actions::copyEquippedToOutfit, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "copyequippedtooutfit|itemstooutfit", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut16", - addKey(SDLK_q), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut17", - addKey(SDLK_w), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut18", - addKey(SDLK_e), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut19", - addKey(SDLK_r), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut20", - addKey(SDLK_t), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut21", - addKey(SDLK_y), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut22", - addKey(SDLK_u), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut23", - addKey(SDLK_i), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut24", - addKey(SDLK_o), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut25", - addKey(SDLK_p), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut26", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut27", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut28", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut29", - addKey(SDLK_a), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut30", - addKey(SDLK_s), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut31", - addKey(SDLK_d), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut32", - addKey(SDLK_f), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut33", - addKey(SDLK_g), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut34", - addKey(SDLK_h), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut35", - addKey(SDLK_j), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut36", - addKey(SDLK_k), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut37", - addKey(SDLK_l), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut38", - addKey(SDLK_SEMICOLON), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut39", - addKey(SDLK_QUOTE), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut40", - addKey(SDLK_z), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut41", - addKey(SDLK_x), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut42", - addKey(SDLK_c), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut43", - addKey(SDLK_v), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut44", - addKey(SDLK_b), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut45", - addKey(SDLK_n), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut46", - addKey(SDLK_m), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut47", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyOutfitShortcut48", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_OUTFIT, - &Actions::outfit, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut16", - addKey(SDLK_q), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut17", - addKey(SDLK_w), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut18", - addKey(SDLK_e), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut19", - addKey(SDLK_r), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut20", - addKey(SDLK_t), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut21", - addKey(SDLK_y), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut22", - addKey(SDLK_u), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut23", - addKey(SDLK_i), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut24", - addKey(SDLK_o), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut25", - addKey(SDLK_p), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut26", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut27", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut28", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut29", - addKey(SDLK_a), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut30", - addKey(SDLK_s), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut31", - addKey(SDLK_d), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut32", - addKey(SDLK_f), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut33", - addKey(SDLK_g), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut34", - addKey(SDLK_h), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut35", - addKey(SDLK_j), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut36", - addKey(SDLK_k), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut37", - addKey(SDLK_l), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut38", - addKey(SDLK_SEMICOLON), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut39", - addKey(SDLK_QUOTE), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut40", - addKey(SDLK_z), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut41", - addKey(SDLK_x), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut42", - addKey(SDLK_c), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut43", - addKey(SDLK_v), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut44", - addKey(SDLK_b), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut45", - addKey(SDLK_n), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut46", - addKey(SDLK_m), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut47", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyMoveToPointShortcut48", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_MOVETOPOINT, - &Actions::moveToPoint, - InputAction::MOVE_TO_POINT, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_true}, - {"keyChat", - addKey(SDLK_RETURN), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_CHAT, - &Actions::toggleChat, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::NOAWAY | - InputCondition::NOMODAL, - "chat", - UseArgs_false, - Protected_false}, - {"keyChatScrollUp", - addKey(SDLK_PAGEUP), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::scrollChatUp, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "chatscrollup", - UseArgs_false, - Protected_false}, - {"keyChatScrollDown", - addKey(SDLK_PAGEDOWN), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::scrollChatDown, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "chatscrolldown", - UseArgs_false, - Protected_false}, - {"keyChatPrevTab", - addKey(SDLK_KP7), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::prevChatTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "prevtab", - UseArgs_false, - Protected_false}, - {"keyChatNextTab", - addKey(SDLK_KP9), - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::nextChatTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "nexttab", - UseArgs_false, - Protected_false}, - {"keyChatCloseTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::closeChatTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "close", - UseArgs_false, - Protected_false}, - {"keyChatPrevHistory", - addKey(SDLK_KP7), - emptyKey, - Input::GRP_CHAT | Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyChatNextHistory", - addKey(SDLK_KP9), - emptyKey, - Input::GRP_CHAT | Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyIgnoreInput1", -#ifdef USE_SDL2 - addKey(SDLK_LGUI), -#else // USE_SDL2 - addKey(SDLK_LSUPER), -#endif // USE_SDL2 - emptyKey, - Input::GRP_DEFAULT, - &Actions::ignoreInput, - InputAction::NO_VALUE, 500, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_true}, - {"keyIgnoreInput2", -#ifdef USE_SDL2 - addKey(SDLK_RGUI), -#else // USE_SDL2 - addKey(SDLK_RSUPER), -#endif // USE_SDL2 - emptyKey, - Input::GRP_DEFAULT, - &Actions::ignoreInput, - InputAction::NO_VALUE, 500, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_true}, - {"keyDirectUp", - defaultAction(&Actions::directUp), - InputCondition::KEY_DOWN | InputCondition::GAME, - "directup|turnup", - UseArgs_false, - Protected_false}, - {"keyDirectDown", - defaultAction(&Actions::directDown), - InputCondition::KEY_DOWN | InputCondition::GAME, - "directdown|turndown", - UseArgs_false, - Protected_false}, - {"keyDirectLeft", - defaultAction(&Actions::directLeft), - InputCondition::KEY_DOWN | InputCondition::GAME, - "directleft|turnleft", - UseArgs_false, - Protected_false}, - {"keyDirectRight", - defaultAction(&Actions::directRight), - InputCondition::KEY_DOWN | InputCondition::GAME, - "directright|turnright", - UseArgs_false, - Protected_false}, - {"keyCrazyMoves", - addKey(SDLK_SLASH), - emptyKey, - Input::GRP_DEFAULT, - &Actions::crazyMoves, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "", - UseArgs_false, - Protected_true}, - {"keyChangeCrazyMoveType", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeCrazyMove, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyQuickDrop", - addKey(SDLK_y), - emptyKey, - Input::GRP_DEFAULT, - &Actions::dropItem0, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "drop", - UseArgs_false, - Protected_true}, - {"keyQuickDropN", - addKey(SDLK_u), - emptyKey, - Input::GRP_DEFAULT, - &Actions::dropItem, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "dropn", - UseArgs_false, - Protected_true}, - {"keySwitchQuickDrop", - addKey(SDLK_i), - emptyKey, - Input::GRP_DEFAULT, - &Actions::switchQuickDrop, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "", - UseArgs_false, - Protected_true}, - {"keyMagicInma1", - addKey(SDLK_c), - emptyKey, - Input::GRP_DEFAULT, - &Actions::heal, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "heal", - UseArgs_true, - Protected_false}, - {"keyMagicItenplz", - addKey(SDLK_m), - emptyKey, - Input::GRP_DEFAULT, - &Actions::itenplz, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "itenplz", - UseArgs_false, - Protected_true}, - {"keyMagicAttack", - addKey(SDLK_b), - emptyKey, - Input::GRP_DEFAULT, - &Actions::magicAttack, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOFOLLOW | - InputCondition::VALIDSPEED, - "magicattack", - UseArgs_false, - Protected_false}, - {"keySwitchMagicAttack", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeMagicAttackType, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keySwitchPvpAttack", - defaultAction(&Actions::changePvpMode), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyInvertDirection", - defaultAction(&Actions::changeMoveType), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_false}, - {"keyChangeAttackWeaponType", - addKey(SDLK_g), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeAttackWeaponType, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyChangeAttackType", - addKey(SDLK_END), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeAttackType, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyChangeFollowMode", - addKey(SDLK_KP1), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeFollowMode, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyChangeImitationMode", - addKey(SDLK_KP4), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeImitationMode, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyDisableGameModifiers", - addKey(SDLK_KP8), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeGameModifier, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "", - UseArgs_false, - Protected_true}, - {"keyChangeAudio", - addKey(SDLK_KP3), - emptyKey, - Input::GRP_DEFAULT, - &Actions::changeAudio, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "audio", - UseArgs_false, - Protected_true}, - {"keyAway", - addKey(SDLK_KP2), - emptyKey, - Input::GRP_DEFAULT, - &Actions::away, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "", - UseArgs_false, - Protected_false}, - {"keyRightClick", - addKey(SDLK_TAB), - emptyKey, - Input::GRP_DEFAULT, - &Actions::mouseClick, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::NOAWAY | - InputCondition::NOMODAL | - InputCondition::INGAME, - "rightclick", - UseArgs_false, - Protected_false}, - {"keyCameraMode", - addKey(SDLK_KP_PLUS), - emptyKey, - Input::GRP_DEFAULT, - &Actions::camera, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | - InputCondition::EMODS, - "", - UseArgs_false, - Protected_false}, - {"keyMod", - emptyKey, - emptyKey, - 0, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIUp", - addKey(SDLK_UP), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIDown", - addKey(SDLK_DOWN), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUILeft", - addKey(SDLK_LEFT), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIRight", - addKey(SDLK_RIGHT), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUISelect", - addKey(SDLK_SPACE), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUISelect2", - addKey(SDLK_RETURN), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUICancel", - addKey(SDLK_ESCAPE), -#if defined(USE_SDL2) && defined(ANDROID) - addKey(SDLK_AC_BACK), -#else // defined(USE_SDL2) && defined(ANDROID) - emptyKey, -#endif // defined(USE_SDL2) && defined(ANDROID) - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIHome", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIEnd", - addKey(SDLK_END), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIDelete", - addKey(SDLK_DELETE), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIBackSpace", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUITab", - addKey(SDLK_TAB), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIPageUp", - addKey(SDLK_PAGEUP), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIPageDown", - addKey(SDLK_PAGEDOWN), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIInsert", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIMod", - addKey(SDLK_LSHIFT), - addKey(SDLK_RSHIFT), - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keySafeVideo", - addKey(SDLK_KP_MINUS), - emptyKey, - Input::GRP_DEFAULT, - &Actions::safeVideoMode, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_true}, - {"keyStopSit", - defaultAction(&Actions::stopSit), - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "sit2", - UseArgs_false, - Protected_false}, - {"keyShowKeyboard", - defaultAction(&Actions::showKeyboard), - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "showkeyboard", - UseArgs_false, - Protected_false}, - {"keyShowWindows", - defaultAction(&Actions::showWindows), - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "showwindows", - UseArgs_false, - Protected_false}, - {"keyChatMod", - addKey(SDLK_LSHIFT), - emptyKey, - Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyMoveForward", - defaultAction(&Actions::moveForward), - InputCondition::KEY_DOWN | InputCondition::ARROWKEYS, - "", - UseArgs_false, - Protected_false}, - {"keyGUICtrl", - addKey(SDLK_LCTRL), - addKey(SDLK_RCTRL), - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIb", - addKey(SDLK_b), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIc", - addKey(SDLK_c), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUId", - addKey(SDLK_d), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIe", - addKey(SDLK_e), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIf", - addKey(SDLK_f), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIh", - addKey(SDLK_h), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIk", - addKey(SDLK_k), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIu", - addKey(SDLK_u), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIv", - addKey(SDLK_v), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIw", - addKey(SDLK_w), - emptyKey, - Input::GRP_GUICHAN, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyShortcutsPrevTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::prevShortcutsTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "shortcutprevtab", - UseArgs_false, - Protected_false}, - {"keyShortcutsNextTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::nextShortcutsTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "shortcutnexttab", - UseArgs_false, - Protected_false}, - {"keyCommandsPrevTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::prevCommandsTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "commandsprevtab", - UseArgs_false, - Protected_false}, - {"keyCommandsNextTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::nextCommandsTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "commandsnexttab", - UseArgs_false, - Protected_false}, - {"keyOpenTrade", - defaultAction(&Actions::openTrade), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "trade", - UseArgs_false, - Protected_false}, - {"keyGUIF1", - addKey(SDLK_F1), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF2", - addKey(SDLK_F2), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF3", - addKey(SDLK_F3), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF4", - addKey(SDLK_F4), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF5", - addKey(SDLK_F5), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF6", - addKey(SDLK_F6), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF7", - addKey(SDLK_F7), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF8", - addKey(SDLK_F8), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF9", - addKey(SDLK_F9), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF10", - addKey(SDLK_F10), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF11", - addKey(SDLK_F11), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyGUIF12", - addKey(SDLK_F12), - emptyKey, - Input::GRP_GUICHAN | Input::GRP_CHAT, - nullptr, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::DEFAULT, - "", - UseArgs_false, - Protected_false}, - {"keyWindowAbout", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::aboutWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "about", - UseArgs_false, - Protected_false}, - {"keyWindowUpdater", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::updaterWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::GAME, - "updater", - UseArgs_false, - Protected_false}, - {"keyTargetClosestMonster", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_REPEAT, - &Actions::targetClosestMonster, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET | - InputCondition::VALIDSPEED, - "targetclosestmonster", - UseArgs_false, - Protected_false}, - {"keyChatCloseAllTabs", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::closeAllChatTabs, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, - "closeall", - UseArgs_false, - Protected_true}, - {"keyChatIgnoreAllWhispers", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::ignoreAllWhispers, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, - "ignoreallwhispers", - UseArgs_false, - Protected_true}, - {"keyChatAnnounce", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::chatAnnounce, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, - "announce", - UseArgs_true, - Protected_true}, - {"keyIpcToggle", - defaultAction(&Actions::ipcToggle), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "ipctoggle", - UseArgs_false, - Protected_true}, - {"keyWhere", - defaultAction(&Actions::where), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "where", - UseArgs_false, - Protected_false}, - {"keyWho", - defaultAction(&Actions::who), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "who", - UseArgs_false, - Protected_false}, - {"keyWhisper", - defaultAction(&Actions::msg), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "w|whisper|msg", - UseArgs_true, - Protected_true}, - {"keyQuery", - defaultAction(&Actions::query), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "q|query|j|join", - UseArgs_true, - Protected_false}, - {"keyClearChatTab", - defaultAction(&Actions::clearChatTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "clear", - UseArgs_false, - Protected_false}, - {"keyIgnore", - defaultAction(&Actions::chatIgnore), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "ignore", - UseArgs_true, - Protected_true}, - {"keyUnignore", - defaultAction(&Actions::chatUnignore), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "unignore", - UseArgs_true, - Protected_true}, - {"keyFriend", - defaultAction(&Actions::chatFriend), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "friend|befriend", - UseArgs_true, - Protected_true}, - {"keyDisregard", - defaultAction(&Actions::chatDisregard), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "disregard", - UseArgs_true, - Protected_true}, - {"keyNeutral", - defaultAction(&Actions::chatNeutral), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "neutral", - UseArgs_true, - Protected_true}, - {"keyBlacklist", - defaultAction(&Actions::chatBlackList), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "blacklist", - UseArgs_true, - Protected_true}, - {"keyEnemy", - defaultAction(&Actions::chatEnemy), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "enemy", - UseArgs_true, - Protected_true}, - {"keyErase", - defaultAction(&Actions::chatErase), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "erase", - UseArgs_true, - Protected_true}, - {"keyCleanGraphics", - defaultAction(&Actions::cleanGraphics), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "cleangraphics", - UseArgs_false, - Protected_false}, - {"keyCleanFonts", - defaultAction(&Actions::cleanFonts), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "cleanfonts", - UseArgs_false, - Protected_false}, - {"keyCreateParty", - defaultAction(&Actions::createParty), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "createparty", - UseArgs_true, - Protected_true}, - {"keyCreateGuild", - defaultAction(&Actions::createGuild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "createguild", - UseArgs_true, - Protected_true}, - {"keyParty", - defaultAction(&Actions::party), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "party", - UseArgs_true, - Protected_true}, - {"keyMe", - defaultAction(&Actions::me), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "me", - UseArgs_true, - Protected_true}, - {"keyToggle", - defaultAction(&Actions::toggle), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "toggle", - UseArgs_false, - Protected_false}, - {"keyPresent", - defaultAction(&Actions::present), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "present", - UseArgs_false, - Protected_false}, - {"keyPrintAll", - defaultAction(&Actions::printAll), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "all", - UseArgs_false, - Protected_true}, - {"keyMove", - defaultAction(&Actions::move), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "move", - UseArgs_true, - Protected_false}, - {"keySetTarget", - defaultAction(&Actions::setTarget), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "target", - UseArgs_true, - Protected_false}, - {"keyAttackHuman", - defaultAction(&Actions::attackHuman), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOFOLLOW | - InputCondition::VALIDSPEED, - "atkhuman", - UseArgs_false, - Protected_false}, - {"keyOutfit", - defaultAction(&Actions::commandOutfit), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "outfit", - UseArgs_true, - Protected_true}, - {"keyEmote", - defaultAction(&Actions::commandEmote), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "emote", - UseArgs_true, - Protected_false}, - {"keyEmotePet", - defaultAction(&Actions::commandEmotePet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "emotepet", - UseArgs_true, - Protected_false}, - {"keyAwayMessage", - defaultAction(&Actions::awayMessage), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "away", - UseArgs_true, - Protected_true}, - {"keyPseudoAway", - defaultAction(&Actions::pseudoAway), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "pseudoaway", - UseArgs_true, - Protected_true}, - {"keyFollow", - defaultAction(&Actions::follow), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "follow", - UseArgs_true, - Protected_false}, - {"keyNavigate", - defaultAction(&Actions::navigate), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "navigate", - UseArgs_true, - Protected_false}, - {"keyImitation", - defaultAction(&Actions::imitation), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "imitation", - UseArgs_true, - Protected_false}, - {"keySendMail", - defaultAction(&Actions::sendMail), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "sendmail|mailsend|mailto", - UseArgs_true, - Protected_true}, - {"keyTradeCommand", - defaultAction(&Actions::trade), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "trade", - UseArgs_true, - Protected_false}, - {"keyPriceLoad", - defaultAction(&Actions::priceLoad), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "priceload", - UseArgs_false, - Protected_true}, - {"keyPriceSave", - defaultAction(&Actions::priceSave), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "pricesave", - UseArgs_false, - Protected_true}, - {"keyCacheInfo", - defaultAction(&Actions::cacheInfo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "cacheinfo", - UseArgs_false, - Protected_true}, - {"keyDisconnect", - defaultAction(&Actions::disconnect), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "disconnect", - UseArgs_false, - Protected_true}, - {"keyUndress", - defaultAction(&Actions::undress), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "undress", - UseArgs_true, - Protected_false}, - {"keyDirs", - defaultAction(&Actions::dirs), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dirs", - UseArgs_false, - Protected_false}, - {"keyInfo", - defaultAction(&Actions::info), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "info", - UseArgs_false, - Protected_false}, - {"keyWait", - defaultAction(&Actions::wait), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "wait", - UseArgs_true, - Protected_true}, - {"keyUptime", - defaultAction(&Actions::uptime), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "uptime", - UseArgs_false, - Protected_false}, - {"keyAddPriorityAttack", - defaultAction(&Actions::addPriorityAttack), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addpriorityattack", - UseArgs_true, - Protected_true}, - {"keyAddAttack", - defaultAction(&Actions::addAttack), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addattack", - UseArgs_true, - Protected_true}, - {"keyRemoveAttack", - defaultAction(&Actions::removeAttack), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "removeattack|removeignoreattack", - UseArgs_true, - Protected_true}, - {"keyAddIgnoreAttack", - defaultAction(&Actions::addIgnoreAttack), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addignoreattack", - UseArgs_true, - Protected_true}, - {"keyDump", - defaultAction(&Actions::dump), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dump", - UseArgs_false, - Protected_true}, - {"keyServerIgnoreAll", - defaultAction(&Actions::serverIgnoreAll), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "serverignoreall", - UseArgs_false, - Protected_true}, - {"keyServerUnIgnoreAll", - defaultAction(&Actions::serverUnIgnoreAll), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "serverunignoreall", - UseArgs_false, - Protected_true}, - {"keySetDrop", - defaultAction(&Actions::setDrop), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setdrop", - UseArgs_true, - Protected_false}, - {"keyError", - defaultAction(&Actions::error), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "error", - UseArgs_false, - Protected_true}, - {"keyDumpg", - defaultAction(&Actions::dumpGraphics), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpg", - UseArgs_false, - Protected_true}, - {"keyDumpe", - defaultAction(&Actions::dumpEnvironment), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpe", - UseArgs_false, - Protected_true}, - {"keyDumpt", - defaultAction(&Actions::dumpTests), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpt", - UseArgs_false, - Protected_true}, - {"keyDumpOGL", - defaultAction(&Actions::dumpOGL), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpogl", - UseArgs_false, - Protected_true}, - {"keyDumpGL", - defaultAction(&Actions::dumpGL), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpgl", - UseArgs_false, - Protected_true}, - {"keyDumpMods", - defaultAction(&Actions::dumpMods), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpMods", - UseArgs_false, - Protected_false}, - {"keyUrl", - defaultAction(&Actions::url), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "url", - UseArgs_true, - Protected_true}, - {"keyOpenUrl", - defaultAction(&Actions::openUrl), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "open", - UseArgs_true, - Protected_true}, - {"keyExecute", - defaultAction(&Actions::execute), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "execute", - UseArgs_true, - Protected_true}, - {"keyTestSdlFont", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, -#if defined USE_OPENGL && defined DEBUG_SDLFONT - &Actions::testSdlFont, -#else // defined USE_OPENGL && defined DEBUG_SDLFONT - nullptr, -#endif // defined USE_OPENGL && defined DEBUG_SDLFONT - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, -#if defined USE_OPENGL && defined DEBUG_SDLFONT - "testsdlfont", -#else // defined USE_OPENGL && defined DEBUG_SDLFONT - "", -#endif // defined USE_OPENGL && defined DEBUG_SDLFONT - UseArgs_false, - Protected_true}, - {"keyEnableHightlight", - defaultAction(&Actions::enableHighlight), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "enablehighlight", - UseArgs_false, - Protected_true}, - {"keyDisableHightlight", - defaultAction(&Actions::disableHighlight), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "disablehighlight", - UseArgs_false, - Protected_true}, - {"keyDontRemoveName", - defaultAction(&Actions::dontRemoveName), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dontremovename", - UseArgs_false, - Protected_true}, - {"keyRemoveName", - defaultAction(&Actions::removeName), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "removename", - UseArgs_false, - Protected_true}, - {"keyDisableAway", - defaultAction(&Actions::disableAway), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "disableaway", - UseArgs_false, - Protected_true}, - {"keyEnableAway", - defaultAction(&Actions::enableAway), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "enableaway", - UseArgs_false, - Protected_true}, - {"keyTestParticle", - defaultAction(&Actions::testParticle), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "testparticle", - UseArgs_true, - Protected_false}, - {"keyCreateItems", - defaultAction(&Actions::createItems), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "createitems", - UseArgs_false, - Protected_false}, - {"keyTalkRaw", - defaultAction(&Actions::talkRaw), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "talkraw", - UseArgs_true, - Protected_true}, - {"keyTalkPet", - defaultAction(&Actions::talkPet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "talkpet", - UseArgs_true, - Protected_true}, - {"keyUploadConfig", - defaultAction(&Actions::uploadConfig), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "uploadconfig", - UseArgs_false, - Protected_true}, - {"keyUploadServerConfig", - defaultAction(&Actions::uploadServerConfig), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "uploadserverconfig", - UseArgs_false, - Protected_true}, - {"keyUploadLog", - defaultAction(&Actions::uploadLog), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "uploadlog", - UseArgs_false, - Protected_true}, - {"keyGm", - defaultAction(&Actions::gm), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gm", - UseArgs_true, - Protected_true}, - {"keyHack", - defaultAction(&Actions::hack), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "hack", - UseArgs_true, - Protected_true}, - {"keyDebugSpawn", - defaultAction(&Actions::debugSpawn), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "debugspawn", - UseArgs_true, - Protected_true}, - {"keyPetSmilie", - defaultAction(nullptr), - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut16", - addKey(SDLK_q), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut17", - addKey(SDLK_w), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut18", - addKey(SDLK_e), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut19", - addKey(SDLK_r), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut20", - addKey(SDLK_t), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut21", - addKey(SDLK_y), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut22", - addKey(SDLK_u), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut23", - addKey(SDLK_i), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut24", - addKey(SDLK_o), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut25", - addKey(SDLK_p), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut26", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut27", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut28", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut29", - addKey(SDLK_a), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut30", - addKey(SDLK_s), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut31", - addKey(SDLK_d), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut32", - addKey(SDLK_f), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut33", - addKey(SDLK_g), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut34", - addKey(SDLK_h), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut35", - addKey(SDLK_j), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut36", - addKey(SDLK_k), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut37", - addKey(SDLK_l), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut38", - addKey(SDLK_SEMICOLON), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut39", - addKey(SDLK_QUOTE), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut40", - addKey(SDLK_z), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut41", - addKey(SDLK_x), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut42", - addKey(SDLK_c), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut43", - addKey(SDLK_v), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut44", - addKey(SDLK_b), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut45", - addKey(SDLK_n), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut46", - addKey(SDLK_m), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut47", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetEmoteShortcut48", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_PET_EMOTION, - &Actions::petEmote, - InputAction::PET_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyCatchPet", - defaultAction(&Actions::catchPet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "catchpet|catch|taming", - UseArgs_true, - Protected_true}, - {"keyChatServerIgnoreWhisper", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::serverIgnoreWhisper, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, - "serverignore", - UseArgs_false, - Protected_true}, - {"keyChatServerUnIgnoreWhisper", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::serverUnIgnoreWhisper, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::INGAME, - "serverunignore", - UseArgs_false, - Protected_true}, - {"keyMercenaryFire", - defaultAction(&Actions::mercenaryFire), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "mercenaryfire|firemercenary", - UseArgs_false, - Protected_true}, - {"keyTargetMercenary", - defaultAction(&Actions::targetMercenary), - InputCondition::KEY_DOWN | - InputCondition::INGAME | - InputCondition::NOTARGET, - "targetmercenary", - UseArgs_false, - Protected_false}, - {"keyTargetPet", - defaultAction(&Actions::targetPet), - InputCondition::KEY_DOWN | - InputCondition::INGAME | - InputCondition::NOTARGET, - "targetpet", - UseArgs_false, - Protected_false}, - {"keyPetSetName", - defaultAction(&Actions::setPetName), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setpetname|petsetname", - UseArgs_false, - Protected_true}, - {"keyHomunculusSetName", - defaultAction(&Actions::setHomunculusName), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "sethomunname|homunsetname|sethomunculusname|homunculussetname", - UseArgs_false, - Protected_true}, - {"keyHomunculusFire", - defaultAction(&Actions::fireHomunculus), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "firehomunculus|homunculusfire|firehomun|homunfire", - UseArgs_false, - Protected_true}, - {"keyWindowBank", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::bankWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "bank|openbank", - UseArgs_false, - Protected_false}, - {"keyInventoryPrevTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::prevInvTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "previnvtab", - UseArgs_false, - Protected_false}, - {"keyInventoryNextTab", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::nextInvTab, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::INGAME, - "nextinvtab", - UseArgs_false, - Protected_false}, - {"keyContextMenu", - defaultAction(&Actions::contextMenu), - InputCondition::KEY_DOWN | - InputCondition::NOINPUT | - InputCondition::NOAWAY | - InputCondition::NOMODAL | - InputCondition::INGAME, - "contextmenu", - UseArgs_false, - Protected_false}, - {"keyBuy", - defaultAction(&Actions::buy), - InputCondition::KEY_DOWN | InputCondition::GAME, - "buy", - UseArgs_false, - Protected_false}, - {"keySell", - defaultAction(&Actions::sell), - InputCondition::KEY_DOWN | InputCondition::GAME, - "sell", - UseArgs_false, - Protected_false}, - {"keyWhisper2", - defaultAction(&Actions::msg2), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "w2|whisper2|msg2", - UseArgs_true, - Protected_true}, - {"keyGuild", - defaultAction(&Actions::guild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "guild", - UseArgs_true, - Protected_true}, - {"keyNuke", - defaultAction(&Actions::chatNuke), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "nuke", - UseArgs_true, - Protected_true}, - {"keyUse", - defaultAction(&Actions::useItem), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "use|useitem", - UseArgs_true, - Protected_true}, - {"keyChatAdd", - defaultAction(&Actions::chatAdd), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addchat|chatadd", - UseArgs_true, - Protected_true}, - {"keyWhisperText", - defaultAction(&Actions::msgText), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "wt|whispertext|msgtext", - UseArgs_true, - Protected_true}, - {"keyNavigateTo", - defaultAction(&Actions::navigateTo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "navigateto", - UseArgs_true, - Protected_false}, - {"keyCameraMove", - defaultAction(&Actions::moveCamera), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "movecamera|cameramove", - UseArgs_true, - Protected_false}, - {"keyDropItem", - defaultAction(&Actions::dropItemId), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dropitem", - UseArgs_true, - Protected_true}, - {"keyDropItemAll", - defaultAction(&Actions::dropItemIdAll), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dropitemall", - UseArgs_true, - Protected_true}, - {"keyDropInv", - defaultAction(&Actions::dropItemInv), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dropinv", - UseArgs_true, - Protected_true}, - {"keyDropInvAll", - defaultAction(&Actions::dropItemInvAll), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dropinvall", - UseArgs_true, - Protected_true}, - {"keyUseInv", - defaultAction(&Actions::useItemInv), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "useinv", - UseArgs_true, - Protected_true}, - {"keyInvToStorage", - defaultAction(&Actions::invToStorage), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "invtostorage|invstorage", - UseArgs_true, - Protected_true}, - {"keyTradeAdd", - defaultAction(&Actions::tradeAdd), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "tradeadd|addtrade", - UseArgs_true, - Protected_true}, - {"keyStorageToInv", - defaultAction(&Actions::storageToInv), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "storagetoinv|storageinv", - UseArgs_true, - Protected_true}, - {"keyProtectItem", - defaultAction(&Actions::protectItem), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "protectitem|itemprotect", - UseArgs_true, - Protected_true}, - {"keyUnProtectItem", - defaultAction(&Actions::unprotectItem), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "unprotectitem|itemunprotect", - UseArgs_true, - Protected_true}, - {"keyKickParty", - defaultAction(&Actions::kickParty), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "kickparty|partykick", - UseArgs_true, - Protected_true}, - {"keyAddText", - defaultAction(&Actions::addText), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addtext|textadd", - UseArgs_true, - Protected_true}, - {"keyKick", - defaultAction(&Actions::kick), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "kick", - UseArgs_true, - Protected_true}, - {"keyLeaveParty", - defaultAction(&Actions::leaveParty), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "leaveparty|partyleave", - UseArgs_true, - Protected_true}, - {"keyWarp", - defaultAction(&Actions::warp), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "warp", - UseArgs_true, - Protected_true}, - {"keyClearChat", - defaultAction(&Actions::clearChat), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "clearchat|chatclear", - UseArgs_false, - Protected_false}, - {"keyPetMoveUp", - defaultAction(&Actions::petMoveUp), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petmoveup|moveuppet", - UseArgs_false, - Protected_false}, - {"keyPetMoveDown", - defaultAction(&Actions::petMoveDown), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petmovedown|movedownpet", - UseArgs_false, - Protected_false}, - {"keyPetMoveLeft", - defaultAction(&Actions::petMoveLeft), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petmoveleft|moveleftpet", - UseArgs_false, - Protected_false}, - {"keyPetMoveRight", - defaultAction(&Actions::petMoveRight), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petmoveright|moverightpet", - UseArgs_false, - Protected_false}, - {"keyPetDirectUp", - defaultAction(&Actions::petDirectUp), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petdirectup|directuppet", - UseArgs_false, - Protected_false}, - {"keyPetDirectDown", - defaultAction(&Actions::petDirectDown), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petdirectdown|directdownpet", - UseArgs_false, - Protected_false}, - {"keyPetDirectLeft", - defaultAction(&Actions::petDirectLeft), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petdirectleft|directleftpet", - UseArgs_false, - Protected_false}, - {"keyPetDirectRight", - defaultAction(&Actions::petDirectRight), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petdirectright|directrightpet", - UseArgs_false, - Protected_false}, - {"keyPetAiStart", - defaultAction(nullptr), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyPetAiStop", - defaultAction(nullptr), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyGeneralTab", - defaultAction(&Actions::chatGeneralTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "generaltab|generalchattab|general", - UseArgs_false, - Protected_false}, - {"keyDebugTab", - defaultAction(&Actions::chatDebugTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "debugtab|debugchattab", - UseArgs_false, - Protected_false}, - {"keyBattleTab", - defaultAction(&Actions::chatBattleTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "battletab|battlechattab", - UseArgs_false, - Protected_false}, - {"keyTradeTab", - defaultAction(&Actions::chatTradeTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "tradetab|tradechattab", - UseArgs_false, - Protected_false}, - {"keyLangTab", - defaultAction(&Actions::chatLangTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "langtab|langchattab", - UseArgs_false, - Protected_false}, - {"keyGmTab", - defaultAction(&Actions::chatGmTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmtab|gmchattab", - UseArgs_false, - Protected_false}, - {"keyPartyTab", - defaultAction(&Actions::chatPartyTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "partytab|partychattab", - UseArgs_false, - Protected_false}, - {"keyGuildTab", - defaultAction(&Actions::chatGuildTab), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "guildtab|guildchattab", - UseArgs_false, - Protected_false}, - {"keyDropClear", - defaultAction(&Actions::clearDrop), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "cleardrops|cleardrop|cleardropwindow|dropclear|dropsclear", - UseArgs_false, - Protected_true}, - {"keyWindowCart", - defaultAction(&Actions::cartWindowShow), - InputCondition::KEY_DOWN | InputCondition::SHORTCUT0, - "cart|opencart", - UseArgs_false, - Protected_false}, - {"keyMagicHealMostDamaged", - defaultAction(&Actions::healmd), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED, - "healmd|saveass", - UseArgs_false, - Protected_false}, - {"keyPetMove", - defaultAction(&Actions::petMove), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "movepet|petmove", - UseArgs_true, - Protected_false}, - {"keyHomunTalk", - defaultAction(&Actions::homunTalk), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "homuntalk|merctalk", - UseArgs_true, - Protected_true}, - {"keyHomunEmote", - defaultAction(&Actions::commandHomunEmote), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "homunemote|mercemote", - UseArgs_true, - Protected_false}, - {"keyHomunSmilie", - defaultAction(nullptr), - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut1", - addKey(SDLK_1), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut2", - addKey(SDLK_2), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut3", - addKey(SDLK_3), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut4", - addKey(SDLK_4), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut5", - addKey(SDLK_5), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut6", - addKey(SDLK_6), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut7", - addKey(SDLK_7), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut8", - addKey(SDLK_8), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut9", - addKey(SDLK_9), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut10", - addKey(SDLK_0), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut11", - addKey(SDLK_MINUS), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut12", - addKey(SDLK_EQUALS), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut13", - addKey(SDLK_BACKSPACE), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut14", - addKey(SDLK_INSERT), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut15", - addKey(SDLK_HOME), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut16", - addKey(SDLK_q), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut17", - addKey(SDLK_w), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut18", - addKey(SDLK_e), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut19", - addKey(SDLK_r), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut20", - addKey(SDLK_t), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut21", - addKey(SDLK_y), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut22", - addKey(SDLK_u), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut23", - addKey(SDLK_i), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut24", - addKey(SDLK_o), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut25", - addKey(SDLK_p), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut26", - addKey(SDLK_LEFTBRACKET), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut27", - addKey(SDLK_RIGHTBRACKET), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut28", - addKey(SDLK_BACKSLASH), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut29", - addKey(SDLK_a), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut30", - addKey(SDLK_s), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut31", - addKey(SDLK_d), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut32", - addKey(SDLK_f), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut33", - addKey(SDLK_g), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut34", - addKey(SDLK_h), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut35", - addKey(SDLK_j), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut36", - addKey(SDLK_k), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut37", - addKey(SDLK_l), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut38", - addKey(SDLK_SEMICOLON), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut39", - addKey(SDLK_QUOTE), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut40", - addKey(SDLK_z), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut41", - addKey(SDLK_x), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut42", - addKey(SDLK_c), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut43", - addKey(SDLK_v), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut44", - addKey(SDLK_b), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut45", - addKey(SDLK_n), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut46", - addKey(SDLK_m), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut47", - addKey(SDLK_COMMA), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyHomunEmoteShortcut48", - addKey(SDLK_PERIOD), - emptyKey, - Input::GRP_HOMUN_EMOTION, - &Actions::homunEmote, - InputAction::HOMUN_EMOTE, 100, - InputCondition::KEY_DOWN | InputCondition::GAME, - "", - UseArgs_false, - Protected_false}, - {"keyKickGuild", - defaultAction(&Actions::kickGuild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "kickguild|guildkick", - UseArgs_true, - Protected_true}, - {"keyHat", - defaultAction(&Actions::hat), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "hat|hats|showhat", - UseArgs_false, - Protected_false}, - {"keyCreatePublicRoom", - defaultAction(&Actions::createPublicChatRoom), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "createroom|createpublicroom", - UseArgs_true, - Protected_true}, - {"keyJoinRoom", - defaultAction(&Actions::joinChatRoom), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "joinroom", - UseArgs_true, - Protected_true}, - {"keyLeaveRoom", - defaultAction(&Actions::leaveChatRoom), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "leaveroom", - UseArgs_false, - Protected_true}, - {"keyWindowStatusBar", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::quickWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "yellowbar|quickoptions", - UseArgs_false, - Protected_false}, - {"keyWindowMail", - emptyKey, - emptyKey, - Input::GRP_DEFAULT | Input::GRP_GUI, - &Actions::mailWindowShow, - InputAction::NO_VALUE, 50, - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "mailwindow|mail", - UseArgs_false, - Protected_false}, - {"keyConfSet", - defaultAction(&Actions::confSet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "confset|setconf", - UseArgs_true, - Protected_true}, - {"keyServerConfSet", - defaultAction(&Actions::serverConfSet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "servconfset|setservconf", - UseArgs_true, - Protected_true}, - {"keyConfGet", - defaultAction(&Actions::confGet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "confget|getconf", - UseArgs_true, - Protected_true}, - {"keyServerConfGet", - defaultAction(&Actions::serverConfGet), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "servconfget|getservconf", - UseArgs_true, - Protected_true}, - {"keyChangeTargetingType", - defaultAction(&Actions::changeTargetingType), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::VALIDSPEED | InputCondition::EMODS, - "", - UseArgs_false, - Protected_true}, - {"keyTestInfo", - defaultAction(&Actions::testInfo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "testinfo", - UseArgs_false, - Protected_true}, - {"keySlide", - defaultAction(&Actions::slide), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "slide", - UseArgs_true, - Protected_true}, - {"keySelectSkillLevel", - defaultAction(&Actions::selectSkillLevel), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "selectskilllevel", - UseArgs_true, - Protected_true}, - {"keySkill", - defaultAction(&Actions::skill), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "skill|useskill", - UseArgs_true, - Protected_true}, - {"keyCraftShortcut1", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut2", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut3", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut4", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut5", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut6", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut7", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut8", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraftShortcut9", - emptyKey, - emptyKey, - Input::GRP_DEFAULT, - &Actions::craftKey, - InputAction::NO_VALUE, 100, - InputCondition::KEY_DOWN | - InputCondition::NOMODAL | - InputCondition::NOAWAY | - InputCondition::NONPCINPUT, - "", - UseArgs_false, - Protected_true}, - {"keyCraft", - defaultAction(&Actions::craft), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "craft", - UseArgs_true, - Protected_true}, - {"keyChatClipboard", - defaultAction(&Actions::chatClipboard), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "chatclipboard", - UseArgs_true, - Protected_true}, - {"keyNpcClipboard", - defaultAction(&Actions::npcClipboard), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "npcclipboard", - UseArgs_true, - Protected_true}, - {"keyAddPickup", - defaultAction(&Actions::addPickup), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addpickup|pickupadd", - UseArgs_true, - Protected_true}, - {"keyRemovePickup", - defaultAction(&Actions::removePickup), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "removepickup|pickupremove", - UseArgs_true, - Protected_true}, - {"keyIgnorePickup", - defaultAction(&Actions::ignorePickup), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "ignorepickup|pickupignore", - UseArgs_true, - Protected_true}, - {"keyResetModifiers", - defaultAction(&Actions::resetGameModifiers), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "resetyellowbar|resetmodifiers|resetgamemodifiers", - UseArgs_false, - Protected_true}, - {"keyBarToChat", - defaultAction(&Actions::barToChat), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "bartochat", - UseArgs_true, - Protected_true}, - {"keySeenCmd", - defaultAction(&Actions::seen), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "seen|lastseen", - UseArgs_true, - Protected_true}, - {"keyTargetSkillUnit", - defaultAction(&Actions::targetSkillUnit), - InputCondition::KEY_DOWN | - InputCondition::INGAME | - InputCondition::NOTARGET, - "targetskillunit|targetskill", - UseArgs_false, - Protected_false}, - {"keyMonsterInfo", - defaultAction(&Actions::monsterInfo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "monsterinfo|mobinfo|mi", - UseArgs_true, - Protected_true}, - {"keyItemInfo", - defaultAction(&Actions::itemInfo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "iteminfo|ii", - UseArgs_true, - Protected_true}, - {"keyWhoDrops", - defaultAction(&Actions::whoDrops), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "whodrops|whodrop", - UseArgs_true, - Protected_true}, - {"keyMobSearch", - defaultAction(&Actions::mobSearch), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "mobsearch|monstersearch", - UseArgs_true, - Protected_true}, - {"keyMobSpawnSearch", - defaultAction(&Actions::mobSpawnSearch), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "mobspawnsearch|monsterspawnsearch|whereis", - UseArgs_true, - Protected_true}, - {"keyPlayerGmCommands", - defaultAction(&Actions::playerGmCommands), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmcommands|playergmcommands|playercommands", - UseArgs_true, - Protected_true}, - {"keyPlayerCharGmCommands", - defaultAction(&Actions::playerCharGmCommands), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmcharcommands|playerchargmcommands|playercharcommands", - UseArgs_true, - Protected_true}, - {"keyCommandShowLevel", - defaultAction(&Actions::commandShowLevel), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showlevel|exp", - UseArgs_true, - Protected_true}, - {"keyCommandShowStats", - defaultAction(&Actions::commandShowStats), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showstats|stats", - UseArgs_true, - Protected_true}, - {"keyCommandShowStorageList", - defaultAction(&Actions::commandShowStorage), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showstorage|storagelist", - UseArgs_true, - Protected_true}, - {"keyCommandShowCartList", - defaultAction(&Actions::commandShowCart), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showcart|cartlist", - UseArgs_true, - Protected_true}, - {"keyCommandShowInventoryList", - defaultAction(&Actions::commandShowInventory), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showinventory|inventorylist|itemlist", - UseArgs_true, - Protected_true}, - {"keyLocatePlayer", - defaultAction(&Actions::locatePlayer), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "locate|locateplayer|whereplayer", - UseArgs_true, - Protected_true}, - {"keyCommandShowAccountInfo", - defaultAction(&Actions::commandShowAccountInfo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showaccountinfo|showaccinfo|accinfo", - UseArgs_true, - Protected_true}, - {"keyCommandSpawn", - defaultAction(&Actions::commandSpawn), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "spawn|monster", - UseArgs_true, - Protected_true}, - {"keyCommandSpawnSlave", - defaultAction(&Actions::commandSpawnSlave), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "spawnslave|monsterslave|summon", - UseArgs_true, - Protected_true}, - {"keyCommandSpawnClone", - defaultAction(&Actions::commandSpawnClone), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "spawnclone|playerclone|clone", - UseArgs_true, - Protected_true}, - {"keyCommandSpawnSlaveClone", - defaultAction(&Actions::commandSpawnSlaveClone), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "spawnslaveclone|playerslaveclone|slaveclone", - UseArgs_true, - Protected_true}, - {"keyCommandSpawnEvilClone", - defaultAction(&Actions::commandSpawnEvilClone), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "spawnevilclone|playerevilclone|evilclone", - UseArgs_true, - Protected_true}, - {"keyCommandSavePosition", - defaultAction(&Actions::commandSavePosition), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "savepos|saveposition", - UseArgs_true, - Protected_true}, - {"keyCommandLoadPosition", - defaultAction(&Actions::commandLoadPosition), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "loadpos|loadposition", - UseArgs_true, - Protected_true}, - {"keyCommandRandomWarp", - defaultAction(&Actions::commandRandomWarp), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "randomwarp|jump", - UseArgs_true, - Protected_true}, - {"keyCommandGotoNpc", - defaultAction(&Actions::commandGotoNpc), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gotonpc|warptonpc", - UseArgs_true, - Protected_true}, - {"keyCommandKiller", - defaultAction(&Actions::commandKiller), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setkiller|killer", - UseArgs_true, - Protected_true}, - {"keyCommandKillable", - defaultAction(&Actions::commandKillable), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setkillable|killable", - UseArgs_true, - Protected_true}, - {"keyCommandHeal", - defaultAction(&Actions::commandHeal), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmheal", - UseArgs_true, - Protected_true}, - {"keyCommandAlive", - defaultAction(&Actions::commandAlive), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "alive|revive", - UseArgs_true, - Protected_true}, - {"keyCommandDisguise", - defaultAction(&Actions::commandDisguise), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "disguise", - UseArgs_true, - Protected_true}, - {"keyCommandImmortal", - defaultAction(&Actions::commandImmortal), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "immortal", - UseArgs_true, - Protected_true}, - {"keyCommandHide", - defaultAction(&Actions::commandHide), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "hide", - UseArgs_true, - Protected_true}, - {"keyCommandNuke", - defaultAction(&Actions::commandNuke), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmnuke", - UseArgs_true, - Protected_true}, - {"keyCommandKill", - defaultAction(&Actions::commandKill), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "kill", - UseArgs_true, - Protected_true}, - {"keyCommandJail", - defaultAction(&Actions::commandJail), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "jail", - UseArgs_true, - Protected_true}, - {"keyCommandUnjail", - defaultAction(&Actions::commandUnjail), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "unjail", - UseArgs_true, - Protected_true}, - {"keyCommandNpcMove", - defaultAction(&Actions::commandNpcMove), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "npcmove|movenpc|warpnpc|npcwarp", - UseArgs_true, - Protected_true}, - {"keyCommandNpcHide", - defaultAction(&Actions::commandNpcHide), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "npchide|hidenpc", - UseArgs_true, - Protected_true}, - {"keyCommandNpcShow", - defaultAction(&Actions::commandNpcShow), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "npcshow|shownpc", - UseArgs_true, - Protected_true}, - {"keyCommandChangePartyLeader", - defaultAction(&Actions::commandChangePartyLeader), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "gmpartyleader|changepartyleader", - UseArgs_true, - Protected_true}, - {"keyCommandPartyRecall", - defaultAction(&Actions::commandPartyRecall), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "partyrecall|recallparty", - UseArgs_true, - Protected_true}, - {"keyCommandBreakGuild", - defaultAction(&Actions::commandBreakGuild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "breakguild|gmbreakguild", - UseArgs_true, - Protected_true}, - {"keyCommandGuildRecall", - defaultAction(&Actions::commandGuildRecall), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "guildrecall|recallguild", - UseArgs_true, - Protected_true}, - {"keyMailTo", - defaultAction(&Actions::mailTo), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "mailto", - UseArgs_true, - Protected_true}, - {"keyAdoptChild", - defaultAction(&Actions::adoptChild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "adoptchild|childadopt|askforchild", - UseArgs_true, - Protected_true}, - {"keyDumpMemmoryUsage", - defaultAction(&Actions::dumpMemoryUsage), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "dumpmemoryusage|memoryusage", - UseArgs_false, - Protected_true}, - {"keySetEmoteType", - defaultAction(&Actions::setEmoteType), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setemotetype", - UseArgs_true, - Protected_true}, - {"keyCameraRestore", - defaultAction(&Actions::restoreCamera), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "restorecamera|returncamera|camerarestore", - UseArgs_false, - Protected_false}, - {"keyShowSkillLevels", - defaultAction(&Actions::showSkillLevels), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showskilllevels", - UseArgs_true, - Protected_true}, - {"keyShowskilltype", - defaultAction(&Actions::showSkillType), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showskilltypes", - UseArgs_true, - Protected_true}, - {"keySelectSkillType", - defaultAction(&Actions::selectSkillType), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "selectskilltype", - UseArgs_true, - Protected_true}, - {"keyShowSkillOffsetX", - defaultAction(&Actions::showSkillOffsetX), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showskilloffsetx", - UseArgs_true, - Protected_true}, - {"keyShowSkillOffsetY", - defaultAction(&Actions::showSkillOffsetY), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showskilloffsety", - UseArgs_true, - Protected_true}, - {"keySetSkillOffsetX", - defaultAction(&Actions::setSkillOffsetX), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setskilloffsetx", - UseArgs_true, - Protected_true}, - {"keySetSkillOffsetY", - defaultAction(&Actions::setSkillOffsetY), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "setskilloffsety", - UseArgs_true, - Protected_true}, - {"keyLeaveGuild", - defaultAction(&Actions::leaveGuild), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "leaveguild|guildleave", - UseArgs_false, - Protected_true}, - {"keyGuildNotice", - defaultAction(&Actions::guildNotice), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "notice|guildnotice", - UseArgs_true, - Protected_true}, - {"keyPartyItemShare", - defaultAction(&Actions::partyItemShare), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "itemshare|shareitem", - UseArgs_true, - Protected_true}, - {"keyPartyExpShare", - defaultAction(&Actions::partyExpShare), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "expshare|shareexp", - UseArgs_true, - Protected_true}, - {"keyPartyAutoItemShare", - defaultAction(&Actions::partyAutoItemShare), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "autoitemshare|shareautoitem|itemautoshare", - UseArgs_true, - Protected_true}, - {"keyCreateItem", - defaultAction(&Actions::createItem), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "createitem", - UseArgs_true, - Protected_true}, - {"keyCopyOutfitToChat", - defaultAction(&Actions::outfitToChat), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "outfittochat|copyoutfittochat", - UseArgs_false, - Protected_true}, - {"keyCommandTranslate", - defaultAction(&Actions::translate), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "translate|trans|tran", - UseArgs_false, - Protected_true}, - {"keyCommandSendGuiKey", - defaultAction(&Actions::sendGuiKey), - InputCondition::KEY_DOWN | InputCondition::ENABLED, - "guikey|sendguikey", - UseArgs_true, - Protected_true}, - {"keyMoveAttackUp", - defaultAction(&Actions::moveAttackUp), - InputCondition::KEY_DOWN | InputCondition::ENABLED, - "attackmoveup|moveattackup", - UseArgs_true, - Protected_true}, - {"keyMoveAttackDown", - defaultAction(&Actions::moveAttackDown), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "attackmovedown|moveattackdown", - UseArgs_true, - Protected_true}, - {"keyMovePriorityAttackUp", - defaultAction(&Actions::movePriorityAttackUp), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "attackmovepriorityup|movepriorityattackup", - UseArgs_true, - Protected_true}, - {"keyMovePriorityAttackDown", - defaultAction(&Actions::movePriorityAttackDown), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "attackmoveprioritydown|movepriorityattackdown", - UseArgs_true, - Protected_true}, - {"keyShowItems", - defaultAction(&Actions::showItems), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "showitems|items|itemsshow", - UseArgs_true, - Protected_true}, - {"keyCommandSendMouseKey", - defaultAction(&Actions::sendMouseKey), - InputCondition::KEY_DOWN | InputCondition::ENABLED, - "mousekey|sendmousekey", - UseArgs_true, - Protected_true}, - {"keyCommandSendChars", - defaultAction(&Actions::sendChars), - InputCondition::KEY_DOWN | InputCondition::ENABLED, - "sendchar|sendchars|charsend", - UseArgs_true, - Protected_true}, - {"keyClearOutfit", - defaultAction(&Actions::outfitClear), - InputCondition::KEY_DOWN | - InputCondition::DEFAULT | - InputCondition::INGAME, - "clearoutfit|outfitclear", - UseArgs_false, - Protected_true}, - {"keyClipboardCopy", - defaultAction(&Actions::clipboardCopy), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "clipboardcopy|copyclipboard", - UseArgs_true, - Protected_true}, - {"keyGotoPc", - defaultAction(&Actions::commandGotoPc), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "goto|gotopc", - UseArgs_true, - Protected_true}, - {"keyCommandRecallPc", - defaultAction(&Actions::commandRecallPc), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "recall|recallpc", - UseArgs_true, - Protected_true}, - {"keyCommandIpCheck", - defaultAction(&Actions::commandIpCheck), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "ipcheck|checkip", - UseArgs_true, - Protected_true}, - {"keyWindowServerInfo", - defaultAction(&Actions::serverInfoWindowShow), - InputCondition::KEY_DOWN | - InputCondition::GAME | - InputCondition::NOTARGET, - "serverinfo|infoserver", - UseArgs_false, - Protected_false}, - {"keyMercenaryToMaster", - defaultAction(&Actions::mercenaryToMaster), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "mercenarytomaster|mercmaster", - UseArgs_false, - Protected_false}, - {"keyHomunculusToMaster", - defaultAction(&Actions::homunculusToMaster), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "homunculustomaster|homunmaster", - UseArgs_false, - Protected_false}, - {"keyHomunculusFeed", - defaultAction(&Actions::homunculusFeed), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "homunculusfeed|homunfeed|feedhomun|feedhomunculus", - UseArgs_false, - Protected_false}, - {"keyPetFeed", - defaultAction(&Actions::petFeed), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petfeed|feedpet", - UseArgs_false, - Protected_false}, - {"keyPetDropLoot", - defaultAction(&Actions::petDropLoot), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petdroploot|petloot", - UseArgs_false, - Protected_true}, - {"keyPetReturnToEgg", - defaultAction(&Actions::petReturnToEgg), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "pettoegg|petegg|petreturn|returnpet|petreturnegg", - UseArgs_false, - Protected_false}, - {"keyPetUnequip", - defaultAction(&Actions::petUnequip), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "petunequip|unequippet", - UseArgs_false, - Protected_false}, - {"keyAddSkillShortcut", - defaultAction(&Actions::addSkillShortcut), - InputCondition::KEY_DOWN | InputCondition::INGAME, - "addskillshortcut|skillshortcut", - UseArgs_true, - Protected_false}, -}; - -#undef defaultAction -#undef addKey -#undef joystickButton - -#endif // INPUT_INPUTACTIONMAP_H diff --git a/src/input/inputactionoperators.cpp b/src/input/inputactionoperators.cpp deleted file mode 100644 index 5d6db0967..000000000 --- a/src/input/inputactionoperators.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2015-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/inputactionoperators.h" - -#include "utils/cast.h" - -#include "debug.h" - -InputActionT operator+(InputActionT action, const int& i) -{ - action = static_cast<InputActionT>(CAST_S32(action) + i); - return action; -} - -InputActionT operator+(InputActionT action, const unsigned int& i) -{ - action = static_cast<InputActionT>(CAST_U32(action) + i); - return action; -} - -int operator-(const InputActionT &action1, const InputActionT &action2) -{ - return CAST_S32(action1) - CAST_S32(action2); -} diff --git a/src/input/inputactionoperators.h b/src/input/inputactionoperators.h deleted file mode 100644 index 02f98d1eb..000000000 --- a/src/input/inputactionoperators.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2015-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTACTIONOPERATORS_H -#define INPUT_INPUTACTIONOPERATORS_H - -#include "enums/input/inputaction.h" - -InputActionT operator+(InputActionT action, const int& i); -InputActionT operator+(InputActionT action, const unsigned int& i); -int operator-(const InputActionT &action1, const InputActionT &action2); - -#endif // INPUT_INPUTACTIONOPERATORS_H diff --git a/src/input/inputactionsortfunctor.h b/src/input/inputactionsortfunctor.h deleted file mode 100644 index 106f44b0a..000000000 --- a/src/input/inputactionsortfunctor.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTACTIONSORTFUNCTOR_H -#define INPUT_INPUTACTIONSORTFUNCTOR_H - -#include "input/inputactiondata.h" - -#include "utils/cast.h" - -#include "localconsts.h" - -class InputActionSortFunctor final -{ - public: - A_DEFAULT_COPY(InputActionSortFunctor) - - bool operator() (const InputActionT key1, - const InputActionT key2) const - { - const size_t k1 = CAST_SIZE(key1); - const size_t k2 = CAST_SIZE(key2); - return keys[k1].priority > keys[k2].priority; - } - - const InputActionData *keys A_NONNULLPOINTER; -}; - -#endif // INPUT_INPUTACTIONSORTFUNCTOR_H diff --git a/src/input/inputfunction.h b/src/input/inputfunction.h deleted file mode 100644 index 7b43203d6..000000000 --- a/src/input/inputfunction.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTFUNCTION_H -#define INPUT_INPUTFUNCTION_H - -#include "input/inputitem.h" - -#include "localconsts.h" - -const size_t inputFunctionSize = 3U; - -struct InputFunction final -{ - A_DEFAULT_COPY(InputFunction) - - InputItem values[inputFunctionSize]; -}; - -#endif // INPUT_INPUTFUNCTION_H diff --git a/src/input/inputitem.h b/src/input/inputitem.h deleted file mode 100644 index e7c7b4488..000000000 --- a/src/input/inputitem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTITEM_H -#define INPUT_INPUTITEM_H - -#include "enums/input/inputtype.h" - -#include "localconsts.h" - -struct InputItem final -{ - InputItem() : - type(InputType::UNKNOWN), - value(-1) - { } - - InputItem(const InputTypeT type0, - const int value0) : - type(type0), - value(value0) - { } - - A_DEFAULT_COPY(InputItem) - - InputTypeT type; - int value; -}; - -#endif // INPUT_INPUTITEM_H diff --git a/src/input/inputmanager.cpp b/src/input/inputmanager.cpp deleted file mode 100644 index db0c0c6c5..000000000 --- a/src/input/inputmanager.cpp +++ /dev/null @@ -1,1096 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/inputmanager.h" - -#include "configuration.h" -#include "game.h" -#include "settings.h" - -#include "being/localplayer.h" -#include "being/playerinfo.h" - -#include "input/inputactionmap.h" -#include "input/inputactionsortfunctor.h" -#include "input/joystick.h" -#include "input/keyboardconfig.h" -#ifdef USE_SDL2 -#include "input/touch/multitouchmanager.h" -#endif // USE_SDL2 - -#include "input/touch/touchmanager.h" - -#include "gui/gui.h" -#include "gui/sdlinput.h" - -#include "gui/widgets/selldialog.h" -#include "gui/widgets/textfield.h" - -#include "gui/widgets/tabs/setup_input.h" - -#include "gui/windows/buydialog.h" -#include "gui/windows/chatwindow.h" -#include "gui/windows/inventorywindow.h" -#include "gui/windows/npcdialog.h" -#include "gui/windows/setupwindow.h" -#include "gui/windows/textdialog.h" -#include "gui/windows/tradewindow.h" - -#include "utils/checkutils.h" -#include "utils/foreach.h" -#include "utils/gettext.h" -#include "utils/stdmove.h" -#include "utils/timer.h" - -#include "gui/focushandler.h" - -#include <algorithm> - -#include "debug.h" - -InputManager inputManager; - -class QuitDialog; - -extern QuitDialog *quitDialog; - -namespace -{ - InputActionSortFunctor inputActionDataSorter; -} // namespace - -InputManager::InputManager() : - mSetupInput(nullptr), - mNewKeyIndex(InputAction::NO_VALUE), - mMask(1), - mNameMap(), - mChatMap(), - mKey() -{ -} - -void InputManager::init() restrict2 -{ - for (size_t i = 0; - i < CAST_SIZE(InputAction::TOTAL); - i ++) - { - InputFunction &kf = mKey[i]; - mKeyStr[i].clear(); - for (size_t f = 0; f < inputFunctionSize; f ++) - { - InputItem &ki = kf.values[f]; - ki.type = InputType::UNKNOWN; - ki.value = -1; - } - } - - mNewKeyIndex = InputAction::NO_VALUE; - - resetKeys(); - retrieve(); - update(); -} - -void InputManager::update() -{ - keyboard.update(); - if (joystick != nullptr) - joystick->update(); -} - -void InputManager::retrieve() restrict2 -{ - for (int i = 0; i < CAST_S32(InputAction::TOTAL); i ++) - { - const std::string &restrict cmd = inputActionData[i].chatCommand; - if (!cmd.empty()) - { - StringVect tokens; - splitToStringVector(tokens, cmd, '|'); - FOR_EACH (StringVectCIter, it, tokens) - mChatMap[*it] = i; - } -#ifdef USE_SDL2 - const std::string cf = std::string("sdl2") - + inputActionData[i].configField; -#else // USE_SDL2 - - const std::string cf = inputActionData[i].configField; -#endif // USE_SDL2 - - InputFunction &restrict kf = mKey[i]; - if (!cf.empty()) - { - mNameMap[cf] = static_cast<InputActionT>(i); - const std::string keyStr = config.getValue(cf, ""); - const size_t keyStrSize = keyStr.size(); - if (keyStr.empty()) - { - updateKeyString(kf, i); - continue; - } - - StringVect keys; - splitToStringVector(keys, keyStr, ','); - unsigned int i2 = 0; - for (StringVectCIter it = keys.begin(), it_end = keys.end(); - it != it_end && i2 < inputFunctionSize; ++ it) - { - std::string keyStr2 = *it; - if (keyStrSize < 2) - continue; - InputTypeT type = InputType::KEYBOARD; - if ((keyStr2[0] < '0' || keyStr2[0] > '9') - && keyStr2[0] != '-') - { - switch (keyStr2[0]) - { - case 'm': - type = InputType::MOUSE; - break; - case 'j': - type = InputType::JOYSTICK; - break; - default: - break; - } - keyStr2 = keyStr2.substr(1); - } - const int key = atoi(keyStr2.c_str()); - if (key >= -255 && key < SDLK_LAST) - { - kf.values[i2] = InputItem(type, key); - i2 ++; - } - } - for (; i2 < inputFunctionSize; i2 ++) - kf.values[i2] = InputItem(); - } - updateKeyString(kf, i); - } -} - -void InputManager::store() const restrict2 -{ - for (int i = 0; i < CAST_S32(InputAction::TOTAL); i ++) - { -#ifdef USE_SDL2 - const std::string cf = std::string("sdl2") - + inputActionData[i].configField; -#else // USE_SDL2 - - const std::string cf = inputActionData[i].configField; -#endif // USE_SDL2 - - if (!cf.empty()) - { - std::string keyStr; - const InputFunction &restrict kf = mKey[i]; - - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict key = kf.values[i2]; - if (key.type != InputType::UNKNOWN) - { - std::string tmp("k"); - switch (key.type) - { - case InputType::MOUSE: - tmp = "m"; - break; - case InputType::JOYSTICK: - tmp = "j"; - break; - case InputType::KEYBOARD: - case InputType::UNKNOWN: - default: - break; - } - if (key.value != -1) - { - if (keyStr.empty()) - { - keyStr.append(tmp).append(toString(key.value)); - } - else - { - keyStr.append(strprintf(",%s%d", - tmp.c_str(), key.value)); - } - } - } - } - if (keyStr.empty()) - keyStr = "-1"; - - config.setValue(cf, keyStr); - } - } -} - -void InputManager::resetKey(const InputActionT i) restrict2 -{ - InputFunction &restrict key = mKey[CAST_SIZE(i)]; - for (size_t i2 = 1; i2 < inputFunctionSize; i2 ++) - { - InputItem &restrict ki2 = key.values[i2]; - ki2.type = InputType::UNKNOWN; - ki2.value = -1; - } - const InputActionData &restrict kd = - inputActionData[CAST_SIZE(i)]; - InputItem &restrict val0 = key.values[0]; - val0.type = kd.defaultType1; - InputItem &restrict val1 = key.values[1]; - val1.type = kd.defaultType2; -#ifdef USE_SDL2 - if (kd.defaultType1 == InputType::KEYBOARD) - val0.value = SDL_GetScancodeFromKey(kd.defaultValue1); - else - val0.value = kd.defaultValue1; - if (kd.defaultType2 == InputType::KEYBOARD) - val1.value = SDL_GetScancodeFromKey(kd.defaultValue2); - else - val1.value = kd.defaultValue2; - if (val0.value == SDL_SCANCODE_UNKNOWN) - val0.value = -1; - if (val1.value == SDL_SCANCODE_UNKNOWN) - val1.value = -1; -#else // USE_SDL2 - - val0.value = kd.defaultValue1; - val1.value = kd.defaultValue2; -#endif // USE_SDL2 - - updateKeyString(key, CAST_SIZE(i)); -} - -void InputManager::resetKeys() restrict2 -{ - for (int i = 0; i < CAST_S32(InputAction::TOTAL); i++) - resetKey(static_cast<InputActionT>(i)); -} - -void InputManager::makeDefault(const InputActionT i) restrict2 -{ - if (i > InputAction::NO_VALUE && i < InputAction::TOTAL) - { - resetKey(i); - update(); - } -} - -bool InputManager::hasConflicts(InputActionT &restrict key1, - InputActionT &restrict key2) const restrict2 -{ - /** - * No need to parse the square matrix: only check one triangle - * that's enough to detect conflicts - */ - for (int i = 0; i < CAST_S32(InputAction::TOTAL); i++) - { - const InputActionData &restrict kdi = inputActionData[i]; - if (*kdi.configField == 0) - continue; - - const InputFunction &restrict ki = mKey[i]; - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict vali2 = ki.values[i2]; - if (vali2.value == -1) - continue; - - size_t j; - for (j = i, j++; j < CAST_S32(InputAction::TOTAL); j++) - { - if ((kdi.grp & inputActionData[j].grp) == 0 - || (*kdi.configField == 0)) - { - continue; - } - - for (size_t j2 = 0; j2 < inputFunctionSize; j2 ++) - { - const InputItem &restrict valj2 = mKey[j].values[j2]; - // Allow for item shortcut and emote keys to overlap - // as well as emote and ignore keys, but no other keys - if (valj2.type != InputType::UNKNOWN - && vali2.value == valj2.value - && vali2.type == valj2.type) - { - key1 = static_cast<InputActionT>(i); - key2 = static_cast<InputActionT>(j); - return true; - } - } - } - } - } - return false; -} - -void InputManager::callbackNewKey() restrict2 -{ -#ifndef DYECMD - mSetupInput->newKeyCallback(mNewKeyIndex); -#endif // DYECMD -} - -bool InputManager::isActionActive(const InputActionT index) const restrict2 -{ - if (!isActionActive0(index)) - return false; - - const InputActionData &restrict key = - inputActionData[CAST_SIZE(index)]; -// logger->log("isActionActive mask=%d, condition=%d, index=%d", -// mMask, key.condition, index); - if ((key.condition & mMask) != key.condition) - return false; - return true; -} - -bool InputManager::isActionActive0(const InputActionT index) -{ - if (keyboard.isActionActive(index)) - return true; - if ((joystick != nullptr) && joystick->isActionActive(index)) - return true; - return touchManager.isActionActive(index); -} - -InputFunction &InputManager::getKey(InputActionT index) restrict2 -{ - if (CAST_S32(index) < 0 || index >= InputAction::TOTAL) - index = InputAction::MOVE_UP; - return mKey[CAST_SIZE(index)]; -} - -std::string InputManager::getKeyStringLong(const InputActionT index) const - restrict2 -{ - std::string keyStr; - const InputFunction &restrict ki = mKey[CAST_SIZE(index)]; - - for (size_t i = 0; i < inputFunctionSize; i ++) - { - const InputItem &restrict key = ki.values[i]; - std::string str; - if (key.type == InputType::KEYBOARD) - { - if (key.value >= 0) - { - str = KeyboardConfig::getKeyName(key.value); - } - else if (key.value < -1) - { - // TRANSLATORS: long key name. must be short. - str = strprintf(_("key_%d"), -key.value); - } - } - else if (key.type == InputType::JOYSTICK) - { - // TRANSLATORS: long joystick button name. must be short. - str = strprintf(_("JButton%d"), key.value + 1); - } - if (!str.empty()) - { - if (keyStr.empty()) - keyStr = str; - else - keyStr.append(", ").append(str); - } - } - - if (keyStr.empty()) - { - // TRANSLATORS: unknown long key type - return _("unknown key"); - } - return keyStr; -} - -void InputManager::updateKeyString(const InputFunction &ki, - const size_t actionIdx) restrict2 -{ - std::string keyStr; - for (size_t i = 0; i < inputFunctionSize; i ++) - { - const InputItem &restrict key = ki.values[i]; - std::string str; - if (key.type == InputType::KEYBOARD) - { - if (key.value >= 0) - { - str = KeyboardConfig::getKeyShortString( - KeyboardConfig::getKeyName(key.value)); - } - else if (key.value < -1) - { - // TRANSLATORS: short key name. must be very short. - str = strprintf(_("key_%d"), -key.value); - } - } - else if (key.type == InputType::JOYSTICK) - { - // TRANSLATORS: short joystick button name. muse be very short - str = strprintf(_("JB%d"), key.value + 1); - } - if (!str.empty()) - { - if (keyStr.empty()) - keyStr = str; - else - keyStr.append(", ").append(str); - } - } - - if (keyStr.empty()) - { - // TRANSLATORS: unknown short key type. must be short - mKeyStr[actionIdx] = _("u key"); - } - else - { - mKeyStr[actionIdx] = STD_MOVE(keyStr); - } -} - -std::string InputManager::getKeyValueString(const InputActionT index) const - restrict2 -{ - return mKeyStr[CAST_SIZE(index)]; -} - -std::string InputManager::getKeyValueByName(const std::string &restrict - keyName) restrict2 -{ - const StringInpActionMapCIter it = mNameMap.find(keyName); - - if (it == mNameMap.end()) - return std::string(); - return getKeyValueString((*it).second); -} - -std::string InputManager::getKeyValueByNameLong(const std::string &restrict - keyName) restrict2 -{ - const StringInpActionMapCIter it = mNameMap.find(keyName); - - if (it == mNameMap.end()) - return std::string(); - return getKeyStringLong((*it).second); -} - -void InputManager::addActionKey(const InputActionT action, - const InputTypeT type, - const int val) restrict2 -{ - if (CAST_S32(action) < 0 || action >= InputAction::TOTAL) - return; - - int idx = -1; - InputFunction &restrict key = mKey[CAST_SIZE(action)]; - for (size_t i = 0; i < inputFunctionSize; i ++) - { - const InputItem &restrict val2 = key.values[i]; - if (val2.type == InputType::UNKNOWN || - (val2.type == type && val2.value == val)) - { - idx = CAST_S32(i); - break; - } - } - if (idx == -1) - { - for (size_t i = 1; i < inputFunctionSize; i ++) - { - InputItem &restrict val1 = key.values[i - 1]; - InputItem &restrict val2 = key.values[i]; - val1.type = val2.type; - val1.value = val2.value; - } - idx = inputFunctionSize - 1; - } - - key.values[idx] = InputItem(type, val); - updateKeyString(key, CAST_SIZE(action)); -} - -void InputManager::setNewKey(const SDL_Event &event, - const InputTypeT type) restrict2 -{ - int val = -1; - if (type == InputType::KEYBOARD) - val = KeyboardConfig::getKeyValueFromEvent(event); - else if (type == InputType::JOYSTICK && (joystick != nullptr)) - val = joystick->getButtonFromEvent(event); - - if (val != -1) - { - addActionKey(mNewKeyIndex, type, val); - update(); - } -} - -void InputManager::unassignKey() restrict2 -{ - InputFunction &restrict key = mKey[CAST_SIZE(mNewKeyIndex)]; - for (size_t i = 0; i < inputFunctionSize; i ++) - { - InputItem &restrict val = key.values[i]; - val.type = InputType::UNKNOWN; - val.value = -1; - } - updateKeyString(key, CAST_SIZE(mNewKeyIndex)); - update(); -} - -#ifndef DYECMD -bool InputManager::handleAssignKey(const SDL_Event &restrict event, - const InputTypeT type) restrict2 -{ - if ((setupWindow != nullptr) && setupWindow->isWindowVisible() && - getNewKeyIndex() > InputAction::NO_VALUE) - { - setNewKey(event, type); - callbackNewKey(); - setNewKeyIndex(InputAction::NO_VALUE); - return true; - } - return false; -} -#else // DYECMD - -bool InputManager::handleAssignKey(const SDL_Event &restrict event A_UNUSED, - const InputTypeT type A_UNUSED) restrict2 -{ - return false; -} -#endif // DYECMD - -bool InputManager::handleEvent(const SDL_Event &restrict event) restrict2 -{ - BLOCK_START("InputManager::handleEvent") - switch (event.type) - { - case SDL_KEYDOWN: - { -#ifdef USE_SDL2 - if (keyboard.ignoreKey(event)) - { - BLOCK_END("InputManager::handleEvent") - return true; - } -#endif // USE_SDL2 - - keyboard.refreshActiveKeys(); - updateConditionMask(true); - if (handleAssignKey(event, InputType::KEYBOARD)) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - - keyboard.handleActivateKey(event); - // send straight to gui for certain windows -#ifndef DYECMD - if ((quitDialog != nullptr) || TextDialog::isActive()) - { - if (guiInput != nullptr) - guiInput->pushInput(event); - if (gui != nullptr) - gui->handleInput(); - BLOCK_END("InputManager::handleEvent") - return true; - } -#endif // DYECMD - - break; - } - case SDL_KEYUP: - { -#ifdef USE_SDL2 - if (keyboard.ignoreKey(event)) - { - BLOCK_END("InputManager::handleEvent") - return true; - } -#endif // USE_SDL2 - - keyboard.refreshActiveKeys(); - updateConditionMask(false); - keyboard.handleDeActicateKey(event); - break; - } - case SDL_JOYBUTTONDOWN: - { - updateConditionMask(true); -// joystick.handleActicateButton(event); - if (handleAssignKey(event, InputType::JOYSTICK)) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - break; - } - case SDL_JOYBUTTONUP: - { - updateConditionMask(false); -// joystick.handleDeActicateButton(event); - break; - } -#ifdef USE_SDL2 - case SDL_FINGERDOWN: - multiTouchManager.handleFingerDown(event); - break; - case SDL_FINGERUP: - multiTouchManager.handleFingerUp(event); - break; -#else // USE_SDL2 -#ifdef ANDROID - case SDL_ACCELEROMETER: - { - break; - } -#endif // ANDROID -#endif // USE_SDL2 - - default: - break; - } - - if (guiInput != nullptr) - guiInput->pushInput(event); - if (gui != nullptr) - { - const bool res = gui->handleInput(); - if (res && event.type == SDL_KEYDOWN) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - } - - switch (event.type) - { - case SDL_KEYDOWN: - if (isActionActive(InputAction::IGNORE_INPUT_1) || - isActionActive(InputAction::IGNORE_INPUT_2)) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - if (triggerAction(keyboard.getActionVector(event))) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - break; - -// disabled temporary -// case SDL_KEYUP: -// if (triggerAction(keyboard.getActionVector(event))) -// { -// BLOCK_END("InputManager::handleEvent") -// return true; -// } -// break; - - case SDL_JOYBUTTONDOWN: - if ((joystick != nullptr) && joystick->validate()) - { - if (triggerAction(joystick->getActionVector(event))) - { - BLOCK_END("InputManager::handleEvent") - return true; - } - } - break; -#ifdef ANDROID -#ifndef USE_SDL2 - case SDL_ACCELEROMETER: - { - break; - } -#endif // USE_SDL2 -#endif // ANDROID - - default: - break; - } - - BLOCK_END("InputManager::handleEvent") - return false; -} - -void InputManager::handleRepeat() -{ - const int time = tick_time; - keyboard.handleRepeat(time); - if (joystick != nullptr) - joystick->handleRepeat(time); -} - -void InputManager::updateConditionMask(const bool pressed A_UNUSED) restrict2 -{ - mMask = 1; - if (keyboard.isEnabled()) - mMask |= InputCondition::ENABLED; -#ifndef DYECMD - if (((chatWindow == nullptr) || !chatWindow->isInputFocused()) && - !NpcDialog::isAnyInputFocused() && - !InventoryWindow::isAnyInputFocused() && - ((tradeWindow == nullptr) || !tradeWindow->isInpupFocused())) - { - if (gui != nullptr) - { - FocusHandler *restrict const focus = gui->getFocusHandler(); - if (focus != nullptr) - { - if (dynamic_cast<TextField*>(focus->getFocused()) == nullptr) - mMask |= InputCondition::NOINPUT; - } - else - { - mMask |= InputCondition::NOINPUT; - } - } - else - { - mMask |= InputCondition::NOINPUT; - } - } - - if (!BuyDialog::isActive() && !SellDialog::isActive()) - mMask |= InputCondition::NOBUYSELL; - - if (!PlayerInfo::isVending()) - mMask |= InputCondition::NOVENDING; - if (!PlayerInfo::isInRoom()) - mMask |= InputCondition::NOROOM; - - const NpcDialog *restrict const dialog = NpcDialog::getActive(); - if ((dialog == nullptr) || !dialog->isTextInputFocused()) - mMask |= InputCondition::NONPCINPUT; - if ((dialog == nullptr) || (dialog->isCloseState() != 0)) - { - mMask |= InputCondition::NONPCDIALOG; - if (!InventoryWindow::isStorageActive()) - mMask |= InputCondition::NOTALKING; - } - if ((setupWindow == nullptr) || !setupWindow->isWindowVisible()) - mMask |= InputCondition::NOSETUP; - - if ((Game::instance() != nullptr) && Game::instance()->getValidSpeed()) - mMask |= InputCondition::VALIDSPEED; - - if (Game::instance() != nullptr) - mMask |= InputCondition::INGAME; - - if (localPlayer != nullptr) - { - if (localPlayer->getFollow().empty()) - mMask |= InputCondition::NOFOLLOW; - - if (!localPlayer->isTrickDead()) - mMask |= InputCondition::NOBLOCK; - - if (localPlayer->isAlive()) - mMask |= InputCondition::ALIVE; - } - else - { - mMask |= InputCondition::NOFOLLOW; - mMask |= InputCondition::NOBLOCK; - } -#endif // DYECMD - - if (!settings.awayMode) - mMask |= InputCondition::NOAWAY; - - if (gui != nullptr && gui->getFocusHandler()->getModalFocused() == nullptr) - mMask |= InputCondition::NOMODAL; - - if (!settings.disableGameModifiers) - mMask |= InputCondition::EMODS; - - if (!isActionActive0(InputAction::STOP_ATTACK) - && !isActionActive0(InputAction::UNTARGET)) - { - mMask |= InputCondition::NOTARGET; - } - // enable it temporary - mMask |= InputCondition::KEY_DOWN; -// if (pressed == true) -// mMask |= InputCondition::KEY_DOWN; -// else -// mMask |= InputCondition::KEY_UP; -} - -bool InputManager::checkKey(const InputActionData *restrict const key) const - restrict2 -{ - // logger->log("checkKey mask=%d, condition=%d", mMask, key->condition); - if ((key == nullptr) || (key->condition & mMask) != key->condition) - return false; - - return key->modKeyIndex == InputAction::NO_VALUE - || isActionActive0(key->modKeyIndex); -} - -bool InputManager::invokeKey(const InputActionData *restrict const key, - const InputActionT keyNum) restrict2 -{ - // no validation to keyNum because it validated in caller - - if (checkKey(key)) - { - InputEvent evt(keyNum, mMask); - ActionFuncPtr func = *(inputActionData[ - CAST_SIZE(keyNum)].action); - if ((func != nullptr) && func(evt)) - return true; - } - return false; -} - -void InputManager::executeAction(const InputActionT keyNum) restrict2 -{ - if (keyNum < InputAction::MOVE_UP || keyNum >= InputAction::TOTAL) - return; - - ActionFuncPtr func = *(inputActionData[CAST_SIZE( - keyNum)].action); - if (func != nullptr) - { - InputEvent evt(keyNum, mMask); - func(evt); - } -} - -bool InputManager::executeChatCommand(const std::string &restrict cmd, - const std::string &restrict args, - ChatTab *restrict const tab) restrict2 -{ - const StringIntMapCIter it = mChatMap.find(cmd); - if (it != mChatMap.end()) - { - ActionFuncPtr func = *(inputActionData[(*it).second].action); - if (func != nullptr) - { - InputEvent evt(args, tab, mMask); - func(evt); - return true; - } - } - else - { - reportAlways("Unknown chat command: /%s %s", - cmd.c_str(), - args.c_str()); - } - return false; -} - -bool InputManager::executeRemoteChatCommand(const std::string &restrict cmd, - const std::string &restrict args, - ChatTab *restrict const tab) - restrict2 -{ - const StringIntMapCIter it = mChatMap.find(cmd); - if (it != mChatMap.end()) - { - const InputActionData &restrict data = inputActionData[(*it).second]; - if (data.isProtected == Protected_true) - return false; - ActionFuncPtr func = *(data.action); - if (func != nullptr) - { - InputEvent evt(args, tab, mMask); - func(evt); - return true; - } - } - return false; -} - -bool InputManager::executeChatCommand(const InputActionT keyNum, - const std::string &restrict args, - ChatTab *restrict const tab) restrict2 -{ - if (CAST_S32(keyNum) < 0 || keyNum >= InputAction::TOTAL) - return false; - ActionFuncPtr func = *(inputActionData[CAST_SIZE( - keyNum)].action); - if (func != nullptr) - { - InputEvent evt(args, tab, mMask); - func(evt); - return true; - } - return false; -} - -void InputManager::updateKeyActionMap(KeyToActionMap &restrict actionMap, - KeyToIdMap &restrict idMap, - KeyTimeMap &restrict keyTimeMap, - const InputTypeT type) const restrict2 -{ - actionMap.clear(); - keyTimeMap.clear(); - - for (size_t i = 0; i < CAST_SIZE(InputAction::TOTAL); i ++) - { - const InputFunction &restrict key = mKey[i]; - const InputActionData &restrict kd = inputActionData[i]; - if (kd.action != nullptr) - { - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict ki = key.values[i2]; - if (ki.type == type && ki.value != -1) - { - actionMap[ki.value].push_back( - static_cast<InputActionT>(i)); - } - } - } - if (kd.configField != nullptr && (kd.grp & Input::GRP_GUICHAN) != 0) - { - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict ki = key.values[i2]; - if (ki.type == type && ki.value != -1) - idMap[ki.value] = static_cast<InputActionT>(i); - } - } - if (kd.configField != nullptr && (kd.grp & Input::GRP_REPEAT) != 0) - { - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict ki = key.values[i2]; - if (ki.type == type && ki.value != -1) - keyTimeMap[ki.value] = 0; - } - } - } - - inputActionDataSorter.keys = &inputActionData[0]; - FOR_EACH (KeyToActionMapIter, it, actionMap) - { - KeysVector *const keys = &it->second; - if (keys->size() > 1) - std::sort(keys->begin(), keys->end(), inputActionDataSorter); - } -} - -bool InputManager::triggerAction(const KeysVector *restrict const ptrs) - restrict2 -{ - if (ptrs == nullptr) - return false; - -// logger->log("ptrs: %d", (int)ptrs.size()); - - FOR_EACHP (KeysVectorCIter, it, ptrs) - { - const InputActionT keyNum = *it; - if (CAST_S32(keyNum) < 0 || keyNum >= InputAction::TOTAL) - continue; - - if (invokeKey(&inputActionData[CAST_SIZE(keyNum)], keyNum)) - return true; - } - return false; -} - -InputActionT InputManager::getKeyIndex(const int value, - const int grp, - const InputTypeT type) const restrict2 -{ - for (size_t i = 0; i < CAST_SIZE(InputAction::TOTAL); i++) - { - const InputFunction &restrict key = mKey[i]; - const InputActionData &restrict kd = inputActionData[i]; - for (size_t i2 = 0; i2 < inputFunctionSize; i2 ++) - { - const InputItem &restrict vali2 = key.values[i2]; - if (value == vali2.value && - (grp & kd.grp) != 0 && vali2.type == type) - { - return static_cast<InputActionT>(i); - } - } - } - return InputAction::NO_VALUE; -} - -InputActionT InputManager::getActionByKey(const SDL_Event &restrict event) - const restrict2 -{ - // for now support only keyboard events - if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) - { - const InputActionT idx = keyboard.getActionId(event); - if (CAST_S32(idx) >= 0 && - checkKey(&inputActionData[CAST_SIZE(idx)])) - { - return idx; - } - } - return InputAction::NO_VALUE; -} - -InputActionT InputManager::getActionByConfigField(const std::string &field) - const restrict2 -{ - for (int i = 0; i < CAST_S32(InputAction::TOTAL); i ++) - { - const std::string cf = inputActionData[i].configField; - if (field == cf) - return static_cast<InputActionT>(i); - } - return InputAction::NO_VALUE; -} - -void InputManager::addChatCommands(std::list<std::string> &restrict arr) - restrict -{ - const int sz = CAST_S32(InputAction::TOTAL); - for (int i = 0; i < sz; i++) - { - const InputActionData &restrict ad = inputActionData[i]; - std::string cmd = ad.chatCommand; - if (!cmd.empty()) - { - StringVect tokens; - splitToStringVector(tokens, cmd, '|'); - FOR_EACH (StringVectCIter, it, tokens) - { - cmd = std::string("/").append(*it); - if (ad.useArgs == UseArgs_true) - cmd.append(" "); - arr.push_back(cmd); - } - } - } -} diff --git a/src/input/inputmanager.h b/src/input/inputmanager.h deleted file mode 100644 index 012c06f7d..000000000 --- a/src/input/inputmanager.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_INPUTMANAGER_H -#define INPUT_INPUTMANAGER_H - -#include "input/inputfunction.h" - -#include "events/inputevent.h" - -#include "utils/cast.h" -#include "utils/stringmap.h" - -#include <list> - -PRAGMA48(GCC diagnostic push) -PRAGMA48(GCC diagnostic ignored "-Wshadow") -#include <SDL_events.h> -PRAGMA48(GCC diagnostic pop) - -class Setup_Input; - -struct InputActionData; - -typedef std::map<std::string, InputActionT> StringInpActionMap; -typedef StringInpActionMap::const_iterator StringInpActionMapCIter; - -class InputManager final -{ - public: - InputManager(); - - A_DELETE_COPY(InputManager) - - void init() restrict2; - - bool handleEvent(const SDL_Event &restrict event) restrict2; - - bool checkKey(const InputActionData *restrict const key) const - restrict2 A_WARN_UNUSED; - - void retrieve() restrict2; - - void store() const restrict2; - - void resetKeys() restrict2; - - void makeDefault(const InputActionT i) restrict2; - - bool hasConflicts(InputActionT &restrict key1, - InputActionT &restrict key2) const - restrict2 A_WARN_UNUSED; - - void callbackNewKey() restrict2; - - InputFunction &getKey(InputActionT index) - restrict2 A_CONST A_WARN_UNUSED; - - std::string getKeyValueString(const InputActionT index) - const restrict2 A_WARN_UNUSED; - - std::string getKeyStringLong(const InputActionT index) - const restrict2 A_WARN_UNUSED; - - std::string getKeyValueByName(const std::string &restrict keyName) - restrict2; - - std::string getKeyValueByNameLong(const std::string &restrict keyName) - restrict2; - - void addActionKey(const InputActionT action, - const InputTypeT type, - const int val) restrict2; - - void setNewKey(const SDL_Event &event, - const InputTypeT type) restrict2; - - void unassignKey() restrict2; - - bool isActionActive(const InputActionT index) const - restrict2 A_WARN_UNUSED; - - /** - * Set the index of the new key to be assigned. - */ - void setNewKeyIndex(const InputActionT value) restrict2 noexcept2 - { mNewKeyIndex = value; } - - /** - * Set a reference to the key setup window. - */ - void setSetupInput(Setup_Input *restrict const setupInput) - restrict2 noexcept2 A_NONNULL(2) - { mSetupInput = setupInput; } - - /** - * Get the index of the new key to be assigned. - */ - InputActionT getNewKeyIndex() const restrict2 noexcept2 A_WARN_UNUSED - { return mNewKeyIndex; } - - void updateKeyActionMap(KeyToActionMap &restrict actionMap, - KeyToIdMap &restrict idMap, - KeyTimeMap &restrict keyTimeMap, - const InputTypeT type) const restrict2; - - bool invokeKey(const InputActionData *restrict const key, - const InputActionT keyNum) restrict2; - - bool handleAssignKey(const SDL_Event &restrict event, - const InputTypeT type) restrict2; - - static void handleRepeat(); - - bool triggerAction(const KeysVector *restrict const ptrs) restrict2; - - InputActionT getKeyIndex(const int value, - const int grp, - const InputTypeT type) const - restrict2 A_WARN_UNUSED; - - static void update(); - - void updateConditionMask(const bool pressed) restrict2; - - InputActionT getActionByKey(const SDL_Event &restrict event) - const restrict2 A_WARN_UNUSED; - - InputActionT getActionByConfigField(const std::string &field) - const restrict2 A_WARN_UNUSED; - - void executeAction(const InputActionT keyNum) restrict2; - - bool executeChatCommand(const std::string &restrict cmd, - const std::string &restrict args, - ChatTab *restrict const tab) restrict2; - - bool executeRemoteChatCommand(const std::string &restrict cmd, - const std::string &restrict args, - ChatTab *restrict const tab) restrict2; - - bool executeChatCommand(const InputActionT keyNum, - const std::string &restrict args, - ChatTab *restrict const tab) restrict2; - - void addChatCommands(std::list<std::string> &restrict arr) restrict; - - protected: - void resetKey(const InputActionT i) restrict2; - - static bool isActionActive0(const InputActionT index) A_WARN_UNUSED; - - void updateKeyString(const InputFunction &ki, - const size_t actionIdx) restrict2; - - /** Reference to setup window */ - Setup_Input *mSetupInput A_NONNULLPOINTER; - /** Index of new key to be assigned */ - InputActionT mNewKeyIndex; - - int mMask; - - StringInpActionMap mNameMap; - StringIntMap mChatMap; - - InputFunction mKey[CAST_SIZE(InputAction::TOTAL)]; - std::string mKeyStr[CAST_SIZE(InputAction::TOTAL)]; -}; - -extern InputManager inputManager; - -#endif // INPUT_INPUTMANAGER_H diff --git a/src/input/joystick.cpp b/src/input/joystick.cpp deleted file mode 100644 index fc4b8434d..000000000 --- a/src/input/joystick.cpp +++ /dev/null @@ -1,446 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/joystick.h" - -#include "configuration.h" -#include "logger.h" -#include "settings.h" -#include "sdlshared.h" - -#include "input/inputmanager.h" - -#include "utils/foreach.h" -#include "utils/timer.h" - -PRAGMA48(GCC diagnostic push) -PRAGMA48(GCC diagnostic ignored "-Wshadow") -#include <SDL.h> -PRAGMA48(GCC diagnostic pop) - -#include "debug.h" - -Joystick *joystick = nullptr; -int Joystick::joystickCount = 0; -bool Joystick::mEnabled = false; - -Joystick::Joystick(const int no) : - mDirection(0), - mJoystick(nullptr), - mUpTolerance(0), - mDownTolerance(0), - mLeftTolerance(0), - mRightTolerance(0), - mCalibrating(false), - mNumber(no >= joystickCount ? joystickCount : no), - mCalibrated(false), - mButtonsNumber(MAX_BUTTONS), - mUseInactive(false), - mHaveHats(false), - mKeyToAction(), - mKeyToId(), - mKeyTimeMap() -{ - for (int i = 0; i < MAX_BUTTONS; i++) - mActiveButtons[i] = false; -} - -Joystick::~Joystick() -{ - close(); -} - -void Joystick::init() -{ - SDL_InitSubSystem(SDL_INIT_JOYSTICK); - // +++ possible to use SDL_EventState with different joystick features. - SDL_JoystickEventState(SDL_ENABLE); - joystickCount = SDL_NumJoysticks(); - logger->log("%i joysticks/gamepads found", joystickCount); - for (int i = 0; i < joystickCount; i++) - logger->log("- %s", SDL_JoystickNameForIndex(i)); - - mEnabled = config.getBoolValue("joystickEnabled"); - - if (joystickCount > 0) - { - joystick = new Joystick(config.getIntValue("selectedJoystick")); - if (mEnabled) - joystick->open(); - } -} - -bool Joystick::open() -{ - if (mNumber >= joystickCount) - mNumber = joystickCount - 1; - if (mNumber < 0) - { - logger->log1("error: incorrect joystick selection"); - return false; - } - logger->log("open joystick %d", mNumber); - - mJoystick = SDL_JoystickOpen(mNumber); - - if (mJoystick == nullptr) - { - logger->log("Couldn't open joystick: %s", SDL_GetError()); - return false; - } - - mButtonsNumber = SDL_JoystickNumButtons(mJoystick); - logger->log("Joystick: %i ", mNumber); -#ifdef USE_SDL2 - logger->log("Name: %s", SDL_JoystickName(mJoystick)); - SDL_JoystickGUID guid = SDL_JoystickGetGUID(mJoystick); - std::string guidStr; - for (int f = 0; f < 16; f ++) - guidStr.append(strprintf("%02x", CAST_U32(guid.data[f]))); - logger->log("Guid: %s", guidStr.c_str()); -#if SDL_VERSION_ATLEAST(2, 0, 6) - logger->log("Device id: %u:%u.%u", - CAST_U32(SDL_JoystickGetVendor(mJoystick)), - CAST_U32(SDL_JoystickGetProduct(mJoystick)), - CAST_U32(SDL_JoystickGetProductVersion(mJoystick))); - - SDL_JoystickType type = SDL_JoystickGetType(mJoystick); - std::string typeStr; - switch (type) - { - default: - case SDL_JOYSTICK_TYPE_UNKNOWN: - typeStr = "unknown"; - break; - case SDL_JOYSTICK_TYPE_GAMECONTROLLER: - typeStr = "game controller"; - break; - case SDL_JOYSTICK_TYPE_WHEEL: - typeStr = "wheel"; - break; - case SDL_JOYSTICK_TYPE_ARCADE_STICK: - typeStr = "arcade stick"; - break; - case SDL_JOYSTICK_TYPE_FLIGHT_STICK: - typeStr = "flight stick"; - break; - case SDL_JOYSTICK_TYPE_DANCE_PAD: - typeStr = "dance pad"; - break; - case SDL_JOYSTICK_TYPE_GUITAR: - typeStr = "guitar"; - break; - case SDL_JOYSTICK_TYPE_DRUM_KIT: - typeStr = "drum kit"; - break; - case SDL_JOYSTICK_TYPE_ARCADE_PAD: - typeStr = "arcade pad"; - break; - case SDL_JOYSTICK_TYPE_THROTTLE: - typeStr = "throttle"; - break; - } - logger->log("Type: " + typeStr); -#endif // SDL_VERSION_ATLEAST(2, 0, 6) - // probably need aslo dump SDL_JoystickCurrentPowerLevel -#else // USE_SDL2 - - logger->log("Name: %s", SDL_JoystickName(mNumber)); -#endif // USE_SDL2 - - logger->log("Axes: %i ", SDL_JoystickNumAxes(mJoystick)); - logger->log("Balls: %i", SDL_JoystickNumBalls(mJoystick)); - logger->log("Hats: %i", SDL_JoystickNumHats(mJoystick)); - logger->log("Buttons: %i", mButtonsNumber); - - mHaveHats = (SDL_JoystickNumHats(mJoystick) > 0); - - if (mButtonsNumber > MAX_BUTTONS) - mButtonsNumber = MAX_BUTTONS; - - mCalibrated = config.getValueBool("joystick" - + toString(mNumber) + "calibrated", false); - mUpTolerance = config.getIntValue("upTolerance" + toString(mNumber)); - mDownTolerance = config.getIntValue("downTolerance" + toString(mNumber)); - mLeftTolerance = config.getIntValue("leftTolerance" + toString(mNumber)); - mRightTolerance = config.getIntValue("rightTolerance" + toString(mNumber)); - mUseInactive = config.getBoolValue("useInactiveJoystick"); - - return true; -} - -void Joystick::close() -{ - logger->log("close joystick %d", mNumber); - if (mJoystick != nullptr) - { - SDL_JoystickClose(mJoystick); - mJoystick = nullptr; - } -} - -void Joystick::reload() -{ - joystickCount = SDL_NumJoysticks(); - setNumber(mNumber); -} - -void Joystick::setNumber(const int n) -{ - if (mJoystick != nullptr) - { - SDL_JoystickClose(mJoystick); - mNumber = n; - open(); - } - else - { - mNumber = n; - } -} - -void Joystick::logic() -{ - BLOCK_START("Joystick::logic") - // When calibrating, don't bother the outside with our state - if (mCalibrating) - { - doCalibration(); - BLOCK_END("Joystick::logic") - return; - }; - - if (!mEnabled || !mCalibrated) - { - BLOCK_END("Joystick::logic") - return; - } - - mDirection = 0; - - if (mUseInactive || - settings.inputFocused != KeyboardFocus::Unfocused) - { - // X-Axis - int position = SDL_JoystickGetAxis(mJoystick, 0); - if (position >= mRightTolerance) - mDirection |= RIGHT; - else if (position <= mLeftTolerance) - mDirection |= LEFT; - - // Y-Axis - position = SDL_JoystickGetAxis(mJoystick, 1); - if (position <= mUpTolerance) - mDirection |= UP; - else if (position >= mDownTolerance) - mDirection |= DOWN; - -#ifdef DEBUG_JOYSTICK - if (SDL_JoystickGetAxis(mJoystick, 2)) - logger->log("axis 2 pos: %d", SDL_JoystickGetAxis(mJoystick, 2)); - if (SDL_JoystickGetAxis(mJoystick, 3)) - logger->log("axis 3 pos: %d", SDL_JoystickGetAxis(mJoystick, 3)); - if (SDL_JoystickGetAxis(mJoystick, 4)) - logger->log("axis 4 pos: %d", SDL_JoystickGetAxis(mJoystick, 4)); -#endif // DEBUG_JOYSTICK - - if ((mDirection == 0u) && mHaveHats) - { - // reading only hat 0 - const uint8_t hat = SDL_JoystickGetHat(mJoystick, 0); - if ((hat & SDL_HAT_RIGHT) != 0) - mDirection |= RIGHT; - else if ((hat & SDL_HAT_LEFT) != 0) - mDirection |= LEFT; - if ((hat & SDL_HAT_UP) != 0) - mDirection |= UP; - else if ((hat & SDL_HAT_DOWN) != 0) - mDirection |= DOWN; - } - - // Buttons - for (int i = 0; i < mButtonsNumber; i++) - { - const bool state = (SDL_JoystickGetButton(mJoystick, i) == 1); - mActiveButtons[i] = state; - if (!state) - resetRepeat(i); -#ifdef DEBUG_JOYSTICK - if (mActiveButtons[i]) - logger->log("button: %d", i); -#endif // DEBUG_JOYSTICK - } - } - else - { - for (int i = 0; i < mButtonsNumber; i++) - mActiveButtons[i] = false; - } - BLOCK_END("Joystick::logic") -} - -void Joystick::startCalibration() -{ - mUpTolerance = 0; - mDownTolerance = 0; - mLeftTolerance = 0; - mRightTolerance = 0; - mCalibrating = true; -} - -void Joystick::doCalibration() -{ - // X-Axis - int position = SDL_JoystickGetAxis(mJoystick, 0); - if (position > mRightTolerance) - mRightTolerance = position; - else if (position < mLeftTolerance) - mLeftTolerance = position; - - // Y-Axis - position = SDL_JoystickGetAxis(mJoystick, 1); - if (position > mDownTolerance) - mDownTolerance = position; - else if (position < mUpTolerance) - mUpTolerance = position; -} - -void Joystick::finishCalibration() -{ - mCalibrated = true; - mCalibrating = false; - config.setValue("joystick" + toString(mNumber) + "calibrated", true); - config.setValue("leftTolerance" + toString(mNumber), mLeftTolerance); - config.setValue("rightTolerance" + toString(mNumber), mRightTolerance); - config.setValue("upTolerance" + toString(mNumber), mUpTolerance); - config.setValue("downTolerance" + toString(mNumber), mDownTolerance); -} - -bool Joystick::buttonPressed(const unsigned char no) const -{ - return (mEnabled && no < MAX_BUTTONS) ? mActiveButtons[no] : false; -} - -void Joystick::getNames(STD_VECTOR <std::string> &names) -{ - names.clear(); - for (int i = 0; i < joystickCount; i++) - names.push_back(SDL_JoystickNameForIndex(i)); -} - -void Joystick::update() -{ - inputManager.updateKeyActionMap(mKeyToAction, mKeyToId, - mKeyTimeMap, InputType::JOYSTICK); -} - -KeysVector *Joystick::getActionVector(const SDL_Event &event) -{ - const int i = getButtonFromEvent(event); - - if (i < 0 || i >= mButtonsNumber) - return nullptr; -// logger->log("button triggerAction: %d", i); - if (mKeyToAction.find(i) != mKeyToAction.end()) - return &mKeyToAction[i]; - return nullptr; -} - -KeysVector *Joystick::getActionVectorByKey(const int i) -{ - if (i < 0 || i >= mButtonsNumber) - return nullptr; -// logger->log("button triggerAction: %d", i); - if (mKeyToAction.find(i) != mKeyToAction.end()) - return &mKeyToAction[i]; - return nullptr; -} - -int Joystick::getButtonFromEvent(const SDL_Event &event) const -{ - if (event.jbutton.which != mNumber) - return -1; - return event.jbutton.button; -} - -bool Joystick::isActionActive(const InputActionT index) const -{ - if (!validate()) - return false; - - const InputFunction &key = inputManager.getKey(index); - for (size_t i = 0; i < inputFunctionSize; i ++) - { - const InputItem &val = key.values[i]; - if (val.type != InputType::JOYSTICK) - continue; - const int value = val.value; - if (value >= 0 && value < mButtonsNumber) - { - if (mActiveButtons[value]) - return true; - } - } - return false; -} - -bool Joystick::validate() const -{ - if (mCalibrating || !mEnabled || !mCalibrated) - return false; - - return mUseInactive || - settings.inputFocused != KeyboardFocus::Unfocused; -} - -void Joystick::handleRepeat(const int time) -{ - BLOCK_START("Joystick::handleRepeat") - FOR_EACH (KeyTimeMapIter, it, mKeyTimeMap) - { - bool repeat(false); - const int key = (*it).first; - if (key >= 0 && key < mButtonsNumber) - { - if (mActiveButtons[key]) - repeat = true; - } - if (repeat) - { - int &keyTime = (*it).second; - if (time > keyTime && abs(time - keyTime) - > SDL_DEFAULT_REPEAT_DELAY * 10) - { - keyTime = time; - inputManager.triggerAction(getActionVectorByKey(key)); - } - } - } - BLOCK_END("Joystick::handleRepeat") -} - -void Joystick::resetRepeat(const int key) -{ - const KeyTimeMapIter it = mKeyTimeMap.find(key); - if (it != mKeyTimeMap.end()) - (*it).second = tick_time; -} diff --git a/src/input/joystick.h b/src/input/joystick.h deleted file mode 100644 index cb4b7a78d..000000000 --- a/src/input/joystick.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_JOYSTICK_H -#define INPUT_JOYSTICK_H - -#include "events/inputevent.h" - -PRAGMA48(GCC diagnostic push) -PRAGMA48(GCC diagnostic ignored "-Wshadow") -#include <SDL_events.h> -PRAGMA48(GCC diagnostic pop) - -class Joystick final -{ - public: - /** - * Number of buttons we can handle. - */ - enum - { - MAX_BUTTONS = 64 - }; - - /** - * Directions, to be used as bitmask values. - */ - enum - { - UP = 1, - DOWN = 2, - LEFT = 4, - RIGHT = 8 - }; - - /** - * Initializes the joystick subsystem. - */ - static void init(); - - /** - * Returns the number of available joysticks. - */ - static int getNumberOfJoysticks() A_WARN_UNUSED - { return joystickCount; } - - /** - * Constructor, pass the number of the joystick the new object - * should access. - */ - explicit Joystick(const int no); - - A_DELETE_COPY(Joystick) - - ~Joystick(); - - bool open(); - - void close(); - - static bool isEnabled() A_WARN_UNUSED - { return mEnabled; } - - void setNumber(const int n); - - constexpr2 static void setEnabled(const bool enabled) noexcept2 - { mEnabled = enabled; } - - static void getNames(STD_VECTOR <std::string> &names); - - /** - * Updates the direction and button information. - */ - void logic(); - - void startCalibration(); - - void finishCalibration(); - - bool isCalibrating() const noexcept2 A_WARN_UNUSED - { return mCalibrating; } - - bool buttonPressed(const unsigned char no) const A_WARN_UNUSED; - - bool isUp() const noexcept2 A_WARN_UNUSED - { return mEnabled && ((mDirection & UP) != 0); } - - bool isDown() const noexcept2 A_WARN_UNUSED - { return mEnabled && ((mDirection & DOWN) != 0); } - - bool isLeft() const noexcept2 A_WARN_UNUSED - { return mEnabled && ((mDirection & LEFT) != 0); } - - bool isRight() const noexcept2 A_WARN_UNUSED - { return mEnabled && ((mDirection & RIGHT) != 0); } - - int getNumber() const noexcept2 A_WARN_UNUSED - { return mNumber; } - - void setUseInactive(const bool b) - { mUseInactive = b; } - - void update(); - - KeysVector *getActionVector(const SDL_Event &event) A_WARN_UNUSED; - - KeysVector *getActionVectorByKey(const int i) A_WARN_UNUSED; - - int getButtonFromEvent(const SDL_Event &event) const A_WARN_UNUSED; - - bool isActionActive(const InputActionT index) const A_WARN_UNUSED; - - bool validate() const A_WARN_UNUSED; - - void handleRepeat(const int time); - - void resetRepeat(const int key); - - void reload(); - - protected: - unsigned char mDirection; - - bool mActiveButtons[MAX_BUTTONS]; - - SDL_Joystick *mJoystick; - - int mUpTolerance; - int mDownTolerance; - int mLeftTolerance; - int mRightTolerance; - bool mCalibrating; - int mNumber; - bool mCalibrated; - int mButtonsNumber; - bool mUseInactive; - bool mHaveHats; - - KeyToActionMap mKeyToAction; - - KeyToIdMap mKeyToId; - - KeyTimeMap mKeyTimeMap; - - /** - * Is joystick support enabled. - */ - static bool mEnabled; - static int joystickCount; - - void doCalibration(); -}; - -extern Joystick *joystick; - -#endif // INPUT_JOYSTICK_H diff --git a/src/input/key.cpp b/src/input/key.cpp deleted file mode 100644 index 13646dc8e..000000000 --- a/src/input/key.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* _______ __ __ __ ______ __ __ _______ __ __ - * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ - * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / - * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / - * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / - * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / - * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ - * - * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson - * - * - * Per Larsson a.k.a finalman - * Olof Naessén a.k.a jansem/yakslem - * - * Visit: http://guichan.sourceforge.net - * - * License: (BSD) - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of Guichan nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * For comments regarding functions please see the header file. - */ - -#include "input/key.h" - -#include "debug.h" - -Key::Key(const int value) : - mValue(value) -{ -} - -bool Key::isCharacter() const -{ - return (mValue >= 32 && mValue <= 126) - || (mValue >= 162 && mValue <= 255) - || (mValue == 9); -} - -bool Key::isNumber() const -{ - return mValue >= 48 && mValue <= 57; -} - -bool Key::isLetter() const -{ - return ((mValue >= 65 && mValue <= 90) || - (mValue >= 97 && mValue <= 122) || - (mValue >= 192 && mValue <= 255)) && - mValue != 215 && - mValue != 247; -} - -int Key::getValue() const -{ - return mValue; -} - -bool Key::operator==(const Key& key) const -{ - return mValue == key.mValue; -} - -bool Key::operator!=(const Key& key) const -{ - return mValue != key.mValue; -} diff --git a/src/input/key.h b/src/input/key.h deleted file mode 100644 index 58c594f36..000000000 --- a/src/input/key.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* _______ __ __ __ ______ __ __ _______ __ __ - * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ - * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / - * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / - * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / - * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / - * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ - * - * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson - * - * - * Per Larsson a.k.a finalman - * Olof Naessén a.k.a jansem/yakslem - * - * Visit: http://guichan.sourceforge.net - * - * License: (BSD) - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of Guichan nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef INPUT_KEY_H -#define INPUT_KEY_H - -#include "localconsts.h" - -// windows.h defines DELETE which breaks this file as we have a constant named -// DELETE, hence we undefine DELETE if it is defined and hope people don't use -// that windows define with Guichan. -#if defined (_WIN32) && defined(DELETE) -#undef DELETE -#endif // defined (_WIN32) && defined(DELETE) - -/** - * Represents a key or a character. - */ -class Key final -{ - public: - /** - * Constructor. - * - * @param value The ascii or enum value for the key. - */ - explicit Key(const int value = 0); - - A_DEFAULT_COPY(Key) - - /** - * Checks if a key is a character. - * - * @return True if the key is a letter, number or whitespace, - * false otherwise. - */ - bool isCharacter() const A_WARN_UNUSED; - - /** - * Checks if a key is a number. - * - * @return True if the key is a number (0-9), - * false otherwise. - */ - bool isNumber() const A_WARN_UNUSED; - - /** - * Checks if a key is a letter. - * - * @return True if the key is a letter (a-z,A-Z), - * false otherwise. - */ - bool isLetter() const A_WARN_UNUSED; - - /** - * Gets the value of the key. If an ascii value exists it - * will be returned. Otherwise an enum value will be returned. - * - * @return the value of the key. - */ - int getValue() const A_WARN_UNUSED; - - /** - * Compares two keys. - * - * @param key The key to compare this key with. - * @return True if the keys are equal, false otherwise. - */ - bool operator==(const Key& key) const; - - /** - * Compares two keys. - * - * @param key The key to compare this key with. - * @return True if the keys are not equal, false otherwise. - */ - bool operator!=(const Key& key) const; - - protected: - /** - * Holds the value of the key. It may be an ascii value - * or an enum value. - */ - int mValue; -}; - -#endif // INPUT_KEY_H diff --git a/src/input/keyboardconfig.cpp b/src/input/keyboardconfig.cpp deleted file mode 100644 index c67fb5151..000000000 --- a/src/input/keyboardconfig.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/keyboardconfig.h" - -#include "configuration.h" -#ifdef USE_SDL2 -#include "settings.h" -#endif // USE_SDL2 - -#include "input/inputmanager.h" - -#include "utils/foreach.h" -#include "utils/gettext.h" - -#include "debug.h" - -extern volatile int tick_time; - -KeyboardConfig keyboard; - -KeyboardConfig::KeyboardConfig() : - mEnabled(true), - mActiveKeys(nullptr), - mActiveKeys2(nullptr), - mRepeatTime(0), - mKeyToAction(), - mKeyToId(), - mKeyTimeMap(), - mBlockAltTab(true) -{ -} - -void KeyboardConfig::init() -{ - mEnabled = true; - delete [] mActiveKeys2; - mActiveKeys2 = new uint8_t[500]; - mRepeatTime = config.getIntValue("repeateInterval2") / 10; - mBlockAltTab = config.getBoolValue("blockAltTab"); -} - -void KeyboardConfig::deinit() -{ - delete [] mActiveKeys2; - mActiveKeys2 = nullptr; -} - -InputActionT KeyboardConfig::getKeyIndex(const SDL_Event &event, const int grp) -{ - const int keyValue = getKeyValueFromEvent(event); - return inputManager.getKeyIndex(keyValue, grp, InputType::KEYBOARD); -} - -void KeyboardConfig::refreshActiveKeys() -{ - mActiveKeys = SDL_GetKeyState(nullptr); -} - -std::string KeyboardConfig::getKeyName(const int key) -{ - if (key == -1) - return ""; - if (key > -1) - { -#ifdef USE_SDL2 - return SDL_GetKeyName(SDL_GetKeyFromScancode( - static_cast<SDL_Scancode>(key))); -#else // USE_SDL2 - - return SDL_GetKeyName(static_cast<SDLKey>(key)); -#endif // USE_SDL2 - } - - // TRANSLATORS: long key name, should be short - return strprintf(_("key_%d"), CAST_S32(key)); -} - -std::string KeyboardConfig::getKeyShortString(const std::string &key) -{ - if (key == "backspace") - return "bksp"; - else if (key == "numlock") - return "numlock"; - else if (key == "caps lock") - return "caplock"; - else if (key == "scroll lock") - return "scrlock"; - else if (key == "right shift") - return "rshift"; - else if (key == "left shift") - return "lshift"; - else if (key == "right ctrl") - return "rctrl"; - else if (key == "left ctrl") - return "lctrl"; - else if (key == "right alt") - return "ralt"; - else if (key == "left alt") - return "lalt"; - else if (key == "right meta") - return "rmeta"; - else if (key == "left meta") - return "lmeta"; - else if (key == "right super") - return "rsuper"; - else if (key == "left super") - return "lsuper"; - else if (key == "print screen") - return "print screen"; - else if (key == "page up") - return "pg up"; - else if (key == "page down") - return "pg down"; - - if (key == "unknown key") - { - // TRANSLATORS: Unknown key short string. - // TRANSLATORS: This string must be maximum 5 chars - return _("u key"); - } - return key; -} - -KeysVector *KeyboardConfig::getActionVector(const SDL_Event &event) -{ - const int i = getKeyValueFromEvent(event); -// logger->log("key triggerAction: %d", i); - if (i != 0 && i < SDLK_LAST && mKeyToAction.find(i) != mKeyToAction.end()) - return &mKeyToAction[i]; - return nullptr; -} - -KeysVector *KeyboardConfig::getActionVectorByKey(const int i) -{ -// logger->log("key triggerAction: %d", i); - if (i != 0 && i < SDLK_LAST && mKeyToAction.find(i) != mKeyToAction.end()) - return &mKeyToAction[i]; - return nullptr; -} - -InputActionT KeyboardConfig::getActionId(const SDL_Event &event) -{ - const int i = getKeyValueFromEvent(event); -// logger->log("getActionId: %d", i); - if (i != 0 && i < SDLK_LAST && mKeyToId.find(i) != mKeyToId.end()) - return mKeyToId[i]; - return InputAction::NO_VALUE; -} - -bool KeyboardConfig::isActionActive(const InputActionT index) const -{ - if ((mActiveKeys == nullptr) || (mActiveKeys2 == nullptr)) - return false; - - const InputFunction &key = inputManager.getKey(index); - for (size_t i = 0; i < inputFunctionSize; i ++) - { - const InputItem &val = key.values[i]; - if (val.type != InputType::KEYBOARD) - continue; - - const int value = val.value; - if (value >= 0) - { - if (mActiveKeys[value] != 0u) - return true; - } - else if (value < -1 && value > -500) - { - if (mActiveKeys2[-value] != 0u) - return true; - } - } - return false; -} - -void KeyboardConfig::update() -{ - inputManager.updateKeyActionMap(mKeyToAction, mKeyToId, - mKeyTimeMap, InputType::KEYBOARD); -} - -void KeyboardConfig::handleActivateKey(const SDL_Event &event) -{ - if (mActiveKeys2 == nullptr) - return; - const int key = getKeyValueFromEvent(event); - if (key < -1 && key > -500) - mActiveKeys2[-key] = 1; - resetRepeat(key); -} - -void KeyboardConfig::handleActivateKey(const int key) -{ - if (mActiveKeys2 == nullptr) - return; - if (key < -1 && key > -500) - mActiveKeys2[-key] = 1; - resetRepeat(key); -} - -void KeyboardConfig::handleDeActicateKey(const SDL_Event &event) -{ - if (mActiveKeys2 == nullptr) - return; - const int key = getKeyValueFromEvent(event); - if (key < -1 && key > -500) - mActiveKeys2[-key] = 0; - resetRepeat(key); -} - -void KeyboardConfig::handleDeActicateKey(const int key) -{ - if (mActiveKeys2 == nullptr) - return; - if (key < -1 && key > -500) - mActiveKeys2[-key] = 0; - resetRepeat(key); -} - -void KeyboardConfig::handleRepeat(const int time) -{ - BLOCK_START("KeyboardConfig::handleRepeat") - FOR_EACH (KeyTimeMapIter, it, mKeyTimeMap) - { - bool repeat(false); - const int key = (*it).first; - if (key >= 0) - { - if ((mActiveKeys != nullptr) && (mActiveKeys[key] != 0u)) - repeat = true; - } - else if (key < -1 && key > -500) - { - if ((mActiveKeys2 != nullptr) && (mActiveKeys2[-key] != 0u)) - repeat = true; - } - if (repeat) - { - int &keyTime = (*it).second; - if (time > keyTime && abs(time - keyTime) - > CAST_S32(mRepeatTime)) - { - keyTime = time; - inputManager.triggerAction(getActionVectorByKey(key)); - } - } - } - BLOCK_END("KeyboardConfig::handleRepeat") -} - -void KeyboardConfig::resetRepeat(const int key) -{ - const KeyTimeMapIter it = mKeyTimeMap.find(key); - if (it != mKeyTimeMap.end()) - (*it).second = tick_time; -} - -#ifdef USE_SDL2 - -bool KeyboardConfig::ignoreKey(const SDL_Event &restrict event) -{ - if (!mBlockAltTab || - mActiveKeys == nullptr) - { - return false; - } - const int key = event.key.keysym.scancode; - if (key == SDL_SCANCODE_TAB) - { -#if SDL_VERSION_ATLEAST(2, 0, 5) - // SDL_WINDOWEVENT_TAKE_FOCUS not triggered after focus restored - if (settings.inputFocused != KeyboardFocus::Focused2) - return true; -#endif // SDL_VERSION_ATLEAST(2, 0, 5) - - if (mActiveKeys[SDL_SCANCODE_LALT] != 0) - return true; - } - else if (key == SDL_SCANCODE_LALT) - { - if (mActiveKeys[SDL_SCANCODE_TAB] != 0) - return true; - } - return false; -} -#endif // USE_SDL2 diff --git a/src/input/keyboardconfig.h b/src/input/keyboardconfig.h deleted file mode 100644 index ef3f056b7..000000000 --- a/src/input/keyboardconfig.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_KEYBOARDCONFIG_H -#define INPUT_KEYBOARDCONFIG_H - -#include "localconsts.h" - -#ifndef USE_SDL2 -#include "utils/cast.h" -#endif // USE_SDL2 - -PRAGMA48(GCC diagnostic push) -PRAGMA48(GCC diagnostic ignored "-Wshadow") -#include <SDL_events.h> -PRAGMA48(GCC diagnostic pop) - -#include "sdlshared.h" - -#include "events/inputevent.h" - -class KeyboardConfig final -{ - public: - KeyboardConfig(); - - A_DELETE_COPY(KeyboardConfig) - - /** - * Initializes the keyboard config explicitly. - */ - void init(); - - void deinit(); - - /** - * Get the enable flag, which will stop the user from doing actions. - */ - bool isEnabled() const noexcept2 A_WARN_UNUSED - { return mEnabled; } - - /** - * Get the key function index by providing the keys value. - */ - static InputActionT getKeyIndex(const SDL_Event &event, - const int grp = 1) A_WARN_UNUSED; - - /** - * Set the enable flag, which will stop the user from doing actions. - */ - void setEnabled(const bool flag) - { mEnabled = flag; } - - /** - * Takes a snapshot of all the active keys. - */ - void refreshActiveKeys(); - - static std::string getKeyShortString(const std::string &key) - A_WARN_UNUSED; - - constexpr static SDLKey getKeyFromEvent(const SDL_Event &event) - A_WARN_UNUSED - { -#ifdef USE_SDL2 - return event.key.keysym.scancode; -#else // USE_SDL2 - - return event.key.keysym.sym; -#endif // USE_SDL2 - } - - constexpr2 static int getKeyValueFromEvent(const SDL_Event &event) - A_WARN_UNUSED - { -#ifdef USE_SDL2 - return event.key.keysym.scancode; -#else // USE_SDL2 - - if (event.key.keysym.sym != 0u) - return CAST_S32(event.key.keysym.sym); - else if (event.key.keysym.scancode > 1) - return -event.key.keysym.scancode; - return 0; -#endif // USE_SDL2 - } - - - KeysVector *getActionVector(const SDL_Event &event) A_WARN_UNUSED; - - KeysVector *getActionVectorByKey(const int i) A_WARN_UNUSED; - - static std::string getKeyName(const int key) A_WARN_UNUSED; - - bool isActionActive(const InputActionT index) const A_WARN_UNUSED; - - void update(); - - void handleActivateKey(const SDL_Event &event); - - void handleActivateKey(const int key); - - void handleDeActicateKey(const SDL_Event &event); - - void handleDeActicateKey(const int key); - - InputActionT getActionId(const SDL_Event &event) A_WARN_UNUSED; - - void handleRepeat(const int time); - - void resetRepeat(const int key); - -#ifdef USE_SDL2 - bool ignoreKey(const SDL_Event &restrict event) A_WARN_UNUSED; -#endif // USE_SDL2 - - private: - bool mEnabled; /**< Flag to respond to key input */ - - const uint8_t *mActiveKeys; /**< Stores a list of all the keys */ - - uint8_t *mActiveKeys2; /**< Stores a list of all the keys */ - - unsigned int mRepeatTime; - - KeyToActionMap mKeyToAction; - - KeyToIdMap mKeyToId; - - KeyTimeMap mKeyTimeMap; - - bool mBlockAltTab; -}; - -extern KeyboardConfig keyboard; - -#endif // INPUT_KEYBOARDCONFIG_H diff --git a/src/input/keyinput.h b/src/input/keyinput.h deleted file mode 100644 index 28262b861..000000000 --- a/src/input/keyinput.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* _______ __ __ __ ______ __ __ _______ __ __ - * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ - * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / - * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / - * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / - * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / - * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ - * - * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson - * - * - * Per Larsson a.k.a finalman - * Olof Naessén a.k.a jansem/yakslem - * - * Visit: http://guichan.sourceforge.net - * - * License: (BSD) - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of Guichan nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef INPUT_KEYINPUT_H -#define INPUT_KEYINPUT_H - -#include "enums/events/keyeventtype.h" - -#include "enums/input/inputaction.h" - -#include "input/key.h" - -#ifdef USE_SDL2 -#include <string> -#endif // USE_SDL2 - -#include "localconsts.h" - -class KeyInput final -{ - public: - KeyInput() : - mKey(0), - mType(KeyEventType::PRESSED), -#ifdef USE_SDL2 - mText(), -#endif // USE_SDL2 - mActionId(InputAction::UNDEFINED_VALUE) - { } - - KeyInput(const KeyInput &k) : - mKey(k.mKey), - mType(k.mType), -#ifdef USE_SDL2 - mText(k.mText), -#endif // USE_SDL2 - mActionId(k.mActionId) - { - } - - A_DEFAULT_COPY(KeyInput) - - KeyInput &operator=(const KeyInput &k) noexcept2 - { - mKey = k.mKey; - mType = k.mType; -#ifdef USE_SDL2 - mText = k.mText; -#endif // USE_SDL2 - mActionId = k.mActionId; - return *this; - } - - ~KeyInput() - { } - - void setType(KeyEventTypeT type) noexcept2 - { - mType = type; - } - - KeyEventTypeT getType() const noexcept2 A_WARN_UNUSED - { - return mType; - } - - void setKey(const Key& key) noexcept2 - { - mKey = key; - } - - const Key& getKey() const noexcept2 - { - return mKey; - } - - void setActionId(const InputActionT n) noexcept2 - { - mActionId = n; - } - - InputActionT getActionId() const noexcept2 A_WARN_UNUSED - { - return mActionId; - } - -#ifdef USE_SDL2 - void setText(const std::string &text) noexcept2 - { - mText = text; - } - - std::string getText() const noexcept2 - { - return mText; - } -#endif // USE_SDL2 - - protected: - /** - * Holds the key of the key input. - */ - Key mKey; - - /** - * Holds the type of the key input. - */ - KeyEventTypeT mType; - -#ifdef USE_SDL2 - std::string mText; -#endif // USE_SDL2 - - InputActionT mActionId; -}; - -#endif // INPUT_KEYINPUT_H diff --git a/src/input/mouseinput.h b/src/input/mouseinput.h deleted file mode 100644 index 2e3a5f58e..000000000 --- a/src/input/mouseinput.h +++ /dev/null @@ -1,219 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* _______ __ __ __ ______ __ __ _______ __ __ - * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ - * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / - * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / - * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / - * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / - * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ - * - * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson - * - * - * Per Larsson a.k.a finalman - * Olof Naessén a.k.a jansem/yakslem - * - * Visit: http://guichan.sourceforge.net - * - * License: (BSD) - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of Guichan nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef INPUT_MOUSEINPUT_H -#define INPUT_MOUSEINPUT_H - -#include "enums/events/mousebutton.h" -#include "enums/events/mouseeventtype.h" - -#include "localconsts.h" - -class MouseInput final -{ - public: - MouseInput() : - mType(MouseEventType::MOVED), - mButton(MouseButton::EMPTY), - mTimeStamp(0), - mX(0), - mY(0), - mRealX(0), - mRealY(0) - { } - - MouseInput(const MouseInput &m) : - mType(m.mType), - mButton(m.mButton), - mTimeStamp(m.mTimeStamp), - mX(m.mX), - mY(m.mY), - mRealX(m.mRealX), - mRealY(m.mRealY) - { - } - - A_DEFAULT_COPY(MouseInput) - - MouseInput &operator=(const MouseInput &m) - { - mType = m.mType; - mButton = m.mButton; - mTimeStamp = m.mTimeStamp; - mX = m.mX; - mY = m.mY; - mRealX = m.mRealX; - mRealY = m.mRealY; - return *this; - } - - ~MouseInput() - { } - - void setType(MouseEventTypeT type) noexcept2 - { - mType = type; - } - - MouseEventTypeT getType() const noexcept2 - { - return mType; - } - - void setButton(MouseButtonT button) noexcept2 - { - mButton = button; - } - - MouseButtonT getButton() const noexcept2 - { - return mButton; - } - - int getTimeStamp() const noexcept2 - { - return mTimeStamp; - } - - void setTimeStamp(int timeStamp) noexcept2 - { - mTimeStamp = timeStamp; - } - - void setX(int x) noexcept2 - { - mX = x; - } - - int getX() const noexcept2 - { - return mX; - } - - void setY(int y) noexcept2 - { - mY = y; - } - - int getY() const noexcept2 - { - return mY; - } - - void setReal(const int x, const int y) noexcept2 - { mRealX = x; mRealY = y; } - - int getRealX() const noexcept2 A_WARN_UNUSED - { return mRealX; } - - int getRealY() const noexcept2 A_WARN_UNUSED - { return mRealY; } - -#ifdef ANDROID - int getTouchX() const noexcept2 A_WARN_UNUSED - { return mRealX; } - - int getTouchY() const noexcept2 A_WARN_UNUSED - { return mRealY; } -#else // ANDROID - - int getTouchX() const noexcept2 A_WARN_UNUSED - { return mX; } - - int getTouchY() const noexcept2 A_WARN_UNUSED - { return mY; } -#endif // ANDROID - - protected: - /** - * Holds the type of the mouse input. - */ - MouseEventTypeT mType; - - /** - * Holds the button of the mouse input. - */ - MouseButtonT mButton; - - /** - * Holds the timestamp of the mouse input. Used to - * check for double clicks. - */ - int mTimeStamp; - - /** - * Holds the x coordinate of the mouse input. - */ - int mX; - - /** - * Holds the y coordinate of the mouse input. - */ - int mY; - - int mRealX; - - int mRealY; -}; - -#endif // INPUT_MOUSEINPUT_H diff --git a/src/input/pages/basic.cpp b/src/input/pages/basic.cpp deleted file mode 100644 index ad4ad2c6f..000000000 --- a/src/input/pages/basic.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" - -#include "debug.h" - -SetupActionData setupActionDataBasic[] = -{ - { - // TRANSLATORS: input action name - N_("Target and attack keys"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Attack"), - InputAction::ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Target & attack closest monster"), - InputAction::TARGET_ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Target & attack closest player"), - InputAction::ATTACK_HUMAN, - "", - }, - { - // TRANSLATORS: input action name - N_("Move to Target"), - InputAction::MOVE_TO_TARGET, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Move to Target type"), - InputAction::CHANGE_MOVE_TO_TARGET, - "", - }, - { - // TRANSLATORS: input action name - N_("Move to Home location"), - InputAction::MOVE_TO_HOME, - "", - }, - { - // TRANSLATORS: input action name - N_("Set home location"), - InputAction::SET_HOME, - "", - }, - { - // TRANSLATORS: input action name - N_("Move to navigation point"), - InputAction::MOVE_TO_POINT, - "", - }, - { - // TRANSLATORS: input action name - N_("Talk"), - InputAction::TALK, - "", - }, - { - // TRANSLATORS: input action name - N_("Stop Attack / Modifier key"), - InputAction::STOP_ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Untarget"), - InputAction::UNTARGET, - "", - }, - { - // TRANSLATORS: input action name - N_("Target monster"), - InputAction::TARGET_MONSTER, - "", - }, - { - // TRANSLATORS: input action name - N_("Target closest monster (without filters)"), - InputAction::TARGET_CLOSEST_MONSTER, - "", - }, - { - // TRANSLATORS: input action name - N_("Target NPC"), - InputAction::TARGET_NPC, - "", - }, - { - // TRANSLATORS: input action name - N_("Target Player"), - InputAction::TARGET_PLAYER, - "", - }, - { - // TRANSLATORS: input action name - N_("Target mercenary"), - InputAction::TARGET_MERCENARY, - "", - }, - { - // TRANSLATORS: input action name - N_("Target skill unit"), - InputAction::TARGET_SKILL_UNIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Change targeting type"), - InputAction::CHANGE_TARGETING_TYPE, - "", - }, - { - // TRANSLATORS: input action name - N_("Target pet"), - InputAction::TARGET_PET, - "", - }, - { - // TRANSLATORS: input action name - N_("Catch pet"), - InputAction::CATCH_PET, - "", - }, - { - // TRANSLATORS: input action name - N_("Other Keys"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Pickup"), - InputAction::PICKUP, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Pickup Type"), - InputAction::CHANGE_PICKUP_TYPE, - "", - }, - { - // TRANSLATORS: input action name - N_("Sit"), - InputAction::SIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Screenshot"), - InputAction::SCREENSHOT, - "", - }, - { - // TRANSLATORS: input action name - N_("Enable/Disable Trading"), - InputAction::CHANGE_TRADE, - "", - }, - { - // TRANSLATORS: input action name - N_("Open trade window"), - InputAction::OPEN_TRADE, - "", - }, - { - // TRANSLATORS: input action name - N_("Start trade with target"), - InputAction::TRADE, - "", - }, - { - // TRANSLATORS: input action name - N_("Follow selected player"), - InputAction::FOLLOW, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Map View Mode"), - InputAction::PATHFIND, - "", - }, - { - // TRANSLATORS: input action name - N_("Select OK"), - InputAction::OK, - "", - }, - { - // TRANSLATORS: input action name - N_("Quit"), - InputAction::QUIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Stop or sit"), - InputAction::STOP_SIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Return to safe video mode"), - InputAction::SAFE_VIDEO, - "", - }, - { - // TRANSLATORS: input action name - N_("Fire your homunculus"), - InputAction::HOMUNCULUS_FIRE, - "", - }, - { - // TRANSLATORS: input action name - N_("Buy"), - InputAction::BUY, - "", - }, - { - // TRANSLATORS: input action name - N_("Sell"), - InputAction::SELL, - "", - }, - { - // TRANSLATORS: input action name - N_("Open context menu"), - InputAction::CONTEXT_MENU, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/basic.h b/src/input/pages/basic.h deleted file mode 100644 index 5cfe3af53..000000000 --- a/src/input/pages/basic.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_BASIC_H -#define INPUT_PAGES_BASIC_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataBasic[]; - -#endif // INPUT_PAGES_BASIC_H diff --git a/src/input/pages/chat.cpp b/src/input/pages/chat.cpp deleted file mode 100644 index c8abfc9ca..000000000 --- a/src/input/pages/chat.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" - -#include "debug.h" - -SetupActionData setupActionDataChat[] = -{ - { - // TRANSLATORS: input action group - N_("Main"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Toggle Chat"), - InputAction::TOGGLE_CHAT, - "", - }, - { - // TRANSLATORS: input action name - N_("Chat modifier key"), - InputAction::CHAT_MOD, - "", - }, - { - // TRANSLATORS: input action name - N_("Scroll Chat Up"), - InputAction::SCROLL_CHAT_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Scroll Chat Down"), - InputAction::SCROLL_CHAT_DOWN, - "", - }, - { - // TRANSLATORS: input action group - N_("Tabs"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous Chat Tab"), - InputAction::PREV_CHAT_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Next Chat Tab"), - InputAction::NEXT_CHAT_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Clear current chat tab"), - InputAction::CLEAR_CHAT_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Close current Chat Tab"), - InputAction::CLOSE_CHAT_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Close all chat tabs"), - InputAction::CLOSE_ALL_CHAT_TABS, - "", - }, - { - // TRANSLATORS: input action name - N_("Select general tab"), - InputAction::CHAT_GENERAL_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select debug tab"), - InputAction::CHAT_DEBUG_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select trade tab"), - InputAction::CHAT_TRADE_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select battle tab"), - InputAction::CHAT_BATTLE_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select gm tab"), - InputAction::CHAT_GM_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select lang tab"), - InputAction::CHAT_LANG_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select party tab"), - InputAction::CHAT_PARTY_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Select guild tab"), - InputAction::CHAT_GUILD_TAB, - "", - }, - { - // TRANSLATORS: input action group - N_("Other"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Ignore all whispers"), - InputAction::IGNORE_ALL_WHISPERS, - "", - }, - { - // TRANSLATORS: input action name - N_("Ignore all whispers on server side"), - InputAction::SERVER_IGNORE_ALL, - "", - }, - { - // TRANSLATORS: input action name - N_("Unignore all whispers on server side"), - InputAction::SERVER_UNIGNORE_ALL, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous chat line"), - InputAction::CHAT_PREV_HISTORY, - "", - }, - { - // TRANSLATORS: input action name - N_("Next chat line"), - InputAction::CHAT_NEXT_HISTORY, - "", - }, - { - // TRANSLATORS: input action group - N_("Smiles"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Show smiles"), - InputAction::GUI_F1, - "", - }, - { - "F2", - InputAction::GUI_F2, - "", - }, - { - "F3", - InputAction::GUI_F3, - "", - }, - { - "F4", - InputAction::GUI_F4, - "", - }, - { - "F5", - InputAction::GUI_F5, - "", - }, - { - "F6", - InputAction::GUI_F6, - "", - }, - { - "F7", - InputAction::GUI_F7, - "", - }, - { - "F8", - InputAction::GUI_F8, - "", - }, - { - "F9", - InputAction::GUI_F9, - "", - }, - { - "F10", - InputAction::GUI_F10, - "", - }, - { - "F11", - InputAction::GUI_F11, - "", - }, - { - "F12", - InputAction::GUI_F12, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/chat.h b/src/input/pages/chat.h deleted file mode 100644 index 2f4cf147b..000000000 --- a/src/input/pages/chat.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_CHAT_H -#define INPUT_PAGES_CHAT_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataChat[]; - -#endif // INPUT_PAGES_CHAT_H diff --git a/src/input/pages/craft.cpp b/src/input/pages/craft.cpp deleted file mode 100644 index fe93a0c1e..000000000 --- a/src/input/pages/craft.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" -#include "utils/stringutils.h" - -#include "debug.h" - -SetupActionData setupActionDataCraft[] = -{ - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 1), - InputAction::CRAFT_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 2), - InputAction::CRAFT_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 3), - InputAction::CRAFT_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 4), - InputAction::CRAFT_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 5), - InputAction::CRAFT_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 6), - InputAction::CRAFT_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 7), - InputAction::CRAFT_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 8), - InputAction::CRAFT_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Craft shortcut %d"), 9), - InputAction::CRAFT_9, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - }, -}; diff --git a/src/input/pages/craft.h b/src/input/pages/craft.h deleted file mode 100644 index d69425c63..000000000 --- a/src/input/pages/craft.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_CRAFT_H -#define INPUT_PAGES_CRAFT_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataCraft[]; - -#endif // INPUT_PAGES_CRAFT_H diff --git a/src/input/pages/emotes.cpp b/src/input/pages/emotes.cpp deleted file mode 100644 index 84537771d..000000000 --- a/src/input/pages/emotes.cpp +++ /dev/null @@ -1,655 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" -#include "utils/stringutils.h" - -#include "debug.h" - -SetupActionData setupActionDataEmotes[] = -{ - { - // TRANSLATORS: input action name - N_("Emote modifiers keys"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - N_("Emote modifier key"), - InputAction::EMOTE, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet emote modifier key"), - InputAction::PET_EMOTE, - "", - }, - { - // TRANSLATORS: input action name - N_("Homunculus / mercenary emote modifier key"), - InputAction::HOMUN_EMOTE, - "", - }, - { - // TRANSLATORS: input action name - N_("Emote shortcuts"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 1), - InputAction::EMOTE_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 2), - InputAction::EMOTE_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 3), - InputAction::EMOTE_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 4), - InputAction::EMOTE_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 5), - InputAction::EMOTE_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 6), - InputAction::EMOTE_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 7), - InputAction::EMOTE_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 8), - InputAction::EMOTE_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 9), - InputAction::EMOTE_9, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 10), - InputAction::EMOTE_10, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 11), - InputAction::EMOTE_11, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 12), - InputAction::EMOTE_12, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 13), - InputAction::EMOTE_13, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 14), - InputAction::EMOTE_14, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 15), - InputAction::EMOTE_15, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 16), - InputAction::EMOTE_16, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 17), - InputAction::EMOTE_17, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 18), - InputAction::EMOTE_18, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 19), - InputAction::EMOTE_19, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 20), - InputAction::EMOTE_20, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 21), - InputAction::EMOTE_21, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 22), - InputAction::EMOTE_22, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 23), - InputAction::EMOTE_23, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 24), - InputAction::EMOTE_24, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 25), - InputAction::EMOTE_25, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 26), - InputAction::EMOTE_26, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 27), - InputAction::EMOTE_27, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 28), - InputAction::EMOTE_28, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 29), - InputAction::EMOTE_29, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 30), - InputAction::EMOTE_30, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 31), - InputAction::EMOTE_31, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 32), - InputAction::EMOTE_32, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 33), - InputAction::EMOTE_33, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 34), - InputAction::EMOTE_34, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 35), - InputAction::EMOTE_35, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 36), - InputAction::EMOTE_36, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 37), - InputAction::EMOTE_37, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 38), - InputAction::EMOTE_38, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 39), - InputAction::EMOTE_39, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 40), - InputAction::EMOTE_40, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 41), - InputAction::EMOTE_41, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 42), - InputAction::EMOTE_42, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 43), - InputAction::EMOTE_43, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 44), - InputAction::EMOTE_44, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 45), - InputAction::EMOTE_45, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 46), - InputAction::EMOTE_46, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 47), - InputAction::EMOTE_47, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Emote Shortcut %d"), 48), - InputAction::EMOTE_48, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - N_("Pet emote shortcuts"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 1), - InputAction::PET_EMOTE_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 2), - InputAction::PET_EMOTE_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 3), - InputAction::PET_EMOTE_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 4), - InputAction::PET_EMOTE_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 5), - InputAction::PET_EMOTE_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 6), - InputAction::PET_EMOTE_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 7), - InputAction::PET_EMOTE_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 8), - InputAction::PET_EMOTE_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 9), - InputAction::PET_EMOTE_9, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 10), - InputAction::PET_EMOTE_10, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 11), - InputAction::PET_EMOTE_11, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 12), - InputAction::PET_EMOTE_12, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 13), - InputAction::PET_EMOTE_13, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 14), - InputAction::PET_EMOTE_14, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 15), - InputAction::PET_EMOTE_15, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 16), - InputAction::PET_EMOTE_16, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 17), - InputAction::PET_EMOTE_17, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 18), - InputAction::PET_EMOTE_18, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 19), - InputAction::PET_EMOTE_19, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 20), - InputAction::PET_EMOTE_20, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 21), - InputAction::PET_EMOTE_21, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 22), - InputAction::PET_EMOTE_22, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 23), - InputAction::PET_EMOTE_23, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 24), - InputAction::PET_EMOTE_24, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 25), - InputAction::PET_EMOTE_25, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 26), - InputAction::PET_EMOTE_26, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 27), - InputAction::PET_EMOTE_27, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 28), - InputAction::PET_EMOTE_28, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 29), - InputAction::PET_EMOTE_29, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 30), - InputAction::PET_EMOTE_30, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 31), - InputAction::PET_EMOTE_31, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 32), - InputAction::PET_EMOTE_32, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 33), - InputAction::PET_EMOTE_33, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 34), - InputAction::PET_EMOTE_34, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 35), - InputAction::PET_EMOTE_35, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 36), - InputAction::PET_EMOTE_36, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 37), - InputAction::PET_EMOTE_37, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 38), - InputAction::PET_EMOTE_38, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 39), - InputAction::PET_EMOTE_39, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 40), - InputAction::PET_EMOTE_40, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 41), - InputAction::PET_EMOTE_41, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 42), - InputAction::PET_EMOTE_42, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 43), - InputAction::PET_EMOTE_43, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 44), - InputAction::PET_EMOTE_44, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 45), - InputAction::PET_EMOTE_45, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 46), - InputAction::PET_EMOTE_46, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 47), - InputAction::PET_EMOTE_47, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Pet emote shortcut %d"), 48), - InputAction::PET_EMOTE_48, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - }, -}; diff --git a/src/input/pages/emotes.h b/src/input/pages/emotes.h deleted file mode 100644 index e0a5ee452..000000000 --- a/src/input/pages/emotes.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_EMOTES_H -#define INPUT_PAGES_EMOTES_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataEmotes[]; - -#endif // INPUT_PAGES_EMOTES_H diff --git a/src/input/pages/gui.cpp b/src/input/pages/gui.cpp deleted file mode 100644 index d09aa6f35..000000000 --- a/src/input/pages/gui.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" - -#include "debug.h" - -SetupActionData setupActionDataGui[] = -{ - { - // TRANSLATORS: input action name - N_("Move & selection"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Move Up"), - InputAction::GUI_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Move Down"), - InputAction::GUI_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Move Left"), - InputAction::GUI_LEFT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move Right"), - InputAction::GUI_RIGHT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move Home"), - InputAction::GUI_HOME, - "", - }, - { - // TRANSLATORS: input action name - N_("Move End"), - InputAction::GUI_END, - "", - }, - { - // TRANSLATORS: input action name - N_("Page up"), - InputAction::GUI_PAGE_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Page down"), - InputAction::GUI_PAGE_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Other"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Select"), - InputAction::GUI_SELECT, - "", - }, - { - // TRANSLATORS: input action name - N_("Select2"), - InputAction::GUI_SELECT2, - "", - }, - { - // TRANSLATORS: input action name - N_("Cancel"), - InputAction::GUI_CANCEL, - "", - }, - { - // TRANSLATORS: input action name - N_("Delete"), - InputAction::GUI_DELETE, - "", - }, - { - // TRANSLATORS: input action name - N_("Backspace"), - InputAction::GUI_BACKSPACE, - "", - }, - { - // TRANSLATORS: input action name - N_("Insert"), - InputAction::GUI_INSERT, - "", - }, - { - // TRANSLATORS: input action name - N_("Tab"), - InputAction::GUI_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Mod"), - InputAction::GUI_MOD, - "", - }, - { - // TRANSLATORS: input action name - N_("Ctrl"), - InputAction::GUI_CTRL, - "", - }, - { - "B", - InputAction::GUI_B, - "", - }, - { - "C", - InputAction::GUI_C, - "", - }, - { - "D", - InputAction::GUI_D, - "", - }, - { - "E", - InputAction::GUI_E, - "", - }, - { - "F", - InputAction::GUI_F, - "", - }, - { - "H", - InputAction::GUI_H, - "", - }, - { - "K", - InputAction::GUI_K, - "", - }, - { - "U", - InputAction::GUI_U, - "", - }, - { - "V", - InputAction::GUI_V, - "", - }, - { - "W", - InputAction::GUI_W, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/gui.h b/src/input/pages/gui.h deleted file mode 100644 index 5c72fca13..000000000 --- a/src/input/pages/gui.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_GUI_H -#define INPUT_PAGES_GUI_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataGui[]; - -#endif // INPUT_PAGES_GUI_H diff --git a/src/input/pages/move.cpp b/src/input/pages/move.cpp deleted file mode 100644 index 8df8a2c5d..000000000 --- a/src/input/pages/move.cpp +++ /dev/null @@ -1,404 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" -#include "utils/stringutils.h" - -#include "debug.h" - -SetupActionData setupActionDataMove[] = -{ - { - // TRANSLATORS: input action name - N_("Move Keys"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Move player up"), - InputAction::MOVE_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Move player down"), - InputAction::MOVE_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Move player left"), - InputAction::MOVE_LEFT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move player right"), - InputAction::MOVE_RIGHT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move player forward"), - InputAction::MOVE_FORWARD, - "", - }, - { - // TRANSLATORS: input action name - N_("Move pet up"), - InputAction::PET_MOVE_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Move pet down"), - InputAction::PET_MOVE_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Move pet left"), - InputAction::PET_MOVE_LEFT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move pet right"), - InputAction::PET_MOVE_RIGHT, - "", - }, - { - // TRANSLATORS: input action name - N_("Move homunculus to master"), - InputAction::HOMUNCULUS_TO_MASTER, - "", - }, - { - // TRANSLATORS: input action name - N_("Move mercenary to master"), - InputAction::MERCENARY_TO_MASTER, - "", - }, - { - // TRANSLATORS: input action name - N_("Move to navigation point shortcuts"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 1), - InputAction::MOVE_TO_POINT_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 2), - InputAction::MOVE_TO_POINT_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 3), - InputAction::MOVE_TO_POINT_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 4), - InputAction::MOVE_TO_POINT_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 5), - InputAction::MOVE_TO_POINT_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 6), - InputAction::MOVE_TO_POINT_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 7), - InputAction::MOVE_TO_POINT_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 8), - InputAction::MOVE_TO_POINT_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 9), - InputAction::MOVE_TO_POINT_9, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 10), - InputAction::MOVE_TO_POINT_10, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 11), - InputAction::MOVE_TO_POINT_11, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 12), - InputAction::MOVE_TO_POINT_12, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 13), - InputAction::MOVE_TO_POINT_13, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 14), - InputAction::MOVE_TO_POINT_14, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 15), - InputAction::MOVE_TO_POINT_15, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 16), - InputAction::MOVE_TO_POINT_16, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 17), - InputAction::MOVE_TO_POINT_17, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 18), - InputAction::MOVE_TO_POINT_18, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 19), - InputAction::MOVE_TO_POINT_19, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 20), - InputAction::MOVE_TO_POINT_20, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 21), - InputAction::MOVE_TO_POINT_21, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 22), - InputAction::MOVE_TO_POINT_22, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 23), - InputAction::MOVE_TO_POINT_23, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 24), - InputAction::MOVE_TO_POINT_24, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 25), - InputAction::MOVE_TO_POINT_25, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 26), - InputAction::MOVE_TO_POINT_26, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 27), - InputAction::MOVE_TO_POINT_27, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 28), - InputAction::MOVE_TO_POINT_28, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 29), - InputAction::MOVE_TO_POINT_29, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 30), - InputAction::MOVE_TO_POINT_30, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 31), - InputAction::MOVE_TO_POINT_31, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 32), - InputAction::MOVE_TO_POINT_32, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 33), - InputAction::MOVE_TO_POINT_33, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 34), - InputAction::MOVE_TO_POINT_34, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 35), - InputAction::MOVE_TO_POINT_35, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 36), - InputAction::MOVE_TO_POINT_36, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 37), - InputAction::MOVE_TO_POINT_37, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 38), - InputAction::MOVE_TO_POINT_38, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 39), - InputAction::MOVE_TO_POINT_39, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 40), - InputAction::MOVE_TO_POINT_40, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 41), - InputAction::MOVE_TO_POINT_41, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 42), - InputAction::MOVE_TO_POINT_42, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 43), - InputAction::MOVE_TO_POINT_43, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 44), - InputAction::MOVE_TO_POINT_44, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 45), - InputAction::MOVE_TO_POINT_45, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 46), - InputAction::MOVE_TO_POINT_46, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 47), - InputAction::MOVE_TO_POINT_47, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Move to point Shortcut %d"), 48), - InputAction::MOVE_TO_POINT_48, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/move.h b/src/input/pages/move.h deleted file mode 100644 index 33ec08c2b..000000000 --- a/src/input/pages/move.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_MOVE_H -#define INPUT_PAGES_MOVE_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataMove[]; - -#endif // INPUT_PAGES_MOVE_H diff --git a/src/input/pages/other.cpp b/src/input/pages/other.cpp deleted file mode 100644 index 88677c576..000000000 --- a/src/input/pages/other.cpp +++ /dev/null @@ -1,465 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" - -#include "debug.h" - -SetupActionData setupActionDataOther[] = -{ - { - // TRANSLATORS: input action name - N_("Input ignore"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Ignore input 1"), - InputAction::IGNORE_INPUT_1, - "", - }, - { - // TRANSLATORS: input action name - N_("Ignore input 2"), - InputAction::IGNORE_INPUT_2, - "", - }, - { - // TRANSLATORS: input action name - N_("Direction keys"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Player direct up"), - InputAction::DIRECT_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Player direct down"), - InputAction::DIRECT_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Player direct left"), - InputAction::DIRECT_LEFT, - "", - }, - { - // TRANSLATORS: input action name - N_("Player direct right"), - InputAction::DIRECT_RIGHT, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet direct up"), - InputAction::PET_DIRECT_UP, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet direct down"), - InputAction::PET_DIRECT_DOWN, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet direct left"), - InputAction::PET_DIRECT_LEFT, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet direct right"), - InputAction::PET_DIRECT_RIGHT, - "", - }, - { - // TRANSLATORS: input action name - N_("Other"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Crazy moves"), - InputAction::CRAZY_MOVES, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Crazy Move mode"), - InputAction::CHANGE_CRAZY_MOVES_TYPE, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick Drop N Items from 0 slot"), - InputAction::QUICK_DROP, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick Drop N Items"), - InputAction::QUICK_DROPN, - "", - }, - { - // TRANSLATORS: input action name - N_("Switch Quick Drop Counter"), - InputAction::SWITCH_QUICK_DROP, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick heal target or self"), - InputAction::MAGIC_INMA1, - "", - }, - { - // TRANSLATORS: input action name - N_("Heal the most injured player"), - InputAction::HEAL_MOST_DAMAGED, - "", - }, - { - // TRANSLATORS: input action name - N_("Use #itenplz spell"), - InputAction::MAGIC_ITENPLZ, - "", - }, - { - // TRANSLATORS: input action name - N_("Use magic attack"), - InputAction::MAGIC_ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Switch magic attack"), - InputAction::SWITCH_MAGIC_ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Switch pvp attack"), - InputAction::SWITCH_PVP_ATTACK, - "", - }, - { - // TRANSLATORS: input action name - N_("Change move type"), - InputAction::INVERT_DIRECTION, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Attack Weapon Type"), - InputAction::CHANGE_ATTACK_WEAPON_TYPE, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Attack Type"), - InputAction::CHANGE_ATTACK_TYPE, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Follow mode"), - InputAction::CHANGE_FOLLOW_MODE, - "", - }, - { - // TRANSLATORS: input action name - N_("Change Imitation mode"), - InputAction::CHANGE_IMITATION_MODE, - "", - }, - { - // TRANSLATORS: input action name - N_("Disable / Enable Game modifier keys"), - InputAction::DISABLE_GAME_MODIFIERS, - "", - }, - { - // TRANSLATORS: input action name - N_("On / Off audio"), - InputAction::CHANGE_AUDIO, - "", - }, - { - // TRANSLATORS: input action name - N_("Enable / Disable away mode"), - InputAction::AWAY, - "", - }, - { - // TRANSLATORS: input action name - N_("Emulate right click from keyboard"), - InputAction::RIGHT_CLICK, - "", - }, - { - // TRANSLATORS: input action name - N_("Toggle camera mode"), - InputAction::CAMERA, - "", - }, - { - // TRANSLATORS: input action name - N_("Toggle ipc mode"), - InputAction::IPC_TOGGLE, - "", - }, - { - // TRANSLATORS: input action name - N_("Show information about position in chat"), - InputAction::WHERE, - "", - }, - { - // TRANSLATORS: input action name - N_("Show online players number in chat"), - InputAction::WHO, - "", - }, - { - // TRANSLATORS: input action name - N_("Show onscreen keyboard"), - InputAction::SHOW_KEYBOARD, - "", - }, - { - // TRANSLATORS: input action name - N_("Clean cached graphics"), - InputAction::CLEAN_GRAPHICS, - "", - }, - { - // TRANSLATORS: input action name - N_("Clean cached fonts"), - InputAction::CLEAN_FONTS, - "", - }, - { - // TRANSLATORS: input action name - N_("Print visible players in chat"), - InputAction::PRESENT, - "", - }, - { - // TRANSLATORS: input action name - N_("Print all visible beings in chat"), - InputAction::PRINT_ALL, - "", - }, - { - // TRANSLATORS: input action name - N_("Load shop items list from disk"), - InputAction::PRICE_LOAD, - "", - }, - { - // TRANSLATORS: input action name - N_("Save shop items list to disk"), - InputAction::PRICE_SAVE, - "", - }, - { - // TRANSLATORS: input action name - N_("Print debug cache info"), - InputAction::CACHE_INFO, - "", - }, - { - // TRANSLATORS: input action name - N_("Undress selected player"), - InputAction::UNDRESS, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick disconnect from server"), - InputAction::DISCONNECT, - "", - }, - { - // TRANSLATORS: input action name - N_("Disable debug particle"), - InputAction::TEST_PARTICLE, - "", - }, - { - // TRANSLATORS: input action name - N_("Create items (for gms)"), - InputAction::CREATE_ITEMS, - "", - }, - { - // TRANSLATORS: input action name - N_("Print configured directories in chat"), - InputAction::DIRS, - "", - }, - { - // TRANSLATORS: input action name - N_("Print client uptime in chat"), - InputAction::UPTIME, - "", - }, - { - // TRANSLATORS: input action name - N_("Dump debug information"), - InputAction::DUMP, - "", - }, - { - // TRANSLATORS: input action name - N_("Crash client"), - InputAction::ERROR, - "", - }, - { - // TRANSLATORS: input action name - N_("Dump graphics info into chat"), - InputAction::DUMP_GRAPHICS, - "", - }, - { - // TRANSLATORS: input action name - N_("Dump tests info into chat"), - InputAction::DUMP_TESTS, - "", - }, - { - // TRANSLATORS: input action name - N_("Print OpenGL version in chat"), - InputAction::DUMP_GL, - "", - }, - { - // TRANSLATORS: input action name - N_("Print enabled mods in chat"), - InputAction::DUMP_MODS, - "", - }, - { - // TRANSLATORS: input action name - N_("Dump environments into log"), - InputAction::DUMP_ENVIRONMENT, - "", - }, - { - // TRANSLATORS: input action name - N_("Dump OpenGL state into log"), - InputAction::DUMP_OGL, - "", - }, -#if defined USE_OPENGL && defined DEBUG_SDLFONT - { - // TRANSLATORS: input action name - N_("Test SDL font speed"), - InputAction::TEST_SDL_FONT, - "", - }, -#endif // defined USE_OPENGL && defined DEBUG_SDLFONT - { - // TRANSLATORS: input action name - N_("Upload main config"), - InputAction::UPLOAD_CONFIG, - "", - }, - { - // TRANSLATORS: input action name - N_("Upload server config"), - InputAction::UPLOAD_SERVER_CONFIG, - "", - }, - { - // TRANSLATORS: input action name - N_("Upload log file"), - InputAction::UPLOAD_LOG, - "", - }, - { - // TRANSLATORS: input action name - N_("Fire your mercenary"), - InputAction::MERCENARY_FIRE, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet ai start"), - InputAction::PET_AI_START, - "", - }, - { - // TRANSLATORS: input action name - N_("Pet ai stop"), - InputAction::PET_AI_STOP, - "", - }, - { - // TRANSLATORS: input action name - N_("Feed homunculus"), - InputAction::HOMUNCULUS_FEED, - "", - }, - { - // TRANSLATORS: input action name - N_("Feed pet"), - InputAction::PET_FEED, - "", - }, - { - // TRANSLATORS: input action name - N_("Drop pet's loot"), - InputAction::PET_DROP_LOOT, - "", - }, - { - // TRANSLATORS: input action name - N_("Return pet to egg"), - InputAction::PET_RETURN_TO_EGG, - "", - }, - { - // TRANSLATORS: input action name - N_("Unequip pet"), - InputAction::PET_UNEQUIP, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/other.h b/src/input/pages/other.h deleted file mode 100644 index 86b024f9f..000000000 --- a/src/input/pages/other.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_OTHER_H -#define INPUT_PAGES_OTHER_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataOther[]; - -#endif // INPUT_PAGES_OTHER_H diff --git a/src/input/pages/outfits.cpp b/src/input/pages/outfits.cpp deleted file mode 100644 index 0b9beabd3..000000000 --- a/src/input/pages/outfits.cpp +++ /dev/null @@ -1,374 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" -#include "utils/stringutils.h" - -#include "debug.h" - -SetupActionData setupActionDataOutfits[] = -{ - { - // TRANSLATORS: input action name - N_("Outfits keys"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - N_("Wear outfit"), - InputAction::WEAR_OUTFIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Clear outfit"), - InputAction::CLEAR_OUTFIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Copy Outfit to other outfit"), - InputAction::COPY_OUTFIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Copy outfit to chat"), - InputAction::COPY_OUTFIT_TO_CHAT, - "", - }, - { - // TRANSLATORS: input action name - N_("Copy equipped to outfit"), - InputAction::COPY_EQUIPED_OUTFIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Show hat in chat"), - InputAction::HAT, - "", - }, - { - // TRANSLATORS: input action name - N_("Outfits shortcuts"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 1), - InputAction::OUTFIT_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 2), - InputAction::OUTFIT_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 3), - InputAction::OUTFIT_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 4), - InputAction::OUTFIT_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 5), - InputAction::OUTFIT_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 6), - InputAction::OUTFIT_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 7), - InputAction::OUTFIT_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 8), - InputAction::OUTFIT_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 9), - InputAction::OUTFIT_9, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 10), - InputAction::OUTFIT_10, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 11), - InputAction::OUTFIT_11, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 12), - InputAction::OUTFIT_12, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 13), - InputAction::OUTFIT_13, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 14), - InputAction::OUTFIT_14, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 15), - InputAction::OUTFIT_15, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 16), - InputAction::OUTFIT_16, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 17), - InputAction::OUTFIT_17, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 18), - InputAction::OUTFIT_18, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 19), - InputAction::OUTFIT_19, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 20), - InputAction::OUTFIT_20, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 21), - InputAction::OUTFIT_21, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 22), - InputAction::OUTFIT_22, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 23), - InputAction::OUTFIT_23, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 24), - InputAction::OUTFIT_24, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 25), - InputAction::OUTFIT_25, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 26), - InputAction::OUTFIT_26, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 27), - InputAction::OUTFIT_27, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 28), - InputAction::OUTFIT_28, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 29), - InputAction::OUTFIT_29, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 30), - InputAction::OUTFIT_30, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 31), - InputAction::OUTFIT_31, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 32), - InputAction::OUTFIT_32, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 33), - InputAction::OUTFIT_33, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 34), - InputAction::OUTFIT_34, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 35), - InputAction::OUTFIT_35, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 36), - InputAction::OUTFIT_36, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 37), - InputAction::OUTFIT_37, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 38), - InputAction::OUTFIT_38, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 39), - InputAction::OUTFIT_39, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 40), - InputAction::OUTFIT_40, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 41), - InputAction::OUTFIT_41, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 42), - InputAction::OUTFIT_42, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 43), - InputAction::OUTFIT_43, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 44), - InputAction::OUTFIT_44, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 45), - InputAction::OUTFIT_45, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 46), - InputAction::OUTFIT_46, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 47), - InputAction::OUTFIT_47, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Outfit Shortcut %d"), 48), - InputAction::OUTFIT_48, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/outfits.h b/src/input/pages/outfits.h deleted file mode 100644 index 5bc1cf4a9..000000000 --- a/src/input/pages/outfits.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_OUTFITS_H -#define INPUT_PAGES_OUTFITS_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataOutfits[]; - -#endif // INPUT_PAGES_OUTFITS_H diff --git a/src/input/pages/shortcuts.cpp b/src/input/pages/shortcuts.cpp deleted file mode 100644 index e4c57dbff..000000000 --- a/src/input/pages/shortcuts.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" -#include "utils/stringutils.h" - -#include "debug.h" - -SetupActionData setupActionDataShortcuts[] = -{ - { - // TRANSLATORS: input action name - N_("Shortcuts modifiers keys"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - N_("Item Shortcuts Key"), - InputAction::SHORTCUTS_KEY, - "", - }, - { - // TRANSLATORS: input action name - N_("Shortcuts keys"), - InputAction::NO_VALUE, - "" - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 1), - InputAction::SHORTCUT_1, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 2), - InputAction::SHORTCUT_2, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 3), - InputAction::SHORTCUT_3, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 4), - InputAction::SHORTCUT_4, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 5), - InputAction::SHORTCUT_5, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 6), - InputAction::SHORTCUT_6, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 7), - InputAction::SHORTCUT_7, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 8), - InputAction::SHORTCUT_8, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 9), - InputAction::SHORTCUT_9, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 10), - InputAction::SHORTCUT_10, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 11), - InputAction::SHORTCUT_11, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 12), - InputAction::SHORTCUT_12, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 13), - InputAction::SHORTCUT_13, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 14), - InputAction::SHORTCUT_14, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 15), - InputAction::SHORTCUT_15, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 16), - InputAction::SHORTCUT_16, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 17), - InputAction::SHORTCUT_17, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 18), - InputAction::SHORTCUT_18, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 19), - InputAction::SHORTCUT_19, - "", - }, - { - // TRANSLATORS: input action name - strprintf(N_("Item Shortcut %d"), 20), - InputAction::SHORTCUT_20, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/shortcuts.h b/src/input/pages/shortcuts.h deleted file mode 100644 index 56e0db05f..000000000 --- a/src/input/pages/shortcuts.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_SHORTCUTS_H -#define INPUT_PAGES_SHORTCUTS_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataShortcuts[]; - -#endif // INPUT_PAGES_SHORTCUTS_H diff --git a/src/input/pages/windows.cpp b/src/input/pages/windows.cpp deleted file mode 100644 index ca232f914..000000000 --- a/src/input/pages/windows.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/setupactiondata.h" - -#include "utils/gettext.h" - -#include "debug.h" - -SetupActionData setupActionDataWindows[] = -{ - { - // TRANSLATORS: input action label - N_("Windows"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Show Windows Menu"), - InputAction::SHOW_WINDOWS, - "", - }, - { - // TRANSLATORS: input action name - N_("Hide Windows"), - InputAction::HIDE_WINDOWS, - "", - }, - { - // TRANSLATORS: input action name - N_("About Window"), - InputAction::WINDOW_ABOUT, - "", - }, - { - // TRANSLATORS: input action name - N_("Bank Window"), - InputAction::WINDOW_BANK, - "", - }, - { - // TRANSLATORS: input action name - N_("Help Window"), - InputAction::WINDOW_HELP, - "", - }, - { - // TRANSLATORS: input action name - N_("Server Info Window"), - InputAction::WINDOW_SERVER_INFO, - "", - }, - { - // TRANSLATORS: input action name - N_("Status Window"), - InputAction::WINDOW_STATUS, - "", - }, - { - // TRANSLATORS: input action name - N_("Inventory Window"), - InputAction::WINDOW_INVENTORY, - "", - }, - { - // TRANSLATORS: input action name - N_("Equipment Window"), - InputAction::WINDOW_EQUIPMENT, - "", - }, - { - // TRANSLATORS: input action name - N_("Skill Window"), - InputAction::WINDOW_SKILL, - "", - }, - { - // TRANSLATORS: input action name - N_("Minimap Window"), - InputAction::WINDOW_MINIMAP, - "", - }, - { - // TRANSLATORS: input action name - N_("Chat Window"), - InputAction::WINDOW_CHAT, - "", - }, - { - // TRANSLATORS: input action name - N_("Item Shortcut Window"), - InputAction::WINDOW_SHORTCUT, - "", - }, - { - // TRANSLATORS: input action name - N_("Setup Window"), - InputAction::WINDOW_SETUP, - "", - }, - { - // TRANSLATORS: input action name - N_("Debug Window"), - InputAction::WINDOW_DEBUG, - "", - }, - { - // TRANSLATORS: input action name - N_("Social Window"), - InputAction::WINDOW_SOCIAL, - "", - }, - { - // TRANSLATORS: input action name - N_("Emote Shortcut Window"), - InputAction::WINDOW_EMOTE_SHORTCUT, - "", - }, - { - // TRANSLATORS: input action name - N_("Outfits Window"), - InputAction::WINDOW_OUTFIT, - "", - }, - { - // TRANSLATORS: input action name - N_("Shop Window"), - InputAction::WINDOW_SHOP, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick drop Window"), - InputAction::WINDOW_DROP, - "", - }, - { - // TRANSLATORS: input action name - N_("Kill Stats Window"), - InputAction::WINDOW_KILLS, - "", - }, - { - // TRANSLATORS: input action name - N_("Commands Window"), - InputAction::WINDOW_SPELLS, - "", - }, - { - // TRANSLATORS: input action name - N_("Who Is Online Window"), - InputAction::WINDOW_ONLINE, - "", - }, - { - // TRANSLATORS: input action name - N_("Did you know Window"), - InputAction::WINDOW_DIDYOUKNOW, - "", - }, - { - // TRANSLATORS: input action name - N_("Quests Window"), - InputAction::WINDOW_QUESTS, - "", - }, - { - // TRANSLATORS: input action name - N_("Updates Window"), - InputAction::WINDOW_UPDATER, - "", - }, - { - // TRANSLATORS: input action name - N_("Cart window"), - InputAction::WINDOW_CART, - "", - }, - { - // TRANSLATORS: input action name - N_("Quick settings window"), - InputAction::WINDOW_QUICK_SETTINGS, - "", - }, - { - // TRANSLATORS: input action label - N_("Tabs"), - InputAction::NO_VALUE, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous Social Tab"), - InputAction::PREV_SOCIAL_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Next Social Tab"), - InputAction::NEXT_SOCIAL_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous Shortcuts tab"), - InputAction::PREV_SHORTCUTS_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Next Shortcuts tab"), - InputAction::NEXT_SHORTCUTS_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous Commands tab"), - InputAction::PREV_COMMANDS_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Next Commands tab"), - InputAction::NEXT_COMMANDS_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Previous inventory tab"), - InputAction::PREV_INV_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Next inventory tab"), - InputAction::NEXT_INV_TAB, - "", - }, - { - // TRANSLATORS: input action name - N_("Clear drops window"), - InputAction::DROP_CLEAR, - "", - }, - { - "", - InputAction::NO_VALUE, - "" - } -}; diff --git a/src/input/pages/windows.h b/src/input/pages/windows.h deleted file mode 100644 index 388a9b84d..000000000 --- a/src/input/pages/windows.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> - * Copyright (C) 2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_PAGES_WINDOWS_H -#define INPUT_PAGES_WINDOWS_H - -#include "gui/setupactiondata.h" - -extern SetupActionData setupActionDataWindows[]; - -#endif // INPUT_PAGES_WINDOWS_H diff --git a/src/input/touch/multitouchmanager.cpp b/src/input/touch/multitouchmanager.cpp deleted file mode 100644 index aaee3410f..000000000 --- a/src/input/touch/multitouchmanager.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2013-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/touch/multitouchmanager.h" - -#ifdef USE_SDL2 -#include "render/graphics.h" - -#include "gui/sdlinput.h" -#endif // USE_SDL2 -#include "debug.h" - -MultiTouchManager multiTouchManager; - -MultiTouchManager::MultiTouchManager() : - mEvents() -{ -} - -MultiTouchManager::~MultiTouchManager() -{ -} - -void MultiTouchManager::init() -{ -} - -#ifdef USE_SDL2 -void MultiTouchManager::updateFinger(const SDL_Event &event, const bool active) -{ - const SDL_TouchFingerEvent &touch = event.tfinger; - MultiTouchEventsMap &device = mEvents[touch.touchId]; - MultiTouchEvent &finger = device[touch.fingerId]; - finger.active = active; - finger.x = touch.x; - finger.y = touch.y; -} - -void MultiTouchManager::handleFingerDown(const SDL_Event &event) -{ - updateFinger(event, true); - const SDL_TouchFingerEvent &touch = event.tfinger; - checkDevice(touch.touchId, touch.fingerId); -} - -void MultiTouchManager::handleFingerUp(const SDL_Event &event) -{ - updateFinger(event, false); -} - -void MultiTouchManager::checkDevice(const long touchId, - const long fingerId) -{ - if (fingerId != 1 || !guiInput) - return; - - MultiTouchEventsMap &device = mEvents[touchId]; - MultiTouchEvent &finger0 = device[0]; - if (finger0.active) - { - MultiTouchEvent &finger1 = device[1]; - if (finger1.active) - { - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - guiInput->simulateMouseClick(finger0.x * w, finger0.y * h, - MouseButton::RIGHT); - } - } -} -#endif // USE_SDL2 diff --git a/src/input/touch/multitouchmanager.h b/src/input/touch/multitouchmanager.h deleted file mode 100644 index fbb240503..000000000 --- a/src/input/touch/multitouchmanager.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2013-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_TOUCH_MULTITOUCHMANAGER_H -#define INPUT_TOUCH_MULTITOUCHMANAGER_H - -#include <map> - -#include "localconsts.h" - -#ifdef USE_SDL2 -union SDL_Event; -#endif // USE_SDL2 - -struct MultiTouchEvent final -{ - A_DEFAULT_COPY(MultiTouchEvent) - - bool active; - float x; - float y; -}; - -typedef std::map<int, MultiTouchEvent> MultiTouchEventsMap; -typedef std::map<int, MultiTouchEventsMap> MultiTouchDevicesMap; - -class MultiTouchManager final -{ - public: - MultiTouchManager(); - - ~MultiTouchManager(); - - A_DELETE_COPY(MultiTouchManager) - - void init() A_CONST; - -#ifdef USE_SDL2 - void updateFinger(const SDL_Event &event, const bool active); - - void handleFingerDown(const SDL_Event &event); - - void handleFingerUp(const SDL_Event &event); - - void checkDevice(const long touchId, - const long fingerId); -#endif // USE_SDL2 - - private: - MultiTouchDevicesMap mEvents; -}; - -extern MultiTouchManager multiTouchManager; - -#endif // INPUT_TOUCH_MULTITOUCHMANAGER_H diff --git a/src/input/touch/touchactions.cpp b/src/input/touch/touchactions.cpp deleted file mode 100644 index f1f8e4676..000000000 --- a/src/input/touch/touchactions.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/touch/touchactions.h" - -#include "input/inputmanager.h" -#include "input/mouseinput.h" - -#include "input/touch/touchmanager.h" - -#include "debug.h" - -bool padClicked(false); -int halfJoyPad = 50; - -#define impHandler(name) void name(const MouseInput &mouseInput) -#define impHandler0(name) void name(const MouseInput &mouseInput A_UNUSED) - -void setHalfJoyPad(const int s) -{ - halfJoyPad = s; -} - -static void moveChar(int x, int y) -{ - static const int lim1 = 10; - static const int diff = 20; - - // set center at (0,0) - x -= halfJoyPad; - y -= halfJoyPad; - - // some magic for checking at what sector was click - if (abs(x) < lim1) - x = 0; - - if (abs(y) < lim1) - y = 0; - - const int x2 = abs(x); - const int y2 = abs(y); - if (x2 > y2) - { - if ((y2 != 0) && x2 * 10 / y2 > diff) - y = 0; - } - else - { - if ((x2 != 0) && y2 * 10 / x2 > diff) - x = 0; - } - - // detecting direction - if (x > 0) - { - touchManager.setActionActive(InputAction::MOVE_LEFT, false); - touchManager.setActionActive(InputAction::MOVE_RIGHT, true); - } - else if (x < 0) - { - touchManager.setActionActive(InputAction::MOVE_LEFT, true); - touchManager.setActionActive(InputAction::MOVE_RIGHT, false); - } - else - { - touchManager.setActionActive(InputAction::MOVE_LEFT, false); - touchManager.setActionActive(InputAction::MOVE_RIGHT, false); - } - if (y > 0) - { - touchManager.setActionActive(InputAction::MOVE_DOWN, true); - touchManager.setActionActive(InputAction::MOVE_UP, false); - } - else if (y < 0) - { - touchManager.setActionActive(InputAction::MOVE_DOWN, false); - touchManager.setActionActive(InputAction::MOVE_UP, true); - } - else - { - touchManager.setActionActive(InputAction::MOVE_DOWN, false); - touchManager.setActionActive(InputAction::MOVE_UP, false); - } - inputManager.updateConditionMask(true); -} - -impHandler(padClick) -{ - moveChar(mouseInput.getX(), mouseInput.getY()); - padClicked = true; -} - -impHandler(padEvents) -{ - if (mouseInput.getType() == MouseEventType::MOVED) - { - if (padClicked) - moveChar(mouseInput.getX(), mouseInput.getY()); - } -} - -impHandler0(padOut) -{ - padClicked = false; - moveChar(halfJoyPad, halfJoyPad); -} - -impHandler0(padUp) -{ - padClicked = false; - moveChar(halfJoyPad, halfJoyPad); -} diff --git a/src/input/touch/touchactions.h b/src/input/touch/touchactions.h deleted file mode 100644 index 1d0017275..000000000 --- a/src/input/touch/touchactions.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_TOUCH_TOUCHACTIONS_H -#define INPUT_TOUCH_TOUCHACTIONS_H - -#include "localconsts.h" - -#define decHandler(name) void name(const MouseInput &mouseInput) - -class MouseInput; - -decHandler(padClick); -decHandler(padEvents); -decHandler(padOut); -decHandler(padUp); - -void setHalfJoyPad(const int s); - -#undef decHandler - -#endif // INPUT_TOUCH_TOUCHACTIONS_H diff --git a/src/input/touch/touchmanager.cpp b/src/input/touch/touchmanager.cpp deleted file mode 100644 index df98e667f..000000000 --- a/src/input/touch/touchmanager.cpp +++ /dev/null @@ -1,709 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "input/touch/touchmanager.h" - -#include "configuration.h" - -#include "gui/gui.h" -#include "gui/skin.h" -#include "gui/theme.h" - -#include "gui/fonts/font.h" - -#include "input/inputmanager.h" -#include "input/mouseinput.h" - -#include "input/touch/touchactions.h" - -#include "utils/delete2.h" -#include "utils/foreach.h" - -#include "render/graphics.h" - -#include "render/vertexes/imagecollection.h" - -#include "resources/imagerect.h" - -#include "resources/image/image.h" - -#include "debug.h" - -TouchManager touchManager; - -extern RenderType openGLMode; - -TouchManager::TouchManager() : - mKeyboard(nullptr), - mPad(nullptr), - mObjects(), - mVertexes(nullptr), - mRedraw(true), - mShowJoystick(false), - mShowButtons(false), - mShowKeyboard(false), - mButtonsSize(1), - mJoystickSize(1), - mButtonsFormat(0), - mWidth(0), - mHeight(0), - mShow(false), - mInGame(false), - mTempHideButtons(false) -{ - for (int f = 0; f < actionsSize; f ++) - mActions[f] = false; - for (int f = 0; f < buttonsCount; f ++) - mButtons[f] = nullptr; -} - -TouchManager::~TouchManager() -{ - clear(); - CHECKLISTENERS -} - -void TouchManager::shutdown() restrict2 -{ - config.removeListeners(this); -} - -void TouchManager::init() restrict2 -{ - delete mVertexes; - mVertexes = new ImageCollection; - - config.addListener("showScreenJoystick", this); - config.addListener("showScreenButtons", this); - config.addListener("showScreenKeyboard", this); - config.addListener("screenButtonsSize", this); - config.addListener("screenJoystickSize", this); - config.addListener("screenButtonsFormat", this); - - mShowJoystick = config.getBoolValue("showScreenJoystick"); - mShowButtons = config.getBoolValue("showScreenButtons"); - mShowKeyboard = config.getBoolValue("showScreenKeyboard"); - mButtonsSize = config.getIntValue("screenButtonsSize"); - mJoystickSize = config.getIntValue("screenJoystickSize"); - mButtonsFormat = config.getIntValue("screenButtonsFormat"); - - setHalfJoyPad(getPadSize() / 2); - - if (mShowKeyboard) - loadKeyboard(); - if (mShowJoystick) - loadPad(); - if (mShowButtons) - loadButtons(); - mWidth = mainGraphics->mWidth; - mHeight = mainGraphics->mHeight; -} - -void TouchManager::loadTouchItem(TouchItem **restrict item, - const std::string &restrict name, - const std::string &restrict imageName, - const std::string &restrict text, - int x, int y, - const int width, const int height, - const int type, - const std::string &restrict eventPressed, - const std::string &restrict eventReleased, - const TouchFuncPtr fAll, - const TouchFuncPtr fPressed, - const TouchFuncPtr fReleased, - const TouchFuncPtr fOut) restrict2 -{ - *item = nullptr; - if (theme == nullptr) - return; - ImageRect *images = new ImageRect; - for (int f = 0; f < 9; f ++) - images->grid[f] = nullptr; - - Image *icon; - if (imageName.empty()) - icon = nullptr; - else - icon = Theme::getImageFromThemeXml(imageName, ""); - - Skin *const skin = theme->loadSkinRect(*images, name, ""); - if (skin != nullptr) - { - Image *const image = images->grid[0]; - if (image != nullptr) - { - if (x == -1) - x = skin->getOption("x", 10); - if (y == -1) - y = skin->getOption("y", 10); - const int pad = skin->getPadding(); - const int pad2 = 2 * pad; - const int border = skin->getOption("clickborder"); - const int border2 = border * 2; - const int diff = pad - border; - switch (type) - { - case LEFT: - y += (mainGraphics->mHeight - height) / 2; - break; - case RIGHT: - x = mainGraphics->mWidth - width - pad2 - x; - y = mainGraphics->mHeight - height - pad2 - y; - break; - case NORMAL: - default: - break; - } - *item = new TouchItem(text, Rect(x + diff, y + diff, - width + border2, height + border2), type, - eventPressed, eventReleased, images, icon, - x + pad, y + pad, width, height, - fAll, fPressed, fReleased, fOut); - mObjects.push_back(*item); - } - else - { - delete images; - } - theme->unload(skin); - } - else - { - delete images; - } - mRedraw = true; -} - -void TouchManager::clear() restrict2 -{ - FOR_EACH (TouchItemVectorCIter, it, mObjects) - unload(*it); - mObjects.clear(); - delete2(mVertexes); - mRedraw = true; -} - -void TouchManager::draw() restrict2 -{ - if (mRedraw) - { - mRedraw = false; - mVertexes->clear(); - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && (item->images != nullptr) && (mShow || - (item == mKeyboard && mShowKeyboard))) - { - mainGraphics->calcWindow(mVertexes, item->x, item->y, - item->width, item->height, *item->images); - const Image *const icon = item->icon; - if (icon != nullptr) - { - mainGraphics->calcTileCollection(mVertexes, icon, - item->x + (item->width - icon->mBounds.w) / 2, - item->y + (item->height - icon->mBounds.h) / 2); - } - } - } - mainGraphics->finalize(mVertexes); - } - mainGraphics->drawTileCollection(mVertexes); - drawText(); -} - -void TouchManager::safeDraw() restrict2 -{ - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && (item->images != nullptr) && (mShow || - (item == mKeyboard && mShowKeyboard))) - { - mainGraphics->drawImageRect(item->x, item->y, - item->width, item->height, *item->images); - const Image *const icon = item->icon; - if (icon != nullptr) - { - mainGraphics->drawImage(icon, - item->x + (item->width - icon->mBounds.w) / 2, - item->y + (item->height - icon->mBounds.h) / 2); - } - } - } - drawText(); -} - -void TouchManager::drawText() restrict2 -{ - if (gui == nullptr) - return; - - Font *const font = boldFont; - const Color &color1 = theme->getColor(ThemeColorId::TEXT, 255); - const Color &color2 = theme->getColor(ThemeColorId::TEXT_OUTLINE, 255); - - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && mShow && !item->text.empty()) - { - const std::string str = item->text; - const int textX = (item->rect.width - font->getWidth(str)) - / 2 + item->x; - const int textY = (item->rect.height - font->getHeight()) - / 2 + item->y; - font->drawString(mainGraphics, - color1, - color2, - str, textX, textY); - } - } -} - -bool TouchManager::processEvent(const MouseInput &mouseInput) restrict2 -{ - const int x = mouseInput.getTouchX(); - const int y = mouseInput.getTouchY(); - - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if (item == nullptr || - (!mShow && (item != mKeyboard || !mShowKeyboard))) - { - continue; - } - const Rect &rect = item->rect; - if (rect.isPointInRect(x, y)) - { - MouseInput event = mouseInput; - event.setX(event.getTouchX() - item->x); - event.setY(event.getTouchY() - item->y); - if (item->funcAll != nullptr) - item->funcAll(event); - - switch (mouseInput.getType()) - { - case MouseEventType::PRESSED: - if (!item->eventPressed.empty()) - executeAction(item->eventPressed); - else if (item->funcPressed != nullptr) - item->funcPressed(event); - break; - case MouseEventType::RELEASED: - if (!item->eventReleased.empty()) - executeAction(item->eventReleased); - else if (item->funcReleased != nullptr) - item->funcReleased(event); - break; - default: - case MouseEventType::MOVED: - case MouseEventType::WHEEL_MOVED_DOWN: - case MouseEventType::WHEEL_MOVED_UP: - case MouseEventType::CLICKED: - case MouseEventType::ENTERED: - case MouseEventType::EXITED: - case MouseEventType::DRAGGED: - case MouseEventType::RELEASED2: - break; - } - return true; - } - else if (item->funcOut != nullptr) - { - item->funcOut(mouseInput); - } - } - return false; -} - -bool TouchManager::isActionActive(const InputActionT index) restrict2 const -{ - if (CAST_S32(index) < 0 || - CAST_S32(index) >= actionsSize) - { - return false; - } - return mActions[CAST_SIZE(index)]; -} - -void TouchManager::resize(const int width, const int height) restrict2 -{ - mRedraw = true; - const int maxHeight = mHeight; - const int diffW = width - mWidth; - const int diffH = height - maxHeight; - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - TouchItem *const item = *it; - if (item == nullptr) - continue; - - switch (item->type) - { - case LEFT: - if (height != maxHeight) - { - item->y = (height - item->height) / 2; - item->rect.y = (height - item->rect.y) / 2; - } - break; - case RIGHT: - { - item->x += diffW; - item->rect.x += diffW; - item->y += diffH; - item->rect.y += diffH; - break; - } - case NORMAL: - default: - break; - } - } - mWidth = mainGraphics->mWidth; - mHeight = mainGraphics->mHeight; -} - -void TouchManager::unload(TouchItem *restrict const item) -{ - if (item != nullptr) - { - if (item->images != nullptr) - { - Theme::unloadRect(*item->images); - delete2(item->images); - if (item->icon != nullptr) - { - item->icon->decRef(); - item->icon = nullptr; - } - } - delete item; - } -} - -void TouchManager::unloadTouchItem(TouchItem *restrict *unloadItem) restrict2 -{ - FOR_EACH (TouchItemVectorIter, it, mObjects) - { - TouchItem *item = *it; - if ((item != nullptr) && *unloadItem == item) - { - mObjects.erase(it); - unload(item); - return; - } - } -} - -void TouchManager::loadPad() restrict2 -{ - const int sz = (mJoystickSize + 2) * 50; - loadTouchItem(&mPad, "dpad.xml", "dpad_image.xml", "", -1, -1, sz, sz, - LEFT, "", "", &padEvents, &padClick, &padUp, &padOut); -} - -void TouchManager::loadButtons() restrict2 -{ - const int sz = (mButtonsSize + 1) * 50; - if (theme == nullptr) - return; - Skin *const skin = theme->load("dbutton.xml", ""); - - if (skin != nullptr) - { - const int x = skin->getOption("x", 10); - const int y = skin->getOption("y", 10); - const int pad = skin->getPadding(); - const int pad2 = 2 * pad + sz; - const int skipWidth = pad2 + x; - const int skipHeight = pad2 + y; - - switch (mButtonsFormat) - { - // 2x1 - case 0: - default: - { - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", x, y, sz, sz, RIGHT, "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth, y, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 2x2 - case 1: - { - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, y, sz, sz, RIGHT, "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, y, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", x, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 3x3 - case 2: - { - const int pad4 = pad2 * 2; - const int skipWidth2 = pad4 + x; - const int skipHeight2 = pad4 + y; - loadTouchItem(&mButtons[8], "dbutton.xml", "dbutton_image.xml", - "9", x, y, sz, sz, RIGHT, "screenActionButton8", ""); - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", skipWidth, y, sz, sz, RIGHT, - "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", x, skipHeight, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", x, skipHeight2, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth, skipHeight2, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth2, skipHeight2, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 4x2 - case 3: - { - const int skipWidth2 = pad2 * 2 + x; - const int skipWidth3 = pad2 * 3 + x; - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", x, y, sz, sz, RIGHT, "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth, y, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth3, y, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, skipHeight, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth3, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 4x3 - case 4: - { - const int skipWidth2 = pad2 * 2 + x; - const int skipWidth3 = pad2 * 3 + x; - const int skipHeight2 = pad2 * 2 + y; - loadTouchItem(&mButtons[11], "dbutton.xml", - "dbutton_image.xml", "12", x, y, sz, sz, RIGHT, - "screenActionButton11", ""); - loadTouchItem(&mButtons[10], "dbutton.xml", - "dbutton_image.xml", "11", skipWidth, y, sz, sz, RIGHT, - "screenActionButton10", ""); - loadTouchItem(&mButtons[9], "dbutton.xml", "dbutton_image.xml", - "10", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton9", ""); - loadTouchItem(&mButtons[8], "dbutton.xml", "dbutton_image.xml", - "9", skipWidth3, y, sz, sz, RIGHT, - "screenActionButton8", ""); - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", x, skipHeight, sz, sz, RIGHT, - "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth3, skipHeight, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, skipHeight2, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, skipHeight2, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth2, skipHeight2, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth3, skipHeight2, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 3x2 - case 5: - { - const int pad4 = pad2 * 2; - const int skipWidth2 = pad4 + x; - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", x, y, sz, sz, RIGHT, "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth, y, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", x, skipHeight, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - }; - theme->unload(skin); - } -} - -void TouchManager::loadKeyboard() restrict2 -{ - loadTouchItem(&mKeyboard, "keyboard_icon.xml", "", "", -1, -1, 28, 28, - NORMAL, "", "screenActionKeyboard"); -} - -void TouchManager::optionChanged(const std::string &value) restrict2 -{ - if (value == "showScreenJoystick") - { - if (mShowJoystick == config.getBoolValue("showScreenJoystick")) - return; - mShowJoystick = config.getBoolValue("showScreenJoystick"); - if (mShowJoystick) - loadPad(); - else - unloadTouchItem(&mPad); - mRedraw = true; - } - else if (value == "showScreenButtons") - { - if (mShowButtons == config.getBoolValue("showScreenButtons")) - return; - mShowButtons = config.getBoolValue("showScreenButtons"); - if (mShowButtons) - { - loadButtons(); - } - else - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - } - mRedraw = true; - } - else if (value == "showScreenKeyboard") - { - if (mShowKeyboard == config.getBoolValue("showScreenKeyboard")) - return; - mShowKeyboard = config.getBoolValue("showScreenKeyboard"); - if (mShowKeyboard) - loadKeyboard(); - else - unloadTouchItem(&mKeyboard); - mRedraw = true; - } - else if (value == "screenButtonsSize") - { - if (mButtonsSize == config.getIntValue("screenButtonsSize")) - return; - mButtonsSize = config.getIntValue("screenButtonsSize"); - if (mShowButtons) - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - loadButtons(); - } - } - else if (value == "screenJoystickSize") - { - if (mJoystickSize == config.getIntValue("screenJoystickSize")) - return; - mJoystickSize = config.getIntValue("screenJoystickSize"); - setHalfJoyPad(getPadSize() / 2); - if (mShowJoystick) - { - unloadTouchItem(&mPad); - loadPad(); - } - } - else if (value == "screenButtonsFormat") - { - if (mButtonsFormat == config.getIntValue("screenButtonsFormat")) - return; - mButtonsFormat = config.getIntValue("screenButtonsFormat"); - if (mShowButtons) - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - loadButtons(); - } - } -} - -void TouchManager::setInGame(const bool b) restrict2 -{ - mInGame = b; - mShow = mInGame && !mTempHideButtons; - mRedraw = true; -} - -void TouchManager::setTempHide(const bool b) restrict2 -{ - mTempHideButtons = b; - mShow = mInGame && !mTempHideButtons; - mRedraw = true; -} - -void TouchManager::executeAction(const std::string &restrict event) -{ - inputManager.executeAction(static_cast<InputActionT>( - config.getIntValue(event))); -} diff --git a/src/input/touch/touchmanager.h b/src/input/touch/touchmanager.h deleted file mode 100644 index 0b9187968..000000000 --- a/src/input/touch/touchmanager.h +++ /dev/null @@ -1,204 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUT_TOUCH_TOUCHMANAGER_H -#define INPUT_TOUCH_TOUCHMANAGER_H - -#include "listeners/configlistener.h" - -#include "enums/input/inputaction.h" - -#include "gui/rect.h" - -#include "utils/cast.h" -#include "utils/vector.h" - -#include "localconsts.h" - -class Image; -class ImageCollection; -class ImageRect; -class MouseInput; - -typedef void (*TouchFuncPtr) (const MouseInput &restrict mouseInput); - -const int actionsSize = CAST_S32(InputAction::TOTAL); -const int buttonsCount = 12; - -struct TouchItem final -{ - TouchItem(const std::string &text0, - const Rect &rect0, - const int type0, - const std::string &restrict eventPressed0, - const std::string &restrict eventReleased0, - ImageRect *restrict const images0, - Image *restrict const icon0, - const int x0, const int y0, - const int width0, const int height0, - const TouchFuncPtr ptrAll, - const TouchFuncPtr ptrPressed, - const TouchFuncPtr ptrReleased, - const TouchFuncPtr ptrOut) : - text(text0), - rect(rect0), - type(type0), - eventPressed(eventPressed0), - eventReleased(eventReleased0), - images(images0), - icon(icon0), - x(x0), - y(y0), - width(width0), - height(height0), - funcAll(ptrAll), - funcPressed(ptrPressed), - funcReleased(ptrReleased), - funcOut(ptrOut) - { - } - - A_DELETE_COPY(TouchItem) - - std::string text; - Rect rect; - int type; - std::string eventPressed; - std::string eventReleased; - ImageRect *images; - Image *icon; - int x; - int y; - int width; - int height; - TouchFuncPtr funcAll; - TouchFuncPtr funcPressed; - TouchFuncPtr funcReleased; - TouchFuncPtr funcOut; -}; - -typedef STD_VECTOR<TouchItem*> TouchItemVector; -typedef TouchItemVector::const_iterator TouchItemVectorCIter; -typedef TouchItemVector::iterator TouchItemVectorIter; - -class TouchManager final : public ConfigListener -{ - public: - TouchManager(); - - ~TouchManager(); - - A_DELETE_COPY(TouchManager) - - enum Types - { - NORMAL = 0, - LEFT = 1, - RIGHT = 2 - }; - - void init() restrict2; - - void loadTouchItem(TouchItem **restrict item, - const std::string &restrict name, - const std::string &restrict imageName, - const std::string &restrict text, - int x, int y, - const int width, const int height, - const int type, - const std::string &restrict eventPressed, - const std::string &restrict eventReleased, - const TouchFuncPtr fAll = nullptr, - const TouchFuncPtr fPressed = nullptr, - const TouchFuncPtr fReleased = nullptr, - const TouchFuncPtr fOut = nullptr) - restrict2 A_NONNULL(2); - - void clear() restrict2; - - void draw() restrict2; - - void safeDraw() restrict2; - - void drawText() restrict2; - - bool processEvent(const MouseInput &mouseInput) restrict2; - - bool isActionActive(const InputActionT index) restrict2 const; - - void setActionActive(const InputActionT index, - const bool value) restrict2 - { - if (CAST_S32(index) >= 0 && - CAST_S32(index) < actionsSize) - { - mActions[CAST_SIZE(index)] = value; - } - } - - void resize(const int width, const int height) restrict2; - - static void unload(TouchItem *restrict const item); - - void unloadTouchItem(TouchItem *restrict *unloadItem) restrict2; - - void optionChanged(const std::string &value) restrict2 override final; - - void loadPad() restrict2; - - void loadButtons() restrict2; - - void loadKeyboard() restrict2; - - int getPadSize() restrict2 const - { return (mJoystickSize + 2) * 50; } - - void setInGame(const bool b) restrict2; - - void setTempHide(const bool b) restrict2; - - void shutdown() restrict2; - - static void executeAction(const std::string &restrict event); - - private: - TouchItem *mKeyboard; - TouchItem *mPad; - TouchItem *mButtons[buttonsCount] A_NONNULLPOINTER; - TouchItemVector mObjects; - ImageCollection *mVertexes A_NONNULLPOINTER; - bool mActions[actionsSize]; - bool mRedraw; - bool mShowJoystick; - bool mShowButtons; - bool mShowKeyboard; - int mButtonsSize; - int mJoystickSize; - int mButtonsFormat; - int mWidth; - int mHeight; - bool mShow; - bool mInGame; - bool mTempHideButtons; -}; - -extern TouchManager touchManager; - -#endif // INPUT_TOUCH_TOUCHMANAGER_H |