commit bba112e
Michael Forney
·
2017-02-11 00:54:20 +0000 UTC
parent 454b971
evdev_device: Generate axis events for BTN_GEAR_DOWN and BTN_GEAR_UP
1 files changed,
+12,
-0
+12,
-0
1@@ -59,6 +59,18 @@ handle_key_event(struct evdev_device *device, struct input_event *ev)
2 if ((ev->code >= BTN_MISC && ev->code <= BTN_GEAR_UP) || ev->code >= BTN_TRIGGER_HAPPY) {
3 state = ev->value ? WL_POINTER_BUTTON_STATE_PRESSED : WL_POINTER_BUTTON_STATE_RELEASED;
4 device->handler->button(time, ev->code, state);
5+ if (state == WL_POINTER_BUTTON_STATE_PRESSED) {
6+ /* qemu generates GEAR_UP/GEAR_DOWN events on scroll, so
7+ * pass those through as axis events. */
8+ switch (ev->code) {
9+ case BTN_GEAR_DOWN:
10+ device->handler->axis(time, WL_POINTER_AXIS_VERTICAL_SCROLL, wl_fixed_from_int(AXIS_STEP_DISTANCE));
11+ break;
12+ case BTN_GEAR_UP:
13+ device->handler->axis(time, WL_POINTER_AXIS_VERTICAL_SCROLL, wl_fixed_from_int(-AXIS_STEP_DISTANCE));
14+ break;
15+ }
16+ }
17 } else {
18 state = ev->value ? WL_KEYBOARD_KEY_STATE_PRESSED : WL_KEYBOARD_KEY_STATE_RELEASED;
19 device->handler->key(time, ev->code, state);