# opentabletdriver/opentabletdriver

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/opentabletdriver-opentabletdriver).**

3,612 stars · 450 forks · C# · lgpl-3.0

## Links

- GitHub: https://github.com/OpenTabletDriver/OpenTabletDriver
- Homepage: https://opentabletdriver.net/
- awesome-repositories: https://awesome-repositories.com/repository/opentabletdriver-opentabletdriver.md

## Topics

`cross-platform` `csharp` `dotnet-core` `driver` `userspace-driver`

## Description

OpenTabletDriver is a user-mode graphics tablet driver and USB HID input manager that translates raw USB input from digitizer hardware into system cursor and pen events. It serves as a hardware abstraction layer that normalizes input from various tablet brands into a consistent API, providing a cross-platform pen interface with pressure and tilt sensitivity.

The project distinguishes itself through a plugin-based architecture and a profile-based configuration system, allowing for custom filters, interpolators, and persistent hardware setups. It includes specialized tools for hardware driver development, such as raw USB packet analysis, hardware packet inspection, and a debugger for input value validation.

The software covers broad capability areas including input mapping for defining active surface areas and binding express keys to keyboard or mouse actions. It handles pen pressure processing and system ink integration, utilizing kernel-level input injection to ensure compatibility with software that blocks standard user-mode APIs.

Management and diagnostics are supported through a command-line interface for driver control and real-time log monitoring.

## Tags

### Operating Systems & Systems Programming

