diff --git a/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java b/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java --- a/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java +++ b/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java @@ -45,12 +45,14 @@ private final static float MinDistanceToSendScroll = 2.5f; // touch gesture scroll private final static float MinDistanceToSendGenericScroll = 0.1f; // real mouse scroll wheel event + private final static float StandardDpi = 240.0f; // = hdpi private float mPrevX; private float mPrevY; private float mCurrentX; private float mCurrentY; private float mCurrentSensitivity; + private float displayDpiMultiplier; private int scrollDirection = 1; boolean isScrolling = false; @@ -112,6 +114,10 @@ doubleTapAction = ClickType.fromString(doubleTapSetting); tripleTapAction = ClickType.fromString(tripleTapSetting); + //Technically xdpi and ydpi should be handled separately, + //but since ydpi is usually almost equal to xdpi, only xdpi is used for the multiplier. + displayDpiMultiplier = StandardDpi / getResources().getDisplayMetrics().xdpi; + switch (sensitivitySetting) { case "slowest": mCurrentSensitivity = 0.2f; @@ -215,7 +221,10 @@ Device device = service.getDevice(deviceId); MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class); if (mousePadPlugin == null) return; - mousePadPlugin.sendMouseDelta(mCurrentX - mPrevX, mCurrentY - mPrevY, mCurrentSensitivity); + mousePadPlugin.sendMouseDelta( + (mCurrentX - mPrevX) * displayDpiMultiplier, + (mCurrentY - mPrevY) * displayDpiMultiplier, + mCurrentSensitivity); mPrevX = mCurrentX; mPrevY = mCurrentY; });