[sisyphus] Wacom на ThinkPad с новым xorg (Was: sorta [SOLVED] Re: dm не работает, приходится startx)
Yury Bushmelev
jay4mail на gmail.com
Ср Фев 23 12:33:50 UTC 2011
23 февраля 2011 г. 15:05 пользователь Michael Shigorin
<mike на osdn.org.ua> написал:
> On Wed, Feb 23, 2011 at 10:32:39AM +0300, Yury Bushmelev wrote:
>> > xorg.conf необходим по причине serial-ного Wacom в ноутбуке,
>> > автоматически не цепляется.
>> Миш, у меня еще когда на моем X61t сизиф был, тогда уже там вроде бы
>> были достаточно новые иксы, чтобы держать не xorg.conf, а файлик в
>> xorg.conf.d, который ловит wacom-овский планшет. Если хочешь, могу
>> тебе с арча своего скинуть нужные файлики.
>
> Уже подсказали, но всё равно давай.
Хоть ты мне и лично письмо написал, но отвечаю в рассылку, ибо вон и
Дмитрий интересовался.
Во-первых, надо пометить нужные устройства (ловятся по id) в udev как
устройства ввода выставлением некоторых переменных. Откуда взял файлик
и почему именно эти переменные - нифига не помню уже :( Возможно, что
откуда-то с thinkwiki.org.
$ cat /etc/udev/rules.d/10-wacom-tty.rules
# Rules for Wacom tty interface
ACTION!="add|change", GOTO="wacom_end"
# Match all wacom tablets with a serial ID starting with WACf or FUJ*
ATTRS{id}=="WACf*" ENV{NAME}="Serial Wacom Tablet",
ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
ATTRS{id}=="FUJ*" ENV{NAME}="Serial Wacom Tablet",
ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
LABEL="wacom_end"
Как именно посмотреть всю базу устройств udev, честно говоря, тоже не
помню, а гуглить влом. Навскидку придумал вариант с перебором
устройств в команде udevadm info --query=all --name=/dev/bla-bla-bla.
После подкладывания файлика передергиваем udev командой udevadm trigger.
Теперь будем крутить xorg.
У меня все основные настройки были сделаны файликом
/etc/X11/xorg.conf.d/50-wacom.conf, поставленным пакетом
xf86-input-wacom (конкретно сейчас стоит 0.10.8-2). Для удобства
привожу содержимое:
$ cat /etc/X11/xorg.conf.d/50-wacom.conf
Section "InputClass"
Identifier "Wacom class"
# WALTOP needs a patched kernel driver, that isn't in mainline lk yet,
# so for now just let it fall through and be picked up by evdev instead.
# MatchProduct "Wacom|WALTOP|WACOM"
MatchProduct "Wacom|WACOM"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom serial class"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom serial class identifiers"
MatchProduct "WACf|FUJ02e5|FUJ02e7"
Driver "wacom"
EndSection
# N-Trig Duosense Electromagnetic Digitizer
Section "InputClass"
Identifier "Wacom N-Trig class"
MatchProduct "HID 1b96:0001|N-Trig Pen"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
Option "Button2" "3"
EndSection
Далее дигитайзер надо было откалибровать. В оригинале всем
предлагается делать это посредством некоей tcl-ной GUI-утилиты из
пакета linux-wacom. Оттуда взялись координаты "углов" дигитайзера.
Плюс некоторые параметры были взяты, скорее всего, с thinkwiki. В
итоге у меня сейчас живет вот такой файлик:
$ cat /etc/X11/xorg.conf.d/91-input-ibm-thinkpad-wacom.conf
Section "InputClass"
Identifier "stylus"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "TopY" "-88"
Option "TopX" "110"
Option "BottomY" "18376"
Option "BottomX" "24670"
# Option "KeepShape" "on"
Option "TPCButton" "off"
Option "Button3" "2"
Option "Button2" "3"
EndSection
Section "InputClass"
Identifier "eraser"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "TopY" "-88"
Option "TopX" "110"
Option "BottomY" "18376"
Option "BottomX" "24670"
# Option "KeepShape" "on"
Option "TPCButton" "off"
Option "Button3" "2"
Option "Button2" "3"
EndSection
Параметр TPCButton отключает необходимость тапать стилусом, чтобы
получить клик с нажатой кнопкой на стилусе. То есть, достаточно нажать
кнопку, и это уже считается кликом. Кнопка на стилусе перемаплена,
чтобы выдавать нажатие правой кнопкой мыши.
Кстати, повторную калибрацию недавно я делал уже при помощи
xinput_calibrator. Если в альте еще нету, рекомендую опакетить. Она
корректирует смещения где-то в недрах xinput и выдает на консоль
значения, которые можно подставить в TopX/Y и BottomX/Y, чтобы
настройки загружались автоматом. Хотя, оно выдает кусок файла для
xorg.conf.d, который, наверное, можно использовать как есть, но я не
пробовал.
В качестве бонуса вот еще страшненький скрипт для поворота изображения
(прибит гвоздями к экрану ":0"):
$ cat bin/rotate
#!/bin/sh
rotation=$(xrandr -d :0 --verbose | awk '/ connected/ {print $5;}')
if [ -z "$rotation" ]; then
exit 1;
fi
brightness_path="/sys/class/backlight/acpi_video0"
devices_stylus='Serial Wacom Tablet stylus'
devices_eraser='Serial Wacom Tablet eraser'
devices="
${devices_stylus}
${devices_eraser}
"
geom=0
mode=${1:-'-'}
case "$mode" in
'-' | '+')
#case `xrandr --verbose | grep "$output" | sed "s/^[^ ]* [^ ]*
[^ ]* ([^(]*) \([a-z]*\).*/\1/"` in
case $rotation in
normal)
geom=0
;;
left)
geom=1
;;
inverted)
geom=2
;;
right)
geom=3
;;
esac
let geom=${geom}${mode}1+4
let geom=${geom}%4;
;;
'0' | '1' | '2' | '3')
geom=$mode
;;
*)
echo "Usage: `basename $0` { {-|+} | {0|1|2|3} }"
exit 1
;;
esac
case $geom in
1)
wacom=CCW
xrandr=left
unavsym=Right
lnavsym=Up
rnavsym=Down
dnavsym=Left
;;
2)
wacom=HALF
xrandr=inverted
unavsym=Down
lnavsym=Right
rnavsym=Left
dnavsym=Up
;;
3)
wacom=CW
xrandr=right
unavsym=Left
lnavsym=Down
rnavsym=Up
dnavsym=Right
;;
*)
wacom=NONE
xrandr=normal
unavsym=Up
lnavsym=Left
rnavsym=Right
dnavsym=Down
;;
esac
echo "geom=$geom, xrandr to $xrandr, xsetwacom to $wacom" >&2
# backlight fading to 0 after rotation so we should set it to previous
# value again (BUG?)
brightness=$(cat ${brightness_path}/actual_brightness)
if xrandr -o "$xrandr"; then
# restore brightness
sudo /bin/sh -c "echo ${brightness} > ${brightness_path}/brightness"
IFS="
"
for d in $devices; do
xsetwacom --set "$d" Rotate "$wacom"
done
xmodmap -e "keycode 111 = $unavsym" \
-e "keycode 113 = $lnavsym" \
-e "keycode 114 = $rnavsym" \
-e "keycode 116 = $dnavsym"
echo "Up=$unavsym Left=$lnavsym Right=$rnavsym Down=$dnavsym"
fi
exit 0
> Кстати, если найдётся минут пять на кратенькое сравнение --
> тоже спасибо.
Эээ.. Кратенькое сравнение чего? :)
--
Yury Bushmelev
Подробная информация о списке рассылки Sisyphus