Lenovo *40 series touchpad support
The Lenovo *40 series emulates trackstick buttons on the top part of the touchpads.
Overview
The Lenovo *40 series introduced a new type of touchpad. Previously, all laptops had a separate set of physical buttons for the trackstick. This series removed these buttons, relying on a software emulation of the top section of the touchpad. This is visually marked on the trackpad itself, and clicks can be triggered by pressing the touchpad down with a finger in the respective area:
Left, right and middle-button click with top software button areas
This page only covers the top software buttons, the bottom button behavior is covered in Clickpad software buttons.
Clickpads with a top button area are marked with the INPUT_PROP_TOPBUTTONPAD property.
Kernel support
The firmware on the first generation of touchpads providing top software buttons is buggy and announces wrong ranges. Kernel patches are required; these fixes are available in kernels 3.14.1, 3.15 and later but each touchpad needs a separate fix.
The October 2014 refresh of these laptops do not have this firmware bug anymore and should work without per-device patches, though this kernel commit is required.
For a complete list of supported touchpads check the kernel source (search for “topbuttonpad_pnp_ids”).
![digraph top_button_routing
{
rankdir="LR";
node [shape="box";]
trackstick [label="trackstick kernel device"];
touchpad [label="touchpad kernel device"];
subgraph cluster0 {
bgcolor = floralwhite
label = "libinput"
libinput_ts [label="trackstick libinput_device"
style=filled
fillcolor=white];
libinput_tp [label="touchpad libinput_device"
style=filled
fillcolor=white];
libinput_tp -> libinput_ts [constraint=false
color="red4"];
}
trackstick -> libinput_ts [arrowhead="none"]
touchpad -> libinput_tp [color="red4"]
events_tp [label="other touchpad events"];
events_topbutton [label="top software button events"];
libinput_tp -> events_tp [arrowhead="none"]
libinput_ts -> events_topbutton [color="red4"]
}](_images/graphviz-bdcc14ff899896d8e340536e3ef7f13f7afdf6d8.png)