Re: Unusual Focaltech driver behavior

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

 



On Fri, Apr 17, 2015 at 10:56 AM, Dmitry Tunin <hanipouspilot@xxxxxxxxx> wrote:
>
>
> 17.04.2015 17:49, Dmitry Tunin пишет:
>> 17.04.2015 16:57, Benjamin Tissoires пишет:
>>> On Fri, Apr 17, 2015 at 9:39 AM, Dmitry Tunin <hanipouspilot@xxxxxxxxx> wrote:
>>>>> Hi Dmitry,
>>>>>
>>>>> On Fri, Apr 17, 2015 at 5:56 AM, Dmitry Tunin <hanipouspilot@xxxxxxxxx> wrote:
>>>>>>> I noticed that myself and got some complaints like this.
>>>>>>> https://github.com/hanipouspilot/ubuntu-fixes/issues/2
>>>>>>>
>>>>>>> General issue is that when one finger is on the touchpad, movement of a second finger is ignored, if the first finger does not move.
>>>>>>> Usually with other touchpads, when you have one finger on the touchpad and move the other, it is recognized as two-finger scrolling.
>>>>>>> The device itself sends relative packages as normal in that case, but linux driver ignores them, until first finger is moved.
>>>>>>>
>>>>>>> I guess, Windows driver behaves same way. I can't test it, since I do not have Windows installed on that laptop.
>>>>>>>
>>>>>>> As I understood, Windows driver ignores that one finger is on button area and recognizes movement of the other as one-finger movement.
>>>>>>>
>>>>>>> It is clear that we do not know the full protocol or parameters of all touchpad models to have that button area always correct.
>>>>>>> But it looks like button area is set when 3rd byte in abs package is 00. There is a good chance that it is common for all touchpad models.
>>>>>>>
>>>>>>> Do you have ideas how to fix it the easiest way?
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Dmitry
>>>>>>>
>>>>>>
>>>>>> I looked at it some more and noticed that if I put one finger on touchpad, then another, then move the second one, rel packets are ignored.
>>>>>> But if keeping both fingers on touchpad, I move the first one, rel packets work OK.
>>>>>> This is wrong. I can't get what's wrong with the code at the moment.
>>>>>
>>>>>
>>>>> It looks like your touchpad is in the mouse emulation mode, not the
>>>>> raw touch mode. What you get is fed by the touchpad FW ans there is
>>>>> nothing we can do in userspace to fix that.
>>>>> That being said, there has been a lot of work with the focaltech
>>>>> drivers in the previous kernel releases, and maybe trying a v4.0 will
>>>>> switch your touchpad in the raw mode.
>>>>> Once it is in raw mode, the software buttons, scrolling and gestures
>>>>> are all treated in userspace and you will get the expected behavior.
>>>>>
>>>>> Cheers,
>>>>> Benjamin
>>>>>
>>>>
>>>> No, the mouse is in proprietary mode. Multitouch is supported. In emulation mode it is not supported at all.
>>>> I am testing actually the driver from kernel 4.0. Everything works great except this strange problem, when some relative packets are ignored.
>>>> I mentioned above the test case. Now I added some debug and trying to figure it out. But no success so far.
>>>>
>>>>
>>>
>>> If you are in absolute (raw) mode, then can you share the evemu-record
>>> of the gesture you are trying to support?
>>> We should be able to see what is going on and be able to pinpoint if
>>> this is a kernel problem or a user space problem.
>>>
>>> Cheers,
>>> Benjamin
>>>
>>
>> Here is the record. I put one finger on the touchpad and moved the other from top to bottom. This gesture is ignored.
>> But if I move first finger or both, it is recognized as scrolling

OK, this evemu-record is clean in term of protocol handling.
It looks like the first finger is in the middle of the touchpad.
Besides that I do not see any problems (and this works fine on Fedora
with libinput).

It must be a user-space problem. Can you tell us which distribution
you are using and which driver is handling the touchpad (xorg-evdev,
xorg-synaptics, xorg-libinput, wayland, mir)?

Benjamin

