diff --git a/backends/platform/android/events.cpp b/backends/platform/android/events.cpp
index 8f228e51846..80d0f7bcd28 100644
--- a/backends/platform/android/events.cpp
+++ b/backends/platform/android/events.cpp
@@ -1136,15 +1136,60 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
 
 			break;
 
-		case AKEYCODE_BUTTON_X:
+		case AKEYCODE_BUTTON_SELECT:
 			e.kbd.keycode = Common::KEYCODE_ESCAPE;
 			e.kbd.ascii = Common::ASCII_ESCAPE;
 			break;
 
-		case AKEYCODE_BUTTON_Y:
+		case AKEYCODE_BUTTON_START:
 			e.type = Common::EVENT_MAINMENU;
 			break;
 
+		case AKEYCODE_BUTTON_MODE:
+			e.kbd.keycode = Common::KEYCODE_TAB;
+			e.kbd.ascii = Common::ASCII_TAB;
+			break;
+
+		case AKEYCODE_BUTTON_X:
+			e.kbd.keycode = Common::KEYCODE_F1;
+			e.kbd.ascii = Common::ASCII_F1;
+			break;
+
+		case AKEYCODE_BUTTON_Y:
+			e.kbd.keycode = Common::KEYCODE_F2;
+			e.kbd.ascii = Common::ASCII_F2;
+			break;
+
+		case AKEYCODE_BUTTON_L1:
+			e.kbd.keycode = Common::KEYCODE_F3;
+			e.kbd.ascii = Common::ASCII_F3;
+			break;
+
+		case AKEYCODE_BUTTON_R1:
+			e.kbd.keycode = Common::KEYCODE_F4;
+			e.kbd.ascii = Common::ASCII_F4;
+			break;
+
+		case AKEYCODE_BUTTON_L2:
+			e.kbd.keycode = Common::KEYCODE_F5;
+			e.kbd.ascii = Common::ASCII_F5;
+			break;
+
+		case AKEYCODE_BUTTON_R2:
+			e.kbd.keycode = Common::KEYCODE_F6;
+			e.kbd.ascii = Common::ASCII_F6;
+			break;
+
+		case AKEYCODE_BUTTON_THUMBL:
+			e.kbd.keycode = Common::KEYCODE_F7;
+			e.kbd.ascii = Common::ASCII_F7;
+			break;
+
+		case AKEYCODE_BUTTON_THUMBR:
+			e.kbd.keycode = Common::KEYCODE_F8;
+			e.kbd.ascii = Common::ASCII_F8;
+			break;
+
 		default:
 			LOGW("unmapped gamepad key: %d", arg2);
 			return;
