Skip to content

When something gets in the way

Start with a read-only check:

uvx tabletkey doctor
uvx tabletkey daemon status

From a source checkout, use uv run tabletkey instead of uvx tabletkey. Status distinguishes the process, USB connection, initialisation, virtual pen, and mapped output. A process can be running while output is unavailable.

“Tablet not detected”

Confirm the USB identity is 2feb:000b. “VEIKK” alone is not enough: other models may have entirely different protocols. Connect directly and try another cable/port. Run on the desktop host, not inside a container or sandbox that cannot see /dev/hidraw* and /dev/input/.

Permission denied or no uinput access

Run uvx tabletkey setup to preview the rules, then uvx tabletkey setup --install for explicit one-time installation. Run the driver as the logged-in desktop user. If refreshed access has not appeared, unplug/replug the tablet or restart the desktop session. Do not work around access issues by running the whole app with sudo or granting access to every input device.

OpenTabletDriver is running

Close its daemon before starting TabletKey. Closing its settings window may leave its daemon running. TabletKey refuses concurrent operation. The optional daemon start --replace-otd explicitly stops its user service for the session; it does not disable or uninstall it.

The GUI will not open

Check that a graphical session is active. PySide6 needs system libraries in addition to its Python wheel. Use the error's missing-library name and your distribution's Qt documentation to identify what is needed. On supported x86-64 Linux, Qt can use Wayland or XCB depending on the session/plugin. See Qt's Linux requirements.

For a plugin-loading error, inspect QT_QPA_PLATFORM before forcing a backend. A previous offscreen testing setting hides windows. QT_DEBUG_PLUGINS=1 uvx tabletkey gui provides diagnostics; review them before sharing because they can include local paths.

evdev fails to build during installation

Install your distribution's C compiler/build tools and Python development headers, or select uv-managed Python with uvx --python 3.12 tabletkey. A compiler may still be required. The repository's uv sync --locked --managed-python uses a managed Python with headers. A failure before installation is complete is different from a runtime uinput permission failure.

The app runs, but the pen does not move

Check Enable tablet output, the pen-enabled checkbox, and the selected connected monitor. Then inspect daemon status for an output error. cosmic-randr list must report enabled displays. The pen-routing implementation currently targets COSMIC; other Wayland compositors are unverified.

For startup errors, stop the background process and run in the terminal:

uvx tabletkey daemon stop
uvx tabletkey daemon run

Ctrl+C releases input and stops. Avoid starting a second driver while diagnosing the first.

The wrong key lights up, or the wheel feels backwards

Use Match the four keys to the picture and press them starting nearest the dial. Use Identify wheel directions, or Reverse scrolling to swap actions. Save afterwards. Physical layout metadata changes labels/positions without changing existing hardware bindings.

Pressure is too firm, or hover flickers

Try Light touch or comfortable-peak calibration in Pressure. Do not press harder to reach 100%. In Pen detection, compare range-exit and timeout counters while reproducing a dropout. Detection does not measure physical height or signal intensity. No hover smoothing is enabled; a flickering cursor alone does not prove USB latency or a particular hardware fault.

Reporting a useful issue

Include the tablet's USB identity, Linux distribution, COSMIC version, Python version, installation method, doctor output, and steps to reproduce. State whether the same problem happens with other drivers stopped. Remove personal paths if desired. Do not attach unrelated input or Windows installers.

For deliberate target-only raw recording, use a new local file:

mkdir -p captures
uvx tabletkey record --label hover-range --seconds 15 --output captures/hover-range.jsonl
uvx tabletkey inspect captures/hover-range.jsonl

Recording is read-only: it does not initialise the tablet. Raw output can differ when the device has not already been initialised. Existing capture files are never overwritten.