diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-07-02 15:41:22 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2014-07-03 13:52:57 +1000 |
commit | ebc087fbf616171190caf3c80d1da13873cf138b (patch) | |
tree | 1e7c969a57af68dcc7fe0dccbcc8eb970b9fe193 | |
parent | 2219c12c3aa45b80f235e761e87c17fb9ec70eae (diff) | |
download | libinput-ebc087fbf616171190caf3c80d1da13873cf138b.tar.gz |
touchpad: reduce button size, use physical sizes where possible
The current 20% is excessive. On the t440s, the button size amounts to ~14mm
from the bottom. On the x220 it amounts to ~9mm, leaving only 31mm as actual
touchpad.
Reduce it to 15% instead, which amounts to 10.5mm on the t440 and 6mm on the
x220. Cap the button height further by making buttons a maximum height of
10mm, anything larger than that is excessive anyway.
Smaller buttons should be acceptable since we can rely on the bottom edge to
be a haptic feedback and thus a good hit-target, somewhat simliar to how
screen edges are good hit-targets.
The top software buttons stay the same size, but prefer a physical size of 6mm
instead (which is 1mm below the button marker line on the T440s). If no y
resolution is available, fall back to the 8% which is 5.6mm on the T440s.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r-- | src/evdev-mt-touchpad-buttons.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c index b84198ce..9848a32a 100644 --- a/src/evdev-mt-touchpad-buttons.c +++ b/src/evdev-mt-touchpad-buttons.c @@ -605,11 +605,28 @@ tp_init_buttons(struct tp_dispatch *tp, if (tp->buttons.is_clickpad && !tp->buttons.use_clickfinger) { int xoffset = absinfo_x->minimum, yoffset = absinfo_y->minimum; - tp->buttons.bottom_area.top_edge = height * .8 + yoffset; + int yres = absinfo_y->resolution; + + /* button height: 10mm or 15% of the touchpad height, + whichever is smaller */ + if (yres > 1 && (height * 0.15/yres) > 10) { + tp->buttons.bottom_area.top_edge = + absinfo_y->maximum - 10 * yres; + } else { + tp->buttons.bottom_area.top_edge = height * .85 + yoffset; + } + tp->buttons.bottom_area.rightbutton_left_edge = width/2 + xoffset; if (tp->buttons.has_topbuttons) { - tp->buttons.top_area.bottom_edge = height * .08 + yoffset; + /* T440s has the top button line 5mm from the top, + make the buttons 6mm high */ + if (yres > 1) { + tp->buttons.top_area.bottom_edge = + yoffset + 6 * yres; + } else { + tp->buttons.top_area.bottom_edge = height * .08 + yoffset; + } tp->buttons.top_area.rightbutton_left_edge = width * .58 + xoffset; tp->buttons.top_area.leftbutton_right_edge = width * .42 + xoffset; } else { |