Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 24 users
Status: Verified
Owner:
Closed: Aug 2014
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment
Find the holy grail of mouse acceleration curves
Project Member Reported by denniskempin@chromium.org, Apr 2 2014 Back to list
Make a user study to find the mouse acceleration curve that feels comfortable for most users and tune the parameters to have a consistent scale of 1-5 cursor speed values. 
 
Cc: adlr@chromium.org
Labels: Cr-Internals-Input-Touch-Pad OS-Chrome
Project Member Comment 2 by bugdroid1@chromium.org, Apr 4 2014
Project: chromiumos/platform/inputcontrol
Branch : master
Author : Dennis Kempin <denniskempin@chromium.org>
Commit : 44b9c74f4d1512fea5d68537f79928ddb184009c

Code-Review  0 : Dennis Kempin, chrome-internal-fetch
Code-Review  +2: Andrew de los Reyes
Commit-Queue 0 : Andrew de los Reyes, chrome-internal-fetch
Commit-Queue +1: Dennis Kempin
Verified     0 : Andrew de los Reyes, chrome-internal-fetch
Verified     +1: Dennis Kempin
Change-Id      : Ic6f1de87ebbf0d09e744546d8bce75e509db3cb8
Reviewed-at    : https://chromium-review.googlesource.com/192932

New script: curve_experiment

This script will update mouse acceleration curves to different settings.

BUG= chromium:359288 
TEST=run the script and check if the mouse acceleration on all connected
mice changes.

Makefile
curve_experiment
xinput.sh
Comment 3 by adlr@chromium.org, Jun 20 2014
Cc: caitlinjohnson@chromium.org ka...@chromium.org
 Issue 380164  has been merged into this issue.
Comment 4 by adlr@chromium.org, Jun 23 2014
Cc: osh...@chromium.org sadrul@chromium.org
 Issue 369926  has been merged into this issue.
Comment 5 by adlr@chromium.org, Jun 23 2014
 Issue 239875  has been merged into this issue.
Comment 6 by adlr@chromium.org, Jun 23 2014
Cc: melissadaniels@chromium.org
 Issue 219702  has been merged into this issue.
Numerous complaints about the lack of this feature in Chromebook Central. [TC, here.]  Not an issue for me, but countless others really want more controls over mouses (!).
[Calling this "the Holy Grail" would lead me to a Monty Python comment, but I shall refrain and be professional.]
Cc: tzabel@chromium.org
Labels: Cr-IO-Mouse
Please keep in mind that touchpad and external mice will have different optimal curves.  We need to detect this and update the curve accordingly.
This is already the case. Mice and Touchpads in ChromeOS have separate acceleration curves. This bug is focused on optimizing the mouse curves only. 
Most people seem to be happy with the touchpad curves. 
Still, please be aware that this has extremely negative impact on usability and the ability to get anything (work related or whatever) done.
For now I stopped using my ChromeOS devices and reverted back to my MacBook until this is finally resolved.
Comment 13 by adlr@chromium.org, Jul 25 2014
Owner: adlr@chromium.org
I'll take this over. I'm planning to get it in for R38. There will be knobs in crosh for anyone who doesn't like it.
Project Member Comment 14 by bugdroid1@chromium.org, Aug 7 2014
Project: chromiumos/platform/touchpad-tests
Branch : master
Author : Andrew de los Reyes <adlr@chromium.org>
Commit : b603b66a1b1a2eb34645803b3274011bfd75d97b

Code-Review  0 : Andrew de los Reyes, chrome-internal-fetch
Code-Review  +2: Dennis Kempin
Commit-Queue 0 : Dennis Kempin, chrome-internal-fetch
Commit-Queue +1: Andrew de los Reyes
Verified     0 : Dennis Kempin, chrome-internal-fetch
Verified     +1: Andrew de los Reyes
Change-Id      : I94db4bcc32bd51d3ba79b7b1427c3e033a1d3487
Reviewed-at    : https://chromium-review.googlesource.com/210509

magicmouse: Accel change regression tests

These tests cover the new acceleration changing features.

BUG= chromium:359288 
TEST=These are the tests

tests/magicmouse/accel_custom.log
tests/magicmouse/accel_custom.props
tests/magicmouse/accel_custom.py
tests/magicmouse/accel_new.log
tests/magicmouse/accel_new.props
tests/magicmouse/accel_new.py
tests/magicmouse/accel_old.log
tests/magicmouse/accel_old.props
tests/magicmouse/accel_old.py
tests/magicmouse/scroll_custom.log
tests/magicmouse/scroll_custom.props
tests/magicmouse/scroll_custom.py
tests/magicmouse/scroll_normal.log
tests/magicmouse/scroll_normal.props
tests/magicmouse/scroll_normal.py
Project Member Comment 15 by bugdroid1@chromium.org, Aug 7 2014
Project: chromiumos/platform/inputcontrol
Branch : master
Author : Andrew de los Reyes <adlr@chromium.org>
Commit : a417477ea2de2b1f0a0ab78cf232bb7a53ab9969

