Turn the K20's 18 buttons and dial into a visual control surface for shortcuts, macros, programs and profiles.
Download the Ubuntu preview · Installation guide · Roadmap · Report a problem
- Configure visually. Select a button or dial action, choose an action, then Save. Click-to-edit and drag-and-drop both work.
- Capture shortcuts naturally. Record combinations such as
Ctrl+Shift+E, including left/right modifiers and modifier-only holds. - Create macros. Combine key sequences and delays without blocking input.
- Launch programs and URLs. Commands use explicit program arguments.
- Keep separate profiles. Create, clone, import and export YAML layouts; switch manually or bind a control to switch.
- See what is happening. Identify controls, watch live input feedback, and distinguish connection, readiness and output problems.
- Recover predictably. Disconnects and profile changes cancel old work and release owned keys. Recovery waits for released controls before fresh input.
- Choose your workspace. Dark, light and system themes; local browser UI or an optional GTK/WebKit desktop window.
![]() |
![]() |
| Select a control, configure an action, Save. | A familiar layout in light or dark. |
Open GitHub Releases and choose the Ubuntu 26.04 package. It includes the built web UI, desktop window, device-access rule and user service. APT supplies runtime libraries. Node and a source checkout are not needed to run that download.
| Download | Choose it for |
|---|---|
huion-keydial-mini-driver_1.3.0a3-1_all.deb |
Ubuntu 26.04. Start here; install with APT. |
| Earlier manual Linux bundle | Other Linux environments with manual Python/service setup; unqualified. |
Python .whl |
An existing Python installation with device access and service setup already managed. |
SHA256SUMS |
Checking that downloaded files match the published artifacts. |
| GitHub's automatic “Source code” archives | Development. These need a frontend build; use a packaged download for the prebuilt UI. |
Follow the installation guide, then open Keydial Commander
from your application menu to start remapping. Installation does not start it.
Select a control, assign an action and press Save.
Profiles stay under ~/.config/huion-keydial-mini/profiles/.
Closing the window leaves remapping active. Use keydial-commander --stop-service
to stop it. Login startup is a separate opt-in. This remains an early preview;
see the package checks and limits.
Clean Ubuntu installation is still unqualified: this environment could verify
the archive and extracted runtime, but could not complete distro systemd setup.
| Area | Current evidence |
|---|---|
| Linux K20 remapping | Implemented with evdev capture and uinput output. Administrator access is needed for initial device-rule setup; the application runs as your user. |
| Bluetooth | Physical evidence from July 2026 on Ubuntu 24.04. The new recovery behavior still needs dated hardware qualification. |
| USB | Shares the Linux input path. Physical USB/data-cable qualification remains open. |
| Automated recovery checks | 192 Python tests passed with hardware capture excluded; 15 isolated browser regressions passed. See the qualification record. |
| Distribution packages | Native Ubuntu 26.04 preview with tested archive/startup/lifecycle behavior. Actual desktop/login and physical device access still need qualification. Arch, Nix and RPM remain unqualified. |
Normal buttons fire on release to recognize button chords. “Sticky” means hold while the physical control is pressed, not a toggle. The dial emits direction pulses. Saved dial sensitivity is not yet applied by the input path. Battery reporting, a tray icon and automatic per-application profile switching are still roadmap items.
For development, use Python and Node 24 or newer. Build the frontend before installing a non-editable Python package so the installed wheel includes the UI:
git clone https://github.com/the3dcoder/KeydialCommander.git
cd KeydialCommander
python3 -m venv .venv
npm --prefix web ci
npm --prefix web run build
.venv/bin/python -m pip install .See CONTRIBUTING.md for development, device permissions and hardware-free checks. For the downloadable preview and its user service, use the installation guide.
The CLI covers binding and profile management; the GUI exposes the full action editor and YAML import/export.
keydialctl list-bindings
keydialctl list-keys
keydialctl bind BUTTON_1 KEY_LEFTCTRL+KEY_C
keydialctl bind --sticky BUTTON_13 KEY_LEFTCTRL
keydialctl bind DIAL_CW KEY_VOLUMEUP
keydialctl unbind BUTTON_1
keydialctl profile list
keydialctl profile create Krita --clone-from Default
keydialctl profile switch KritaControls are BUTTON_1–BUTTON_18, DIAL_CW, DIAL_CCW and DIAL_CLICK.
Use BUTTON_1+BUTTON_2 for a button chord. The Ubuntu package installs the CLI
on PATH. The earlier manual preview uses
~/.local/share/keydial-commander/venv/bin/.
systemctl --user status huion-keydial-mini-user.service
systemctl --user restart huion-keydial-mini-user.service
journalctl --user -u huion-keydial-mini-user.service -f
curl http://127.0.0.1:8137/api/statusThe UI talks to a loopback HTTP/WebSocket API. Profiles persist as YAML; commands run with your user privileges. Keep the API local. The architecture explains capture, output ownership, recovery and the control interfaces.
- Qualify the Ubuntu desktop/login path and dated Bluetooth/USB behavior.
- Clearer local diagnostics and guided device checks (next interview).
- Maintained device adapters, starting with a second available physical device.
Full roadmap · Contribution guide · Device reference · Release process
KeyCommand is the separate browser game. Commander provides an optional importable game profile; there is no live game-to-daemon bridge.
MIT. © 2026 Big Bwain LLC. Maintained by Earl.


