[Scummvm-git-logs] scummvm master -> 887db8a821838b06af9dae45dd13e47696a4e0c0

bluegr bluegr at gmail.com
Wed Feb 19 06:04:32 UTC 2020


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7edaf3f2f7 KEYMAPPER: Enable remapping of the mouse wheel
a686b85688 WINTERMUTE: Handle Ctrl&Shift at BaseKeyboardState
f4cd447c9e WINTERMUTE: Add minimal keymapping
e0aed04e85 WINTERMUTE: Keymaps for most games
887db8a821 WINTERMUTE: Fix game keymappings


Commit: 7edaf3f2f755746b35b443b2fdf3e4ec65953a8a
    https://github.com/scummvm/scummvm/commit/7edaf3f2f755746b35b443b2fdf3e4ec65953a8a
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-02-19T08:04:25+02:00

Commit Message:
KEYMAPPER: Enable remapping of the mouse wheel

Changed paths:
    backends/keymapper/action.h
    backends/keymapper/hardware-input.cpp
    backends/keymapper/input-watcher.cpp
    backends/keymapper/keymap.cpp
    backends/keymapper/keymapper.cpp
    common/events.h


diff --git a/backends/keymapper/action.h b/backends/keymapper/action.h
index 0e35d80..d4aef54 100644
--- a/backends/keymapper/action.h
+++ b/backends/keymapper/action.h
@@ -92,6 +92,14 @@ public:
 		setEvent(EVENT_RBUTTONDOWN);
 	}
 
