Skip to content

Gnarus-G/maccel

Repository files navigation

maccel

Linear mouse acceleration. image

Acceleration Function

$$V = \frac{\sqrt{dx_0^2 + dy_0^2}}{i}$$

$$dx_f = dx_0 * (1 + aV)$$

$$dy_f = dy_0 * (1 + aV)$$

Where $dx$ and $dy$ are the directional displacements read from the mouse, $i$ is the polling interval of the mouse; this would be 1ms if the polling rate is 1000Hz, and $a$ is the user provided acceleration factor

Install

Shell Script

Make sure to have these dependencies installed on your machine: curl, git, make, dkms, and the linux headers in /lib/modules/

You might also, and you probably don't, have to install gcc or clang depending on with which your distro's kernel was built.

curl -fsSL https://www.maccel.org/install.sh | sudo sh

Arch (PKGBUILD)

git clone https://github.com/Gnarus-G/maccel
cd maccel
makepkg -si

Post Install

Run modprobe maccel after installing or add modprobe_on_install=true to your dkms config file (usually located at /etc/dkms/framework.conf) to automatically modprobe after installing a dkms module.

Optionally, add yourself to the maccel group using usermod -aG maccel $USER after installing, if you want to run maccel without running as root.

Uninstall

sh /opt/maccel/uninstall.sh

Or

curl -fsSL https://www.maccel.org/uninstall.sh | sudo sh

CLI Usage

CLI to control the parameters for the maccel driver

Usage: maccel [COMMAND]

Commands:
  tui         Open the Terminal UI to manage the parameters and see a graph of the sensitivity
  set         Set the value for a parameter of the maccel driver
  get         Get the values for parameters of the maccel driver
  completion  Generate a completions file for a specified shell
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Notes

One should disable the acceleration done by default in some distros, e.g. by xset or libinput. Full Guide

Here is Breakdown of why and how I ended up making this

Troubleshooting Install

linux headers

You want to make sure that /lib/modules/ is not empty. For example mine looks like this:

total 0
drwxr-xr-x 1 root root    114 Jan 29 17:59 .
drwxr-xr-x 1 root root 159552 Jan 29 22:39 ..
drwxr-xr-x 1 root root     10 Jan 29 17:59 6.6.14-1-lts
drwxr-xr-x 1 root root     12 Jan 29 17:59 6.7.0-zen3-1-zen
drwxr-xr-x 1 root root    494 Jan 29 17:59 6.7.2-arch1-1
drwxr-xr-x 1 root root    494 Jan 31 21:54 6.7.2-zen1-1-zen

You want to find headers that match your kernel as represented by

uname -r

On an arch based distro you search for the available headers with

pacman -Ss linux headers

gcc

The version matters, it must match the version with which the kernel was built.

For example you might encounter such an error:

image

And you'll have to find a version of gcc that matches. This will be more or less annoying depending on your distro and/or how familiar you are with it.

References

Contributing

First off, I apreciate you. Now here are some guidelines:

Commit messagses

Subject line:

  • First letter is capitalized
  • Imperative tense (e.g. "Add ...", not "Added ..." or "Adds ...")
  • Include as much detail as you can.

See more