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