Limit a graphics tablet to one monitor
Solution 1:
Expanding on this post: HUION H610 Tablet
I'll provide a nice little script for the HUION H420 at the bottom that you can create.
To determine your monitors you can run the command: xrandr
Out put should look like:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
1920x1080 60.00*+
1680x1050 59.95
1600x1200 60.00
1600x900 60.00
1440x900 59.89
1400x1050 59.98
1280x1024 75.02 60.02
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
The DVI-I-1 connected primary 1920x1080+0+0 is the line we are interested in, specifically the DVI-I-1
One more piace of information is needed, the id number of the stylus. This can be found by running the command xinput
In my case it returns:
↳ HUION H420 Pen stylus id=20 [slave pointer (2)]
↳ HUION H420 Pad pad id=21 [slave pointer (2)]
To get the tablet to work on only that monitor you can run the command:
xinput map-to-output 20 DVI-I-1
To wrap this in a script with buttons you can create a file with your favorite text editor, tablet.sh
that looks like:
#!/bin/sh
#Change DVI-I-1 to what monitor you want from running command: xrandr
MONITOR="DVI-I-1"
PAD_NAME='HUION H420 Pad pad'
#undo
xsetwacom --set "$PAD_NAME" Button 1 "key +ctrl +z -z -ctrl"
#define next 2 however you like, I have mine mapped for erase in krita
xsetwacom --set "$PAD_NAME" Button 2 "key e"
xsetwacom --set "$PAD_NAME" Button 3 "key h"
ID_STYLUS=`xinput | grep "Pen stylus" | cut -f 2 | cut -c 4-5`
xinput map-to-output $ID_STYLUS $MONITOR
exit 0
now chmod +x tablet.sh
and then run the command ./tablet.sh
If using the script, the MONITOR
variable needs to be changed, and you can change what you want the buttons to do.
There is a project that actually has a gui for the monitor and drawing tablet setup. http://wenhsinjen.github.io/ptxconf/
Solution 2:
The above solution did not work for me (but it was really close). I had to change this line
ID_STYLUS=`xinput | grep "Pen stylus" | cut -f 2 | cut -c 4-5`
to this:
ID_STYLUS=$(xinput | grep "Pen stylus" | cut -f 2 | cut -c 4-5)
That fixed it.
The script also failed because my monitor was VGA-2 when I wrote the script, but when I restarted my machine, the same monitor was assigned to VGA-1. I replaced this:
MONITOR='VGA-2'
With
MONITOR= $(xrandr | grep "VGA" | grep -w "connected" | cut -c 1-5)