From 1d7c8697e963354d76794d8fbee0df214983bbdd Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 5 Oct 2018 00:56:30 -0700 Subject: [PATCH] Add support for X1 and X2 mouse buttons --- app/src/main/java/com/limelight/Game.java | 24 +++++++++++++++++++ .../binding/input/evdev/EvdevListener.java | 2 ++ .../input/evdev/EvdevCaptureProvider.java | 10 +++++++- moonlight-common | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 3149a533..7a356dbe 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -1010,6 +1010,24 @@ public class Game extends Activity implements SurfaceHolder.Callback, } } + if ((changedButtons & MotionEvent.BUTTON_BACK) != 0) { + if ((event.getButtonState() & MotionEvent.BUTTON_BACK) != 0) { + conn.sendMouseButtonDown(MouseButtonPacket.BUTTON_X1); + } + else { + conn.sendMouseButtonUp(MouseButtonPacket.BUTTON_X1); + } + } + + if ((changedButtons & MotionEvent.BUTTON_FORWARD) != 0) { + if ((event.getButtonState() & MotionEvent.BUTTON_FORWARD) != 0) { + conn.sendMouseButtonDown(MouseButtonPacket.BUTTON_X2); + } + else { + conn.sendMouseButtonUp(MouseButtonPacket.BUTTON_X2); + } + } + // Get relative axis values if we can if (inputCaptureProvider.eventHasRelativeMouseAxes(event)) { // Send the deltas straight from the motion event @@ -1360,6 +1378,12 @@ public class Game extends Activity implements SurfaceHolder.Callback, case EvdevListener.BUTTON_RIGHT: buttonIndex = MouseButtonPacket.BUTTON_RIGHT; break; + case EvdevListener.BUTTON_X1: + buttonIndex = MouseButtonPacket.BUTTON_X1; + break; + case EvdevListener.BUTTON_X2: + buttonIndex = MouseButtonPacket.BUTTON_X2; + break; default: LimeLog.warning("Unhandled button: "+buttonId); return; diff --git a/app/src/main/java/com/limelight/binding/input/evdev/EvdevListener.java b/app/src/main/java/com/limelight/binding/input/evdev/EvdevListener.java index c5cf10ab..cf96831b 100644 --- a/app/src/main/java/com/limelight/binding/input/evdev/EvdevListener.java +++ b/app/src/main/java/com/limelight/binding/input/evdev/EvdevListener.java @@ -4,6 +4,8 @@ public interface EvdevListener { int BUTTON_LEFT = 1; int BUTTON_MIDDLE = 2; int BUTTON_RIGHT = 3; + int BUTTON_X1 = 4; + int BUTTON_X2 = 5; void mouseMove(int deltaX, int deltaY); void mouseButtonEvent(int buttonId, boolean down); diff --git a/app/src/root/java/com.limelight/binding/input/evdev/EvdevCaptureProvider.java b/app/src/root/java/com.limelight/binding/input/evdev/EvdevCaptureProvider.java index 3f3ed7e0..e9316702 100644 --- a/app/src/root/java/com.limelight/binding/input/evdev/EvdevCaptureProvider.java +++ b/app/src/root/java/com.limelight/binding/input/evdev/EvdevCaptureProvider.java @@ -151,7 +151,15 @@ public class EvdevCaptureProvider extends InputCaptureProvider { break; case EvdevEvent.BTN_SIDE: - case EvdevEvent.BTN_EXTRA: + listener.mouseButtonEvent(EvdevListener.BUTTON_X1, + event.value != 0); + break; + + case EvdevEVent.BTN_EXTRA: + listener.mouseButtonEvent(EvdevListener.BUTTON_X2, + event.value != 0); + break; + case EvdevEvent.BTN_FORWARD: case EvdevEvent.BTN_BACK: case EvdevEvent.BTN_TASK: diff --git a/moonlight-common b/moonlight-common index 643d4b3c..31d6b4cb 160000 --- a/moonlight-common +++ b/moonlight-common @@ -1 +1 @@ -Subproject commit 643d4b3c918d39fa14ed199d616ff90dbb7be953 +Subproject commit 31d6b4cb9f216c799c4fc2f01a96feb03c49c328