SDL: added keycodes for gamepad analog sticks to SDL_ANDROID_SetIndividualGamepadKeymap(), while API is still fresh
This commit is contained in:
@@ -358,7 +358,7 @@ echo "# 9 = Nintendo64 from RetroArch" >> AndroidAppSettings.cfg
|
||||
echo TouchscreenKeysTheme=$TouchscreenKeysTheme >> AndroidAppSettings.cfg
|
||||
echo >> AndroidAppSettings.cfg
|
||||
echo "# Redefine gamepad keys to SDL keysyms, button order is:" >> AndroidAppSettings.cfg
|
||||
echo "# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right" >> AndroidAppSettings.cfg
|
||||
echo "# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight" >> AndroidAppSettings.cfg
|
||||
echo RedefinedKeysGamepad=\"$RedefinedKeysGamepad\" >> AndroidAppSettings.cfg
|
||||
echo >> AndroidAppSettings.cfg
|
||||
echo "# Redefine keys for the second gamepad, same as the first gamepad if not set:" >> AndroidAppSettings.cfg
|
||||
|
||||
@@ -225,11 +225,11 @@ RedefinedKeysScreenKbNames="0 1 2 3 4 5 6 7 8 9"
|
||||
TouchscreenKeysTheme=3
|
||||
|
||||
# Redefine gamepad keys to SDL keysyms, button order is:
|
||||
# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right
|
||||
RedefinedKeysGamepad="0 1 2 3 4 5 6 7 8 9"
|
||||
# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight
|
||||
RedefinedKeysGamepad="0 1 2 3 4 5 6 7 8 9 j k UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET"
|
||||
|
||||
# Redefine keys for the second gamepad, same as the first gamepad if not set:
|
||||
RedefinedKeysSecondGamepad="q w e r t y u i o p a s d f g h"
|
||||
RedefinedKeysSecondGamepad="q w e r t y u i o p a s d f g h z x c v b n m COMMA"
|
||||
|
||||
# Redefine keys for the third gamepad, same as the first gamepad if not set:
|
||||
RedefinedKeysThirdGamepad="F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 PRINT"
|
||||
|
||||
@@ -169,16 +169,24 @@ extern DECLSPEC int SDLCALL SDL_IsScreenKeyboardShown(void *unused);
|
||||
|
||||
enum
|
||||
{
|
||||
SDL_ANDROID_MAX_GAMEPADS = 4, // Maximum amount of gamepads supported
|
||||
SDL_ANDROID_MAX_GAMEPADS = 4, /* Maximum amount of gamepads supported */
|
||||
SDL_ANDROID_FIRST_GAMEPAD_ID = 2, /* Joystick ID for SDL_JoystickOpen() and for SDL_Event event.jaxis.which */
|
||||
SDL_ANDROID_SECOND_GAMEPAD_ID = 3, /* Joystick ID for SDL_JoystickOpen() and for SDL_Event event.jaxis.which */
|
||||
SDL_ANDROID_THIRD_GAMEPAD_ID = 4, /* Joystick ID for SDL_JoystickOpen() and for SDL_Event event.jaxis.which */
|
||||
SDL_ANDROID_FOURTH_GAMEPAD_ID = 5, /* Joystick ID for SDL_JoystickOpen() and for SDL_Event event.jaxis.which */
|
||||
};
|
||||
|
||||
/* Remap SDL keycodes returned by gamepad buttons.
|
||||
Pass the SDLK_ constants, or 0 to leave old value.
|
||||
On OUYA: O = A, U = X, Y = Y, A = B.
|
||||
GamepadId is from 0 to 3, up to SDL_ANDROID_MAX_GAMEPADS */
|
||||
GamepadId is from 0 to 3, up to SDL_ANDROID_MAX_GAMEPADS
|
||||
Analog thumb joysticks will send keycodes instead of joystick events
|
||||
only if SDL_JoystickOpen() was NOT called for joystick IDs from 2 to 5. */
|
||||
extern DECLSPEC void SDLCALL SDL_ANDROID_SetIndividualGamepadKeymap(int GamepadId,
|
||||
int A, int B, int X, int Y, int L1, int R1, int L2, int R2, int LThumb, int RThumb,
|
||||
int Start, int Select, int Up, int Down, int Left, int Right);
|
||||
int Start, int Select, int Up, int Down, int Left, int Right,
|
||||
int LThumbUp, int LThumbDown, int LThumbLeft, int LThumbRight,
|
||||
int RThumbUp, int RThumbDown, int RThumbLeft, int RThumbRight);
|
||||
|
||||
/* Deprecated API, will change keymap for all gamepads */
|
||||
extern DECLSPEC void SDLCALL SDL_ANDROID_SetGamepadKeymap(int A, int B, int X, int Y, int L1, int R1, int L2, int R2, int LThumb, int RThumb);
|
||||
|
||||
@@ -83,7 +83,15 @@ enum { RIGHT_CLICK_NONE = 0, RIGHT_CLICK_WITH_MULTITOUCH = 1, RIGHT_CLICK_WITH_P
|
||||
RIGHT_CLICK_WITH_KEY = 3, RIGHT_CLICK_WITH_TIMEOUT = 4 };
|
||||
enum { LEFT_CLICK_NORMAL = 0, LEFT_CLICK_NEAR_CURSOR = 1, LEFT_CLICK_WITH_MULTITOUCH = 2, LEFT_CLICK_WITH_PRESSURE = 3,
|
||||
LEFT_CLICK_WITH_KEY = 4, LEFT_CLICK_WITH_TIMEOUT = 5, LEFT_CLICK_WITH_TAP = 6, LEFT_CLICK_WITH_TAP_OR_TIMEOUT = 7 };
|
||||
enum { JOY_TOUCHSCREEN = 0, JOY_ACCELGYRO = 1, JOY_GAMEPAD1 = 2, JOY_GAMEPAD2 = 3, JOY_GAMEPAD3 = 4, JOY_GAMEPAD4 = 5 };
|
||||
enum
|
||||
{
|
||||
JOY_TOUCHSCREEN = 0,
|
||||
JOY_ACCELGYRO = 1,
|
||||
JOY_GAMEPAD1 = SDL_ANDROID_FIRST_GAMEPAD_ID,
|
||||
JOY_GAMEPAD2 = SDL_ANDROID_SECOND_GAMEPAD_ID,
|
||||
JOY_GAMEPAD3 = SDL_ANDROID_THIRD_GAMEPAD_ID,
|
||||
JOY_GAMEPAD4 = SDL_ANDROID_FOURTH_GAMEPAD_ID
|
||||
};
|
||||
static int leftClickMethod = LEFT_CLICK_NORMAL;
|
||||
static int rightClickMethod = RIGHT_CLICK_NONE;
|
||||
static int leftClickKey = KEYCODE_DPAD_CENTER;
|
||||
@@ -171,7 +179,7 @@ static inline int InsideRect( const SDL_Rect * r, int x, int y )
|
||||
return ( x >= r->x && x <= r->x + r->w ) && ( y >= r->y && y <= r->y + r->h );
|
||||
}
|
||||
|
||||
void UpdateScreenUnderFingerRect( int x, int y )
|
||||
void SDL_ANDROID_UpdateScreenUnderFingerRect( int x, int y )
|
||||
{
|
||||
#if SDL_VERSION_ATLEAST(1,3,0)
|
||||
return;
|
||||
@@ -596,7 +604,7 @@ static int ProcessMouseDown( int x, int y )
|
||||
else
|
||||
{
|
||||
SDL_ANDROID_MainThreadPushMouseMotion(x, y);
|
||||
action == MOUSE_MOVE;
|
||||
action = MOUSE_MOVE;
|
||||
mouseInitialX = x;
|
||||
mouseInitialY = y;
|
||||
mouseInitialTime = SDL_GetTicks();
|
||||
@@ -605,7 +613,7 @@ static int ProcessMouseDown( int x, int y )
|
||||
sem_post(&mouseClickTimeoutSemaphore);
|
||||
}
|
||||
if( SDL_ANDROID_ShowScreenUnderFinger == ZOOM_MAGNIFIER )
|
||||
UpdateScreenUnderFingerRect(x, y);
|
||||
SDL_ANDROID_UpdateScreenUnderFingerRect(x, y);
|
||||
return action;
|
||||
}
|
||||
|
||||
@@ -645,7 +653,7 @@ static void ProcessMouseMove_Timeouts( int x, int y )
|
||||
}
|
||||
}
|
||||
if( SDL_ANDROID_ShowScreenUnderFinger == ZOOM_MAGNIFIER )
|
||||
UpdateScreenUnderFingerRect(x, y);
|
||||
SDL_ANDROID_UpdateScreenUnderFingerRect(x, y);
|
||||
}
|
||||
|
||||
static void ProcessMouseMove( int x, int y, int force, int radius )
|
||||
@@ -784,7 +792,7 @@ static void ProcessMouseHover( jint *xx, jint *yy, int action, int distance )
|
||||
}
|
||||
|
||||
if( action == MOUSE_HOVER && distance < HOVER_DISTANCE_MAX * 3 / 4 )
|
||||
UpdateScreenUnderFingerRect(*xx, *yy);
|
||||
SDL_ANDROID_UpdateScreenUnderFingerRect(*xx, *yy);
|
||||
else
|
||||
SDL_ANDROID_ShowScreenUnderFingerRect.w = SDL_ANDROID_ShowScreenUnderFingerRect.h = 0; // This is reset later by ProcessMouseMove()
|
||||
|
||||
@@ -1449,63 +1457,101 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeGamepadAnalogJoystickInput) (JNIEnv* en
|
||||
}
|
||||
else
|
||||
{
|
||||
if( fabsf(dpadx) < 0.01f && fabsf(dpady) < 0.01f )
|
||||
if( SDL_ANDROID_moveMouseWithArrowKeys )
|
||||
{
|
||||
dpadx = stick1x;
|
||||
dpady = stick1y;
|
||||
if( fabsf(stick2x) > 0.2f || fabsf(stick2y) > 0.2f )
|
||||
{
|
||||
// Move mouse with right stick
|
||||
SDL_ANDROID_moveMouseWithKbAccelUpdateNeeded |= 4;
|
||||
SDL_ANDROID_moveMouseWithKbSpeedX = stick2x * 3 * SDL_ANDROID_moveMouseWithKbSpeed;
|
||||
SDL_ANDROID_moveMouseWithKbSpeedY = stick2y * 3 * SDL_ANDROID_moveMouseWithKbSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_ANDROID_moveMouseWithKbAccelUpdateNeeded &= ~4;
|
||||
}
|
||||
}
|
||||
if( fabsf(stick2x) > 0.2f || fabsf(stick2y) > 0.2f )
|
||||
// Translate analog sticks to keypresses
|
||||
if( stick1y < -0.5f )
|
||||
{
|
||||
// Move mouse with right stick
|
||||
SDL_ANDROID_moveMouseWithKbAccelUpdateNeeded |= 4;
|
||||
SDL_ANDROID_moveMouseWithKbSpeedX = stick2x * 3 * SDL_ANDROID_moveMouseWithKbSpeed;
|
||||
SDL_ANDROID_moveMouseWithKbSpeedY = stick2y * 3 * SDL_ANDROID_moveMouseWithKbSpeed;
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_UP], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_ANDROID_moveMouseWithKbAccelUpdateNeeded &= ~4;
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_UP], 0 );
|
||||
}
|
||||
if( stick1y > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_DOWN], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_DOWN], 0 );
|
||||
}
|
||||
if( stick1x < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_LEFT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_LEFT], 0 );
|
||||
}
|
||||
if( stick1x > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_RIGHT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_LTHUMB_RIGHT], 0 );
|
||||
}
|
||||
if( stick2y < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_UP], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_UP], 0 );
|
||||
}
|
||||
if( stick2y > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_DOWN], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_DOWN], 0 );
|
||||
}
|
||||
if( stick2x < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_LEFT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_LEFT], 0 );
|
||||
}
|
||||
if( stick2x > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_RIGHT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_RTHUMB_RIGHT], 0 );
|
||||
}
|
||||
}
|
||||
// Translate to up/down/left/right
|
||||
if( dpadx < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_LEFT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_LEFT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_LEFT], 0 );
|
||||
}
|
||||
if( dpadx > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_RIGHT], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_RIGHT]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_RIGHT], 0 );
|
||||
}
|
||||
if( dpady < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_UP], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_UP]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_UP], 0 );
|
||||
}
|
||||
if( dpady > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_DOWN], 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_DOWN]] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_android_gamepad_keymap[gamepadId][KEYCODE_DPAD_DOWN], 0 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1702,7 +1748,9 @@ JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz )
|
||||
|
||||
void SDL_ANDROID_SetIndividualGamepadKeymap(int GamepadId,
|
||||
int A, int B, int X, int Y, int L1, int R1, int L2, int R2, int LThumb, int RThumb,
|
||||
int Start, int Select, int Up, int Down, int Left, int Right)
|
||||
int Start, int Select, int Up, int Down, int Left, int Right,
|
||||
int LThumbUp, int LThumbDown, int LThumbLeft, int LThumbRight,
|
||||
int RThumbUp, int RThumbDown, int RThumbLeft, int RThumbRight)
|
||||
{
|
||||
/*
|
||||
Arguments are SDL keycodes. Use the SDLK_ constants.
|
||||
@@ -1719,34 +1767,42 @@ void SDL_ANDROID_SetIndividualGamepadKeymap(int GamepadId,
|
||||
if( GamepadId < 0 || GamepadId >= SDL_ANDROID_MAX_GAMEPADS )
|
||||
return;
|
||||
|
||||
if (A) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_A] = A;
|
||||
if (A) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_3] = A;
|
||||
if (B) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_B] = B;
|
||||
if (B) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_2] = B;
|
||||
if (X) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_X] = X;
|
||||
if (X) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_4] = X;
|
||||
if (Y) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_Y] = Y;
|
||||
if (Y) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_1] = Y;
|
||||
if (L1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_L1] = L1;
|
||||
if (L1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_5] = L1;
|
||||
if (R1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_R1] = R1;
|
||||
if (R1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_6] = R1;
|
||||
if (L2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_L2] = L2;
|
||||
if (L2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_7] = L2;
|
||||
if (R2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_R2] = R2;
|
||||
if (R2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_8] = R2;
|
||||
if (LThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_THUMBL] = LThumb;
|
||||
if (LThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_11] = LThumb;
|
||||
if (RThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_THUMBR] = RThumb;
|
||||
if (RThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_12] = RThumb;
|
||||
if (Start) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_START] = Start;
|
||||
if (Start) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_9] = Start;
|
||||
if (Select) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_SELECT] = Select;
|
||||
if (Select) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_10] = Select;
|
||||
if (Up) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_UP] = Up;
|
||||
if (Down) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_DOWN] = Down;
|
||||
if (Left) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_LEFT] = Left;
|
||||
if (Right) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_RIGHT] = Right;
|
||||
if (A) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_A] = A;
|
||||
if (A) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_3] = A;
|
||||
if (B) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_B] = B;
|
||||
if (B) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_2] = B;
|
||||
if (X) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_X] = X;
|
||||
if (X) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_4] = X;
|
||||
if (Y) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_Y] = Y;
|
||||
if (Y) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_1] = Y;
|
||||
if (L1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_L1] = L1;
|
||||
if (L1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_5] = L1;
|
||||
if (R1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_R1] = R1;
|
||||
if (R1) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_6] = R1;
|
||||
if (L2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_L2] = L2;
|
||||
if (L2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_7] = L2;
|
||||
if (R2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_R2] = R2;
|
||||
if (R2) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_8] = R2;
|
||||
if (LThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_THUMBL] = LThumb;
|
||||
if (LThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_11] = LThumb;
|
||||
if (RThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_THUMBR] = RThumb;
|
||||
if (RThumb) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_12] = RThumb;
|
||||
if (Start) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_START] = Start;
|
||||
if (Start) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_9] = Start;
|
||||
if (Select) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_SELECT] = Select;
|
||||
if (Select) SDL_android_gamepad_keymap[GamepadId][KEYCODE_BUTTON_10] = Select;
|
||||
if (Up) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_UP] = Up;
|
||||
if (Down) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_DOWN] = Down;
|
||||
if (Left) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_LEFT] = Left;
|
||||
if (Right) SDL_android_gamepad_keymap[GamepadId][KEYCODE_DPAD_RIGHT] = Right;
|
||||
if (LThumbUp) SDL_android_gamepad_keymap[GamepadId][KEYCODE_LTHUMB_UP] = LThumbUp;
|
||||
if (LThumbDown) SDL_android_gamepad_keymap[GamepadId][KEYCODE_LTHUMB_DOWN] = LThumbDown;
|
||||
if (LThumbLeft) SDL_android_gamepad_keymap[GamepadId][KEYCODE_LTHUMB_LEFT] = LThumbLeft;
|
||||
if (LThumbRight) SDL_android_gamepad_keymap[GamepadId][KEYCODE_LTHUMB_RIGHT] = LThumbRight;
|
||||
if (RThumbUp) SDL_android_gamepad_keymap[GamepadId][KEYCODE_RTHUMB_UP] = RThumbUp;
|
||||
if (RThumbDown) SDL_android_gamepad_keymap[GamepadId][KEYCODE_RTHUMB_DOWN] = RThumbDown;
|
||||
if (RThumbLeft) SDL_android_gamepad_keymap[GamepadId][KEYCODE_RTHUMB_LEFT] = RThumbLeft;
|
||||
if (RThumbRight) SDL_android_gamepad_keymap[GamepadId][KEYCODE_RTHUMB_RIGHT] = RThumbRight;
|
||||
|
||||
if( GamepadId == 0 )
|
||||
{
|
||||
@@ -1767,7 +1823,7 @@ void SDL_ANDROID_SetGamepadKeymap(int A, int B, int X, int Y, int L1, int R1, in
|
||||
int i;
|
||||
for( i = 0; i < SDL_ANDROID_MAX_GAMEPADS; i++ )
|
||||
{
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap(i, A, B, X, Y, L1, R1, L2, R2, LThumb, RThumb, 0, 0, 0, 0, 0, 0);
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap(i, A, B, X, Y, L1, R1, L2, R2, LThumb, RThumb, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -260,6 +260,30 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_15 RIGHT
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_16
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_16 UP
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_17
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_17 DOWN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_18
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_18 LEFT
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_19
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_19 RIGHT
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_20
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_20 UNKNOWN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_21
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_21 UNKNOWN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_22
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_22 UNKNOWN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_23
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_23 UNKNOWN
|
||||
#endif
|
||||
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_0
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_0 SDL_ANDROID_GAMEPAD_0_KEYCODE_0
|
||||
@@ -309,6 +333,30 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_15 SDL_ANDROID_GAMEPAD_0_KEYCODE_15
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_16
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_16 SDL_ANDROID_GAMEPAD_0_KEYCODE_16
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_17
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_17 SDL_ANDROID_GAMEPAD_0_KEYCODE_17
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_18
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_18 SDL_ANDROID_GAMEPAD_0_KEYCODE_18
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_19
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_19 SDL_ANDROID_GAMEPAD_0_KEYCODE_19
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_20
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_20 SDL_ANDROID_GAMEPAD_0_KEYCODE_20
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_21
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_21 SDL_ANDROID_GAMEPAD_0_KEYCODE_21
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_22
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_22 SDL_ANDROID_GAMEPAD_0_KEYCODE_22
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_1_KEYCODE_23
|
||||
#define SDL_ANDROID_GAMEPAD_1_KEYCODE_23 SDL_ANDROID_GAMEPAD_0_KEYCODE_23
|
||||
#endif
|
||||
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_0
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_0 SDL_ANDROID_GAMEPAD_0_KEYCODE_0
|
||||
@@ -358,6 +406,30 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_15 SDL_ANDROID_GAMEPAD_0_KEYCODE_15
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_16
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_16 SDL_ANDROID_GAMEPAD_0_KEYCODE_16
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_17
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_17 SDL_ANDROID_GAMEPAD_0_KEYCODE_17
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_18
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_18 SDL_ANDROID_GAMEPAD_0_KEYCODE_18
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_19
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_19 SDL_ANDROID_GAMEPAD_0_KEYCODE_19
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_20
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_20 SDL_ANDROID_GAMEPAD_0_KEYCODE_20
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_21
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_21 SDL_ANDROID_GAMEPAD_0_KEYCODE_21
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_22
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_22 SDL_ANDROID_GAMEPAD_0_KEYCODE_22
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_2_KEYCODE_23
|
||||
#define SDL_ANDROID_GAMEPAD_2_KEYCODE_23 SDL_ANDROID_GAMEPAD_0_KEYCODE_23
|
||||
#endif
|
||||
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_0
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_0 SDL_ANDROID_GAMEPAD_0_KEYCODE_0
|
||||
@@ -407,6 +479,30 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_15 SDL_ANDROID_GAMEPAD_0_KEYCODE_15
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_16
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_16 SDL_ANDROID_GAMEPAD_0_KEYCODE_16
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_17
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_17 SDL_ANDROID_GAMEPAD_0_KEYCODE_17
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_18
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_18 SDL_ANDROID_GAMEPAD_0_KEYCODE_18
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_19
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_19 SDL_ANDROID_GAMEPAD_0_KEYCODE_19
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_20
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_20 SDL_ANDROID_GAMEPAD_0_KEYCODE_20
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_21
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_21 SDL_ANDROID_GAMEPAD_0_KEYCODE_21
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_22
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_22 SDL_ANDROID_GAMEPAD_0_KEYCODE_22
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_3_KEYCODE_23
|
||||
#define SDL_ANDROID_GAMEPAD_3_KEYCODE_23 SDL_ANDROID_GAMEPAD_0_KEYCODE_23
|
||||
#endif
|
||||
|
||||
|
||||
// Queue events to main thread
|
||||
@@ -422,6 +518,10 @@ extern void SDL_ANDROID_MainThreadPushText( int ascii, int unicode );
|
||||
extern void SDL_android_init_keymap(SDLKey *SDL_android_keymap);
|
||||
extern void SDL_ANDROID_MainThreadPushMouseWheel( int x, int y ); // SDL 1.3 only
|
||||
extern void SDL_ANDROID_MainThreadPushAppActive(int active);
|
||||
extern void SDL_ANDROID_UpdateScreenUnderFingerRect(int x, int y);
|
||||
extern void SDL_ANDROID_DeferredTextInput(void);
|
||||
|
||||
|
||||
|
||||
// Internal input queue stuff
|
||||
extern SDLKey SDL_android_keymap[KEYCODE_LAST+1];
|
||||
|
||||
@@ -31,6 +31,7 @@ If you compile this code with SDL 1.3 or newer, or use in some other way, the li
|
||||
#include "SDL_mouse.h"
|
||||
#include "SDL_mutex.h"
|
||||
#include "SDL_thread.h"
|
||||
#include "SDL_timer.h"
|
||||
#include "../SDL_sysvideo.h"
|
||||
#include "../SDL_pixels_c.h"
|
||||
#include "../../events/SDL_events_c.h"
|
||||
@@ -519,7 +520,7 @@ SDL_Surface *ANDROID_SetVideoMode(_THIS, SDL_Surface *current,
|
||||
/* Set up the new mode framebuffer */
|
||||
SDL_CurrentVideoSurface = current;
|
||||
|
||||
UpdateScreenUnderFingerRect(0,0);
|
||||
SDL_ANDROID_UpdateScreenUnderFingerRect(0,0);
|
||||
SDL_ANDROID_ShowScreenUnderFingerRect.w = SDL_ANDROID_ShowScreenUnderFingerRect.h = 0;
|
||||
SDL_ANDROID_SetHoverDeadzone();
|
||||
SDL_ANDROID_currentMouseX = SDL_ANDROID_sFakeWindowWidth / 2;
|
||||
|
||||
@@ -271,6 +271,46 @@ KEYCODE_TV_MEDIA_CONTEXT_MENU = 257,
|
||||
KEYCODE_TV_TIMER_PROGRAMMING = 258,
|
||||
KEYCODE_HELP = 259,
|
||||
|
||||
// Oreo added even more
|
||||
|
||||
KEYCODE_NAVIGATE_PREVIOUS = 260,
|
||||
KEYCODE_NAVIGATE_NEXT = 261,
|
||||
KEYCODE_NAVIGATE_IN = 262,
|
||||
KEYCODE_NAVIGATE_OUT = 263,
|
||||
KEYCODE_STEM_PRIMARY = 264,
|
||||
KEYCODE_STEM_1 = 265,
|
||||
KEYCODE_STEM_2 = 266,
|
||||
KEYCODE_STEM_3 = 267,
|
||||
KEYCODE_DPAD_UP_LEFT = 268,
|
||||
KEYCODE_DPAD_DOWN_LEFT = 269,
|
||||
KEYCODE_DPAD_UP_RIGHT = 270,
|
||||
KEYCODE_DPAD_DOWN_RIGHT = 271,
|
||||
KEYCODE_MEDIA_SKIP_FORWARD = 272,
|
||||
KEYCODE_MEDIA_SKIP_BACKWARD = 273,
|
||||
KEYCODE_MEDIA_STEP_FORWARD = 274,
|
||||
KEYCODE_MEDIA_STEP_BACKWARD = 275,
|
||||
KEYCODE_SOFT_SLEEP = 276,
|
||||
KEYCODE_CUT = 277,
|
||||
KEYCODE_COPY = 278,
|
||||
KEYCODE_PASTE = 279,
|
||||
KEYCODE_SYSTEM_NAVIGATION_UP = 280,
|
||||
KEYCODE_SYSTEM_NAVIGATION_DOWN = 281,
|
||||
KEYCODE_SYSTEM_NAVIGATION_LEFT = 282,
|
||||
KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283,
|
||||
|
||||
// No more Android keycodes please! Or I'll have to change SDL-specific keycodes
|
||||
|
||||
// SDL-specific keycodes
|
||||
// Gamepad analog joysticks can also send keycodes
|
||||
KEYCODE_LTHUMB_UP = 285,
|
||||
KEYCODE_LTHUMB_DOWN = 286,
|
||||
KEYCODE_LTHUMB_LEFT = 287,
|
||||
KEYCODE_LTHUMB_RIGHT = 288,
|
||||
KEYCODE_RTHUMB_UP = 289,
|
||||
KEYCODE_RTHUMB_DOWN = 290,
|
||||
KEYCODE_RTHUMB_LEFT = 291,
|
||||
KEYCODE_RTHUMB_RIGHT = 292,
|
||||
|
||||
// Press mouse buttons with keyboard events
|
||||
KEYCODE_MOUSE_LEFT = 293,
|
||||
KEYCODE_MOUSE_MIDDLE = 294,
|
||||
|
||||
@@ -285,7 +285,15 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_12)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_13)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_14)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15))
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_16)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_17)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_18)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_19)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_20)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_21)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_22)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_23))
|
||||
);
|
||||
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap( 1,
|
||||
@@ -304,7 +312,15 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_12)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_13)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_14)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_15))
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_15)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_16)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_17)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_18)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_19)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_20)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_21)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_22)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_23))
|
||||
);
|
||||
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap( 2,
|
||||
@@ -323,7 +339,15 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_12)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_13)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_14)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_15))
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_15)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_16)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_17)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_18)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_19)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_20)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_21)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_22)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_23))
|
||||
);
|
||||
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap( 3,
|
||||
@@ -342,7 +366,15 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_12)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_13)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_14)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_15))
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_15)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_16)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_17)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_18)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_19)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_20)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_21)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_22)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_23))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ static inline SDL_keysym asciiToKeysym(int ascii, int unicode)
|
||||
if ( ascii < SDLK_LAST )
|
||||
keysym.scancode = SDL_android_keysym_to_scancode[ascii];
|
||||
keysym.sym = ascii;
|
||||
if (keysym.sym < 0 || keysym.sym >= SDLK_LAST)
|
||||
if (keysym.sym >= SDLK_LAST)
|
||||
keysym.sym = SDLK_UNKNOWN;
|
||||
keysym.mod = KMOD_NONE;
|
||||
keysym.unicode = 0;
|
||||
|
||||
@@ -280,9 +280,10 @@ with value 32767 equal to 0.25 rad/s. Multiple events will be sent at once, if t
|
||||
You will need to set AppUsesGyroscope=y in AndroidAppSettings.cfg to use it, and call SDL_JoystickOpen(1).
|
||||
Gyroscope hardware is much more precise and less noisy than accelerometer, it is present on newer devices
|
||||
starting from Galaxy S II, but older devices do no have it - it is emulated with accelerometer + compass.
|
||||
SDL also supports gamepad - you can plug PS3/Xbox gamepad to almost any tablet, some devices have built-in gamepad.
|
||||
Gamepad stick events are sent as SDL_JOYAXISMOTION, with event.jaxis.which == 2 and event.jaxis.axis from 0 to 3.
|
||||
Gamepad analog L1/R1 buttons are sent as SDL_JOYAXISMOTION, with event.jaxis.which == 2 and event.jaxis.axis from 4 to 5.
|
||||
SDL also supports gamepads - you can plug PS3/Xbox gamepad to almost any tablet, some devices have built-in gamepad.
|
||||
Gamepad stick events are sent as SDL_JOYAXISMOTION, with event.jaxis.which from 2 to 5 and event.jaxis.axis from 0 to 3.
|
||||
Gamepad analog L1/R1 buttons are sent as SDL_JOYAXISMOTION, with event.jaxis.which from 2 to 5 and event.jaxis.axis from 4 to 5.
|
||||
The gamepad where any button was pressed becomes the first gamepad. Maximum 4 gamepads are supported.
|
||||
Other gamepad buttons generate key events, which are taken from RedefinedKeysGamepad in AndroidAppSettings.cfg.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user