summaryrefslogblamecommitdiff
path: root/src/keyboarddata.h
blob: 8ece6cdfb5aa8b996f5c2b82f709113dc88058c0 (plain) (tree)
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556




















                                                                         



                          
                    
                        
                          

                              
 
                                                   
                                                  

                                           
                           
                               
                                
                    

                                           
                           
                                 
                                
                    

                                           
                           
                                 
                                
                   

                                           
                           
                                  
                                
                   

                                           
                           
                               
                                
                                                     
                               
                          
                           
                                     
                                
                                                     

                                           
                           
                                     
                                
                                     

                                           
                           
                                           
                                
                                                  

                                           
                           
                                   
                                
                                     

                                           
                           
                                
                                
                                     

                                           
                           
                
                                
                      

                                           
                           
                             
                                
                   

                                    
                           
                                   
                                
                   

                                           
                           
                                 
                                
                   
                        
                               
                          
                           
                                      
                                
                                   

                                           
                           
                                  
                                
                                   

                                           
                           
                                     
                                
                                   

                               
                           
                               
                                
                                   

                                           
                           
                                         
                                
                                                  

                                           
                                            
                                    
                                
                                   

                               
                           
                            
                                
                                   

                                           
                           
                                   
                                
                                   

                                           
                           
                                    
                                
                                   

                                           
                           
                                      
                                
                                                

                                           
                                            
                           
                                
                                                      

                                           
                           
                             
                                
                      

                                           
                           
                
                                
                      

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                           
                                 
                                
                       

                                           
                                            
                                       
                                
                                   

                                           
                                            
                                         
                                
                                   

                                           
                                            
                                            
                                
                                   

                                           
                                            
                                            
                                
                                   

                                           
                                            
                                        
                                
                                   

                                           
                                            
                                          
                                
                                   

                                           
                                            
                                       
                                
                                   

                                           
                                            
                                           
                                
                                   

                                           
                                            
                                        
                                
                                                     

                                           
                                            
                                        
                                
                                   

                                           
                                            
                                         
                                
                                   

                                           
                                            
                                                
                                
                                   

                                           
                                            
                                         
                                
                                   

                                           
                                            
                                       
                                
                                   

                                           
                                            
                                               
                                
                                   

                                           
                                            
                                            
                                
                                   

                                           
                                            
                                                
                                
                                   

                                           
                                            
                                             
                                
                                   

                                           
                                            
                                              
                                
                                   

                                           
                                            
                                             
                                
                                   

                                           
                                            
                                      
                                
                      

                                           
                                            
                                      
                                
                      

                                           
                           
                
                                
                      

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                              
                              
                   

                                           
                           
                
                                
                      

                                           
                           
                
                                
                      

                                           
                           
                                             
                                
                                     














































































































































































































































































































































                                           














































































































































































































































































































































                                           

                                           
                                             
                                   
                                
                                                   

                                           
                                            
                                     
                                
                      

                                           
                                            
                                       
                                
                      

                                           
                                            
                                    
                                
                      

                                           
                                            
                                    
                                
                      

                                           
                                            
                                     
                                
                      

                                           
                                             
                
                                
                      

                                           
                                             
                
                                
                      

                                           
                           
                                    
                                 
                      

                                           
                           
                                    
                                 
                      

                                           
                           
                                 
                                
                   

                                           
                           
                                   
                                
                   

                                           
                           
                                   
                                
                   

                                           
                           
                                    
                                
                   

                                           
                           
                                   
                                
                                     

                                           
                           
                                        
                                
                                                  

                                           
                           
                                  
                                
                                     

                                           
                           
                                 
                                
                                     

                                           
                           
                                        
                                
                                     

                                           
                           
                             
                                
                                     

                                           
                           
                                
                                
                                     

                                           
                           
                                    
                                
                                     

                                           
                           
                                          
                                
                                                  

                                           
                           
                                      
                                
                                                  

                                           
                           
                                       
                                
                                                  

                                           
                           
                                               
                                
                                                  

                                           
                           
                                         
                                
                                                  

                                           
                           
                                         
                                
                                                  

                                           
                           
                                            
                                
                                                  

                                           
                           
                                           
                                
                                     

                                           
                           
                                    
                                
                                     

                                           
                           
                             
                                
                                     

                                           
                           
                                   
                                
                                                   

                                           
                           
                               
                                
                                                  

                                           
                       
                
                                














































































































                                           
                     
      
/*
 *  Custom keyboard shortcuts configuration
 *  Copyright (C) 2007  Joshua Langley <joshlangley@optusnet.com.au>
 *  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 <http://www.gnu.org/licenses/>.
 */

