/* * Custom keyboard shortcuts configuration * Copyright (C) 2007 Joshua Langley * Copyright (C) 2009-2010 The Mana Developers * Copyright (C) 2011-2012 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 . */ #ifndef KEYBOARDDATA_H #define KEYBOARDDATA_H #include "actionmanager.h" #include "inputmanager.h" #include "keyboardconfig.h" #include "localconsts.h" #include "utils/gettext.h" #include "utils/stringutils.h" #include struct KeyData { const char *configField; int defaultValue; std::string caption; int grp; ActionFuncPtr action; int modKeyIndex; int priority; int condition; }; struct SetupActionData { int actionId; int defaultValue; }; // keyData must be in same order as enum keyAction. static KeyData const keyData[KeyboardConfig::KEY_TOTAL] = { {"", 0, N_("Basic Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 0, 0}, {"keyMoveUp", SDLK_UP, N_("Move Up"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveUp, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME2}, {"keyMoveDown", SDLK_DOWN, N_("Move Down"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveDown, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME2}, {"keyMoveLeft", SDLK_LEFT, N_("Move Left"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveLeft, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyMoveRight", SDLK_RIGHT, N_("Move Right"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveRight, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyAttack", SDLK_LCTRL, N_("Attack"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyTargetAttack", SDLK_x, N_("Target & Attack"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyMoveToTarget", SDLK_v, N_("Move to Target"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveToTarget, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyChangeMoveToTarget", SDLK_PERIOD, N_("Change Move to Target type"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeMoveToTarget, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyMoveToHome", SDLK_d, N_("Move to Home location"), KeyboardConfig::GRP_DEFAULT, &ActionManager::moveToHome, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keySetHome", SDLK_KP5, N_("Set home location"), KeyboardConfig::GRP_DEFAULT, &ActionManager::setHome, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyMoveToPoint", SDLK_RSHIFT, N_("Move to navigation point"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyTalk", SDLK_t, N_("Talk"), KeyboardConfig::GRP_DEFAULT, &ActionManager::talk, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyTarget", SDLK_LSHIFT, N_("Stop Attack"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyUnTarget", KeyboardConfig::KEY_NO_VALUE, N_("Untarget"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyTargetClosest", SDLK_a, N_("Target Closest"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyTargetNPC", SDLK_n, N_("Target NPC"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyTargetPlayer", SDLK_q, N_("Target Player"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyPickup", SDLK_z, N_("Pickup"), KeyboardConfig::GRP_DEFAULT, &ActionManager::pickup, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyChangePickupType", SDLK_o, N_("Change Pickup Type"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changePickupType, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyHideWindows", SDLK_h, N_("Hide Windows"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::hideWindows, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyBeingSit", SDLK_s, N_("Sit"), KeyboardConfig::GRP_DEFAULT, &ActionManager::sit, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyScreenshot", SDLK_p, N_("Screenshot"), KeyboardConfig::GRP_DEFAULT, &ActionManager::screenshot, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyTrade", SDLK_r, N_("Enable/Disable Trading"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeTrade, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyPathfind", SDLK_f, N_("Change Map View Mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeMapMode, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET | COND_EMODS}, {"keyOK", SDLK_SPACE, N_("Select OK"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::ok, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOMODAL | COND_NOAWAY | COND_NONPCINPUT}, {"keyQuit", SDLK_ESCAPE, N_("Quit"), KeyboardConfig::GRP_DEFAULT, &ActionManager::quit, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"", 0, N_("Shortcuts Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyShortcutsKey", SDLK_MENU, N_("Item Shortcuts Key"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyShortcut1", SDLK_1, strprintf(N_("Item Shortcut %d"), 1), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut2", SDLK_2, strprintf(N_("Item Shortcut %d"), 2), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut3", SDLK_3, strprintf(N_("Item Shortcut %d"), 3), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut4", SDLK_4, strprintf(N_("Item Shortcut %d"), 4), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut5", SDLK_5, strprintf(N_("Item Shortcut %d"), 5), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut6", SDLK_6, strprintf(N_("Item Shortcut %d"), 6), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut7", SDLK_7, strprintf(N_("Item Shortcut %d"), 7), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut8", SDLK_8, strprintf(N_("Item Shortcut %d"), 8), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut9", SDLK_9, strprintf(N_("Item Shortcut %d"), 9), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut10", SDLK_0, strprintf(N_("Item Shortcut %d"), 10), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut11", SDLK_MINUS, strprintf(N_("Item Shortcut %d"), 11), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut12", SDLK_EQUALS, strprintf(N_("Item Shortcut %d"), 12), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut13", SDLK_BACKSPACE, strprintf(N_("Item Shortcut %d"), 13), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut14", SDLK_INSERT, strprintf(N_("Item Shortcut %d"), 14), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut15", SDLK_HOME, strprintf(N_("Item Shortcut %d"), 15), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut16", KeyboardConfig::KEY_NO_VALUE, strprintf(N_("Item Shortcut %d"), 16), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut17", KeyboardConfig::KEY_NO_VALUE, strprintf(N_("Item Shortcut %d"), 17), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut18", KeyboardConfig::KEY_NO_VALUE, strprintf(N_("Item Shortcut %d"), 18), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut19", KeyboardConfig::KEY_NO_VALUE, strprintf(N_("Item Shortcut %d"), 19), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"keyShortcut20", KeyboardConfig::KEY_NO_VALUE, strprintf(N_("Item Shortcut %d"), 20), KeyboardConfig::GRP_DEFAULT, &ActionManager::shortcut, KeyboardConfig::KEY_NO_VALUE, 50, COND_SHORTCUT}, {"", 0, N_("Windows Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyWindowHelp", SDLK_F1, N_("Help Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::helpWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowStatus", SDLK_F2, N_("Status Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::statusWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowInventory", SDLK_F3, N_("Inventory Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::inventoryWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowEquipment", SDLK_F4, N_("Equipment Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::equipmentWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowSkill", SDLK_F5, N_("Skill Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::skillDialogShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowMinimap", SDLK_F6, N_("Minimap Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::minimapWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowChat", SDLK_F7, N_("Chat Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::chatWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowShortcut", SDLK_F8, N_("Item Shortcut Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::shortcutWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowSetup", SDLK_F9, N_("Setup Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::setupWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOTARGET | COND_NOINPUT | COND_ENABLED}, {"keyWindowDebug", SDLK_F10, N_("Debug Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::debugWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowSocial", SDLK_F11, N_("Social Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::socialWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowEmoteBar", SDLK_F12, N_("Emote Shortcut Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::emoteShortcutWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowOutfit", SDLK_BACKQUOTE, N_("Outfits Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::outfitWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowShop", -1, N_("Shop Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::shopWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowDrop", SDLK_w, N_("Quick drop Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::dropShortcutWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowKills", SDLK_e, N_("Kill Stats Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::killStatsWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowSpells", SDLK_j, N_("Commands Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::spellShortcutWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowBotChecker", SDLK_LEFTBRACKET, N_("Bot Checker Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::botcheckerWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowOnline", KeyboardConfig::KEY_NO_VALUE, N_("Who Is Online Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::whoIsOnlineWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keyWindowDidYouKnow", KeyboardConfig::KEY_NO_VALUE, N_("Did you know Window"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::didYouKnowWindowShow, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_NOTARGET}, {"keySocialPrevTab", KeyboardConfig::KEY_NO_VALUE, N_("Previous Social Tab"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::prevSocialTab, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT}, {"keySocialNextTab", KeyboardConfig::KEY_NO_VALUE, N_("Next Social Tab"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::nextSocialTab, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT}, {"", 0, N_("Emotes Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keySmilie", SDLK_LALT, N_("Smilie"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyEmoteShortcut1", SDLK_1, strprintf(N_("Emote Shortcut %d"), 1), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut2", SDLK_2, strprintf(N_("Emote Shortcut %d"), 2), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut3", SDLK_3, strprintf(N_("Emote Shortcut %d"), 3), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut4", SDLK_4, strprintf(N_("Emote Shortcut %d"), 4), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut5", SDLK_5, strprintf(N_("Emote Shortcut %d"), 5), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut6", SDLK_6, strprintf(N_("Emote Shortcut %d"), 6), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut7", SDLK_7, strprintf(N_("Emote Shortcut %d"), 7), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut8", SDLK_8, strprintf(N_("Emote Shortcut %d"), 8), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut9", SDLK_9, strprintf(N_("Emote Shortcut %d"), 9), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut10", SDLK_0, strprintf(N_("Emote Shortcut %d"), 10), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut11", SDLK_MINUS, strprintf(N_("Emote Shortcut %d"), 11), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut12", SDLK_EQUALS, strprintf(N_("Emote Shortcut %d"), 12), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut13", SDLK_BACKSPACE, strprintf(N_("Emote Shortcut %d"), 13), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut14", SDLK_INSERT, strprintf(N_("Emote Shortcut %d"), 14), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut15", SDLK_HOME, strprintf(N_("Emote Shortcut %d"), 15), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut16", SDLK_q, strprintf(N_("Emote Shortcut %d"), 16), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut17", SDLK_w, strprintf(N_("Emote Shortcut %d"), 17), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut18", SDLK_e, strprintf(N_("Emote Shortcut %d"), 18), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut19", SDLK_r, strprintf(N_("Emote Shortcut %d"), 19), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut20", SDLK_t, strprintf(N_("Emote Shortcut %d"), 20), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut21", SDLK_y, strprintf(N_("Emote Shortcut %d"), 21), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut22", SDLK_u, strprintf(N_("Emote Shortcut %d"), 22), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut23", SDLK_i, strprintf(N_("Emote Shortcut %d"), 23), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut24", SDLK_o, strprintf(N_("Emote Shortcut %d"), 24), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut25", SDLK_p, strprintf(N_("Emote Shortcut %d"), 25), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut26", SDLK_LEFTBRACKET, strprintf(N_("Emote Shortcut %d"), 26), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut27", SDLK_RIGHTBRACKET, strprintf(N_("Emote Shortcut %d"), 27), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut28", SDLK_BACKSLASH, strprintf(N_("Emote Shortcut %d"), 28), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut29", SDLK_a, strprintf(N_("Emote Shortcut %d"), 29), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut30", SDLK_s, strprintf(N_("Emote Shortcut %d"), 30), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut31", SDLK_d, strprintf(N_("Emote Shortcut %d"), 31), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut32", SDLK_f, strprintf(N_("Emote Shortcut %d"), 32), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut33", SDLK_g, strprintf(N_("Emote Shortcut %d"), 33), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut34", SDLK_h, strprintf(N_("Emote Shortcut %d"), 34), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut35", SDLK_j, strprintf(N_("Emote Shortcut %d"), 35), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut36", SDLK_k, strprintf(N_("Emote Shortcut %d"), 36), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut37", SDLK_l, strprintf(N_("Emote Shortcut %d"), 37), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut38", SDLK_SEMICOLON, strprintf(N_("Emote Shortcut %d"), 38), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut39", SDLK_QUOTE, strprintf(N_("Emote Shortcut %d"), 39), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut40", SDLK_z, strprintf(N_("Emote Shortcut %d"), 40), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut41", SDLK_x, strprintf(N_("Emote Shortcut %d"), 41), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut42", SDLK_c, strprintf(N_("Emote Shortcut %d"), 42), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut43", SDLK_v, strprintf(N_("Emote Shortcut %d"), 43), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut44", SDLK_b, strprintf(N_("Emote Shortcut %d"), 44), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut45", SDLK_n, strprintf(N_("Emote Shortcut %d"), 45), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut46", SDLK_m, strprintf(N_("Emote Shortcut %d"), 46), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut47", SDLK_COMMA, strprintf(N_("Emote Shortcut %d"), 47), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"keyEmoteShortcut48", SDLK_PERIOD, strprintf(N_("Emote Shortcut %d"), 48), KeyboardConfig::GRP_EMOTION, &ActionManager::emote, KeyboardConfig::KEY_NO_VALUE, 100, COND_GAME}, {"", 0, N_("Outfits Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyWearOutfit", SDLK_RCTRL, N_("Wear Outfit"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyCopyOutfit", SDLK_RALT, N_("Copy Outfit"), KeyboardConfig::GRP_DEFAULT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyCopyEquipedOutfit", SDLK_RIGHTBRACKET, N_("Copy equipped to Outfit"), KeyboardConfig::GRP_DEFAULT, &ActionManager::copyEquippedToOutfit, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"", 0, N_("Chat Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyChat", SDLK_RETURN, N_("Toggle Chat"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_CHAT, &ActionManager::toggleChat, KeyboardConfig::KEY_NO_VALUE, 50, COND_ENABLED | COND_NOINPUT | COND_NOAWAY | COND_NOMODAL}, {"keyChatScrollUp", SDLK_PAGEUP, N_("Scroll Chat Up"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::scrollChatUp, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyChatScrollDown", SDLK_PAGEDOWN, N_("Scroll Chat Down"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::scrollChatDown, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyChatPrevTab", SDLK_KP7, N_("Previous Chat Tab"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::prevChatTab, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT}, {"keyChatNextTab", SDLK_KP9, N_("Next Chat Tab"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::nextChatTab, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT}, {"keyChatCloseTab", KeyboardConfig::KEY_NO_VALUE, N_("Close current Chat Tab"), KeyboardConfig::GRP_DEFAULT | KeyboardConfig::GRP_GUI, &ActionManager::closeChatTab, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT}, {"keyChatPrevHistory", SDLK_KP7, N_("Previous chat line"), KeyboardConfig::GRP_CHAT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyChatNextHistory", SDLK_KP9, N_("Next chat line"), KeyboardConfig::GRP_CHAT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyAutoCompleteChat", SDLK_TAB, N_("Chat Auto Complete"), KeyboardConfig::GRP_CHAT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyDeActivateChat", SDLK_ESCAPE, N_("Deactivate Chat Input"), KeyboardConfig::GRP_CHAT, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"", 0, N_("Other Keys"), 0, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT}, {"keyIgnoreInput1", SDLK_LSUPER, N_("Ignore input 1"), KeyboardConfig::GRP_DEFAULT, &ActionManager::ignoreInput, KeyboardConfig::KEY_NO_VALUE, 500, COND_DEFAULT}, {"keyIgnoreInput2", SDLK_RSUPER, N_("Ignore input 2"), KeyboardConfig::GRP_DEFAULT, &ActionManager::ignoreInput, KeyboardConfig::KEY_NO_VALUE, 500, COND_DEFAULT}, {"keyDirectUp", SDLK_l, N_("Direct Up"), KeyboardConfig::GRP_DEFAULT, &ActionManager::directUp, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyDirectDown", SDLK_SEMICOLON, N_("Direct Down"), KeyboardConfig::GRP_DEFAULT, &ActionManager::directDown, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyDirectLeft", SDLK_k, N_("Direct Left"), KeyboardConfig::GRP_DEFAULT, &ActionManager::directLeft, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyDirectRight", SDLK_QUOTE, N_("Direct Right"), KeyboardConfig::GRP_DEFAULT, &ActionManager::directRight, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME}, {"keyCrazyMoves", SDLK_SLASH, N_("Crazy moves"), KeyboardConfig::GRP_DEFAULT, &ActionManager::crazyMoves, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyChangeCrazyMoveType", SDLK_BACKSLASH, N_("Change Crazy Move mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeCrazyMove, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyQuickDrop", SDLK_y, N_("Quick Drop N Items from 0 slot"), KeyboardConfig::GRP_DEFAULT, &ActionManager::dropItem0, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyQuickDropN", SDLK_u, N_("Quick Drop N Items"), KeyboardConfig::GRP_DEFAULT, &ActionManager::dropItem, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keySwitchQuickDrop", SDLK_i, N_("Switch Quick Drop Counter"), KeyboardConfig::GRP_DEFAULT, &ActionManager::switchQuickDrop, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyMagicInma1", SDLK_c, N_("Quick heal target or self"), KeyboardConfig::GRP_DEFAULT, &ActionManager::heal, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyMagicItenplz", SDLK_m, N_("Use #itenplz spell"), KeyboardConfig::GRP_DEFAULT, &ActionManager::itenplz, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyMagicAttack", SDLK_b, N_("Use magic attack"), KeyboardConfig::GRP_DEFAULT, &ActionManager::magicAttack, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keySwitchMagicAttack", SDLK_COMMA, N_("Switch magic attack"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeMagicAttack, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keySwitchPvpAttack", KeyboardConfig::KEY_NO_VALUE, N_("Switch pvp attack"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changePvpMode, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyInvertDirection", SDLK_KP0, N_("Change move type"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeMoveType, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyChangeAttackWeaponType", SDLK_g, N_("Change Attack Weapon Type"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeAttackWeaponType, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyChangeAttackType", SDLK_END, N_("Change Attack Type"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeAttackType, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyChangeFollowMode", SDLK_KP1, N_("Change Follow mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeFollowMode, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyChangeImitationMode", SDLK_KP4, N_("Change Imitation mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeImitationMode, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyDisableGameModifiers", SDLK_KP8, N_("Disable / Enable Game modifier keys"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeGameModifier, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyChangeAudio", SDLK_KP3, N_("On / Off audio"), KeyboardConfig::GRP_DEFAULT, &ActionManager::changeAudio, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyAway", SDLK_KP2, N_("Enable / Disable away mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::away, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED}, {"keyRightClick", SDLK_TAB, N_("Emulate right click from keyboard"), KeyboardConfig::GRP_DEFAULT, &ActionManager::mouseClick, KeyboardConfig::KEY_NO_VALUE, 50, COND_NOINPUT | COND_NOAWAY | COND_NOMODAL}, {"keyCameraMode", SDLK_KP_PLUS, N_("Toggle camera mode"), KeyboardConfig::GRP_DEFAULT, &ActionManager::camera, KeyboardConfig::KEY_NO_VALUE, 50, COND_GAME | COND_VALIDSPEED | COND_EMODS}, {"keyMod", SDLK_LSHIFT, N_("Modifier key"), KeyboardConfig::GRP_GUI, nullptr, KeyboardConfig::KEY_NO_VALUE, 50, COND_DEFAULT} }; #endif