diff --git a/libs/limelight-common.jar b/libs/limelight-common.jar index 9e9c6f51..4b12f093 100644 Binary files a/libs/limelight-common.jar and b/libs/limelight-common.jar differ 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); }