WELCOME.

Back to projects
RustC#NixShellC

NextTabletDriver

A high-performance user-mode drawing tablet driver written in Rust, designed to minimize input lag. A modern alternative to OpenTabletDriver.

NextTabletDriver icon

NextTabletDriver

A modern, low-latency tablet driver for osu!, digital art, and everyday pen input. Built in Rust with a native egui interface, cross-platform device support, and precise mapping controls.

Releases CI/CD Platforms License Rust

Attribution notice: The tablet configuration files under tablets/OpenTabletDriver are a git submodule pinned to the OpenTabletDriver project, licensed under the GNU Lesser General Public License v3.0 (LGPLv3). This submodule keeps OpenTabletDriver's LGPLv3-licensed content separate from NextTabletDriver's own MIT license, it is not copied into the MIT-licensed source tree. See the License section for details.

Overview

NextTabletDriver gives players and artists a focused tablet driver with fast input handling, flexible active area mapping, and a clean desktop UI. It is designed to replace vendor-specific drivers when you need consistent behavior across devices and operating systems.

Low latencyOptimized polling, high-priority input threads, and a compact Rust pipeline.
Precise mappingActive area, target display area, rotation, aspect ratio locking, and display edge snapping.
Cross-platformWindows support through native input APIs and Linux support through uinput.
Custom UI themesJSON themes with colors, spacing, semantic colors, and osu! playfield opacity controls.
Developer SDKNative .dll/.so for embedding the tablet engine directly in third-party apps, with C/C++ and C#/Unity bindings. See docs/SDK.md.
Telemetry and filtersBuilt-in console, performance panels, Devocub Antichatter, Kalman smoothing, and HandSpeed WebSocket output.

Supported Hardware

The driver ships with community-maintained JSON configurations for many tablet families:

  • Wacom, including Intuos, Bamboo, Cintiq, and One devices
  • Huion and Kamvas devices
  • XP-Pen and UGEE devices
  • Gaomon, VEIKK, Artisul, Parblo, XenceLabs, UC-Logic, and more

Tablet definitions are sourced from the tablets/OpenTabletDriver submodule. To add support for a new device, contribute its configuration JSON to OpenTabletDriver upstream, it will be picked up here on the next submodule update. A parser implementation in this repository may still be needed for devices using a new report protocol.

Installation

Windows

  1. Download the latest Windows release from the releases page.
  2. Run the installer or extract the portable build.
  3. Launch next_tablet_driver.exe.

Arch Linux and AUR

An AUR package recipe is provided as nexttabletdriver-git.

git clone https://aur.archlinux.org/nexttabletdriver-git.git
cd nexttabletdriver-git
makepkg -si

The package installs the binary, desktop entry, icon, license, and udev rules.

Generic Linux

NextTabletDriver requires access to HID tablet devices and /dev/uinput.

sudo cp scripts/99-nexttabletdriver.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

This grants access to the current desktop user instantly, no group membership or logout required. If you run the driver from a headless/non-logind session, add your user to the input group instead and log out and back in: sudo usermod -aG input "$USER".

More details are available in scripts/README-linux.md.

Build From Source

Requirements

  • Rust 1.97.1 or newer
  • pkgconf
  • hidapi
  • Linux only: gtk3, libxkbcommon, libglvnd, wayland, and uinput support

Build

cargo build --release --locked

The release binary is created at:

target/release/next_tablet_driver

On Linux cross-compilation targets, the binary may be under a target-specific directory such as:

target/x86_64-unknown-linux-gnu/release/next_tablet_driver

Project Layout

src/
  app/        Application lifecycle, layout, services, update flow
  core/       Configuration models, math, geometry, transforms
  drivers/    Tablet detection, parsers, and device configuration loading
  engine/     Input polling, projection pipeline, OS injection
  filters/    Optional processing filters and statistics output
  settings/   Profile and theme persistence
  ui/         egui panels, widgets, and theme helpers
tablets/      Device JSON definitions (OpenTabletDriver submodule)
scripts/      Linux udev helpers and packaging utilities
resources/    Icons and bundled fonts
sdk/          Native SDK (ntd_sdk.dll / libntd_sdk.so) for third-party integration

Configuration and Themes

Settings are stored as JSON profiles. The UI supports importing and exporting profiles from the File menu.

Custom themes are documented in docs/THEMES.md. Themes can control the main palette, widget styling, spacing, semantic colors, and the opacity of the osu! playfield overlay.

Native SDK

Third-party applications (games, Blender/Unity plugins) can embed NextTabletDriver's engine directly, without requiring the desktop app to be installed or running. See docs/SDK.md for the C and C# APIs, build instructions, and the HID ownership arbitration mechanism.

Developer Notes

Generate local Rust documentation with:

cargo doc --no-deps --open

Run the main validation pass with:

cargo test

For packaging changes on Arch Linux, validate with:

cd packaging/linux
makepkg --printsrcinfo > .SRCINFO
makepkg -si

Contributing

Contributions are welcome. Good first contributions include tablet configuration updates, parser fixes, Linux packaging improvements, theme examples, and UI polish.

When adding hardware support, include the device VID/PID, physical dimensions, report parser name, and any initialization reports required by the tablet.

License

NextTabletDriver is distributed under the MIT License. See LICENSE for details.

Third-Party Licenses

The tablet configuration files under tablets/OpenTabletDriver are a git submodule pinned to OpenTabletDriver, which is licensed under the GNU Lesser General Public License v3.0 (LGPLv3). This submodule is a separate, distinct component under the terms of the LGPLv3 and is not relicensed under NextTabletDriver's MIT license. The full text of the LGPLv3 can be found at gnu.org/licenses/lgpl-3.0.

Copyright © OpenTabletDriver contributors.