touchpads.rst 9.8 KB

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