Input: synaptics - Only report double/triple tap if supported by the device.
Subsystems (2)
PATCH 1/1 Input: synaptics - Only report double/triple tap if supported by the device.
According to Section 2.4.4 of the Synaptics TouchPad Interfacing Guide, bit 2 specifies if multi-finger detection is provided by the touchpad. Thus, only set BTN_TOOL_DOUBLETAP and BTN_TOOL_TRIPLETAP if the device actually supports it.
Signed-off-by Peter Hutterer <[email protected]>
--- drivers/input/mouse/synaptics.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
drivers/input/mouse/synaptics.c +10 -6
@@ -445,12 +445,14 @@ static void synaptics_process_packet(struct psmouse *psmouse)input_report_abs (dev,ABS_TOOL_WIDTH , finger_width);input_report_key (dev,BTN_TOOL_FINGER , num_fingers ==1 ); -input_report_key (dev,BTN_TOOL_DOUBLETAP , num_fingers ==2 ); -input_report_key (dev,BTN_TOOL_TRIPLETAP , num_fingers ==3 ); -input_report_key (dev,BTN_LEFT , hw.left);input_report_key (dev,BTN_RIGHT , hw.right); +if (SYN_CAP_MULTIFINGER (priv->capabilities)) { +input_report_key (dev,BTN_TOOL_DOUBLETAP , num_fingers ==2 ); +input_report_key (dev,BTN_TOOL_TRIPLETAP , num_fingers ==3 ); + } +if (SYN_CAP_MIDDLE_BUTTON (priv->capabilities))input_report_key (dev,BTN_MIDDLE , hw.middle);
@@ -543,12 +545,14 @@ static void set_input_params(struct input_dev *dev, struct synaptics_data *priv)set_bit (EV_KEY , dev->evbit);set_bit (BTN_TOUCH , dev->keybit);set_bit (BTN_TOOL_FINGER , dev->keybit); -set_bit (BTN_TOOL_DOUBLETAP , dev->keybit); -set_bit (BTN_TOOL_TRIPLETAP , dev->keybit); -set_bit (BTN_LEFT , dev->keybit);set_bit (BTN_RIGHT , dev->keybit); +if (SYN_CAP_MULTIFINGER (priv->capabilities)) { +set_bit (BTN_TOOL_DOUBLETAP , dev->keybit); +set_bit (BTN_TOOL_TRIPLETAP , dev->keybit); + } +if (SYN_CAP_MIDDLE_BUTTON (priv->capabilities))set_bit (BTN_MIDDLE , dev->keybit);
Signature · 1 line
1.6.0.3