+	void setMouseWheelUpEvent() {
+		setEvent(EVENT_WHEELUP);
+	}
+
+	void setMouseWheelDownEvent() {
+		setEvent(EVENT_WHEELDOWN);
+	}
+
 	/**
 	 * Add a default input mapping for the action
 	 *
diff --git a/backends/keymapper/hardware-input.cpp b/backends/keymapper/hardware-input.cpp
index 01a62a2..543c850 100644
--- a/backends/keymapper/hardware-input.cpp
+++ b/backends/keymapper/hardware-input.cpp
@@ -234,6 +234,8 @@ const HardwareInputTableEntry defaultMouseButtons[] = {
     { "MOUSE_LEFT",   MOUSE_BUTTON_LEFT,   _s("Left Mouse Button")   },
     { "MOUSE_RIGHT",  MOUSE_BUTTON_RIGHT,  _s("Right Mouse Button")  },
     { "MOUSE_MIDDLE", MOUSE_BUTTON_MIDDLE, _s("Middle Mouse Button") },
+    { "MOUSE_WHEEL_UP", MOUSE_WHEEL_UP, _s("Mouse Wheel Up") },
+    { "MOUSE_WHEEL_DOWN", MOUSE_WHEEL_DOWN, _s("Mouse Wheel Down") },
     { nullptr,        0,                   nullptr                   }
 };
 
@@ -434,6 +436,12 @@ HardwareInput MouseHardwareInputSet::findHardwareInput(const Event &event) const
 	case EVENT_MBUTTONUP:
 		button = MOUSE_BUTTON_MIDDLE;
 		break;
+	case Common::EVENT_WHEELUP:
+		button = MOUSE_WHEEL_UP;
+		break;
+	case Common::EVENT_WHEELDOWN:
+		button = MOUSE_WHEEL_DOWN;
+		break;
 	default:
 		button = -1;
 		break;
diff --git a/backends/keymapper/input-watcher.cpp b/backends/keymapper/input-watcher.cpp
index 8b757ec..c1dc6d3 100644
--- a/backends/keymapper/input-watcher.cpp
+++ b/backends/keymapper/input-watcher.cpp
@@ -70,6 +70,8 @@ bool InputWatcher::notifyEvent(const Event &event) {
 		case EVENT_LBUTTONUP:
 		case EVENT_RBUTTONUP:
 		case EVENT_MBUTTONUP:
+		case EVENT_WHEELUP:
+		case EVENT_WHEELDOWN:
 		case EVENT_CUSTOM_BACKEND_HARDWARE:
 			_hwInput = _keymapper->findHardwareInput(event);
 			if (_hwInput.type != kHardwareInputTypeInvalid) {
diff --git a/backends/keymapper/keymap.cpp b/backends/keymapper/keymap.cpp
index 055b4c0..55ca9e7 100644
--- a/backends/keymapper/keymap.cpp
+++ b/backends/keymapper/keymap.cpp
@@ -147,6 +147,14 @@ Keymap::ActionArray Keymap::getMappedActions(const Event &event) const {
 		HardwareInput hardwareInput = HardwareInput::createMouse("", MOUSE_BUTTON_MIDDLE, "");
 		return _hwActionMap[hardwareInput];
 	}
+	case Common::EVENT_WHEELUP: {
+		HardwareInput hardwareInput = HardwareInput::createMouse("", MOUSE_WHEEL_UP, "");
+		return _hwActionMap[hardwareInput];
+	}
+	case Common::EVENT_WHEELDOWN: {
+		HardwareInput hardwareInput = HardwareInput::createMouse("", MOUSE_WHEEL_DOWN, "");
+		return _hwActionMap[hardwareInput];
+	}
 	case EVENT_JOYBUTTON_DOWN:
 	case EVENT_JOYBUTTON_UP: {
 		HardwareInput hardwareInput = HardwareInput::createJoystickButton("", event.joystick.button, "");
diff --git a/backends/keymapper/keymapper.cpp b/backends/keymapper/keymapper.cpp
index adbd556..7f7f90b 100644
--- a/backends/keymapper/keymapper.cpp
+++ b/backends/keymapper/keymapper.cpp
@@ -228,7 +228,9 @@ List<Event> Keymapper::mapEvent(const Event &ev) {
 }
 
 Keymapper::IncomingEventType Keymapper::convertToIncomingEventType(const Event &ev) const {
-	if (ev.type == EVENT_CUSTOM_BACKEND_HARDWARE) {
+	if (ev.type == EVENT_CUSTOM_BACKEND_HARDWARE
+	           || ev.type == EVENT_WHEELDOWN
+	           || ev.type == EVENT_WHEELUP) {
 		return kIncomingEventInstant;
 	} else if (ev.type == EVENT_JOYAXIS_MOTION) {
 		if (ev.joystick.axis >= ARRAYSIZE(_joystickAxisPreviouslyPressed)) {
@@ -260,6 +262,8 @@ bool Keymapper::isMouseEvent(const Event &event) {
 	        || event.type == EVENT_RBUTTONUP
 	        || event.type == EVENT_MBUTTONDOWN
 	        || event.type == EVENT_MBUTTONUP
+	        || event.type == EVENT_WHEELDOWN
+	        || event.type == EVENT_WHEELUP
 	        || event.type == EVENT_MOUSEMOVE;
 }
 
diff --git a/common/events.h b/common/events.h
index ba017b4..c50dc47 100644
--- a/common/events.h
+++ b/common/events.h
@@ -156,7 +156,9 @@ enum JoystickAxis {
 enum MouseButton {
 	MOUSE_BUTTON_LEFT   = 0,
 	MOUSE_BUTTON_RIGHT  = 1,
-	MOUSE_BUTTON_MIDDLE = 2
+	MOUSE_BUTTON_MIDDLE = 2,
+	MOUSE_WHEEL_UP = 3,
+	MOUSE_WHEEL_DOWN = 4
 };
 
 typedef uint32 CustomEventType;


Commit: a686b85688cd0d2accdbd990ad1e80de10250f5d
    https://github.com/scummvm/scummvm/commit/a686b85688cd0d2accdbd990ad1e80de10250f5d
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-02-19T08:04:25+02:00

Commit Message:
WINTERMUTE: Handle Ctrl&Shift at BaseKeyboardState

Changed paths:
    engines/wintermute/base/base_keyboard_state.cpp


diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index 4e87011..bfa514a 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -47,6 +47,12 @@ const keyCodeMapping wmeOriginalMapping[] = {
 	{ Common::KEYCODE_ESCAPE,       27 },
 	{ Common::KEYCODE_SPACE,        32 },
 
+	{ Common::KEYCODE_LSHIFT,       16 },
+	{ Common::KEYCODE_RSHIFT,       16 },
+	{ Common::KEYCODE_LCTRL,        17 },
+	{ Common::KEYCODE_RCTRL,        17 },
+	// WME 1.x does not produce events for LALT & RALT
+
 	{ Common::KEYCODE_PAUSE,        19 },
 	{ Common::KEYCODE_PAGEUP,       33 },
 	{ Common::KEYCODE_PAGEDOWN,     34 },
@@ -144,6 +150,13 @@ const keyCodeMapping wmeSdlMapping[] = {
 	{ Common::KEYCODE_SPACE,        32 },
 	{ Common::KEYCODE_CAPSLOCK,     1073741881 },
 
+	{ Common::KEYCODE_LCTRL,        1073742048 },
+	{ Common::KEYCODE_LSHIFT,       1073742049 },
+	{ Common::KEYCODE_LALT,         1073742050 },
+	{ Common::KEYCODE_RCTRL,        1073742052 },
+	{ Common::KEYCODE_RSHIFT,       1073742053 },
+	{ Common::KEYCODE_RALT,         1073742054 },
+
 	{ Common::KEYCODE_DELETE,       127 },
 	{ Common::KEYCODE_PRINT,        1073741894 },
 	{ Common::KEYCODE_SCROLLOCK,    1073741895 },
@@ -325,6 +338,16 @@ bool BaseKeyboardState::scCallMethod(ScScript *script, ScStack *stack, ScStack *
             if (vKeyCode == Common::KEYCODE_INVALID) {
 				warning("Unknown VKEY: %d", temp);
 			}
+
+			if (BaseEngine::instance().getTargetExecutable() < WME_LITE && temp == 16) {
+				stack->pushBool(_keyStates[Common::KEYCODE_LSHIFT] || _keyStates[Common::KEYCODE_RSHIFT]);
+				return STATUS_OK;
+			}
+
+			if (BaseEngine::instance().getTargetExecutable() < WME_LITE && temp == 17) {
+				stack->pushBool(_keyStates[Common::KEYCODE_LCTRL] || _keyStates[Common::KEYCODE_RCTRL]);
+				return STATUS_OK;
+			}
 		}
 
 		bool isDown = _keyStates[vKeyCode];
@@ -490,9 +513,9 @@ bool BaseKeyboardState::readKey(Common::Event *event) {
 		}
 	}
 
-	_currentControl = isControlDown();
-	_currentAlt     = isAltDown();
-	_currentShift   = isShiftDown();
+	_currentControl = event->kbd.flags & Common::KBD_CTRL;
+	_currentAlt     = event->kbd.flags & Common::KBD_ALT;
+	_currentShift   = event->kbd.flags & Common::KBD_SHIFT;
 
 	return STATUS_OK;
 }


Commit: f4cd447c9ef76767e3f52838d8120b8d5181314f
    https://github.com/scummvm/scummvm/commit/f4cd447c9ef76767e3f52838d8120b8d5181314f
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-02-19T08:04:25+02:00

Commit Message:
WINTERMUTE: Add minimal keymapping

Those 4 keys are enough to complete most game:
https://wiki.scummvm.org/index.php?title=Wintermute/Controls

Changed paths:
    engines/wintermute/detection.cpp


diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 1e13ef7..2f094d6 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -25,6 +25,9 @@
 #include "engines/wintermute/game_description.h"
 #include "engines/wintermute/base/base_persistence_manager.h"
 
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+
 #include "common/config-manager.h"
 #include "common/error.h"
 #include "common/fs.h"
@@ -210,6 +213,41 @@ public:
 		pm.getSaveStateDesc(slot, retVal);
 		return retVal;
 	}
+
+	Common::KeymapArray initKeymaps(const char *target) const {
+		using namespace Common;
+
+		Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "wintermute", "WinterMute Engine");
+
+		Action *act;
+		
+		act = new Action("LCLK", _("Left Click"));
+		act->setLeftClickEvent();
+		act->addDefaultInputMapping("MOUSE_LEFT");
+		act->addDefaultInputMapping("JOY_A");
+		engineKeyMap->addAction(act);
+
+		act = new Action("RCLK", _("Right Click"));
+		act->setRightClickEvent();
+		act->addDefaultInputMapping("MOUSE_RIGHT");
+		act->addDefaultInputMapping("JOY_B");
+		engineKeyMap->addAction(act);
+
+		act = new Action("RETURN", _("Confirm"));
+		act->setKeyEvent(KeyState(KEYCODE_RETURN, ASCII_RETURN));
+		act->addDefaultInputMapping("RETURN");
+		//TODO: Joy control? Does
+		engineKeyMap->addAction(act);
+
+		act = new Action("ESCAPE", _("Escape"));
+		act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
+		act->addDefaultInputMapping("ESCAPE");
+		act->addDefaultInputMapping("JOY_Y");
+		engineKeyMap->addAction(act);
+
+		return Keymap::arrayOf(engineKeyMap);
+	}
+
 };
 
 } // End of namespace Wintermute


Commit: e0aed04e85b2952a06b5a3a842345c8d6a5a38fc
    https://github.com/scummvm/scummvm/commit/e0aed04e85b2952a06b5a3a842345c8d6a5a38fc
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-02-19T08:04:25+02:00

Commit Message:
WINTERMUTE: Keymaps for most games

Changed paths:
    engines/wintermute/detection.cpp


diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 2f094d6..9ca3097 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -27,6 +27,7 @@
 
 #include "backends/keymapper/action.h"
 #include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
 
 #include "common/config-manager.h"
 #include "common/error.h"
@@ -217,35 +218,1415 @@ public:
 	Common::KeymapArray initKeymaps(const char *target) const {
 		using namespace Common;
 
-		Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "wintermute", "WinterMute Engine");
+		Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "wintermute", "Wintermute engine");
 
 		Action *act;
 		
 		act = new Action("LCLK", _("Left Click"));
 		act->setLeftClickEvent();
-		act->addDefaultInputMapping("MOUSE_LEFT");
-		act->addDefaultInputMapping("JOY_A");
+		act->addDefaultInputMapping("MOUSE_LEFT"); // original mouse
+		act->addDefaultInputMapping("JOY_A"); // extra joy
 		engineKeyMap->addAction(act);
 
 		act = new Action("RCLK", _("Right Click"));
 		act->setRightClickEvent();
-		act->addDefaultInputMapping("MOUSE_RIGHT");
-		act->addDefaultInputMapping("JOY_B");
+		act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse
+		act->addDefaultInputMapping("JOY_B"); // extra joy
 		engineKeyMap->addAction(act);
 
 		act = new Action("RETURN", _("Confirm"));
 		act->setKeyEvent(KeyState(KEYCODE_RETURN, ASCII_RETURN));
-		act->addDefaultInputMapping("RETURN");
-		//TODO: Joy control? Does
+		act->addDefaultInputMapping("RETURN"); // original keyboard
+		//TODO: extra joy control, e.g. "JOY_R+JOY_X"
 		engineKeyMap->addAction(act);
 
 		act = new Action("ESCAPE", _("Escape"));
 		act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
-		act->addDefaultInputMapping("ESCAPE");
-		act->addDefaultInputMapping("JOY_Y");
+		act->addDefaultInputMapping("ESCAPE"); // original keyboard
+		act->addDefaultInputMapping("JOY_X"); // extra joy
 		engineKeyMap->addAction(act);
 
-		return Keymap::arrayOf(engineKeyMap);
+		Common::KeymapArray result = Keymap::arrayOf(engineKeyMap);
+
+		Common::String gameId = ConfMan.get("gameid", target);
+		const char *gameDescr = "Unknown WME game";
+		for (const PlainGameDescriptor *it = Wintermute::wintermuteGames; it->gameId ; it++ ) {
+			if (gameId == it->gameId) {
+				gameDescr = it->description;
+			}
+		}
+
+		if (gameId == "actualdest" ||
+			gameId == "artofmurder1" ||
+			gameId == "agustin" ||
+			gameId == "bickadoodle" ||
+			gameId == "bthreshold" ||
+			gameId == "colorsoncanvas" ||
+			gameId == "corrosion" ||
+			gameId == "deadcity" ||
+			gameId == "darkfallls" ||
+			gameId == "drbohus" ||
+			gameId == "dreaming" ||
+			gameId == "dreamscape" ||
+			gameId == "driller" ||
+			gameId == "everydaygray" ||
+			gameId == "findinghope" ||
+			gameId == "four" ||
+			gameId == "framed" ||
+			gameId == "hamlet" ||
+			gameId == "hor" ||
+			gameId == "juliauntold" ||
+			gameId == "lonelyrobot" ||
+			gameId == "machumayu" ||
+			gameId == "mirage" ||
+			gameId == "nighttrain" ||
+			gameId == "projectdoom" ||
+			gameId == "rosemary" ||
+			gameId == "satanandsons" ||
+			gameId == "sofiasdebt" ||
+			gameId == "spaceinvaders" ||
+			gameId == "spacemadness" ||
+			gameId == "tanya1" ||
+			gameId == "tanya2" ||
+			gameId == "theancientmark1" ||
+			gameId == "thebox" ||
+			gameId == "thekite" ||
+			gameId == "tradestory" ||
+			gameId == "wmedemo"
+		) {
+			return Keymap::arrayOf(engineKeyMap);
+		}
+
+		Keymap *gameKeyMap = new Keymap(Keymap::kKeymapTypeGame, gameId, gameDescr);
+
+		if (gameId == "dfafadventure" ||
+			gameId == "dreamcat" ||
+			gameId == "openquest"
+		) {
+			act = new Action("LOOK", _("Look At"));
+			act->setKeyEvent(KeyState(KEYCODE_l, 'l'));
+			act->addDefaultInputMapping("l"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("TALK", _("Talk to"));
+			act->setKeyEvent(KeyState(KEYCODE_t, 't'));
+			act->addDefaultInputMapping("t"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PICK", _("Pick up"));
+			act->setKeyEvent(KeyState(KEYCODE_p, 'p'));
+			act->addDefaultInputMapping("p"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("USE", _("Use"));
+			act->setKeyEvent(KeyState(KEYCODE_u, 'u'));
+			act->addDefaultInputMapping("u"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "basisoctavus" ||
+			gameId == "lovmamuta" ||
+			gameId == "wmedemo3d"
+		) {
+			act = new Action(kStandardActionMoveUp, _("Walk forward"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Walk backward"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Turn left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Turn right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GEOM", _("Show scene geometry"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "5ld" ||
+			gameId == "5ma" ||
+			gameId == "dirtysplit" ||
+			gameId == "projectjoe"
+		) {
+			act = new Action("PAGEUP", _("Previous page"));
+			act->setKeyEvent(KEYCODE_PAGEUP);
+			act->addDefaultInputMapping("PAGEUP"); // original keyboard
+			act->addDefaultInputMapping("LEFT"); // original keyboard for 5ma & dirtysplit
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEDN", _("Next page"));
+			act->setKeyEvent(KEYCODE_PAGEDOWN);
+			act->addDefaultInputMapping("PAGEDOWN"); // original keyboard
+			act->addDefaultInputMapping("RIGHT"); // original keyboard for 5ma & dirtysplit
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "chivalry" ||
+			gameId == "paintaria" ||
+			gameId == "pigeons" ||
+			gameId == "rhiannon" ||
+			gameId == "shinestar"
+		) {
+			act = new Action("SKIP", _("Skip"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "drdoylemotch" ||
+			gameId == "kulivocko" ||
+			gameId == "rebeccacarlson1"
+		) {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "goldencalf" ||
+			gameId == "msos" ||
+			gameId == "one"
+		) {
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "bookofgron") {
+			act = new Action("MCLK", _("Middle Click"));
+			act->setMiddleClickEvent();
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // original mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			engineKeyMap->addAction(act);
+		} else if (gameId == "alimardan1") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIA", _("GUI variant A"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIB", _("GUI variant B"));
+			act->setKeyEvent(KEYCODE_F11);
+			act->addDefaultInputMapping("F11"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_HOME);
+			act->addDefaultInputMapping("HOME"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "alimardan2") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIA", _("GUI variant A"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIB", _("GUI variant B"));
+			act->setKeyEvent(KEYCODE_F11);
+			act->addDefaultInputMapping("F11"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEX", _("Phone cancel button"));
+			act->setKeyEvent(KeyState(KEYCODE_BACKSPACE, ASCII_BACKSPACE));
+			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEU", _("Phone up button"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONED", _("Phone down button"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE0", _("Phone 0 button"));
+			act->setKeyEvent(KeyState(KEYCODE_0, '0'));
+			act->addDefaultInputMapping("0"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE1", _("Phone 1 button"));
+			act->setKeyEvent(KeyState(KEYCODE_1, '1'));
+			act->addDefaultInputMapping("1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE2", _("Phone 2 button"));
+			act->setKeyEvent(KeyState(KEYCODE_2, '2'));
+			act->addDefaultInputMapping("2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE3", _("Phone 3 button"));
+			act->setKeyEvent(KeyState(KEYCODE_3, '3'));
+			act->addDefaultInputMapping("3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE4", _("Phone 4 button"));
+			act->setKeyEvent(KeyState(KEYCODE_4, '4'));
+			act->addDefaultInputMapping("4"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE5", _("Phone 5 button"));
+			act->setKeyEvent(KeyState(KEYCODE_5, '5'));
+			act->addDefaultInputMapping("5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE6", _("Phone 6 button"));
+			act->setKeyEvent(KeyState(KEYCODE_6, '6'));
+			act->addDefaultInputMapping("6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE7", _("Phone 7 button"));
+			act->setKeyEvent(KeyState(KEYCODE_7, '7'));
+			act->addDefaultInputMapping("7"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE8", _("Phone 8 button"));
+			act->setKeyEvent(KeyState(KEYCODE_8, '8'));
+			act->addDefaultInputMapping("8"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE9", _("Phone 9 button"));
+			act->setKeyEvent(KeyState(KEYCODE_9, '9'));
+			act->addDefaultInputMapping("9"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEA", _("Phone * button"));
+			act->setKeyEvent(KeyState(KEYCODE_ASTERISK, '*'));
+			act->addDefaultInputMapping("ASTERISK"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEH", _("Phone # button"));
+			act->setKeyEvent(KeyState(KEYCODE_HASH, '#'));
+			act->addDefaultInputMapping("HASH"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_HOME);
+			act->addDefaultInputMapping("HOME"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "alphapolaris") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("HELP", _("Show help"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("PAGEUP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("PAGEDOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GEOM", _("Show scene geometry"));
+			act->setKeyEvent(KeyState(KEYCODE_F2, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SHADOW", _("Change shadow type"));
+			act->setKeyEvent(KeyState(KEYCODE_F3, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KeyState(KEYCODE_F5, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("VOLMAX", _("Volume max"));
+			act->setKeyEvent(KeyState(KEYCODE_F6, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("DBGCLI", _("Show debug parser"));
+			act->setKeyEvent(KeyState(KEYCODE_F7, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F7"); // original keyboard
+			act->addDefaultInputMapping("C+F10"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+
+			act = new Action("DBG", _("Debug print"));
+			act->setKeyEvent(KeyState(KEYCODE_F8, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F8"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("EXIT", _("Exit"));
+			act->setKeyEvent(KeyState(KEYCODE_F9, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F9"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("LIGHT", _("Light helper window"));
+			act->setKeyEvent(KeyState(KEYCODE_F11, 0, KBD_CTRL));
+			act->addDefaultInputMapping("C+F11"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Walk forward"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Walk backward"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Turn left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Turn right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Run forward"));
+			act->setKeyEvent(KeyState(KEYCODE_UP, 0, KBD_SHIFT));
+			act->addDefaultInputMapping("S+UP"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Run backward"));
+			act->setKeyEvent(KeyState(KEYCODE_DOWN, 0, KBD_SHIFT));
+			act->addDefaultInputMapping("S+DOWN"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Turn left fast"));
+			act->setKeyEvent(KeyState(KEYCODE_LEFT, 0, KBD_SHIFT));
+			act->addDefaultInputMapping("S+LEFT"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Turn right fast"));
+			act->setKeyEvent(KeyState(KEYCODE_RIGHT, 0, KBD_SHIFT));
+			act->addDefaultInputMapping("S+RIGHT"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "apeiron") {
+			act = new Action("BLUE", _("Show blueprint"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KeyState(KEYCODE_n, 'n'));
+			act->addDefaultInputMapping("n"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "carolreed4") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_TAB, ASCII_TAB));
+			act->addDefaultInputMapping("TAB"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("VOLMAX", _("Volume max"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("VOLOFF", _("Volume off"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "erinmyers") {
+			act = new Action("GUIB", _("Change font size"));
+			act->setKeyEvent(KEYCODE_END);
+			act->addDefaultInputMapping("END"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "escapemansion") {
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+
+			act = new Action("DBG", _("Debug print"));
+			act->setKeyEvent(KEYCODE_F2);
+			act->addDefaultInputMapping("F2"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "facenoir") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // original mouse
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "foxtail") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // original mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEUP", _("Previous page"));
+			act->setKeyEvent(KEYCODE_PAGEUP);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("PAGEUP"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEDN", _("Next page"));
+			act->setKeyEvent(KEYCODE_PAGEDOWN);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("PAGEDOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionSave, _("Save game"));
+			act->setKeyEvent(KEYCODE_F2);
+			act->addDefaultInputMapping("F2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionLoad, _("Load game"));
+			act->setKeyEvent(KEYCODE_F3);
+			act->addDefaultInputMapping("F3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("QSAVE", _("Quick save"));
+			act->setKeyEvent(KEYCODE_F5);
+			act->addDefaultInputMapping("F5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SPD1", _("Walking speed: Low"));
+			act->setKeyEvent(KEYCODE_F6);
+			act->addDefaultInputMapping("F6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SPD2", _("Walking speed: Medium"));
+			act->setKeyEvent(KEYCODE_F7);
+			act->addDefaultInputMapping("F7"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SPD3", _("Walking speed: High"));
+			act->setKeyEvent(KEYCODE_F8);
+			act->addDefaultInputMapping("F8"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("QLOAD", _("Quick load"));
+			act->setKeyEvent(KEYCODE_F9);
+			act->addDefaultInputMapping("F9"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("NOWAIT", _("Cancel waiting"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("CAPT", _("Toggle mouse capture"));
+			act->setKeyEvent(KEYCODE_F11);
+			act->addDefaultInputMapping("F11"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("HOME", _("First page"));
+			act->setKeyEvent(KEYCODE_HOME);
+			act->addDefaultInputMapping("HOME"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("END", _("Last page"));
+			act->setKeyEvent(KEYCODE_END);
+			act->addDefaultInputMapping("END"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			Common::String extra = ConfMan.get("extra", target);
+			if (extra.hasPrefix("1.2.230.") || extra.hasPrefix("1.2.304.") || extra.hasPrefix("1.2.362.")) {
+				act = new Action("SPDMAX", _("Walking speed: Ultra Super Mega Fast"));
+				act->setKeyEvent(KeyState(KEYCODE_s, 's', KBD_CTRL|KBD_ALT|KBD_SHIFT));
+				act->addDefaultInputMapping("C+A+S+s"); // original keyboard
+				//TODO: extra joy control, e.g. "JOY_R+JOY_A"
+				gameKeyMap->addAction(act);
+			}
+
+			if (extra.hasPrefix("1.2.362.")) {
+				act = new Action("WTF", _("???"));
+				act->setKeyEvent(KeyState(KEYCODE_z, 'z'));
+				act->addDefaultInputMapping("z"); // original keyboard
+				//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+				gameKeyMap->addAction(act);
+			}
+		} else if (gameId == "ghostsheet") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_TAB, ASCII_TAB));
+			act->addDefaultInputMapping("TAB"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT1", _("Ability: Telekinesis"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT2", _("Ability: Push"));
+			act->setKeyEvent(KEYCODE_F2);
+			act->addDefaultInputMapping("F2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT3", _("Ability: Lightning"));
+			act->setKeyEvent(KEYCODE_F3);
+			act->addDefaultInputMapping("F3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT4", _("Ability: Light"));
+			act->setKeyEvent(KEYCODE_F4);
+			act->addDefaultInputMapping("F4"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT5", _("Ability: Wind"));
+			act->setKeyEvent(KEYCODE_F5);
+			act->addDefaultInputMapping("F5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT6", _("Ability: Sound"));
+			act->setKeyEvent(KEYCODE_F6);
+			act->addDefaultInputMapping("F6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT7", _("Ability: Esence"));
+			act->setKeyEvent(KEYCODE_F7);
+			act->addDefaultInputMapping("F7"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ABLT8", _("Ability: Exorcist"));
+			act->setKeyEvent(KEYCODE_F8);
+			act->addDefaultInputMapping("F8"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SKIPMG", _("Skip minigame"));
+			act->setKeyEvent(KeyState(KEYCODE_BACKSPACE, ASCII_BACKSPACE));
+			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "helga") {
+			act = new Action("PAGEUP", _("Previous page"));
+			act->setKeyEvent(KEYCODE_PAGEUP);
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("PAGEUP"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEDN", _("Next page"));
+			act->setKeyEvent(KEYCODE_PAGEDOWN);
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("PAGEDOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEX", _("Phone cancel button"));
+			act->setKeyEvent(KeyState(KEYCODE_BACKSPACE, ASCII_BACKSPACE));
+			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEU", _("Phone up button"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONED", _("Phone down button"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE0", _("Phone 0 button"));
+			act->setKeyEvent(KeyState(KEYCODE_0, '0'));
+			act->addDefaultInputMapping("0"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE1", _("Phone 1 button"));
+			act->setKeyEvent(KeyState(KEYCODE_1, '1'));
+			act->addDefaultInputMapping("1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE2", _("Phone 2 button"));
+			act->setKeyEvent(KeyState(KEYCODE_2, '2'));
+			act->addDefaultInputMapping("2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE3", _("Phone 3 button"));
+			act->setKeyEvent(KeyState(KEYCODE_3, '3'));
+			act->addDefaultInputMapping("3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE4", _("Phone 4 button"));
+			act->setKeyEvent(KeyState(KEYCODE_4, '4'));
+			act->addDefaultInputMapping("4"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE5", _("Phone 5 button"));
+			act->setKeyEvent(KeyState(KEYCODE_5, '5'));
+			act->addDefaultInputMapping("5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE6", _("Phone 6 button"));
+			act->setKeyEvent(KeyState(KEYCODE_6, '6'));
+			act->addDefaultInputMapping("6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE7", _("Phone 7 button"));
+			act->setKeyEvent(KeyState(KEYCODE_7, '7'));
+			act->addDefaultInputMapping("7"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE8", _("Phone 8 button"));
+			act->setKeyEvent(KeyState(KEYCODE_8, '8'));
+			act->addDefaultInputMapping("8"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONE9", _("Phone 9 button"));
+			act->setKeyEvent(KeyState(KEYCODE_9, '9'));
+			act->addDefaultInputMapping("9"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEA", _("Phone * button"));
+			act->setKeyEvent(KeyState(KEYCODE_ASTERISK, '*'));
+			act->addDefaultInputMapping("ASTERISK"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("PHONEH", _("Phone # button"));
+			act->setKeyEvent(KeyState(KEYCODE_HASH, '#'));
+			act->addDefaultInputMapping("HASH"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "knossos") {
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KeyState(KEYCODE_a, 'a', KBD_SHIFT));
+			act->addDefaultInputMapping("S+a"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "jamesperis") {
+			act = new Action("HINT", _("Show hints / Dance move"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Dance move up"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Dance move down"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Dance move left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Dance move right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEUP", _("Previous page"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEDN", _("Next page"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			act->addDefaultInputMapping("PAGEDOWN"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "julia") {
+			act = new Action("SKIP", _("Skip"));
+			act->setKeyEvent(KEYCODE_F12);
+			act->addDefaultInputMapping("F12"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "juliastars") {
+			act = new Action("CANCEL", _("Cancel input"));
+			act->setKeyEvent(KEYCODE_BACKSPACE);
+			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Up"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Down"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("NOWAIT", _("Cancel waiting"));
+			act->setKeyEvent(KEYCODE_F11);
+			act->addDefaultInputMapping("F11"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "looky") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F12);
+			act->addDefaultInputMapping("F12"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "mentalrepairs") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("HELP", _("Show help"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "oknytt") {
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_TAB, ASCII_TAB));
+			act->addDefaultInputMapping("TAB"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "onehelluvaday") {
+			act = new Action(kStandardActionMoveUp, _("Up"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Down"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SHIFT", _("Shift"));
+			act->setKeyEvent(KEYCODE_RSHIFT);
+			act->addDefaultInputMapping("LSHIFT"); // original keyboard control
+			act->addDefaultInputMapping("RSHIFT"); // original keyboard control
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "palladion") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F12);
+			act->addDefaultInputMapping("F12"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "papasdaughters1") {
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "papasdaughters2") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "pizzamorgana") {
+			act = new Action("ACTNXT", _("Next action"));
+			act->setRightClickEvent();
+			act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse (globally)
+			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard (ingame)
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("JOY_B"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("ACTPRV", _("Previous action"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("SKIP", _("Skip"));
+			act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
+			act->addDefaultInputMapping("PERIOD"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAUSE", _("Pause"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("p"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionOpenSettings, _("Settings"));
+			act->setKeyEvent(KeyState(KEYCODE_s, 's'));
+			act->addDefaultInputMapping("s"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ANSWR1", _("Dialogue answer 1"));
+			act->setKeyEvent(KeyState(KEYCODE_1, '1'));
+			act->addDefaultInputMapping("1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ANSWR2", _("Dialogue answer 2"));
+			act->setKeyEvent(KeyState(KEYCODE_2, '2'));
+			act->addDefaultInputMapping("2"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ANSWR3", _("Dialogue answer 3"));
+			act->setKeyEvent(KeyState(KEYCODE_3, '3'));
+			act->addDefaultInputMapping("3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("ANSWR4", _("Dialogue answer 4"));
+			act->setKeyEvent(KeyState(KEYCODE_4, '4'));
+			act->addDefaultInputMapping("4"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KeyState(KEYCODE_p, 'p', KBD_SHIFT));
+			act->addDefaultInputMapping("S+p"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "polechudes") {
+			act = new Action("SLOW", _("Spin slower"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("FAST", _("Spin faster"));
+			act->setKeyEvent(KEYCODE_F2);
+			act->addDefaultInputMapping("F2"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "reptilesquest") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_x, 'x'));
+			act->addDefaultInputMapping("x"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("HINT", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("MAP", _("Show map"));
+			act->setKeyEvent(KeyState(KEYCODE_m, 'm'));
+			act->addDefaultInputMapping("m"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "reversion1") {
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "reversion2") {
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "ritter") {
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SKIP", _("Skip"));
+			act->setKeyEvent(KeyState(KEYCODE_BACKSPACE, ASCII_BACKSPACE));
+			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "shaban") {
+			act = new Action("MAP", _("Show map"));
+			act->setKeyEvent(KeyState(KEYCODE_m, 'm'));
+			act->addDefaultInputMapping("m"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "tib") {
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F9);
+			act->addDefaultInputMapping("F9"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "thelastcrownmh") {
+			act = new Action("EXIT", _("Exit"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("GEOM", _("Show scene geometry"));
+			act->setKeyEvent(KEYCODE_F2);
+			act->addDefaultInputMapping("F2"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F3);
+			act->addDefaultInputMapping("F3"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionOpenSettings, _("Settings"));
+			act->setKeyEvent(KEYCODE_F4);
+			act->addDefaultInputMapping("F4"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("NOWAIT", _("Cancel waiting"));
+			act->setKeyEvent(KEYCODE_F5);
+			act->addDefaultInputMapping("F5"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("DBG", _("Debug print"));
+			act->setKeyEvent(KEYCODE_F6);
+			act->addDefaultInputMapping("F6"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("BEZIER", _("Bezier window"));
+			act->setKeyEvent(KEYCODE_F7);
+			act->addDefaultInputMapping("F7"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "thelostcrowngha") {
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRS", _("Save screenshot"));
+			act->setKeyEvent(KEYCODE_F3);
+			act->addDefaultInputMapping("F3"); // original keyboard
+			gameKeyMap->addAction(act);
+		} else if (gameId == "twc") {
+			act = new Action("ACT", _("Droid action"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Up"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Down"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIA", _("GUI variant A"));
+			act->setKeyEvent(KEYCODE_F10);
+			act->addDefaultInputMapping("F10"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("GUIB", _("GUI variant B"));
+			act->setKeyEvent(KEYCODE_F11);
+			act->addDefaultInputMapping("F11"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("WTF", _("???"));
+			act->setKeyEvent(KEYCODE_HOME);
+			act->addDefaultInputMapping("HOME"); // original keyboard
+			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
+			gameKeyMap->addAction(act);
+		} else if (gameId == "vsevolod") {
+			act = new Action("INV", _("Show inventory"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("JRNL", _("Show journal"));
+			act->setKeyEvent(KeyState(KEYCODE_j, 'j'));
+			act->addDefaultInputMapping("j"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionOpenSettings, _("Music menu"));
+			act->setKeyEvent(KeyState(KEYCODE_m, 'm'));
+			act->addDefaultInputMapping("m"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("UP"); // extra keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("DOWN"); // extra keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "wtetris") {
+			act = new Action("ROTATE", _("Rotate"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_RIGHT"); // extra mouse
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("KP4"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("KP6"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("DROP", _("Drop"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("KP2"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "zbang") {
+			act = new Action("ACTNXT", _("Next action"));
+			act->setRightClickEvent();
+			act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard
+			act->addDefaultInputMapping("JOY_B"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("ACTPRV", _("Previous action"));
+			act->setRightClickEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("HINT", _("Show hints"));
+			act->setKeyEvent(KeyState(KEYCODE_TAB, ASCII_TAB));
+			act->addDefaultInputMapping("TAB"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("SKIP", _("Skip"));
+			act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
+			act->addDefaultInputMapping("PERIOD"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Walk forward"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Turn left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Turn right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else {
+			warning("Autogenerated keymap for unknown WME game, id '%s', target '%s'", gameId.c_str(), target);
+
+			act = new Action("SPACE", _("Space"));
+			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
+			act->addDefaultInputMapping("SPACE"); // original keyboard
+			act->addDefaultInputMapping("JOY_Y"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveLeft, _("Left"));
+			act->setKeyEvent(KEYCODE_LEFT);
+			act->addDefaultInputMapping("LEFT"); // original keyboard
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveRight, _("Right"));
+			act->setKeyEvent(KEYCODE_RIGHT);
+			act->addDefaultInputMapping("RIGHT"); // original keyboard
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveUp, _("Up"));
+			act->setKeyEvent(KEYCODE_UP);
+			act->addDefaultInputMapping("UP"); // original keyboard
+			act->addDefaultInputMapping("JOY_UP"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action(kStandardActionMoveDown, _("Down"));
+			act->setKeyEvent(KEYCODE_DOWN);
+			act->addDefaultInputMapping("DOWN"); // original keyboard
+			act->addDefaultInputMapping("JOY_DOWN"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("MCLK", _("Middle Click"));
+			act->setMiddleClickEvent();
+			act->addDefaultInputMapping("MOUSE_MIDDLE"); // original mouse
+			engineKeyMap->addAction(act);
+
+			act = new Action("SCRLUP", _("Scroll up"));
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("SCRLDN", _("Scroll down"));
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
+			gameKeyMap->addAction(act);
+
+			act = new Action("KEYF1", _("F1"));
+			act->setKeyEvent(KEYCODE_F1);
+			act->addDefaultInputMapping("F1"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("KEYI", _("Key i"));
+			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
+			act->addDefaultInputMapping("i"); // original keyboard
+			gameKeyMap->addAction(act);
+
+			act = new Action("TAB", _("Tab"));
+			act->setKeyEvent(KeyState(KEYCODE_TAB, ASCII_TAB));
+			act->addDefaultInputMapping("TAB"); // original keyboard
+			gameKeyMap->addAction(act);
+		}
+
+		result.push_back(gameKeyMap);
+		return result;
 	}
 
 };


Commit: 887db8a821838b06af9dae45dd13e47696a4e0c0
    https://github.com/scummvm/scummvm/commit/887db8a821838b06af9dae45dd13e47696a4e0c0
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-02-19T08:04:25+02:00

Commit Message:
WINTERMUTE: Fix game keymappings

Changed paths:
    engines/wintermute/detection.cpp


diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 9ca3097..a174977 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -361,13 +361,27 @@ public:
 			act->addDefaultInputMapping("JOY_Y"); // extra joy
 			gameKeyMap->addAction(act);
 		} else if (gameId == "5ld" ||
-			gameId == "5ma" ||
-			gameId == "dirtysplit" ||
 			gameId == "projectjoe"
 		) {
 			act = new Action("PAGEUP", _("Previous page"));
 			act->setKeyEvent(KEYCODE_PAGEUP);
 			act->addDefaultInputMapping("PAGEUP"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
+			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
+			gameKeyMap->addAction(act);
+
+			act = new Action("PAGEDN", _("Next page"));
+			act->setKeyEvent(KEYCODE_PAGEDOWN);
+			act->addDefaultInputMapping("PAGEDOWN"); // original keyboard
+			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // extra mouse
+			act->addDefaultInputMapping("JOY_RIGHT"); // extra joy
+			gameKeyMap->addAction(act);
+		} else if (gameId == "5ma" ||
+			gameId == "dirtysplit"
+		) {
+			act = new Action("PAGEUP", _("Previous page"));
+			act->setKeyEvent(KEYCODE_PAGEUP);
+			act->addDefaultInputMapping("PAGEUP"); // original keyboard
 			act->addDefaultInputMapping("LEFT"); // original keyboard for 5ma & dirtysplit
 			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // extra mouse
 			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
@@ -386,7 +400,7 @@ public:
 			gameId == "rhiannon" ||
 			gameId == "shinestar"
 		) {
-			act = new Action("SKIP", _("Skip"));
+			act = new Action(kStandardActionSkip, _("Skip"));
 			act->setKeyEvent(KeyState(KEYCODE_SPACE, ASCII_SPACE));
 			act->addDefaultInputMapping("SPACE"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
@@ -610,7 +624,7 @@ public:
 			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
 			gameKeyMap->addAction(act);
 
-			act = new Action("DBG", _("Debug print"));
+			act = new Action("DBGTXT", _("Debug print"));
 			act->setKeyEvent(KeyState(KEYCODE_F8, 0, KBD_CTRL));
 			act->addDefaultInputMapping("C+F8"); // original keyboard
 			gameKeyMap->addAction(act);
@@ -645,22 +659,22 @@ public:
 			act->addDefaultInputMapping("RIGHT"); // original keyboard
 			gameKeyMap->addAction(act);
 
-			act = new Action(kStandardActionMoveUp, _("Run forward"));
+			act = new Action("FASTU", _("Run forward"));
 			act->setKeyEvent(KeyState(KEYCODE_UP, 0, KBD_SHIFT));
 			act->addDefaultInputMapping("S+UP"); // original keyboard
 			gameKeyMap->addAction(act);
 
-			act = new Action(kStandardActionMoveDown, _("Run backward"));
+			act = new Action("FASTD", _("Run backward"));
 			act->setKeyEvent(KeyState(KEYCODE_DOWN, 0, KBD_SHIFT));
 			act->addDefaultInputMapping("S+DOWN"); // original keyboard
 			gameKeyMap->addAction(act);
 
-			act = new Action(kStandardActionMoveLeft, _("Turn left fast"));
+			act = new Action("FASTL", _("Turn left fast"));
 			act->setKeyEvent(KeyState(KEYCODE_LEFT, 0, KBD_SHIFT));
 			act->addDefaultInputMapping("S+LEFT"); // original keyboard
 			gameKeyMap->addAction(act);
 
-			act = new Action(kStandardActionMoveRight, _("Turn right fast"));
+			act = new Action("FASTR", _("Turn right fast"));
 			act->setKeyEvent(KeyState(KEYCODE_RIGHT, 0, KBD_SHIFT));
 			act->addDefaultInputMapping("S+RIGHT"); // original keyboard
 			gameKeyMap->addAction(act);
@@ -711,7 +725,7 @@ public:
 			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
 			gameKeyMap->addAction(act);
 
-			act = new Action("DBG", _("Debug print"));
+			act = new Action("DBGTXT", _("Debug print"));
 			act->setKeyEvent(KEYCODE_F2);
 			act->addDefaultInputMapping("F2"); // original keyboard
 			gameKeyMap->addAction(act);
@@ -1053,7 +1067,7 @@ public:
 			//TODO: extra joy control, e.g. "JOY_R+JOY_B"
 			gameKeyMap->addAction(act);
 		} else if (gameId == "julia") {
-			act = new Action("SKIP", _("Skip"));
+			act = new Action(kStandardActionSkip, _("Skip"));
 			act->setKeyEvent(KEYCODE_F12);
 			act->addDefaultInputMapping("F12"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
@@ -1212,20 +1226,20 @@ public:
 			gameKeyMap->addAction(act);
 		} else if (gameId == "pizzamorgana") {
 			act = new Action("ACTNXT", _("Next action"));
-			act->setRightClickEvent();
-			act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse (globally)
-			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard (ingame)
+			act->setMouseWheelUpEvent();
+			act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse
+			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
 			act->addDefaultInputMapping("JOY_B"); // extra joy
 			gameKeyMap->addAction(act);
 
 			act = new Action("ACTPRV", _("Previous action"));
 			act->setMouseWheelDownEvent();
-			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
+			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
 			gameKeyMap->addAction(act);
 
-			act = new Action("SKIP", _("Skip"));
+			act = new Action(kStandardActionSkip, _("Skip"));
 			act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
 			act->addDefaultInputMapping("PERIOD"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_MIDDLE"); // extra mouse
@@ -1289,7 +1303,7 @@ public:
 			act->addDefaultInputMapping("JOY_Y"); // extra joy
 			gameKeyMap->addAction(act);
 
-			act = new Action("HINT", _("Show inventory"));
+			act = new Action("INV", _("Show inventory"));
 			act->setKeyEvent(KeyState(KEYCODE_i, 'i'));
 			act->addDefaultInputMapping("i"); // original keyboard
 			act->addDefaultInputMapping("JOY_UP"); // extra joy
@@ -1336,7 +1350,7 @@ public:
 			act->addDefaultInputMapping("JOY_Y"); // extra joy
 			gameKeyMap->addAction(act);
 
-			act = new Action("SKIP", _("Skip"));
+			act = new Action(kStandardActionSkip, _("Skip"));
 			act->setKeyEvent(KeyState(KEYCODE_BACKSPACE, ASCII_BACKSPACE));
 			act->addDefaultInputMapping("BACKSPACE"); // original keyboard
 			act->addDefaultInputMapping("JOY_LEFT"); // extra joy
@@ -1381,7 +1395,7 @@ public:
 			act->addDefaultInputMapping("F5"); // original keyboard
 			gameKeyMap->addAction(act);
 
-			act = new Action("DBG", _("Debug print"));
+			act = new Action("DBGTXT", _("Debug print"));
 			act->setKeyEvent(KEYCODE_F6);
 			act->addDefaultInputMapping("F6"); // original keyboard
 			gameKeyMap->addAction(act);
@@ -1518,17 +1532,17 @@ public:
 			gameKeyMap->addAction(act);
 		} else if (gameId == "zbang") {
 			act = new Action("ACTNXT", _("Next action"));
-			act->setRightClickEvent();
+			act->setMouseWheelUpEvent();
 			act->addDefaultInputMapping("MOUSE_RIGHT"); // original mouse
+			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_WHEEL_UP"); // original mouse
-			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard
 			act->addDefaultInputMapping("JOY_B"); // extra joy
 			gameKeyMap->addAction(act);
 
 			act = new Action("ACTPRV", _("Previous action"));
-			act->setRightClickEvent();
+			act->setMouseWheelDownEvent();
+			act->addDefaultInputMapping("LEFTBRACKET"); // original keyboard
 			act->addDefaultInputMapping("MOUSE_WHEEL_DOWN"); // original mouse
-			act->addDefaultInputMapping("RIGHTBRACKET"); // original keyboard
 			gameKeyMap->addAction(act);
 
 			act = new Action("HINT", _("Show hints"));
@@ -1538,7 +1552,7 @@ public:
 			act->addDefaultInputMapping("JOY_Y"); // extra joy
 			gameKeyMap->addAction(act);
 
-			act = new Action("SKIP", _("Skip"));
+			act = new Action(kStandardActionSkip, _("Skip"));
 			act->setKeyEvent(KeyState(KEYCODE_PERIOD, '.'));
 			act->addDefaultInputMapping("PERIOD"); // original keyboard
 			act->addDefaultInputMapping("JOY_DOWN"); // extra joy




More information about the Scummvm-git-logs mailing list