Comment # 17 on bug 1013647 from
(In reply to Max Staudt from comment #15)
> No, I haven't. I can't find POINTINGSTICK_CONST_ACCEL in the kernel though,
> are you sure the rule actually does something?
> 
> In any case, the problem is not the acceleration. That we can compensate for
> at any level we like. The real problem is that we don't get minute movements
> at all. And this is a problem of either:

Well, it's true that the kernel driver hardly ever returns relative movements
with absoute value (sqrt(x^2+y^2)) below 7. This is a evtest log of me moving
the stick to the right as slightly as I can:

Event: time 1484768880.233122, type 2 (EV_REL), code 0 (REL_X), value 7
Event: time 1484768880.233122, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.233122, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 7
Event: time 1484768880.233122, -------------- SYN_REPORT ------------
Event: time 1484768880.246199, type 2 (EV_REL), code 0 (REL_X), value 7
Event: time 1484768880.246199, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.246199, -------------- SYN_REPORT ------------
Event: time 1484768880.259294, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1484768880.259294, -------------- SYN_REPORT ------------
Event: time 1484768880.298538, type 2 (EV_REL), code 0 (REL_X), value 7
Event: time 1484768880.298538, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.298538, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 8
Event: time 1484768880.298538, -------------- SYN_REPORT ------------
Event: time 1484768880.311368, type 2 (EV_REL), code 0 (REL_X), value 10
Event: time 1484768880.311368, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.311368, -------------- SYN_REPORT ------------
Event: time 1484768880.324468, type 2 (EV_REL), code 0 (REL_X), value 10
Event: time 1484768880.324468, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.324468, -------------- SYN_REPORT ------------
Event: time 1484768880.337133, type 2 (EV_REL), code 0 (REL_X), value 10
Event: time 1484768880.337133, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.337133, -------------- SYN_REPORT ------------
Event: time 1484768880.350792, type 2 (EV_REL), code 0 (REL_X), value 11
Event: time 1484768880.350792, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.350792, -------------- SYN_REPORT ------------
Event: time 1484768880.363019, type 2 (EV_REL), code 0 (REL_X), value 11
Event: time 1484768880.363019, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.363019, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 7
Event: time 1484768880.363019, -------------- SYN_REPORT ------------
Event: time 1484768880.375628, type 2 (EV_REL), code 0 (REL_X), value 11
Event: time 1484768880.375628, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.375628, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 5
Event: time 1484768880.375628, -------------- SYN_REPORT ------------
Event: time 1484768880.389370, type 2 (EV_REL), code 0 (REL_X), value 8
Event: time 1484768880.389370, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.389370, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3
Event: time 1484768880.389370, -------------- SYN_REPORT ------------
Event: time 1484768880.401547, type 2 (EV_REL), code 0 (REL_X), value 7
Event: time 1484768880.401547, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1484768880.401547, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 1
Event: time 1484768880.401547, -------------- SYN_REPORT ------------
Event: time 1484768880.415215, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1484768880.415215, -------------- SYN_REPORT ------------

The maximum value for the relative movement, when I push the stick hard, is
127.
That means the ratio between max and min movement is ~8.

If I set POINTINGSTICK_CONST_ACCEL really low (0.1), I can create almost
single-pixel movements ("xinput test" output for a movement to the right
below):

motion a[0]=2583 a[1]=1224 
motion a[0]=2583 a[1]=1224 
motion a[0]=2584 a[1]=1224 
motion a[0]=2584 a[1]=1224 
motion a[0]=2584 a[1]=1225 
motion a[0]=2585 a[1]=1225 
motion a[0]=2585 a[1]=1225 

But with this setting the pointer is SLOOOW even at large pressure, it takes
almost 12s to move the pointer from one edge of my screen to the other (~4000
pixels).

Conclusion: the variation from the smallest (7) to largest (127) movement value
reported by the kernel is too small to utilize the full libinput accelleration
profile.

>  1. Bad hardware - which we can exclude if the problem does not occur on
> Windows (can anybody test this?),

Very good point. Unfortunately, I can't. 

>  2. The driver not handling this new hardware as it needs to - because it
> hasn't been reverse engineered or implemented yet, or
>  3. A bug in the driver, or a clash with a workaround for old (jittery?)
> hardware.

Maybe upstream can help somehow?


You are receiving this mail because: