[PATCH libinput 4/6] evdev: enable middle button configuration on some devices

Peter Hutterer peter.hutterer at who-t.net
Tue Apr 14 20:51:16 PDT 2015


Devices that have left and right buttons but no middle button get middle
button emulation (without config). Devices that have a middle button too get
a config option but default to off. Most mice have LMR set as buttons,
regardless whether they have a middle button.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/evdev.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/evdev.c b/src/evdev.c
index 6ca874a..30fa2c5 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1143,6 +1143,19 @@ fallback_dispatch_create(struct libinput_device *device)
 	evdev_init_calibration(evdev_device, dispatch);
 	evdev_init_sendevents(evdev_device, dispatch);
 
+	/* BTN_MIDDLE is set on mice even when it's not present. So
+	 * we can only use the absense of BTN_MIDDLE to mean something, i.e.
+	 * we enable it by default on anything that only has L&R.
+	 * If we have L&R and no middle, we don't expose it as config
+	 * option */
+	if (libevdev_has_event_code(evdev_device->evdev, EV_KEY, BTN_LEFT) &&
+	    libevdev_has_event_code(evdev_device->evdev, EV_KEY, BTN_RIGHT)) {
+		bool has_middle = libevdev_has_event_code(evdev_device->evdev,
+							  EV_KEY,
+							  BTN_MIDDLE);
+		evdev_init_middlebutton(evdev_device, !has_middle, has_middle);
+	}
+
 	return dispatch;
 }
 
-- 
2.3.4



More information about the wayland-devel mailing list