22#ifndef SLUDGE_KEYMAPPER_TABLES_H
23#define SLUDGE_KEYMAPPER_TABLES_H
25#include "backends/keymapper/action.h"
26#include "backends/keymapper/keymapper.h"
29#include "common/translation.h"
36 Keymap *gameKeyMap =
new Keymap(Keymap::kKeymapTypeGame,
"game-shortcuts", _(
"Game keymappings"));
37 Keymap *debugKeyMap =
new Keymap(Keymap::kKeymapTypeGame,
"debug", _(
"Debug keymappings"));
38 Keymap *menuKeymap =
new Keymap(Keymap::kKeymapTypeGame,
"menu", _(
"Menu keymappings"));
39 Keymap *minigameKeymap =
new Keymap(Keymap::kKeymapTypeGame,
"minigame", _(
"Minigame keymappings"));
42 if (gameId ==
"outoforder") {
43 act =
new Action(kStandardActionLeftClick, _(
"Interact"));
44 act->setLeftClickEvent();
49 act =
new Action(kStandardActionRightClick, _(
"Change action"));
50 act->setRightClickEvent();
55 act =
new Action(kStandardActionPause, _(
"Pause"));
56 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
61 act =
new Action(
"INVENTORY", _(
"Inventory"));
62 act->setKeyEvent(
KeyState(KEYCODE_SPACE, ASCII_SPACE));
67 act =
new Action(
"SAVE", _(
"Quick save"));
68 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
73 act =
new Action(
"SPEEDUP", _(
"Speed up dialog"));
74 act->setKeyEvent(
KeyState(KEYCODE_PLUS,
'+'));
79 act =
new Action(
"SPEEDDOWN", _(
"Slow down dialog"));
80 act->setKeyEvent(
KeyState(KEYCODE_MINUS,
'-'));
85 }
else if (gameId ==
"tsotc") {
86 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
87 act->setLeftClickEvent();
92 act =
new Action(kStandardActionRightClick, _(
"Skip dialog"));
93 act->setRightClickEvent();
98 act =
new Action(
"QUIT", _(
"Quit"));
99 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
104 act =
new Action(
"LOADAUTOSAVE", _(
"Load auto save"));
105 act->setKeyEvent(
KeyState(KEYCODE_a,
'a'));
110 act =
new Action(
"SAVE", _(
"Save game"));
111 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
116 act =
new Action(
"LOAD", _(
"Load save"));
117 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
122 act =
new Action(
"INVENTORY", _(
"Inventory"));
123 act->setKeyEvent(
KeyState(KEYCODE_i,
'i'));
128 act =
new Action(
"PAUSE", _(
"Pause"));
129 act->setKeyEvent(
KeyState(KEYCODE_SPACE, ASCII_SPACE));
134 }
else if (gameId ==
"gjgagsas") {
135 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
136 act->setLeftClickEvent();
141 act =
new Action(kStandardActionRightClick, _(
"Skip dialog"));
142 act->setRightClickEvent();
147 act =
new Action(
"QUIT", _(
"Quit"));
148 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
153 act =
new Action(
"LOADAUTOSAVE", _(
"Load auto save"));
154 act->setKeyEvent(
KeyState(KEYCODE_a,
'a'));
159 act =
new Action(
"SAVE", _(
"Save game"));
160 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
165 act =
new Action(
"LOAD", _(
"Load save"));
166 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
171 act =
new Action(
"INVENTORY", _(
"Inventory"));
172 act->setKeyEvent(
KeyState(KEYCODE_i,
'i'));
177 }
else if (gameId ==
"robinsrescue") {
178 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
179 act->setLeftClickEvent();
184 act =
new Action(kStandardActionRightClick, _(
"Inventory"));
185 act->setRightClickEvent();
190 act =
new Action(kStandardActionPause, _(
"Pause"));
191 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
197 act =
new Action(
"SKIPDLG", _(
"Skip dialog"));
198 act->setKeyEvent(
KeyState(KEYCODE_PERIOD,
'.'));
203 act =
new Action(
"SHOWFLOOR", _(
"DEBUG: Show floor"));
204 act->setKeyEvent(
KeyState(KEYCODE_f,
'f'));
208 act =
new Action(
"SHOWBOXES", _(
"DEBUG: Show boxes"));
209 act->setKeyEvent(
KeyState(KEYCODE_b,
'b'));
213 }
else if (gameId ==
"atw") {
214 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
215 act->setLeftClickEvent();
220 act =
new Action(kStandardActionRightClick, _(
"Inventory"));
221 act->setRightClickEvent();
226 act =
new Action(
"QUIT", _(
"Quit"));
227 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
233 }
else if (gameId ==
"cubert") {
234 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
235 act->setLeftClickEvent();
240 act =
new Action(kStandardActionRightClick, _(
"Inventory / Examine"));
241 act->setRightClickEvent();
246 act =
new Action(kStandardActionPause, _(
"Pause"));
247 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
252 }
else if (gameId ==
"frasse") {
253 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
254 act->setLeftClickEvent();
259 act =
new Action(kStandardActionRightClick, _(
"Inventory"));
260 act->setRightClickEvent();
265 act =
new Action(kStandardActionPause, _(
"Pause"));
266 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
271 act =
new Action(
"SKIPDLG", _(
"Skip dialog"));
272 act->setKeyEvent(
KeyState(KEYCODE_PERIOD,
'.'));
277 }
else if (gameId ==
"tgttpoacs") {
278 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
279 act->setLeftClickEvent();
284 act =
new Action(kStandardActionRightClick, _(
"Examine / Skip dialog"));
285 act->setRightClickEvent();
290 act =
new Action(kStandardActionPause, _(
"Pause / Skip cutscene"));
291 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
296 act =
new Action(
"SPEEDUP", _(
"Speed up dialog"));
297 act->setKeyEvent(
KeyState(KEYCODE_PLUS,
'+'));
301 act =
new Action(
"SPEEDDOWN", _(
"Slow down dialog"));
302 act->setKeyEvent(
KeyState(KEYCODE_MINUS,
'-'));
306 act =
new Action(
"SAVE", _(
"Quick save"));
307 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
311 act =
new Action(
"LOAD", _(
"Quick load"));
312 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
316 act =
new Action(
"EXAMINE", _(
"Examine"));
317 act->setKeyEvent(
KeyState(KEYCODE_e,
'e'));
321 act =
new Action(
"PICKUP", _(
"Pick up"));
322 act->setKeyEvent(
KeyState(KEYCODE_p,
'p'));
326 act =
new Action(
"TALK", _(
"Talk to"));
327 act->setKeyEvent(
KeyState(KEYCODE_t,
't'));
331 act =
new Action(
"SMELL", _(
"Smell"));
332 act->setKeyEvent(
KeyState(KEYCODE_m,
'm'));
336 act =
new Action(
"USE", _(
"Use"));
337 act->setKeyEvent(
KeyState(KEYCODE_u,
'u'));
341 act =
new Action(
"CONSUME", _(
"Consume"));
342 act->setKeyEvent(
KeyState(KEYCODE_c,
'c'));
346 act =
new Action(
"QUIT", _(
"Quit"));
347 act->setKeyEvent(
KeyState(KEYCODE_q,
'q'));
352 act =
new Action(
"START", _(
"Start"));
353 act->setKeyEvent(
KeyState(KEYCODE_RETURN, ASCII_RETURN));
358 act =
new Action(
"QUIT", _(
"Quit"));
359 act->setKeyEvent(
KeyState(KEYCODE_q,
'q'));
364 act =
new Action(
"CASTEARTH", _(
"Cast earth spell"));
365 act->setKeyEvent(
KeyState(KEYCODE_z,
'z'));
370 act =
new Action(
"CASTAIR", _(
"Cast air spell"));
371 act->setKeyEvent(
KeyState(KEYCODE_x,
'x'));
376 act =
new Action(
"CASTFIRE", _(
"Cast fire spell"));
377 act->setKeyEvent(
KeyState(KEYCODE_c,
'c'));
382 act =
new Action(
"CASTWATER", _(
"Cast water spell"));
383 act->setKeyEvent(
KeyState(KEYCODE_v,
'v'));
388 }
else if (gameId ==
"interview") {
389 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
390 act->setLeftClickEvent();
395 act =
new Action(kStandardActionRightClick, _(
"Skip dialog"));
396 act->setRightClickEvent();
401 act =
new Action(kStandardActionPause, _(
"Pause / Skip cutscene"));
402 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
407 act =
new Action(
"LOAD", _(
"Quick load"));
408 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
413 act =
new Action(
"SAVE", _(
"Quick save"));
414 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
419 act =
new Action(
"QUIT", _(
"Quit"));
420 act->setKeyEvent(
KeyState(KEYCODE_q,
'q'));
425 }
else if (gameId ==
"leptonsquest") {
426 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact / Skip dialog"));
427 act->setLeftClickEvent();
432 act =
new Action(
"QUIT", _(
"Quit"));
433 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
438 act =
new Action(
"SHOWFLOOR", _(
"DEBUG: Show floor"));
439 act->setKeyEvent(
KeyState(KEYCODE_f,
'f'));
443 act =
new Action(
"SHOWBOXES", _(
"DEBUG: Show boxes"));
444 act->setKeyEvent(
KeyState(KEYCODE_b,
'b'));
448 }
else if (gameId ==
"life") {
449 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
450 act->setLeftClickEvent();
455 act =
new Action(
"SKIPDLG", _(
"Skip dialog"));
456 act->setRightClickEvent();
462 act =
new Action(kStandardActionPause, _(
"Pause"));
463 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
468 act =
new Action(
"SAVE", _(
"Quick save"));
469 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
474 act =
new Action(
"LOAD", _(
"Quick load"));
475 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
480 }
else if (gameId ==
"mandy") {
481 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
482 act->setLeftClickEvent();
487 act =
new Action(kStandardActionRightClick, _(
"Skip dialog"));
488 act->setRightClickEvent();
493 act =
new Action(kStandardActionPause, _(
"Pause"));
494 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
499 act =
new Action(
"SAVE", _(
"Quick save"));
500 act->setKeyEvent(
KeyState(KEYCODE_s,
's'));
505 act =
new Action(
"LOAD", _(
"Quick load"));
506 act->setKeyEvent(
KeyState(KEYCODE_l,
'l'));
512 }
else if (gameId ==
"nsc") {
513 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact / Skip dialog"));
514 act->setLeftClickEvent();
519 act =
new Action(kStandardActionRightClick, _(
"Inventory / Skip dialog"));
520 act->setRightClickEvent();
525 act =
new Action(kStandardActionPause, _(
"Pause / Skip cutscene"));
526 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
531 }
else if (gameId ==
"verbcoin") {
532 act =
new Action(kStandardActionLeftClick, _(
"Move / Interact"));
533 act->setLeftClickEvent();
538 act =
new Action(kStandardActionRightClick, _(
"Skip dialog"));
539 act->setRightClickEvent();
544 act =
new Action(
"QUIT", _(
"Quit"));
545 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
550 act =
new Action(
"SHOWBOXES", _(
"DEBUG: Show boxes"));
551 act->setKeyEvent(
KeyState(KEYCODE_SPACE, ASCII_SPACE));
555 act =
new Action(
"SHOWFLOOR", _(
"DEBUG: Show floor"));
556 act->setKeyEvent(
KeyState(KEYCODE_f,
'f'));
562 warning(
"Game-specific keymap is not defined. Using default SLUDGE engine keymap");
564 act =
new Action(kStandardActionLeftClick, _(
"Left click"));
565 act->setLeftClickEvent();
570 act =
new Action(kStandardActionRightClick, _(
"Right click"));
571 act->setRightClickEvent();
576 act =
new Action(kStandardActionPause, _(
"Pause game"));
577 act->setKeyEvent(
KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
583 act =
new Action(kStandardActionLeftClick, _(
"Left click"));
584 act->setLeftClickEvent();
589 act =
new Action(kStandardActionRightClick, _(
"Right click"));
590 act->setRightClickEvent();
596 keyMaps[0] = gameKeyMap;
597 keyMaps[1] = debugKeyMap;
598 keyMaps[2] = menuKeymap;
599 keyMaps[3] = minigameKeymap;
601 menuKeymap->setEnabled(
false);
void addAction(Action *action)
void warning(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: algorithm.h:29
A set of well known keymapper actions.
void addDefaultInputMapping(const String &hwId)
Definition: keyboard.h:294