Adds system-wide:
Can be used by mouse or graphics tablet users.
Scrolling mode requires selected button to be unbound (example).
```toml
xinput list
to get device list. Wacom Bamboo registers 4_grep
part comes from the factxinput list | grep ${xinput_grep}
.xinput_grep = "Wacom"
button_id
to start scrolling,[scroll]
hold = false
means click once to enable, click once to disable.false
on tablets, as it's annoying when you connectivityhold = true
.hold = false
speed
to high value and decrease system-widespeed
×distance
[px]speed = 10000000
button_id = 3
timeout_ms
has passed since[keyboard_click]
warmup_ms = 500
timeout_ms = 1000
key_lmb = 52 # Z
key_rmb = 53 # X
unused_key = "F13" ```
Use config above, but replace xinput_grep
with f.e. "Gaming Mouse", and stylus_button_id
with some button ID. Middle button ID is 2, but that requires you to unbind its pasting functionality somehow. I recommend using additional buttons if your mouse has these. Button IDs 4 and 5 are reserved for scroll events. You can check button IDs with xinput test-xi2 --root
.
Grab binary from Releases page, or build it yourself by copying the source and running cargo build --release
, or have Cargo download the sources and put binary in PATH
for you with cargo install x11-input-supercharger
. Rust stable toolchain is required.
Config.toml
must be in current working directory when starting the program.
Entering/leaving scrolling mode changes keymap, which causes lag in Chromium-based browsers. Don't set the timeout too short.
The program grabs root X11 input device.
The code is ugly, and the program sometimes crashes on shutdown (but doesn't seem to leave the system in broken state).
KSysGuard shows the program uses 0-2% of CPU time on Intel i5 6300HQ.