This guide was started for USB based Wacom tablets, so much of the info in here focuses on that. 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.
- 1 Installation
- 2 Configuration
- 2.1 General concepts
- 2.1.1 Temporary configuration
- 2.1.2 Permanent configuration
- 2.1.3 Changing orientation
- 2.1.4 Remapping Buttons
- 2.1.5 LEDs
- 2.1.6 TwinView Setup
- 2.1.7 Xrandr Setup
- 2.2 Pressure curve
- 2.3 Adjusting aspect ratios
- 2.4 Using kcm-wacomtablet
- 2.1 General concepts
- 3 Application-specific configuration
- 4 Troubleshooting
- 5 References
- Check if the kernel recognizes your tablet
In case of a USB tablet, plug it in and check
dmesg | grep -i wacomor
When your tablet isn't recognized but supported by a more recent driver than the one in the kernel try to install AUR.
- Install the Wacom drivers
Install the package. If it doesn't work try the less stable AUR[broken link: package not found].
Newer versions of X should be able to automatically detect and configure your device. Before going any further, restart X so the new udev rules take effect. Test if your device was recognized completely (i.e., that both pen and eraser work, if applicable), by issuing command
$ xsetwacom list devices
which should detect all devices with type, for example
Wacom Bamboo 2FG 4x5 Pen stylus id: 8 type: STYLUS Wacom Bamboo 2FG 4x5 Pen eraser id: 9 type: ERASER Wacom Bamboo 2FG 4x5 Finger touch id: 13 type: TOUCH Wacom Bamboo 2FG 4x5 Finger pad id: 14 type: PAD
You can also test it by openingor and checking the extended input devices section, or whatever tablet-related configuration is supported by the software of your choice.
For this to work you do not need any
xorg.conf file, any configurations are made in files in the
If everything is working you can skip the manual configuration and proceed to the configuration section to learn how to further customize your tablet.
With the arrival of Xorg 1.8 support for HAL was dropped in favor of udev which might break auto-detection for some tablets as fitting udev rules might not exist yet, so you may need to write your own.
The xf86-input-wacom driver was designed to work with the Xorg server so there may be problems if you're running your desktop environment in Wayland (The default for Gnome).
A manual configuration is done in
/etc/X11/xorg.conf or in a separate file in the
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).
Dynamic with udev
xorg.confconfiguration if you are using the wacom-udev package from AUR.
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/10-wacom.rules. It is a good idea to copy the file e.g. to
10-my-wacom.rules before modifying it, else it might be reverted by a package upgrade.
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
The broken link: archived in aur-mirror] should also include support for serial devices. Users of serial tablets might be also interested in the inputattach tool from package. The inputattach command allows to bind serial device into /dev/input tree, for example with:AUR[
# inputattach --w8001 /dev/ttyS0
See man inputattach for help about available options.
As for USB devices one should end up with a file
/dev/input/wacom and proceed with the Xorg configuration.
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
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
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
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"
InputDevice "Mouse1" "CorePointer"
The configuration can be done in two ways temporary using the
xsetwacom tool, which is included in xf86-input-wacom or permanent in
xorg.conf or better in a extra file in
The possible options are identical so it is recommended to first use
xsetwacom for testing and later add the final config to the Xorg configuration files.
For the beginning it is a good idea to inspect the default configuration and all possible options using the following commands.
$ xsetwacom list devices # list the available devices for the get/set commands 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 $ xsetwacom get "Wacom Bamboo 16FG 4x5" all # using the device name $ xsetwacom get 17 all # or equivalently use the device id $ xsetwacom list parameters # to get an explanation of the Options $ man wacom # get even more details
Caution, do not use the device id when writing shell scripts to set some options as the ids might change after an hotplug.
Options can be changed with the
set command. Some useful examples are
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger touch" ScrollDistance 50 # change scrolling speed $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger touch" Gesture off # disable multitouch gestures $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger touch" Touch off # disable touch
To make a permanent configuration the preferred way for Xorg>1.8 is to create a new file in
52-wacom-options.conf with the following content.
Section "InputClass" Identifier "Wacom Bamboo stylus options" MatchDriver "wacom" MatchProduct "Pen" # Apply custom Options to this device below. Option "Rotate" "none" Option "RawSample" "20" Option "PressCurve" "0,10,90,100" EndSection Section "InputClass" Identifier "Wacom Bamboo eraser options" MatchDriver "wacom" MatchProduct "eraser" # Apply custom Options to this device below. Option "Rotate" "none" Option "RawSample" "20" Option "PressCurve" "5,0,100,95" EndSection Section "InputClass" Identifier "Wacom Bamboo touch options" MatchDriver "wacom" MatchProduct "Finger" # Apply custom Options to this device below. Option "Rotate" "none" Option "ScrollDistance" "18" Option "TapTime" "220" EndSection Section "InputClass" Identifier "Wacom Bamboo pad options" MatchDriver "wacom" MatchProduct "pad" # Apply custom Options to this device below. Option "Rotate" "none" # Setting up buttons Option "Button1" "1" Option "Button2" "2" Option "Button3" "3" Option "Button4" "0" EndSection
The identifiers can be set arbitrarily. The option names are (except for the buttons) identical to the ones listed by
xsetwacom list parameters and especially also in . As noted in #Remapping Buttons the button ids seem to be different than the ones for
xsetwacom -x get.
If you want to use your tablet in a different orientation you have to tell this to the driver, else the movements do not cause the expected results. This is done by setting the Rotate option for all devices. Possible orientations are none,cw,ccw and half. A quick way is e.g.
$ for i in 12 13 17 18; do xsetwacom set $i Rotate half; done # remember the ids might change when hotplugging
or use the following script like this
#!/bin/bash device="Wacom Bamboo 16FG 4x5" stylus="$device Pen stylus" eraser="$device Pen eraser" touch="$device Finger touch" pad="$device Finger pad" xsetwacom set "$stylus" Rotate $1 xsetwacom set "$eraser" Rotate $1 xsetwacom set "$touch" Rotate $1 xsetwacom set "$pad" Rotate $1
It is possible to remap the buttons with hotkeys.
- Check Simple web-based GUI for xsetwacom, supports bamboo small but more models may come.
Sometimes it needs some trial&error to find the correct button IDs. For me they even differ for
xsetwacom and the
xorg.conf configuration. Very helpful tools are
xbindkeys -mk. An easy way to proceed is to temporarily assign keystrokes to your tablet's buttons like this:
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 'key a' $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 2 'key b' $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 3 'key c' $ # and so on
Then fire up
xev from a terminal window, place your mouse cursor above the window and hit the buttons and write down the IDs.
$ xev | grep KeyPress -A 5
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.)
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 3 # right mouse button $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key +ctrl z -ctrl" $ xsetwacom get "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 key +Control_L +z -z -Control_L $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key +shift button 1 key -shift"
even little macros are possible
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key +shift h -shift e l l o"
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key a b c" # press button 1 -> abc $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key d" # press button 1 -> dbc WRONG!
A simple workaround is to reset the mapping by mapping to "":
$ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "" # to reset the mapping $ xsetwacom set "Wacom Bamboo 16FG 4x5 Finger pad" Button 1 "key d" # press button 1 -> d
xsetwacomcommands from a udev rule, you might find that it will not work, as the wacom input devices will not be ready at the time. A workaround is to add
sleep 1at the beginning of your script.
Execute custom commands
Mapping custom commands to the buttons is a little bit tricky but actually very simple. First, install.
To get well defined button codes add the following to your permanent configuration file, e.g.
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"
Then restart your Xorg server and verify the buttons using
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)
# 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 usingAUR from the AUR.
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
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 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: archlinux forum.
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 immediately work, no root necessary.
Should this fail when using the nvidia binary driver, using HEAD-0, HEAD-1 and so on to refer to the monitors may work.
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 doesn't 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
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
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
$ xsetwacom set stylus Area 0 0 tablet_width height
- tablet_width is the width of the tablet resolution, and
- 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
$ xsetwacom set stylus MapToOutput WIDTHxHEIGHT+0+0
- WIDTH is
screen_height * tablet_width / tablet_height, and
- HEIGHT is the height of the screen resolution
The KDE configuration module broken link: package not found]) supports easy configuration of the tablet through a graphical user interface, allowing for different profiles and proper hotplugging support. It will auto-detect the type of your tablet, and load your configuration profile automatically when the tablet is plugged in.(or if you're on Plasma 5, AUR[
To enable pad buttons and extra pen buttons in Blender, you can create a xsetwacom wrapper to temporarily remap buttons for your blender session.
- Left tablet buttons to Shift and Control (pan/tilt/zoom/smooth/invert)
- Right tablet buttons to F (brush size/strenght) and Control-z (undo)
- Top pen button ton m (mask control)
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.
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.
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.
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 ). Select Edit Filter, and change the last item Remote to Any.
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).
If your tablet does not get recognized by
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
The package 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.