mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-08 23:20:15 +01:00
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 <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
75f15917a3
commit
1ba7004dbc
1 changed files with 18 additions and 0 deletions
18
src/evdev.c
18
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue