X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fgamepad.cpp;h=a7a949864a4af62d49f070bca0a230e868e0636b;hb=e310c1d53915d306d8aa9a1bed9bac489bd30b03;hp=b8ebdde5c21a8bf9827d906b2ac92508c2e0c3b2;hpb=62587015fb12ec54b1702bfa17077e4b8af44b19;p=virtualjaguar diff --git a/src/gui/gamepad.cpp b/src/gui/gamepad.cpp index b8ebdde..a7a9498 100644 --- a/src/gui/gamepad.cpp +++ b/src/gui/gamepad.cpp @@ -64,6 +64,15 @@ void Gamepad::AllocateJoysticks(void) numHats[i] = SDL_JoystickNumHats(pad[i]); numAxes[i] = SDL_JoystickNumAxes(pad[i]); WriteLog("Gamepad: Joystick #%i: %s\n", i, padName[i]); + + // Ick, kludges already!!! + if (strcmp(padName[i], "Sony PLAYSTATION(R)3 Controller") == 0) + { + // We do this because these axes stay stuck on -32767 (buttons) + // or start at 0 and stay stuck at -32767 (D-pad). :-P + numAxes[i] = 8; + WriteLog("Gamepad: Blacklisting PS3 controller axes 8 on up...\n"); + } } } @@ -137,9 +146,10 @@ bool Gamepad::GetState(int joystickID, int buttonID) } -//UNUSED int Gamepad::CheckButtonPressed(void) { + DumpJoystickStatesToLog(); + // This translates the hat direction to a mask index. int hatNum[16] = { -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1 }; @@ -211,6 +221,83 @@ void Gamepad::Update(void) } +void Gamepad::DumpJoystickStatesToLog(void) +{ + bool pressed = false; + + for(int i=0; i 32000) + { + pressed = true; + break; + break; + } + + if (axis[i][j] < -32000) + { + pressed = true; + break; + break; + } + } + } + + if (!pressed) + return; + + WriteLog("Gamepad: CheckButtonPressed...\n"); + + for(int i=0; i 32000) + WriteLog("Gamepad: Pad #%i, axis %i pushed down...\n", i, j); + + if (axis[i][j] < -32000) + WriteLog("Gamepad: Pad #%i, axis %i pushed up...\n", i, j); + } + } +} + + // However, SDL 2 *does* support hot-plugging! :-D #if 0 // Need to test this. It may be that the only time joysticks are detected is