On Oct 05 2016 or thereabouts, Roderick Colenbrander wrote: > On Wed, Oct 5, 2016 at 8:29 AM, Simon Wood <simon@xxxxxxxxxxxxx> wrote: > > On Wed, October 5, 2016 2:35 am, Benjamin Tissoires wrote: > >> On Oct 04 2016 or thereabouts, Roderick Colenbrander wrote: > > > >>> + /* > >>> + * The first 7 bits of the first byte is a counter and bit 8 is > >>> + * a touch indicator that is 0 when pressed and 1 when not > >>> + * pressed. > >>> + * The next 3 bytes are two 12 bit touch coordinates, X and Y. > >>> + * The data for the second touch is in the same format and > >>> + * immediately follows the data for the first. > >>> + */ > >>> + for (n = 0; n < 2; n++) { > >>> + u16 x, y; > >>> + bool active; > >>> + > >>> + x = rd[offset+1] | ((rd[offset+2] & 0xF) << 8); > >>> + y = ((rd[offset+2] & 0xF0) >> 4) | (rd[offset+3] << 4); > >>> + > >>> + active = !(rd[offset] >> 7); > >>> + input_mt_slot(input_dev, n); > >>> > >> > >> Just to be sure, the device reports 2 touches only, and the > >> "num_touch_data" chunks are just the history of these 2 touches, the > >> last chunk being the last known touches? > > > > FYI - Community knowledge/understanding... > > http://www.psdevwiki.com/ps4/DS4-BT#HID_INPUT_reports > > > > Simon > > > > Hi Ben and Simon, > > Correct, the DS4 sends a touch history. The last element is the > latest. An input report can contain multiple touch samples, because > the device internally samples at a rate which is higher than at which > it generates HID reports. On USB you can easily see multiple touch > events and it is even easier on Bluetooth (especially if it is set to > a low frequency). The extra history is important for gestures. OK, so if it's important, you need to actually send it by adding input_mt_sync_frame() and input_sync() calls. Otherwise, the values will just get mangled by the kernel in evdev and everything happens as if you just sent the last pair in the history. The first 4 patches are IMO mergeable, but this one will need a little bit more polish to actually forward the events. Cheers, Benjamin > > Thanks, > Roderick -- 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