- [Graphics Tablet Interfacing](https://awesome-repositories.com/f/operating-systems-systems-programming/graphics-tablet-interfacing.md) — Translates raw input from various tablet hardware models into usable system events for drawing and navigation. ([source](https://opentabletdriver.net/Tablets))
- [User-Mode Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/user-mode-drivers.md) — Implements a user-mode driver architecture to manage hardware communication and input translation without kernel-level instability.
- [User-Mode Hardware Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/user-mode-hardware-drivers.md) — Implements a user-mode driver to manage and configure digitizer tablets across multiple operating systems. ([source](https://opentabletdriver.net/Wiki/Install/MacOS))
- [Cross-Platform Pen Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-pen-interfaces.md) — Provides a driver implementation that ensures pressure and tilt sensitivity for art software across different operating systems.
- [Digitizer Area Mappings](https://awesome-repositories.com/f/operating-systems-systems-programming/digitizer-area-mappings.md) — Defines the active surface area, rotation, and offset to align the tablet cursor with the physical workspace. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))
- [Hardware Configuration Profiles](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-configuration-profiles.md) — Defines physical dimensions, resolution, and pressure sensitivity in profiles to ensure accurate input mapping. ([source](https://opentabletdriver.net/Wiki/Development/Configurations))
- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-abstraction-layers.md) — Uses a hardware abstraction layer with plugins and profiles to normalize input from various tablet brands.
- [Hardware Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-drivers.md) — Implements support for new digitizer models by defining USB communication protocols and parsing raw input.
- [Hardware Report Parsers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-report-parsers.md) — Translates raw USB byte reports from multiple hardware vendors into a consistent internal format for processing.
- [Input Coordinate Translations](https://awesome-repositories.com/f/operating-systems-systems-programming/input-coordinate-translations.md) — Translates pressure, tilt, and coordinate data from multiple hardware models into precise cursor movements and input events. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))
- [USB Report Parsers](https://awesome-repositories.com/f/operating-systems-systems-programming/usb-report-parsers.md) — Translates raw USB byte reports into usable data to ensure pressure and button functions operate correctly. ([source](https://opentabletdriver.net/Wiki/Documentation/ConfigurationGuide))
- [User-Mode Tablet Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/user-mode-tablet-drivers.md) — Provides a user-mode driver that translates raw USB input from digitizer hardware into system cursor and pen events.

### Data & Databases

- [Input Processing Plugin Interfaces](https://awesome-repositories.com/f/data-databases/storage-abstraction/storage-provider-drivers/task-and-device-drivers/decoupled-driver-architectures/usb-class-driver-plugin-interfaces/input-processing-plugin-interfaces.md) — Integrates custom filters and interpolators through a plugin system to modify hardware data processing. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))

### Graphics & Multimedia

- [Tablet Input Configurations](https://awesome-repositories.com/f/graphics-multimedia/tablet-input-configurations.md) — Maps hardware input to screen areas and adjusts sensitivity settings for digital drawing and navigation.

### Hardware & IoT

- [USB Interface Configuration](https://awesome-repositories.com/f/hardware-iot/connectivity-iot/internet-of-things/device-management/usb-device-enumerators/usb-interface-configuration.md) — Sets low-level USB interface parameters to resolve device ambiguity and manage OS driver overrides. ([source](https://opentabletdriver.net/Wiki/Development/Configurations))
- [Driver to Device Mapping](https://awesome-repositories.com/f/hardware-iot/driver-to-device-mapping.md) — Matches connected hardware to specific communication protocols using vendor IDs and firmware strings.
- [Hardware Device Identification](https://awesome-repositories.com/f/hardware-iot/hardware-device-identification.md) — Implements runtime detection of specific tablet models and firmware variants using hardware identifiers and USB report lengths. ([source](https://opentabletdriver.net/Wiki/Documentation/ConfigurationGuide))
- [Hardware Input Parsers](https://awesome-repositories.com/f/hardware-iot/hardware-input-parsers.md) — Converts raw hardware report data into a standardized format to ensure consistent interaction across different brands. ([source](https://opentabletdriver.net/Wiki/Development/Configurations))
- [HID Device Communication](https://awesome-repositories.com/f/hardware-iot/hid-device-communication.md) — Initializes hardware by exchanging input, output, and feature reports to prepare the device for operation. ([source](https://opentabletdriver.net/Wiki/Development/Configurations))
- [USB Device Communication](https://awesome-repositories.com/f/hardware-iot/usb-device-communication.md) — Performs low-level data exchange with USB hardware using feature and output reports to initialize device features.
- [USB Device Identification](https://awesome-repositories.com/f/hardware-iot/usb-device-communication/usb-device-identification.md) — Detects and distinguishes specific USB tablet hardware using vendor IDs and firmware strings. ([source](https://opentabletdriver.net/Wiki/Development/Configurations))
- [Hardware Compatibility Layers](https://awesome-repositories.com/f/hardware-iot/usb-device-communication/usb-device-stack-implementations/hardware-compatibility-layers.md) — Implements support for new hardware models by defining specific communication protocols and device capabilities. ([source](https://opentabletdriver.net/Wiki))
- [USB HID Input Managers](https://awesome-repositories.com/f/hardware-iot/usb-hid-input-managers.md) — Maps hardware vendor IDs and USB HID report data to a standardized input format for drawing tablets.
- [Cross-Platform Input Mapping](https://awesome-repositories.com/f/hardware-iot/cross-platform-input-mapping.md) — Assigns keyboard keys and mouse buttons to hardware express keys across different operating systems.
- [Operational Mode Toggles](https://awesome-repositories.com/f/hardware-iot/hardware-switch-configuration/operational-mode-toggles.md) — Supports toggling between different hardware operational modes via physical key combinations. ([source](https://opentabletdriver.net/Wiki/FAQ/ModelSpecific))

### Software Engineering & Architecture

- [Input Data Processing Plugins](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/input-data-processing-plugins.md) — Implements a plugin system for custom filters and interpolators to modify raw hardware input data.

### User Interface & Experience

- [Input Mapping](https://awesome-repositories.com/f/user-interface-experience/input-mapping.md) — Maps hardware input to screen areas and adjusts sensitivity settings to match drawing preferences. ([source](https://opentabletdriver.net/))
- [Pressure-Sensitive Interactions](https://awesome-repositories.com/f/user-interface-experience/pressure-sensitive-interactions.md) — Translates physical pen pressure and tilt data into system events for compatible digital art software.
- [Digital Ink Capture](https://awesome-repositories.com/f/user-interface-experience/digital-ink-capture.md) — Integrates with system ink services to record and provide pen input as digital ink strokes. ([source](https://opentabletdriver.net/Wiki/FAQ/WindowsAppSpecific))
- [Hardware Input Mapping Software](https://awesome-repositories.com/f/user-interface-experience/hardware-input-mapping-software.md) — Provides a utility for defining active tablet areas and binding hardware express keys to keyboard or mouse actions.
- [Input Bindings](https://awesome-repositories.com/f/user-interface-experience/keyboard-navigation/input-bindings.md) — Assigns keyboard keys, mouse buttons, or plugin triggers to hardware express keys and pen buttons. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))
- [OS-Level Input Emulators](https://awesome-repositories.com/f/user-interface-experience/text-input-managers/input-injection-utilities/process-level-input-injectors/os-level-input-emulators.md) — Uses kernel-level injection to emulate hardware events for software that blocks user-mode APIs. ([source](https://opentabletdriver.net/Wiki/FAQ/WindowsAppSpecific))

### Development Tools & Productivity

- [Command Line Interfaces](https://awesome-repositories.com/f/development-tools-productivity/command-line-interfaces.md) — Provides a command-line interface to manage driver settings and load profiles as a background process. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))
- [Device Profile Configurations](https://awesome-repositories.com/f/development-tools-productivity/device-set-managers/device-profile-configurations.md) — Provides persistent configuration profiles for hardware dimensions and sensitivity settings for individual tablets.
- [Input Data Debuggers](https://awesome-repositories.com/f/development-tools-productivity/input-data-debuggers.md) — Provides a debugger to inspect and verify that dimensions, buttons, and pressure levels from the tablet report accurately. ([source](https://opentabletdriver.net/Wiki/Documentation/ConfigurationGuide))

### DevOps & Infrastructure

- [Configuration Profiles](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/file-based-configuration/configuration-profiles.md) — Manages persistent configuration profiles to allow rapid switching between different hardware setups. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))

### Security & Cryptography

- [Hardware Debugging Interfaces](https://awesome-repositories.com/f/security-cryptography/security/infrastructure-and-hardware/embedded-and-hardware/hardware-debugging-interfaces.md) — Provides tools for analyzing raw USB packets and system logs to troubleshoot device behavior.

### System Administration & Monitoring

- [USB HID Packet Analysis](https://awesome-repositories.com/f/system-administration-monitoring/usb-hid-packet-analysis.md) — Captures and inspects raw USB strings and input packets to debug hardware behavior and develop device support. ([source](https://cdn.jsdelivr.net/gh/opentabletdriver/opentabletdriver@0.6.x/README.md))
