On Tue, Mar 24, 2020 at 10:38:10PM +0300, Dmitry Mastykin wrote: > Hi Dmitry, > we had discussed earlier this point with Hans: > > Hans: > >>> 3) In goodix_ts_report_key you do: > >>> > >>> for (i = 0; i < GOODIX_MAX_KEYS; ++i) > >>> if (key_value & (1 << i)) > >>> input_report_key(ts->input_dev, > ts->keymap[i], 1 > >>> > >>> But if the user then jumps his finger from say touch_key 0 to touch_key > 1 > >>> without us receiving a "packet" in between with GOODIX_HAVE_KEY set, > >>> then we never release touch_key 0. So instead this really should be: > >>> > >>> for (i = 0; i < GOODIX_MAX_KEYS; ++i) > >>> input_report_key(ts->input_dev, ts->keymap[i], > >>> key_value & (1 << i)); > >>> > > Me: > >> It seems, that this problem never happens. When user moves finger from > >> button to button, we stably receive 2-3 packets without > >> GOODIX_HAVE_KEY in between, that release all previous touches. From > >> other hand, your change will not work when the same keycode is > >> assigned to several buttons - it will be immediately released. > > Hans: > > > > Hmm, interesting point I did not think of that. That would be a bit > > weird thing to do, but it is not impossible... > > > > I'm afraid Dmitry (the input maintainer) will likely make the same > > remark as I do though (when you submit this upstream). But we'll see. > > > > Keeping this as is is fine with me. > > So I'm impressed about your mutual understanding) And waiting for your > decision. OK, I'll apply as is then. Thank you. -- Dmitry