mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 17:20:04 +01:00
This can happen a lot easier on the new Lenovo series, so document that this is intentional behavior. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
93 lines
4.1 KiB
Text
93 lines
4.1 KiB
Text
/**
|
|
@page clickpad_softbuttons Clickpad software button behavior
|
|
|
|
Clickpad is the name given to touchpads without physical buttons below the
|
|
touchpad. Instead, the whole touchpad acts as a button and left or right
|
|
button clicks are distinguished by the location and/or number of fingers on
|
|
the touchpad. <a href="http://www.synaptics.com/en/clickpad.php">"ClickPad" is
|
|
a trademark by Synaptics Inc.</a> but for simplicity we refer to any
|
|
touchpad with the above feature as Clickpad, regardless of the manufacturer.
|
|
|
|
A clickpad is always marked with the <a
|
|
href="https://www.kernel.org/doc/Documentation/input/event-codes.txt">INPUT_PROP_BUTTONPAD</a> property.
|
|
To perform a right-click on a Clickpad, libinput provides @ref
|
|
software_buttons and @ref clickfinger.
|
|
|
|
In the page below, the term "click" shall refer to a physical button press
|
|
and/or release of the touchpad, the term "button event" refers to the events
|
|
generated by libinput and passed to the caller in response to a click.
|
|
|
|
@section software_buttons Software button areas
|
|
|
|
On most clickpads, this is the default behavior. The bottom of the touchpad
|
|
is split in the middle to generate left or right button events on click. The
|
|
height of the button area depends on the hardware but is usually around
|
|
10mm.
|
|
|
|
@dot
|
|
digraph G {
|
|
clickpad [
|
|
shape = "record";
|
|
label = "{\nMain\nArea\n\n|{LEFT|RIGHT}}";
|
|
]
|
|
}
|
|
@enddot
|
|
|
|
Left, right and middle button events can be triggered as follows:
|
|
- if a finger is in the main area or the left button area, a click generates
|
|
left button events.
|
|
- if a finger is in the right area, a click generates right button events.
|
|
- if there is a finger in both the left and right button area, a click
|
|
generates middle button events.
|
|
|
|
If fingers are down in the main area in addition to fingers in the
|
|
left or right button area, those fingers are are ignored.
|
|
A release event always releases the buttons logically down, regardless of
|
|
the current finger position
|
|
|
|
The movement of a finger can alter the button area behavior:
|
|
- if a finger starts in the main area and moves into the software button
|
|
area, the software buttons do not apply to that finger
|
|
- a finger in the software button area does not move the pointer
|
|
- if a finger moves out out of the button area it will control the pointer
|
|
if it's the first finger in the main area
|
|
- once a finger has moved out of the button area, it cannot move back in and
|
|
trigger a right or middle button event
|
|
|
|
On some touchpads, notably the 2015 Lenovo X1 Carbon 3rd series, the very
|
|
bottom end of the touchpad is outside of the sensor range but it is possible
|
|
to trigger a physical click there. To libinput, the click merely shows up as
|
|
a left button click without any positional finger data and it is
|
|
impossible to determine whether it is a left or a right click. libinput
|
|
ignores such button clicks, this behavior is intentional.
|
|
|
|
@section clickfinger Clickfinger behavior
|
|
|
|
This is the default behavior on Apple touchpads.
|
|
Here, a left, right, middle button event is generated when one, two, or
|
|
three fingers are held down on the touchpad when a physical click is
|
|
generated. The location of the fingers does not matter and there are no
|
|
software-defined button areas.
|
|
|
|
The Xorg synaptics driver uses 30% of the touchpad dimensions as threshold,
|
|
libinput does not have this restriction. If two fingers are on the pad
|
|
while clicking, that is a two-finger click.
|
|
|
|
Clickfinger configuration can be enabled through the
|
|
libinput_device_config_click_set_method() call. If clickfingers are
|
|
enabled on a touchpad with top software buttons, the top area will keep
|
|
acting as softbuttons for use with the trackpoint. Clickfingers will be used
|
|
everywhere else on the touchpad.
|
|
|
|
@section special_clickpads Special Clickpads
|
|
|
|
The Lenovo *40 series laptops have a clickpad that provides two software button sections, one at
|
|
the top and one at the bottom. See @ref t440_support "Lenovo *40 series touchpad support"
|
|
for details on the top software button.
|
|
|
|
Some Clickpads, notably some Cypress ones, perform right button detection in
|
|
firmware and appear to userspace as if the touchpad had physical buttons.
|
|
While physically clickpads, these are not handled by the software and
|
|
treated like traditional touchpads.
|
|
|
|
*/
|