#ifndef KEYBOARDDATA_H
#define KEYBOARDDATA_H

#include "actionmanager.h"
#include "inputmanager.h"
#include "keydata.h"
#include "localconsts.h"

#include "utils/gettext.h"
#include "utils/stringutils.h"

#include <string>

// keyData must be in same order as enum keyAction.
static KeyData const keyData[Input::KEY_TOTAL] = {
    {"keyMoveUp",
        INPUT_KEYBOARD, SDLK_UP,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveUp,
        Input::KEY_NO_VALUE, 50,
        COND_GAME2},
    {"keyMoveDown",
        INPUT_KEYBOARD, SDLK_DOWN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveDown,
        Input::KEY_NO_VALUE, 50,
        COND_GAME2},
    {"keyMoveLeft",
        INPUT_KEYBOARD, SDLK_LEFT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveLeft,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyMoveRight",
        INPUT_KEYBOARD, SDLK_RIGHT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveRight,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyAttack",
        INPUT_KEYBOARD, SDLK_LCTRL,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::attack,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOFOLLOW | COND_VALIDSPEED},
    {"keyTargetAttack",
        INPUT_KEYBOARD, SDLK_x,
        INPUT_JOYSTICK, 0,
        Input::GRP_DEFAULT,
        &ActionManager::targetAttack,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOFOLLOW | COND_VALIDSPEED},
    {"keyMoveToTarget",
        INPUT_KEYBOARD, SDLK_v,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveToTarget,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyChangeMoveToTarget",
        INPUT_KEYBOARD, SDLK_PERIOD,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeMoveToTarget,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyMoveToHome",
        INPUT_KEYBOARD, SDLK_d,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::moveToHome,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keySetHome",
        INPUT_KEYBOARD, SDLK_KP5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::setHome,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyMoveToPoint",
        INPUT_KEYBOARD, SDLK_RSHIFT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyTalk",
        INPUT_KEYBOARD, SDLK_t,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::talk,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyTarget",
        INPUT_KEYBOARD, SDLK_LSHIFT,
        INPUT_JOYSTICK, 4,
        Input::GRP_DEFAULT,
        &ActionManager::stopAttack,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyUnTarget",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::untarget,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyTargetMonster",
        INPUT_KEYBOARD, SDLK_a,
        INPUT_JOYSTICK, 3,
        Input::GRP_DEFAULT,
        &ActionManager::targetMonster,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyTargetNPC",
        INPUT_KEYBOARD, SDLK_n,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::targetNPC,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyTargetPlayer",
        INPUT_KEYBOARD, SDLK_q,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::targetPlayer,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyPickup",
        INPUT_KEYBOARD, SDLK_z,
        INPUT_JOYSTICK, 1,
        Input::GRP_DEFAULT,
        &ActionManager::pickup,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyChangePickupType",
        INPUT_KEYBOARD, SDLK_o,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changePickupType,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyHideWindows",
        INPUT_KEYBOARD, SDLK_h,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::hideWindows,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyBeingSit",
        INPUT_KEYBOARD, SDLK_s,
        INPUT_JOYSTICK, 2,
        Input::GRP_DEFAULT,
        &ActionManager::sit,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyScreenshot",
        INPUT_KEYBOARD, SDLK_p,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::screenshot,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyTrade",
        INPUT_KEYBOARD, SDLK_r,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeTrade,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyPathfind",
        INPUT_KEYBOARD, SDLK_f,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeMapMode,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET | COND_EMODS},
    {"keyOK",
        INPUT_KEYBOARD, SDLK_SPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::ok,
        Input::KEY_NO_VALUE, 50,
        COND_NOMODAL | COND_NOAWAY | COND_NONPCINPUT},
    {"keyQuit",
        INPUT_KEYBOARD, SDLK_ESCAPE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::quit,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyShortcutsKey",
        INPUT_KEYBOARD, SDLK_MENU,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyShortcut1",
        INPUT_KEYBOARD, SDLK_1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut2",
        INPUT_KEYBOARD, SDLK_2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut3",
        INPUT_KEYBOARD, SDLK_3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut4",
        INPUT_KEYBOARD, SDLK_4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut5",
        INPUT_KEYBOARD, SDLK_5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut6",
        INPUT_KEYBOARD, SDLK_6,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut7",
        INPUT_KEYBOARD, SDLK_7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut8",
        INPUT_KEYBOARD, SDLK_8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut9",
        INPUT_KEYBOARD, SDLK_9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut10",
        INPUT_KEYBOARD, SDLK_0,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut11",
        INPUT_KEYBOARD, SDLK_MINUS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut12",
        INPUT_KEYBOARD, SDLK_EQUALS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut13",
        INPUT_KEYBOARD, SDLK_BACKSPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut14",
        INPUT_KEYBOARD, SDLK_INSERT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut15",
        INPUT_KEYBOARD, SDLK_HOME,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut16",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut17",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut18",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut19",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyShortcut20",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::shortcut,
        Input::KEY_NO_VALUE, 50,
        COND_SHORTCUT},
    {"keyWindowHelp",
        INPUT_KEYBOARD, SDLK_F1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::helpWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowStatus",
        INPUT_KEYBOARD, SDLK_F2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::statusWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowInventory",
        INPUT_KEYBOARD, SDLK_F3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::inventoryWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowEquipment",
        INPUT_KEYBOARD, SDLK_F4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::equipmentWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowSkill",
        INPUT_KEYBOARD, SDLK_F5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::skillDialogShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowMinimap",
        INPUT_KEYBOARD, SDLK_F6,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::minimapWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowChat",
        INPUT_KEYBOARD, SDLK_F7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::chatWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowShortcut",
        INPUT_KEYBOARD, SDLK_F8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::shortcutWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowSetup",
        INPUT_KEYBOARD, SDLK_F9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::setupWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_NOTARGET | COND_NOINPUT | COND_ENABLED},
    {"keyWindowDebug",
        INPUT_KEYBOARD, SDLK_F10,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::debugWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowSocial",
        INPUT_KEYBOARD, SDLK_F11,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::socialWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowEmoteBar",
        INPUT_KEYBOARD, SDLK_F12,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::emoteShortcutWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowOutfit",
        INPUT_KEYBOARD, SDLK_BACKQUOTE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::outfitWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowShop",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::shopWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowDrop",
        INPUT_KEYBOARD, SDLK_w,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::dropShortcutWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowKills",
        INPUT_KEYBOARD, SDLK_e,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::killStatsWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowSpells",
        INPUT_KEYBOARD, SDLK_j,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::spellShortcutWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowBotChecker",
        INPUT_KEYBOARD, SDLK_LEFTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::botcheckerWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowOnline",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::whoIsOnlineWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keyWindowDidYouKnow",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::didYouKnowWindowShow,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_NOTARGET},
    {"keySocialPrevTab",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::prevSocialTab,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT},
    {"keySocialNextTab",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::nextSocialTab,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT},
    {"keySmilie",
        INPUT_KEYBOARD, SDLK_LALT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyEmoteShortcut1",
        INPUT_KEYBOARD, SDLK_1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut2",
        INPUT_KEYBOARD, SDLK_2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut3",
        INPUT_KEYBOARD, SDLK_3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut4",
        INPUT_KEYBOARD, SDLK_4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut5",
        INPUT_KEYBOARD, SDLK_5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut6",
        INPUT_KEYBOARD, SDLK_6,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut7",
        INPUT_KEYBOARD, SDLK_7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut8",
        INPUT_KEYBOARD, SDLK_8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut9",
        INPUT_KEYBOARD, SDLK_9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut10",
        INPUT_KEYBOARD, SDLK_0,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut11",
        INPUT_KEYBOARD, SDLK_MINUS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut12",
        INPUT_KEYBOARD, SDLK_EQUALS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut13",
        INPUT_KEYBOARD, SDLK_BACKSPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut14",
        INPUT_KEYBOARD, SDLK_INSERT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut15",
        INPUT_KEYBOARD, SDLK_HOME,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut16",
        INPUT_KEYBOARD, SDLK_q,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut17",
        INPUT_KEYBOARD, SDLK_w,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut18",
        INPUT_KEYBOARD, SDLK_e,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut19",
        INPUT_KEYBOARD, SDLK_r,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut20",
        INPUT_KEYBOARD, SDLK_t,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut21",
        INPUT_KEYBOARD, SDLK_y,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut22",
        INPUT_KEYBOARD, SDLK_u,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut23",
        INPUT_KEYBOARD, SDLK_i,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut24",
        INPUT_KEYBOARD, SDLK_o,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut25",
        INPUT_KEYBOARD, SDLK_p,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut26",
        INPUT_KEYBOARD, SDLK_LEFTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut27",
        INPUT_KEYBOARD, SDLK_RIGHTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut28",
        INPUT_KEYBOARD, SDLK_BACKSLASH,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut29",
        INPUT_KEYBOARD, SDLK_a,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut30",
        INPUT_KEYBOARD, SDLK_s,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut31",
        INPUT_KEYBOARD, SDLK_d,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut32",
        INPUT_KEYBOARD, SDLK_f,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut33",
        INPUT_KEYBOARD, SDLK_g,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut34",
        INPUT_KEYBOARD, SDLK_h,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut35",
        INPUT_KEYBOARD, SDLK_j,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut36",
        INPUT_KEYBOARD, SDLK_k,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut37",
        INPUT_KEYBOARD, SDLK_l,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut38",
        INPUT_KEYBOARD, SDLK_SEMICOLON,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut39",
        INPUT_KEYBOARD, SDLK_QUOTE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut40",
        INPUT_KEYBOARD, SDLK_z,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut41",
        INPUT_KEYBOARD, SDLK_x,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut42",
        INPUT_KEYBOARD, SDLK_c,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut43",
        INPUT_KEYBOARD, SDLK_v,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut44",
        INPUT_KEYBOARD, SDLK_b,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut45",
        INPUT_KEYBOARD, SDLK_n,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut46",
        INPUT_KEYBOARD, SDLK_m,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut47",
        INPUT_KEYBOARD, SDLK_COMMA,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyEmoteShortcut48",
        INPUT_KEYBOARD, SDLK_PERIOD,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_EMOTION,
        &ActionManager::emote,
        Input::KEY_EMOTE, 100,
        COND_GAME},
    {"keyWearOutfit",
        INPUT_KEYBOARD, SDLK_RCTRL,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyCopyOutfit",
        INPUT_KEYBOARD, SDLK_RALT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyCopyEquipedOutfit",
        INPUT_KEYBOARD, SDLK_RIGHTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::copyEquippedToOutfit,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyOutfitShortcut1",
        INPUT_KEYBOARD, SDLK_1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut2",
        INPUT_KEYBOARD, SDLK_2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut3",
        INPUT_KEYBOARD, SDLK_3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut4",
        INPUT_KEYBOARD, SDLK_4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut5",
        INPUT_KEYBOARD, SDLK_5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut6",
        INPUT_KEYBOARD, SDLK_6,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut7",
        INPUT_KEYBOARD, SDLK_7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut8",
        INPUT_KEYBOARD, SDLK_8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut9",
        INPUT_KEYBOARD, SDLK_9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut10",
        INPUT_KEYBOARD, SDLK_0,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut11",
        INPUT_KEYBOARD, SDLK_MINUS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut12",
        INPUT_KEYBOARD, SDLK_EQUALS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut13",
        INPUT_KEYBOARD, SDLK_BACKSPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut14",
        INPUT_KEYBOARD, SDLK_INSERT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut15",
        INPUT_KEYBOARD, SDLK_HOME,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut16",
        INPUT_KEYBOARD, SDLK_q,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut17",
        INPUT_KEYBOARD, SDLK_w,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut18",
        INPUT_KEYBOARD, SDLK_e,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut19",
        INPUT_KEYBOARD, SDLK_r,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut20",
        INPUT_KEYBOARD, SDLK_t,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut21",
        INPUT_KEYBOARD, SDLK_y,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut22",
        INPUT_KEYBOARD, SDLK_u,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut23",
        INPUT_KEYBOARD, SDLK_i,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut24",
        INPUT_KEYBOARD, SDLK_o,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut25",
        INPUT_KEYBOARD, SDLK_p,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut26",
        INPUT_KEYBOARD, SDLK_LEFTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut27",
        INPUT_KEYBOARD, SDLK_RIGHTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut28",
        INPUT_KEYBOARD, SDLK_BACKSLASH,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut29",
        INPUT_KEYBOARD, SDLK_a,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut30",
        INPUT_KEYBOARD, SDLK_s,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut31",
        INPUT_KEYBOARD, SDLK_d,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut32",
        INPUT_KEYBOARD, SDLK_f,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut33",
        INPUT_KEYBOARD, SDLK_g,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut34",
        INPUT_KEYBOARD, SDLK_h,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut35",
        INPUT_KEYBOARD, SDLK_j,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut36",
        INPUT_KEYBOARD, SDLK_k,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut37",
        INPUT_KEYBOARD, SDLK_l,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut38",
        INPUT_KEYBOARD, SDLK_SEMICOLON,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut39",
        INPUT_KEYBOARD, SDLK_QUOTE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut40",
        INPUT_KEYBOARD, SDLK_z,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut41",
        INPUT_KEYBOARD, SDLK_x,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut42",
        INPUT_KEYBOARD, SDLK_c,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut43",
        INPUT_KEYBOARD, SDLK_v,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut44",
        INPUT_KEYBOARD, SDLK_b,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut45",
        INPUT_KEYBOARD, SDLK_n,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut46",
        INPUT_KEYBOARD, SDLK_m,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut47",
        INPUT_KEYBOARD, SDLK_COMMA,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyOutfitShortcut48",
        INPUT_KEYBOARD, SDLK_PERIOD,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_OUTFIT,
        &ActionManager::outfit,
        Input::KEY_NO_VALUE, 100,
        COND_GAME},
    {"keyMoveToPointShortcut1",
        INPUT_KEYBOARD, SDLK_1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut2",
        INPUT_KEYBOARD, SDLK_2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut3",
        INPUT_KEYBOARD, SDLK_3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut4",
        INPUT_KEYBOARD, SDLK_4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut5",
        INPUT_KEYBOARD, SDLK_5,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut6",
        INPUT_KEYBOARD, SDLK_6,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut7",
        INPUT_KEYBOARD, SDLK_7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut8",
        INPUT_KEYBOARD, SDLK_8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut9",
        INPUT_KEYBOARD, SDLK_9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut10",
        INPUT_KEYBOARD, SDLK_0,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut11",
        INPUT_KEYBOARD, SDLK_MINUS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut12",
        INPUT_KEYBOARD, SDLK_EQUALS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut13",
        INPUT_KEYBOARD, SDLK_BACKSPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut14",
        INPUT_KEYBOARD, SDLK_INSERT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut15",
        INPUT_KEYBOARD, SDLK_HOME,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut16",
        INPUT_KEYBOARD, SDLK_q,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut17",
        INPUT_KEYBOARD, SDLK_w,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut18",
        INPUT_KEYBOARD, SDLK_e,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut19",
        INPUT_KEYBOARD, SDLK_r,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut20",
        INPUT_KEYBOARD, SDLK_t,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut21",
        INPUT_KEYBOARD, SDLK_y,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut22",
        INPUT_KEYBOARD, SDLK_u,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut23",
        INPUT_KEYBOARD, SDLK_i,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut24",
        INPUT_KEYBOARD, SDLK_o,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut25",
        INPUT_KEYBOARD, SDLK_p,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut26",
        INPUT_KEYBOARD, SDLK_LEFTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut27",
        INPUT_KEYBOARD, SDLK_RIGHTBRACKET,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut28",
        INPUT_KEYBOARD, SDLK_BACKSLASH,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut29",
        INPUT_KEYBOARD, SDLK_a,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut30",
        INPUT_KEYBOARD, SDLK_s,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut31",
        INPUT_KEYBOARD, SDLK_d,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut32",
        INPUT_KEYBOARD, SDLK_f,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut33",
        INPUT_KEYBOARD, SDLK_g,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut34",
        INPUT_KEYBOARD, SDLK_h,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut35",
        INPUT_KEYBOARD, SDLK_j,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut36",
        INPUT_KEYBOARD, SDLK_k,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut37",
        INPUT_KEYBOARD, SDLK_l,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut38",
        INPUT_KEYBOARD, SDLK_SEMICOLON,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut39",
        INPUT_KEYBOARD, SDLK_QUOTE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut40",
        INPUT_KEYBOARD, SDLK_z,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut41",
        INPUT_KEYBOARD, SDLK_x,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut42",
        INPUT_KEYBOARD, SDLK_c,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut43",
        INPUT_KEYBOARD, SDLK_v,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut44",
        INPUT_KEYBOARD, SDLK_b,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut45",
        INPUT_KEYBOARD, SDLK_n,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut46",
        INPUT_KEYBOARD, SDLK_m,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut47",
        INPUT_KEYBOARD, SDLK_COMMA,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyMoveToPointShortcut48",
        INPUT_KEYBOARD, SDLK_PERIOD,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_MOVETOPOINT,
        &ActionManager::moveToPoint,
        Input::KEY_MOVE_TO_POINT, 100,
        COND_GAME},
    {"keyChat",
        INPUT_KEYBOARD, SDLK_RETURN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_CHAT,
        &ActionManager::toggleChat,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT | COND_NOAWAY | COND_NOMODAL},
    {"keyChatScrollUp",
        INPUT_KEYBOARD, SDLK_PAGEUP,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::scrollChatUp,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyChatScrollDown",
        INPUT_KEYBOARD, SDLK_PAGEDOWN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::scrollChatDown,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyChatPrevTab",
        INPUT_KEYBOARD, SDLK_KP7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::prevChatTab,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT},
    {"keyChatNextTab",
        INPUT_KEYBOARD, SDLK_KP9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::nextChatTab,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT},
    {"keyChatCloseTab",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT | Input::GRP_GUI,
        &ActionManager::closeChatTab,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT},
    {"keyChatPrevHistory",
        INPUT_KEYBOARD, SDLK_KP7,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_CHAT | Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyChatNextHistory",
        INPUT_KEYBOARD, SDLK_KP9,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_CHAT | Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyIgnoreInput1",
        INPUT_KEYBOARD, SDLK_LSUPER,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::ignoreInput,
        Input::KEY_NO_VALUE, 500,
        COND_DEFAULT},
    {"keyIgnoreInput2",
        INPUT_KEYBOARD, SDLK_RSUPER,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::ignoreInput,
        Input::KEY_NO_VALUE, 500,
        COND_DEFAULT},
    {"keyDirectUp",
        INPUT_KEYBOARD, SDLK_l,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::directUp,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyDirectDown",
        INPUT_KEYBOARD, SDLK_SEMICOLON,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::directDown,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyDirectLeft",
        INPUT_KEYBOARD, SDLK_k,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::directLeft,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyDirectRight",
        INPUT_KEYBOARD, SDLK_QUOTE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::directRight,
        Input::KEY_NO_VALUE, 50,
        COND_GAME},
    {"keyCrazyMoves",
        INPUT_KEYBOARD, SDLK_SLASH,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::crazyMoves,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyChangeCrazyMoveType",
        INPUT_KEYBOARD, SDLK_BACKSLASH,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeCrazyMove,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyQuickDrop",
        INPUT_KEYBOARD, SDLK_y,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::dropItem0,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyQuickDropN",
        INPUT_KEYBOARD, SDLK_u,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::dropItem,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keySwitchQuickDrop",
        INPUT_KEYBOARD, SDLK_i,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::switchQuickDrop,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyMagicInma1",
        INPUT_KEYBOARD, SDLK_c,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::heal,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyMagicItenplz",
        INPUT_KEYBOARD, SDLK_m,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::itenplz,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyMagicAttack",
        INPUT_KEYBOARD, SDLK_b,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::magicAttack,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keySwitchMagicAttack",
        INPUT_KEYBOARD, SDLK_COMMA,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeMagicAttack,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keySwitchPvpAttack",
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changePvpMode,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyInvertDirection",
        INPUT_KEYBOARD, SDLK_KP0,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeMoveType,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyChangeAttackWeaponType",
        INPUT_KEYBOARD, SDLK_g,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeAttackWeaponType,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyChangeAttackType",
        INPUT_KEYBOARD, SDLK_END,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeAttackType,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyChangeFollowMode",
        INPUT_KEYBOARD, SDLK_KP1,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeFollowMode,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyChangeImitationMode",
        INPUT_KEYBOARD, SDLK_KP4,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeImitationMode,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyDisableGameModifiers",
        INPUT_KEYBOARD, SDLK_KP8,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeGameModifier,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyChangeAudio",
        INPUT_KEYBOARD, SDLK_KP3,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::changeAudio,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyAway",
        INPUT_KEYBOARD, SDLK_KP2,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::away,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED},
    {"keyRightClick",
        INPUT_KEYBOARD, SDLK_TAB,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::mouseClick,
        Input::KEY_NO_VALUE, 50,
        COND_NOINPUT | COND_NOAWAY | COND_NOMODAL},
    {"keyCameraMode",
        INPUT_KEYBOARD, SDLK_KP_PLUS,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_DEFAULT,
        &ActionManager::camera,
        Input::KEY_NO_VALUE, 50,
        COND_GAME | COND_VALIDSPEED | COND_EMODS},
    {"keyMod",
        INPUT_KEYBOARD, SDLK_LSHIFT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUI,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIUp",
        INPUT_KEYBOARD, SDLK_UP,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIDown",
        INPUT_KEYBOARD, SDLK_DOWN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUILeft",
        INPUT_KEYBOARD, SDLK_LEFT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIRight",
        INPUT_KEYBOARD, SDLK_RIGHT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUISelect",
        INPUT_KEYBOARD, SDLK_SPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUISelect2",
        INPUT_KEYBOARD, SDLK_RETURN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUICancel",
        INPUT_KEYBOARD, SDLK_ESCAPE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIHome",
        INPUT_KEYBOARD, SDLK_HOME,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIEnd",
        INPUT_KEYBOARD, SDLK_END,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIDelete",
        INPUT_KEYBOARD, SDLK_DELETE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIBackSpace",
        INPUT_KEYBOARD, SDLK_BACKSPACE,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUITab",
        INPUT_KEYBOARD, SDLK_TAB,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIPageUp",
        INPUT_KEYBOARD, SDLK_PAGEUP,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIPageDown",
        INPUT_KEYBOARD, SDLK_PAGEDOWN,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIInsert",
        INPUT_KEYBOARD, SDLK_INSERT,
        INPUT_UNKNOWN, Input::KEY_NO_VALUE,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT},
    {"keyGUIMod",
        INPUT_KEYBOARD, SDLK_LSHIFT,
        INPUT_KEYBOARD, SDLK_RSHIFT,
        Input::GRP_GUICHAN,
        nullptr,
        Input::KEY_NO_VALUE, 50,
        COND_DEFAULT}
};

#endif