ManaPlus
inputactionmap.h
Go to the documentation of this file.
1 /*
2  * The ManaPlus Client
3  * Copyright (C) 2007 Joshua Langley <[email protected]>
4  * Copyright (C) 2009-2010 The Mana Developers
5  * Copyright (C) 2011-2019 The ManaPlus Developers
6  * Copyright (C) 2019-2021 Andrei Karas
7  *
8  * This file is part of The ManaPlus Client.
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 #ifndef INPUT_INPUTACTIONMAP_H
25 #define INPUT_INPUTACTIONMAP_H
26 
27 #include "sdlshared.h"
28 
29 #include "actions/actions.h"
30 #include "actions/chat.h"
31 #include "actions/commands.h"
32 #include "actions/move.h"
33 #include "actions/pets.h"
34 #include "actions/statusbar.h"
35 #include "actions/tabs.h"
36 #include "actions/target.h"
37 #include "actions/windows.h"
38 
40 #include "enums/input/inputgroup.h"
41 
42 #include "input/inputactiondata.h"
43 #include "input/inputmanager.h"
44 
45 #include "localconsts.h"
46 
47 #define defaultAction(name) \
48  InputType::UNKNOWN, -1, \
49  InputType::UNKNOWN, -1, \
50  Input::GRP_DEFAULT, \
51  name, \
52  InputAction::NO_VALUE, 50
53 
54 #define addKey(name) InputType::KEYBOARD, name
55 #define emptyKey InputType::UNKNOWN, -1
56 #define joystickButton(num) InputType::JOYSTICK, num
57 
58 // keyData must be in same order as enum keyAction.
61  {
62  {"keyMoveUp",
63  addKey(SDLK_UP),
64  emptyKey,
69  "",
72  {"keyMoveDown",
73  addKey(SDLK_DOWN),
74  emptyKey,
79  "",
82  {"keyMoveLeft",
83  addKey(SDLK_LEFT),
84  emptyKey,
89  "",
92  {"keyMoveRight",
93  addKey(SDLK_RIGHT),
94  emptyKey,
99  "",
102  {"keyAttack",
103  addKey(SDLK_x),
104 #ifdef __SWITCH__
105  joystickButton(9),
106 #else
107  emptyKey,
108 #endif
116  "attack",
119  {"keyTargetAttack",
120  addKey(SDLK_LCTRL),
121  joystickButton(0),
130  "targetattack",
131  UseArgs_true,
133  {"keyMoveToTarget",
134  addKey(SDLK_v),
135 #ifdef __SWITCH__
136  joystickButton(3),
137 #else
138  emptyKey,
139 #endif
146  "movetotarget",
149  {"keyChangeMoveToTarget",
150  addKey(SDLK_PERIOD),
151  emptyKey,
159  "",
162  {"keyMoveToHome",
163  addKey(SDLK_d),
164  emptyKey,
171  "movetohome",
174  {"keySetHome",
175  addKey(SDLK_KP5),
176  emptyKey,
183  "sethome",
186  {"keyMoveToPoint",
187  addKey(SDLK_RSHIFT),
188  emptyKey,
190  nullptr,
195  "",
198  {"keyTalk",
199  addKey(SDLK_t),
200 #ifdef __SWITCH__
201  joystickButton(8),
202 #else
203  emptyKey,
204 #endif
206  &Actions::talk,
209  "talk",
212  {"keyTarget",
213  addKey(SDLK_LSHIFT),
214 #ifdef __SWITCH__
215  emptyKey,
216 #else
217  joystickButton(4),
218 #endif
223  "stopattack",
226  {"keyUnTarget",
229  "untarget",
232  {"keyTargetMonster",
233  addKey(SDLK_a),
234 #ifdef __SWITCH__
235  joystickButton(7),
236 #else
237  joystickButton(3),
238 #endif
246  "targetmonster",
249  {"keyTargetNPC",
250  addKey(SDLK_n),
251 #ifdef __SWITCH__
252  joystickButton(6),
253 #else
254  emptyKey,
255 #endif
262  "targetnpc",
265  {"keyTargetPlayer",
266  addKey(SDLK_q),
267  emptyKey,
274  "targetplayer",
277  {"keyPickup",
278  addKey(SDLK_z),
279 #ifdef __SWITCH__
280  joystickButton(2),
281 #else
282  joystickButton(1),
283 #endif
290  "pickup",
293  {"keyChangePickupType",
294  addKey(SDLK_o),
295  emptyKey,
303  "",
306  {"keyHideWindows",
307  addKey(SDLK_h),
308  emptyKey,
315  "hidewindows",
318  {"keyBeingSit",
319  addKey(SDLK_s),
320 #ifdef __SWITCH__
321  emptyKey,
322 #else
323  joystickButton(2),
324 #endif
326  &Actions::sit,
332  "sit",
335  {"keyScreenshot",
336  addKey(SDLK_p),
337  emptyKey,
344  "screenshot",
347  {"keyTrade",
348  addKey(SDLK_r),
349  emptyKey,
356  "changetrade",
359  {"keyPathfind",
360  addKey(SDLK_f),
361  emptyKey,
369  "",
372  {"keyOK",
373  addKey(SDLK_SPACE),
374  emptyKey,
376  &Actions::ok,
382  "",
385  {"keyQuit",
386  addKey(SDLK_ESCAPE),
387 #if defined(USE_SDL2)
388 #if defined(ANDROID)
389  addKey(SDLK_AC_BACK),
390 #elif defined(__SWITCH__)
391  joystickButton(11),
392 #else // defined(ANDROID)
393  emptyKey,
394 #endif // defined(ANDROID)
395 #else // defined(USE_SDL2)
396  emptyKey,
397 #endif // defined(USE_SDL2)
399  &Actions::quit,
402  "quit",
405  {"keyShortcutsKey",
406  addKey(SDLK_MENU),
407  emptyKey,
409  nullptr,
414  "",
417  {"keyShortcut1",
418  addKey(SDLK_1),
419  emptyKey,
424  "",
427  {"keyShortcut2",
428  addKey(SDLK_2),
429  emptyKey,
434  "",
437  {"keyShortcut3",
438  addKey(SDLK_3),
439  emptyKey,
444  "",
447  {"keyShortcut4",
448  addKey(SDLK_4),
449  emptyKey,
454  "",
457  {"keyShortcut5",
458  addKey(SDLK_5),
459  emptyKey,
464  "",
467  {"keyShortcut6",
468  addKey(SDLK_6),
469  emptyKey,
474  "",
477  {"keyShortcut7",
478  addKey(SDLK_7),
479  emptyKey,
484  "",
487  {"keyShortcut8",
488  addKey(SDLK_8),
489  emptyKey,
494  "",
497  {"keyShortcut9",
498  addKey(SDLK_9),
499  emptyKey,
504  "",
507  {"keyShortcut10",
508  addKey(SDLK_0),
509  emptyKey,
514  "",
517  {"keyShortcut11",
518  addKey(SDLK_MINUS),
519  emptyKey,
524  "",
527  {"keyShortcut12",
528  addKey(SDLK_EQUALS),
529  emptyKey,
534  "",
537  {"keyShortcut13",
538  addKey(SDLK_BACKSPACE),
539  emptyKey,
544  "",
547  {"keyShortcut14",
548  addKey(SDLK_INSERT),
549  emptyKey,
554  "",
557  {"keyShortcut15",
558  addKey(SDLK_HOME),
559  emptyKey,
564  "",
567  {"keyShortcut16",
570  "",
573  {"keyShortcut17",
576  "",
579  {"keyShortcut18",
582  "",
585  {"keyShortcut19",
588  "",
591  {"keyShortcut20",
594  "",
597  {"keyWindowHelp",
598  addKey(SDLK_F1),
599  emptyKey,
604  "help|openhelp",
607  {"keyWindowStatus",
608  addKey(SDLK_F2),
609  emptyKey,
616  "status|openstatus",
619  {"keyWindowInventory",
620  addKey(SDLK_F3),
621  emptyKey,
628  "inventory|openinventory",
631  {"keyWindowEquipment",
632  addKey(SDLK_F4),
633  emptyKey,
640  "equipment|openequipment",
643  {"keyWindowSkill",
644  addKey(SDLK_F5),
645  emptyKey,
652  "skill|skills|openskills",
655  {"keyWindowMinimap",
656  addKey(SDLK_F6),
657  emptyKey,
664  "minimap|openminimap",
667  {"keyWindowChat",
668  addKey(SDLK_F7),
669  emptyKey,
674  "openchat",
677  {"keyWindowShortcut",
678  addKey(SDLK_F8),
679  emptyKey,
686  "openshortcut|openshortcuts",
689  {"keyWindowSetup",
690  addKey(SDLK_F9),
691  emptyKey,
699  "setup|opensetup",
702  {"keyWindowDebug",
703  addKey(SDLK_F10),
704  emptyKey,
711  "debug|opendebug",
714  {"keyWindowSocial",
715  addKey(SDLK_F11),
716  emptyKey,
723  "social|opensocial",
726  {"keyWindowEmoteBar",
727  addKey(SDLK_F12),
728  emptyKey,
735  "emotes|openemotes",
738  {"keyWindowOutfit",
739  addKey(SDLK_BACKQUOTE),
740  emptyKey,
747  "openoutfit|openoutfits",
750  {"keyWindowShop",
751  emptyKey,
752  emptyKey,
759  "shop|openshop",
762  {"keyWindowDrop",
763  addKey(SDLK_w),
764  emptyKey,
771  "opendrop",
774  {"keyWindowKills",
775  addKey(SDLK_e),
776  emptyKey,
783  "kills|openkills",
786  {"keyWindowSpells",
787  addKey(SDLK_j),
788  emptyKey,
795  "spells|openspells",
798  {"keyWindowBotChecker",
799  emptyKey,
800  emptyKey,
802  nullptr,
807  "",
810  {"keyWindowOnline",
811  emptyKey,
812  emptyKey,
819  "online|openonline",
822  {"keyWindowDidYouKnow",
823  emptyKey,
824  emptyKey,
829  "didyouknow|opendidyouknow",
832  {"keyWindowQuests",
833  addKey(SDLK_LEFTBRACKET),
834  emptyKey,
841  "quests|openquests",
844  {"keySocialPrevTab",
845  emptyKey,
846  emptyKey,
853  "prevsocialtab",
856  {"keySocialNextTab",
857  emptyKey,
858  emptyKey,
865  "nextsocialtab",
868  {"keySmilie",
869  addKey(SDLK_LALT),
870  emptyKey,
872  nullptr,
877  "",
880  {"keyEmoteShortcut1",
881  addKey(SDLK_1),
882  emptyKey,
885  InputAction::EMOTE, 100,
887  "",
890  {"keyEmoteShortcut2",
891  addKey(SDLK_2),
892  emptyKey,
895  InputAction::EMOTE, 100,
897  "",
900  {"keyEmoteShortcut3",
901  addKey(SDLK_3),
902  emptyKey,
905  InputAction::EMOTE, 100,
907  "",
910  {"keyEmoteShortcut4",
911  addKey(SDLK_4),
912  emptyKey,
915  InputAction::EMOTE, 100,
917  "",
920  {"keyEmoteShortcut5",
921  addKey(SDLK_5),
922  emptyKey,
925  InputAction::EMOTE, 100,
927  "",
930  {"keyEmoteShortcut6",
931  addKey(SDLK_6),
932  emptyKey,
935  InputAction::EMOTE, 100,
937  "",
940  {"keyEmoteShortcut7",
941  addKey(SDLK_7),
942  emptyKey,
945  InputAction::EMOTE, 100,
947  "",
950  {"keyEmoteShortcut8",
951  addKey(SDLK_8),
952  emptyKey,
955  InputAction::EMOTE, 100,
957  "",
960  {"keyEmoteShortcut9",
961  addKey(SDLK_9),
962  emptyKey,
965  InputAction::EMOTE, 100,
967  "",
970  {"keyEmoteShortcut10",
971  addKey(SDLK_0),
972  emptyKey,
975  InputAction::EMOTE, 100,
977  "",
980  {"keyEmoteShortcut11",
981  addKey(SDLK_MINUS),
982  emptyKey,
985  InputAction::EMOTE, 100,
987  "",
990  {"keyEmoteShortcut12",
991  addKey(SDLK_EQUALS),
992  emptyKey,
995  InputAction::EMOTE, 100,
997  "",
1000  {"keyEmoteShortcut13",
1001  addKey(SDLK_BACKSPACE),
1002  emptyKey,
1004  &Actions::emote,
1005  InputAction::EMOTE, 100,
1007  "",
1008  UseArgs_false,
1009  Protected_true},
1010  {"keyEmoteShortcut14",
1011  addKey(SDLK_INSERT),
1012  emptyKey,
1014  &Actions::emote,
1015  InputAction::EMOTE, 100,
1017  "",
1018  UseArgs_false,
1019  Protected_true},
1020  {"keyEmoteShortcut15",
1021  addKey(SDLK_HOME),
1022  emptyKey,
1024  &Actions::emote,
1025  InputAction::EMOTE, 100,
1027  "",
1028  UseArgs_false,
1029  Protected_true},
1030  {"keyEmoteShortcut16",
1031  addKey(SDLK_q),
1032  emptyKey,
1034  &Actions::emote,
1035  InputAction::EMOTE, 100,
1037  "",
1038  UseArgs_false,
1039  Protected_true},
1040  {"keyEmoteShortcut17",
1041  addKey(SDLK_w),
1042  emptyKey,
1044  &Actions::emote,
1045  InputAction::EMOTE, 100,
1047  "",
1048  UseArgs_false,
1049  Protected_true},
1050  {"keyEmoteShortcut18",
1051  addKey(SDLK_e),
1052  emptyKey,
1054  &Actions::emote,
1055  InputAction::EMOTE, 100,
1057  "",
1058  UseArgs_false,
1059  Protected_true},
1060  {"keyEmoteShortcut19",
1061  addKey(SDLK_r),
1062  emptyKey,
1064  &Actions::emote,
1065  InputAction::EMOTE, 100,
1067  "",
1068  UseArgs_false,
1069  Protected_true},
1070  {"keyEmoteShortcut20",
1071  addKey(SDLK_t),
1072  emptyKey,
1074  &Actions::emote,
1075  InputAction::EMOTE, 100,
1077  "",
1078  UseArgs_false,
1079  Protected_true},
1080  {"keyEmoteShortcut21",
1081  addKey(SDLK_y),
1082  emptyKey,
1084  &Actions::emote,
1085  InputAction::EMOTE, 100,
1087  "",
1088  UseArgs_false,
1089  Protected_true},
1090  {"keyEmoteShortcut22",
1091  addKey(SDLK_u),
1092  emptyKey,
1094  &Actions::emote,
1095  InputAction::EMOTE, 100,
1097  "",
1098  UseArgs_false,
1099  Protected_true},
1100  {"keyEmoteShortcut23",
1101  addKey(SDLK_i),
1102  emptyKey,
1104  &Actions::emote,
1105  InputAction::EMOTE, 100,
1107  "",
1108  UseArgs_false,
1109  Protected_true},
1110  {"keyEmoteShortcut24",
1111  addKey(SDLK_o),
1112  emptyKey,
1114  &Actions::emote,
1115  InputAction::EMOTE, 100,
1117  "",
1118  UseArgs_false,
1119  Protected_true},
1120  {"keyEmoteShortcut25",
1121  addKey(SDLK_p),
1122  emptyKey,
1124  &Actions::emote,
1125  InputAction::EMOTE, 100,
1127  "",
1128  UseArgs_false,
1129  Protected_true},
1130  {"keyEmoteShortcut26",
1131  addKey(SDLK_LEFTBRACKET),
1132  emptyKey,
1134  &Actions::emote,
1135  InputAction::EMOTE, 100,
1137  "",
1138  UseArgs_false,
1139  Protected_true},
1140  {"keyEmoteShortcut27",
1141  addKey(SDLK_RIGHTBRACKET),
1142  emptyKey,
1144  &Actions::emote,
1145  InputAction::EMOTE, 100,
1147  "",
1148  UseArgs_false,
1149  Protected_true},
1150  {"keyEmoteShortcut28",
1151  addKey(SDLK_BACKSLASH),
1152  emptyKey,
1154  &Actions::emote,
1155  InputAction::EMOTE, 100,
1157  "",
1158  UseArgs_false,
1159  Protected_true},
1160  {"keyEmoteShortcut29",
1161  addKey(SDLK_a),
1162  emptyKey,
1164  &Actions::emote,
1165  InputAction::EMOTE, 100,
1167  "",
1168  UseArgs_false,
1169  Protected_true},
1170  {"keyEmoteShortcut30",
1171  addKey(SDLK_s),
1172  emptyKey,
1174  &Actions::emote,
1175  InputAction::EMOTE, 100,
1177  "",
1178  UseArgs_false,
1179  Protected_true},
1180  {"keyEmoteShortcut31",
1181  addKey(SDLK_d),
1182  emptyKey,
1184  &Actions::emote,
1185  InputAction::EMOTE, 100,
1187  "",
1188  UseArgs_false,
1189  Protected_true},
1190  {"keyEmoteShortcut32",
1191  addKey(SDLK_f),
1192  emptyKey,
1194  &Actions::emote,
1195  InputAction::EMOTE, 100,
1197  "",
1198  UseArgs_false,
1199  Protected_true},
1200  {"keyEmoteShortcut33",
1201  addKey(SDLK_g),
1202  emptyKey,
1204  &Actions::emote,
1205  InputAction::EMOTE, 100,
1207  "",
1208  UseArgs_false,
1209  Protected_true},
1210  {"keyEmoteShortcut34",
1211  addKey(SDLK_h),
1212  emptyKey,
1214  &Actions::emote,
1215  InputAction::EMOTE, 100,
1217  "",
1218  UseArgs_false,
1219  Protected_true},
1220  {"keyEmoteShortcut35",
1221  addKey(SDLK_j),
1222  emptyKey,
1224  &Actions::emote,
1225  InputAction::EMOTE, 100,
1227  "",
1228  UseArgs_false,
1229  Protected_true},
1230  {"keyEmoteShortcut36",
1231  addKey(SDLK_k),
1232  emptyKey,
1234  &Actions::emote,
1235  InputAction::EMOTE, 100,
1237  "",
1238  UseArgs_false,
1239  Protected_true},
1240  {"keyEmoteShortcut37",
1241  addKey(SDLK_l),
1242  emptyKey,
1244  &Actions::emote,
1245  InputAction::EMOTE, 100,
1247  "",
1248  UseArgs_false,
1249  Protected_true},
1250  {"keyEmoteShortcut38",
1251  addKey(SDLK_SEMICOLON),
1252  emptyKey,
1254  &Actions::emote,
1255  InputAction::EMOTE, 100,
1257  "",
1258  UseArgs_false,
1259  Protected_true},
1260  {"keyEmoteShortcut39",
1261  addKey(SDLK_QUOTE),
1262  emptyKey,
1264  &Actions::emote,
1265  InputAction::EMOTE, 100,
1267  "",
1268  UseArgs_false,
1269  Protected_true},
1270  {"keyEmoteShortcut40",
1271  addKey(SDLK_z),
1272  emptyKey,
1274  &Actions::emote,
1275  InputAction::EMOTE, 100,
1277  "",
1278  UseArgs_false,
1279  Protected_true},
1280  {"keyEmoteShortcut41",
1281  addKey(SDLK_x),
1282  emptyKey,
1284  &Actions::emote,
1285  InputAction::EMOTE, 100,
1287  "",
1288  UseArgs_false,
1289  Protected_true},
1290  {"keyEmoteShortcut42",
1291  addKey(SDLK_c),
1292  emptyKey,
1294  &Actions::emote,
1295  InputAction::EMOTE, 100,
1297  "",
1298  UseArgs_false,
1299  Protected_true},
1300  {"keyEmoteShortcut43",
1301  addKey(SDLK_v),
1302  emptyKey,
1304  &Actions::emote,
1305  InputAction::EMOTE, 100,
1307  "",
1308  UseArgs_false,
1309  Protected_true},
1310  {"keyEmoteShortcut44",
1311  addKey(SDLK_b),
1312  emptyKey,
1314  &Actions::emote,
1315  InputAction::EMOTE, 100,
1317  "",
1318  UseArgs_false,
1319  Protected_true},
1320  {"keyEmoteShortcut45",
1321  addKey(SDLK_n),
1322  emptyKey,
1324  &Actions::emote,
1325  InputAction::EMOTE, 100,
1327  "",
1328  UseArgs_false,
1329  Protected_true},
1330  {"keyEmoteShortcut46",
1331  addKey(SDLK_m),
1332  emptyKey,
1334  &Actions::emote,
1335  InputAction::EMOTE, 100,
1337  "",
1338  UseArgs_false,
1339  Protected_true},
1340  {"keyEmoteShortcut47",
1341  addKey(SDLK_COMMA),
1342  emptyKey,
1344  &Actions::emote,
1345  InputAction::EMOTE, 100,
1347  "",
1348  UseArgs_false,
1349  Protected_true},
1350  {"keyEmoteShortcut48",
1351  addKey(SDLK_PERIOD),
1352  emptyKey,
1354  &Actions::emote,
1355  InputAction::EMOTE, 100,
1357  "",
1358  UseArgs_false,
1359  Protected_true},
1360  {"keyWearOutfit",
1361  addKey(SDLK_RCTRL),
1362  emptyKey,
1364  nullptr,
1369  "",
1370  UseArgs_false,
1371  Protected_true},
1372  {"keyCopyOutfit",
1373  addKey(SDLK_RALT),
1374  emptyKey,
1376  nullptr,
1381  "",
1382  UseArgs_false,
1383  Protected_true},
1384  {"keyCopyEquipedOutfit",
1385  addKey(SDLK_RIGHTBRACKET),
1386  emptyKey,
1393  "copyequippedtooutfit|itemstooutfit",
1394  UseArgs_false,
1395  Protected_true},
1396  {"keyOutfitShortcut1",
1397  addKey(SDLK_1),
1398  emptyKey,
1400  &Actions::outfit,
1401  InputAction::NO_VALUE, 100,
1403  "",
1404  UseArgs_false,
1405  Protected_true},
1406  {"keyOutfitShortcut2",
1407  addKey(SDLK_2),
1408  emptyKey,
1410  &Actions::outfit,
1411  InputAction::NO_VALUE, 100,
1413  "",
1414  UseArgs_false,
1415  Protected_true},
1416  {"keyOutfitShortcut3",
1417  addKey(SDLK_3),
1418  emptyKey,
1420  &Actions::outfit,
1421  InputAction::NO_VALUE, 100,
1423  "",
1424  UseArgs_false,
1425  Protected_true},
1426  {"keyOutfitShortcut4",
1427  addKey(SDLK_4),
1428  emptyKey,
1430  &Actions::outfit,
1431  InputAction::NO_VALUE, 100,
1433  "",
1434  UseArgs_false,
1435  Protected_true},
1436  {"keyOutfitShortcut5",
1437  addKey(SDLK_5),
1438  emptyKey,
1440  &Actions::outfit,
1441  InputAction::NO_VALUE, 100,
1443  "",
1444  UseArgs_false,
1445  Protected_true},
1446  {"keyOutfitShortcut6",
1447  addKey(SDLK_6),
1448  emptyKey,
1450  &Actions::outfit,
1451  InputAction::NO_VALUE, 100,
1453  "",
1454  UseArgs_false,
1455  Protected_true},
1456  {"keyOutfitShortcut7",
1457  addKey(SDLK_7),
1458  emptyKey,
1460  &Actions::outfit,
1461  InputAction::NO_VALUE, 100,
1463  "",
1464  UseArgs_false,
1465  Protected_true},
1466  {"keyOutfitShortcut8",
1467  addKey(SDLK_8),
1468  emptyKey,
1470  &Actions::outfit,
1471  InputAction::NO_VALUE, 100,
1473  "",
1474  UseArgs_false,
1475  Protected_true},
1476  {"keyOutfitShortcut9",
1477  addKey(SDLK_9),
1478  emptyKey,
1480  &Actions::outfit,
1481  InputAction::NO_VALUE, 100,
1483  "",
1484  UseArgs_false,
1485  Protected_true},
1486  {"keyOutfitShortcut10",
1487  addKey(SDLK_0),
1488  emptyKey,
1490  &Actions::outfit,
1491  InputAction::NO_VALUE, 100,
1493  "",
1494  UseArgs_false,
1495  Protected_true},
1496  {"keyOutfitShortcut11",
1497  addKey(SDLK_MINUS),
1498  emptyKey,
1500  &Actions::outfit,
1501  InputAction::NO_VALUE, 100,
1503  "",
1504  UseArgs_false,
1505  Protected_true},
1506  {"keyOutfitShortcut12",
1507  addKey(SDLK_EQUALS),
1508  emptyKey,
1510  &Actions::outfit,
1511  InputAction::NO_VALUE, 100,
1513  "",
1514  UseArgs_false,
1515  Protected_true},
1516  {"keyOutfitShortcut13",
1517  addKey(SDLK_BACKSPACE),
1518  emptyKey,
1520  &Actions::outfit,
1521  InputAction::NO_VALUE, 100,
1523  "",
1524  UseArgs_false,
1525  Protected_true},
1526  {"keyOutfitShortcut14",
1527  addKey(SDLK_INSERT),
1528  emptyKey,
1530  &Actions::outfit,
1531  InputAction::NO_VALUE, 100,
1533  "",
1534  UseArgs_false,
1535  Protected_true},
1536  {"keyOutfitShortcut15",
1537  addKey(SDLK_HOME),
1538  emptyKey,
1540  &Actions::outfit,
1541  InputAction::NO_VALUE, 100,
1543  "",
1544  UseArgs_false,
1545  Protected_true},
1546  {"keyOutfitShortcut16",
1547  addKey(SDLK_q),
1548  emptyKey,
1550  &Actions::outfit,
1551  InputAction::NO_VALUE, 100,
1553  "",
1554  UseArgs_false,
1555  Protected_true},
1556  {"keyOutfitShortcut17",
1557  addKey(SDLK_w),
1558  emptyKey,
1560  &Actions::outfit,
1561  InputAction::NO_VALUE, 100,
1563  "",
1564  UseArgs_false,
1565  Protected_true},
1566  {"keyOutfitShortcut18",
1567  addKey(SDLK_e),
1568  emptyKey,
1570  &Actions::outfit,
1571  InputAction::NO_VALUE, 100,
1573  "",
1574  UseArgs_false,
1575  Protected_true},
1576  {"keyOutfitShortcut19",
1577  addKey(SDLK_r),
1578  emptyKey,
1580  &Actions::outfit,
1581  InputAction::NO_VALUE, 100,
1583  "",
1584  UseArgs_false,
1585  Protected_true},
1586  {"keyOutfitShortcut20",
1587  addKey(SDLK_t),
1588  emptyKey,
1590  &Actions::outfit,
1591  InputAction::NO_VALUE, 100,
1593  "",
1594  UseArgs_false,
1595  Protected_true},
1596  {"keyOutfitShortcut21",
1597  addKey(SDLK_y),
1598  emptyKey,
1600  &Actions::outfit,
1601  InputAction::NO_VALUE, 100,
1603  "",
1604  UseArgs_false,
1605  Protected_true},
1606  {"keyOutfitShortcut22",
1607  addKey(SDLK_u),
1608  emptyKey,
1610  &Actions::outfit,
1611  InputAction::NO_VALUE, 100,
1613  "",
1614  UseArgs_false,
1615  Protected_true},
1616  {"keyOutfitShortcut23",
1617  addKey(SDLK_i),
1618  emptyKey,
1620  &Actions::outfit,
1621  InputAction::NO_VALUE, 100,
1623  "",
1624  UseArgs_false,
1625  Protected_true},
1626  {"keyOutfitShortcut24",
1627  addKey(SDLK_o),
1628  emptyKey,
1630  &Actions::outfit,
1631  InputAction::NO_VALUE, 100,
1633  "",
1634  UseArgs_false,
1635  Protected_true},
1636  {"keyOutfitShortcut25",
1637  addKey(SDLK_p),
1638  emptyKey,
1640  &Actions::outfit,
1641  InputAction::NO_VALUE, 100,
1643  "",
1644  UseArgs_false,
1645  Protected_true},
1646  {"keyOutfitShortcut26",
1647  addKey(SDLK_LEFTBRACKET),
1648  emptyKey,
1650  &Actions::outfit,
1651  InputAction::NO_VALUE, 100,
1653  "",
1654  UseArgs_false,
1655  Protected_true},
1656  {"keyOutfitShortcut27",
1657  addKey(SDLK_RIGHTBRACKET),
1658  emptyKey,
1660  &Actions::outfit,
1661  InputAction::NO_VALUE, 100,
1663  "",
1664  UseArgs_false,
1665  Protected_true},
1666  {"keyOutfitShortcut28",
1667  addKey(SDLK_BACKSLASH),
1668  emptyKey,
1670  &Actions::outfit,
1671  InputAction::NO_VALUE, 100,
1673  "",
1674  UseArgs_false,
1675  Protected_true},
1676  {"keyOutfitShortcut29",
1677  addKey(SDLK_a),
1678  emptyKey,
1680  &Actions::outfit,
1681  InputAction::NO_VALUE, 100,
1683  "",
1684  UseArgs_false,
1685  Protected_true},
1686  {"keyOutfitShortcut30",
1687  addKey(SDLK_s),
1688  emptyKey,
1690  &Actions::outfit,
1691  InputAction::NO_VALUE, 100,
1693  "",
1694  UseArgs_false,
1695  Protected_true},
1696  {"keyOutfitShortcut31",
1697  addKey(SDLK_d),
1698  emptyKey,
1700  &Actions::outfit,
1701  InputAction::NO_VALUE, 100,
1703  "",
1704  UseArgs_false,
1705  Protected_true},
1706  {"keyOutfitShortcut32",
1707  addKey(SDLK_f),
1708  emptyKey,
1710  &Actions::outfit,
1711  InputAction::NO_VALUE, 100,
1713  "",
1714  UseArgs_false,
1715  Protected_true},
1716  {"keyOutfitShortcut33",
1717  addKey(SDLK_g),
1718  emptyKey,
1720  &Actions::outfit,
1721  InputAction::NO_VALUE, 100,
1723  "",
1724  UseArgs_false,
1725  Protected_true},
1726  {"keyOutfitShortcut34",
1727  addKey(SDLK_h),
1728  emptyKey,
1730  &Actions::outfit,
1731  InputAction::NO_VALUE, 100,
1733  "",
1734  UseArgs_false,
1735  Protected_true},
1736  {"keyOutfitShortcut35",
1737  addKey(SDLK_j),
1738  emptyKey,
1740  &Actions::outfit,
1741  InputAction::NO_VALUE, 100,
1743  "",
1744  UseArgs_false,
1745  Protected_true},
1746  {"keyOutfitShortcut36",
1747  addKey(SDLK_k),
1748  emptyKey,
1750  &Actions::outfit,
1751  InputAction::NO_VALUE, 100,
1753  "",
1754  UseArgs_false,
1755  Protected_true},
1756  {"keyOutfitShortcut37",
1757  addKey(SDLK_l),
1758  emptyKey,
1760  &Actions::outfit,
1761  InputAction::NO_VALUE, 100,
1763  "",
1764  UseArgs_false,
1765  Protected_true},
1766  {"keyOutfitShortcut38",
1767  addKey(SDLK_SEMICOLON),
1768  emptyKey,
1770  &Actions::outfit,
1771  InputAction::NO_VALUE, 100,
1773  "",
1774  UseArgs_false,
1775  Protected_true},
1776  {"keyOutfitShortcut39",
1777  addKey(SDLK_QUOTE),
1778  emptyKey,
1780  &Actions::outfit,
1781  InputAction::NO_VALUE, 100,
1783  "",
1784  UseArgs_false,
1785  Protected_true},
1786  {"keyOutfitShortcut40",
1787  addKey(SDLK_z),
1788  emptyKey,
1790  &Actions::outfit,
1791  InputAction::NO_VALUE, 100,
1793  "",
1794  UseArgs_false,
1795  Protected_true},
1796  {"keyOutfitShortcut41",
1797  addKey(SDLK_x),
1798  emptyKey,
1800  &Actions::outfit,
1801  InputAction::NO_VALUE, 100,
1803  "",
1804  UseArgs_false,
1805  Protected_true},
1806  {"keyOutfitShortcut42",
1807  addKey(SDLK_c),
1808  emptyKey,
1810  &Actions::outfit,
1811  InputAction::NO_VALUE, 100,
1813  "",
1814  UseArgs_false,
1815  Protected_true},
1816  {"keyOutfitShortcut43",
1817  addKey(SDLK_v),
1818  emptyKey,
1820  &Actions::outfit,
1821  InputAction::NO_VALUE, 100,
1823  "",
1824  UseArgs_false,
1825  Protected_true},
1826  {"keyOutfitShortcut44",
1827  addKey(SDLK_b),
1828  emptyKey,
1830  &Actions::outfit,
1831  InputAction::NO_VALUE, 100,
1833  "",
1834  UseArgs_false,
1835  Protected_true},
1836  {"keyOutfitShortcut45",
1837  addKey(SDLK_n),
1838  emptyKey,
1840  &Actions::outfit,
1841  InputAction::NO_VALUE, 100,
1843  "",
1844  UseArgs_false,
1845  Protected_true},
1846  {"keyOutfitShortcut46",
1847  addKey(SDLK_m),
1848  emptyKey,
1850  &Actions::outfit,
1851  InputAction::NO_VALUE, 100,
1853  "",
1854  UseArgs_false,
1855  Protected_true},
1856  {"keyOutfitShortcut47",
1857  addKey(SDLK_COMMA),
1858  emptyKey,
1860  &Actions::outfit,
1861  InputAction::NO_VALUE, 100,
1863  "",
1864  UseArgs_false,
1865  Protected_true},
1866  {"keyOutfitShortcut48",
1867  addKey(SDLK_PERIOD),
1868  emptyKey,
1870  &Actions::outfit,
1871  InputAction::NO_VALUE, 100,
1873  "",
1874  UseArgs_false,
1875  Protected_true},
1876  {"keyMoveToPointShortcut1",
1877  addKey(SDLK_1),
1878  emptyKey,
1883  "",
1884  UseArgs_false,
1885  Protected_true},
1886  {"keyMoveToPointShortcut2",
1887  addKey(SDLK_2),
1888  emptyKey,
1893  "",
1894  UseArgs_false,
1895  Protected_true},
1896  {"keyMoveToPointShortcut3",
1897  addKey(SDLK_3),
1898  emptyKey,
1903  "",
1904  UseArgs_false,
1905  Protected_true},
1906  {"keyMoveToPointShortcut4",
1907  addKey(SDLK_4),
1908  emptyKey,
1913  "",
1914  UseArgs_false,
1915  Protected_true},
1916  {"keyMoveToPointShortcut5",
1917  addKey(SDLK_5),
1918  emptyKey,
1923  "",
1924  UseArgs_false,
1925  Protected_true},
1926  {"keyMoveToPointShortcut6",
1927  addKey(SDLK_6),
1928  emptyKey,
1933  "",
1934  UseArgs_false,
1935  Protected_true},
1936  {"keyMoveToPointShortcut7",
1937  addKey(SDLK_7),
1938  emptyKey,
1943  "",
1944  UseArgs_false,
1945  Protected_true},
1946  {"keyMoveToPointShortcut8",
1947  addKey(SDLK_8),
1948  emptyKey,
1953  "",
1954  UseArgs_false,
1955  Protected_true},
1956  {"keyMoveToPointShortcut9",
1957  addKey(SDLK_9),
1958  emptyKey,
1963  "",
1964  UseArgs_false,
1965  Protected_true},
1966  {"keyMoveToPointShortcut10",
1967  addKey(SDLK_0),
1968  emptyKey,
1973  "",
1974  UseArgs_false,
1975  Protected_true},
1976  {"keyMoveToPointShortcut11",
1977  addKey(SDLK_MINUS),
1978  emptyKey,
1983  "",
1984  UseArgs_false,
1985  Protected_true},
1986  {"keyMoveToPointShortcut12",
1987  addKey(SDLK_EQUALS),
1988  emptyKey,
1993  "",
1994  UseArgs_false,
1995  Protected_true},
1996  {"keyMoveToPointShortcut13",
1997  addKey(SDLK_BACKSPACE),
1998  emptyKey,
2003  "",
2004  UseArgs_false,
2005  Protected_true},
2006  {"keyMoveToPointShortcut14",
2007  addKey(SDLK_INSERT),
2008  emptyKey,
2013  "",
2014  UseArgs_false,
2015  Protected_true},
2016  {"keyMoveToPointShortcut15",
2017  addKey(SDLK_HOME),
2018  emptyKey,
2023  "",
2024  UseArgs_false,
2025  Protected_true},
2026  {"keyMoveToPointShortcut16",
2027  addKey(SDLK_q),
2028  emptyKey,
2033  "",
2034  UseArgs_false,
2035  Protected_true},
2036  {"keyMoveToPointShortcut17",
2037  addKey(SDLK_w),
2038  emptyKey,
2043  "",
2044  UseArgs_false,
2045  Protected_true},
2046  {"keyMoveToPointShortcut18",
2047  addKey(SDLK_e),
2048  emptyKey,
2053  "",
2054  UseArgs_false,
2055  Protected_true},
2056  {"keyMoveToPointShortcut19",
2057  addKey(SDLK_r),
2058  emptyKey,
2063  "",
2064  UseArgs_false,
2065  Protected_true},
2066  {"keyMoveToPointShortcut20",
2067  addKey(SDLK_t),
2068  emptyKey,
2073  "",
2074  UseArgs_false,
2075  Protected_true},
2076  {"keyMoveToPointShortcut21",
2077  addKey(SDLK_y),
2078  emptyKey,
2083  "",
2084  UseArgs_false,
2085  Protected_true},
2086  {"keyMoveToPointShortcut22",
2087  addKey(SDLK_u),
2088  emptyKey,
2093  "",
2094  UseArgs_false,
2095  Protected_true},
2096  {"keyMoveToPointShortcut23",
2097  addKey(SDLK_i),
2098  emptyKey,
2103  "",
2104  UseArgs_false,
2105  Protected_true},
2106  {"keyMoveToPointShortcut24",
2107  addKey(SDLK_o),
2108  emptyKey,
2113  "",
2114  UseArgs_false,
2115  Protected_true},
2116  {"keyMoveToPointShortcut25",
2117  addKey(SDLK_p),
2118  emptyKey,
2123  "",
2124  UseArgs_false,
2125  Protected_true},
2126  {"keyMoveToPointShortcut26",
2127  addKey(SDLK_LEFTBRACKET),
2128  emptyKey,
2133  "",
2134  UseArgs_false,
2135  Protected_true},
2136  {"keyMoveToPointShortcut27",
2137  addKey(SDLK_RIGHTBRACKET),
2138  emptyKey,
2143  "",
2144  UseArgs_false,
2145  Protected_true},
2146  {"keyMoveToPointShortcut28",
2147  addKey(SDLK_BACKSLASH),
2148  emptyKey,
2153  "",
2154  UseArgs_false,
2155  Protected_true},
2156  {"keyMoveToPointShortcut29",
2157  addKey(SDLK_a),
2158  emptyKey,
2163  "",
2164  UseArgs_false,
2165  Protected_true},
2166  {"keyMoveToPointShortcut30",
2167  addKey(SDLK_s),
2168  emptyKey,
2173  "",
2174  UseArgs_false,
2175  Protected_true},
2176  {"keyMoveToPointShortcut31",
2177  addKey(SDLK_d),
2178  emptyKey,
2183  "",
2184  UseArgs_false,
2185  Protected_true},
2186  {"keyMoveToPointShortcut32",
2187  addKey(SDLK_f),
2188  emptyKey,
2193  "",
2194  UseArgs_false,
2195  Protected_true},
2196  {"keyMoveToPointShortcut33",
2197  addKey(SDLK_g),
2198  emptyKey,
2203  "",
2204  UseArgs_false,
2205  Protected_true},
2206  {"keyMoveToPointShortcut34",
2207  addKey(SDLK_h),
2208  emptyKey,
2213  "",
2214  UseArgs_false,
2215  Protected_true},
2216  {"keyMoveToPointShortcut35",
2217  addKey(SDLK_j),
2218  emptyKey,
2223  "",
2224  UseArgs_false,
2225  Protected_true},
2226  {"keyMoveToPointShortcut36",
2227  addKey(SDLK_k),
2228  emptyKey,
2233  "",
2234  UseArgs_false,
2235  Protected_true},
2236  {"keyMoveToPointShortcut37",
2237  addKey(SDLK_l),
2238  emptyKey,
2243  "",
2244  UseArgs_false,
2245  Protected_true},
2246  {"keyMoveToPointShortcut38",
2247  addKey(SDLK_SEMICOLON),
2248  emptyKey,
2253  "",
2254  UseArgs_false,
2255  Protected_true},
2256  {"keyMoveToPointShortcut39",
2257  addKey(SDLK_QUOTE),
2258  emptyKey,
2263  "",
2264  UseArgs_false,
2265  Protected_true},
2266  {"keyMoveToPointShortcut40",
2267  addKey(SDLK_z),
2268  emptyKey,
2273  "",
2274  UseArgs_false,
2275  Protected_true},
2276  {"keyMoveToPointShortcut41",
2277  addKey(SDLK_x),
2278  emptyKey,
2283  "",
2284  UseArgs_false,
2285  Protected_true},
2286  {"keyMoveToPointShortcut42",
2287  addKey(SDLK_c),
2288  emptyKey,
2293  "",
2294  UseArgs_false,
2295  Protected_true},
2296  {"keyMoveToPointShortcut43",
2297  addKey(SDLK_v),
2298  emptyKey,
2303  "",
2304  UseArgs_false,
2305  Protected_true},
2306  {"keyMoveToPointShortcut44",
2307  addKey(SDLK_b),
2308  emptyKey,
2313  "",
2314  UseArgs_false,
2315  Protected_true},
2316  {"keyMoveToPointShortcut45",
2317  addKey(SDLK_n),
2318  emptyKey,
2323  "",
2324  UseArgs_false,
2325  Protected_true},
2326  {"keyMoveToPointShortcut46",
2327  addKey(SDLK_m),
2328  emptyKey,
2333  "",
2334  UseArgs_false,
2335  Protected_true},
2336  {"keyMoveToPointShortcut47",
2337  addKey(SDLK_COMMA),
2338  emptyKey,
2343  "",
2344  UseArgs_false,
2345  Protected_true},
2346  {"keyMoveToPointShortcut48",
2347  addKey(SDLK_PERIOD),
2348  emptyKey,
2353  "",
2354  UseArgs_false,
2355  Protected_true},
2356  {"keyChat",
2357  addKey(SDLK_RETURN),
2358 #ifdef __SWITCH__
2359  joystickButton(10),
2360 #else
2361  emptyKey,
2362 #endif
2370  "chat",
2371  UseArgs_false,
2372  Protected_false},
2373  {"keyChatScrollUp",
2374  addKey(SDLK_PAGEUP),
2375  emptyKey,
2382  "chatscrollup",
2383  UseArgs_false,
2384  Protected_false},
2385  {"keyChatScrollDown",
2386  addKey(SDLK_PAGEDOWN),
2387  emptyKey,
2394  "chatscrolldown",
2395  UseArgs_false,
2396  Protected_false},
2397  {"keyChatPrevTab",
2398  addKey(SDLK_KP7),
2399  emptyKey,
2406  "prevtab",
2407  UseArgs_false,
2408  Protected_false},
2409  {"keyChatNextTab",
2410  addKey(SDLK_KP9),
2411  emptyKey,
2418  "nexttab",
2419  UseArgs_false,
2420  Protected_false},
2421  {"keyChatCloseTab",
2422  emptyKey,
2423  emptyKey,
2430  "close",
2431  UseArgs_false,
2432  Protected_false},
2433  {"keyChatPrevHistory",
2434  addKey(SDLK_KP7),
2435  emptyKey,
2437  nullptr,
2442  "",
2443  UseArgs_false,
2444  Protected_false},
2445  {"keyChatNextHistory",
2446  addKey(SDLK_KP9),
2447  emptyKey,
2449  nullptr,
2454  "",
2455  UseArgs_false,
2456  Protected_false},
2457  {"keyIgnoreInput1",
2458 #ifdef USE_SDL2
2459  addKey(SDLK_LGUI),
2460 #else // USE_SDL2
2461  addKey(SDLK_LSUPER),
2462 #endif // USE_SDL2
2463  emptyKey,
2466  InputAction::NO_VALUE, 500,
2468  "",
2469  UseArgs_false,
2470  Protected_true},
2471  {"keyIgnoreInput2",
2472 #ifdef USE_SDL2
2473  addKey(SDLK_RGUI),
2474 #else // USE_SDL2
2475  addKey(SDLK_RSUPER),
2476 #endif // USE_SDL2
2477  emptyKey,
2480  InputAction::NO_VALUE, 500,
2482  "",
2483  UseArgs_false,
2484  Protected_true},
2485  {"keyDirectUp",
2488  "directup|turnup",
2489  UseArgs_false,
2490  Protected_false},
2491  {"keyDirectDown",
2494  "directdown|turndown",
2495  UseArgs_false,
2496  Protected_false},
2497  {"keyDirectLeft",
2500  "directleft|turnleft",
2501  UseArgs_false,
2502  Protected_false},
2503  {"keyDirectRight",
2506  "directright|turnright",
2507  UseArgs_false,
2508  Protected_false},
2509  {"keyCrazyMoves",
2510  addKey(SDLK_SLASH),
2511  emptyKey,
2518  "",
2519  UseArgs_false,
2520  Protected_true},
2521  {"keyChangeCrazyMoveType",
2522  addKey(SDLK_BACKSLASH),
2523  emptyKey,
2531  "",
2532  UseArgs_false,
2533  Protected_true},
2534  {"keyQuickDrop",
2535  addKey(SDLK_y),
2536  emptyKey,
2543  "drop",
2544  UseArgs_false,
2545  Protected_true},
2546  {"keyQuickDropN",
2547  addKey(SDLK_u),
2548  emptyKey,
2555  "dropn",
2556  UseArgs_false,
2557  Protected_true},
2558  {"keySwitchQuickDrop",
2559  addKey(SDLK_i),
2560  emptyKey,
2567  "",
2568  UseArgs_false,
2569  Protected_true},
2570  {"keyMagicInma1",
2571  addKey(SDLK_c),
2572  emptyKey,
2574  &Actions::heal,
2579  "heal",
2580  UseArgs_true,
2581  Protected_false},
2582  {"keyMagicItenplz",
2583  addKey(SDLK_m),
2584  emptyKey,
2591  "itenplz",
2592  UseArgs_false,
2593  Protected_true},
2594  {"keyMagicAttack",
2595  addKey(SDLK_b),
2596  emptyKey,
2604  "magicattack",
2605  UseArgs_false,
2606  Protected_false},
2607  {"keySwitchMagicAttack",
2608  addKey(SDLK_COMMA),
2609  emptyKey,
2617  "",
2618  UseArgs_false,
2619  Protected_true},
2620  {"keySwitchPvpAttack",
2626  "",
2627  UseArgs_false,
2628  Protected_true},
2629  {"keyInvertDirection",
2635  "",
2636  UseArgs_false,
2637  Protected_false},
2638  {"keyChangeAttackWeaponType",
2639  addKey(SDLK_g),
2640  emptyKey,
2648  "",
2649  UseArgs_false,
2650  Protected_true},
2651  {"keyChangeAttackType",
2652  addKey(SDLK_END),
2653  emptyKey,
2661  "",
2662  UseArgs_false,
2663  Protected_true},
2664  {"keyChangeFollowMode",
2665  addKey(SDLK_KP1),
2666  emptyKey,
2674  "",
2675  UseArgs_false,
2676  Protected_true},
2677  {"keyChangeImitationMode",
2678  addKey(SDLK_KP4),
2679  emptyKey,
2687  "",
2688  UseArgs_false,
2689  Protected_true},
2690  {"keyDisableGameModifiers",
2691  addKey(SDLK_KP8),
2692  emptyKey,
2699  "",
2700  UseArgs_false,
2701  Protected_true},
2702  {"keyChangeAudio",
2703  addKey(SDLK_KP3),
2704  emptyKey,
2711  "audio",
2712  UseArgs_false,
2713  Protected_true},
2714  {"keyAway",
2715  addKey(SDLK_KP2),
2716  emptyKey,
2718  &Actions::away,
2723  "",
2724  UseArgs_false,
2725  Protected_false},
2726  {"keyRightClick",
2727  addKey(SDLK_TAB),
2728  emptyKey,
2737  "rightclick",
2738  UseArgs_false,
2739  Protected_false},
2740  {"keyCameraMode",
2741  addKey(SDLK_KP_PLUS),
2742  emptyKey,
2744  &Actions::camera,
2750  "",
2751  UseArgs_false,
2752  Protected_false},
2753  {"keyMod",
2754  emptyKey,
2755  emptyKey,
2756  0,
2757  nullptr,
2760  "",
2761  UseArgs_false,
2762  Protected_false},
2763  {"keyGUIUp",
2764  addKey(SDLK_UP),
2765  emptyKey,
2767  nullptr,
2770  "",
2771  UseArgs_false,
2772  Protected_false},
2773  {"keyGUIDown",
2774  addKey(SDLK_DOWN),
2775  emptyKey,
2777  nullptr,
2780  "",
2781  UseArgs_false,
2782  Protected_false},
2783  {"keyGUILeft",
2784  addKey(SDLK_LEFT),
2785  emptyKey,
2787  nullptr,
2790  "",
2791  UseArgs_false,
2792  Protected_false},
2793  {"keyGUIRight",
2794  addKey(SDLK_RIGHT),
2795  emptyKey,
2797  nullptr,
2800  "",
2801  UseArgs_false,
2802  Protected_false},
2803  {"keyGUISelect",
2804  addKey(SDLK_SPACE),
2805  emptyKey,
2807  nullptr,
2810  "",
2811  UseArgs_false,
2812  Protected_false},
2813  {"keyGUISelect2",
2814  addKey(SDLK_RETURN),
2815  emptyKey,
2817  nullptr,
2820  "",
2821  UseArgs_false,
2822  Protected_false},
2823  {"keyGUICancel",
2824  addKey(SDLK_ESCAPE),
2825 #if defined(USE_SDL2)
2826 #if defined(ANDROID)
2827  addKey(SDLK_AC_BACK),
2828 #elif defined(__SWITCH__)
2829  joystickButton(11),
2830 #else // defined(ANDROID)
2831  emptyKey,
2832 #endif // defined(ANDROID)
2833 #else // defined(USE_SDL2)
2834  emptyKey,
2835 #endif // defined(USE_SDL2)
2837  nullptr,
2840  "",
2841  UseArgs_false,
2842  Protected_false},
2843  {"keyGUIHome",
2844  addKey(SDLK_HOME),
2845  emptyKey,
2847  nullptr,
2850  "",
2851  UseArgs_false,
2852  Protected_false},
2853  {"keyGUIEnd",
2854  addKey(SDLK_END),
2855  emptyKey,
2857  nullptr,
2860  "",
2861  UseArgs_false,
2862  Protected_false},
2863  {"keyGUIDelete",
2864  addKey(SDLK_DELETE),
2865  emptyKey,
2867  nullptr,
2870  "",
2871  UseArgs_false,
2872  Protected_false},
2873  {"keyGUIBackSpace",
2874  addKey(SDLK_BACKSPACE),
2875  emptyKey,
2877  nullptr,
2880  "",
2881  UseArgs_false,
2882  Protected_false},
2883  {"keyGUITab",
2884  addKey(SDLK_TAB),
2885  emptyKey,
2887  nullptr,
2890  "",
2891  UseArgs_false,
2892  Protected_false},
2893  {"keyGUIPageUp",
2894  addKey(SDLK_PAGEUP),
2895  emptyKey,
2897  nullptr,
2900  "",
2901  UseArgs_false,
2902  Protected_false},
2903  {"keyGUIPageDown",
2904  addKey(SDLK_PAGEDOWN),
2905  emptyKey,
2907  nullptr,
2910  "",
2911  UseArgs_false,
2912  Protected_false},
2913  {"keyGUIInsert",
2914  addKey(SDLK_INSERT),
2915  emptyKey,
2917  nullptr,
2920  "",
2921  UseArgs_false,
2922  Protected_false},
2923  {"keyGUIMod",
2924  addKey(SDLK_LSHIFT),
2925  addKey(SDLK_RSHIFT),
2927  nullptr,
2930  "",
2931  UseArgs_false,
2932  Protected_false},
2933  {"keySafeVideo",
2934  addKey(SDLK_KP_MINUS),
2935  emptyKey,
2940  "",
2941  UseArgs_false,
2942  Protected_true},
2943  {"keyStopSit",
2944 #ifdef __SWITCH__
2945  emptyKey,
2946  joystickButton(1),
2950 #else
2952 #endif
2956  "sit2",
2957  UseArgs_false,
2958  Protected_false},
2959  {"keyShowKeyboard",
2962  "showkeyboard",
2963  UseArgs_false,
2964  Protected_false},
2965  {"keyShowWindows",
2970  "showwindows",
2971  UseArgs_false,
2972  Protected_false},
2973  {"keyChatMod",
2974  addKey(SDLK_LSHIFT),
2975  emptyKey,
2977  nullptr,
2982  "",
2983  UseArgs_false,
2984  Protected_false},
2985  {"keyMoveForward",
2988  "",
2989  UseArgs_false,
2990  Protected_false},
2991  {"keyGUICtrl",
2992  addKey(SDLK_LCTRL),
2993  addKey(SDLK_RCTRL),
2995  nullptr,
2998  "",
2999  UseArgs_false,
3000  Protected_false},
3001  {"keyGUIb",
3002  addKey(SDLK_b),
3003  emptyKey,
3005  nullptr,
3008  "",
3009  UseArgs_false,
3010  Protected_false},
3011  {"keyGUIc",
3012  addKey(SDLK_c),
3013  emptyKey,
3015  nullptr,
3018  "",
3019  UseArgs_false,
3020  Protected_false},
3021  {"keyGUId",
3022  addKey(SDLK_d),
3023  emptyKey,
3025  nullptr,
3028  "",
3029  UseArgs_false,
3030  Protected_false},
3031  {"keyGUIe",
3032  addKey(SDLK_e),
3033  emptyKey,
3035  nullptr,
3038  "",
3039  UseArgs_false,
3040  Protected_false},
3041  {"keyGUIf",
3042  addKey(SDLK_f),
3043  emptyKey,
3045  nullptr,
3048  "",
3049  UseArgs_false,
3050  Protected_false},
3051  {"keyGUIh",
3052  addKey(SDLK_h),
3053  emptyKey,
3055  nullptr,
3058  "",
3059  UseArgs_false,
3060  Protected_false},
3061  {"keyGUIk",
3062  addKey(SDLK_k),
3063  emptyKey,
3065  nullptr,
3068  "",
3069  UseArgs_false,
3070  Protected_false},
3071  {"keyGUIu",
3072  addKey(SDLK_u),
3073  emptyKey,
3075  nullptr,
3078  "",
3079  UseArgs_false,
3080  Protected_false},
3081  {"keyGUIv",
3082  addKey(SDLK_v),
3083  emptyKey,
3085  nullptr,
3088  "",
3089  UseArgs_false,
3090  Protected_false},
3091  {"keyGUIw",
3092  addKey(SDLK_w),
3093  emptyKey,
3095  nullptr,
3098  "",
3099  UseArgs_false,
3100  Protected_false},
3101  {"keyShortcutsPrevTab",
3102  emptyKey,
3103  emptyKey,
3110  "shortcutprevtab",
3111  UseArgs_false,
3112  Protected_false},
3113  {"keyShortcutsNextTab",
3114  emptyKey,
3115  emptyKey,
3122  "shortcutnexttab",
3123  UseArgs_false,
3124  Protected_false},
3125  {"keyCommandsPrevTab",
3126  emptyKey,
3127  emptyKey,
3134  "commandsprevtab",
3135  UseArgs_false,
3136  Protected_false},
3137  {"keyCommandsNextTab",
3138  emptyKey,
3139  emptyKey,
3146  "commandsnexttab",
3147  UseArgs_false,
3148  Protected_false},
3149  {"keyOpenTrade",
3154  "trade",
3155  UseArgs_false,
3156  Protected_false},
3157  {"keyGUIF1",
3158  addKey(SDLK_F1),
3159  emptyKey,
3161  nullptr,
3164  "",
3165  UseArgs_false,
3166  Protected_false},
3167  {"keyGUIF2",
3168  addKey(SDLK_F2),
3169  emptyKey,
3171  nullptr,
3174  "",
3175  UseArgs_false,
3176  Protected_false},
3177  {"keyGUIF3",
3178  addKey(SDLK_F3),
3179  emptyKey,
3181  nullptr,
3184  "",
3185  UseArgs_false,
3186  Protected_false},
3187  {"keyGUIF4",
3188  addKey(SDLK_F4),
3189  emptyKey,
3191  nullptr,
3194  "",
3195  UseArgs_false,
3196  Protected_false},
3197  {"keyGUIF5",
3198  addKey(SDLK_F5),
3199  emptyKey,
3201  nullptr,
3204  "",
3205  UseArgs_false,
3206  Protected_false},
3207  {"keyGUIF6",
3208  addKey(SDLK_F6),
3209  emptyKey,
3211  nullptr,
3214  "",
3215  UseArgs_false,
3216  Protected_false},
3217  {"keyGUIF7",
3218  addKey(SDLK_F7),
3219  emptyKey,
3221  nullptr,
3224  "",
3225  UseArgs_false,
3226  Protected_false},
3227  {"keyGUIF8",
3228  addKey(SDLK_F8),
3229  emptyKey,
3231  nullptr,
3234  "",
3235  UseArgs_false,
3236  Protected_false},
3237  {"keyGUIF9",
3238  addKey(SDLK_F9),
3239  emptyKey,
3241  nullptr,
3244  "",
3245  UseArgs_false,
3246  Protected_false},
3247  {"keyGUIF10",
3248  addKey(SDLK_F10),
3249  emptyKey,
3251  nullptr,
3254  "",
3255  UseArgs_false,
3256  Protected_false},
3257  {"keyGUIF11",
3258  addKey(SDLK_F11),
3259  emptyKey,
3261  nullptr,
3264  "",
3265  UseArgs_false,
3266  Protected_false},
3267  {"keyGUIF12",
3268  addKey(SDLK_F12),
3269  emptyKey,
3271  nullptr,
3274  "",
3275  UseArgs_false,
3276  Protected_false},
3277  {"keyWindowAbout",
3278  emptyKey,
3279  emptyKey,
3284  "about",
3285  UseArgs_false,
3286  Protected_false},
3287  {"keyWindowUpdater",
3288  emptyKey,
3289  emptyKey,
3294  "updater",
3295  UseArgs_false,
3296  Protected_false},
3297  {"keyTargetClosestMonster",
3298  emptyKey,
3299  emptyKey,
3307  "targetclosestmonster",
3308  UseArgs_false,
3309  Protected_false},
3310  {"keyChatCloseAllTabs",
3311  emptyKey,
3312  emptyKey,
3317  "closeall",
3318  UseArgs_false,
3319  Protected_true},
3320  {"keyChatIgnoreAllWhispers",
3321  emptyKey,
3322  emptyKey,
3327  "ignoreallwhispers",
3328  UseArgs_false,
3329  Protected_true},
3330  {"keyChatAnnounce",
3331  emptyKey,
3332  emptyKey,
3337  "announce",
3338  UseArgs_true,
3339  Protected_true},
3340  {"keyIpcToggle",
3343  "ipctoggle",
3344  UseArgs_false,
3345  Protected_true},
3346  {"keyWhere",
3349  "where",
3350  UseArgs_false,
3351  Protected_false},
3352  {"keyWho",
3355  "who",
3356  UseArgs_false,
3357  Protected_false},
3358  {"keyWhisper",
3361  "w|whisper|msg",
3362  UseArgs_true,
3363  Protected_true},
3364  {"keyQuery",
3367  "q|query|j|join",
3368  UseArgs_true,
3369  Protected_false},
3370  {"keyClearChatTab",
3373  "clear",
3374  UseArgs_false,
3375  Protected_false},
3376  {"keyIgnore",
3379  "ignore",
3380  UseArgs_true,
3381  Protected_true},
3382  {"keyUnignore",
3385  "unignore",
3386  UseArgs_true,
3387  Protected_true},
3388  {"keyFriend",
3391  "friend|befriend",
3392  UseArgs_true,
3393  Protected_true},
3394  {"keyDisregard",
3397  "disregard",
3398  UseArgs_true,
3399  Protected_true},
3400  {"keyNeutral",
3403  "neutral",
3404  UseArgs_true,
3405  Protected_true},
3406  {"keyBlacklist",
3409  "blacklist",
3410  UseArgs_true,
3411  Protected_true},
3412  {"keyEnemy",
3415  "enemy",
3416  UseArgs_true,
3417  Protected_true},
3418  {"keyErase",
3421  "erase",
3422  UseArgs_true,
3423  Protected_true},
3424  {"keyCleanGraphics",
3427  "cleangraphics",
3428  UseArgs_false,
3429  Protected_false},
3430  {"keyCleanFonts",
3433  "cleanfonts",
3434  UseArgs_false,
3435  Protected_false},
3436  {"keyCreateParty",
3439  "createparty",
3440  UseArgs_true,
3441  Protected_true},
3442  {"keyCreateGuild",
3445  "createguild",
3446  UseArgs_true,
3447  Protected_true},
3448  {"keyParty",
3451  "party",
3452  UseArgs_true,
3453  Protected_true},
3454  {"keyMe",
3457  "me",
3458  UseArgs_true,
3459  Protected_true},
3460  {"keyToggle",
3463  "toggle",
3464  UseArgs_false,
3465  Protected_false},
3466  {"keyPresent",
3469  "present",
3470  UseArgs_false,
3471  Protected_false},
3472  {"keyPrintAll",
3475  "all",
3476  UseArgs_false,
3477  Protected_true},
3478  {"keyMove",
3481  "move",
3482  UseArgs_true,
3483  Protected_false},
3484  {"keySetTarget",
3487  "target",
3488  UseArgs_true,
3489  Protected_false},
3490  {"keyAttackHuman",
3496  "atkhuman",
3497  UseArgs_false,
3498  Protected_false},
3499  {"keyOutfit",
3502  "outfit",
3503  UseArgs_true,
3504  Protected_true},
3505  {"keyEmote",
3508  "emote",
3509  UseArgs_true,
3510  Protected_false},
3511  {"keyEmotePet",
3514  "emotepet",
3515  UseArgs_true,
3516  Protected_false},
3517  {"keyAwayMessage",
3520  "away",
3521  UseArgs_true,
3522  Protected_true},
3523  {"keyPseudoAway",
3526  "pseudoaway",
3527  UseArgs_true,
3528  Protected_true},
3529  {"keyFollow",
3532  "follow",
3533  UseArgs_true,
3534  Protected_false},
3535  {"keyNavigate",
3538  "navigate",
3539  UseArgs_true,
3540  Protected_false},
3541  {"keyImitation",
3544  "imitation",
3545  UseArgs_true,
3546  Protected_false},
3547  {"keySendMail",
3550  "sendmail|mailsend|mailto",
3551  UseArgs_true,
3552  Protected_true},
3553  {"keyTradeCommand",
3556  "trade",
3557  UseArgs_true,
3558  Protected_false},
3559  {"keyPriceLoad",
3562  "priceload",
3563  UseArgs_false,
3564  Protected_true},
3565  {"keyPriceSave",
3568  "pricesave",
3569  UseArgs_false,
3570  Protected_true},
3571  {"keyCacheInfo",
3574  "cacheinfo",
3575  UseArgs_false,
3576  Protected_true},
3577  {"keyDisconnect",
3580  "disconnect",
3581  UseArgs_false,
3582  Protected_true},
3583  {"keyUndress",
3586  "undress",
3587  UseArgs_true,
3588  Protected_false},
3589  {"keyDirs",
3592  "dirs",
3593  UseArgs_false,
3594  Protected_false},
3595  {"keyInfo",
3598  "info",
3599  UseArgs_false,
3600  Protected_false},
3601  {"keyWait",
3604  "wait",
3605  UseArgs_true,
3606  Protected_true},
3607  {"keyUptime",
3610  "uptime",
3611  UseArgs_false,
3612  Protected_false},
3613  {"keyAddPriorityAttack",
3616  "addpriorityattack",
3617  UseArgs_true,
3618  Protected_true},
3619  {"keyAddAttack",
3622  "addattack",
3623  UseArgs_true,
3624  Protected_true},
3625  {"keyRemoveAttack",
3628  "removeattack|removeignoreattack",
3629  UseArgs_true,
3630  Protected_true},
3631  {"keyAddIgnoreAttack",
3634  "addignoreattack",
3635  UseArgs_true,
3636  Protected_true},
3637  {"keyDump",
3640  "dump",
3641  UseArgs_false,
3642  Protected_true},
3643  {"keyServerIgnoreAll",
3646  "serverignoreall",
3647  UseArgs_false,
3648  Protected_true},
3649  {"keyServerUnIgnoreAll",
3652  "serverunignoreall",
3653  UseArgs_false,
3654  Protected_true},
3655  {"keySetDrop",
3658  "setdrop",
3659  UseArgs_true,
3660  Protected_false},
3661  {"keyError",
3664  "error",
3665  UseArgs_false,
3666  Protected_true},
3667  {"keyDumpg",
3670  "dumpg",
3671  UseArgs_false,
3672  Protected_true},
3673  {"keyDumpe",
3676  "dumpe",
3677  UseArgs_false,
3678  Protected_true},
3679  {"keyDumpt",
3682  "dumpt",
3683  UseArgs_false,
3684  Protected_true},
3685  {"keyDumpOGL",
3688  "dumpogl",
3689  UseArgs_false,
3690  Protected_true},
3691  {"keyDumpGL",
3694  "dumpgl",
3695  UseArgs_false,
3696  Protected_true},
3697  {"keyDumpMods",
3700  "dumpMods",
3701  UseArgs_false,
3702  Protected_false},
3703  {"keyUrl",
3706  "url",
3707  UseArgs_true,
3708  Protected_true},
3709  {"keyOpenUrl",
3712  "open",
3713  UseArgs_true,
3714  Protected_true},
3715  {"keyExecute",
3718  "execute",
3719  UseArgs_true,
3720  Protected_true},
3721  {"keyTestSdlFont",
3722  emptyKey,
3723  emptyKey,
3725 #if defined USE_OPENGL && defined DEBUG_SDLFONT
3726  &Actions::testSdlFont,
3727 #else // defined USE_OPENGL && defined DEBUG_SDLFONT
3728  nullptr,
3729 #endif // defined USE_OPENGL && defined DEBUG_SDLFONT
3732 #if defined USE_OPENGL && defined DEBUG_SDLFONT
3733  "testsdlfont",
3734 #else // defined USE_OPENGL && defined DEBUG_SDLFONT
3735  "",
3736 #endif // defined USE_OPENGL && defined DEBUG_SDLFONT
3737  UseArgs_false,
3738  Protected_true},
3739  {"keyEnableHightlight",
3742  "enablehighlight",
3743  UseArgs_false,
3744  Protected_true},
3745  {"keyDisableHightlight",
3748  "disablehighlight",
3749  UseArgs_false,
3750  Protected_true},
3751  {"keyDontRemoveName",
3754  "dontremovename",
3755  UseArgs_false,
3756  Protected_true},
3757  {"keyRemoveName",
3760  "removename",
3761  UseArgs_false,
3762  Protected_true},
3763  {"keyDisableAway",
3766  "disableaway",
3767  UseArgs_false,
3768  Protected_true},
3769  {"keyEnableAway",
3772  "enableaway",
3773  UseArgs_false,
3774  Protected_true},
3775  {"keyTestParticle",
3778  "testparticle",
3779  UseArgs_true,
3780  Protected_false},
3781  {"keyCreateItems",
3784  "createitems",
3785  UseArgs_false,
3786  Protected_false},
3787  {"keyTalkRaw",
3790  "talkraw",
3791  UseArgs_true,
3792  Protected_true},
3793  {"keyTalkPet",
3796  "talkpet",
3797  UseArgs_true,
3798  Protected_true},
3799  {"keyUploadConfig",
3802  "uploadconfig",
3803  UseArgs_false,
3804  Protected_true},
3805  {"keyUploadServerConfig",
3808  "uploadserverconfig",
3809  UseArgs_false,
3810  Protected_true},
3811  {"keyUploadLog",
3814  "uploadlog",
3815  UseArgs_false,
3816  Protected_true},
3817  {"keyGm",
3820  "gm",
3821  UseArgs_true,
3822  Protected_true},
3823  {"keyHack",
3826  "hack",
3827  UseArgs_true,
3828  Protected_true},
3829  {"keyDebugSpawn",
3832  "debugspawn",
3833  UseArgs_true,
3834  Protected_true},
3835  {"keyPetSmilie",
3836  defaultAction(nullptr),
3840  "",
3841  UseArgs_false,
3842  Protected_false},
3843  {"keyPetEmoteShortcut1",
3844  addKey(SDLK_1),
3845  emptyKey,
3850  "",
3851  UseArgs_false,
3852  Protected_false},
3853  {"keyPetEmoteShortcut2",
3854  addKey(SDLK_2),
3855  emptyKey,
3860  "",
3861  UseArgs_false,
3862  Protected_false},
3863  {"keyPetEmoteShortcut3",
3864  addKey(SDLK_3),
3865  emptyKey,
3870  "",
3871  UseArgs_false,
3872  Protected_false},
3873  {"keyPetEmoteShortcut4",
3874  addKey(SDLK_4),
3875  emptyKey,
3880  "",
3881  UseArgs_false,
3882  Protected_false},
3883  {"keyPetEmoteShortcut5",
3884  addKey(SDLK_5),
3885  emptyKey,
3890  "",
3891  UseArgs_false,
3892  Protected_false},
3893  {"keyPetEmoteShortcut6",
3894  addKey(SDLK_6),
3895  emptyKey,
3900  "",
3901  UseArgs_false,
3902  Protected_false},
3903  {"keyPetEmoteShortcut7",
3904  addKey(SDLK_7),
3905  emptyKey,
3910  "",
3911  UseArgs_false,
3912  Protected_false},
3913  {"keyPetEmoteShortcut8",
3914  addKey(SDLK_8),
3915  emptyKey,
3920  "",
3921  UseArgs_false,
3922  Protected_false},
3923  {"keyPetEmoteShortcut9",
3924  addKey(SDLK_9),
3925  emptyKey,
3930  "",
3931  UseArgs_false,
3932  Protected_false},
3933  {"keyPetEmoteShortcut10",
3934  addKey(SDLK_0),
3935  emptyKey,
3940  "",
3941  UseArgs_false,
3942  Protected_false},
3943  {"keyPetEmoteShortcut11",
3944  addKey(SDLK_MINUS),
3945  emptyKey,
3950  "",
3951  UseArgs_false,
3952  Protected_false},
3953  {"keyPetEmoteShortcut12",
3954  addKey(SDLK_EQUALS),
3955  emptyKey,
3960  "",
3961  UseArgs_false,
3962  Protected_false},
3963  {"keyPetEmoteShortcut13",
3964  addKey(SDLK_BACKSPACE),
3965  emptyKey,
3970  "",
3971  UseArgs_false,
3972  Protected_false},
3973  {"keyPetEmoteShortcut14",
3974  addKey(SDLK_INSERT),
3975  emptyKey,
3980  "",
3981  UseArgs_false,
3982  Protected_false},
3983  {"keyPetEmoteShortcut15",
3984  addKey(SDLK_HOME),
3985  emptyKey,
3990  "",
3991  UseArgs_false,
3992  Protected_false},
3993  {"keyPetEmoteShortcut16",
3994  addKey(SDLK_q),
3995  emptyKey,
4000  "",
4001  UseArgs_false,
4002  Protected_false},
4003  {"keyPetEmoteShortcut17",
4004  addKey(SDLK_w),
4005  emptyKey,
4010  "",
4011  UseArgs_false,
4012  Protected_false},
4013  {"keyPetEmoteShortcut18",
4014  addKey(SDLK_e),
4015  emptyKey,
4020  "",
4021  UseArgs_false,
4022  Protected_false},
4023  {"keyPetEmoteShortcut19",
4024  addKey(SDLK_r),
4025  emptyKey,
4030  "",
4031  UseArgs_false,
4032  Protected_false},
4033  {"keyPetEmoteShortcut20",
4034  addKey(SDLK_t),
4035  emptyKey,
4040  "",
4041  UseArgs_false,
4042  Protected_false},
4043  {"keyPetEmoteShortcut21",
4044  addKey(SDLK_y),
4045  emptyKey,
4050  "",
4051  UseArgs_false,
4052  Protected_false},
4053  {"keyPetEmoteShortcut22",
4054  addKey(SDLK_u),
4055  emptyKey,
4060  "",
4061  UseArgs_false,
4062  Protected_false},
4063  {"keyPetEmoteShortcut23",
4064  addKey(SDLK_i),
4065  emptyKey,
4070  "",
4071  UseArgs_false,
4072  Protected_false},
4073  {"keyPetEmoteShortcut24",
4074  addKey(SDLK_o),
4075  emptyKey,
4080  "",
4081  UseArgs_false,
4082  Protected_false},
4083  {"keyPetEmoteShortcut25",
4084  addKey(SDLK_p),
4085  emptyKey,
4090  "",
4091  UseArgs_false,
4092  Protected_false},
4093  {"keyPetEmoteShortcut26",
4094  addKey(SDLK_LEFTBRACKET),
4095  emptyKey,
4100  "",
4101  UseArgs_false,
4102  Protected_false},
4103  {"keyPetEmoteShortcut27",
4104  addKey(SDLK_RIGHTBRACKET),
4105  emptyKey,
4110  "",
4111  UseArgs_false,
4112  Protected_false},
4113  {"keyPetEmoteShortcut28",
4114  addKey(SDLK_BACKSLASH),
4115  emptyKey,
4120  "",
4121  UseArgs_false,
4122  Protected_false},
4123  {"keyPetEmoteShortcut29",
4124  addKey(SDLK_a),
4125  emptyKey,
4130  "",
4131  UseArgs_false,
4132  Protected_false},
4133  {"keyPetEmoteShortcut30",
4134  addKey(SDLK_s),
4135  emptyKey,
4140  "",
4141  UseArgs_false,
4142  Protected_false},
4143  {"keyPetEmoteShortcut31",
4144  addKey(SDLK_d),
4145  emptyKey,
4150  "",
4151  UseArgs_false,
4152  Protected_false},
4153  {"keyPetEmoteShortcut32",
4154  addKey(SDLK_f),
4155  emptyKey,
4160  "",
4161  UseArgs_false,
4162  Protected_false},
4163  {"keyPetEmoteShortcut33",
4164  addKey(SDLK_g),
4165  emptyKey,
4170  "",
4171  UseArgs_false,
4172  Protected_false},
4173  {"keyPetEmoteShortcut34",
4174  addKey(SDLK_h),
4175  emptyKey,
4180  "",
4181  UseArgs_false,
4182  Protected_false},
4183  {"keyPetEmoteShortcut35",
4184  addKey(SDLK_j),
4185  emptyKey,
4190  "",
4191  UseArgs_false,
4192  Protected_false},
4193  {"keyPetEmoteShortcut36",
4194  addKey(SDLK_k),
4195  emptyKey,
4200  "",
4201  UseArgs_false,
4202  Protected_false},
4203  {"keyPetEmoteShortcut37",
4204  addKey(SDLK_l),
4205  emptyKey,
4210  "",
4211  UseArgs_false,
4212  Protected_false},
4213  {"keyPetEmoteShortcut38",
4214  addKey(SDLK_SEMICOLON),
4215  emptyKey,
4220  "",
4221  UseArgs_false,
4222  Protected_false},
4223  {"keyPetEmoteShortcut39",
4224  addKey(SDLK_QUOTE),
4225  emptyKey,
4230  "",
4231  UseArgs_false,
4232  Protected_false},
4233  {"keyPetEmoteShortcut40",
4234  addKey(SDLK_z),
4235  emptyKey,
4240  "",
4241  UseArgs_false,
4242  Protected_false},
4243  {"keyPetEmoteShortcut41",
4244  addKey(SDLK_x),
4245  emptyKey,
4250  "",
4251  UseArgs_false,
4252  Protected_false},
4253  {"keyPetEmoteShortcut42",
4254  addKey(SDLK_c),
4255  emptyKey,
4260  "",
4261  UseArgs_false,
4262  Protected_false},
4263  {"keyPetEmoteShortcut43",
4264  addKey(SDLK_v),
4265  emptyKey,
4270  "",
4271  UseArgs_false,
4272  Protected_false},
4273  {"keyPetEmoteShortcut44",
4274  addKey(SDLK_b),
4275  emptyKey,
4280  "",
4281  UseArgs_false,
4282  Protected_false},
4283  {"keyPetEmoteShortcut45",
4284  addKey(SDLK_n),
4285  emptyKey,
4290  "",
4291  UseArgs_false,
4292  Protected_false},
4293  {"keyPetEmoteShortcut46",
4294  addKey(SDLK_m),
4295  emptyKey,
4300  "",
4301  UseArgs_false,
4302  Protected_false},
4303  {"keyPetEmoteShortcut47",
4304  addKey(SDLK_COMMA),
4305  emptyKey,
4310  "",
4311  UseArgs_false,
4312  Protected_false},
4313  {"keyPetEmoteShortcut48",
4314  addKey(SDLK_PERIOD),
4315  emptyKey,
4320  "",
4321  UseArgs_false,
4322  Protected_false},
4323  {"keyCatchPet",
4326  "catchpet|catch|taming",
4327  UseArgs_true,
4328  Protected_true},
4329  {"keyChatServerIgnoreWhisper",
4330  emptyKey,
4331  emptyKey,
4336  "serverignore",
4337  UseArgs_false,
4338  Protected_true},
4339  {"keyChatServerUnIgnoreWhisper",
4340  emptyKey,
4341  emptyKey,
4346  "serverunignore",
4347  UseArgs_false,
4348  Protected_true},
4349  {"keyMercenaryFire",
4352  "mercenaryfire|firemercenary",
4353  UseArgs_false,
4354  Protected_true},
4355  {"keyTargetMercenary",
4360  "targetmercenary",
4361  UseArgs_false,
4362  Protected_false},
4363  {"keyTargetPet",
4368  "targetpet",
4369  UseArgs_false,
4370  Protected_false},
4371  {"keyPetSetName",
4374  "setpetname|petsetname",
4375  UseArgs_false,
4376  Protected_true},
4377  {"keyHomunculusSetName",
4380  "sethomunname|homunsetname|sethomunculusname|homunculussetname",
4381  UseArgs_false,
4382  Protected_true},
4383  {"keyHomunculusFire",
4386  "firehomunculus|homunculusfire|firehomun|homunfire",
4387  UseArgs_false,
4388  Protected_true},
4389  {"keyWindowBank",
4390  emptyKey,
4391  emptyKey,
4396  "bank|openbank",
4397  UseArgs_false,
4398  Protected_false},
4399  {"keyInventoryPrevTab",
4400  emptyKey,
4401  emptyKey,
4408  "previnvtab",
4409  UseArgs_false,
4410  Protected_false},
4411  {"keyInventoryNextTab",
4412  emptyKey,
4413  emptyKey,
4420  "nextinvtab",
4421  UseArgs_false,
4422  Protected_false},
4423  {"keyContextMenu",
4430  "contextmenu",
4431  UseArgs_false,
4432  Protected_false},
4433  {"keyBuy",
4436  "buy",
4437  UseArgs_false,
4438  Protected_false},
4439  {"keySell",
4442  "sell",
4443  UseArgs_false,
4444  Protected_false},
4445  {"keyWhisper2",
4448  "w2|whisper2|msg2",
4449  UseArgs_true,
4450  Protected_true},
4451  {"keyGuild",
4454  "guild",
4455  UseArgs_true,
4456  Protected_true},
4457  {"keyNuke",
4460  "nuke",
4461  UseArgs_true,
4462  Protected_true},
4463  {"keyUse",
4466  "use|useitem",
4467  UseArgs_true,
4468  Protected_true},
4469  {"keyChatAdd",
4472  "addchat|chatadd",
4473  UseArgs_true,
4474  Protected_true},
4475  {"keyWhisperText",
4478  "wt|whispertext|msgtext",
4479  UseArgs_true,
4480  Protected_true},
4481  {"keyNavigateTo",
4484  "navigateto",
4485  UseArgs_true,
4486  Protected_false},
4487  {"keyCameraMove",
4490  "movecamera|cameramove",
4491  UseArgs_true,
4492  Protected_false},
4493  {"keyDropItem",
4496  "dropitem",
4497  UseArgs_true,
4498  Protected_true},
4499  {"keyDropItemAll",
4502  "dropitemall",
4503  UseArgs_true,
4504  Protected_true},
4505  {"keyDropInv",
4508  "dropinv",
4509  UseArgs_true,
4510  Protected_true},
4511  {"keyDropInvAll",
4514  "dropinvall",
4515  UseArgs_true,
4516  Protected_true},
4517  {"keyUseInv",
4520  "useinv",
4521  UseArgs_true,
4522  Protected_true},
4523  {"keyInvToStorage",
4526  "invtostorage|invstorage",
4527  UseArgs_true,
4528  Protected_true},
4529  {"keyTradeAdd",
4532  "tradeadd|addtrade",
4533  UseArgs_true,
4534  Protected_true},
4535  {"keyStorageToInv",
4538  "storagetoinv|storageinv",
4539  UseArgs_true,
4540  Protected_true},
4541  {"keyProtectItem",
4544  "protectitem|itemprotect",
4545  UseArgs_true,
4546  Protected_true},
4547  {"keyUnProtectItem",
4550  "unprotectitem|itemunprotect",
4551  UseArgs_true,
4552  Protected_true},
4553  {"keyKickParty",
4556  "kickparty|partykick",
4557  UseArgs_true,
4558  Protected_true},
4559  {"keyAddText",
4562  "addtext|textadd",
4563  UseArgs_true,
4564  Protected_true},
4565  {"keyKick",
4568  "kick",
4569  UseArgs_true,
4570  Protected_true},
4571  {"keyLeaveParty",
4574  "leaveparty|partyleave",
4575  UseArgs_true,
4576  Protected_true},
4577  {"keyWarp",
4580  "warp",
4581  UseArgs_true,
4582  Protected_true},
4583  {"keyClearChat",
4586  "clearchat|chatclear",
4587  UseArgs_false,
4588  Protected_false},
4589  {"keyPetMoveUp",
4592  "petmoveup|moveuppet",
4593  UseArgs_false,
4594  Protected_false},
4595  {"keyPetMoveDown",
4598  "petmovedown|movedownpet",
4599  UseArgs_false,
4600  Protected_false},
4601  {"keyPetMoveLeft",
4604  "petmoveleft|moveleftpet",
4605  UseArgs_false,
4606  Protected_false},
4607  {"keyPetMoveRight",
4610  "petmoveright|moverightpet",
4611  UseArgs_false,
4612  Protected_false},
4613  {"keyPetDirectUp",
4616  "petdirectup|directuppet",
4617  UseArgs_false,
4618  Protected_false},
4619  {"keyPetDirectDown",
4622  "petdirectdown|directdownpet",
4623  UseArgs_false,
4624  Protected_false},
4625  {"keyPetDirectLeft",
4628  "petdirectleft|directleftpet",
4629  UseArgs_false,
4630  Protected_false},
4631  {"keyPetDirectRight",
4634  "petdirectright|directrightpet",
4635  UseArgs_false,
4636  Protected_false},
4637  {"keyPetAiStart",
4638  defaultAction(nullptr),
4640  "",
4641  UseArgs_false,
4642  Protected_false},
4643  {"keyPetAiStop",
4644  defaultAction(nullptr),
4646  "",
4647  UseArgs_false,
4648  Protected_false},
4649  {"keyGeneralTab",
4652  "generaltab|generalchattab|general",
4653  UseArgs_false,
4654  Protected_false},
4655  {"keyDebugTab",
4658  "debugtab|debugchattab",
4659  UseArgs_false,
4660  Protected_false},
4661  {"keyBattleTab",
4664  "battletab|battlechattab",
4665  UseArgs_false,
4666  Protected_false},
4667  {"keyTradeTab",
4670  "tradetab|tradechattab",
4671  UseArgs_false,
4672  Protected_false},
4673  {"keyLangTab",
4676  "langtab|langchattab",
4677  UseArgs_false,
4678  Protected_false},
4679  {"keyGmTab",
4682  "gmtab|gmchattab",
4683  UseArgs_false,
4684  Protected_false},
4685  {"keyPartyTab",
4688  "partytab|partychattab",
4689  UseArgs_false,
4690  Protected_false},
4691  {"keyGuildTab",
4694  "guildtab|guildchattab",
4695  UseArgs_false,
4696  Protected_false},
4697  {"keyDropClear",
4700  "cleardrops|cleardrop|cleardropwindow|dropclear|dropsclear",
4701  UseArgs_false,
4702  Protected_true},
4703  {"keyWindowCart",
4706  "cart|opencart",
4707  UseArgs_false,
4708  Protected_false},
4709  {"keyMagicHealMostDamaged",
4714  "healmd|saveass",
4715  UseArgs_false,
4716  Protected_false},
4717  {"keyPetMove",
4720  "movepet|petmove",
4721  UseArgs_true,
4722  Protected_false},
4723  {"keyHomunTalk",
4726  "homuntalk|merctalk",
4727  UseArgs_true,
4728  Protected_true},
4729  {"keyHomunEmote",
4732  "homunemote|mercemote",
4733  UseArgs_true,
4734  Protected_false},
4735  {"keyHomunSmilie",
4736  defaultAction(nullptr),
4740  "",
4741  UseArgs_false,
4742  Protected_false},
4743  {"keyHomunEmoteShortcut1",
4744  addKey(SDLK_1),
4745  emptyKey,
4750  "",
4751  UseArgs_false,
4752  Protected_false},
4753  {"keyHomunEmoteShortcut2",
4754  addKey(SDLK_2),
4755  emptyKey,
4760  "",
4761  UseArgs_false,
4762  Protected_false},
4763  {"keyHomunEmoteShortcut3",
4764  addKey(SDLK_3),
4765  emptyKey,
4770  "",
4771  UseArgs_false,
4772  Protected_false},
4773  {"keyHomunEmoteShortcut4",
4774  addKey(SDLK_4),
4775  emptyKey,
4780  "",
4781  UseArgs_false,
4782  Protected_false},
4783  {"keyHomunEmoteShortcut5",
4784  addKey(SDLK_5),
4785  emptyKey,
4790  "",
4791  UseArgs_false,
4792  Protected_false},
4793  {"keyHomunEmoteShortcut6",
4794  addKey(SDLK_6),
4795  emptyKey,
4800  "",
4801  UseArgs_false,
4802  Protected_false},
4803  {"keyHomunEmoteShortcut7",
4804  addKey(SDLK_7),
4805  emptyKey,
4810  "",
4811  UseArgs_false,
4812  Protected_false},
4813  {"keyHomunEmoteShortcut8",
4814  addKey(SDLK_8),
4815  emptyKey,
4820  "",
4821  UseArgs_false,
4822  Protected_false},
4823  {"keyHomunEmoteShortcut9",
4824  addKey(SDLK_9),
4825  emptyKey,
4830  "",
4831  UseArgs_false,
4832  Protected_false},
4833  {"keyHomunEmoteShortcut10",
4834  addKey(SDLK_0),
4835  emptyKey,
4840  "",
4841  UseArgs_false,
4842  Protected_false},
4843  {"keyHomunEmoteShortcut11",
4844  addKey(SDLK_MINUS),
4845  emptyKey,
4850  "",
4851  UseArgs_false,
4852  Protected_false},
4853  {"keyHomunEmoteShortcut12",
4854  addKey(SDLK_EQUALS),
4855  emptyKey,
4860  "",
4861  UseArgs_false,
4862  Protected_false},
4863  {"keyHomunEmoteShortcut13",
4864  addKey(SDLK_BACKSPACE),
4865  emptyKey,
4870  "",
4871  UseArgs_false,
4872  Protected_false},
4873  {"keyHomunEmoteShortcut14",
4874  addKey(SDLK_INSERT),
4875  emptyKey,
4880  "",
4881  UseArgs_false,
4882  Protected_false},
4883  {"keyHomunEmoteShortcut15",
4884  addKey(SDLK_HOME),
4885  emptyKey,
4890  "",
4891  UseArgs_false,
4892  Protected_false},
4893  {"keyHomunEmoteShortcut16",
4894  addKey(SDLK_q),
4895  emptyKey,
4900  "",
4901  UseArgs_false,
4902  Protected_false},
4903  {"keyHomunEmoteShortcut17",
4904  addKey(SDLK_w),
4905  emptyKey,
4910  "",
4911  UseArgs_false,
4912  Protected_false},
4913  {"keyHomunEmoteShortcut18",
4914  addKey(SDLK_e),
4915  emptyKey,
4920  "",
4921  UseArgs_false,
4922  Protected_false},
4923  {"keyHomunEmoteShortcut19",
4924  addKey(SDLK_r),
4925  emptyKey,
4930  "",
4931  UseArgs_false,
4932  Protected_false},
4933  {"keyHomunEmoteShortcut20",
4934  addKey(SDLK_t),
4935  emptyKey,
4940  "",
4941  UseArgs_false,
4942  Protected_false},
4943  {"keyHomunEmoteShortcut21",
4944  addKey(SDLK_y),
4945  emptyKey,
4950  "",
4951  UseArgs_false,
4952  Protected_false},
4953  {"keyHomunEmoteShortcut22",
4954  addKey(SDLK_u),
4955  emptyKey,
4960  "",
4961  UseArgs_false,
4962  Protected_false},
4963  {"keyHomunEmoteShortcut23",
4964  addKey(SDLK_i),
4965  emptyKey,
4970  "",
4971  UseArgs_false,
4972  Protected_false},
4973  {"keyHomunEmoteShortcut24",
4974  addKey(SDLK_o),
4975  emptyKey,
4980  "",
4981  UseArgs_false,
4982  Protected_false},
4983  {"keyHomunEmoteShortcut25",
4984  addKey(SDLK_p),
4985  emptyKey,
4990  "",
4991  UseArgs_false,
4992  Protected_false},
4993  {"keyHomunEmoteShortcut26",
4994  addKey(SDLK_LEFTBRACKET),
4995  emptyKey,
5000  "",
5001  UseArgs_false,
5002  Protected_false},
5003  {"keyHomunEmoteShortcut27",
5004  addKey(SDLK_RIGHTBRACKET),
5005  emptyKey,
5010  "",
5011  UseArgs_false,
5012  Protected_false},
5013  {"keyHomunEmoteShortcut28",
5014  addKey(SDLK_BACKSLASH),
5015  emptyKey,
5020  "",
5021  UseArgs_false,
5022  Protected_false},
5023  {"keyHomunEmoteShortcut29",
5024  addKey(SDLK_a),
5025  emptyKey,
5030  "",
5031  UseArgs_false,
5032  Protected_false},
5033  {"keyHomunEmoteShortcut30",
5034  addKey(SDLK_s),
5035  emptyKey,
5040  "",
5041  UseArgs_false,
5042  Protected_false},
5043  {"keyHomunEmoteShortcut31",
5044  addKey(SDLK_d),
5045  emptyKey,
5050  "",
5051  UseArgs_false,
5052  Protected_false},
5053  {"keyHomunEmoteShortcut32",
5054  addKey(SDLK_f),
5055  emptyKey,
5060  "",
5061  UseArgs_false,
5062  Protected_false},
5063  {"keyHomunEmoteShortcut33",
5064  addKey(SDLK_g),
5065  emptyKey,
5070  "",
5071  UseArgs_false,
5072  Protected_false},
5073  {"keyHomunEmoteShortcut34",
5074  addKey(SDLK_h),
5075  emptyKey,
5080  "",
5081  UseArgs_false,
5082  Protected_false},
5083  {"keyHomunEmoteShortcut35",
5084  addKey(SDLK_j),
5085  emptyKey,
5090  "",
5091  UseArgs_false,
5092  Protected_false},
5093  {"keyHomunEmoteShortcut36",
5094  addKey(SDLK_k),
5095  emptyKey,
5096  I