From 4dc61434407b9117b301671a9a45da617226beb9 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 5 Jul 2023 23:00:54 -0500 Subject: [PATCH] Override the stock DS4 touchpad button mapping for Shield devices Nvidia's stock mapping treats the clickpad as a second select button. --- .../limelight/binding/input/ControllerHandler.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 279da64d..679e2a60 100644 --- a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java +++ b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java @@ -1133,6 +1133,17 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD } } + // The Shield's key layout files map the DualShock 4 clickpad button to + // BUTTON_SELECT instead of something sane like BUTTON_1 as the standard AOSP + // mapping does. If we get a button from a Sony device reported as BUTTON_SELECT + // that matches the keycode used by hid-sony for the clickpad, remap it to + // BUTTON_1 to match the current AOSP layout and trigger our touchpad button logic. + if (context.vendorId == 0x054c && + event.getKeyCode() == KeyEvent.KEYCODE_BUTTON_SELECT && + event.getScanCode() == 317) { + return KeyEvent.KEYCODE_BUTTON_1; + } + // Override mode button for 8BitDo controllers if (context.vendorId == 0x2dc8 && event.getScanCode() == 306) { return KeyEvent.KEYCODE_BUTTON_MODE;