evdev: Update axis notifications to follow protocol

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
dev
Jonas Ådahl 12 years ago committed by Kristian Høgsberg
parent f255690e54
commit b984e40c28
  1. 38
      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;
}
}
}

Loading…
Cancel
Save