From: Peter Hutterer Date: Tue, 14 Apr 2015 04:41:39 +0000 (+1000) Subject: evdev: enable middle button configuration on some devices X-Git-Tag: 0.14.0~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1ba7004dbc0af62e65221ac6fa0fb59204a5e81e;p=platform%2Fupstream%2Flibinput.git evdev: enable middle button configuration on some devices 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 Reviewed-by: Hans de Goede --- diff --git a/src/evdev.c b/src/evdev.c index 6ca874a1..da33eaeb 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1143,6 +1143,24 @@ 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); + bool want_config = has_middle; + bool enable_by_default = !has_middle; + + evdev_init_middlebutton(evdev_device, + enable_by_default, + want_config); + } + return dispatch; }