Mouse acceleration - ArchWiki

Jump to content

# Mouse acceleration

From ArchWiki

Related articles

- Mouse buttons
- Mouse polling rate

## Disabling mouse acceleration

Install the xorg-xinput package, providing the commandline tool `xinput` to configure devices .

Using Xorg, libinput sets itself as the default driver with `/usr/share/X11/xorg.conf.d/40-libinput.conf`. To activate the `flat` profile for our pointer device, we need to set the `flat` profile to `1` and the `adaptive` and `custom` profile options to `0`.

Find out your device id:

    # xinput

The first number indicates the default acceleration profile, the second number indicates the flat profile (No Acceleration), and the third number indicates a custom profile. To activate the flat profile:

    # xinput set-prop "deviceid" "libinput Accel Profile Enabled" 0 1 0

Confirm the changes:

    # xinput list-props "deviceid"

Make it persistent by adding the option to the pointer section:

    /etc/X11/xorg.conf.d/40-libinput.conf

     Section "InputClass"
      Identifier "libinput pointer catchall"
      MatchIsPointer "on"
      MatchDevicePath "/dev/input/event*"
      Driver "libinput"
      Option "AccelProfile" "flat"
     EndSection

### Disable mouse acceleration in GDM

Disable mouse acceleration in GDM with Wayland:

    [gdm]$ dbus-launch gsettings set org.gnome.desktop.peripherals.mouse accel-profile 'flat'

## Configuring mouse acceleration

The factual accuracy of this article or section is disputed.

Reason: Configuration depends on the input driver, libinput can be used in Xorg. Each subsection should explicitly state which driver is assumed. (Discuss in Talk:Mouse acceleration)

Setting the mouse acceleration depends on the windowing protocol you are using: either Xorg or Wayland.

- On Xorg, there are several ways of setting mouse acceleration

  - by editing Xorg configuration files
  - xorg-xset and xorg-xinput which provide xset and xinput respectively
  - and configuration interfaces common in desktop environments.

- If you are using Wayland, the events are controlled via libinput. It is the compositor's job to expose the settings brought by libinput. There is currently no standard way to change settings across compositors.[1]
- GNOME manages mouse acceleration by itself. A choice between "adaptive" and "flat" profiles can be chosen by installing dconf-editor and editing the value in org/gnome/desktop/peripherals/mouse/acceleration-profile. Alternatively, gnome-tweaks can also be used to edit the org/gnome/desktop/peripherals/mouse/acceleration-profile.

## Mouse acceleration with libinput

When using the adaptive pointer acceleration profile, libinput calculates the mouse acceleration depending on the DPI and the parameter `Acceleration Speed` [2]. libinput relies on the resolution reported by evdev [3]. Feedback settings set with `xset m` are effectively ignored. When using the flat pointer acceleration profile, the acceleration factor is constant regardless of the velocity of the pointer. This provides 1:1 movement between the device and the pointer on-screen.

### Changing the acceleration

Find the id of your device with `xinput list` and set the acceleration speed with the following command. Note that the acceleration speed has to be in the range of [-1,1]. Check this plot to see the impact of different acceleration speed values.

    $ xinput --set-prop <device id> 'libinput Accel Speed' <acceleration factor>

Confirm your changes with the following:

    $ xinput --list-props <device id>

### Custom acceleration profile

The custom profile defines separate piecewise-linear acceleration functions for fallback movement, pointer motion and scrolling. Each function consists of equally spaced output-speed points; the step specifies the input-speed interval. The supported movement types depend on the device. See The custom acceleration profile for details.

Under Xorg, xf86-input-libinput exposes these functions through the `libinput Accel Custom ... Points` and `libinput Accel Custom ... Step` XInput properties, as well as the corresponding `AccelPoints...` and `AccelStep...` Xorg options. For example, set and enable a custom pointer-motion curve with:

    $ xinput --set-prop <device id> 'libinput Accel Custom Motion Step' 0.5
    $ xinput --set-prop <device id> 'libinput Accel Custom Motion Points' 0.0 0.25 0.75 1.5 2.5
    $ xinput --set-prop <device id> 'libinput Accel Profile Enabled' 0 0 1

