Hi, On Wed, Sep 12, 2018 at 1:04 PM Hanno Zulla <abos@xxxxxxxx> wrote: > > Hi, > > here is the report descriptor for the 04F3:074A touchpad. > It supports multitouch when used in Windows, but 4.19-rc3 > still detects is as a single-touch pad. Please advise on > how I can help with fixing this. This is weird. The report descriptor doesn't expose a multitouch collection, which explains why the touchpad is not recognized as multitouch by the Linux driver. Could you dump the USB traces from a Windows VM where you forward the USB node of the touchpad? IMO, Windows has a special driver for it that turns the touchpad in a special mode, and we will need to rev-engineer this. Cheers, Benjamin > > Thanks. > > > 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) > 0x09, 0x02, // Usage (Mouse) > 0xA1, 0x01, // Collection (Application) > 0x85, 0x01, // Report ID (1) > 0x09, 0x01, // Usage (Pointer) > 0xA1, 0x00, // Collection (Physical) > 0x05, 0x09, // Usage Page (Button) > 0x19, 0x01, // Usage Minimum (0x01) > 0x29, 0x03, // Usage Maximum (0x03) > 0x15, 0x00, // Logical Minimum (0) > 0x25, 0x01, // Logical Maximum (1) > 0x75, 0x01, // Report Size (1) > 0x95, 0x03, // Report Count (3) > 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) > 0x95, 0x05, // Report Count (5) > 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) > 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) > 0x09, 0x30, // Usage (X) > 0x09, 0x31, // Usage (Y) > 0x15, 0x81, // Logical Minimum (-127) > 0x25, 0x7F, // Logical Maximum (127) > 0x75, 0x08, // Report Size (8) > 0x95, 0x02, // Report Count (2) > 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) > 0xC0, // End Collection > 0xC0, // End Collection > 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) > 0x09, 0x02, // Usage (Mouse) > 0xA1, 0x01, // Collection (Application) > 0x85, 0x02, // Report ID (2) > 0x09, 0x01, // Usage (Pointer) > 0xA1, 0x00, // Collection (Physical) > 0x05, 0x09, // Usage Page (Button) > 0x19, 0x01, // Usage Minimum (0x01) > 0x29, 0x03, // Usage Maximum (0x03) > 0x15, 0x00, // Logical Minimum (0) > 0x25, 0x01, // Logical Maximum (1) > 0x75, 0x01, // Report Size (1) > 0x95, 0x03, // Report Count (3) > 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) > 0x95, 0x05, // Report Count (5) > 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) > 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) > 0x09, 0x30, // Usage (X) > 0x09, 0x31, // Usage (Y) > 0x15, 0x81, // Logical Minimum (-127) > 0x25, 0x7F, // Logical Maximum (127) > 0x75, 0x08, // Report Size (8) > 0x95, 0x06, // Report Count (6) > 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) > 0xC0, // End Collection > 0xC0, // End Collection > > // 100 bytes