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.