[Scummvm-git-logs] scummvm master -> fffb25a47a6fad199dc308050581ca3610d3db6f

antoniou79 a.antoniou79 at gmail.com
Wed Feb 26 08:23:51 UTC 2020


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

Summary:
fffb25a47a ANDROID: Add basic keymapper support (#2026)


Commit: fffb25a47a6fad199dc308050581ca3610d3db6f
    https://github.com/scummvm/scummvm/commit/fffb25a47a6fad199dc308050581ca3610d3db6f
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2020-02-26T10:23:47+02:00

Commit Message:
ANDROID: Add basic keymapper support (#2026)

* ANDROID: Remove hard-coded key mappings

* ANDROID: Add default key bindings

Changed paths:
    backends/platform/android/android.cpp
    backends/platform/android/android.h
    backends/platform/android/events.cpp
    backends/platform/android/events.h


diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp
index b24f4a4c51..78b9fbdcc4 100644
--- a/backends/platform/android/android.cpp
+++ b/backends/platform/android/android.cpp
@@ -60,6 +60,10 @@
 #include "backends/saves/default/default-saves.h"
 #include "backends/timer/default/default-timer.h"
 
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/keymapper-defaults.h"
+#include "backends/keymapper/standard-actions.h"
+
 #include "backends/platform/android/jni-android.h"
 #include "backends/platform/android/android.h"
 #include "backends/platform/android/graphics.h"
@@ -101,8 +105,7 @@ OSystem_Android::OSystem_Android(int audio_sample_rate, int audio_buffer_size) :
 	_dpad_scale(4),
 	_fingersDown(0),
 	_trackball_scale(2),
-	_joystick_scale(10),
-	_swap_menu_and_back(false) {
+	_joystick_scale(10) {
 
 	_fsFactory = new POSIXFilesystemFactory();
 
@@ -330,11 +333,6 @@ void OSystem_Android::initBackend() {
 	else
 		ConfMan.setBool("onscreen_control", true);
 
-	if (ConfMan.hasKey("swap_menu_and_back_buttons"))
-		_swap_menu_and_back = ConfMan.getBool("swap_menu_and_back_buttons");
-	else
-		ConfMan.setBool("swap_menu_and_back_buttons", false);
-
 	// BUG: "transient" ConfMan settings get nuked by the options
 	// screen. Passing the savepath in this way makes it stick
 	// (via ConfMan.registerDefault)
@@ -374,7 +372,6 @@ bool OSystem_Android::hasFeature(Feature f) {
 			f == kFeatureOpenUrl ||
 			f == kFeatureTouchpadMode ||
 			f == kFeatureOnScreenControl ||
-			f == kFeatureSwapMenuAndBackButtons ||
 			f == kFeatureClipboardSupport) {
 		return true;
 	}
@@ -397,10 +394,6 @@ void OSystem_Android::setFeatureState(Feature f, bool enable) {
 		ConfMan.setBool("onscreen_control", enable);
 		JNI::showKeyboardControl(enable);
 		break;
-	case kFeatureSwapMenuAndBackButtons:
-		ConfMan.setBool("swap_menu_and_back_buttons", enable);
-		_swap_menu_and_back = enable;
-		break;
 	default:
 		ModularBackend::setFeatureState(f, enable);
 		break;
@@ -415,13 +408,27 @@ bool OSystem_Android::getFeatureState(Feature f) {
 		return ConfMan.getBool("touchpad_mouse_mode");
 	case kFeatureOnScreenControl:
 		return ConfMan.getBool("onscreen_control");
-	case kFeatureSwapMenuAndBackButtons:
-		return ConfMan.getBool("swap_menu_and_back_buttons");
 	default:
 		return ModularBackend::getFeatureState(f);
 	}
 }
 
+Common::KeymapperDefaultBindings *OSystem_Android::getKeymapperDefaultBindings() {
+	Common::KeymapperDefaultBindings *keymapperDefaultBindings = new Common::KeymapperDefaultBindings();
+
+	if (ConfMan.hasKey("swap_menu_and_back")  && ConfMan.getBool("swap_menu_and_back")) {
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "MENU", "AC_BACK");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", Common::kStandardActionSkip, "MENU");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "CLOS", "MENU");
+	} else {
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "MENU", "MENU");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", Common::kStandardActionSkip, "AC_BACK");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "CLOS", "AC_BACK");
+	}
+
+	return keymapperDefaultBindings;
+}
+
 uint32 OSystem_Android::getMillis(bool skipRecord) {
 	timeval curTime;
 
diff --git a/backends/platform/android/android.h b/backends/platform/android/android.h
index 62825de2d1..7fc90d4f96 100644
--- a/backends/platform/android/android.h
+++ b/backends/platform/android/android.h
@@ -111,7 +111,6 @@ private:
 	int _dpad_scale;
 	int _joystick_scale;
 	int _fingersDown;
-	bool _swap_menu_and_back;
 
 	void clipMouse(Common::Point &p);
 	void scaleMouse(Common::Point &p, int x, int y, bool deductDrawRect = true, bool touchpadMode = false);
@@ -119,6 +118,8 @@ private:
 public:
 	virtual void pushEvent(const Common::Event &event);
 	virtual bool pollEvent(Common::Event &event);
+	virtual Common::KeymapperDefaultBindings *getKeymapperDefaultBindings();
+
 	virtual uint32 getMillis(bool skipRecord = false);
 	virtual void delayMillis(uint msecs);
 
diff --git a/backends/platform/android/events.cpp b/backends/platform/android/events.cpp
index 6a07b0908f..952f9e788e 100644
--- a/backends/platform/android/events.cpp
+++ b/backends/platform/android/events.cpp
@@ -58,76 +58,6 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
 
 	switch (type) {
 	case JE_SYS_KEY:
-		switch (arg1) {
-		case JACTION_DOWN:
-			e.type = Common::EVENT_KEYDOWN;
-			break;
-		case JACTION_UP:
-			e.type = Common::EVENT_KEYUP;
-			break;
-		default:
-			LOGE("unhandled jaction on system key: %d", arg1);
-			return;
-		}
-
-		switch (arg2) {
-		case JKEYCODE_BACK:
-			if (_swap_menu_and_back) {
-				if (arg1 == JACTION_DOWN) {
-					e.type = Common::EVENT_MAINMENU;
-					pushEvent(e);
-				}
-			} else {
-				e.kbd.keycode = Common::KEYCODE_ESCAPE;
-				e.kbd.ascii = Common::ASCII_ESCAPE;
-				pushEvent(e);
-			}
-			return;
-
-		case JKEYCODE_MENU:
-			if (_swap_menu_and_back) {
-				e.kbd.keycode = Common::KEYCODE_ESCAPE;
-				e.kbd.ascii = Common::ASCII_ESCAPE;
-				pushEvent(e);
-			} else {
-				if (arg1 == JACTION_DOWN) {
-					e.type = Common::EVENT_MAINMENU;
-					pushEvent(e);
-				}
-			}
-
-			return;
-
-		case JKEYCODE_MEDIA_PAUSE:
-		case JKEYCODE_MEDIA_PLAY:
-		case JKEYCODE_MEDIA_PLAY_PAUSE:
-			if (arg1 == JACTION_DOWN) {
-				e.type = Common::EVENT_MAINMENU;
-
-				pushEvent(e);
-			}
-
-			return;
-
-		case JKEYCODE_CAMERA:
-		case JKEYCODE_SEARCH:
-			if (arg1 == JACTION_DOWN)
-				e.type = Common::EVENT_RBUTTONDOWN;
-			else
-				e.type = Common::EVENT_RBUTTONUP;
-
-			e.mouse = dynamic_cast<AndroidGraphicsManager *>(_graphicsManager)->getMousePosition();
-
-			pushEvent(e);
-
-			return;
-
-		default:
-			break;
-		}
-
-		// fall through
-
 	case JE_KEY:
 		switch (arg1) {
 		case JACTION_DOWN:
diff --git a/backends/platform/android/events.h b/backends/platform/android/events.h
index 826bc80374..6973ff203c 100644
--- a/backends/platform/android/events.h
+++ b/backends/platform/android/events.h
@@ -62,32 +62,6 @@ enum {
 	JACTION_POINTER_UP = 6
 };
 
-// system keys
-enum {
-	JKEYCODE_SOFT_RIGHT = 2,
-	JKEYCODE_HOME = 3,
-	JKEYCODE_BACK = 4,
-	JKEYCODE_CALL = 5,
-	JKEYCODE_ENDCALL = 6,
-	JKEYCODE_VOLUME_UP = 24,
-	JKEYCODE_VOLUME_DOWN = 25,
-	JKEYCODE_POWER = 26,
-	JKEYCODE_CAMERA = 27,
-	JKEYCODE_HEADSETHOOK = 79,
-	JKEYCODE_FOCUS = 80,
-	JKEYCODE_MENU = 82,
-	JKEYCODE_SEARCH = 84,
-	JKEYCODE_MUTE = 91,
-	JKEYCODE_MEDIA_PLAY_PAUSE = 85,
-	JKEYCODE_MEDIA_STOP = 86,
-	JKEYCODE_MEDIA_NEXT = 87,
-	JKEYCODE_MEDIA_PREVIOUS = 88,
-	JKEYCODE_MEDIA_REWIND = 89,
-	JKEYCODE_MEDIA_FAST_FORWARD = 90,
-	JKEYCODE_MEDIA_PLAY = 126,
-	JKEYCODE_MEDIA_PAUSE = 127
-};
-
 // five-way navigation control
 enum {
 	JKEYCODE_DPAD_UP = 19,




More information about the Scummvm-git-logs mailing list