>>
>> # EVEMU 1.2
>> # Input device name: "PS/2 FocalTech FocalTech Touchpad"
>> # Input device ID: bus 0x11 vendor 0x02 product 0x01 version 0000
>> # Supported events:
>> #   Event type 0 (EV_SYN)
>> #     Event code 0 (SYN_REPORT)
>> #     Event code 1 (SYN_CONFIG)
>> #     Event code 3 (SYN_MAX)
>> #   Event type 1 (EV_KEY)
>> #     Event code 272 (BTN_LEFT)
>> #     Event code 325 (BTN_TOOL_FINGER)
>> #     Event code 328 (BTN_TOOL_QUINTTAP)
>> #     Event code 330 (BTN_TOUCH)
>> #     Event code 333 (BTN_TOOL_DOUBLETAP)
>> #     Event code 334 (BTN_TOOL_TRIPLETAP)
>> #     Event code 335 (BTN_TOOL_QUADTAP)
>> #   Event type 3 (EV_ABS)
>> #     Event code 0 (ABS_X)
>> #       Value   1051
>> #       Min        0
>> #       Max     2944
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> #     Event code 1 (ABS_Y)
>> #       Value    920
>> #       Min        0
>> #       Max     1664
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> #     Event code 47 (ABS_MT_SLOT)
>> #       Value      0
>> #       Min        0
>> #       Max        4
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> #     Event code 53 (ABS_MT_POSITION_X)
>> #       Value      0
>> #       Min        0
>> #       Max     2944
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> #     Event code 54 (ABS_MT_POSITION_Y)
>> #       Value      0
>> #       Min        0
>> #       Max     1664
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> #     Event code 57 (ABS_MT_TRACKING_ID)
>> #       Value      0
>> #       Min        0
>> #       Max    65535
>> #       Fuzz       0
>> #       Flat       0
>> #       Resolution 0
>> # Properties:
>> #   Property  type 0 (INPUT_PROP_POINTER)
>> #   Property  type 2 (INPUT_PROP_BUTTONPAD)
>> N: PS/2 FocalTech FocalTech Touchpad
>> I: 0011 0002 0001 0000
>> P: 05 00 00 00 00 00 00 00
>> B: 00 0b 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 01 00 00 00 00 00
>> B: 01 20 e5 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 01 00 00 00 00 00 00 00 00
>> B: 02 00 00 00 00 00 00 00 00
>> B: 03 03 00 00 00 00 80 60 02
>> B: 04 00 00 00 00 00 00 00 00
>> B: 05 00 00 00 00 00 00 00 00
>> B: 11 00 00 00 00 00 00 00 00
>> B: 12 00 00 00 00 00 00 00 00
>> B: 15 00 00 00 00 00 00 00 00
>> B: 15 00 00 00 00 00 00 00 00
>> A: 00 0 2944 0 0 0
>> A: 01 0 1664 0 0 0
>> A: 2f 0 4 0 0 0
>> A: 35 0 2944 0 0 0
>> A: 36 0 1664 0 0 0
>> A: 39 0 65535 0 0 0
>> ################################
>> #      Waiting for events      #
>> ################################
>> E: 0.000000 0003 0039 0279    # EV_ABS / ABS_MT_TRACKING_ID   279
>> E: 0.000000 0003 0035 0750    # EV_ABS / ABS_MT_POSITION_X    750
>> E: 0.000000 0003 0036 0680    # EV_ABS / ABS_MT_POSITION_Y    680
>> E: 0.000000 0001 014a 0001    # EV_KEY / BTN_TOUCH            1
>> E: 0.000000 0001 0145 0001    # EV_KEY / BTN_TOOL_FINGER      1
>> E: 0.000000 0003 0000 0750    # EV_ABS / ABS_X                750
>> E: 0.000000 0003 0001 0680    # EV_ABS / ABS_Y                680
>> E: 0.000000 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 0.160846 0003 0036 0678    # EV_ABS / ABS_MT_POSITION_Y    678
>> E: 0.160846 0003 0001 0678    # EV_ABS / ABS_Y                678
>> E: 0.160846 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 0.853482 0003 002f 0001    # EV_ABS / ABS_MT_SLOT          1
>> E: 0.853482 0003 0039 0280    # EV_ABS / ABS_MT_TRACKING_ID   280
>> E: 0.853482 0003 0035 2238    # EV_ABS / ABS_MT_POSITION_X    2238
>> E: 0.853482 0003 0036 0046    # EV_ABS / ABS_MT_POSITION_Y    46
>> E: 0.853482 0001 0145 0000    # EV_KEY / BTN_TOOL_FINGER      0
>> E: 0.853482 0001 014d 0001    # EV_KEY / BTN_TOOL_DOUBLETAP   1
>> E: 0.853482 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.053646 0003 0035 2237    # EV_ABS / ABS_MT_POSITION_X    2237
>> E: 1.053646 0003 0036 0049    # EV_ABS / ABS_MT_POSITION_Y    49
>> E: 1.053646 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.069850 0003 0036 0053    # EV_ABS / ABS_MT_POSITION_Y    53
>> E: 1.069850 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.086012 0003 0035 2240    # EV_ABS / ABS_MT_POSITION_X    2240
>> E: 1.086012 0003 0036 0068    # EV_ABS / ABS_MT_POSITION_Y    68
>> E: 1.086012 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.102159 0003 0035 2242    # EV_ABS / ABS_MT_POSITION_X    2242
>> E: 1.102159 0003 0036 0092    # EV_ABS / ABS_MT_POSITION_Y    92
>> E: 1.102159 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.118366 0003 0036 0108    # EV_ABS / ABS_MT_POSITION_Y    108
>> E: 1.118366 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.134448 0003 0036 0135    # EV_ABS / ABS_MT_POSITION_Y    135
>> E: 1.134448 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.150600 0003 0035 2240    # EV_ABS / ABS_MT_POSITION_X    2240
>> E: 1.150600 0003 0036 0200    # EV_ABS / ABS_MT_POSITION_Y    200
>> E: 1.150600 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.166755 0003 0035 2236    # EV_ABS / ABS_MT_POSITION_X    2236
>> E: 1.166755 0003 0036 0236    # EV_ABS / ABS_MT_POSITION_Y    236
>> E: 1.166755 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.182997 0003 0035 2234    # EV_ABS / ABS_MT_POSITION_X    2234
>> E: 1.182997 0003 0036 0278    # EV_ABS / ABS_MT_POSITION_Y    278
>> E: 1.182997 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.203908 0003 0035 2230    # EV_ABS / ABS_MT_POSITION_X    2230
>> E: 1.203908 0003 0036 0326    # EV_ABS / ABS_MT_POSITION_Y    326
>> E: 1.203908 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.220070 0003 0035 2228    # EV_ABS / ABS_MT_POSITION_X    2228
>> E: 1.220070 0003 0036 0382    # EV_ABS / ABS_MT_POSITION_Y    382
>> E: 1.220070 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.236227 0003 0036 0410    # EV_ABS / ABS_MT_POSITION_Y    410
>> E: 1.236227 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.252415 0003 0036 0459    # EV_ABS / ABS_MT_POSITION_Y    459
>> E: 1.252415 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.268505 0003 0035 2226    # EV_ABS / ABS_MT_POSITION_X    2226
>> E: 1.268505 0003 0036 0584    # EV_ABS / ABS_MT_POSITION_Y    584
>> E: 1.268505 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.285702 0003 0035 2224    # EV_ABS / ABS_MT_POSITION_X    2224
>> E: 1.285702 0003 0036 0666    # EV_ABS / ABS_MT_POSITION_Y    666
>> E: 1.285702 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.304459 0003 0035 2222    # EV_ABS / ABS_MT_POSITION_X    2222
>> E: 1.304459 0003 0036 0738    # EV_ABS / ABS_MT_POSITION_Y    738
>> E: 1.304459 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.322557 0003 002f 0000    # EV_ABS / ABS_MT_SLOT          0
>> E: 1.322557 0003 0035 0751    # EV_ABS / ABS_MT_POSITION_X    751
>> E: 1.322557 0003 0036 0676    # EV_ABS / ABS_MT_POSITION_Y    676
>> E: 1.322557 0003 002f 0001    # EV_ABS / ABS_MT_SLOT          1
>> E: 1.322557 0003 0035 2220    # EV_ABS / ABS_MT_POSITION_X    2220
>> E: 1.322557 0003 0036 0804    # EV_ABS / ABS_MT_POSITION_Y    804
>> E: 1.322557 0003 0000 0751    # EV_ABS / ABS_X                751
>> E: 1.322557 0003 0001 0676    # EV_ABS / ABS_Y                676
>> E: 1.322557 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.339614 0003 0036 0835    # EV_ABS / ABS_MT_POSITION_Y    835
>> E: 1.339614 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.356413 0003 0035 2218    # EV_ABS / ABS_MT_POSITION_X    2218
>> E: 1.356413 0003 0036 0940    # EV_ABS / ABS_MT_POSITION_Y    940
>> E: 1.356413 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.374034 0003 002f 0000    # EV_ABS / ABS_MT_SLOT          0
>> E: 1.374034 0003 0036 0674    # EV_ABS / ABS_MT_POSITION_Y    674
>> E: 1.374034 0003 002f 0001    # EV_ABS / ABS_MT_SLOT          1
>> E: 1.374034 0003 0036 0979    # EV_ABS / ABS_MT_POSITION_Y    979
>> E: 1.374034 0003 0001 0674    # EV_ABS / ABS_Y                674
>> E: 1.374034 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.391422 0003 0035 2214    # EV_ABS / ABS_MT_POSITION_X    2214
>> E: 1.391422 0003 0036 1098    # EV_ABS / ABS_MT_POSITION_Y    1098
>> E: 1.391422 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.408860 0003 0035 2210    # EV_ABS / ABS_MT_POSITION_X    2210
>> E: 1.408860 0003 0036 1168    # EV_ABS / ABS_MT_POSITION_Y    1168
>> E: 1.408860 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.425074 0003 0035 2206    # EV_ABS / ABS_MT_POSITION_X    2206
>> E: 1.425074 0003 0036 1238    # EV_ABS / ABS_MT_POSITION_Y    1238
>> E: 1.425074 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.441161 0003 0035 2204    # EV_ABS / ABS_MT_POSITION_X    2204
>> E: 1.441161 0003 0036 1312    # EV_ABS / ABS_MT_POSITION_Y    1312
>> E: 1.441161 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.457252 0003 0035 2200    # EV_ABS / ABS_MT_POSITION_X    2200
>> E: 1.457252 0003 0036 1384    # EV_ABS / ABS_MT_POSITION_Y    1384
>> E: 1.457252 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.473426 0003 0035 2198    # EV_ABS / ABS_MT_POSITION_X    2198
>> E: 1.473426 0003 0036 1450    # EV_ABS / ABS_MT_POSITION_Y    1450
>> E: 1.473426 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.489499 0003 0036 1484    # EV_ABS / ABS_MT_POSITION_Y    1484
>> E: 1.489499 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.505633 0003 0036 1532    # EV_ABS / ABS_MT_POSITION_Y    1532
>> E: 1.505633 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.521753 0003 0036 1580    # EV_ABS / ABS_MT_POSITION_Y    1580
>> E: 1.521753 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 1.537900 0003 0039 -001    # EV_ABS / ABS_MT_TRACKING_ID   -1
>> E: 1.537900 0001 0145 0001    # EV_KEY / BTN_TOOL_FINGER      1
>> E: 1.537900 0001 014d 0000    # EV_KEY / BTN_TOOL_DOUBLETAP   0
>> E: 1.537900 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>> E: 2.342684 0003 002f 0000    # EV_ABS / ABS_MT_SLOT          0
>> E: 2.342684 0003 0039 -001    # EV_ABS / ABS_MT_TRACKING_ID   -1
>> E: 2.342684 0001 014a 0000    # EV_KEY / BTN_TOUCH            0
>> E: 2.342684 0001 0145 0000    # EV_KEY / BTN_TOOL_FINGER      0
>> E: 2.342684 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
>>
>
> In addition. I grab packages through serio_raw and see that in both cases packages are sent normally form the device.
> This must be something with state->finger[i].active or valid. But I added debug to the code and can't catch any problem there either.
--
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