Skip to content
Driver for the Veikk S640 drawing tablet
C Shell Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Veikk S640 Drawing Tablet driver for Linux

Veikk S640 Tablet Driver "Hello World" with GIMP and Krita


Note: Pen capabilities may also work on the Veikk A30 and A50 as it is identical to the S640, but the author of this repo does not own these devices to verify. Additional capabilities for other devices (e.g., tablet buttons) have yet to be added.

A simple driver for the Veikk S640 drawing tablet, using the usbhid HID API. This draws heavily off of the Wacom driver, and is simplified to tailor to the S640's capabilities. The configuration utility uses the sysfs interface.

The driver interfaces (absolute) cursor movement, pressure sensitivity, and the two stylus buttons. Full 32768x32768 cursor position sensitivity and 8192-level pressure sensitivity are included.

I also wrote a blog post about the development of this driver, which also acts as a no-prior-knowledge-necessary tutorial for writing Linux drivers. Check it out!

Setup instructions

Arch users: input-veikk-dkmsAUR, thanks to @artixnous

Run the install instructions, and the driver should be set up! Woo hoo!

Check out the issues tab for known setup issues and solutions.

Install instructions

Make sure you have make and the appropriate linux headers installed (linux-headers-$(uname -r) on Ubuntu, linux-headers on Arch). See this for more details.

sudo make install clean

If you are getting a Required key not available error, please see this issue.

Uninstall instructions

sudo make uninstall

Configuration (very beta)

Run the configuration utility and follow the instructions to change a setting. Note that this is very beta, so input validation doesn't exist yet and data will not be saved after reloading the module or restarting. Those updates will come with the visual configuration utility.


Configuration options:

  • Orientation:
    • 0: no rotation (default)
    • 1: rotate right 90 deg
    • 2: rotate 180 deg (left-handed mode)
    • 3: rotate left 90 deg
  • Screen mapping (all values in integers percents, e.g., 45):
    • Left: left boundary (default: 0)
    • Top: top boundary (default: 0)
    • Right: right boundary (default: 100)
    • Bottom: bottom boundary (default: 100)
  • Pressure mapping:
    • 0: linear mapping (p_out = p_raw) (default)
    • 1: constant function, half pressure (p_out = p_max / 2)
    • 2: power function, n=1/2 (p_out = sqrt(p_raw))
    • 3: power function, n=2 (p_out = p_raw^2)
    • 4: linear mapping, reduced input pressure (p_out = min(4/3 * p_raw, p_max))

Future updates

  • Visual configuration interface (e.g., pressure sensitivity mapping)
  • Integration for more Veikk devices (A15, A30, A50, VK1560)


This was hastily tailored for the S640 only (the author of this package can only afford the cheapest tablet), but PRs for other Veikk tablets are very welcome. It's reported that pen capabilities work for the A50 as well.

This is also my first Linux driver. If there are optimizations or conventions that would be optimal to follow, please let me know or create a PR.

I am also not an artist. My sister is the artist, and this is her tablet. If any of the input mappings are incorrect, or if there are any useful input mappings to implement for some artistic reason I wouldn't know, please reach out or make a PR.

You can’t perform that action at this time.