Input: bcm5974 - add quad-finger tapping
Henrik Rydberg [Mon, 27 Apr 2009 18:52:43 +0000 (11:52 -0700)]
The integrated button on the new unibody Macbooks presents a need to
report explicit four-finger actions. Evidently, the finger pressing
the button is also touching the trackpad, so in order to fully support
three-finger actions, the driver must be able to report four-finger
actions. This patch adds a new button, BTN_TOOL_QUADTAP, which
achieves this.

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

drivers/input/mouse/bcm5974.c
include/linux/input.h

index bda8733..2ddf05e 100644 (file)
@@ -258,6 +258,7 @@ static void setup_events_to_report(struct input_dev *input_dev,
        __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
        __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
        __set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit);
+       __set_bit(BTN_TOOL_QUADTAP, input_dev->keybit);
        __set_bit(BTN_LEFT, input_dev->keybit);
 }
 
@@ -329,7 +330,8 @@ static int report_tp_state(struct bcm5974 *dev, int size)
        input_report_key(input, BTN_TOUCH, dev->fingers > 0);
        input_report_key(input, BTN_TOOL_FINGER, dev->fingers == 1);
        input_report_key(input, BTN_TOOL_DOUBLETAP, dev->fingers == 2);
-       input_report_key(input, BTN_TOOL_TRIPLETAP, dev->fingers > 2);
+       input_report_key(input, BTN_TOOL_TRIPLETAP, dev->fingers == 3);
+       input_report_key(input, BTN_TOOL_QUADTAP, dev->fingers > 3);
 
        input_report_abs(input, ABS_PRESSURE, abs_p);
        input_report_abs(input, ABS_TOOL_WIDTH, abs_w);
index 6b28048..32cb825 100644 (file)
@@ -445,6 +445,7 @@ struct input_absinfo {
 #define BTN_STYLUS2            0x14c
 #define BTN_TOOL_DOUBLETAP     0x14d
 #define BTN_TOOL_TRIPLETAP     0x14e
+#define BTN_TOOL_QUADTAP       0x14f   /* Four fingers on trackpad */
 
 #define BTN_WHEEL              0x150
 #define BTN_GEAR_DOWN          0x150