From cde8ec8262a76dda1b3782d72c673043f778a218 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 3 Sep 2014 22:53:40 -0700 Subject: [PATCH] Add vertical mouse scrolling support --- libs/limelight-common.jar | Bin 416374 -> 417348 bytes src/com/limelight/Game.java | 21 +++++++++++++++--- .../binding/input/evdev/EvdevEvent.java | 1 + .../binding/input/evdev/EvdevHandler.java | 8 +++++++ .../binding/input/evdev/EvdevListener.java | 1 + 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/libs/limelight-common.jar b/libs/limelight-common.jar index 9e9c6f512bd5cd960819d7ceaf86ec421be1c7cc..4b12f093e6abdf705c7c4887af97b897b0bcabd3 100644 GIT binary patch delta 15289 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 X)s+w+QHI=vA^*hWFfjO%k3at(BJ?(j delta 13909 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 J2QUi-^?$U?AwmEE diff --git a/src/com/limelight/Game.java b/src/com/limelight/Game.java index 9d6fa12c..2e9b465e 100644 --- a/src/com/limelight/Game.java +++ b/src/com/limelight/Game.java @@ -503,9 +503,19 @@ public class Game extends Activity implements SurfaceHolder.Callback, } } else if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != 0) - { - // Send a mouse move update (if neccessary) - updateMousePosition((int)event.getX(), (int)event.getY()); + { + switch (event.getActionMasked()) + { + case MotionEvent.ACTION_HOVER_MOVE: + // Send a mouse move update (if neccessary) + updateMousePosition((int)event.getX(), (int)event.getY()); + break; + case MotionEvent.ACTION_SCROLL: + // Send the vertical scroll packet + byte vScrollClicks = (byte) event.getAxisValue(MotionEvent.AXIS_VSCROLL); + conn.sendMouseScroll(vScrollClicks); + break; + } return true; } @@ -680,4 +690,9 @@ public class Game extends Activity implements SurfaceHolder.Callback, conn.sendMouseButtonUp(buttonIndex); } } + + @Override + public void mouseScroll(byte amount) { + conn.sendMouseScroll(amount); + } } diff --git a/src/com/limelight/binding/input/evdev/EvdevEvent.java b/src/com/limelight/binding/input/evdev/EvdevEvent.java index 7cae1f7e..ed5e8a4b 100644 --- a/src/com/limelight/binding/input/evdev/EvdevEvent.java +++ b/src/com/limelight/binding/input/evdev/EvdevEvent.java @@ -12,6 +12,7 @@ public class EvdevEvent { /* Relative axes */ public static final short REL_X = 0x00; public static final short REL_Y = 0x01; + public static final short REL_WHEEL = 0x08; /* Buttons */ public static final short BTN_LEFT = 0x110; diff --git a/src/com/limelight/binding/input/evdev/EvdevHandler.java b/src/com/limelight/binding/input/evdev/EvdevHandler.java index a7a291e2..be081a35 100644 --- a/src/com/limelight/binding/input/evdev/EvdevHandler.java +++ b/src/com/limelight/binding/input/evdev/EvdevHandler.java @@ -45,6 +45,7 @@ public class EvdevHandler { try { int deltaX = 0; int deltaY = 0; + byte deltaScroll = 0; while (!isInterrupted() && !shutdown) { EvdevEvent event = EvdevReader.read(fd, buffer); @@ -59,6 +60,10 @@ public class EvdevHandler { listener.mouseMove(deltaX, deltaY); deltaX = deltaY = 0; } + if (deltaScroll != 0) { + listener.mouseScroll(deltaScroll); + deltaScroll = 0; + } break; case EvdevEvent.EV_REL: @@ -70,6 +75,9 @@ public class EvdevHandler { case EvdevEvent.REL_Y: deltaY = event.value; break; + case EvdevEvent.REL_WHEEL: + deltaScroll = (byte) event.value; + break; } break; diff --git a/src/com/limelight/binding/input/evdev/EvdevListener.java b/src/com/limelight/binding/input/evdev/EvdevListener.java index a8f781ea..b7bdb120 100644 --- a/src/com/limelight/binding/input/evdev/EvdevListener.java +++ b/src/com/limelight/binding/input/evdev/EvdevListener.java @@ -7,4 +7,5 @@ public interface EvdevListener { public void mouseMove(int deltaX, int deltaY); public void mouseButtonEvent(int buttonId, boolean down); + public void mouseScroll(byte amount); }