aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Garrett2016-05-22 15:17:45 -0700
committerMatthew Garrett2016-05-22 15:23:44 -0700
commit832d7bb289aef42f5eb48dc0495e1519f6bc5e71 (patch)
tree8333441d0561ede8d4b07d9b97ddc2a4ac46f83a
parent497859ad90ba1f7e89295f4221f546637c3bd17f (diff)
downloadscummvm-rg350-832d7bb289aef42f5eb48dc0495e1519f6bc5e71.tar.gz
scummvm-rg350-832d7bb289aef42f5eb48dc0495e1519f6bc5e71.tar.bz2
scummvm-rg350-832d7bb289aef42f5eb48dc0495e1519f6bc5e71.zip
ANDROID: Add support for ScummVM menu on Android TV devices
Android TV devices don't have menu buttons. Remotes should have a play/pause button (which may send individual play and pause events rather than a combined event) and gamepads should have a Y button. Use these to open the menu.
-rw-r--r--backends/platform/android/events.cpp21
-rw-r--r--backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java2
2 files changed, 22 insertions, 1 deletions
diff --git a/backends/platform/android/events.cpp b/backends/platform/android/events.cpp
index 8039981a92..b146945a01 100644
--- a/backends/platform/android/events.cpp
+++ b/backends/platform/android/events.cpp
@@ -101,7 +101,9 @@ enum {
JKEYCODE_MEDIA_NEXT = 87,
JKEYCODE_MEDIA_PREVIOUS = 88,
JKEYCODE_MEDIA_REWIND = 89,
- JKEYCODE_MEDIA_FAST_FORWARD = 90
+ JKEYCODE_MEDIA_FAST_FORWARD = 90,
+ JKEYCODE_MEDIA_PLAY = 126,
+ JKEYCODE_MEDIA_PAUSE = 127
};
// five-way navigation control
@@ -380,6 +382,19 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
return;
+ case JKEYCODE_MEDIA_PAUSE:
+ case JKEYCODE_MEDIA_PLAY:
+ case JKEYCODE_MEDIA_PLAY_PAUSE:
+ if (arg1 == JACTION_DOWN) {
+ e.type = Common::EVENT_MAINMENU;
+
+ lockMutex(_event_queue_lock);
+ _event_queue.push(e);
+ unlockMutex(_event_queue_lock);
+ }
+
+ return;
+
case JKEYCODE_CAMERA:
case JKEYCODE_SEARCH:
if (arg1 == JACTION_DOWN)
@@ -888,6 +903,10 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
e.kbd.ascii = Common::ASCII_ESCAPE;
break;
+ case JKEYCODE_BUTTON_Y:
+ e.type = Common::EVENT_MAINMENU;
+ break;
+
default:
LOGW("unmapped gamepad key: %d", arg2);
return;
diff --git a/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java b/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
index 32c65d3395..e81000d8b1 100644
--- a/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
+++ b/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
@@ -119,6 +119,8 @@ public class ScummVMEvents implements
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_CAMERA:
case KeyEvent.KEYCODE_SEARCH:
+ case KeyEvent.KEYCODE_MEDIA_PLAY:
+ case KeyEvent.KEYCODE_MEDIA_PAUSE:
break;
default: