ScummVM API documentation
keymapper_tables.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #include "backends/keymapper/action.h"
23 #include "backends/keymapper/keymapper.h"
25 
26 #include "common/translation.h"
27 
28 namespace Sludge {
29 inline Common::KeymapArray getSludgeKeymaps(const char *target, const Common::String &gameId) {
30 
31  using namespace Common;
32 
33  Keymap *gameKeyMap = new Keymap(Keymap::kKeymapTypeGame, "game-shortcuts", _("Game keymappings"));
34  Keymap *debugKeyMap = new Keymap(Keymap::kKeymapTypeGame, "debug", _("Debug keymappings"));
35  Keymap *menuKeymap = new Keymap(Keymap::kKeymapTypeGame, "menu", _("Menu keymappings"));
36  Keymap *minigameKeymap = new Keymap(Keymap::kKeymapTypeGame, "minigame", _("Minigame keymappings"));
37  Action *act;
38 
39  if (gameId == "outoforder") {
40  act = new Action(kStandardActionLeftClick, _("Interact"));
41  act->setLeftClickEvent();
42  act->addDefaultInputMapping("MOUSE_LEFT");
43  act->addDefaultInputMapping("JOY_A");
44  gameKeyMap->addAction(act);
45 
46  act = new Action(kStandardActionRightClick, _("Change action"));
47  act->setRightClickEvent();
48  act->addDefaultInputMapping("MOUSE_RIGHT");
49  act->addDefaultInputMapping("JOY_B");
50  gameKeyMap->addAction(act);
51 
52  act = new Action(kStandardActionPause, _("Pause"));
53  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
54  act->addDefaultInputMapping("ESCAPE");
55  act->addDefaultInputMapping("JOY_RIGHT");
56  gameKeyMap->addAction(act);
57 
58  act = new Action("INVENTORY", _("Inventory"));
59  act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
60  act->addDefaultInputMapping("SPACE");
61  act->addDefaultInputMapping("JOY_Y");
62  gameKeyMap->addAction(act);
63 
64  act = new Action("SAVE", _("Quick save"));
65  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
66  act->addDefaultInputMapping("s");
67  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
68  gameKeyMap->addAction(act);
69 
70  act = new Action("SPEEDUP", _("Speed up dialog"));
71  act->setKeyEvent(KeyState(KEYCODE_PLUS, '+'));
72  act->addDefaultInputMapping("PLUS");
73  act->addDefaultInputMapping("JOY_UP");
74  gameKeyMap->addAction(act);
75 
76  act = new Action("SPEEDDOWN", _("Slow down dialog"));
77  act->setKeyEvent(KeyState(KEYCODE_MINUS, '-'));
78  act->addDefaultInputMapping("MINUS");
79  act->addDefaultInputMapping("JOY_DOWN");
80  gameKeyMap->addAction(act);
81 
82  } else if (gameId == "tsotc") {
83  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
84  act->setLeftClickEvent();
85  act->addDefaultInputMapping("MOUSE_LEFT");
86  act->addDefaultInputMapping("JOY_A");
87  gameKeyMap->addAction(act);
88 
89  act = new Action(kStandardActionRightClick, _("Skip dialog"));
90  act->setRightClickEvent();
91  act->addDefaultInputMapping("MOUSE_RIGHT");
92  act->addDefaultInputMapping("JOY_B");
93  gameKeyMap->addAction(act);
94 
95  act = new Action("QUIT", _("Quit"));
96  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
97  act->addDefaultInputMapping("ESCAPE");
98  act->addDefaultInputMapping("JOY_LEFT");
99  gameKeyMap->addAction(act);
100 
101  act = new Action("LOADAUTOSAVE", _("Load auto save"));
102  act->setKeyEvent(KeyState(KEYCODE_a, 'a'));
103  act->addDefaultInputMapping("a");
104  act->addDefaultInputMapping("JOY_X");
105  gameKeyMap->addAction(act);
106 
107  act = new Action("SAVE", _("Save game"));
108  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
109  act->addDefaultInputMapping("s");
110  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
111  gameKeyMap->addAction(act);
112 
113  act = new Action("LOAD", _("Load save"));
114  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
115  act->addDefaultInputMapping("l");
116  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
117  gameKeyMap->addAction(act);
118 
119  act = new Action("INVENTORY", _("Inventory"));
120  act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
121  act->addDefaultInputMapping("i");
122  act->addDefaultInputMapping("JOY_Y");
123  gameKeyMap->addAction(act);
124 
125  act = new Action("PAUSE", _("Pause"));
126  act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
127  act->addDefaultInputMapping("SPACE");
128  act->addDefaultInputMapping("JOY_RIGHT");
129  gameKeyMap->addAction(act);
130 
131  } else if (gameId == "gjgagsas") {
132  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
133  act->setLeftClickEvent();
134  act->addDefaultInputMapping("MOUSE_LEFT");
135  act->addDefaultInputMapping("JOY_A");
136  gameKeyMap->addAction(act);
137 
138  act = new Action(kStandardActionRightClick, _("Skip dialog"));
139  act->setRightClickEvent();
140  act->addDefaultInputMapping("MOUSE_RIGHT");
141  act->addDefaultInputMapping("JOY_B");
142  gameKeyMap->addAction(act);
143 
144  act = new Action("QUIT", _("Quit"));
145  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
146  act->addDefaultInputMapping("ESCAPE");
147  act->addDefaultInputMapping("JOY_LEFT");
148  gameKeyMap->addAction(act);
149 
150  act = new Action("LOADAUTOSAVE", _("Load auto save"));
151  act->setKeyEvent(KeyState(KEYCODE_a, 'a'));
152  act->addDefaultInputMapping("a");
153  act->addDefaultInputMapping("JOY_X");
154  gameKeyMap->addAction(act);
155 
156  act = new Action("SAVE", _("Save game"));
157  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
158  act->addDefaultInputMapping("s");
159  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
160  gameKeyMap->addAction(act);
161 
162  act = new Action("LOAD", _("Load save"));
163  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
164  act->addDefaultInputMapping("l");
165  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
166  gameKeyMap->addAction(act);
167 
168  act = new Action("INVENTORY", _("Inventory"));
169  act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
170  act->addDefaultInputMapping("i");
171  act->addDefaultInputMapping("JOY_Y");
172  gameKeyMap->addAction(act);
173 
174  } else if (gameId == "robinsrescue") {
175  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
176  act->setLeftClickEvent();
177  act->addDefaultInputMapping("MOUSE_LEFT");
178  act->addDefaultInputMapping("JOY_A");
179  gameKeyMap->addAction(act);
180 
181  act = new Action(kStandardActionRightClick, _("Inventory"));
182  act->setRightClickEvent();
183  act->addDefaultInputMapping("MOUSE_RIGHT");
184  act->addDefaultInputMapping("JOY_B");
185  gameKeyMap->addAction(act);
186 
187  act = new Action(kStandardActionPause, _("Pause"));
188  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
189  act->addDefaultInputMapping("ESCAPE");
190  act->addDefaultInputMapping("q");
191  act->addDefaultInputMapping("JOY_RIGHT");
192  gameKeyMap->addAction(act);
193 
194  act = new Action("SKIPDLG", _("Skip dialog"));
195  act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
196  act->addDefaultInputMapping("PERIOD");
197  act->addDefaultInputMapping("JOY_X");
198  gameKeyMap->addAction(act);
199 
200  act = new Action("SHOWFLOOR", _("DEBUG: Show floor"));
201  act->setKeyEvent(KeyState(KEYCODE_f, 'f'));
202  act->addDefaultInputMapping("f");
203  debugKeyMap->addAction(act);
204 
205  act = new Action("SHOWBOXES", _("DEBUG: Show boxes"));
206  act->setKeyEvent(KeyState(KEYCODE_b, 'b'));
207  act->addDefaultInputMapping("b");
208  debugKeyMap->addAction(act);
209 
210  } else if (gameId == "atw") {
211  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
212  act->setLeftClickEvent();
213  act->addDefaultInputMapping("MOUSE_LEFT");
214  act->addDefaultInputMapping("JOY_A");
215  gameKeyMap->addAction(act);
216 
217  act = new Action(kStandardActionRightClick, _("Inventory"));
218  act->setRightClickEvent();
219  act->addDefaultInputMapping("MOUSE_RIGHT");
220  act->addDefaultInputMapping("JOY_B");
221  gameKeyMap->addAction(act);
222 
223  act = new Action("QUIT", _("Quit"));
224  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
225  act->addDefaultInputMapping("ESCAPE");
226  act->addDefaultInputMapping("q");
227  act->addDefaultInputMapping("JOY_LEFT");
228  gameKeyMap->addAction(act);
229 
230  } else if (gameId == "cubert") {
231  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
232  act->setLeftClickEvent();
233  act->addDefaultInputMapping("MOUSE_LEFT");
234  act->addDefaultInputMapping("JOY_A");
235  gameKeyMap->addAction(act);
236 
237  act = new Action(kStandardActionRightClick, _("Inventory / Examine"));
238  act->setRightClickEvent();
239  act->addDefaultInputMapping("MOUSE_RIGHT");
240  act->addDefaultInputMapping("JOY_B");
241  gameKeyMap->addAction(act);
242 
243  act = new Action(kStandardActionPause, _("Pause"));
244  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
245  act->addDefaultInputMapping("ESCAPE");
246  act->addDefaultInputMapping("JOY_RIGHT");
247  gameKeyMap->addAction(act);
248 
249  } else if (gameId == "frasse") {
250  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
251  act->setLeftClickEvent();
252  act->addDefaultInputMapping("MOUSE_LEFT");
253  act->addDefaultInputMapping("JOY_A");
254  gameKeyMap->addAction(act);
255 
256  act = new Action(kStandardActionRightClick, _("Inventory"));
257  act->setRightClickEvent();
258  act->addDefaultInputMapping("MOUSE_RIGHT");
259  act->addDefaultInputMapping("JOY_B");
260  gameKeyMap->addAction(act);
261 
262  act = new Action(kStandardActionPause, _("Pause"));
263  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
264  act->addDefaultInputMapping("ESCAPE");
265  act->addDefaultInputMapping("JOY_RIGHT");
266  gameKeyMap->addAction(act);
267 
268  act = new Action("SKIPDLG", _("Skip dialog"));
269  act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
270  act->addDefaultInputMapping("PERIOD");
271  act->addDefaultInputMapping("JOY_X");
272  gameKeyMap->addAction(act);
273 
274  } else if (gameId == "tgttpoacs") {
275  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
276  act->setLeftClickEvent();
277  act->addDefaultInputMapping("MOUSE_LEFT");
278  act->addDefaultInputMapping("JOY_A");
279  gameKeyMap->addAction(act);
280 
281  act = new Action(kStandardActionRightClick, _("Examine / Skip dialog"));
282  act->setRightClickEvent();
283  act->addDefaultInputMapping("MOUSE_RIGHT");
284  act->addDefaultInputMapping("JOY_B");
285  gameKeyMap->addAction(act);
286 
287  act = new Action(kStandardActionPause, _("Pause / Skip cutscene"));
288  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
289  act->addDefaultInputMapping("ESCAPE");
290  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
291  gameKeyMap->addAction(act);
292 
293  act = new Action("SPEEDUP", _("Speed up dialog"));
294  act->setKeyEvent(KeyState(KEYCODE_PLUS, '+'));
295  act->addDefaultInputMapping("PLUS");
296  gameKeyMap->addAction(act);
297 
298  act = new Action("SPEEDDOWN", _("Slow down dialog"));
299  act->setKeyEvent(KeyState(KEYCODE_MINUS, '-'));
300  act->addDefaultInputMapping("MINUS");
301  gameKeyMap->addAction(act);
302 
303  act = new Action("SAVE", _("Quick save"));
304  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
305  act->addDefaultInputMapping("s");
306  gameKeyMap->addAction(act);
307 
308  act = new Action("LOAD", _("Quick load"));
309  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
310  act->addDefaultInputMapping("l");
311  gameKeyMap->addAction(act);
312 
313  act = new Action("EXAMINE", _("Examine"));
314  act->setKeyEvent(KeyState(KEYCODE_e, 'e'));
315  act->addDefaultInputMapping("e");
316  gameKeyMap->addAction(act);
317 
318  act = new Action("PICKUP", _("Pick up"));
319  act->setKeyEvent(KeyState(KEYCODE_p, 'p'));
320  act->addDefaultInputMapping("p");
321  gameKeyMap->addAction(act);
322 
323  act = new Action("TALK", _("Talk to"));
324  act->setKeyEvent(KeyState(KEYCODE_t, 't'));
325  act->addDefaultInputMapping("t");
326  gameKeyMap->addAction(act);
327 
328  act = new Action("SMELL", _("Smell"));
329  act->setKeyEvent(KeyState(KEYCODE_m, 'm'));
330  act->addDefaultInputMapping("m");
331  gameKeyMap->addAction(act);
332 
333  act = new Action("USE", _("Use"));
334  act->setKeyEvent(KeyState(KEYCODE_u, 'u'));
335  act->addDefaultInputMapping("u");
336  gameKeyMap->addAction(act);
337 
338  act = new Action("CONSUME", _("Consume"));
339  act->setKeyEvent(KeyState(KEYCODE_c, 'c'));
340  act->addDefaultInputMapping("c");
341  gameKeyMap->addAction(act);
342 
343  act = new Action("QUIT", _("Quit"));
344  act->setKeyEvent(KeyState(KEYCODE_q, 'q'));
345  act->addDefaultInputMapping("q");
346  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
347  gameKeyMap->addAction(act);
348 
349  act = new Action("START", _("Start"));
350  act->setKeyEvent(KeyState(KEYCODE_RETURN, ASCII_RETURN));
351  act->addDefaultInputMapping("RETURN");
352  act->addDefaultInputMapping("JOY_Y");
353  minigameKeymap->addAction(act);
354 
355  act = new Action("QUIT", _("Quit"));
356  act->setKeyEvent(KeyState(KEYCODE_q, 'q'));
357  act->addDefaultInputMapping("q");
358  act->addDefaultInputMapping("JOY_X");
359  minigameKeymap->addAction(act);
360 
361  act = new Action("CASTEARTH", _("Cast earth spell"));
362  act->setKeyEvent(KeyState(KEYCODE_z, 'z'));
363  act->addDefaultInputMapping("z");
364  act->addDefaultInputMapping("JOY_LEFT");
365  minigameKeymap->addAction(act);
366 
367  act = new Action("CASTAIR", _("Cast air spell"));
368  act->setKeyEvent(KeyState(KEYCODE_x, 'x'));
369  act->addDefaultInputMapping("x");
370  act->addDefaultInputMapping("JOY_UP");
371  minigameKeymap->addAction(act);
372 
373  act = new Action("CASTFIRE", _("Cast fire spell"));
374  act->setKeyEvent(KeyState(KEYCODE_c, 'c'));
375  act->addDefaultInputMapping("c");
376  act->addDefaultInputMapping("JOY_RIGHT");
377  minigameKeymap->addAction(act);
378 
379  act = new Action("CASTWATER", _("Cast water spell"));
380  act->setKeyEvent(KeyState(KEYCODE_v, 'v'));
381  act->addDefaultInputMapping("v");
382  act->addDefaultInputMapping("JOY_DOWN");
383  minigameKeymap->addAction(act);
384 
385  } else if (gameId == "interview") {
386  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
387  act->setLeftClickEvent();
388  act->addDefaultInputMapping("MOUSE_LEFT");
389  act->addDefaultInputMapping("JOY_A");
390  gameKeyMap->addAction(act);
391 
392  act = new Action(kStandardActionRightClick, _("Skip dialog"));
393  act->setRightClickEvent();
394  act->addDefaultInputMapping("MOUSE_RIGHT");
395  act->addDefaultInputMapping("JOY_B");
396  gameKeyMap->addAction(act);
397 
398  act = new Action(kStandardActionPause, _("Pause / Skip cutscene"));
399  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
400  act->addDefaultInputMapping("ESCAPE");
401  act->addDefaultInputMapping("JOY_RIGHT");
402  gameKeyMap->addAction(act);
403 
404  act = new Action("LOAD", _("Quick load"));
405  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
406  act->addDefaultInputMapping("l");
407  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
408  gameKeyMap->addAction(act);
409 
410  act = new Action("SAVE", _("Quick save"));
411  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
412  act->addDefaultInputMapping("s");
413  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
414  gameKeyMap->addAction(act);
415 
416  act = new Action("QUIT", _("Quit"));
417  act->setKeyEvent(KeyState(KEYCODE_q, 'q'));
418  act->addDefaultInputMapping("q");
419  act->addDefaultInputMapping("JOY_LEFT");
420  gameKeyMap->addAction(act);
421 
422  } else if (gameId == "leptonsquest") {
423  act = new Action(kStandardActionLeftClick, _("Move / Interact / Skip dialog"));
424  act->setLeftClickEvent();
425  act->addDefaultInputMapping("MOUSE_LEFT");
426  act->addDefaultInputMapping("JOY_A");
427  gameKeyMap->addAction(act);
428 
429  act = new Action("QUIT", _("Quit"));
430  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
431  act->addDefaultInputMapping("ESCAPE");
432  act->addDefaultInputMapping("JOY_LEFT");
433  gameKeyMap->addAction(act);
434 
435  act = new Action("SHOWFLOOR", _("DEBUG: Show floor"));
436  act->setKeyEvent(KeyState(KEYCODE_f, 'f'));
437  act->addDefaultInputMapping("f");
438  debugKeyMap->addAction(act);
439 
440  act = new Action("SHOWBOXES", _("DEBUG: Show boxes"));
441  act->setKeyEvent(KeyState(KEYCODE_b, 'b'));
442  act->addDefaultInputMapping("b");
443  debugKeyMap->addAction(act);
444 
445  } else if (gameId == "life") {
446  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
447  act->setLeftClickEvent();
448  act->addDefaultInputMapping("MOUSE_LEFT");
449  act->addDefaultInputMapping("JOY_A");
450  gameKeyMap->addAction(act);
451 
452  act = new Action("SKIPDLG", _("Skip dialog"));
453  act->setRightClickEvent();
454  act->addDefaultInputMapping("MOUSE_RIGHT");
455  act->addDefaultInputMapping(".");
456  act->addDefaultInputMapping("JOY_B");
457  gameKeyMap->addAction(act);
458 
459  act = new Action(kStandardActionPause, _("Pause"));
460  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
461  act->addDefaultInputMapping("ESCAPE");
462  act->addDefaultInputMapping("JOY_RIGHT");
463  gameKeyMap->addAction(act);
464 
465  act = new Action("SAVE", _("Quick save"));
466  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
467  act->addDefaultInputMapping("s");
468  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
469  gameKeyMap->addAction(act);
470 
471  act = new Action("LOAD", _("Quick load"));
472  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
473  act->addDefaultInputMapping("l");
474  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
475  gameKeyMap->addAction(act);
476 
477  } else if (gameId == "mandy") {
478  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
479  act->setLeftClickEvent();
480  act->addDefaultInputMapping("MOUSE_LEFT");
481  act->addDefaultInputMapping("JOY_A");
482  gameKeyMap->addAction(act);
483 
484  act = new Action(kStandardActionRightClick, _("Skip dialog"));
485  act->setRightClickEvent();
486  act->addDefaultInputMapping("MOUSE_RIGHT");
487  act->addDefaultInputMapping("JOY_B");
488  gameKeyMap->addAction(act);
489 
490  act = new Action(kStandardActionPause, _("Pause"));
491  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
492  act->addDefaultInputMapping("ESCAPE");
493  act->addDefaultInputMapping("JOY_RIGHT");
494  gameKeyMap->addAction(act);
495 
496  act = new Action("SAVE", _("Quick save"));
497  act->setKeyEvent(KeyState(KEYCODE_s, 's'));
498  act->addDefaultInputMapping("s");
499  act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
500  gameKeyMap->addAction(act);
501 
502  act = new Action("LOAD", _("Quick load"));
503  act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
504  act->addDefaultInputMapping("l");
505  act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
506  gameKeyMap->addAction(act);
507 
508 
509  } else if (gameId == "nsc") {
510  act = new Action(kStandardActionLeftClick, _("Move / Interact / Skip dialog"));
511  act->setLeftClickEvent();
512  act->addDefaultInputMapping("MOUSE_LEFT");
513  act->addDefaultInputMapping("JOY_A");
514  gameKeyMap->addAction(act);
515 
516  act = new Action(kStandardActionRightClick, _("Inventory / Skip dialog"));
517  act->setRightClickEvent();
518  act->addDefaultInputMapping("MOUSE_RIGHT");
519  act->addDefaultInputMapping("JOY_B");
520  gameKeyMap->addAction(act);
521 
522  act = new Action(kStandardActionPause, _("Pause / Skip cutscene"));
523  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
524  act->addDefaultInputMapping("ESCAPE");
525  act->addDefaultInputMapping("JOY_RIGHT");
526  gameKeyMap->addAction(act);
527 
528  } else if (gameId == "verbcoin") {
529  act = new Action(kStandardActionLeftClick, _("Move / Interact"));
530  act->setLeftClickEvent();
531  act->addDefaultInputMapping("MOUSE_LEFT");
532  act->addDefaultInputMapping("JOY_A");
533  gameKeyMap->addAction(act);
534 
535  act = new Action(kStandardActionRightClick, _("Skip dialog"));
536  act->setRightClickEvent();
537  act->addDefaultInputMapping("MOUSE_RIGHT");
538  act->addDefaultInputMapping("JOY_B");
539  gameKeyMap->addAction(act);
540 
541  act = new Action("QUIT", _("Quit"));
542  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
543  act->addDefaultInputMapping("ESCAPE");
544  act->addDefaultInputMapping("JOY_LEFT");
545  gameKeyMap->addAction(act);
546 
547  act = new Action("SHOWBOXES", _("DEBUG: Show boxes"));
548  act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
549  act->addDefaultInputMapping("SPACE");
550  debugKeyMap->addAction(act);
551 
552  act = new Action("SHOWFLOOR", _("DEBUG: Show floor"));
553  act->setKeyEvent(KeyState(KEYCODE_f, 'f'));
554  act->addDefaultInputMapping("f");
555  debugKeyMap->addAction(act);
556 
557  } else {
558  // Default keymap for other games
559  warning("Game-specific keymap is not defined. Using default SLUDGE engine keymap");
560 
561  act = new Action(kStandardActionLeftClick, _("Left click"));
562  act->setLeftClickEvent();
563  act->addDefaultInputMapping("MOUSE_LEFT");
564  act->addDefaultInputMapping("JOY_A");
565  gameKeyMap->addAction(act);
566 
567  act = new Action(kStandardActionRightClick, _("Right click"));
568  act->setRightClickEvent();
569  act->addDefaultInputMapping("MOUSE_RIGHT");
570  act->addDefaultInputMapping("JOY_B");
571  gameKeyMap->addAction(act);
572 
573  act = new Action(kStandardActionPause, _("Pause game"));
574  act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
575  act->addDefaultInputMapping("ESCAPE");
576  act->addDefaultInputMapping("JOY_RIGHT");
577  gameKeyMap->addAction(act);
578  }
579 
580  act = new Action(kStandardActionLeftClick, _("Left click"));
581  act->setLeftClickEvent();
582  act->addDefaultInputMapping("MOUSE_LEFT");
583  act->addDefaultInputMapping("JOY_A");
584  menuKeymap->addAction(act);
585 
586  act = new Action(kStandardActionRightClick, _("Right click"));
587  act->setRightClickEvent();
588  act->addDefaultInputMapping("MOUSE_RIGHT");
589  act->addDefaultInputMapping("JOY_B");
590  menuKeymap->addAction(act);
591 
592  KeymapArray keyMaps(4);
593  keyMaps[0] = gameKeyMap;
594  keyMaps[1] = debugKeyMap;
595  keyMaps[2] = menuKeymap;
596  keyMaps[3] = minigameKeymap;
597 
598  menuKeymap->setEnabled(false);
599 
600  return keyMaps;
601 }
602 
603 } // End of namespace Sludge
Definition: keymap.h:66
Definition: str.h:59
Definition: action.h:41
void warning(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: array.h:52
void addAction(Action *action)
A set of well known keymapper actions.
void addDefaultInputMapping(const String &hwId)
Definition: builtin.h:27
Definition: algorithm.h:29
Definition: keyboard.h:294