You are not logged in.

#1 2012-09-07 03:22:27

Whef
Member
Registered: 2012-08-26
Posts: 33

Suggested improvement for synaptics touchpad drivers

I'd post this somewhere specific to synaptics as a suggestion or feedback, but I don't know where to find that! So, I'll just post it here and see what you guys think (and maybe you'll know where I go to provide feedback to the devs).

As I'm configuring the synpatics driver, my goal is to get it as specific as possible for my usage (using realtime monitoring and changing of variables with synclient). This way it's less error prone (e.g., cursor skipping around while typing) and overall performs better.

With that in mind, my suggestion is to have an option for configuring independent hysteresis pressure values for tapping. Currently, the driver determins if you're tapping with the following process (except for the position is x and y, so they have to use the distance formula):

  1. User presses touchpad.

  2. Touchpad pressure goes above the FingerHigh at time t_0 and position x_0.

  3. User starts to release the touchpad.

  4. Touchpad pressure drops below FingerLow at time t_1 and position x_1.

  5. If t_1 - t_0 <= MaxTapTime and x_1 - x_0 <= MaxTapMove, then it was a tap.

The problem with this is that FingerHigh and FingerLow are also applicable for regular cursor movement, without tapping. For me, I use less pressure when simply moving the cursor around, and I use more for tapping. I would imagine it's similar for everybody. To prove the point, here's some data from synclient of me tapping (the z column is pressure):

[whef@arch ~]$ synclient -m 1
    time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
   0.000  1441  501   0 0  0  0 0 0 0 0  00000000
   1.252  1996 1293  29 1  3  0 0 0 0 0  00000000
   1.261  1996 1293  31 1  3  0 0 0 0 0  00000000
   1.272  1996 1293  15 1  2  0 0 0 0 0  00000000
   1.283  1985 1296   3 1  0  0 0 0 0 0  00000000
   1.296  1985 1296   0 0  0  0 0 0 0 0  00000000
   2.216  2024 1366  24 1  2  0 0 0 0 0  00000000
   2.226  2024 1366  22 1  2  0 0 0 0 0  00000000
   2.235  2024 1366  12 1  2  0 0 0 0 0  00000000
   2.245  2024 1366   4 1  2  0 0 0 0 0  00000000
   2.254  2024 1366   0 0  2  0 0 0 0 0  00000000
   3.231  2006 1331  29 1  2  0 0 0 0 0  00000000
   3.241  2006 1331  29 1  3  0 0 0 0 0  00000000
   3.251  2001 1325  29 1  3  0 0 0 0 0  00000000
   3.262  2001 1325  27 1  3  0 0 0 0 0  00000000
   3.274  2001 1318  11 1  3  0 0 0 0 0  00000000
   3.287  2001 1318   0 0  3  0 0 0 0 0  00000000
   3.395  1934 1295  32 1  3  0 0 0 0 0  00000000
   3.405  1928 1294  32 1  3  0 0 0 0 0  00000000
   3.415  1928 1294  29 1  3  0 0 0 0 0  00000000
    time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
   3.425  1935 1300   3 1  3  0 0 0 0 0  00000000
   3.439  1935 1300   0 0  3  0 0 0 0 0  00000000
   5.284  2053 1426  27 1  2  0 0 0 0 0  00000000
   5.295  2053 1426  28 1  2  0 0 0 0 0  00000000
   5.306  2053 1426  25 1  2  0 0 0 0 0  00000000
   5.316  2053 1426  20 1  2  0 0 0 0 0  00000000
   5.328  2047 1438   3 1  2  0 0 0 0 0  00000000
   5.341  2047 1438   0 0  2  0 0 0 0 0  00000000
^C
[whef@arch ~]$ 

And here's some data from normally moving the cursor:

[whef@arch ~]$ synclient -m 1
    time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
   0.000  2294  613   0 0  0  0 0 0 0 0  00000000
   1.052  1866 1362  24 1  2  0 0 0 0 0  00000000
   1.061  1876 1355  23 1  2  0 0 0 0 0  00000000
   1.071  1885 1351  24 1  2  0 0 0 0 0  00000000
   1.081  1896 1346  23 1  3  0 0 0 0 0  00000000
   1.091  1921 1332  23 1  3  0 0 0 0 0  00000000
   1.104  1953 1314  24 1  3  0 0 0 0 0  00000000
   1.116  1984 1293  24 1  2  0 0 0 0 0  00000000
   1.129  2013 1276  24 1  2  0 0 0 0 0  00000000
   1.142  2048 1261  24 1  3  0 0 0 0 0  00000000
   1.154  2066 1255  24 1  3  0 0 0 0 0  00000000
   1.168  2102 1243  24 1  2  0 0 0 0 0  00000000
   1.179  2135 1231  23 1  2  0 0 0 0 0  00000000
   1.192  2168 1217  24 1  3  0 0 0 0 0  00000000
   1.204  2209 1205  25 1  3  0 0 0 0 0  00000000
   1.217  2255 1185  22 1  3  0 0 0 0 0  00000000
   1.230  2300 1164  23 1  3  0 0 0 0 0  00000000
   1.242  2351 1148  24 1  3  0 0 0 0 0  00000000
   1.255  2409 1128  21 1  2  0 0 0 0 0  00000000
   1.269  2457 1114  22 1  2  0 0 0 0 0  00000000
    time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
   1.280  2483 1110  23 1  3  0 0 0 0 0  00000000
   1.293  2533 1106  21 1  3  0 0 0 0 0  00000000
   1.307  2582 1103  19 1  2  0 0 0 0 0  00000000
   1.318  2621 1104  23 1  2  0 0 0 0 0  00000000
   1.331  2652 1105  24 1  2  0 0 0 0 0  00000000
   1.345  2680 1120  26 1  3  0 0 0 0 0  00000000
   1.357  2710 1136  23 1  3  0 0 0 0 0  00000000
   1.369  2744 1158  23 1  2  0 0 0 0 0  00000000
   1.383  2776 1182  22 1  2  0 0 0 0 0  00000000
   1.395  2806 1211  23 1  3  0 0 0 0 0  00000000
   1.407  2830 1251  21 1  2  0 0 0 0 0  00000000
   1.420  2860 1292  21 1  3  0 0 0 0 0  00000000
   1.433  2875 1314  20 1  3  0 0 0 0 0  00000000
   1.445  2903 1357  21 1  3  0 0 0 0 0  00000000
   1.458  2926 1406  19 1  2  0 0 0 0 0  00000000
   1.471  2946 1451  17 1  2  0 0 0 0 0  00000000
   1.484  2960 1492  15 1  2  0 0 0 0 0  00000000
   1.496  2966 1534   7 1  2  0 0 0 0 0  00000000
   1.509  2959 1586   1 1  2  0 0 0 0 0  00000000
   1.523  2959 1586   0 0  2  0 0 0 0 0  00000000
^C
[whef@arch ~]$ 

As you can see, tapping uses about 20-30, while moving is 10-25. You guys are probably thinking "That's not that big of a difference," and won't really care, but I was annoyed by it; as an avid Arch fan I love to configure everything exactly as I use it.

Offline

Board footer

Powered by FluxBB