[PATCH weston] evdev: Update axis notifications to follow protocol
Jonas Ådahl
jadahl at gmail.com
Wed Oct 3 13:51:20 PDT 2012
Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
Follow up from http://lists.freedesktop.org/archives/wayland-devel/2012-September/005596.html
src/evdev.c | 38 +++++++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/src/evdev.c b/src/evdev.c
index 8848736..648a6de 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_VERTICAL_SCROLL,
+ e->value * DEFAULT_AXIS_STEP_DISTANCE);
+ break;
+ default:
+ break;
+
+ }
}
}
--
1.7.9.5
More information about the wayland-devel
mailing list