Code-Review  0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Code-Review  +2: Andrew de los Reyes
Commit-Queue 0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Commit-Queue +1: Andrew de los Reyes
Verified     0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Verified     +1: Andrew de los Reyes
Change-Id      : I65ab99382c58e92b0f029d32c7e926d04e4738c4
Reviewed-at    : https://chromium-review.googlesource.com/209915

inputcontrol: many knobs for acceleration

We add new inputcontrol command line flags:

--mouse_old_accel

Since we're switching to new mouse pointer acceleration curves, we add
a new crosh option to revert to the old mouse pointer acceleration
curves, to help users that may be unhappy with the change.

--tp_custom_point_accel
--tp_custom_scroll_accel
--mouse_custom_point_accel
--use_tp_custom_point_accel
--use_tp_custom_scroll_accel
--use_mouse_custom_point_accel

For three types of acceleration (tp pointing, tp scrolling (applies to
touchpad and touch mice), and mouse pointing), we have two
options. One allows the specification of a custom acceleration curve,
while the other enables/disables this curve. Note that mouse wheel
acceleration is not tuneable with these flags.

To set a custom curve, one specifies 20 segments, each with the
following four values: x-cutoff, a, b, c. The acceleration code will
find the first segment such that the current speed is under the
x-cutoff (in mm/sec). It will then apply the formula: output_speed =
a(input_speed)^2 + b(input_speed) + c.

So, for example, to set a silly curve that makes the touchpad move
normally at low speed, but move backwards at high speed, you would
run:

inputcontrol --mouse_custom_point_accel=\
80,0,1,0,\
inf,0,-1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0,\
inf,0,1,0
inputcontrol --use_mouse_custom_point_accel=1

Note: inf == infinity

So when speed is < 80mm/sec, out = 0in^2 + 1in + 0 = in. When 80mm/sec
is exceeded, but speed is under infinity: out = 0in^2 + -1in + 0 = -in

To disable this: inputcontrol --use_mouse_custom_point_accel=0

BUG= chromium:359288 
TEST=Will add regression test before checking in

inputcontrol
Project Member Comment 16 by bugdroid1@chromium.org, Aug 8 2014
Project: chromiumos/platform/gestures
Branch : master
Author : Andrew de los Reyes <adlr@chromium.org>
Commit : 0b380701712ca2eb53b35ef1ac1022a26aa30493

Code-Review  0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Code-Review  +2: Andrew de los Reyes
Commit-Queue 0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Commit-Queue +1: Andrew de los Reyes
Verified     0 : Dennis Kempin, Tai-Hsu Lin, chrome-internal-fetch
Verified     +1: Andrew de los Reyes
Change-Id      : I577547ba819f74f954de11faaa87294de10e437f
Reviewed-at    : https://chromium-review.googlesource.com/209947

AccelFilterInterpreter: New Mouse Pointer Acceleration Curves

We add new acceleration curves for mouse pointing. We also keep the
old curves available with a property to enable them (is settable from
inputcontrol).

Also, change how the custom curves are enabled: instead of setting
sensitivity to <1 or >5, we now have separate properties to toggle use
of custom curves. This will be settable from inputcontrol and allow
for custom curve changes to persist across logout/login.

BUG= chromium:359288 
TEST=Will add regression test before checking in

include/accel_filter_interpreter.h
src/accel_filter_interpreter.cc
src/accel_filter_interpreter_unittest.cc
Comment 17 by adlr@chromium.org, Aug 8 2014
Status: Fixed
To verify:

plug in mouse. compare moving the mouse slowly w/ R37 and ToT. Notice that on ToT slow moves cause the cursor to move farther.

End users can revert to the old acceleration on their device with this crosh command:

inputcontrol --mouse_old_accel=1
When I try using the new commands on my Pixel, I get something like

property 'Use Custom Mouse Pointer Accel Curve' doesn't exist, you need to specify its type and format

I'm on Chrome Canary 38.0.2117.2, Platform 6134.0.0 .
Comment 19 by adlr@chromium.org, Aug 11 2014
Calamity, it may not have been rolled out yet on the dev channel. Do you repro your problem on ToT?
Ok, the custom curve stuff is working for me on 38.0.2118.0/6144.0.0 . Thanks.
Will this change include the option to change the mouse double-click rate?  I need to slow mine down so that it doesn't accidentally double-click frequently.
Labels: VerifyIn-38
Thanks for providing a way to define accelaration parameters. Now I'm able (again) to disable the mouse accelaration. Formerly working xset m 0 is apparently not working anymore. For me writing the first curve point as inf,0,4,0 is perfectly fine. 
Status: Verified
#17
Comment 25 by mhsp...@gmail.com, Aug 4 2016
This may have been fixed in the past but current build has NO inputcontrol:
crosh> inputcontrol help
/usr/bin/crosh: line 942: /opt/google/input/inputcontrol: No such file or directory

Version 52.0.2743.85
Platform 8350.60.0 (Official Build) stable-channel veyron_minnie
Firmware Google_Veyron_Minnie.6588.197.0
That is right, unfortunately inputcontrol can no longer work with the latest versions of Chrome OS. We have been talking about possible alternatives for a while but unfortunately this won't be easy to replace. 

I have created a new bug for this since it's a 'new' issue: crbug.com/635218
Feel free to star the issue to get updated on any developments. 
Sign in to add a comment