On Wed, 10 Mar 2010, rafi@xxxxxxxxxxxxxx wrote: > This reinstates the lost unpressing of BTN_TOUCH. To prevent undesireably > touch toggles this also deals with tip switch events. > > Added a trap to prevent going out of bounds for hidinputs with empty reports. > > Clear bits of unused buttons which result in misidentification. > > Signed-off-by: Rafi Rubin <rafi@xxxxxxxxxxxxxx> > --- > drivers/hid/hid-ntrig.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/drivers/hid/hid-ntrig.c b/drivers/hid/hid-ntrig.c > index 3234c72..edcc0c4 100644 > --- a/drivers/hid/hid-ntrig.c > +++ b/drivers/hid/hid-ntrig.c > @@ -140,6 +140,9 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, > nd->reading_mt = 1; > nd->first_contact_confidence = 0; > break; > + case HID_DG_TIPSWITCH: > + /* Prevent emission of touch until validated */ > + return 1; > case HID_DG_CONFIDENCE: > nd->confidence = value; > break; > @@ -259,6 +262,7 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, > BTN_TOOL_TRIPLETAP, 0); > input_report_key(input, > BTN_TOOL_QUADTAP, 0); > + input_report_key(input, BTN_TOUCH, 0); > } > break; > > @@ -308,13 +312,20 @@ static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id) > > > list_for_each_entry(hidinput, &hdev->inputs, list) { > + if (hidinput->report->maxfield < 1) > + continue; > + > input = hidinput->input; > switch (hidinput->report->field[0]->application) { > case HID_DG_PEN: > input->name = "N-Trig Pen"; > break; > case HID_DG_TOUCHSCREEN: > + /* These keys are redundant for fingers, clear them > + * to prevent incorrect identification */ > __clear_bit(BTN_TOOL_PEN, input->keybit); > + __clear_bit(BTN_TOOL_FINGER, input->keybit); > + __clear_bit(BTN_0, input->keybit); > /* > * A little something special to enable > * two and three finger taps. Thanks for the fix. I have altered changelog a little bit, and applied. -- Jiri Kosina SUSE Labs, Novell Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html