Я пытаюсь автоматизировать калибровку планшета Huion без особого успеха.
У меня есть этот вывод из xinput --list
в обычном терминале:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB USB Keyboard id=13 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=14 [slave pointer (2)]
⎜ ↳ HUION PenTablet id=18 [slave pointer (2)]
⎜ ↳ HUION PenTablet id=19 [slave pointer (2)]
⎜ ↳ HUION PenTablet 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)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ Laptop_Integrated_Webcam_2HDM id=11 [slave keyboard (3)]
↳ USB USB Keyboard id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
↳ Dell WMI hotkeys id=17 [slave keyboard (3)]
Журнал udev показывает только это для той же команды:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB USB Keyboard id=13 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=14 [slave pointer (2)]
⎜ ↳ HUION PenTablet id=18 [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)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳Laptop_Integrated_Webcam_2HDM id=11 [slave keyboard (3)]
↳ USB USB Keyboard id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
↳ Dell WMI hotkeys id=17 [slave keyboard (3)]
Обратите внимание, что строки для id=19
и id=20
отсутствуют.
Я имею:
/etc/udev/rules.d/huion.rules
:
ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", SYMLINK+="davesusb", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/romulo/.Xauthority", RUN+="/usr/local/Huion"
/usr/local/Huion
:
#!/bin/bash
/home/romulo/.local/Huion &
~/.local/Huion
:
#!/bin/bash
sleep 3
DISPLAY=":0.0"
HOME=/home/romulo/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
if (xrandr | grep "HDMI1 connected" > /dev/null)
then
LENGTH=$(/usr/bin/xrandr | grep 'HDMI1 connected primary' | uniq | awk '{x=$4; split(x,a,"+"); split(a[1],b,"x"); print b[1]}')
WIDTH=$(/usr/bin/xrandr | grep 'HDMI1 connected primary' | uniq | awk '{x=$4; split(x,a,"+"); split(a[1],b,"x"); print b[2]}')
DEVICE=$(/usr/bin/xinput --list | grep HUION | uniq | awk 'NR==2 {x=$5; split(x,a,"="); print a[2]}')
echo $(/usr/bin/xinput --list)
CORRECTION=$((40000*$WIDTH/$LENGTH))
echo "$CORRECTION"
if (glxinfo | grep "Intel" > /dev/null)
then
xsetwacom set $DEVICE MapToOutput HDMI1
echo "device $DEVICE restricted to HDMI-1"
xinput set-prop $DEVICE "Evdev Axis Calibration" 0 40000 0 $CORRECTION
echo "correction of proportion : 40000x$CORRECTION"
else
echo "error :("
fi
else
echo "error :("
fi
Скрипт делает xinput --list | grep HUION | uniq | awk 'NR==2 …'
в попытке перехватить id
второго устройства HUION (т. е. 19
), и поэтому происходит сбой, потому что эта информация отсутствует.
Как я могу преодолеть эту проблему?
обновление 1
Root через sudo su
дает мне тот же xinput --list
что и обычный пользователь, но любая попытка калибровки не дала результата. Мне нужно будет переключиться на моего пользователя в вызове сценария оболочки udev? Не очень элегантно ... :(