IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [490]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [449]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [680]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [357]
    Сети, сетевые технологии, оборудование... [269]
    Смартфоны [4966]
    Фотокамеры, объективы, искусство фотографии.. [543]
    Умный дом [47]
    Электронные книги [96]
    CB, LPD, PMR- связь... [171]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1113]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [616]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1340
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2014 » Февраль » 13 » Подключение графического планшета Wacom Pro в Linux или как bash помогает художникам
    13:44
    Подключение графического планшета Wacom Pro в Linux или как bash помогает художникам

    Подключение графического планшета Wacom Pro в Linux или как bash помогает художникам

    Если вы счастливый обладатель Intuos Pro и гордый пользователь Linux, то возможно вас постигла та же самая неудача, что и меня. Все дело в том, что на момент написания этой статьи, не было нормальной поддержки последних моделей графических планшетов фирмы Wacom. Однако благодаря проекту Linux Wacom и нескольких bash скриптов эту проблему можно решить.

    Вся история началась с того, что мне для домашнего проекта нужно было много рисовать, а старый планшет Genius совсем для этого не подходил. И был куплен Wacom Intuos Pro Midlle. На компьютере с Win7 он очень легко поставился и настроился. Особенно порадовала возможность настройки профилей, чтобы присвоить клавишам на девайсе различные функции в зависимости от используемого приложения. Радости не было предела.

    Попутно с этим я понял, что покупать Photoshop для проекта, который не приносит дохода — это совсем не интересно. Труд разработчиков, впрочем как и свою свободу, я ценю и потому ничем пиратским не пользуюсь. Взор был обращен в сторону свободного ПО.

    Полазив по сайтам и форумам и недолюбливая Gimp, я остановился на программе Krita — очень удобном растровом редакторе, с богатыми настройками для кистей. Чтобы сразу избежать холивара, скажу, что Krita — это не замена Photoshop, но вот в плане рисования иногда более продвинут.

    Что такое не везет


    К этому времени мне пришлось полностью пересесть за компьютер с Ubuntu. Помня, что всегда видел в настройках раздел Wacom, я смело подключил провод планшета. И ничего… Тогда я подключил беспроводный адаптер. Никакого результата. Поиск и всякие советы — все тоже самое. В свое время я колдовал с настройками Genius и подумал, что где-то возник конфликт. Давно хотев попробовать Мяту и Cinnamon, я скачал и уставил ее. И снова ничего.

    На выручку пришел Linux Wacom Tablet Project, одним из основных авторов которого является сотрудник Red Hat Питер Хаттерер. Не скажу, что все с первого раза стало гладко, но вот такая последовательность действий с askubuntu мне помогла:
    1. Скачиваем последнюю версию драйвера ядра input-wacom отсюда:
      http://sourceforge.net/projects/linuxwacom/files/latest/download
    2. Если нужно, то устанавливаем зависимости:
      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
    3. Распаковываем
      tar xjvf input-wacom-0.20.0.tar.bz2
    4. Переходим внутрь
      cd input-wacom-0.20.0
      ./configure --prefix=/usr
    5. Ставим сами драйвера из папки под свое ядро (у меня 3.7)
      sudo cp ./3.7/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/wacom.ko
      sudo depmod -a

    В зависимости от того, был ли подключен планшет, может потребоваться перезагрузка.

    Минуты счастья


    Я снова был счастлив, пока не понял, что работают только 2 кнопки, а тач не отключается при рисовании стилусом. Под KDE и Gnome были GUI, а под мой Cinnamon пришлось использовать консольную утилиту xsetwacom, что в последствии дало более гибкую настройку, а в связке с bash — дополнительные возможности.

    На сайте проекта есть примеры скриптов с xsetwacom, но они не рассчитаны под версию Intuos Pro. Пришлось опытным путем определять номера кнопок (они несколько хаотично разбросаны). Плюс к этому в списке устройств планшет по разному определяется, когда подключен проводом\без провода.

    Довольно продвинутая настройка


    Я не программист, но понадеялся, что в языке сценариев смогу разобраться. При помощи вывода с xsetwacom и grep в переменную всегда подставляется нужное устройство, а notify-send выводит используемый профиль.

    Пример скрипта для Krita
    #Название устройств, независимо от того, проводное или беспроводное подключение для планшета
    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"


    В принципе из комментариев понятно, за что отвечает каждый параметр. Обратите внимание, как связаны физические клавиши с их номерами внутри программы.

    Связь



    Следующим разочарованием было то, что отсутствовали профили для различных программ. В принципе, можно сделать несколько скриптов и настроить горячие клавиши для активации каждого. Однако при частом переключении между приложениями, это начинает доставлять некоторые неудобства.

    Bash в помощь


    Я понимаю, что приведенная ниже реализация является еще тем велосипедом, но на практике она хорошо выполняет свою работу, не нагружая систему.
    И так, нам понадобятся:
    • awk — для поиска ID окна в выводе. Можно было обойтись и cutом или grepом, но почитав обсуждения, решил реализовать на awk
    • xprop — используется для получения текущего окна в фокусе
    • wmctrl — для получения списка ID окон, в которых есть нужное ключевое слово, например, Firefox — для переназначения клавиш при переключении на браузер. Также бывают случаи, когда запущено несколько окон, например, с именем Terminal, ID у них разные, а профиль должен быть один

    Скрипт для переключения профилей
    #!/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


    В целом алгоритм установки следующий:
    1. Копируем папку wacom-profile-switcher в свою домашнюю директорию.
    2. В файл programs вносим названия тех приложений, для которых нужны профили. Названия должны соответствовать надписям из окон приложений, например: gedit, LibreOffece и т. д.
    3. Для каждого такого названия создаем файл, в который вносим нужные нам настройки графического планшета. Имена файлов должны быть написаны также, как в файле programs.
    4. Далее можно либо запускать скрипт при надобности, либо кинуть его в автозагрузку. Пока пользователь не переключится с одного окна на другое, сценарий будет только раз в секунду проверять, не сменился ли ID окна в фокусе.


    Весь этот спортивный двухколесный тренажер тестировался на Linux Mint Petra и Wacom Pro M. По идее, он будет работать и на других членах семьи этой версии. Для всех остальных придется править скрипт, потому что не будут совпадать кнопки.

    Хочу всплывающие подсказки и все тут!


    И я все же надеюсь, что Wacom обратит свой взор на Linux и начнет выпускать нормальные драйвера, потому что иногда очень не хватает всплывающих подсказок о назначении клавиши при легком касании на нее, некоторых жестов. И тут одним сценарием не отделаешься.


    Для удобства разместил все скрипты на гитхабе


    http://habrahabr.ru/post/212449/
    Категория: Linux и не только | Просмотров: 882 | Добавил: laptop | Рейтинг: 4.0/1
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024