diff --git a/UI/ControlMappingScreen.cpp b/UI/ControlMappingScreen.cpp index 5e83b869de..574e795ddd 100644 --- a/UI/ControlMappingScreen.cpp +++ b/UI/ControlMappingScreen.cpp @@ -579,15 +579,17 @@ void AnalogSetupScreen::update() { } bool AnalogSetupScreen::key(const KeyInput &key) { - // Allow testing auto-rotation + bool retval = UIScreen::key(key); + + // Allow testing auto-rotation. If it collides with UI keys, too bad. bool pauseTrigger = false; mapper_.Key(key, &pauseTrigger); if (UI::IsEscapeKey(key)) { TriggerFinish(DR_BACK); - return true; + return retval; } - return true; + return retval; } bool AnalogSetupScreen::axis(const AxisInput &axis) { diff --git a/UI/ControlMappingScreen.h b/UI/ControlMappingScreen.h index c8dc1adbe5..025d4bc40c 100644 --- a/UI/ControlMappingScreen.h +++ b/UI/ControlMappingScreen.h @@ -44,7 +44,6 @@ private: UI::EventReturn OnDefaultMapping(UI::EventParams ¶ms); UI::EventReturn OnClearMapping(UI::EventParams ¶ms); UI::EventReturn OnAutoConfigure(UI::EventParams ¶ms); - UI::EventReturn OnTestAnalogs(UI::EventParams ¶ms); virtual void dialogFinished(const Screen *dialog, DialogResult result) override; diff --git a/android/src/org/ppsspp/ppsspp/NativeActivity.java b/android/src/org/ppsspp/ppsspp/NativeActivity.java index ef46b87ae8..6808ce1161 100644 --- a/android/src/org/ppsspp/ppsspp/NativeActivity.java +++ b/android/src/org/ppsspp/ppsspp/NativeActivity.java @@ -108,10 +108,7 @@ public abstract class NativeActivity extends Activity { // Allow for multiple connected gamepads but just consider them the same for now. // Actually this is not entirely true, see the code. - private InputDeviceState inputPlayerA; - private InputDeviceState inputPlayerB; - private InputDeviceState inputPlayerC; - private String inputPlayerADesc; + private ArrayList inputPlayers = new ArrayList(); private PowerSaveModeReceiver mPowerSaveModeReceiver = null; private SizeManager sizeManager = null; @@ -918,35 +915,18 @@ public abstract class NativeActivity extends Activity { if (device == null) { return null; } - if (inputPlayerA == null) { - inputPlayerADesc = getInputDesc(device); - Log.i(TAG, "Input player A registered: desc = " + inputPlayerADesc); - inputPlayerA = new InputDeviceState(device); + + for (InputDeviceState input : inputPlayers) { + if (input.getDevice() == device) { + return input; + } } - if (inputPlayerA.getDevice() == device) { - return inputPlayerA; - } - - if (inputPlayerB == null) { - Log.i(TAG, "Input player B registered: desc = " + getInputDesc(device)); - inputPlayerB = new InputDeviceState(device); - } - - if (inputPlayerB.getDevice() == device) { - return inputPlayerB; - } - - if (inputPlayerC == null) { - Log.i(TAG, "Input player C registered"); - inputPlayerC = new InputDeviceState(device); - } - - if (inputPlayerC.getDevice() == device) { - return inputPlayerC; - } - - return inputPlayerA; + // None was found, just add and return it. + InputDeviceState state = new InputDeviceState(device); + inputPlayers.add(state); + Log.i(TAG, "Input player registered: desc = " + getInputDesc(device)); + return state; } public boolean IsXperiaPlay() {