The three values of `libinput Accel Profile Enabled` represent the adaptive, flat and custom profiles. `libinput Accel Speed` does not affect the custom profile. See libinput(4) for persistent Xorg options.

The libinput-curveAUR package provides declarative per-device custom curve configuration under Xorg, including validation, application and verification of live XInput settings, and generation of persistent `xorg.conf.d` configuration.

### Persistent configuration

libinput does not store configuration options, it is up to the caller to manage these. Under Wayland configuration is restored by the desktop environment. Under X xf86-input-libinput reads the xorg configuration files and applies the options [4]. To make changes persistent under X create a file like this:

    /etc/X11/xorg.conf.d/99-libinput-custom-config.conf

    Section "InputClass"
      Identifier "<something to identify this snippet>"
      MatchDriver "libinput"
      MatchProduct "<substring of the device name>"
      Option "AccelSpeed" "<e.g. 0.3>"
    EndSection

For further options see libinput(4).

## Setting mouse acceleration

### In Xorg configuration

See xorg.conf(5) for details.

An example configuration, with acceleration enabled, is:

    /etc/X11/xorg.conf.d/50-mouse-acceleration.conf

    Section "InputClass"
    	Identifier "My Mouse"
    	MatchIsPointer "yes"
    	Option "AccelerationNumerator" "2"
    	Option "AccelerationDenominator" "1"
    	Option "AccelerationThreshold" "4"
    EndSection

Setting the three options to `"1"`, `"1"` and `"0"` respectively effectively disables acceleration.

Uncomment one of the options in the following example to use either curved or linear deceleration, respectively:

    /etc/X11/xorg.conf.d/50-mouse-deceleration.conf

    Section "InputClass"
    	Identifier "My Mouse"
    	MatchIsPointer "yes"
    #	Option "AdaptiveDeceleration" "2"
    #	Option "ConstantDeceleration" "2"
    EndSection

You can also assign settings to specific hardware by using `MatchProduct`, `MatchVendor` and other matches inside class sections. Run `lsusb` to find out the product name and vendor to match:

    $ lsusb -v | grep -e idProduct -e idVendor

If you are unable to identify your device, try running `xinput list`. Some devices the use Logitech Unifying Receiver share the same USB connection therefore, the mouse do not appear using `lsusb`

### Using xinput

First, get a list of devices plugged in (ignore any virtual pointers):

    $ xinput list

Take note of the ID. You may also use the full name in commands if the ID is prone to changing.

Get a list of available properties and their current values available for modification with

    $ xinput list-props 9

where `9` is the ID of the device you wish to use. Or

    $ xinput list-props "mouse name"

where `mouse name` is the name of your mouse given by `xinput list`.

Example, changing the property of `Constant Deceleration` to 2:

    $ xinput list-props 9

    Device 'mouse name':
           Device Enabled (121):   1
           Device Accel Profile (240):     0
           Device Accel Constant Deceleration (241):       1.000000
           Device Accel Adaptive Deceleration (243):       1.000000
           Device Accel Velocity Scaling (244):    10.000000

    $ xinput --set-prop "mouse name" "Device Accel Constant Deceleration" 2

To make it permanent, edit Xorg configuration (see above) or add commands to xprofile. The latter will not affect speed in a display manager.

### Configuration example

You may need to resort to using more than one method to achieve your desired mouse settings. Example to configure a generic optical mouse: First, slow down the default movement speed 3 times so that it is more precise.

    $ xinput --set-prop 9 'Device Accel Constant Deceleration' 3

Then, enable acceleration and make it 3 times faster after moving past 6 units.

    $ xset mouse 3 6

If you are satisfied with the results, store the preceding commands in `~/.xinitrc`.

Categories:

- Mice
- X server

Hidden category:

- Pages or sections flagged with Template:Accuracy

Mouse acceleration
Add topic