HID: multitouch: fix Win 8 protocol
The Win 8 protocol specify the fact that each valid touch must be reported within a frame until it is released. We can therefore use the always_valid quirk and dismiss reports when we see duplicate contacts ID. We recognize Win8 certified devices from their vendor feature 0xff0000c5 where Microsoft put a signed blob in the report to check if the device passed the certification. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Reviewed-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
Родитель
9b3bb9b8b6
Коммит
1b42fc4a28
|
@ -294,6 +294,18 @@ static void mt_feature_mapping(struct hid_device *hdev,
|
|||
td->maxcontacts = td->mtclass.maxcontacts;
|
||||
|
||||
break;
|
||||
case 0xff0000c5:
|
||||
if (field->report_count == 256 && field->report_size == 8) {
|
||||
/* Win 8 devices need special quirks */
|
||||
__s32 *quirks = &td->mtclass.quirks;
|
||||
*quirks |= MT_QUIRK_ALWAYS_VALID;
|
||||
*quirks |= MT_QUIRK_IGNORE_DUPLICATES;
|
||||
*quirks |= MT_QUIRK_HOVERING;
|
||||
*quirks &= ~MT_QUIRK_NOT_SEEN_MEANS_UP;
|
||||
*quirks &= ~MT_QUIRK_VALID_IS_INRANGE;
|
||||
*quirks &= ~MT_QUIRK_VALID_IS_CONFIDENCE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче