привет, лор!
дело такое: у меня два монитора, и есть графический планшет, на котором иногда рисую всякое убожество. все бы хорошо, только при подключении планшета его курсор по умолчанию бегает по всей доступной области, т.е. по обоим мониторам (ну, как и мышь, собственно). и рабочая область планшета как бы сжимается в ширину - проще говоря, чтобы нарисовать на экране круг, надо физически рисовать овал, как-то так.
собственно, лечится это привязкой устройства ввода к конкретному монитору, благо xinput это умеет. делаю xinput list:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎜ ↳ UC-LOGIC Tablet WP5540U id=14 [slave pointer (2)]
⎜ ↳ UC-LOGIC Tablet WP5540U id=15
<...> ну и дальше всякая хрень
здесь смотрим на строчки с "UC-LOGIC Tablet WP5540U"
почему два девайса создается - я хз.
дальше делаю
xinput map-to-output 14 VGA1
(для первого девайса из списка). обычно помогает. если нет - то же самое для второго (15 в данном случае). в общем-то, можно сделать сразу для обоих, это сути не меняет.
VGA1 - имя монитора из xrandr.
после этого заклинания курсор планшета привязывается к указанному монитору, т.е. края планшета = края монитора.
а теперь, уважаемые знатоки, внимание, вопрос: как бы всю эту историю автоматизировать? чтобы при подключении оно там само соображало про все координаты и прочую мурню.
топорный вариант видится таким: станцевать с бубном вокруг udev, чтобы он при появлении нужного девайса вызывал некий скрипт, который будет парсить вывод xinput list, выдергивать из него эти самые id и далее по списку. скрипт я налабаю за 10 минут, а вот в udev совершенно не умею, последний раз ковырялся в его правилах фиг знает сколько лет назад, помню только, что они пишутся на каком-то инопланетном языке))
но что, если я чего-то не знаю и есть вариант получше? может, средствами самого xinput можно как-то нашаманить? конфиг там какой создать, прописав в нем привязки к координатам... там, вроде дофига и больше всякого наворочено в ентом xinput. или на уровне иксов что-то наколдовать?
планшет Genius какой-то там, определяется как UC-LOGIC Tablet WP5540U. драйвер в ведре начиная с 2.6.38 (так и называется, uc-logic), никаких сторонних приблуд нет. вот что пишет в dmesg:
[11846.910072] usb 6-1: new low-speed USB device number 3 using uhci_hcd
[11847.114113] input: UC-LOGIC Tablet WP5540U as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/0003:5543:0004.0003/input/input16
[11847.114294] input: UC-LOGIC Tablet WP5540U as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/0003:5543:0004.0003/input/input17
[11847.114447] uclogic 0003:5543:0004.0003: input,hidraw2: USB HID v1.00 Mouse [UC-LOGIC Tablet WP5540U] on usb-0000:00:1d.1-1/input0
что говорит про него xinput:
>23:13:13 212 ~$ xinput list --long 14
UC-LOGIC Tablet WP5540U id=14 [slave pointer (2)]
Reporting 4 classes:
Class originated from: 14. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button Unknown" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 14. Type: XIValuatorClass
Detail for Valuator 0:
Label: Abs X
Range: 0.000000 - 32767.000000
Resolution: 235000 units/m
Mode: absolute
Current value: 2560.000000
Class originated from: 14. Type: XIValuatorClass
Detail for Valuator 1:
Label: Abs Y
Range: 0.000000 - 32767.000000
Resolution: 323000 units/m
Mode: absolute
Current value: 0.000000
Class originated from: 14. Type: XIValuatorClass
Detail for Valuator 2:
Label: Abs Pressure
Range: 0.000000 - 1023.000000
Resolution: 0 units/m
Mode: absolute
Current value: 0.000000
>23:13:29 212 ~$ xinput list --long 15
UC-LOGIC Tablet WP5540U id=15 [slave pointer (2)]
Reporting 5 classes:
Class originated from: 15. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 15. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 15. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 15. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 15. Type: XIScrollClass
Scroll info for Valuator 2
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )