t440-support.rst 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. .. _t440_support:
  2. ==============================================================================
  3. Lenovo \*40 series touchpad support
  4. ==============================================================================
  5. The Lenovo \*40 series emulates trackstick buttons on the top part of the
  6. touchpads.
  7. .. _t440_support_overview:
  8. ------------------------------------------------------------------------------
  9. Overview
  10. ------------------------------------------------------------------------------
  11. The Lenovo \*40 series introduced a new type of touchpad. Previously, all
  12. laptops had a separate set of physical buttons for the
  13. `trackstick <http://en.wikipedia.org/wiki/Pointing_stick>`_. This
  14. series removed these buttons, relying on a software emulation of the top
  15. section of the touchpad. This is visually marked on the trackpad itself,
  16. and clicks can be triggered by pressing the touchpad down with a finger in
  17. the respective area:
  18. .. figure:: top-software-buttons.svg
  19. :align: center
  20. Left, right and middle-button click with top software button areas
  21. This page only covers the top software buttons, the bottom button behavior
  22. is covered in :ref:`Clickpad software buttons <clickpad_softbuttons>`.
  23. Clickpads with a top button area are marked with the
  24. `INPUT_PROP_TOPBUTTONPAD <https://www.kernel.org/doc/Documentation/input/event-codes.txt>`_
  25. property.
  26. .. _t440_support_btn_size:
  27. ------------------------------------------------------------------------------
  28. Size of the buttons
  29. ------------------------------------------------------------------------------
  30. The size of the buttons matches the visual markings on this touchpad.
  31. The width of the left and right buttons is approximately 42% of the
  32. touchpad's width, the middle button is centered and assigned 16% of the
  33. touchpad width.
  34. The line of the buttons is 5mm from the top edge of the touchpad,
  35. measurements of button presses showed that the size of the buttons needs to
  36. be approximately 10mm high to work reliable (especially when using the
  37. thumb to press the button).
  38. .. _t440_support_btn_behavior:
  39. ------------------------------------------------------------------------------
  40. Button behavior
  41. ------------------------------------------------------------------------------
  42. Movement in the top button area does not generate pointer movement. These
  43. buttons are not replacement buttons for the bottom button area but have
  44. their own behavior. Semantically attached to the trackstick device, libinput
  45. re-routes events from these buttons to appear through the trackstick device.
  46. .. graphviz::
  47. digraph top_button_routing
  48. {
  49. rankdir="LR";
  50. node [shape="box";]
  51. trackstick [label="trackstick kernel device"];
  52. touchpad [label="touchpad kernel device"];
  53. subgraph cluster0 {
  54. bgcolor = floralwhite
  55. label = "libinput"
  56. libinput_ts [label="trackstick libinput_device"
  57. style=filled
  58. fillcolor=white];
  59. libinput_tp [label="touchpad libinput_device"
  60. style=filled
  61. fillcolor=white];
  62. libinput_tp -> libinput_ts [constraint=false
  63. color="red4"];
  64. }
  65. trackstick -> libinput_ts [arrowhead="none"]
  66. touchpad -> libinput_tp [color="red4"]
  67. events_tp [label="other touchpad events"];
  68. events_topbutton [label="top software button events"];
  69. libinput_tp -> events_tp [arrowhead="none"]
  70. libinput_ts -> events_topbutton [color="red4"]
  71. }
  72. The top button areas work even if the touchpad is disabled but will be
  73. disabled when the trackstick device is disabled. If the finger starts inside
  74. the top area and moves outside the button area the finger is treated as dead
  75. and must be lifted to generate future buttons. Likewise, movement into the
  76. top button area does not trigger button events, a click has to start inside
  77. this area to take effect.
  78. .. _t440_support_identification:
  79. ------------------------------------------------------------------------------
  80. Kernel support
  81. ------------------------------------------------------------------------------
  82. The firmware on the first generation of touchpads providing top software
  83. buttons is buggy and announces wrong ranges.
  84. `Kernel patches <https://lkml.org/lkml/2014/3/7/722>`_ are required;
  85. these fixes are available in kernels 3.14.1, 3.15 and later but each
  86. touchpad needs a separate fix.
  87. The October 2014 refresh of these laptops do not have this firmware bug
  88. anymore and should work without per-device patches, though
  89. `this kernel commit <http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=02e07492cdfae9c86e3bd21c0beec88dbcc1e9e8>`_
  90. is required.
  91. For a complete list of supported touchpads check
  92. `the kernel source <http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/input/mouse/synaptics.c>`_
  93. (search for "topbuttonpad_pnp_ids").