mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-25 05:50:05 +01:00
touchpad: Enlarge topbutton area a bit while the touchpad is disabled
Make it easier to hit the topbutton area when the touchpad is disabled, normally we don't want to make the topbutton area too big, so as to not interfere with normal touchpad operation, but when disabled we have no such worries. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
5eafd37599
commit
d3ad8cf888
3 changed files with 19 additions and 8 deletions
|
|
@ -496,7 +496,8 @@ tp_release_all_buttons(struct tp_dispatch *tp,
|
|||
|
||||
void
|
||||
tp_init_softbuttons(struct tp_dispatch *tp,
|
||||
struct evdev_device *device)
|
||||
struct evdev_device *device,
|
||||
double topbutton_size_mult)
|
||||
{
|
||||
int width, height;
|
||||
const struct input_absinfo *absinfo_x, *absinfo_y;
|
||||
|
|
@ -524,14 +525,18 @@ tp_init_softbuttons(struct tp_dispatch *tp,
|
|||
tp->buttons.bottom_area.rightbutton_left_edge = width/2 + xoffset;
|
||||
|
||||
if (tp->buttons.has_topbuttons) {
|
||||
/* T440s has the top button line 5mm from the top,
|
||||
event analysis has shown events to start down to ~10mm
|
||||
from the top - which maps to 15% */
|
||||
/* T440s has the top button line 5mm from the top, event
|
||||
analysis has shown events to start down to ~10mm from the
|
||||
top - which maps to 15%. We allow the caller to enlarge the
|
||||
area using a multiplier for the touchpad disabled case. */
|
||||
double topsize_mm = 10 * topbutton_size_mult;
|
||||
double topsize_pct = .15 * topbutton_size_mult;
|
||||
|
||||
if (yres > 1) {
|
||||
tp->buttons.top_area.bottom_edge =
|
||||
yoffset + 10 * yres;
|
||||
yoffset + topsize_mm * yres;
|
||||
} else {
|
||||
tp->buttons.top_area.bottom_edge = height * .15 + yoffset;
|
||||
tp->buttons.top_area.bottom_edge = height * topsize_pct + yoffset;
|
||||
}
|
||||
tp->buttons.top_area.rightbutton_left_edge = width * .58 + xoffset;
|
||||
tp->buttons.top_area.leftbutton_right_edge = width * .42 + xoffset;
|
||||
|
|
@ -581,7 +586,7 @@ tp_init_buttons(struct tp_dispatch *tp,
|
|||
tp->buttons.use_clickfinger = true;
|
||||
|
||||
if (tp->buttons.is_clickpad && !tp->buttons.use_clickfinger) {
|
||||
tp_init_softbuttons(tp, device);
|
||||
tp_init_softbuttons(tp, device, 1.0);
|
||||
} else {
|
||||
tp->buttons.bottom_area.top_edge = INT_MAX;
|
||||
tp->buttons.top_area.bottom_edge = INT_MIN;
|
||||
|
|
|
|||
|
|
@ -645,6 +645,8 @@ tp_suspend(struct tp_dispatch *tp, struct evdev_device *device)
|
|||
*/
|
||||
if (tp->buttons.has_topbuttons) {
|
||||
evdev_notify_suspended_device(device);
|
||||
/* Enlarge topbutton area while suspended */
|
||||
tp_init_softbuttons(tp, device, 1.5);
|
||||
} else {
|
||||
evdev_device_suspend(device);
|
||||
}
|
||||
|
|
@ -656,6 +658,8 @@ tp_resume(struct tp_dispatch *tp, struct evdev_device *device)
|
|||
if (tp->buttons.has_topbuttons) {
|
||||
/* tap state-machine is offline while suspended, reset state */
|
||||
tp_clear_state(tp, device);
|
||||
/* restore original topbutton area size */
|
||||
tp_init_softbuttons(tp, device, 1.0);
|
||||
evdev_notify_resumed_device(device);
|
||||
} else {
|
||||
evdev_device_resume(device);
|
||||
|
|
|
|||
|
|
@ -245,7 +245,9 @@ int
|
|||
tp_init_buttons(struct tp_dispatch *tp, struct evdev_device *device);
|
||||
|
||||
void
|
||||
tp_init_softbuttons(struct tp_dispatch *tp, struct evdev_device *device);
|
||||
tp_init_softbuttons(struct tp_dispatch *tp,
|
||||
struct evdev_device *device,
|
||||
double topbutton_size_mult);
|
||||
|
||||
void
|
||||
tp_destroy_buttons(struct tp_dispatch *tp);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue