Re: Missing release event for Synaptics touchscreen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2017-05-11 14:28, Benjamin Tissoires wrote:
> On Thu, May 11, 2017 at 1:47 PM, Martin Kepplinger
> <martin.kepplinger@xxxxxxxxxxxxx> wrote:
>>
>>
>> On 2017-05-11 13:28, Benjamin Tissoires wrote:
>>> On Thu, May 11, 2017 at 1:22 PM, Martin Kepplinger
>>> <martin.kepplinger@xxxxxxxxxxxxx> wrote:
>>>>
>>>>
>>>> On 2017-05-11 12:12, Arek Burdach wrote:
>>>>>
>>>>>
>>>>> On 11.05.2017 11:48, Martin Kepplinger wrote:
>>>>>>
>>>>>> On 2017-05-10 11:36, Arek Burdach wrote:
>>>>>>> Hi Andrew,
>>>>>>>
>>>>>>> On 10.05.2017 01:47, Andrew Duggan wrote:
>>>>>>>> HI Arek,
>>>>>>>>
>>>>>>>> On 05/09/2017 04:17 PM, Arek Burdach wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I've tried described by you solution:
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
>>>>>>>>> index 37084b645785..81f271554b6c 100644
>>>>>>>>> --- a/drivers/hid/hid-core.c
>>>>>>>>> +++ b/drivers/hid/hid-core.c
>>>>>>>>> @@ -2510,6 +2510,7 @@ static const struct hid_device_id
>>>>>>>>> hid_ignore_list[] = {
>>>>>>>> You need to add this to the hid_have_special_driver[] and not the
>>>>>>>> hid_ignore_list[].
>>>>>>> Nice score for me - two lines and one bug :-)
>>>>>>>
>>>>>>>> But, if you do success in binding hid-rmi to a touchscreen it won't
>>>>>>>> work. The firmware between touchpads and touchscreens are different
>>>>>>>> enough that the hid-rmi driver will be looking for data which does not
>>>>>>>> exist in touchscreen's HID report. These differences also mean that it
>>>>>>>> really isn't a good idea to try to support touchscreens with hid-rmi.
>>>>>>>> It would actually result in more transactions and be less efficient
>>>>>>>> then simply using hid-multitouch. That's why hid-core checks for the
>>>>>>>> HID_SCAN_FLAG_GD_POINTER in an attempt to make sure it's binding to a
>>>>>>>> touchpad and not a touchscreen.
>>>>>>> It was just like you predict. On rmi, after first tap on screen, hidraw
>>>>>>> produced infinite number of events and it is not usable anymore.
>>>>>>>
>>>>>>>
>>>>>>>>> On 09.05.2017 16:02, Benjamin Tissoires wrote:
>>>>>>>>>> On Tue, May 9, 2017 at 2:51 PM, Arek Burdach
>>>>>>>>>> <arek.burdach@xxxxxxxxx> wrote:
>>>>>>>>>>> On 09.05.2017 14:20, Benjamin Tissoires wrote:
>>>>>>>>>>>> On Tue, May 9, 2017 at 11:20 AM, Arek Burdach
>>>>>>>>>>>> <arek.burdach@xxxxxxxxx>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you for response.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 09.05.2017 10:35, Benjamin Tissoires wrote:
>>>>>>>>>>>>>> On Sat, May 6, 2017 at 9:28 PM, Arek Burdach
>>>>>>>>>>>>>> <arek.burdach@xxxxxxxxx>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A week ago I've reported a bug:
>>>>>>>>>>>>>>> https://bugzilla.kernel.org/show_bug.cgi?id=195625 Is there
>>>>>>>>>>>>>>> anybody
>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>> help me with it?
>>>>>>>>>>>>>> I can have a look at it.
>>>>>>>>>>>>>> Please attach the full outputs of hid-recorder and evemu-record
>>>>>>>>>>>>>> in the
>>>>>>>>>>>>>> bugs, or it'll be difficult for us to debug it.
>>>>>>>>>>>>> I've attached full logs for two situations. More details in the
>>>>>>>>>>>>> issue.
>>>>>>>>>>>> Thanks, looks like a firmware issue (I'll comment in the bug).
>>>>>>>>>>> Sorry for my noob questions, but do you suggest that it can't be
>>>>>>>>>>> fixed by
>>>>>>>>>>> changes in kernel modules and I need to report it to the
>>>>>>>>>>> manufacturer?
>>>>>>>>>> Yes. Though Andrew, in CC, works for Synaptics and might give us
>>>>>>>>>> some pointers.
>>>>>>>>>>
>>>>>>>>>>> If it so, do you have an idea why it works well on Windows? Do they
>>>>>>>>>>> have
>>>>>>>>>>> some strange hacks in their drivers?
>>>>>>>>>> I have no ideas how well it works under Windows, and I have no ideas
>>>>>>>>>> if there are some strange hacks in the Windows nor in the Syanptics
>>>>>>>>>> driver (I would assume so).
>>>>>>>>>>
>>>>>>>> We don't provide any drivers for touchscreens on Windows. So I don't
>>>>>>>> know how Microsoft is handling a situation like this.
>>>>>>> Do you know what should be changed in firmware to make hid-touchscreen
>>>>>>> driver works correctly? Or maybe you know someone who is responsible for
>>>>>>> firmware for this device and whom I can call to gather this information?
>>>>>>>
>>>>>> In case there *really* is broken firmware out there, we can specifically
>>>>>> identify via struct input_id's version number for example,
>>>>> I thought that Benjamin identified this as a broken firmware. I've
>>>>> attached hidraw log in the issue and there is no release event, so it
>>>>> looks like a firmware bug. How do you suggest to handle this situation
>>>>> in kernel? We can identify the device but what to do next if we have no
>>>>> information if user released finger or not?
>>>>>
>>>>>> I want to
>>>>>> point out that I would accept adding a workaround in tslib's input-raw
>>>>>> module ( http://tslib.org ) if it won't be done in the kernel.
>>>>>>
>>>>>> So, in case you can and want to use tslib as a workaround here, feel
>>>>>> free to have a look and send the patches that make input-raw.c work for
>>>>>> you over there.
>>>>> I want to be as handy as I can but I'm not sure how tslib could help in
>>>>> this situation. If we have too much data, it can filter out unnecessary
>>>>> events but I don't think that it can help when there is lack of events
>>>>> or I'm missing something?
>>>>
>>>> Might as well be, I might not have thought it all through, but in
>>>> tslib's module_raw input you can can get totally creative: Why not start
>>>> *every* sync frame with BTN_TOUCH 1 and end it with BTN_TOUCH 0? You
>>>> *are* able to add stuff. Filters don't usually do it though.
>>>
>>> Ouch, please don't. You'll send an endless click/release sequence
>>> which will break drag and drop, double click and so on.
>>>
>>
>> ah you're right, that's nonsense.
>>
>>> Also, this won't solve the issue because the multitouch slot will not
>>> be released.
>>>
>>> The only solution (which i believe the Windows driver does, but I
>>> believed only for Windows 7 compatible touchscreen), is to arm a timer
>>> for each slot, and when you don't receive an update after let's say 5
>>> seconds, you release the slot.
>>>
>>> It's awful and I always have been against adding such pain in the
>>> hid-multitouch driver.
>>
>> yes. still breaks "move after hold>5s" but would probably be the only
>> way to make this somewhat work.
>
> No, you won't have "move after hold>5s" broken. Because at the HID
> level, the device is supposed to send an update on every touch when
> reporting a touch (for Windows 8 devices). So if there are tiny
> movements filtered at the input level in the kernel, we will get those
> and I suspect the timeout will only appear when the finger actual
> leaves the surface.

ok. sounds a little more like a solution in the kernel would be
justified. Isn't it? It still feels dangerously ugly.

Mainly I wanted to point out that if you somehow have to stay with "no"
for such broken devices, tslib would be a garbage can for userspace
workarounds. (in this case, most probably a new device-specific hidraw
based module).

                            martin

________________________________

Ginzinger electronic systems GmbH
Gewerbegebiet Pirath 16
4952 Weng im Innkreis
www.ginzinger.com

Firmenbuchnummer: FN 364958d
Firmenbuchgericht: Ried im Innkreis
UID-Nr.: ATU66521089

--
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



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux