# HG changeset patch # User dbrady # Date 1390355034 28800 # Tue Jan 21 17:43:54 2014 -0800 # Node ID 7d6a8c39f8a76e6c05b1a43ec75d567e45ebe70b # Parent c858be546e5ab141d24ac39a74d49f56dde78018 Re-order Android button IDs on SDL diff -r c858be546e5a -r 7d6a8c39f8a7 src/joystick/android/SDL_sysjoystick.c --- a/src/joystick/android/SDL_sysjoystick.c Tue Jan 21 16:28:53 2014 -0500 +++ b/src/joystick/android/SDL_sysjoystick.c Tue Jan 21 17:43:54 2014 -0800 @@ -85,34 +85,69 @@ int button = 0; switch(keycode) { - /* D-Pad key codes (API 1), these get mapped to 0...4 */ + /* Some gamepad buttons (API 9) */ + case AKEYCODE_BUTTON_A: + button = SDL_CONTROLLER_BUTTON_A; + break; + case AKEYCODE_BUTTON_B: + button = SDL_CONTROLLER_BUTTON_B; + break; + case AKEYCODE_BUTTON_X: + button = SDL_CONTROLLER_BUTTON_X; + break; + case AKEYCODE_BUTTON_Y: + button = SDL_CONTROLLER_BUTTON_Y; + break; + case AKEYCODE_BUTTON_L1: + button = SDL_CONTROLLER_BUTTON_LEFTSHOULDER; + break; + case AKEYCODE_BUTTON_R1: + button = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER; + break; + case AKEYCODE_BUTTON_THUMBL: + button = SDL_CONTROLLER_BUTTON_LEFTSTICK; + break; + case AKEYCODE_BUTTON_THUMBR: + button = SDL_CONTROLLER_BUTTON_RIGHTSTICK; + break; + case AKEYCODE_BUTTON_START: + button = SDL_CONTROLLER_BUTTON_START; + break; + case AKEYCODE_BUTTON_SELECT: + button = SDL_CONTROLLER_BUTTON_BACK; + break; + case AKEYCODE_BUTTON_MODE: + button = SDL_CONTROLLER_BUTTON_GUIDE; + break; + case AKEYCODE_BUTTON_L2: + button = SDL_CONTROLLER_BUTTON_MAX; //Not supported by GameController + break; + case AKEYCODE_BUTTON_R2: + button = SDL_CONTROLLER_BUTTON_MAX+1; //Not supported by GameController + break; + case AKEYCODE_BUTTON_C: + button = SDL_CONTROLLER_BUTTON_MAX+2; //Not supported by GameController + break; + case AKEYCODE_BUTTON_Z: + button = SDL_CONTROLLER_BUTTON_MAX+3; //Not supported by GameController + break; + + /* D-Pad key codes (API 1) */ case AKEYCODE_DPAD_UP: + button = SDL_CONTROLLER_BUTTON_DPAD_UP; + break; case AKEYCODE_DPAD_DOWN: + button = SDL_CONTROLLER_BUTTON_DPAD_DOWN; + break; case AKEYCODE_DPAD_LEFT: + button = SDL_CONTROLLER_BUTTON_DPAD_LEFT; + break; case AKEYCODE_DPAD_RIGHT: + button = SDL_CONTROLLER_BUTTON_DPAD_RIGHT; + break; case AKEYCODE_DPAD_CENTER: - button = keycode - AKEYCODE_DPAD_UP; - break; - - /* Some gamepad buttons (API 9), these get mapped to 5...19*/ - case AKEYCODE_BUTTON_A: - case AKEYCODE_BUTTON_B: - case AKEYCODE_BUTTON_C: - case AKEYCODE_BUTTON_X: - case AKEYCODE_BUTTON_Y: - case AKEYCODE_BUTTON_Z: - case AKEYCODE_BUTTON_L1: - case AKEYCODE_BUTTON_L2: - case AKEYCODE_BUTTON_R1: - case AKEYCODE_BUTTON_R2: - case AKEYCODE_BUTTON_THUMBL: - case AKEYCODE_BUTTON_THUMBR: - case AKEYCODE_BUTTON_START: - case AKEYCODE_BUTTON_SELECT: - case AKEYCODE_BUTTON_MODE: - button = keycode - AKEYCODE_BUTTON_A + 5; - break; - + button = SDL_CONTROLLER_BUTTON_MAX+4; //Not supported by GameController + break; /* More gamepad buttons (API 12), these get mapped to 20...35*/ case AKEYCODE_BUTTON_1: @@ -131,7 +166,7 @@ case AKEYCODE_BUTTON_14: case AKEYCODE_BUTTON_15: case AKEYCODE_BUTTON_16: - button = keycode - AKEYCODE_BUTTON_1 + 20; + button = keycode - SDL_CONTROLLER_BUTTON_MAX + 5 + SDL_CONTROLLER_BUTTON_MAX; break; default: @@ -332,7 +367,7 @@ /* Default behavior, accelerometer as joystick */ Android_AddJoystick(ANDROID_ACCELEROMETER_DEVICE_ID, ANDROID_ACCELEROMETER_NAME, SDL_TRUE, 0, 3, 0, 0); } - + return (numjoysticks); }