Skip to main content

touchscroller

Simulate smooth multi-touch scrolling on Linux with uinput.

On many Linuxes you can only scroll instantly over several lines. This package lets you script pixel-level scrolling by simulating two fingers on a touchpad.

Setup

pip install touchscroller

You must have the uinput kernel module loaded to use touchscroller. Two options:

  1. Quickly start it for now:
modprobe -i uinput
  1. Auto load on start up:
echo uinput | sudo tee /etc/modules-load.d/uinput.conf > /dev/null

You also need permissions to create a uinput device. Three options:

  1. Quickly run as root:
sudo python myscript.py
  1. Temporary fix until reboot:
sudo chmod 666 /dev/uinput
  1. Proper, most annoyingly involved way:
# create a udev rule
echo 'KERNEL=="uinput", GROUP="input", MODE="0660"' | sudo tee /etc/udev/rules.d/99-uinput.rules > /dev/null

# add current user to 'input' group
sudo usermod -aG input "$USER"

# reload udev rules and trigger
sudo udevadm control --reload-rules
sudo udevadm trigger

echo 'all done, now reboot or log out and back in'

Usage:

Important note: Before it actually starts scrolling, some threshold value has to be overcome probably in order to prevent accidental scrolling when breathing onto a real touchpad.

from touchscroller import TouchScroller

ts = TouchScroller()

directions = [
    (3, 0), (2, 2), (0, 3), (-2, 2),
    (-3, 0), (-2, -2), (0, -3), (2, -2)
]

ts = TouchScroller()
with ts.touch() as touch:
    for dx, dy in directions:
        for _ in range(30):
            touch.move(dx, dy)

Metadata

Release files for touchscroller 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for touchscroller 0.1.2
File Size Uploaded
touchscroller-0.1.2.tar.gz 3.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for touchscroller 0.1.2
File Interpreter ABI Platform
touchscroller-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 7.1 kB

Release files / touchscroller-0.1.2.tar.gz

Download URL touchscroller-0.1.2.tar.gz
Size 3.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5dea7fe7f606540e2a2585f4dd0cf6fa348a8ccba6b4537b7acbcfc80d8b71a1
BLAKE2b-256 checksum
How to use checksums
d45874284efd4bb2b0f3f3f5ff729e61b53f09684f324bd81f71d1b79b8f4681
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / touchscroller-0.1.2-py3-none-any.whl

Download URL touchscroller-0.1.2-py3-none-any.whl
Size 3.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db5ca23bb7ff8ee84321d995171fd27a1cb8adfff4c11a29e09d407aa504ef17
BLAKE2b-256 checksum
How to use checksums
ec11b0110c5b30d640cc39865825c507fdc59cd49bd364c450300aad4c04e0b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page