# Wacom tablet

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This article or section is a candidate for moving to Graphics tablets.

Notes: Most content is not specific to Wacom. (Discuss in Talk:Wacom tablet#Graphics tablet more generally)

Wacom does not officially support Linux. Linux support is provided by the Linux Wacom Project. Supported devices are listed on the Device IDs page with a version number in the input-wacom column.

## Installation

The Arch Linux kernels include the input-wacom driver.

Ensure your kernel recognizes your tablet. Connect your tablet via USB or Bluetooth. It should show up when running `dmesg | grep -i wacom` as root and be listed in `/proc/bus/input/devices` (and if you use USB in the `lsusb` output). If it does not, your only chance is that your tablet is supported by a more recent driver than the one in your kernel. In that case install the input-wacom-dkmsAUR package.

Install the X driver, xf86-input-wacom, and restart X so the new udev rules take effect.

The command `xsetwacom list devices` should now list some devices. If it does not, see #Manual setup.

The kcm-wacomtablet package provides a KDE graphical user interface for tablet configuration and supports tablet-specific profiles and hotplugging.

Support for the following Wacom tablets is provided via tuhi-gitAUR:

- Bamboo Spark
- Bamboo Slate
- Intuos Pro Paper

Consult README for the details of initial configuration. For setups with more than one monitor you will probably want to fix aspect ratio using `Coordinate Transformation Matrix` as described at dual and multimonitor set up.

### Non-Wacom tablets

The Arch-Linux kernels also include the Digimend driver, used for most non-Wacom tablets. If your tablet is recent, and few features are missing, you can test digimend-kernel-drivers-dkms-gitAUR that could complete this features. If this features are not supported, you can report a tablet test to Digimend drivers authors, to include it's functionalities to the driver. The Digimend diagnostic tools are available on AUR uclogic-toolsAUR, `lsusb` and `usbhid-dump` are available in usbutils.

These tablets are also auto-detected, but it could be interesting to map it as a Wacom tablet, because few rare system tools, like GNOME tablet settings, only recognise Wacom tablet. To have your non-wacom tablet recognized as Wacom tablet, simply add in `/etc/X11/xorg.conf.d/50-tablet.conf` (create it, if it does not exists) the following Section, where `VID:PID` is your USB ID as seen by `lsusb`:

    Section "InputClass"
        Identifier "Tablet"
        Driver "wacom"
        MatchDevicePath "/dev/input/event*"
        MatchUSBID "VID:PID"
    EndSection

## Configuration

The Xorg driver can be temporarily configured with `xsetwacom`, see xsetwacom(1). Changes are lost after X server restarts or replugging your tablet.

List the available devices:

    $ xsetwacom list devices

    Wacom Bamboo 16FG 4x5 Finger touch	id: 12	type: TOUCH
    Wacom Bamboo 16FG 4x5 Finger pad	id: 13	type: PAD
    Wacom Bamboo 16FG 4x5 Pen stylus	id: 17	type: STYLUS
    Wacom Bamboo 16FG 4x5 Pen eraser	id: 18	type: ERASER

For the `get` and `set` commands, devices can be specified by name or id. Scripts should use names because ids can change after X server restarts or replugging.

### Remapping buttons

The X driver lets you remap the buttons on tablets and pens. Buttons are identified by numbers. Tablet buttons start at 1, pen buttons start at 2 (1 is the tip contact event). By default the X driver maps button M to mouse button M. Because X uses buttons 4-7 as the four scrolling directions, physical buttons 4 and higher are mapped to mouse buttons 8 and higher by default. While xorg.conf uses the actual button numbers and only lets you map to mouse buttons, xsetwacom uses the translated mouse button numbers and allows mapping to multiple keycodes (but not keysyms).

If you have not yet remapped your buttons you can easily identify their ids with xorg-xev, by running the following command, placing the mouse cursor on the created window and pressing a button:

    $ xev -event button

    Outer window is 0x1a00001, inner window is 0x1a00002

    ButtonPress event, serial 25, synthetic NO, window 0x1a00001,
        root 0x2a0, subw 0x0, time 3390669, (404,422), root:(1047,444),
        state 0x0, button 8, same_screen YES

In this case the button number for xsetwacom is 8 and the actual button number for xorg.conf is 4.

Alternatively, if you want an overview of your tablet's button layout you can look at your tablet's layout SVG. Firstly, find out the filename with a recursive grep search for the tablet name reported by `xsetwacom list devices`:

    $ grep -rl 'Wacom Bamboo 16FG 4x5' /usr/share/libwacom/*.tablet

    /usr/share/libwacom/bamboo-16fg-s-t.tablet

In this case the respective layout SVG is `/usr/share/libwacom/layouts/bamboo-16fg-s-t.svg`. The letters in the SVG correspond to the button numbers: A=1, B=2, C=3, ...

#### Mapping pad buttons to function keys

If you want to bind your tablet buttons to different shortcuts in different applications, you may want to map your tablet buttons to function keys because applications generally do not let you bind keyboard shortcuts to mouse buttons.

Firstly, map the pad buttons to mouse buttons 11 and higher so that you can distinguish them from regular mouse buttons. For example:

    xsetwacom set pad Button 1 11
    xsetwacom set pad Button 2 12
    ...

Then map the mouse buttons to the function keys. This can be done with xbindkeys and xdotool by adding an entry like the following for every pad to your `~/.xbindkeysrc`:

    "xdotool key F21"
      b:11

    "xdotool key F22"
      b:12
    ...

#### The syntax

The syntax of `xsetwacom` is flexible but not very well documented. The general mapping syntax (extracted from the source code) for xsetwacom 0.17.0 is the following.

     KEYWORD [ARGS...] [KEYWORD [ARGS...] ...]

     KEYWORD + ARGS:
       key [+,-]KEY [[+,-]KEY ...]  where +:key down, -:key up, no prefix:down and up
       button BUTTON [BUTTON ...]   (1=left,2=middle,3=right mouse button, 4/5 scroll mouse wheel)
       modetoggle                   toggle absolute/relative tablet mode
       displaytoggle                toggle cursor movement among all displays which include individual screens
                                    plus the whole desktop for the selected tool if it is not a pad.
                                    When the tool is a pad, the function applies to all tools that are asssociated
                                    with the tablet

     BUTTON: button ID as integer number

     KEY: MODIFIER, SPECIALKEY or ASCIIKEY
     MODIFIER: (each can be prefix with an l or an r for the left/right modifier (no prefix = left)
        ctrl=ctl=control, meta, alt, shift, super, hyper
     SPECIALKEY: f1-f35, esc=Esc, up,down,left,right, backspace=Backspace, tab, PgUp,PgDn
     ASCIIKEY: (usual characters the key produces, e.g. a,b,c,1,2,3 etc.)

#### Some examples

     $ xsetwacom set pad Button 1 3 # right mouse button
     $ xsetwacom set pad Button 1 "key +ctrl z -ctrl"
     $ xsetwacom get pad Button 1
     key +Control_L +z -z -Control_L
     $ xsetwacom set pad Button 1 "key +shift button 1 key -shift"

Even little macros are possible:

     $ xsetwacom set pad Button 1 "key +shift h -shift e l l o"

#### Execute custom commands

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Duplicates Xbindkeys. There are alternatives to xbindkeys. (Discuss in Talk:Wacom tablet#)

Mapping custom commands to the buttons is a little bit tricky but actually very simple. First, install xbindkeys.

To get well defined button codes add the following to your permanent configuration file, e.g. `/etc/X11/xorg.conf.d/52-wacom-options.conf` in the InputClass section of your pad device. Map the tablet's buttons to some unused button ids.

     # Setting up buttons (preferably choose the correct button order, so the topmost key is mapped to 10 and so on)
     Option "Button1" "10"
     Option "Button2" "11"
     Option "Button3" "12"
     Option "Button4" "13"

Note: In some cases (e.g. for the "Wacom Co., Ltd CTH-490 [Intuos Art/Photo/Comic (S)]" tablet) it is necessary to add `MatchDevicePath "/dev/input/event*"` to the `InputClass` section in order to make it work.

Then restart your Xorg server and verify the buttons using `xev` or `xbindkeys -mk`.

Now set up your xbindkeys configuration, if you do not already have one you might want to create a default configuration

     $ xbindkeys --defaults > ~/.xbindkeysrc

Then add your custom key mapping to `~/.xbindkeysrc`, for example

     "firefox"
         m:0x10 + b:10   (mouse)
     "xterm"
         m:0x10 + b:11   (mouse)
     "xdotool key ctrl-z"
         m:0x10 + b:12   (mouse)
     "send-notify Test "No need for escaping the quotes""
         m:0x10 + b:13   (mouse)

### Adjusting aspect ratios

Drawing areas of tablets are generally more square than the usual widescreen display with a 16:9 aspect ratio, leading to a slight vertical compression of your input. To resolve such an aspect ratio mismatch you need to compromise by either reducing the drawing area height (called Force Proportions on Windows) or reducing the screen area width. The former wastes drawing area and the latter prevents you from reaching the right edge of your screen with your Stylus. It is probably still a compromise worth to be made because it prevents your strokes from being skewed.

Find out your tablet's resolution by running:

    $ xsetwacom get stylus Area

#### Reducing the drawing area height

Run:

    $ xsetwacom set stylus Area 0 0 tablet_width height

where height is tablet_width * screen_height / screen_width.

The tablet resolution can be reset back to the default using:

    $ xsetwacom set stylus ResetArea

#### Reducing the screen area width

Run:

    $ xsetwacom set stylus MapToOutput WIDTHxSCREEN_HEIGHT+0+0

where WIDTH is screen_height * tablet_width / tablet_height.

### Pressure curve

Use the Wacom Pressure Curve and Threshold Graph to find P1=red (eg. 50,0) and P2=purple (eg. 100,80) of your desired curve. The x-axis is the input pressure you apply to the pen; the y-axis is the output pressure the application is given.

You can change the pressure curve with:

    $ xsetwacom set stylus PressureCurve x1 y1 x2 y2

### Permanent configuration

Note: Because xorg.conf lacks options xsetwacom has and only lets you map buttons to mouse buttons, you may want to autostart a script with xsetwacom commands instead of using xorg.conf.

Configuration can be made persistent in xorg.conf and xorg.conf(5).

You firstly need to find out your product names in the Xorg log file:

    $ grep "Using input driver 'wacom'" ~/.local/share/xorg/Xorg.0.log

    [ 25059.351] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen'
    [ 25059.409] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pad'
    [ 25059.428] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen eraser'
    [ 25059.429] (II) Using input driver 'wacom' for 'Wacom Intuos BT M Pen cursor'

For these product names the sections would be:

    /etc/X11/xorg.conf.d/72-wacom-options.conf

    Section "InputClass"
    	Identifier "WACOM OPTIONS pen"
    	MatchDriver "wacom"
    	MatchProduct "Pen"
    	NoMatchProduct "eraser"
    	NoMatchProduct "cursor"
    EndSection

    Section "InputClass"
    	Identifier "WACOM OPTIONS pad"
    	MatchDriver "wacom"
    	MatchProduct "Pad"
    EndSection

    Section "InputClass"
    	Identifier "WACOM OPTIONS eraser"
    	MatchDriver "wacom"
    	MatchProduct "eraser"
    EndSection

    Section "InputClass"
    	Identifier "WACOM OPTIONS cursor"
    	MatchDriver "wacom"
    	MatchProduct "cursor"
    EndSection

- The options described in wacom(4) can be added to sections.
- The product name needs to contain the `MatchProduct` value in order for a section to match. Matching of parent devices requires negative matching.
- The `Identifier` can be arbitrary and is printed into the Xorg log when the section matches. Giving your identifiers a common prefix lets you easily grep for what sections were matched:

      grep "WACOM OPT" /var/log/Xorg.0.log

- Configuration changes require a X server restart to take effect.

Note: xorg.conf options can differ from xsetwacom options.

xsetwacom can try to print all current settings of a device in xorg.conf format with:

    $ xsetwacom get device all

#### Letting libinput take control of the touchpad

As the wacom touchpad normally does not support inverted scrolling it can be desirable to use libinput to take control of the touchpad.

To do this create `/etc/X11/xorg.conf.d/90-libinput-wacom.conf` with the following contents:

    Section "InputClass"
        Identifier "libinput Wacom touchpad override class"
        MatchUSBID "056a:*"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchpad "true"
        Driver "libinput"
    EndSection

Reboot afterwards.

See [1] for a more detailed explanation.

### Running xsetwacom via udev and systemd service

In order to configure buttons but also tune other parameters such as ratio via `xsetwacom` combining udev with custom systemd unit file is probably the best approach.

First install usbutils and run `lsusb` to find the vendor ID of your tablet (`056a` in the example below).

Then create a udev rule to start a systemd unit when the tablet is connected (replace the vendor ID accordingly):

    /etc/udev/rules.d/99-wacom.rules

    ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"

Prepare the systemd unit file. It is connected to the special `graphical-session.target` which should be active whenever any graphical session is active, see systemd.special(7) § Special Passive User Units.

    ~/.config/systemd/user/wacom.service

    [Unit]
    Description=Configure my Wacom tablet
    After=graphical-session.target
    PartOf=graphical-session.target

    [Service]
    Type=oneshot
    ExecStart=/path/to/wacom-config.sh

    [Install]
    WantedBy=graphical-session.target

Prepare the script for tablet configuration. When started from the systemd user service, the needed variables `DISPLAY` and `XAUTHORITY` should already be set. See systemd/User#DISPLAY and XAUTHORITY for details.

Note:

- The Wacom input devices may not be ready at the time udev invokes the systemd service and the script is started. A workaround is to add `sleep 1` at the beginning of your script (more might be needed, e.g. up to 10s for a Cintiq with integrated display due to its startup time). If it is still not working, check [2] for possible solutions.
- The button IDs might change each time a tablet is plugged in. Hence, the script should not hardcode the IDs, but parse the correct IDs from the `xsetwacom list devices` output. See [3] for details.

    wacom-config.sh

    #!/bin/bash

    for i in $(seq 10); do
        if xsetwacom list devices | grep -q Wacom; then
            break
        fi
        sleep 1
    done

    list=$(xsetwacom list devices)
    pad=$(echo "${list}" | awk '/pad/{print $7}')
    stylus=$(echo "${list}" | xsetwacom list devices | awk '/stylus/{print $7}')

    if [ -z "${pad}" ]; then
        exit 0
    fi

    # configure the buttons on ${stylus} with your xsetwacom commands...
    #xsetwacom set "${stylus}" Button 2 11
    #...

Finally start/enable the service `wacom.service` with the `--user` flag.

### LEDs

See the sysfs-driver-wacom documentation. To make changes without requiring root permissions you will likely want to create a udev rule like so:

    /etc/udev/rules.d/99-wacom.rules

    # Give the users group permissions to set Wacom device LEDs.
    ACTION=="add", SUBSYSTEM=="hid", DRIVERS=="wacom", RUN+="/usr/bin/sh -c 'chown :users /sys/%p/wacom_led/*'"

Setting the Intuos OLEDs can be done using i4oledAUR from the AUR.

### Multiscreen setup

#### TwinView setup

If you are going to use two monitors the aspect ratio while using the tablet might feel unnatural. In order to fix this you need to add:

    Option "TwinView" "horizontal"

to all of your Wacom-InputDevice entries in the xorg.conf file. You may read more about that here.

##### Temporary TwinView setup

For temporary mapping of a Wacom device to a single display while preserving the aspect ratio, this script may be used. This will letter-box the surface area of the device as required to ensure the input is not stretched on the display. This script may be executed in your `.xinitrc` file for it to automatically run.

#### xrandr setup

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Wording can be improved, personal writing style. (Discuss in Talk:Wacom tablet#)

xrandr sets two monitors as one big screen, mapping the tablet to the whole virtual screen and deforming aspect ratio. For a solution see this thread: Arch Linux forum. Note there are GUI to interact with this, like DE independent ptxconf-gitAUR, or specific panel in GNOME desktop settings.

If you just want to map the tablet to one of your screens, first find out what the screens are called:

    $ xrandr
    Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
    HDMI-0 disconnected (normal left inverted right x axis y axis)
    DVI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
      1920x1080      60.0*+
      1680x1050      60.0
      ...
    VGA-0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 477mm x 268mm
      1920x1080      60.0*+
      1680x1050      60.0
      ...

Then you need to know what is the ID of your tablet.

    $ xsetwacom list devices
    WALTOP International Corp. Slim Tablet stylus   id: 12  type: STYLUS

In my case I want to map the tablet (ID: 12) to the screen on the right, which is VGA-0. I can do that with this command

    $ xsetwacom set 12 MapToOutput VGA-0

This should work immediately, no root necessary.

This method has the flaw that rebooting or disconnecting your tablet might change the tablet ID, luckily you can set it by referencing the tablet name directly, get the stylus name by launching `xsetwacom` for example you will get:

    Wacom Intuos S Pen stylus       	id: 16	type: STYLUS
    ...

Then to set the output to monitor 0:

    $ xsetwacom set Wacom Intuos S Pen stylus MapToOutput VGA-0

If this does not work with the Nvidia binary drivers, try using HEAD-0, HEAD-1, ... according to the monitor number.

If xsetwacom replies with "Unable to find an output ..." an X11 geometry string of the form `WIDTHxHEIGHT+X+Y` can be specified instead of the screen identifier. In this example

    $ xsetwacom set 12 MapToOutput 1920x1080+1920+0

should also map the tablet to the screen on the right.

Alternatively, you can use this bash script to quickly map the tablet to one of your screens (or the entire desktop) and fix the aspect ratio.

In case xsetwacom does not work, you can try xinput.

First, you need to find your tablet's ID.

    $ xinput list

In my case, the output is:

    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ Wacom Intuos PT S 2 Finger                id=11   [slave  pointer  (2)]
    ⎜   ↳ Wacom Intuos PT S 2 Pad                   id=12   [slave  pointer  (2)]
    ⎜   ↳ USB Keyboard                              id=14   [slave  pointer  (2)]
    ⎜   ↳ SynPS/2 Synaptics TouchPad                id=16   [slave  pointer  (2)]
    ⎜   ↳ TPPS/2 IBM TrackPoint                     id=17   [slave  pointer  (2)]
    ⎜   ↳ SteelSeries Kinzu V2 Gaming Mouse         id=9    [slave  pointer  (2)]
    ⎜   ↳ Wacom Intuos PT S 2 Pen Pen (0x6281780c)  id=20   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Power Button                              id=6    [slave  keyboard (3)]
        ↳ Video Bus                                 id=7    [slave  keyboard (3)]
        ↳ Sleep Button                              id=8    [slave  keyboard (3)]
        ↳ Wacom Intuos PT S 2 Pen                   id=10   [slave  keyboard (3)]
        ↳ USB Keyboard                              id=13   [slave  keyboard (3)]
        ↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)]
        ↳ ThinkPad Extra Buttons                    id=18   [slave  keyboard (3)]
        ↳ USB Keyboard                              id=19   [slave  keyboard (3)]

This mean, my tablet's ID is 20. Now we map it with VGA-0 screen:

    $ xinput map-to-output 20 VGA-0

##### Ptxconf

ptxconf-gitAUR is a GUI to configure your tablet for multiscreen. When launched, it is added to the desktop environment systray. It automatically detects connected displays, their respective positions on the screen, and buttons allow to link an input device with an output display. It works with KDE Plasma, LXQt and Xfce, and it manages any type of graphics tablets, not only Wacom, as Gnome Wacom Tablet configurator (See #Non-Wacom tablets for a workaround). On some tablets, the stylus needs to be first moved near the screen to let libinput detect it before Ptxconf can show it.

Use the command `ptxconf` to start the program. Configure Autostarting to let it start automatically.

## Application-specific configuration

### Alchemy

AlchemyAUR (and Alchemy-gitAUR) needs the JPen library to manage stylus pressure. See Digimend documentation about Alchemy.

### Blender

To enable pad buttons and extra pen buttons in Blender, you can create a xsetwacom wrapper to temporarily remap buttons for your blender session.

Provided example (for Bamboo fun) adapted to Sculpt mode: blender_sculpt.sh[dead link 2020-04-03 ⓘ]

It remaps:

- Left tablet buttons to `Shift` and `Ctrl` (pan/tilt/zoom/smooth/invert)
- Right tablet buttons to `F` (brush size/strenght) and `Ctrl-z` (undo)
- Top pen button ton `m` (mask control)

### DrawPile

drawpileAUR is a drawing whiteboard (network collaborative drawing tool). It manages pressure level on its drawing tools. In the "Freehand" box, a brush icon at the right of each parameter needs to be activated to have pressure management on this parameter. There is only a general curve on the bottom right of the window ("Input" box), that can be applied to stylus, distance and velocity.

### GIMP

To enable proper usage and pressure sensitive painting in GIMP, just go to Edit > Input Devices. Now for each of your eraser, stylus, and cursor devices, set the mode to Screen, and remember to save.

- Please take note that if present, the pad device should be kept disabled as I do not think GIMP supports such things. Alternatively, to use such features of your tablet you should map them to keyboard commands with a program such as Wacom ExpressKeys.
- You should also take note that the tool selected for the stylus is independent to that of the eraser. This can actually be quite handy, as you can have the eraser set to be used as any tool you like.

For more information checkout the Setting up GIMP section of GIMP Talk - Community - Install Guide: Getting Wacom Drawing Tablets To Work In Gimp.

If the above was not enough, you may want to try setting up the tablet's stylus (and eraser) as a second mouse pointer (separating it from your mouse) by using the `xinput create-master` and `xinput reattach` commands. It can help when GIMP does not start painting even if the stylus touches the tablet.

### Inkscape

Pressure sensitivity in Inkscape is enabled the same way as in GIMP. Go to Edit > Input Devices.... Now for each of your eraser, stylus, and cursor devices, set the mode to Screen, and remember to save.

### MyPaint

mypaint (extra mypaint-brushes, mypaint-brushes1, note that these brushes are also used on other applications using libmypaint) is a general bitmap drawing application. Its advanced brush settings have been adopted by GIMP, Krita, OpenToonz, and few others and is in integration process in Pencil2D. It is a very light tool that can be used in low-end computers.

In MyPaint, there are general settings about tablets and per brush specific parameters (you can set your own brushes).

General settings are in menu Edit > Edit Preferences.

- The "Pressure" tab is for global pressure mapping.
- The "Devices" tab displays the list of detected input devices with little general information. Each one can be assigned to specific tasks by clicking on their parameter in the "Use for..." (Any Task, Ignore, Non-painting tasks, Navigation only) and "Scroll..." (zoom, pan) columns.
- The "Buttons" tab allows to assign buttons to specific functions.

Brush settings can be accessed by the brush context menu (right click on a tool). You can duplicate an existing tool before making modification, and so, keep the tool with its default preset ("clone" in the context menu).

- To edit brush settings, simply use the Edit Brush settings from the context menu on brush. There are several settings, see the MyPaint documentation for a full description or play with them to discover what they do.

### OpenToonz

opentoonz is a professional 2D animation tool, first developed by Studio Ghibli, and used by Ghibli and Folimage among others.

Stylus pressure is managed by default on default tools. There is a checkbox Pressure at the second line, at top right, that can be unchecked to disable pressure management. Several presets can be selected by the menu button at right of Preset, and added or deleted with the +/- buttons.

libmypaint brushes can be chosen in the Basics mode (upper right tabs), and then in the column between the drawing area and the exposure sheet: at the "[LEVEL]: Palette" button, click on "Raster" tab to view the brushes. The brushes can be edited with MyPaint and used in OpenToonz.

### Pencil2D

pencil2d is a light 2D animation tool. Each tool that can use the pressure parameter (Pencil, Eraser, Pen and Brush) has a checkbox called "Pressure" that is checked by default to use stylus pressure parameter.

There is also a git version, pencil2d-mypaint-gitAUR (already a very stable branch), that contains the libMyPaint engine and Deevad set of MyPaint Brushes. A subset of the brush settings with pressure management can be set by clicking on the brush and choosing edit.

### Krita

If your tablet does not draw in Krita (clicks/pressure are not registered) but works in the brush selection dialog which has a small test area, try putting Krita in full-screen or canvas-only mode.

Krita only requires that Qt is able to use your tablet to function properly. If your tablet is not working in Krita, then make sure to check it is working in Qt first. The effect of tablet pressure can then be tweaked in the painttop configuration, for example by selecting opacity, then selecting pressure from the drop down and adjusting the curve to your preference.

October 2020 There is currently a known bug related to Qt 5.15.1 and Krita with all the tablets, to access to the "Pop-up Pallet" in Krita with stylus button. You can use right mouse button on canvas or temporary use Krita appimage from the official Krita website until the updated version of Qt.

### VirtualBox

First, make sure that your tablet works well under Arch. Then, download and install the last driver from Wacom website on the guest OS. Shutdown the virtual machine, go to Settings > USB. Select Add Filter From Device and select your tablet (e.g. WACOM CTE-440-U V4.0-3 [0403]). Select Edit Filter, and change the last item Remote to Any.

## Troubleshooting

Newer tablets' drivers might not be in the kernel yet, and additional manipulations might be needed. A notable example is the newer Intuos line of tablets (Draw/Comic/Photo).

### Unknown device_type

If your tablet does not get recognized by xsetwacom and dmesg complains about an unknown device_type, then you need to install a patched version of input-wacom.

Download and install the for-4.4 branch from SourceForge. Your device should be recognized after you run

     # rmmod wacom
     # insmod /lib/modules/YOUR_KERNEL/kernel/drivers/hid/wacom.ko.gz

### Tablet recognized but xsetwacom and similar tools do not display it

Your logs indicate that the correct driver is selected, and the tablet works. However, when running `xsetwacom list devices` or use similar tools that depend on the correct driver, you get an empty list.

A reason might be the execution order of your xorg configuration. `/usr/share/X11/xorg.conf.d` gets executed first, then `/etc/X11/xorg.conf.d`. The package xf86-input-wacom contains the file `/usr/share/X11/xorg.conf.d/70-wacom.conf`. If there is a catchall for tablets, executed after this file, the previously selected `wacom` driver will be overwritten with a generic one that does not work with xsetwacom et. al.

To make sure, check the rules contained in the files executed after `/usr/share/X11/xorg.conf.d/70-wacom.conf` for anything that looks like graphics tablets.

### Manual setup

A manual configuration is done in `/etc/X11/xorg.conf` or in a separate file in the `/etc/X11/xorg.conf.d/` directory. The Wacom tablet device is accessed using a input event interface in `/dev/input/` which is provided by the kernel driver. The interface number `event??` is likely to change when unplugging and replugging into the same or especially a different USB port. Therefore it is wise to not refer to the device using its concrete `event??` interface (static configuration) but by letting udev dynamically create a symbolic link to the correct `event` file (dynamic configuration).

#### USB-devices

After (re-)plugging in your USB-tablet (or at least after rebooting) some symbolic links should appear in `/dev/input` referring to your tablet device.

     $ ls /dev/input/wacom*
     /dev/input/wacom  /dev/input/wacom-stylus  /dev/input/wacom-touch

If not, your device is likely to be not yet included in the udev configuration from wacom-udev which resides in `/usr/lib/udev/rules.d/wacom.rules`. Copy the file to `/etc/udev/rules.d/wacom.rules` and modify it there.

Add your device to the file by duplicating some line of another device and adapting idVendor,idProduct and the symlink name to your device. The two id's can be determined using

    $ lsusb | grep -i wacom
    Bus 002 Device 007: ID 056a:0062 Wacom Co., Ltd

In this example idVendor is 056a and idProduct 0062. In case you have device with touch (e.g. Bamboo Pen&Touch) you might need to add a second line for the touch input interface. For details check the linuxwacom wiki Fixed device files with udev.

Save the file and reload udev's configuration profile using the command udevadm control --reload-rules Check again the content of /dev/input to make sure that the wacom symlinks appeared. Note that you may need to plug-in the tablet again for the device to appear.

The files of further interest for the Xorg configuration are `/dev/input/wacom` and for a touch-device also `/dev/input/wacom_touch`.

#### Static setup

Usually it is recommended to rely on Xorg's auto-detection or to use a dynamic setup. However for an internal tablet device one might consider a static Xorg setup in case autodetection does not work. A static Xorg setup is usually not able to recognize your Wacom tablet when it is connected to a different USB port or even after unplugging and replugging it into the same port, and as such it should be considered as deprecated.

If you insist in using a static setup just refer to your tablet in the Xorg configuration in the next section using the correct `/dev/input/event??` files as one can find out by looking into `/proc/bus/input/devices`.

#### Xorg configuration

In either case, dynamic or static setup you got now one or two files in `/dev/input/` which refer to the correct input event devices of your tablet. All that is left to do is add the relevant information to `/etc/X11/xorg.conf`, or a dedicated file under `/etc/X11/xorg.conf.d/`. The exact configuration depends on your tablet's features of course. `xsetwacom list devices` might give helpful information on what InputDevice sections are needed for your tablet.

An example configuration for a Volito2 might look like this

    Section "InputDevice"
        Driver        "wacom"
        Identifier    "stylus"
        Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
        Option        "Type"         "stylus"
        Option        "USB"          "on"                 # USB ONLY
        Option        "Mode"         "Relative"           # other option: "Absolute"
        Option        "Vendor"       "WACOM"
        Option        "tilt"         "on"  # add this if your tablet supports tilt
        Option        "Threshold"    "5"   # the official linuxwacom howto advises this line
    EndSection
    Section "InputDevice"
        Driver        "wacom"
        Identifier    "eraser"
        Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
        Option        "Type"         "eraser"
        Option        "USB"          "on"                  # USB ONLY
        Option        "Mode"         "Relative"            # other option: "Absolute"
        Option        "Vendor"       "WACOM"
        Option        "tilt"         "on"  # add this if your tablet supports tilt
        Option        "Threshold"    "5"   # the official linuxwacom howto advises this line
    EndSection
    Section "InputDevice"
        Driver        "wacom"
        Identifier    "cursor"
        Option        "Device"       "/dev/input/wacom"   # or the corresponding event?? for a static setup
        Option        "Type"         "cursor"
        Option        "USB"          "on"                  # USB ONLY
        Option        "Mode"         "Relative"            # other option: "Absolute"
        Option        "Vendor"       "WACOM"
    EndSection

Make sure that you also change the path (`"Device"`) to your mouse, as it will be `/dev/input/mouse_udev` now.

    Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "mouse"
        Option      "CorePointer"
        Option      "Device"             "/dev/input/mouse_udev"
        Option      "SendCoreEvents"     "true"
        Option      "Protocol"           "IMPS/2"
        Option      "ZAxisMapping"       "4 5"
        Option      "Buttons"            "5"
    EndSection

Add this to the ServerLayout section

    InputDevice "cursor" "SendCoreEvents"
    InputDevice "stylus" "SendCoreEvents"
    InputDevice "eraser" "SendCoreEvents"

And finally make sure to update the identifier of your mouse in the ServerLayout section – as mine went from

    InputDevice    "Mouse0" "CorePointer"

to

    InputDevice    "Mouse1" "CorePointer"

### Mouse Moving Erratically due to Proximity Sensor

You can disable the mouse jumping due to a proximity sensor detecting a non-existing stylus. You can find your device with xinput --list, and after seeing the Stylus, disable it with: xinput disable "Your Device Name". This only works if you are not currently using a stylus.

## See also

- List of applications/Documents#Stylus note-taking
- input-wacom Wiki
- xf86-input-wacom Wiki (out of date)
- GIMP Talk - Community - Install Guide: Getting Wacom Drawing Tablets To Work In Gimp
- Ubuntu Help: Wacom
- Ubuntu Forums - Install a LinuxWacom Kernel Driver for Tablet PC's
- Wacom-GUI

Category:

- Input devices

Hidden categories:

- Pages or sections flagged with Template:Move
- Pages or sections flagged with Template:Style
- Pages with dead links