[[Wikipedia:Wacom (company)|Wacom]] does not officially support Linux. Linux support is provided by the [https://linuxwacom.github.io/ Linux Wacom Project]. Supported devices are listed on the [https://github.com/linuxwacom/input-wacom/wiki/Device-IDs Device IDs] page with a version number in the ''input-wacom'' column.

[[Wikipedia:Wacom (company)|Wacom]] does not officially support Linux. Linux support is provided by the [https://linuxwacom.github.io/ Linux Wacom Project]. Supported devices are listed on the [https://github.com/linuxwacom/input-wacom/wiki/Device-IDs Device IDs] page with a version number in the ''input-wacom'' column.

Line 15:

Line 14:

The command {{ic|xsetwacom list devices}} should now list some devices. If it does not, see [[#Manual setup]].

The command {{ic|xsetwacom list devices}} should now list some devices. If it does not, see [[#Manual setup]].

Support for the following Wacom tablets is provided via {{AUR|tuhi-git}}:

+

* Bamboo Spark

+

* Bamboo Slate

+

* Intuos Pro Paper

−

=== General concepts ===

+

Consult README for the details of initial configuration. For setups with more than one monitor you'll probably want to fix aspect ratio using {{ic|Coordinate Transformation Matrix}} as described at [https://github.com/linuxwacom/xf86-input-wacom/wiki/Dual-and-Multi-Monitor-Set-Up dual and multimonitor set up].

−

The configuration can be done in two ways temporary using the {{ic|xsetwacom}} tool, which is included in ''xf86-input-wacom'' or permanent in {{ic|xorg.conf}} or better in a extra file in {{ic|/etc/X11/xorg.conf.d}}. The possible options are identical so it is recommended to first use {{ic|xsetwacom}} for testing and later add the final config to the ''Xorg'' configuration files.

+

== Configuration ==

−

==== Temporary configuration ====

+

The Xorg driver can be temporarily configured with {{ic|xsetwacom}}, see {{man|1|xsetwacom}}. Changes are lost after X server restarts or replugging your tablet.

−

For the beginning it is a good idea to inspect the default configuration and all possible options using the following commands.

+

List the available devices:

−

$ xsetwacom list devices # list the available devices for the get/set commands

+

{{hc|$ xsetwacom list devices|

−

Wacom Bamboo 16FG 4x5 Finger touch id: 12 type: TOUCH

+

Wacom Bamboo 16FG 4x5 Finger touch id: 12 type: TOUCH

−

Wacom Bamboo 16FG 4x5 Finger pad id: 13 type: PAD

+

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 stylus id: 17 type: STYLUS

−

Wacom Bamboo 16FG 4x5 Pen eraser id: 18 type: ERASER

+

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.

+

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

−

Options can be changed with the {{ic|set}} command. Some useful examples are

{{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''.}}

{{Note|You can reset your temporary configuration at any time by unplugging and replugging in your tablet.}}

+

Configuration can be made persistent in [[xorg.conf]] and {{man|5|xorg.conf}}.

−

{{Note|There are some configurations that can only be set up dynamically with xsetwacom. In those cases it is possible to run a script that configures the device calling xsetwacom every time the device is plugged in. See [http://unix.stackexchange.com/a/290940/89955]. }}

To make a permanent configuration the preferred way for ''Xorg''>1.8 is to create a new file in {{ic|/etc/X11/xorg.conf.d}} e.g. {{ic|52-wacom-options.conf}} with the following content.

+

For these product names the sections would be:

−

{{hc|/etc/X11/xorg.conf.d/52-wacom-options.conf|

+

{{hc|/etc/X11/xorg.conf.d/72-wacom-options.conf|

Section "InputClass"

Section "InputClass"

−

Identifier "Wacom Bamboo stylus options"

+

Identifier "WACOM OPTIONS pen"

−

MatchDriver "wacom"

+

MatchDriver "wacom"

−

MatchProduct "Pen"

+

MatchProduct "Pen"

−

+

NoMatchProduct "eraser"

−

# Apply custom Options to this device below.

+

NoMatchProduct "cursor"

−

Option "Rotate" "none"

−

Option "RawSample" "20"

−

Option "PressCurve" "0,10,90,100"

EndSection

EndSection

Section "InputClass"

Section "InputClass"

−

Identifier "Wacom Bamboo eraser options"

+

Identifier "WACOM OPTIONS pad"

−

MatchDriver "wacom"

+

MatchDriver "wacom"

−

MatchProduct "eraser"

+

MatchProduct "Pad"

−

−

# Apply custom Options to this device below.

−

Option "Rotate" "none"

−

Option "RawSample" "20"

−

Option "PressCurve" "5,0,100,95"

EndSection

EndSection

Section "InputClass"

Section "InputClass"

−

Identifier "Wacom Bamboo touch options"

+

Identifier "WACOM OPTIONS eraser"

−

MatchDriver "wacom"

+

MatchDriver "wacom"

−

MatchProduct "Finger"

+

MatchProduct "eraser"

−

−

# Apply custom Options to this device below.

−

Option "Rotate" "none"

−

Option "ScrollDistance" "18"

−

Option "TapTime" "220"

EndSection

EndSection

Section "InputClass"

Section "InputClass"

−

Identifier "Wacom Bamboo pad options"

+

Identifier "WACOM OPTIONS cursor"

−

MatchDriver "wacom"

+

MatchDriver "wacom"

−

MatchProduct "pad"

+

MatchProduct "cursor"

−

−

# 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

EndSection

}}

}}

−

The identifiers can be set arbitrarily. The option names are (except for the buttons) identical to the ones listed by {{ic|xsetwacom list parameters}} and especially also in {{man|4|wacom}}. As noted in [[#Remapping Buttons]] the button ids seem to be different than the ones for {{ic|xsetwacom}}.

+

* The options described in {{man|4|wacom}} can be added to sections.

+

* The product name needs to contain the {{ic|MatchProduct}} value in order for a section to match. Matching of parent devices requires negative matching.

+

* The {{ic|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: {{bc|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.}}

−

{{Tip|''xsetwacom'' can display the output in xorg.conf format by using {{ic|xsetwacom -x get}}.}}

+

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

−

==== Changing orientation ====

+

$ xsetwacom get ''device'' all

−

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.

+

=== Remapping buttons ===

−

$ for i in 12 13 17 18; do xsetwacom set $i Rotate half; done # remember the ids might change when hotplugging

+

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 {{Pkg|xorg-xev}}, by running the following command, placing the mouse cursor on the created window and pressing a button:

+

+

{{hc|$ 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

+

}}

−

or use the following script like this {{ic|./wacomrot.sh half}}

+

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

−

{{hc|1=wacomrot.sh|2=

+

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 {{ic|xsetwacom list devices}}:

In this case the respective layout SVG is {{ic|/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, ...

−

It is possible to remap the buttons with hotkeys.

+

==== Mapping pad buttons to function keys ====

−

===== Finding out the button IDs =====

+

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.

−

Sometimes it needs some trial & error to find the correct button IDs. For me they even differ for {{ic|xsetwacom}} and the {{ic|xorg.conf}} configuration. Very helpful tools are {{ic|xev}} or {{ic|xbindkeys -mk}}. An easy way to proceed is to temporarily assign keystrokes to your tablet's buttons like this:

+

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 'key a'

+

xsetwacom set ''pad'' Button 1 11

−

$ xsetwacom set ''pad'' Button 2 'key b'

+

xsetwacom set ''pad'' Button 2 12

−

$ xsetwacom set ''pad'' Button 3 'key c'

+

...

−

Then fire up {{ic|xev}} from a terminal window, place your mouse cursor above the window and hit the buttons and write down the IDs.

+

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 {{ic|~/.xbindkeysrc}}:

−

$ xev | grep KeyPress -A 5

+

"xdotool key F21"

+

b:11

+

+

"xdotool key F22"

+

b:12

+

...

−

===== The syntax =====

+

==== The syntax ====

The syntax of {{ic|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.

The syntax of {{ic|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.

Line 168:

Line 160:

ASCIIKEY: (usual characters the key produces, e.g. a,b,c,1,2,3 etc.)

ASCIIKEY: (usual characters the key produces, e.g. a,b,c,1,2,3 etc.)

−

===== Some examples =====

+

==== Some examples ====

$ xsetwacom set ''pad'' Button 1 3 # right mouse button

$ xsetwacom set ''pad'' Button 1 3 # right mouse button

Line 180:

Line 172:

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

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

−

{{Note|There seems to be a bug in the ''xf86-input-wacom'' driver version 0.17.0, at least for my ''Wacom Bamboo Pen & Touch'', but I guess this holds in general. It causes the keystrokes not to be overwritten correctly.

+

{{Note|If you try to run a script with {{ic|xsetwacom}} commands 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 {{ic|sleep 1}} at the beginning of your script.}}

{{Note|If you try to run a script with {{ic|xsetwacom}} commands 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 {{ic|sleep 1}} at the beginning of your script.}}

+

{{Style|Duplicates [[Xbindkeys]]. There are alternatives to xbindkeys.}}

−

===== Execute custom commands =====

+

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

−

−

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

To get well defined button codes add the following to your permanent configuration file, e.g. {{ic|/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.

To get well defined button codes add the following to your permanent configuration file, e.g. {{ic|/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.

Line 221:

Line 205:

m:0x10 + b:13 (mouse)

m:0x10 + b:13 (mouse)

−

==== LEDs ====

+

=== 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.

See the [https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-driver-wacom sysfs-driver-wacom] documentation. To make changes without requiring root permissions you will likely want to create a [[udev]] rule like so:

See the [https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-driver-wacom sysfs-driver-wacom] documentation. To make changes without requiring root permissions you will likely want to create a [[udev]] rule like so:

Line 232:

Line 244:

Setting the Intuos OLEDs can be done using {{AUR|i4oled}} from the AUR.

Setting the Intuos OLEDs can be done using {{AUR|i4oled}} from the AUR.

−

==== TwinView 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

+

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"

Option "TwinView" "horizontal"

−

To all of your Wacom-InputDevice entries in the {{ic|xorg.conf}} file. You may read more about that [http://ubuntuforums.org/showthread.php?t=640898 HERE]

+

to all of your Wacom-InputDevice entries in the ''xorg.conf'' file. You may read more about that [http://ubuntuforums.org/showthread.php?t=640898 here].{{Dead link|2018|09|05}}

−

===== Temporary TwinView Setup =====

+

==== Temporary TwinView setup ====

−

For temporary mapping of a Wacom device to a single display '''while preserving the aspect ratio''', [https://gist.github.com/Quackmatic/6c19fe907945d735c045 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 {{ic|.xinitrc}} file for it to automatically run.

+

For temporary mapping of a Wacom device to a single display ''while preserving the aspect ratio'', [https://gist.github.com/Quackmatic/6c19fe907945d735c045 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 {{ic|.xinitrc}} file for it to automatically run.

−

==== Xrandr Setup ====

+

=== xrandr setup ===

−

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: [https://bbs.archlinux.org/viewtopic.php?pid=797617 archlinux forum].

+

{{Style|Wording can be improved, personal writing style.}}

+

+

[[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: [https://bbs.archlinux.org/viewtopic.php?pid=797617 Arch Linux forum].

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

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

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

+

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"'''

+

$ xsetwacom set 12 MapToOutput VGA-0

−

This should immediately work, no root necessary.

+

This should work immediately, 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.

+

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

+

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

−

$ xsetwacom set '''12''' MapToOutput '''"1920x1080+1920+0"'''

+

$ xsetwacom set 12 MapToOutput 1920x1080+1920+0

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

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

Line 283:

Line 297:

Alternatively, you can use [https://bitbucket.org/denilsonsa/small_scripts/src/3380435f92646190f860b87f566a39d0e215034c/xsetwacom_my_preferences.sh?at=default this bash script] to quickly map the tablet to one of your screens (or the entire desktop) and fix the aspect ratio.

Alternatively, you can use [https://bitbucket.org/denilsonsa/small_scripts/src/3380435f92646190f860b87f566a39d0e215034c/xsetwacom_my_preferences.sh?at=default 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'''.

+

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

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

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

Line 311:

Line 325:

↳ USB Keyboard id=19 [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:

+

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

$ xinput map-to-output 20 VGA-0

$ xinput map-to-output 20 VGA-0

Line 322:

Line 336:

$ xsetwacom set ''stylus'' PressureCurve ''x1 y1 x2 y2''

$ 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.

The KDE configuration module {{Pkg|kcm-wacomtablet}} (or if you're on Plasma 5, {{AUR|kcm-wacomtablet-frameworks-git}}{{Broken package 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.

== Application-specific configuration ==

== Application-specific configuration ==

Line 361:

Line 343:

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

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

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.

+

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 [http://hem.bredband.net/devel/wacom/ Wacom ExpressKeys].

+

* 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 [http://hem.bredband.net/devel/wacom/ 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.

* 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.

Line 382:

Line 364:

=== Inkscape ===

=== 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.

+

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.

=== Krita ===

=== Krita ===

Line 392:

Line 374:

=== VirtualBox ===

=== VirtualBox ===

−

First, make sure that your tablet works well under Arch. Then, download and install the last driver from [http://www.wacom.com/downloads/drivers.php 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'''.

+

First, make sure that your tablet works well under Arch. Then, download and install the last driver from [https://www.wacom.com/en-cl/support/bamboo-support 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 ==

== Troubleshooting ==

Line 433:

Line 415:

/dev/input/wacom /dev/input/wacom-stylus /dev/input/wacom-touch

/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 {{ic|/usr/lib/udev/rules.d/10-wacom.rules}}. It is a good idea to copy the file e.g. to {{ic|10-my-wacom.rules}} before modifying it, else it might be reverted by a package upgrade.

+

If not, your device is likely to be not yet included in the ''udev'' configuration from ''wacom-udev'' which resides in {{ic|/usr/lib/udev/rules.d/wacom.rules}}. Copy the file to {{ic|/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.

Add your device to the file by duplicating some line of another device and adapting ''idVendor'',''idProduct'' and the symlink name to your device.

Line 525:

Line 507:

InputDevice "Mouse1" "CorePointer"

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.

Installation

Ensure your kernel recognizes your tablet. Connect your tablet via USB or Bluetooth. It should show up in dmesg | grep -i wacom 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.

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

Configuration

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

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

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:

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.

Note: If you try to run a script with xsetwacom commands 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 1 at the beginning of your script.

Execute custom commands

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

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.

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_widthheight

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.

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:

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.[dead link 2018-09-05]

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.

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

Application-specific configuration

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.

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 cursordevices, set the mode to Screen, and remember to save.

Please take note that if present, the paddevice 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.

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 cursordevices, set the mode to Screen, and remember to save.

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.

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

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).

Dynamic with udev

Note: In AUR there is wacom-udev package, which includes udev-rules-file. You might skip this part and move on to the xorg.conf configuration if you are using the wacom-udev package from AUR.

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

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.

Serial devices

The wacom-udevAUR[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 linuxconsole package. The inputattach command allows to bind serial device into /dev/input tree, for example with:

# 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.

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.

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.