From 3d0d19e5615548589ab80e4c8cc2a7658780f69d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 1 Mar 2020 12:45:00 -0800 Subject: [PATCH] Pass-through back button on external devices that don't look like gamepads --- .../limelight/binding/input/ControllerHandler.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java index 82b05a19..2e5304cf 100644 --- a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java +++ b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java @@ -380,9 +380,7 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD } // Classify this device as a remote by name if it has no joystick axes - if (getMotionRangeForJoystickAxis(dev, MotionEvent.AXIS_X) == null && - getMotionRangeForJoystickAxis(dev, MotionEvent.AXIS_Y) == null && - devName.toLowerCase().contains("remote")) { + if (!hasJoystickAxes(dev) && devName.toLowerCase().contains("remote")) { return true; } @@ -424,8 +422,11 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD // c) have an internal gamepad but no internal select button (NVIDIA SHIELD Portable) return !foundInternalGamepad || foundInternalSelect; } - - return false; + else { + // For external devices, we want to pass through the back button if the device + // has no gamepad axes or gamepad buttons. + return !hasJoystickAxes(dev) && !hasGamepadButtons(dev); + } } private InputDeviceContext createInputDeviceContextForDevice(InputDevice dev) {