-
Notifications
You must be signed in to change notification settings - Fork 34
IPTS Firmware
Maximilian Luz edited this page Oct 2, 2019
·
1 revision
The touchscreen contact count on the Surface Laptop (1) and Surface Laptop 2 is incorrectly declared as being reported 4 times as one byte value (report count of 4) in the HID descriptor (vendor_desc.bin
for MSHW0079
), whereas it should be one time (report count of 1) with one byte value and three padding bytes.
This causes Linux to read the contact count as zero, thus not producing any touch events, due to which it looks as if touch is not working.
The stylus is not affected.
To fix this, the hidrd-convert
tool can be used to convert the binary descriptor to XML (and back), where the following patch can be applied:
diff --git a/mshw0079_vendor_desc.xml b/mshw0079_vendor_desc.xml
index 2338a64..259a7a2 100644
--- a/mshw0079_vendor_desc.xml
+++ b/mshw0079_vendor_desc.xml
@@ -1103,9 +1103,14 @@
</COLLECTION>
<usage_page>digitizer<!-- Digitizer (0Dh) --></usage_page>
<usage>digitizer_contact_count<!-- Contact count (54h, dynamic value) --></usage>
- <report_count>4</report_count>
<report_size>8</report_size>
+ <report_count>1</report_count>
+ <input>
+ <variable/>
+ </input>
+ <report_count>3</report_count>
<input>
+ <constant/>
<variable/>
</input>
<usage>digitizer_scan_time<!-- Scan time (56h, dynamic value) --></usage>