From 1458678dbc6471574b4f67273282ecc2965f3974 Mon Sep 17 00:00:00 2001 From: twinaphex <autechre1024@hotmail.com> Date: Mon, 13 May 2013 10:21:06 +0200 Subject: [PATCH] (Android) Add preliminary Ouya controller support --- android/native/jni/input_android.c | 21 +++++++++++++++++++++ android/native/jni/input_autodetect.c | 2 ++ driver.h | 1 + 3 files changed, 24 insertions(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 4a189f9255..1fa2f8d5fa 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1088,6 +1088,27 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); break; + case DEVICE_OUYA: + g_settings.input.device[port] = device; + strlcpy(g_settings.input.device_names[port], "OUYA", + sizeof(g_settings.input.device_names[port])); + + keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); + keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); + keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); + keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_L3+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift); + keycode_lut[AKEYCODE_MENU] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + break; case DEVICE_XPERIA_PLAY: g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "Xperia Play", diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index c68a6e5c80..723a3df5fd 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -153,6 +153,8 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned device = DEVICE_MOGA; else if (strstr(name_buf, "Sony Navigation Controller")) device = DEVICE_PSMOVE_NAVI; + else if (strstr(name_buf, "OUYA Game Controller")) + device = DEVICE_OUYA; else if (strstr(name_buf, "adc joystick")) device = DEVICE_JXD_S7300B; else if (strstr(name_buf, "idroid:con")) diff --git a/driver.h b/driver.h index be4355bf04..998323bbda 100644 --- a/driver.h +++ b/driver.h @@ -261,6 +261,7 @@ enum input_devices DEVICE_SEGA_VIRTUA_STICK_HIGH_GRADE, DEVICE_CCPCREATIONS_WIIUSE_IME, DEVICE_KEYBOARD_RETROPAD, + DEVICE_OUYA, #elif defined(GEKKO) DEVICE_GAMECUBE = 0, #ifdef HW_RVL