[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