• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1:orphan:
2
3.. _touchpads:
4
5==============================================================================
6Touchpads
7==============================================================================
8
9This page provides an outline of touchpad devices. Touchpads aren't simply
10categorised into a single type, instead they have a set of properties, a
11combination of number of physical buttons, multitouch support abilities and
12other properties.
13
14.. _touchpads_buttons:
15
16------------------------------------------------------------------------------
17Number of buttons
18------------------------------------------------------------------------------
19
20.. _touchapds_buttons_phys:
21
22..............................................................................
23Physically separate buttons
24..............................................................................
25
26Touchpads with physical buttons usually provide two buttons, left and right.
27A few touchpads with three buttons exist, and Apple used to have touchpads
28with a single physical buttons until ca 2008. Touchpads with only two
29buttons require the software stack to emulate a middle button. libinput does
30this when both buttons are pressed simultaneously.
31
32Note that many Lenovo laptops provide a pointing stick above the touchpad.
33This pointing stick has a set of physical buttons just above the touchpad.
34While many users use those as substitute touchpad buttons, they logically
35belong to the pointing stick. The \*40 and \*50 series are an exception here,
36the former had no physical buttons on the touchpad and required the top
37section of the pad to emulate pointing stick buttons, the \*50 series has
38physical buttons but they are wired to the touchpads. The kernel re-routes
39those buttons through the trackstick device. See :ref:`t440_support` for more
40information.
41
42.. _touchpads_buttons_clickpads:
43
44..............................................................................
45Clickpads
46..............................................................................
47
48Clickpads are the most common type of touchpads these days. A Clickpad has
49no separate physical buttons, instead the touchpad itself is clickable as a
50whole, i.e. a user presses down on the touch area and triggers a physical
51click. Clickpads thus only provide a single button, everything else needs to
52be software-emulated. See :ref:`clickpad_softbuttons` for more information.
53
54Clickpads are labelled by the kernel with the **INPUT_PROP_BUTTONPAD** input
55property.
56
57.. _touchpads_buttons_forcepads:
58
59..............................................................................
60Forcepads
61..............................................................................
62
63Forcepads are Clickpads without a physical button underneath the hardware.
64They provide pressure and may have a vibration element that is
65software-controlled. This element can simulate the feel of a physical
66click or be co-opted for other tasks.
67
68
69.. _touchpads_touch:
70
71------------------------------------------------------------------------------
72Touch capabilities
73------------------------------------------------------------------------------
74
75Virtually all touchpads available now can **detect** multiple fingers on
76the touchpad, i.e. provide information on how many fingers are on the
77touchpad. The touch capabilities described here specify how many fingers a
78device can **track**, i.e. provide reliable positional information for.
79In the kernel each finger is tracked in a so-called "slot", the number of
80slots thus equals the number of simultaneous touches a device can track.
81
82.. _touchapds_touch_st:
83
84..............................................................................
85Single-touch touchpads
86..............................................................................
87
88Single-finger touchpads can track a single touchpoint. Most single-touch
89touchpads can also detect three fingers on the touchpad, but no positional
90information is provided for those. In libinput, these touches are termed
91"fake touches". The kernel sends **BTN_TOOL_DOUBLETAP**,
92**BTN_TOOL_TRIPLETAP**, **BTN_TOOL_QUADTAP** and **BTN_TOOL_QUINTTAP**
93events when multiple fingers are detected.
94
95.. _touchpads_touch_mt:
96
97..............................................................................
98Pure multi-touch touchpads
99..............................................................................
100
101Pure multi-touch touchpads are those that can track, i.e. identify the
102location of all fingers on the touchpad. Apple's touchpads support 16
103touches, others support 5 touches like the Synaptics touchpads when using
104SMBus.
105
106These touchpads usually also provide extra information. Apple touchpads
107provide an ellipse and the orientation of the ellipse for each touch point.
108Other touchpads provide a pressure value for each touch point (see
109:ref:`touchpads_pressure_handling`).
110
111Note that the kernel sends **BTN_TOOL_DOUBLETAP**,
112**BTN_TOOL_TRIPLETAP**, **BTN_TOOL_QUADTAP** and **BTN_TOOL_QUINTTAP**
113events for all touches for backwards compatibility. libinput ignores these
114events if the touchpad can track touches correctly.
115
116.. _touchpads_touch_partial_mt:
117
118..............................................................................
119Partial multi-touch touchpads
120..............................................................................
121
122The vast majority of touchpads fall into this category, the half-way
123point between single-touch and pure multi-touch. These devices can track N
124fingers, but detect more than N. For example, when using the serial
125protocol, Synaptics touchpads can track two fingers but may detect up to
126five.
127
128The number of slots may limit which features are available in libinput.
129Any device with two slots can support two-finger scrolling, but
130:ref:`thumb-detection` or :ref:`palm_detection` may be limited if only two
131slots are available.
132
133.. _touchpads_touch_semi_mt:
134
135..............................................................................
136Semi-mt touchpads
137..............................................................................
138
139A sub-class of partial multi-touch touchpads. These touchpads can
140technically detect two fingers but the location of both is limited to the
141bounding box, i.e. the first touch is always the top-left one and the second
142touch is the bottom-right one. Coordinates jump around as fingers move past
143each other.
144
145Many semi-mt touchpads also have a lower resolution for the second touch, or
146both touches. This may limit some features such as :ref:`gestures` or
147:ref:`scrolling`.
148
149Semi-mt are labelled by the kernel with the **INPUT_PROP_SEMI_MT** input
150property.
151
152.. _touchpads_mis:
153
154------------------------------------------------------------------------------
155Other touchpad properties
156------------------------------------------------------------------------------
157
158.. _touchpads_external:
159
160..............................................................................
161External touchpads
162..............................................................................
163
164External touchpads are USB or Bluetooth touchpads not in a laptop chassis,
165e.g. Apple Magic Trackpad or the Logitech T650. These are usually
166:ref:`touchpads_buttons_clickpads` the biggest difference is that they can be
167removed or added at runtime.
168
169One interaction method that is only possible on external touchpads is a
170thumb resting on the very edge/immediately next to the touchpad. On the far
171edge, touchpads don't always detect the finger location so clicking with a
172thumb barely touching the edge makes it hard or impossible to figure out
173which software button area the finger is on.
174
175These touchpads also don't need :ref:`palm_detection` - since they're not
176located underneath the keyboard, accidental palm touches are a non-issue.
177
178.. _touchpads_pressure_handling:
179
180..............................................................................
181Touchpads pressure handling
182..............................................................................
183
184Pressure is usually directly related to contact area. Human fingers flatten
185out as the pressure on the pad increases, resulting in a bigger contact area
186and the firmware then calculates that back into a pressure reading.
187
188libinput uses pressure to detect accidental palm contact and thumbs, though
189pressure data is often device-specific and unreliable.
190
191.. _touchpads_circular:
192
193..............................................................................
194Circular touchpads
195..............................................................................
196
197Only listed for completeness, circular touchpads have not been used in
198laptops for a number of years. These touchpad shaped in an ellipse or
199straight.
200
201.. _touchpads_tablets:
202
203..............................................................................
204Graphics tablets
205..............................................................................
206
207Touch-capable graphics tablets are effectively external touchpads, with two
208differentiators: they are larger than normal touchpads and they have no
209regular touchpad buttons. They either work like a
210:ref:`touchpads_buttons_forcepads` Forcepad, or rely on interaction methods that
211don't require buttons (like :ref:`tapping`). Since the physical device is
212shared with the pen input, some touch arbitration is required to avoid touch
213input interfering when the pen is in use.
214
215.. _touchpads_edge_zone:
216
217..............................................................................
218Dedicated edge scroll area
219..............................................................................
220
221Before :ref:`twofinger_scrolling` became the default scroll method, some
222touchpads provided a marking on the touch area that designates the
223edge to be used for scrolling. A finger movement in that edge zone should
224trigger vertical motions. Some touchpads had markers for a horizontal
225scroll area too at the bottom of the touchpad.
226