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);