SDL: unfinished support for multiple gamepads
This commit is contained in:
@@ -705,7 +705,7 @@ done
|
||||
|
||||
KEY2=0
|
||||
for KEY in $RedefinedKeysGamepad; do
|
||||
RedefinedKeycodesGamepad="$RedefinedKeycodesGamepad -DSDL_ANDROID_GAMEPAD_KEYCODE_$KEY2=$KEY"
|
||||
RedefinedKeycodesGamepad="$RedefinedKeycodesGamepad -DSDL_ANDROID_GAMEPAD_0_KEYCODE_$KEY2=$KEY"
|
||||
KEY2=`expr $KEY2 '+' 1`
|
||||
done
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ import android.view.Display;
|
||||
import android.net.Uri;
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.input.InputManager;
|
||||
|
||||
|
||||
class Mouse
|
||||
@@ -395,7 +396,8 @@ abstract class DifferentTouchInput
|
||||
event.getAxisValue(MotionEvent.AXIS_X), event.getAxisValue(MotionEvent.AXIS_Y),
|
||||
event.getAxisValue(MotionEvent.AXIS_Z), event.getAxisValue(MotionEvent.AXIS_RZ),
|
||||
event.getAxisValue(MotionEvent.AXIS_LTRIGGER), event.getAxisValue(MotionEvent.AXIS_RTRIGGER),
|
||||
event.getAxisValue(MotionEvent.AXIS_HAT_X), event.getAxisValue(MotionEvent.AXIS_HAT_Y) );
|
||||
event.getAxisValue(MotionEvent.AXIS_HAT_X), event.getAxisValue(MotionEvent.AXIS_HAT_Y),
|
||||
processGamepadDeviceId(event.getDevice()) );
|
||||
return;
|
||||
}
|
||||
// Process mousewheel
|
||||
@@ -550,6 +552,78 @@ abstract class DifferentTouchInput
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int gamepadIds[] = new int[4]; // Maximum 4 gamepads at the moment
|
||||
|
||||
public static int processGamepadDeviceId(InputDevice device)
|
||||
{
|
||||
if( device == null )
|
||||
return 0;
|
||||
int source = device.getSources();
|
||||
if( (source & InputDevice.SOURCE_CLASS_JOYSTICK) != InputDevice.SOURCE_CLASS_JOYSTICK &&
|
||||
(source & InputDevice.SOURCE_GAMEPAD) != InputDevice.SOURCE_GAMEPAD )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int deviceId = device.getId();
|
||||
for( int i = 0; i < gamepadIds.length; i++ )
|
||||
{
|
||||
if (gamepadIds[i] == deviceId)
|
||||
return i + 1;
|
||||
}
|
||||
for( int i = 0; i < gamepadIds.length; i++ )
|
||||
{
|
||||
if (gamepadIds[i] == 0)
|
||||
{
|
||||
Log.i("SDL", "libSDL: gamepad added: deviceId " + deviceId + " gamepadId " + (i + 1));
|
||||
gamepadIds[i] = deviceId;
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void registerInputManagerCallbacks(Context context)
|
||||
{
|
||||
if( android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN )
|
||||
{
|
||||
JellyBeanInputManager.Holder.sInstance.register(context);
|
||||
}
|
||||
}
|
||||
|
||||
private static class JellyBeanInputManager
|
||||
{
|
||||
private static class Holder
|
||||
{
|
||||
private static final JellyBeanInputManager sInstance = new JellyBeanInputManager();
|
||||
}
|
||||
private static class Listener implements InputManager.InputDeviceListener
|
||||
{
|
||||
public void onInputDeviceAdded(int deviceId)
|
||||
{
|
||||
}
|
||||
public void onInputDeviceChanged(int deviceId)
|
||||
{
|
||||
onInputDeviceRemoved(deviceId);
|
||||
}
|
||||
public void onInputDeviceRemoved(int deviceId)
|
||||
{
|
||||
for( int i = 0; i < gamepadIds.length; i++ )
|
||||
{
|
||||
if (gamepadIds[i] == deviceId)
|
||||
{
|
||||
Log.i("SDL", "libSDL: gamepad removed: deviceId " + deviceId + " gamepadId "+ (i + 1));
|
||||
gamepadIds[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void register(Context context)
|
||||
{
|
||||
InputManager manager = (InputManager) context.getSystemService(Context.INPUT_SERVICE);
|
||||
manager.registerInputDeviceListener(new Listener(), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DemoRenderer extends GLSurfaceView_SDL.Renderer
|
||||
@@ -977,12 +1051,14 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
|
||||
}
|
||||
|
||||
class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
|
||||
public DemoGLSurfaceView(MainActivity context) {
|
||||
super(context);
|
||||
mParent = context;
|
||||
setEGLConfigChooser(Globals.VideoDepthBpp, Globals.NeedDepthBuffer, Globals.NeedStencilBuffer, Globals.NeedGles2, Globals.NeedGles3);
|
||||
mRenderer = new DemoRenderer(context);
|
||||
setRenderer(mRenderer);
|
||||
DifferentTouchInput.registerInputManagerCallbacks(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1001,10 +1077,8 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//if( context._screenKeyboard != null && context._screenKeyboard.onKeyDown(keyCode, event) )
|
||||
// return true;
|
||||
|
||||
if( nativeKey( keyCode, 1, event.getUnicodeChar() ) == 0 )
|
||||
if( nativeKey( keyCode, 1, event.getUnicodeChar(), DifferentTouchInput.processGamepadDeviceId(event.getDevice()) ) == 0 )
|
||||
return super.onKeyDown(keyCode, event);
|
||||
|
||||
return true;
|
||||
@@ -1027,14 +1101,12 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//if( _screenKeyboard != null && _screenKeyboard.onKeyUp(keyCode, event) )
|
||||
// return true;
|
||||
|
||||
if( nativeKey( keyCode, 0, event.getUnicodeChar() ) == 0 )
|
||||
if( nativeKey( keyCode, 0, event.getUnicodeChar(), DifferentTouchInput.processGamepadDeviceId(event.getDevice()) ) == 0 )
|
||||
return super.onKeyUp(keyCode, event);
|
||||
|
||||
if( keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU )
|
||||
DimSystemStatusBar.get().dim(mParent._videoLayout);
|
||||
//if( keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU )
|
||||
// DimSystemStatusBar.get().dim(mParent._videoLayout);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1047,8 +1119,8 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
// International text input
|
||||
for(int i = 0; i < event.getCharacters().length(); i++ )
|
||||
{
|
||||
nativeKey( event.getKeyCode(), 1, event.getCharacters().codePointAt(i) );
|
||||
nativeKey( event.getKeyCode(), 0, event.getCharacters().codePointAt(i) );
|
||||
nativeKey( event.getKeyCode(), 1, event.getCharacters().codePointAt(i), 0 );
|
||||
nativeKey( event.getKeyCode(), 0, event.getCharacters().codePointAt(i), 0 );
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -1140,11 +1212,11 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
MainActivity mParent;
|
||||
|
||||
public static native void nativeMotionEvent( int x, int y, int action, int pointerId, int pressure, int radius );
|
||||
public static native int nativeKey( int keyCode, int down, int unicode );
|
||||
public static native int nativeKey( int keyCode, int down, int unicode, int gamepadId );
|
||||
public static native void nativeHardwareMouseDetected( int detected );
|
||||
public static native void nativeMouseButtonsPressed( int buttonId, int pressedState );
|
||||
public static native void nativeMouseWheel( int scrollX, int scrollY );
|
||||
public static native void nativeGamepadAnalogJoystickInput( float stick1x, float stick1y, float stick2x, float stick2y, float ltrigger, float rtrigger, float dpadx, float dpady );
|
||||
public static native void nativeGamepadAnalogJoystickInput( float stick1x, float stick1y, float stick2x, float stick2y, float ltrigger, float rtrigger, float dpadx, float dpady, int gamepadId );
|
||||
public static native void nativeScreenVisibleRect( int x, int y, int w, int h );
|
||||
public static native void nativeScreenKeyboardShown( int shown );
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ RedefinedKeysScreenKbNames="0 1 2 3 4 5 6 7 8 9"
|
||||
TouchscreenKeysTheme=4
|
||||
|
||||
# Redefine gamepad keys to SDL keysyms, button order is:
|
||||
# A B X Y L1 R1 L2 R2 LThumb RThumb
|
||||
# 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"
|
||||
|
||||
# How long to show startup menu button, in msec, 0 to disable startup menu
|
||||
|
||||
@@ -21,7 +21,7 @@ AppVersionName="1.37.03"
|
||||
AppDataDownloadUrl="!!Game data|data.zip"
|
||||
|
||||
# Reset SDL config when updating application to the new version (y) / (n)
|
||||
ResetSdlConfigForThisVersion=n
|
||||
ResetSdlConfigForThisVersion=y
|
||||
|
||||
# Delete application data files when upgrading (specify file/dir paths separated by spaces)
|
||||
DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag"
|
||||
|
||||
@@ -167,9 +167,20 @@ extern DECLSPEC int SDLCALL SDL_ToggleScreenKeyboard(void *unused);
|
||||
|
||||
extern DECLSPEC int SDLCALL SDL_IsScreenKeyboardShown(void *unused);
|
||||
|
||||
enum
|
||||
{
|
||||
SDL_ANDROID_MAX_GAMEPADS = 4, // Maximum amount of gamepads supported
|
||||
};
|
||||
|
||||
/* 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 */
|
||||
On OUYA: O = A, U = X, Y = Y, A = B.
|
||||
GamepadId is from 0 to 3, up to SDL_ANDROID_MAX_GAMEPADS */
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
/* Set SDL keycode for hardware Android key. Android keycodes are defined here:
|
||||
|
||||
@@ -57,6 +57,8 @@ If you compile this code with SDL 1.3 or newer, or use in some other way, the li
|
||||
|
||||
SDLKey SDL_android_keymap[KEYCODE_LAST+1];
|
||||
|
||||
SDLKey SDL_android_gamepad_keymap[SDL_ANDROID_MAX_GAMEPADS][KEYCODE_LAST+1];
|
||||
|
||||
static inline SDL_scancode TranslateKey(int scancode)
|
||||
{
|
||||
if ( scancode >= KEYCODE_LAST + 1 )
|
||||
@@ -273,7 +275,7 @@ static void ClearOldTouchPointers( int action, int pointerId )
|
||||
secondMousePointerId = -1;
|
||||
for( i = 0; i < MAX_MULTITOUCH_POINTERS; i++ )
|
||||
{
|
||||
if( touchPointers[i] |= TOUCH_PTR_MOUSE )
|
||||
if( touchPointers[i] != TOUCH_PTR_MOUSE )
|
||||
{
|
||||
if( firstMousePointerId == -1 )
|
||||
firstMousePointerId = i;
|
||||
@@ -960,7 +962,7 @@ void SDL_ANDROID_WarpMouse(int x, int y)
|
||||
};
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeKey) ( JNIEnv* env, jobject thiz, jint key, jint action, jint unicode )
|
||||
JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeKey) ( JNIEnv* env, jobject thiz, jint key, jint action, jint unicode, jint gamepadId )
|
||||
{
|
||||
SDL_scancode keycode;
|
||||
int unshifted = unicode;
|
||||
@@ -971,6 +973,8 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeKey) ( JNIEnv* env, jobject thiz, jint
|
||||
return 1;
|
||||
#endif
|
||||
|
||||
//__android_log_print(ANDROID_LOG_INFO, "libSDL", "%s: gamepadId %d", __FUNCTION__, gamepadId);
|
||||
|
||||
if( key == rightClickKey && rightClickMethod == RIGHT_CLICK_WITH_KEY )
|
||||
{
|
||||
SDL_ANDROID_MainThreadPushMouseButton( action ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT );
|
||||
@@ -985,7 +989,7 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeKey) ( JNIEnv* env, jobject thiz, jint
|
||||
keycode = TranslateKey(key);
|
||||
//__android_log_print(ANDROID_LOG_INFO, "libSDL","nativeKey %d action %d translated %d unicode %d", key, action, keycode, unicode);
|
||||
|
||||
if( keycode == SDLK_NO_REMAP || (keycode == SDLK_UNKNOWN && unicode == 0) )
|
||||
if( (int)keycode == SDLK_NO_REMAP || (keycode == SDLK_UNKNOWN && unicode == 0) )
|
||||
return 0;
|
||||
|
||||
if( keycode == SDLK_UNKNOWN || unicode != unshifted )
|
||||
@@ -1416,8 +1420,10 @@ JAVA_EXPORT_NAME(Settings_nativeSetAccelerometerSettings) ( JNIEnv* env, jobjec
|
||||
JNIEXPORT void JNICALL
|
||||
JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeGamepadAnalogJoystickInput) (JNIEnv* env, jobject thiz,
|
||||
jfloat stick1x, jfloat stick1y, jfloat stick2x, jfloat stick2y, jfloat ltrigger, jfloat rtrigger,
|
||||
jfloat dpadx, jfloat dpady)
|
||||
jfloat dpadx, jfloat dpady, jint gamepadId)
|
||||
{
|
||||
//__android_log_print(ANDROID_LOG_INFO, "libSDL","%s: gamepadId %d", __FUNCTION__, gamepadId);
|
||||
|
||||
if( SDL_ANDROID_CurrentJoysticks[JOY_GAMEPAD1] )
|
||||
{
|
||||
SDL_ANDROID_MainThreadPushJoystickAxis(JOY_GAMEPAD1, 0, NORMALIZE_FLOAT_32767(stick1x));
|
||||
@@ -1449,43 +1455,43 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeGamepadAnalogJoystickInput) (JNIEnv* en
|
||||
// Translate to up/down/left/right
|
||||
if( dpadx < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_14))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_14)), 0 );
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_14))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_14)), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_14))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_14)), 0 );
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_14))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_14)), 0 );
|
||||
}
|
||||
if( dpadx > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_15))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_15)), 0 );
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15)), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_15))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_15)), 0 );
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_15)), 0 );
|
||||
}
|
||||
if( dpady < -0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_12))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_12)), 0 );
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_12))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_12)), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_12))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_12)), 0 );
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_12))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_12)), 0 );
|
||||
}
|
||||
if( dpady > 0.5f )
|
||||
{
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_13))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_13)), 0 );
|
||||
if( !SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_13))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_13)), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_13))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_13)), 0 );
|
||||
if( SDL_GetKeyboardState(NULL)[SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_13))] )
|
||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_13)), 0 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1680,30 +1686,74 @@ JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz )
|
||||
SDL_android_init_keymap(SDL_android_keymap);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
/*
|
||||
Arguments are SDL keycodes. Use the SDLK_ constants.
|
||||
Pass zero to leave a button mapping untouched.
|
||||
|
||||
On OUYA:
|
||||
O = A
|
||||
U = X
|
||||
Y = Y
|
||||
A = B
|
||||
C and Z do not exist, they also do not exist on any gamepad I've seen (PS3/XBox/SHIELD)
|
||||
*/
|
||||
|
||||
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( GamepadId == 0 )
|
||||
{
|
||||
int i;
|
||||
for( i = KEYCODE_BUTTON_A; i <= KEYCODE_BUTTON_SELECT; i++ )
|
||||
{
|
||||
SDL_android_keymap[i] = SDL_android_gamepad_keymap[GamepadId][i];
|
||||
}
|
||||
for( i = KEYCODE_BUTTON_1; i <= KEYCODE_BUTTON_12; i++ )
|
||||
{
|
||||
SDL_android_keymap[i] = SDL_android_gamepad_keymap[GamepadId][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SDL_ANDROID_SetGamepadKeymap(int A, int B, int X, int Y, int L1, int R1, int L2, int R2, int LThumb, int RThumb)
|
||||
{
|
||||
/*
|
||||
Arguments are SDL keycodes. Use the SDLK_ constants.
|
||||
Pass zero to leave a button mapping untouched.
|
||||
|
||||
On OUYA: O = A
|
||||
U = X
|
||||
Y = Y
|
||||
A = B
|
||||
C and Z do not exist, they also do not exist on any gamepad I've seen (PS3/XBox/SHIELD)
|
||||
*/
|
||||
if (A) SDL_android_keymap[KEYCODE_BUTTON_A] = A;
|
||||
if (B) SDL_android_keymap[KEYCODE_BUTTON_B] = B;
|
||||
//if (C) SDL_android_keymap[KEYCODE_BUTTON_C] = C;
|
||||
if (X) SDL_android_keymap[KEYCODE_BUTTON_X] = X;
|
||||
if (Y) SDL_android_keymap[KEYCODE_BUTTON_Y] = Y;
|
||||
//if (Z) SDL_android_keymap[KEYCODE_BUTTON_Z] = Z;
|
||||
if (L1) SDL_android_keymap[KEYCODE_BUTTON_L1] = L1;
|
||||
if (R1) SDL_android_keymap[KEYCODE_BUTTON_R1] = R1;
|
||||
if (L2) SDL_android_keymap[KEYCODE_BUTTON_L2] = L2;
|
||||
if (R2) SDL_android_keymap[KEYCODE_BUTTON_R2] = R2;
|
||||
if (LThumb) SDL_android_keymap[KEYCODE_BUTTON_THUMBL] = LThumb;
|
||||
if (RThumb) SDL_android_keymap[KEYCODE_BUTTON_THUMBR] = RThumb;
|
||||
for( int 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);
|
||||
}
|
||||
}
|
||||
|
||||
void SDL_ANDROID_SetAndroidKeycode(int Android_Key, int Sdl_Key)
|
||||
|
||||
@@ -55,6 +55,7 @@ If you compile this code with SDL 1.3 or newer, or use in some other way, the li
|
||||
|
||||
#include "../SDL_sysvideo.h"
|
||||
#include "SDL_androidvideo.h"
|
||||
#include "SDL_screenkeyboard.h"
|
||||
#include "javakeycodes.h"
|
||||
|
||||
/* JNI-C++ wrapper stuff */
|
||||
@@ -211,53 +212,53 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
||||
#endif
|
||||
|
||||
// Gamepad keys
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_0
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_0 SDL_ANDROID_SCREENKB_KEYCODE_0
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_0
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_0 SDL_ANDROID_SCREENKB_KEYCODE_0
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_1
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_1 SDL_ANDROID_SCREENKB_KEYCODE_1
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_1
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_1 SDL_ANDROID_SCREENKB_KEYCODE_1
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_2
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_2 SDL_ANDROID_SCREENKB_KEYCODE_2
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_2
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_2 SDL_ANDROID_SCREENKB_KEYCODE_2
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_3
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_3 SDL_ANDROID_SCREENKB_KEYCODE_3
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_3
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_3 SDL_ANDROID_SCREENKB_KEYCODE_3
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_4
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_4 SDL_ANDROID_SCREENKB_KEYCODE_5
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_4
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_4 SDL_ANDROID_SCREENKB_KEYCODE_5
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_5
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_5 SDL_ANDROID_SCREENKB_KEYCODE_4
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_5
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_5 SDL_ANDROID_SCREENKB_KEYCODE_4
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_6
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_6 SDL_ANDROID_KEYCODE_0
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_6
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_6 SDL_ANDROID_KEYCODE_0
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_7
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_7 SDL_ANDROID_KEYCODE_6
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_7
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_7 SDL_ANDROID_KEYCODE_6
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_8
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_8 SPACE
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_8
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_8 SPACE
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_9
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_9 RETURN
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_9
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_9 RETURN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_10
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_10 SDL_ANDROID_KEYCODE_5
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_10
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_10 SDL_ANDROID_KEYCODE_5
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_11
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_11 SDL_ANDROID_KEYCODE_4
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_11
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_11 SDL_ANDROID_KEYCODE_4
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_12
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_12 UP
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_12
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_12 UP
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_13
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_13 DOWN
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_13
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_13 DOWN
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_14
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_14 LEFT
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_14
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_14 LEFT
|
||||
#endif
|
||||
#ifndef SDL_ANDROID_GAMEPAD_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_KEYCODE_15 RIGHT
|
||||
#ifndef SDL_ANDROID_GAMEPAD_0_KEYCODE_15
|
||||
#define SDL_ANDROID_GAMEPAD_0_KEYCODE_15 RIGHT
|
||||
#endif
|
||||
|
||||
// Queue events to main thread
|
||||
@@ -275,7 +276,8 @@ extern void SDL_ANDROID_MainThreadPushMouseWheel( int x, int y ); // SDL 1.3 onl
|
||||
extern void SDL_ANDROID_MainThreadPushAppActive(int active);
|
||||
|
||||
// Internal input queue stuff
|
||||
extern SDLKey SDL_android_keymap[];
|
||||
extern SDLKey SDL_android_keymap[KEYCODE_LAST+1];
|
||||
extern SDLKey SDL_android_gamepad_keymap[SDL_ANDROID_MAX_GAMEPADS][KEYCODE_LAST+1];
|
||||
extern int SDL_android_KeysymFromUnicodeShiftNeeded(int unicode);
|
||||
extern unsigned char SDL_android_keysym_to_scancode[SDLK_LAST];
|
||||
extern SDL_Joystick *SDL_ANDROID_CurrentJoysticks[];
|
||||
|
||||
@@ -132,6 +132,8 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
keymap[KEYCODE_PAGE_DOWN] = SDL_KEY(PAGEDOWN);
|
||||
keymap[KEYCODE_PICTSYMBOLS] = SDL_KEY(LSHIFT);
|
||||
keymap[KEYCODE_SWITCH_CHARSET] = SDL_KEY(LSHIFT);
|
||||
// Configured with SDL_ANDROID_SetIndividualGamepadKeymap()
|
||||
/*
|
||||
keymap[KEYCODE_BUTTON_A] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_0));
|
||||
keymap[KEYCODE_BUTTON_B] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_1));
|
||||
keymap[KEYCODE_BUTTON_C] = SDL_KEY(C);
|
||||
@@ -146,6 +148,7 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
keymap[KEYCODE_BUTTON_THUMBR] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_9));
|
||||
keymap[KEYCODE_BUTTON_START] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_10));
|
||||
keymap[KEYCODE_BUTTON_SELECT] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_11));
|
||||
*/
|
||||
keymap[KEYCODE_BUTTON_MODE] = SDL_KEY(SPACE);
|
||||
keymap[KEYCODE_ESCAPE] = SDL_KEY(ESCAPE);
|
||||
keymap[KEYCODE_FORWARD_DEL] = SDL_KEY(DELETE);
|
||||
@@ -225,6 +228,8 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
keymap[KEYCODE_PROG_BLUE] = SDL_KEY(F1);
|
||||
keymap[KEYCODE_APP_SWITCH] = SDL_KEY(F2);
|
||||
// Key layout of my cheap crappy Datex gamepad, USB identifier is "DragonRise Inc."
|
||||
// Configured with SDL_ANDROID_SetIndividualGamepadKeymap()
|
||||
/*
|
||||
keymap[KEYCODE_BUTTON_1] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_3));
|
||||
keymap[KEYCODE_BUTTON_2] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_1));
|
||||
keymap[KEYCODE_BUTTON_3] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_0));
|
||||
@@ -237,6 +242,7 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
keymap[KEYCODE_BUTTON_10] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_11));
|
||||
keymap[KEYCODE_BUTTON_11] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_8));
|
||||
keymap[KEYCODE_BUTTON_12] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_KEYCODE_9));
|
||||
*/
|
||||
keymap[KEYCODE_BUTTON_13] = SDL_KEY(M);
|
||||
keymap[KEYCODE_BUTTON_14] = SDL_KEY(N);
|
||||
keymap[KEYCODE_BUTTON_15] = SDL_KEY(O);
|
||||
@@ -252,6 +258,92 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap)
|
||||
keymap[KEYCODE_MOUSE_WHEEL_DOWN] = SDL_KEY(MOUSE_WHEEL_DOWN);
|
||||
keymap[KEYCODE_MOUSE_X1] = SDL_KEY(MOUSE_X1);
|
||||
keymap[KEYCODE_MOUSE_X2] = SDL_KEY(MOUSE_X2);
|
||||
|
||||
for( int gamepadId = 0; gamepadId < SDL_ANDROID_MAX_GAMEPADS; gamepadId++ )
|
||||
{
|
||||
for( int i = 0; i < KEYCODE_LAST+1; i++ )
|
||||
{
|
||||
SDL_android_gamepad_keymap[gamepadId][i] = SDL_android_keymap[i];
|
||||
}
|
||||
}
|
||||
|
||||
SDL_ANDROID_SetIndividualGamepadKeymap( 0,
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_0)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_1)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_2)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_3)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_4)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_5)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_6)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_7)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_8)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_9)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_10)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_0_KEYCODE_11)),
|
||||
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_ANDROID_SetIndividualGamepadKeymap( 1,
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_0)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_1)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_2)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_3)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_4)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_5)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_6)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_7)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_8)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_9)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_10)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_1_KEYCODE_11)),
|
||||
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_ANDROID_SetIndividualGamepadKeymap( 2,
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_0)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_1)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_2)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_3)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_4)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_5)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_6)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_7)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_8)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_9)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_10)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_2_KEYCODE_11)),
|
||||
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_ANDROID_SetIndividualGamepadKeymap( 3,
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_0)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_1)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_2)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_3)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_4)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_5)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_6)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_7)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_8)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_9)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_10)),
|
||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_GAMEPAD_3_KEYCODE_11)),
|
||||
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))
|
||||
);
|
||||
*/
|
||||
}
|
||||
|
||||
unsigned char SDL_android_keysym_to_scancode[SDLK_LAST] = {
|
||||
|
||||
Reference in New Issue
Block a user