Merge pull request #8949 from klyoungblood/ps3-controller

Adds --PS3 comand line option for PS3 controller support on SDL.
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2016-09-04 10:47:14 +02:00
commit 2f69bfbb32
5 files changed
+39 -1

No files matched your search

+1
View File
@@ -121,6 +121,7 @@ public:
#if !defined(MOBILE_DEVICE)
bool bPauseExitsEmulator;
#endif
bool bPS3Controller;
// Core
bool bIgnoreBadMemAccess;
+11 -1
View File
@@ -1,4 +1,5 @@
#include "SDL/SDLJoystick.h"
#include "Core/Config.h"
#include <iostream>
@@ -16,13 +17,22 @@ SDLJoystick::SDLJoystick(bool init_SDL ): thread(NULL), running(true) {
SDL_setenv("SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS", "1", 0);
SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
}
fillMapping();
int numjoys = SDL_NumJoysticks();
SDL_JoystickEventState(SDL_ENABLE);
for (int i = 0; i < numjoys; i++) {
joys.push_back(SDL_JoystickOpen(i));
// printf("Initialized joystick %d: %s",i,SDL_JoystickNameForIndex(i));
if(strstr(SDL_JoystickNameForIndex(i),"PLAYSTATION(R)3 Controller"))
g_Config.bPS3Controller = true;
}
if (g_Config.bPS3Controller)
fillMappingPS3();
else
fillMapping();
}
SDLJoystick::~SDLJoystick(){
+24
View File
@@ -31,6 +31,30 @@ public:
private:
void runLoop();
void fillMappingPS3()
{
SDLJoyButtonMap[14] = NKCODE_BUTTON_1; // Cross
SDLJoyButtonMap[13] = NKCODE_BUTTON_2; // Circle
SDLJoyButtonMap[15] = NKCODE_BUTTON_3; // Sqlare
SDLJoyButtonMap[12] = NKCODE_BUTTON_4; // Triangle
SDLJoyButtonMap[10] = NKCODE_BUTTON_5; // L1
SDLJoyButtonMap[11] = NKCODE_BUTTON_6; // R1
SDLJoyButtonMap[8] = NKCODE_BUTTON_7; // L2
SDLJoyButtonMap[9] = NKCODE_BUTTON_8; // R2
SDLJoyButtonMap[0] = NKCODE_BUTTON_9; // Select
SDLJoyButtonMap[3] = NKCODE_BUTTON_10; // Start
SDLJoyButtonMap[1] = NKCODE_BUTTON_11; // L3
SDLJoyButtonMap[2] = NKCODE_BUTTON_12; // R3
SDLJoyButtonMap[16] = NKCODE_BUTTON_13; // PS
SDLJoyButtonMap[4] = NKCODE_DPAD_UP;
SDLJoyButtonMap[6] = NKCODE_DPAD_DOWN;
SDLJoyButtonMap[7] = NKCODE_DPAD_LEFT;
SDLJoyButtonMap[5] = NKCODE_DPAD_RIGHT;
SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
}
void fillMapping()
{
//TODO: C++11 aggregate initialization
+2
View File
@@ -415,6 +415,8 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
fileToLog = argv[i] + strlen("--log=");
if (!strncmp(argv[i], "--state=", strlen("--state=")) && strlen(argv[i]) > strlen("--state="))
stateToLoad = argv[i] + strlen("--state=");
if (!strncmp(argv[1], "--PS3", strlen("--PS3")))
g_Config.bPS3Controller = true;
#if !defined(MOBILE_DEVICE)
if (!strncmp(argv[i], "--escape-exit", strlen("--escape-exit")))
g_Config.bPauseExitsEmulator = true;
+1
View File
@@ -175,3 +175,4 @@ enum SystemProperty {
std::string System_GetProperty(SystemProperty prop);
int System_GetPropertyInt(SystemProperty prop);