evdev: Update axis notifications to follow protocol

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
Jonas Ådahl 2012-10-03 22:56:58 +02:00 committed by Kristian Høgsberg
parent f255690e54
commit b984e40c28
1 changed files with 29 additions and 9 deletions

View File

@ -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:
switch (e->value) {
case -1:
/* Scroll down */
case 1:
/* Scroll up */
notify_axis(device->seat,
time,
WL_POINTER_AXIS_VERTICAL_SCROLL,
wl_fixed_from_int(e->value));
-1 * e->value * DEFAULT_AXIS_STEP_DISTANCE);
break;
default:
break;
}
break;
case REL_HWHEEL:
switch (e->value) {
case -1:
/* Scroll left */
case 1:
/* Scroll right */
notify_axis(device->seat,
time,
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
wl_fixed_from_int(e->value));
e->value * DEFAULT_AXIS_STEP_DISTANCE);
break;
default:
break;
}
}
}