|
Prawa autorskie należą do Stefana Runkela (c) 1999 Runkel@runkeledv.de
Dokument ten opisuje proces instalacji tabletów Wacoma pod systemem Linux.
Nieskrępowane używanie, rozpowszechnianie oraz reprodukowanie tego dokumentu
jest możliwe pod następującymi warunkami:
Tablety graficzne są obecnie niezbyt drogie i mogą być bardzo pomocne przy obróbce obrazów. Obok tego czego możemy dokonać przy użyciu myszy tablety cechuje dodatkowa funkcjonalność:
Dokument ten opisuje głównie produkty firmy Wacom. Powodem tego jest fakt posiadania przeze mnie trzech różnych urządzeń tego producenta oraz to, że są one bardzo popularne w Europie.
Niemniej jednak, sądzę że zaadaptowanie nakreślonej koncepcji do innych produktów nie powinno być rzeczą trudną.
Powodem napisania tego dokumentu było to, iż nigdzie w Sieci nie mogłem znaleźć niczego podobnego. Zamiast tego miałem bardzo dużo dokumentów opisujących temat tylko częściowo. Po ich przeczytaniu, wciąż pozostawały (i nadal pozostają) otwarte pytania, na które nie znałem odpowiedzi. Zmusiło mnie to do zadawania pytań wielu różnym ludziom.
Po tym wszystkim co zostało zrobione, nadal jestem przekonany, że dokument ten był tego wart.
Oryginał tego dokumentu znajduje się pod adresem: http://www.runkeledv.de/linux.htm
Mile widziane są wszelkie komentarze, poprawki oraz uzupełnienia. Skontaktować się można ze mną pod adresem:
Chciałbym podziękować wszystkim autorom wymienionym w sekcji Dalsze informacje/wykorzystane dokumenty oraz wszystkim osobom, które odpowiedziały na moje pytania pocztą elektroniczną. Ten dokument jest odzwierciedleniem ich pracy.
Ten rozdział mówi co jest potrzebne aby tablet zaczął działać
Na początek powinieneś zdobyć tablet. Ponieważ obsługa USB pod Linuksem jest wciąż w fazie rozwoju, a ADB najprawdopodobniej długo już nie pociągnie, powinien to być model wyposażony w port szeregowy (RS232)
Obsługiwane są następujące tablety Wacoma:
Pomimo, iż starsze tablety Wacoma z serii SD oraz HD nie są standardowo obsługiwane przez sterowniki XFree86, istnieje zmodyfikowany sterownik obsługujący zarówno te, jak i inne urządzenia (np. produkty OEM ze zintegrowanymi wyświetlaczami, takie jak IBM Thinkpad 360 PE oraz Toshiba T200). Wspomniany sterownik znajduje się pod adresem: http://hwr.nici.kun.nl/pen-computing/pen-computing-formats.html
Wiele programów bazuje na bibliotece gtk. Gtk posiada obsługę specyfikacji XInput dzięki czemu łatwo jest z niej skorzystać.
Wsparcie dla XInput zawieraja poniższe aplikacje:
xink można ściągnąć z serwera plików: ftp://kiwi.cs.berkeley.edu/pub/raph/xink.tar.gz
Demon gpm obsługuje całkiem sporą liczbę urządzeń wejściowych, w tym tablety. Jeżeli chciałbyś otrzymać listę obsługiwanych przez Twoją wersję gpm urządzeń wykonaj następujące polecenie:
gpm -t help
Pomimo tego, że nie znalazłem nic na ten temat w dokumentacji, wydaje mi się że zawarty w gpm-ie sterownik do Wacoma został napisany dla bardzo starych modeli UltraPad. Testowałem go z modelami PenPartner, Graphire oraz Intuos ale nie działał. Dopisałem obsługę Graphire dla gpm, aby jej użyć potrzebna jest przynajmniej wersja 1.18.1 programu gpm.
Jeżeli posiadasz starego ArtPada, spróbuj wykonać:
killall gpm ; gpm -t wacom -m /dev/ttyS0
powinno zadziałać.
Jeśli używasz modelu Graphire, polecenie powinno wyglądać następująco:
killall gpm ; gpm -t graphire -m /dev/ttyS0
Oczywiście, uzyskasz dostęp wyłącznie do funkcji ruchu i klawiszy, nacisk i pochylenie nie będą obsługiwane, gdyż tak naprawdę nie są to zbyt przydatne funkcje w aplikacjach tekstowych.
Jeżeli równocześnie korzystasz z gpm i XFree86 to możesz, choć nie musisz, popaść w kłopoty w związku z tym, że w tym samym czasie urządzenie zwykle może być używane tylko przez jeden program. Istnieją dwa rozwiązania tego problemu:
Minimalną wersją XFree powinna być 3.3.3.1. Jest to związane z rozszerzoną obsługą XInput, działaniem drugiego przełącznika oraz zlikwidowaniem efektu blokowania myszy.
Jeżeli musisz korzystać z wersji wcześniejszej, obsługa XInput powinna być dostępna od 3.1.2.d.
Obsługa XInput w XFree jest zwykle konfigurowana w pliku XF86Config. W większości wypadków plik XF86Config umieszczony jest w katalogu /etc lub /etc/x11. Pokażę teraz bardzo krótką sekcję konfiguracyną i wyjaśnię co może być zmienione i dlaczego jest to potrzebne.
Section "Module"
# sterownik urządzenia Wacom
Load "xf86Wacom.so"
EndSection
Section "Xinput"
# ustawienia dla rysika Wacoma
SubSection "WacomStylus" # typ urządzenia wejściowego
DeviceName "Pen1" # nazwa, wybierz dowolną
Port "/dev/ttyS0" # port szeregowy
Baudrate 9600 # użyteczne tylko dla Intuosa
Mode Absolute # mapuj obszar tableta na ekran
AlwaysCore # patrz opis
HistorySize 200 # rozmiar bufora dla ruchu
EndSubSection
EndSection
Obsługa XInput w XFree jest osiągana przez użycie modułów. Moduł sterownika urządzenia dla Wacoma nosi nazwę xf86Wacom.so. Jego wywołanie umieszczamy w sekcji "Module" pliku XF86Config tylko jeden raz.
Urządzeniem fizycznym może być:
PenPartner oraz Graphire rozpoznaja typ urządzenia ale nie potrafią ich rozróżnić. Dla przykładu, nie możesz użyć dwóch różnych rysików, skonfigurowanych powiedzmy, jeden na czerwono, drugi na niebiesko - wszystko co te urządzenia rozpoznają to: "Znalazłem czubek rysika na mojej powierzchni", lub "Znalazłem gumkę na mojej powierzchni", lub "znalazłem myszkę na mojej powierzchni".
XInput przypisuje urządzeniom ich rodzaj, które z kolei zostaną później opisane w pliku XF86Config w podsekcjach sekcji Xinput:
WacomStylus
czubek rysika lub rozpylaczaWacomErasor
gumka na rysiku lub rozplaczuWacomCursor
myszy takie jak mysz Graphire, kursor "z celownikiem", mysz 4d
Każdemu skonfigurowanemu urządzeniu musisz nadać unikalną nazwę. Nazwa ta będzie później używana w Twoim programie do komunikacji z tym urządzeniem. Wybór nazwy zależy od ciebie.
XInput chce wiedzieć do którego portu szeregowego podłączone jest nasze urządzenie. Pozwala mi to na używanie dwóch różnych tabletów w tym samym czasie, na przykład Graphire podłączonego do /dev/ttyS0 i PenPartnera podłączonego do /dev/ttyS01.
Dzięki ustawieniu poziomu DebugLevel możemy kontrolować poziom "gadatliwości" sterownika Wacoma do logów. Poziomy mogą przybierać wartości od 0 do 10. Jeżeli pominiemy to ustawienie przyjęta zostanie wartość domyślna DebugLevel równa 0, co odpowiada bardzo skąpemu logowaniu.
Przykład:
SubSection "WacomStylus" # rysik
DeviceName "PenRed" # nazwa, wybież dowolną
...
DebugLevel 10 # generuj bardzo dużo komunikatów
...
EndSubSection
Tablety Intuos są bardziej wydajne niż PenPartner i Graphire ponieważ potrafią rozróżnić wiele urządzeń tego samego rodzaju. Znaczy to tyle, że możemy już używać dwa rysiki, jeden skonfigurowany jako czerwony, drugi skonfigurowany jako niebieski. Jak widać rozróżnianie wyłącznie rodzajów urządzeń nie daje wystarczającej informacji do obsługi różnych rysików. Dlatego, każde urządzenie Intuosa, niech będzie to rysik, piórko, mysz lub cokolwiek, posiada numer seryjny, który możesz wyspecyfikować by umożliwić rozpoznanie konkretnego urządzenia przez XInput. Wygląda to następująco:
Section "Xinput"
SubSection "WacomStylus" # rysik
DeviceName "PenRed" # nazwa, wybierz dowolną
...
Serial 2609917443 # numer seryjny tego urządzenia
...
EndSubSection
SubSection "WacomStylus" # inny rysik
DeviceName "PenBlue" # nazwa, wybierz dowolną
...
Serial 2609918664 # numer seryjny tego urządzenia
...
EndSubSection
EndSection
Chciałbym zaznaczyć że złożone urządzenia wejściowe posiadają tylko jeden mumer seryjny. Sterownik używa otrzymany numer seryjny do rozpoznania specyficznego rysika, natomiast czubek rysika od gumki jest rozpoznawany na podstawie rodzaju urządzenia.
Powinieneś otrzymać listę z różniącymi się numerami.
BEGIN xf86WcmProc dev=0x8354d60 priv=0x833e3f0 type=stylus flags=9 what=1
xf86WcmProc pWcm=0x8354d60 what=ON
END xf86WcmProc Success what=1 dev=0x8354d60 priv=0x833e3f0
device_id=0x96 serial_num=2595227137 type=cursor
[cursor] abs prox=false x=0 y=0 z=0 button=false buttons=0
Jeżeli ustawisz tablet do pracy w trybie bezwzględnym, cała powierzchnia urządzenia będzie odpowiadała ekranowi komputera. Za każdym razem gdy opuścisz rysik na ten sam punkt tableta wskaźnik pojawi się w odpowiadającym mu tym samym punkcie ekranu.
Jeżeli ustawisz urządzenie do pracy w trybie względnym, uzyskasz dobrze Ci znane zachowanie myszy. Jeśli podniesiesz myszkę z powierzchni, przesuniesz ją i ponownie opuścisz, wskaźnik (idealnie) nie poruszy się.
Przykład:
Mode Absolute
XFree zna dwa rodzaje wskaźników: pierwszy, posiadający tylko podstawową funkcjonalność (klawisze, możliwość ruchu), wykorzystywany jest do wybierania pozycji menu, zaznaczania tekstu, naciskania guzików i tym podobnych rzeczy. Jest to urządzenie podstawowe Core.
Drugi rodzaj wskaźnika wykorzystują aplikacje potrzebujące dodatkowych
informacji, takich jak poziom nacisku czy nachylenia.
Urządzenie to nazywamy rozszerzonym - Extension.
Począwszy od wersji 3.3.3.1, ustawienie AlwaysCore mówi sterownikowi by powinien osługiwać obydwa rodzaje zdarzeń.
Jeżeli w pliku XF86Config nie zostanie wyspecyfikowane ustawienie AlwaysCore, wskaźnik zostanie zainicjowany w trybie rozszerzonym - będzie można z niego skorzystać wewnątrz aplikacji, ale już nie do kontroli pozycji menu systemu zarządzania oknem.
Jeżeli pozycja AlwaysCore została wpisana, urządzenie (obok myszy) będzie działać jako wskaźnik podstawowy wysyłając dodatkowo informacje na temat nachylenia i nacisku do wszystkich programów, które uzyskały dostęp do wskaźnika w trybie rozszerzonym.
Dzięki użyciu dwóch różnych urządzeń logicznych możemy tak skonfigurować jedno fizycznie
urządzenie, by pracowało zarówno w trybie podstawowym jak i rozszerzonym.
Aby tego dokonać musimy stworzyć dwie identyczne sekcje różniące się jedynie ustawieniem
nazwy urządzenia DeviceName. Następnie musimy dodać wpis AlwaysCore od ostatniej z tych
sekcji.
Przykład:
AlwaysCore
Ustawienie HistorySize określa rozmiar bufora używanego do przechowywania informacji o zdarzeniach ruchu.
Ustawienie to określa liczbę jednostek, o które urządzenie musi być przesunięte zanim sterownik poruszy wskaźnikiem. Jest ono zwykle niezbędne przy użyciu wysokich rozdzielczości.
Przykład:
Suppress 6
TiltMode umożliwia wysyłanie informacji na temat pochylenia dla urządzeń wejściowych tableta Intuos. Jeżeli pominiemy ten parametr, przesyłana zostanie jedynie informacja o nacisku.
Te cztery parametry pozwalają na zredukowanie aktywnego obszaru tableta. Dla przykładu, mój Intuos A4 oversize jest tak wielki, że nie da się na nim normalnie malować, gdyż ruchy rysika muszą być zbyt duże. Używam tych parametrów aby tak poinstruować sterownik by przypisał do ekranu tylko lewą dolną ćwiartkę tableta.
Przykład:
TopX 0 # współrzędne lewego górnego punktu
TopY 5000
BottomX 5000 # współrzędne prawego dolnego punktu
BottomY 10000
Jeśli używasz powyższych ustawień, najprawdopodobniej będziesz chciał obliczyć rozmiar oraz położenie definiowanego prostokąta. Zwykle potrzebne są do tego maksymalne współrzędne oraz rozdzielczość. Aby poznać te wartości uruchom swój serwer: X 2>t. Następnie usuń proces serwera X (zwykle Ctrl+Alt+Backspace) i wykonaj grep "X=" t. W odpowiedzi powinieneś otrzymać wartości które Cię interesowały.
(--) Wacom IV tablet maximum X=5103 maximum Y=3711 X
resolution=1000 Y resolution=1000 suppress=6
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
Opcja ta korzysta ze zmiennych TopX i TopY (lub wbudowanych wartości domyślnych, jeśli je pomineliśmy) do ustawienia parametrów BottomX i BottomY tak aby
Jakiekolwiek wcześniejsze ustawienia BottomX i BottomY są ignorowane, gdyż wartości tych zmiennych zostaną obliczone.
Począwszy od wersji 1.1.x Gimp posiada wbudowaną obsługę XInput.
Aplikacja musi jednak wiedzieć, którego urządzenia powinna użyć i w jakim trybie. Aby to ustawić powinieneś otworzyć okno dialogowe Plik/Okna dalogowe/Urządzenia wejściowe (w wersji angielskiej File/Dialogs/Input Devices). U góry okna znajdziesz dwie rozwijane listy z etykietami Urządzenie (Device) oraz Tryb (Mode). Z pierwszej wybierz urządzenie z drugiej tryb obsługi.
Tryby te to:
Jeżeli widzimy, że znaszym urządzeniem związane są dwa kursory, mamy dwa rozwiązania:
Poniżej obydwu rozwijanych list znajdują się pola kontrolne z zakładkami Osie (Axes) oraz Klawisze (Keys). Osie przypisują osiom funkcje. W większości przypadków nie potrzeba zmieniać tych ustawień, ale możesz zastanowić się nad ekranem dotykowym, który został zamontowany w pozycji obróconej o 90 stopni. W tym przypadku moglibyśmy chcieć zamienić ze sobą osie x i y.
Niektóre tablety posiadają umieszczone u góry specjalne klawisze makropoleceń
(makro), kórym mogą być przypisane często używane funkcje. Zakładka
Klawisze
pozwala na przypisanie do klawisza makro pwnego znaku. Na przykład do klawisza
makro można przypisać kombinację Ctrl+Shift+R. Jeżeli zostanie on naciśnięty,
wywołana zostanie funkcja włączenia/wyłączenia linijki.
Obecne sterowniki do tabletów Wacoma obsługują klawisze makro jedynie w UltraPadach,
pola klawiszy w tabletach Intuos nie są wykorzystane w ten sposob.
Powinniśmy teraz omówić jak możemy korzystać z naszych urządzeń. Otwórz okno dialogowe Plik/Okna dialogowe/Stan urządzenia (File/Dialogs/Device Status). Otwórz dowolny plik z rysunkiem.
Każde urządzenie wejściowe w gimpie jest konfigurowane osobno.
Jeżeli będziesz poruszał kursorem w oknie rysunku przy użyciu różnych urządzeń zauważysz zmianę urządzeń w oknie dialogowym Stan urządzenia. Jeśli wybierzesz dowolne narzędzie, pędzel, wzór lub kolor zmiana także zostanie uwzględniona. Aby wybrane ustawienia zostały odtworzone przy następnej sesji gimpa można je tam zapisać.
Jest to, cały czas aktywne, urządzenie specjalne. Generuje ono zdarzenia za każdym razem gdy nowe urządzenie przejmuje wskaźnik w trybie podstawowym. Posiada ono pseudo "oś". "Wartość" na tej osi jest identyfikatorem urządzenia będącego wskaźnikiem podstawowym. Nie mam pojęcia co użytkownik mógłby zrobić z urządzeniem przełącznika - głównie jest ono przydatne dla programistów.
Przyciski, w które są wyposażone urządzenia wejściowe mogą być tak zróżnocowane
jak same urządzenia:
Rysik posiada przynajmniej czubek, ale może też mieć jeden lub dwa przyciski
na boku oraz gumke na drugim końcu. Myszy mogą mieć do 32 klawiszy (choć zwykle
mają ich 3). Przyciski ponumerowane są od 1 do liczby klawiszy. Opisane poniżej
dwa programy pozwalają na modyfikacje liczby wykorzystywanych klawiszy.
xmodmap będzie modyfikował jedynie wskaźnik podstawowy (Core Pointer). Jako że w danym momencie istnieje tylko jeden wskaźnik podstawowy, nie mają znaczenia różnice pomiędzy fizycznymi urządzeniami, które mogą stać się takim wskaźnikiem. Na jakiś czas zapomnijmy o całym tym XInput i pomyślmy o osobie leworęcznej, która chciałaby zamienić znaczenie prawego i lewego przycisku myszy. Aby poznać stan aktualny można wykonać polecenie xmodmap -pp. W odpowiedzi powinniśmy otrzymać następującą tabelę:
Physical Button
Button Code
1 1 # ( lewy przycisk )
2 2 # ( prawy przycisk )
3 3 # ( środkowy przycisk )
Aby zamienić klawisze należy wykonać polecenie xmodmap -e "pointer = 2 1 3", oraz xmodmap -e "pointer = default" aby przywrócić poprzednie przypisanie. Powinno to działać dla dowolnych urządzeń posiadających przynajmniej dwa przyciski. Należy zaznaczyć, że wyrażenie "pointer = x x x" musi być zawarte w cudzysłowach by zapobiec jego modyfikacji ze strony powłoki.
Wróćmy ponownie do XInput. Jeśli używasz gimpa, możesz chcieć zmienić przyporządkowanie klawiszy dla każdego urządzenia osobno (możesz być zadowolony z myszy, ale chciałbyś zamienić znaczenia dwóch bocznych przycisków rysika). Frederic Lepied napisał w tym celu program o nazwie xinput.
Aby zamienić boczne przyciski powinieneś wykonać polecenie xinput list w celu uzyskania listy urządzeń wraz z ich aktualnymi ustawieniami. Zamiana realizowana jest przez wykonanie xinput set-button-map Pen1 1 3 2 gdzie Pen1 jest urządzeniem, które chcemy zmienić.
Począwszy od XFree 3.3.2 rozwiązanie to działa dla urządzeń skonfigurowanych (w pliku XF86Config) jako AlwaysCore.
Przy pomocy xsetmode możliwe jest przełączanie urządzenia pomiędzy trybem bezwzględnym (absolute) a względnym (relative) trybem pracy.
Przykład:
xsetmode GraphireMouse ABSOLUTE
Jeżeli żadne z naszych urządzeń nie zostało skonfigurowane jako AlwaysCore a chcielibyśmy by jedno z nich zostało wskaźnikiem podstawowym musimy użyć programu xsetpointer.
Wykonaj polecenie xsetpointer NazwaUrządzenia. Stare urządzenie podstawowe (zwykle jest to mysz) nie będzie już dłużej wykorzystywane, jego miejsce zajmie urządzenie wyspecyfikowane w naszym poleceniu. Dla przykładu możliwe jest przypisanie funkcji wskaźnika podstawowego myszy Graphire w uruchomionych wczesniej XFree.
xsetpointer -l wypisuje listę wszystkich urządzeń oraz ich trybów pracy.
Niektóre urządzena posiadają klawisze makro lub specjalne pola, którym można przypisać pojedyncze znaki sterujace lub też ich ciągi. Działa to wyłącznie dla urządzeń pracujących w trybie rozszerzonym, a co za tym idzie, realizowane jest przez te aplikacje, które chcielibyśmy by wykorzystywały klawisze.
xinput -l daje nam informacje na temat liczby klawiszy czy też wysyłanych znaków sterujących.
Posiadam 3 tablety Wacoma, które używam wraz z moim notebookiem. Za każdym razem gdy uruchamiam X-y, a żaden z tabletów nie jest podłączony do komputera, musi upłynąć sporo czasu nim sterowniki się poddadzą. Jeżeli uruchamiany jest xdm okres oczekiwania znacznie się wydłuża.
Stworzyłem dwa narzędzia, które powinny ułatwić życie wszystkim którzy są w takiej samej sytuacji:
Koncepcją, która leży u podstaw działania obu programów, jest podział pliku XF86Config na plik XF86Config.bare, zawierający informacje wspólne dla wszystkich konfiguracji, oraz szereg małych plików zawierających specyficzne informacje na temat poszczególnych konfiguracji.
Obydwa narzędzia łączą te części w działającą całość.
Pakiet ten jest dostępny na stronie http://www.runkeledv.de/download, pod nazwą xinput_chooser_sr.
gpm:
strona podręcznika (man) gpm, FAQ gpm, kod źródłowy pliku mice.c
XInput:
dokument XInput HOWTO autorstwa Owena Taylora
XFree oraz Wacom:
podręcznik XF86Config
strona Web Frederica Lepieda
dużo, dużo listów...
Dokument ten został napisany w standardzie ISO-8859-2.
Tłumaczenie to jest chronione prawami autorskimi (c) Marka Guevara Braun. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.
Jeżeli znalazłeś(łaś) jakieś błędy ortograficzne, gramatyczne, składniowe lub techniczne to napisz do mnie na adres marek@atm.com.pl
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp://www.jtz.org.pl/pub/Linux/JTZ/
Zmiany wprowadzone przez tłumacza w stosunku do oryginału to odnośniki do polskich serwerów ftp i WWW oraz zmiana pisowni nazw produktów Wacoma (Intuos zamiast intuos, Graphire zamiast graphire, itp.) # # # #
Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:22