summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-01-09 17:03:45 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-01-13 13:35:42 +1000
commit2708be27b29ad7f7cc5d99a8ba0ebba490847e01 (patch)
tree7801c71df672b98925e34c66692ae17064b216e3
parent2ff009a45dd59caf8747b5bbf0e16358a1a741a1 (diff)
Change the scroll step distance to 15 and document it as degrees
Similar to the mouse resolution, let's make the scroll distance a sensible predictable value. Most mice use a 15 degree angle per scroll click, so let's change to that. This will alter behaviour in clients that expect 10. We return doubles for the axis value, so that leaves the option of really fine-grained step sizes in the future. We currently assume all mice have 15 degree angles. Like the DPI settings, it will require a udev property to be set. Patch for that to follow. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
-rw-r--r--src/evdev.c6
-rw-r--r--src/libinput.h8
-rw-r--r--test/pointer.c4
3 files changed, 9 insertions, 9 deletions
diff --git a/src/evdev.c b/src/evdev.c
index 1718491d..d8b61299 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -40,7 +40,7 @@
#include "filter.h"
#include "libinput-private.h"
-#define DEFAULT_AXIS_STEP_DISTANCE 10
+#define DEFAULT_WHEEL_CLICK_ANGLE 15
#define DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT 200
enum evdev_key_type {
@@ -577,7 +577,7 @@ evdev_process_relative(struct evdev_device *device,
time,
LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL,
LIBINPUT_POINTER_AXIS_SOURCE_WHEEL,
- -1 * e->value * DEFAULT_AXIS_STEP_DISTANCE);
+ -1 * e->value * DEFAULT_WHEEL_CLICK_ANGLE);
break;
case REL_HWHEEL:
evdev_flush_pending_event(device, time);
@@ -586,7 +586,7 @@ evdev_process_relative(struct evdev_device *device,
time,
LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL,
LIBINPUT_POINTER_AXIS_SOURCE_WHEEL,
- e->value * DEFAULT_AXIS_STEP_DISTANCE);
+ e->value * DEFAULT_WHEEL_CLICK_ANGLE);
break;
}
}
diff --git a/src/libinput.h b/src/libinput.h
index d0518cc6..f605e52b 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -704,10 +704,10 @@ libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event);
*
* If the source is @ref LIBINPUT_POINTER_AXIS_SOURCE_WHEEL, no terminating
* event is guaranteed (though it may happen).
- * Scrolling is in discrete steps, a value of 10 representing one click
- * of a typical mouse wheel. Some mice may have differently grained wheels,
- * libinput will adjust the value accordingly. It is up to the caller how to
- * interpret such different step sizes.
+ * Scrolling is in discrete steps, the value is the angle the wheel moved
+ * in degrees. The default is 15 degrees per wheel click, but some mice may
+ * have differently grained wheels. It is up to the caller how to interpret
+ * such different step sizes.
*
* If the source is @ref LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS, no
* terminating event is guaranteed (though it may happen).
diff --git a/test/pointer.c b/test/pointer.c
index b9bd3cc8..d12c9f6b 100644
--- a/test/pointer.c
+++ b/test/pointer.c
@@ -350,8 +350,8 @@ test_wheel_event(struct litest_device *dev, int which, int amount)
struct libinput_event_pointer *ptrev;
/* the current evdev implementation scales the scroll wheel events
- up by a factor 10 */
- const int scroll_step = 10;
+ up by a factor 15 */
+ const int scroll_step = 15;
int expected = amount * scroll_step;
if (libinput_device_config_scroll_get_natural_scroll_enabled(dev->libinput_device))