Skip to main content

smartwheel-core logo

A powerful keyboard knob controller with GUI

smartwheel-core render

Why do I need it?

The main problem with keyboard encoders and standalone dials is that there aren't many features out of the box, but they can be much, much more powerful than they are right now. Have you seen those techy gadgets from Hollywood blockbusters that hackers use (like Q's fancy joystick from latest 007)? Smartwheel gives you the same functionality, but adapted for day-to-day use.

Smartwheel is written in Python/PyQt6, so it could be easily modded with custom plugins. There aren't many right now, but this project is in constant development - there will be more soon.

smartwheel-core ui

Features

Universal keyboards/dials support

Smartwheel will work with any knob - no support from the vendor required

A wide range of addons

There will be a wide range of plugins: from Krita/PS integrations to small quality-of-life imporvements

Theming

Smartwheel is fully customizable (you can even create any keybinds if you want)

Installation

You may install the prebuilt stable version from the releases.

Development build

Make sure that Python 3 is installed

Stable version

pip3 install smartwheel-core

From Github

git clone https://github.com/enaix/smartwheel-core.git

cd smartwheel-core

pip3 install .

Compilation

Nuitka now supports only Python <= 3.11

./build.sh, .\build.bat or ./build_macos.sh

To create macos dmg file run ./package_macos_dmg.sh

We need your help!

I've started working on this project a while ago, but it turned out that it's too big: it won't be possible to finish it without your help. However, it's much easier to implement features one-by-one: you only need basic Python3 (and sometimes PyQt6) knowledge. If you believe in this project and want to contribute, please DM me. Even small fixes, ideas or suggestions are very important.

Documentation

Docs are available at readthedocs: https://smartwheel-core.readthedocs.io/en/latest/

Release 1.0.0

  • Stable version (Linux)
  • Documentation (in progress)
  • Examples (in progress)
  • Initial encoders support (Linux)
  • Refactor api
    • Move to PyQt6
    • Add colorable icons
    • Add modules background processes
    • Add proper API package
    • Rewrite actionengine with pulses & acceleration
    • Rewrite serial input with new api
    • Add key combos
    • Finish folders support
  • Settings menu (in progress)
    • Basic stuff
    • Custom handlers support (Almost)
    • Saving
    • Theme presets
    • Add color picker
    • Actions editor
    • Sections editor
    • Add unified input editor (new input api)
    • Better overlays editor (?)
    • Modules import (.zip) (?)
  • Wheel hiding
    • Hide after timeout
    • Hide after losing window focus
  • Packaging
    • Configure setup.py
    • Add update feature
    • Hire core doctor!
  • Windows support
    • (Platform) Replace AF_UNIX socket with network socket
    • Add proper media fetching
  • Mac support
    • Add CI builds
    • Fix keypresses simulation
    • Add permission requests

Features progress

  • Base structure (Plugins manager)
  • Action engine
    • Keyboard bindings
    • Serial encoder integration (Partial)
    • UX Features (acceleration)
    • Keyboard knobs support (Almost)
  • Settings editor (Partial)
  • Custom plugins (from JSON)
  • Folders support (Partial)
  • Wheel UI
  • Addons
    • Media
    • Color picker
    • Scroll
    • Files (Initial)
    • Rotate
    • Timeline
    • MIDI device (with multiple encoders)
    • Other ...
  • Krita integration (Partial)
    • Color
    • Canvas rotate/scale
    • Brush
    • ...
  • Photoshop integration (?)

DIY knob

If you don't have a standalone dial, you may 3D print one!

smartwheel pad

Short video (sorry for the poor quality): smartwheel.mp4

Update: added UI overlays smartwheel2.mp4

Resources

Ionicons icon set https://github.com/ionic-team/ionicons

Metadata

Release files for smartwheel-core 0.0.6

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

Source distribution (sdist)

Source distribution for smartwheel-core 0.0.6
File Size Uploaded
smartwheel-core-0.0.6.tar.gz 452.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smartwheel-core 0.0.6
File Interpreter ABI Platform
smartwheel_core-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 918.1 kB

Release files / smartwheel-core-0.0.6.tar.gz

Download URL smartwheel-core-0.0.6.tar.gz
Size 452.3 kB
Tags Source
SHA-256 checksum
How to use checksums
160d8ba435192b41996b3492ca437f2464adafee78a431e93eb35f41315f4f75
BLAKE2b-256 checksum
How to use checksums
1f8aafe351ea4abe8c4ea4b9b48e244bfe4122c5c8480a073efc7671d98774ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.11

Release files / smartwheel_core-0.0.6-py3-none-any.whl

Download URL smartwheel_core-0.0.6-py3-none-any.whl
Size 465.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0bf7617e659cbc95b3f53bef6a5f7cf9133cffcdceb5aeede7d2edf6213fa5a4
BLAKE2b-256 checksum
How to use checksums
52117870e3f93d79e1d3108a886ab05f1e0aea349ebc18073c648562934877c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.11

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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