From 62f978664697fbd261de6c992656da538eb260ff Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jonas=20=C3=85dahl?= Date: Wed, 3 Oct 2012 22:56:58 +0200 Subject: [PATCH] evdev: Update axis notifications to follow protocol MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Ådahl --- src/evdev.c | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index cc5af91..1c65b7b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -30,6 +30,8 @@ #include "compositor.h" #include "evdev.h" +#define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int(10) + void evdev_led_update(struct evdev_device *device, enum weston_led leds) { @@ -161,17 +163,35 @@ evdev_process_relative(struct evdev_device *device, device->pending_events |= EVDEV_RELATIVE_MOTION; break; case REL_WHEEL: - notify_axis(device->seat, - time, - WL_POINTER_AXIS_VERTICAL_SCROLL, - wl_fixed_from_int(e->value)); + switch (e->value) { + case -1: + /* Scroll down */ + case 1: + /* Scroll up */ + notify_axis(device->seat, + time, + WL_POINTER_AXIS_VERTICAL_SCROLL, + -1 * e->value * DEFAULT_AXIS_STEP_DISTANCE); + break; + default: + break; + } break; case REL_HWHEEL: - notify_axis(device->seat, - time, - WL_POINTER_AXIS_HORIZONTAL_SCROLL, - wl_fixed_from_int(e->value)); - break; + switch (e->value) { + case -1: + /* Scroll left */ + case 1: + /* Scroll right */ + notify_axis(device->seat, + time, + WL_POINTER_AXIS_HORIZONTAL_SCROLL, + e->value * DEFAULT_AXIS_STEP_DISTANCE); + break; + default: + break; + + } } } -- 2.7.4