Input: synaptics - report multi-taps only 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 <peter.hutterer@redhat.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
cec87e38e9
commit
e42b6646a8
1 changed files with 10 additions and 6 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue