- PVSM.RU - https://www.pvsm.ru -
Если вы счастливый обладатель Intuos Pro и гордый пользователь Linux, то возможно вас постигла та же самая неудача, что и меня. Все дело в том, что на момент написания этой статьи, не было нормальной поддержки последних моделей графических планшетов фирмы Wacom [1]. Однако благодаря проекту Linux Wacom и нескольких bash скриптов эту проблему можно решить.
Вся история началась с того, что мне для домашнего проекта нужно было много рисовать, а старый планшет Genius совсем для этого не подходил. И был куплен Wacom Intuos Pro Midlle [2]. На компьютере с Win7 он очень легко поставился и настроился. Особенно порадовала возможность настройки профилей, чтобы присвоить клавишам на девайсе различные функции в зависимости от используемого приложения. Радости не было предела.
Попутно с этим я понял, что покупать Photoshop для проекта, который не приносит дохода — это совсем не интересно. Труд разработчиков, впрочем как и свою свободу, я ценю и потому ничем пиратским не пользуюсь. Взор был обращен в сторону свободного ПО.
Полазив по сайтам и форумам и недолюбливая Gimp [3], я остановился на программе Krita [4] — очень удобном растровом редакторе, с богатыми настройками для кистей. Чтобы сразу избежать холивара, скажу, что Krita — это не замена Photoshop, но вот в плане рисования иногда более продвинут.
К этому времени мне пришлось полностью пересесть за компьютер с Ubuntu. Помня, что всегда видел в настройках раздел Wacom, я смело подключил провод планшета. И ничего… Тогда я подключил беспроводный адаптер. Никакого результата. Поиск и всякие советы — все тоже самое. В свое время я колдовал с настройками Genius и подумал, что где-то возник конфликт. Давно хотев попробовать Мяту и Cinnamon [5], я скачал и уставил ее. И снова ничего.
На выручку пришел Linux Wacom Tablet Project [6], одним из основных авторов которого является сотрудник Red Hat Питер Хаттерер. Не скажу, что все с первого раза стало гладко, но вот такая последовательность действий с askubuntu [7] мне помогла:
sudo apt-get install build-essential libX11-dev libxi-dev x11proto-input-dev xserver-xorg-dev libxrandr-dev libncurses5-dev autoconf libtool
sudo apt-get install linux-headers-generic
tar xjvf input-wacom-0.20.0.tar.bz2
cd input-wacom-0.20.0
./configure --prefix=/usr
sudo cp ./3.7/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/wacom.ko
sudo depmod -a
В зависимости от того, был ли подключен планшет, может потребоваться перезагрузка.
Я снова был счастлив, пока не понял, что работают только 2 кнопки, а тач не отключается при рисовании стилусом. Под KDE и Gnome были GUI [9], а под мой Cinnamon пришлось использовать консольную утилиту xsetwacom, что в последствии дало более гибкую настройку, а в связке с bash — дополнительные возможности.
На сайте проекта есть примеры скриптов с xsetwacom, но они не рассчитаны под версию Intuos Pro. Пришлось опытным путем определять номера кнопок (они несколько хаотично разбросаны). Плюс к этому в списке устройств планшет по разному определяется, когда подключен проводомбез провода.
Я не программист, но понадеялся, что в языке сценариев смогу разобраться. При помощи вывода с xsetwacom и grep [10] в переменную всегда подставляется нужное устройство, а notify-send [11] выводит используемый профиль.
#Название устройств, независимо от того, проводное или беспроводное подключение для планшета
DEVICE_STYLUS=`xsetwacom list dev | grep -E -o ".*stylus"`
DEVICE_ERASER=`xsetwacom list dev | grep -E -o ".*eraser"`
DEVICE_CURSOR=`xsetwacom list dev | grep -E -o ".*cursor"`
DEVICE_PAD=`xsetwacom list dev | grep -E -o ".*pad"`
DEVICE_TOUCH=`xsetwacom list dev | grep -E -o ".*touch"`
#Всплывающее предупреждение об используемом профиле.
notify-send "Using Krita profile"
#Рабочая область для стилуса
#Для двух мониторов просто ширину 2 монитора прибавить к 1: MapToOutput 3286x1080+0+0
xsetwacom set "$DEVICE_STYLUS" MapToOutput 1920x1080+0+0
## Настройки для стилуса
xsetwacom set "$DEVICE_STYLUS" RawSample "2" # кол-во исходных данных для фильтрации точек
xsetwacom set "$DEVICE_STYLUS" Threshold "27" # порог чувствительности пера
xsetwacom set "$DEVICE_STYLUS" PressureCurve "5 10 90 95" # Кривая безье давления
xsetwacom set "$DEVICE_STYLUS" TabletPCButton "off" # кнопки стилуса работают рядом с экраном
xsetwacom set "$DEVICE_STYLUS" Mode "Absolute" # абсолютная либо относительная привязка курсора к экрану
xsetwacom set "$DEVICE_STYLUS" Button 1 "1" # левый клик
xsetwacom set "$DEVICE_STYLUS" Button 2 "3" # правый клик
xsetwacom set "$DEVICE_STYLUS" Button 3 "2" # средний клик
## Резинка
xsetwacom set "$DEVICE_ERASER" RawSample "2"
xsetwacom set "$DEVICE_ERASER" Threshold "27"
xsetwacom set "$DEVICE_ERASER" PressureCurve "0 10 90 100"
xsetwacom set "$DEVICE_ERASER" Mode "Absolute"
xsetwacom set "$DEVICE_ERASER" Button 1 "1"
## Сам планшет
xsetwacom set "$DEVICE_PAD" Button 2 "key shift"
xsetwacom set "$DEVICE_PAD" Button 3 "key ctrl"
xsetwacom set "$DEVICE_PAD" Button 8 "key ctrl Z"
xsetwacom set "$DEVICE_PAD" Button 9 "key ctrl shift A"
# Неизвестно, где находятся эти кнопки
#xsetwacom set "$DEVICE_PAD" Button 4 "key D"
#xsetwacom set "$DEVICE_PAD" Button 5 "key E"
xsetwacom set "$DEVICE_PAD" AbsWheelDown "5" # тачринг по часовой
xsetwacom set "$DEVICE_PAD" Button 1 "key E" # кнопка внутри тачринга
xsetwacom set "$DEVICE_PAD" AbsWheelUp "4" # тачринг против часовой
xsetwacom set "$DEVICE_PAD" Button 10 "key ctrl K"
xsetwacom set "$DEVICE_PAD" Button 11 "key ctrl M"
xsetwacom set "$DEVICE_PAD" Button 12 "key O"
xsetwacom set "$DEVICE_PAD" Button 13 "key I"
xsetwacom set "$DEVICE_PAD" ScrollDistance "10"
xsetwacom set "$DEVICE_PAD" TapTime "50"
В принципе из комментариев понятно, за что отвечает каждый параметр. Обратите внимание, как связаны физические клавиши с их номерами внутри программы.
Следующим разочарованием было то, что отсутствовали профили для различных программ. В принципе, можно сделать несколько скриптов и настроить горячие клавиши для активации каждого. Однако при частом переключении между приложениями, это начинает доставлять некоторые неудобства.
Я понимаю, что приведенная ниже реализация является еще тем велосипедом, но на практике она хорошо выполняет свою работу, не нагружая систему.
И так, нам понадобятся:
#!/bin/bash
awk_string1="/"
awk_string2="/{print $1}"
window_in_focus_old=""
while true
do
#ID окна, которое в фокусе
window_in_focus=`xprop -root |awk '/_NET_ACTIVE_WINDOW/ {print $5; exit;}'`
#Если фокус на окне не изменился, то ничего не происходит
if [[ "$window_in_focus" -ne "$window_in_focus_old" ]]
then
window_in_focus_old=$window_in_focus
#список программ из файла
list_of_progr=$(<$HOME/xsetwacom/programs)
# цикл по названиям программ
for name_of_progr in $list_of_progr
do
awk_string_result="$awk_string1$name_of_progr$awk_string2"
# список окон, в которых есть слово из списка програм
list_of_running_prog=`wmctrl -l | awk "${awk_string_result}"`
# просматриваю этот список и если окно в фокусе -
# запуск одноименного скрипта
for running_progr in $list_of_running_prog
do
if [[ "$running_progr" -eq "$window_in_focus" ]]
then
$HOME/xsetwacom/$name_of_progr
fi
done
done
fi
sleep 1
done
В целом алгоритм установки следующий:
Весь этот спортивный двухколесный тренажер тестировался на Linux Mint Petra и Wacom Pro M. По идее, он будет работать и на других членах семьи этой версии. Для всех остальных придется править скрипт, потому что не будут совпадать кнопки.
И я все же надеюсь, что Wacom обратит свой взор на Linux и начнет выпускать нормальные драйвера, потому что иногда очень не хватает всплывающих подсказок о назначении клавиши при легком касании на нее, некоторых жестов. И тут одним сценарием не отделаешься.
Для удобства разместил все скрипты на гитхабе [15]
Автор: HedgeInSmog
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/54920
Ссылки в тексте:
[1] Wacom: http://wacom.com
[2] Wacom Intuos Pro Midlle: http://www.wacom.com/en/de/creative/intuos-pro-m
[3] Gimp: http://gimp.org
[4] Krita: http://krita.org/
[5] Мяту и Cinnamon: http://blog.linuxmint.com/?p=2489http://
[6] Linux Wacom Tablet Project: http://sourceforge.net/projects/linuxwacom/
[7] askubuntu: http://askubuntu.com/questions/368242/wacom-graphics-tablet-cth-480-ctl-480-not-detected-in-ubuntu-13-10
[8] http://sourceforge.net/projects/linuxwacom/files/latest/download: http://sourceforge.net/projects/linuxwacom/files/latest/download
[9] GUI: http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=External_applications
[10] grep: http://ru.wikipedia.org/wiki/Grep
[11] notify-send: http://ubuntuforums.org/showthread.php?t=1411620
[12] awk: http://ru.wikipedia.org/wiki/AWK
[13] xprop: http://www.xfree86.org/current/xprop.1.html
[14] wmctrl: http://packages.ubuntu.com/ru/lucid/wmctrl
[15] Для удобства разместил все скрипты на гитхабе: https://github.com/HedgeInSmog/wacom-profile-switcher
[16] Источник: http://habrahabr.ru/post/212449/
Нажмите здесь для печати.