Linux auf X-Serie Tablets: Unterschied zwischen den Versionen
V164 (Diskussion | Beiträge) (→Besonderheiten X201 Tablet Multitouch: Touch ein- und ausschalten) |
V164 (Diskussion | Beiträge) (Änderung einiger Formulierungen) |
||
Zeile 1: | Zeile 1: | ||
==Einleitung== | ==Einleitung== | ||
Die gerätespezifischen Funktionen der X-Tablets funktionieren unter Linux zumeist nicht gleich nach der Installation des Grundsystems oder sie funktionieren nur zum Teil. Dieser Beitrag zeigt Wege auf, wie die Tabletfunktionen unter | Die gerätespezifischen Funktionen der X-Tablets funktionieren unter Linux zumeist nicht gleich nach der Installation des Grundsystems oder sie funktionieren nur zum Teil. Dieser Beitrag zeigt Wege auf, wie die Tabletfunktionen unter verschiedenen Linux-Distibutionen eingerichtet werden können. | ||
==Debian== | ==Debian== | ||
=== Grundinstallation === | === Grundinstallation === | ||
Die folgende Installationsanleitung bezieht sich auf ein [[X61#X61_Tablet|X61t]] mit Debian Testing. Sie ist jedoch | Die folgende Installationsanleitung bezieht sich auf ein [[X61#X61_Tablet|X61t]] mit Debian Testing. Sie ist jedoch in Grundzügen auch auf andere Tablets der X-Serie anwendbar. Auf bekannte Besonderheiten bzgl. andere Modelle der X-Serie wird weiter unten eingegangen. Als Installationmedium kann ein Image von [http://www.debian.org www.debian.org] verwendet werden. Hierzu wird empfohlen erst ein Grundsystem ohne X (also ohne grafische Oberfläche) zu installieren. Nach einer Anpassung der Dateien /etc/fstab (falls erforderlich) und /etc/apt/sources.list kann nun der bevorzugte Desktop-Manager installiert werden. Für die hier aufgezeigte beispielhafte Installation von Debian Testing wurde Gnome 3 verwendet. Es sind jedoch auch andere Desktop Environments denkbar. Dabei ist dann jedoch zu beachten, dass bspw. bei der weiter unten aufgezeigte Möglichkeit mit der Ansteuerung mittels Schnellstartern eventuell etwas andere Wege in Bezug auf die Darstellung am Desktop gewählt werden müssen. | ||
===Erster Reboot unter X=== | ===Erster Reboot unter X=== | ||
Nach dem ersten | Nach dem ersten Neustart funktioniert bereits die Eingabe mittels Stift. Bis hierhin wurden noch keine Veränderungen am System vorgenommen. Die Bildschirmrotation funktioniert noch nicht, die Sondertasten unterhalb des Bildschirms (im folgenden Hardwarebutton genannt) weisen noch keine Funktion auf. | ||
===Anforderungen und Ziele=== | ===Anforderungen und Ziele=== | ||
Zeile 15: | Zeile 15: | ||
Das X-Tablet soll die folgenden Anforderungen erfüllen können: | Das X-Tablet soll die folgenden Anforderungen erfüllen können: | ||
* '''Rotations-Button''' - Es soll eine Bildschirmrotation von 90° gegenüber der vorherigen Einstellung über einen Knopfdruck auf den Rotationsbutton ausgeführt werden. Des Weiteren soll sich die Stiftausrichtung automatisch so verändern, dass die Ausrichtung des Stiftes der | * '''Rotations-Button''' - Es soll eine Bildschirmrotation von 90° gegenüber der vorherigen Einstellung über einen Knopfdruck auf den Rotationsbutton (Hardwarebutton) ausgeführt werden. Des Weiteren soll sich die Stiftausrichtung automatisch so verändern, dass die Ausrichtung des Stiftes der Ausrichtung des Bildschirms folgt. | ||
* '''Schnellstarter''' - Es sollen Schnellstarter vorhanden sein, mit der eine beliebige Bildschirmausrichtung sofort anwählbar ist. Auch hier soll sich der Stift der Bildschirmausrichtung anpassen. | * '''Schnellstarter''' - Es sollen Schnellstarter vorhanden sein, mit der eine beliebige Bildschirmausrichtung unter Umgehung des Rotationsbuttons sofort anwählbar ist. Auch hier soll sich der Stift der Bildschirmausrichtung anpassen. | ||
* '''Super-Taste''' - Unter Gnome 3 ist der Super-Taste eine elementare Funktion zugeordnet. Ein Hardware-Button soll diese Funktion übernehmen. | * '''Super-Taste''' - Unter Gnome 3 ist der Super-Taste eine elementare Funktion zugeordnet. Ein Hardware-Button soll diese Funktion übernehmen. | ||
* '''Hoch / Runter / Rechts / Links-Tasten''' - Die Tablets der Serie X6xt verfügen an der rechten Bildschirmunterkante über eine gemeinsame Taste, die die Funktionen ''Hoch'', ''Runter'', ''Rechts'' und ''Links'' ausführen kann. Die Funktionen ''Hoch'' und ''Runter'' sind im Tablet-Modus durchaus sinnvoll, die Funktionen ''Rechts'' und ''Links'' sind zum | * '''Hoch / Runter / Rechts / Links-Tasten''' - Die Tablets der Serie X6xt verfügen an der rechten Bildschirmunterkante über eine gemeinsame Taste, die die Funktionen ''Hoch'', ''Runter'', ''Rechts'' und ''Links'' ausführen kann. Die Funktionen ''Hoch'' und ''Runter'' sind im Tablet-Modus durchaus sinnvoll, die Funktionen ''Rechts'' und ''Links'' sind zum Beispiel beim surfen eher unwichtig und sollen durch die Tastenbelegungen ''Vor'' und ''Zurück'' ersetzt werden. | ||
* '''Mitdrehen der Hoch / Runter / Vor / Zurück - Tasten''' - Die oben genannten Tasten sollen sich bei der Bildschirm-Rotation mitdrehen und der Bildschirmausrichtung folgen. Hält der Nutzer bspw. sein Tablet hochkant, soll ''Zurück'' zu ''Hoch'' werden, ''Vor'' zu ''Runter'', ''Runter'' zu ''Zurück'' und ''Hoch'' zu ''Vor''. | * '''Mitdrehen der Hoch / Runter / Vor / Zurück - Tasten''' - Die oben genannten Tasten sollen sich bei der Bildschirm-Rotation mitdrehen und der Bildschirmausrichtung folgen. Hält der Nutzer bspw. sein Tablet hochkant, soll ''Zurück'' zu ''Hoch'' werden, ''Vor'' zu ''Runter'', ''Runter'' zu ''Zurück'' und ''Hoch'' zu ''Vor''. Es soll also eine nach der jeweiligen Ausrichtung eine logische Anordnung der Tasten gegeben sein. | ||
* '''Automatische Bildschirm-Rotation''' - Auf diesen Punkt wird hier nicht eingegangen. | * '''Automatische Bildschirm-Rotation''' - Auf diesen Punkt wird hier nicht eingegangen. | ||
===Hardware-Buttons konfigurieren=== | ===Hardware-Buttons konfigurieren=== | ||
Eine | Eine Möglichkeit den Scancode herauszufinden bietet das Programm '''evtest'''. evtest erfordert root-Rechte. Führen Sie also die folgenden Befehle als root aus. Das Programm evtest befindet sich in den Main-Repos und kann über einen Paket-Manager installiert werden. Als erstes wird herausgefunden, welches Device enötigt wird. | ||
root# egrep -e ".*keyboard.*/dev/input/event[0-9]{1,2}.*" /var/log/Xorg.0.log | root# egrep -e ".*keyboard.*/dev/input/event[0-9]{1,2}.*" /var/log/Xorg.0.log | ||
Zeile 36: | Zeile 36: | ||
root# evtest /dev/input/event0 | root# evtest /dev/input/event0 | ||
Daraufhin erhält man eine ziemlich lange Liste. Die oben aufgeführten Codes kann man sich ansehen, diese werden zum Teil später noch benötigt | Daraufhin erhält man eine ziemlich lange Liste. Die oben aufgeführten Codes kann man sich ansehen, diese werden zum Teil später noch benötigt. Wichtig sind jedoch die, die durch einen Tastendruck ausgelesen werden können. Ein solcher Abschnitt sieht etwa so aus: | ||
Event: time 1326493063.385652, type 4 (Misc), code 4 (ScanCode), value | Event: time 1326493063.385652, type 4 (Misc), code 4 (ScanCode), value 68 | ||
Event: time 1326493063.385661, type 1 (Key), code | Event: time 1326493063.385661, type 1 (Key), code 125 (Leftmeta), value 0 | ||
Event: time 1326493063.385664, -------------- Report Sync ------------ | Event: time 1326493063.385664, -------------- Report Sync ------------ | ||
Die wichtigen Werte habe sind | Die wichtigen Werte habe sind in diesem Beispiel '''value 68''' und '''code 125'''. Die Scancodes der Hardware-Buttons sollten nun der Reihe nach ausgelesen und notiert werden. Mit den gewonnen Werten kann man schon ein wenig arbeiten. Um beispielsweise die mittlere der drei Hardware-Buttons mit dem Keysym der Supertaste zu hinterlegen, gibt man als root den folgenden Befehl ein: | ||
root# setkeycodes 68 125 | root# setkeycodes 68 125 | ||
So würde also der Befehl aussehen, der zu der Tastenbelegung aus dem obigen Beispiel führt. Die erste Zahl steht also für die gewünschte Taste, die zweite für das damit verbundene Zeichen. Hierbei kann (fast) noch nichts schief gehen. Die Änderung der Tastenbelegung verschwindet nach einem Neustart. Es können so also testweise alle Tasten mit neuen Keycodes hinterlegt und vor allem getestet werden. | |||
Nachdem die nötigen Belegungen heraus gefunden und getestet wurden, können diese in die Datei /etc/rc.local eingetragen werden, damit sie nach einem Neustart immer | Nachdem die nötigen Belegungen heraus gefunden und getestet wurden, können diese in die Datei /etc/rc.local eingetragen werden, damit sie nach einem Neustart immer wirksam werden. Hier ein beispielhafter Auszug: | ||
#rc.local | #rc.local | ||
Zeile 57: | Zeile 57: | ||
setkeycodes 6d 159 | setkeycodes 6d 159 | ||
Damit | Damit können die Tasten schon die vorgesehen Aktionen ausführen. | ||
===Rotationsscript=== | ===Rotationsscript=== | ||
Zeile 63: | Zeile 63: | ||
Was soll das Rotationsscript können? | Was soll das Rotationsscript können? | ||
* Bildschirm der Reihe nach von | * Bildschirm der Reihe nach von '''none''' über '''right''' nach '''inverted''' und weiter zu '''left''' und wieder nach '''none''' drehen. | ||
* Stift | * Stift '''mitdrehen''', dies ist nötig, da sonst die Ausrichtung des Stiftes nicht mit der Bildschirmausrichtung übereinstimmt. | ||
* Belegung der Hoch / Runter / Rechts (Vor) / Links (Zurück)-Buttons nach der Bildschirmausrichtung ändern. | * Belegung der Hoch / Runter / Rechts (Vor) / Links (Zurück)-Buttons nach der Bildschirmausrichtung ändern. | ||
* Bildschirmausrichtung in einen status-File schreiben | * Bildschirmausrichtung in einen status-File schreiben | ||
Zusätzlich | Zusätzlich soll ja auch noch die Bildschirmdrehung per '''Schnellstarter''' möglich sein, so dass es nötig ist, die aktuelle Bildschirmausrichtung jederzeit abfragen zu können. Es muss also noch eine Status-Datei angelegt werden, in die der aktuelle Rotations-Status hineingeschrieben wird und abrufbar ist. | ||
Die obigen Punkte erreicht man über die folgenden Befehle: | Die obigen Punkte erreicht man über die folgenden Befehle: | ||
* xrandr | * xrandr (Bildschirm-Drehung) | ||
* xsetwacom set "Serial Wacom Tablet stylus" Rotate | * xsetwacom set "Serial Wacom Tablet stylus" Rotate (Änderung der Stiftausrichtung) | ||
* setkeycodes | * setkeycodes (Änderung der Tastenbelegung) | ||
* echo | * echo (Schreiben des Status-Files) | ||
Wie oben bereits dargestellt benötigt man für den Befehl | Wie oben bereits dargestellt benötigt man für den Befehl '''setkeycodes''' root-Rechte, was eine Änderung der Datei '''/etc/sudoers''' mit sich bringt, damit das Script auch von nicht-priviligierten Nutzern ausgeführt werden kann. Dazu legt man eine Gruppe '''rotation''' an und erlaubt dieser Gruppe, den Befehl '''setkeycodes''' auszuführen. Die Bearbeitung der Datei /etc/sudoers ist hinlänglich dokumentiert, weshlab hier nicht im Detail darauf eingegangen wird. | ||
Der | Der '''Status-File''', der zum Auslesen der aktuellen Bildschirmausrichtung benötigt wird, kann bespielsweise im /home-Verzeichnis oder in /tmp angelegt werden. Nicht-priviligierte Nutzer müssen jedoch Schreibrechte für diese Datei haben. | ||
touch /Pfad/zum/anzulegenden/Status-File | touch /Pfad/zum/anzulegenden/Status-File | ||
Zeile 105: | Zeile 105: | ||
else | else | ||
case "$CONDITION" in | case "$CONDITION" in | ||
0) `xrandr -o 3` && xsetwacom set "Serial Wacom Tablet stylus" Rotate cw && `sudo setkeycodes 6d 103 6e 108 71 158 6f 159` && echo 3 > $STATUS_FILE ;; | 0) `xrandr -o 3` && xsetwacom set "Serial Wacom Tablet stylus" Rotate cw && `sudo setkeycodes | ||
3) `xrandr -o 2` && xsetwacom set "Serial Wacom Tablet stylus" Rotate half && `sudo setkeycodes 6d 158 6f 103 6e 159 71 108` && echo 2 > $STATUS_FILE ;; | 6d 103 6e 108 71 158 6f 159` && echo 3 > $STATUS_FILE ;; | ||
2) `xrandr -o 1` && xsetwacom set "Serial Wacom Tablet stylus" Rotate ccw && `sudo setkeycodes 6e 103 71 159 6d 108 6f 158` && echo 1 > $STATUS_FILE ;; | 3) `xrandr -o 2` && xsetwacom set "Serial Wacom Tablet stylus" Rotate half && `sudo setkeycodes | ||
1) `xrandr -o 0` && xsetwacom set "Serial Wacom Tablet stylus" Rotate none && `sudo setkeycodes 71 103 6d 159 6f 108 6e 158` && echo 0 > $STATUS_FILE ;; | 6d 158 6f 103 6e 159 71 108` && echo 2 > $STATUS_FILE ;; | ||
2) `xrandr -o 1` && xsetwacom set "Serial Wacom Tablet stylus" Rotate ccw && `sudo setkeycodes | |||
6e 103 71 159 6d 108 6f 158` && echo 1 > $STATUS_FILE ;; | |||
1) `xrandr -o 0` && xsetwacom set "Serial Wacom Tablet stylus" Rotate none && `sudo setkeycodes | |||
71 103 6d 159 6f 108 6e 158` && echo 0 > $STATUS_FILE ;; | |||
esac | esac | ||
fi | fi | ||
Zeile 114: | Zeile 118: | ||
exit 0 | exit 0 | ||
Der obere Bereich (bis else) ermöglicht die direkte Eingabe in ein Terminal (wird während der täglichen Arbeit mit dem Tablet aber nicht benötigt), der untere Bereich liest den Status-File ein und führt dann die entsprechenden Befehle aus und schreibt das Ergebnis wieder in den Status-File. | Der obere Bereich (bis '''else''') ermöglicht die direkte Eingabe in ein Terminal (wird während der täglichen Arbeit mit dem Tablet aber nicht benötigt), der untere Bereich liest den Status-File ein und führt dann die entsprechenden Befehle aus und schreibt das Ergebnis wieder in den Status-File. | ||
Das Script kann beispielsweise unter /usr/local/bin/rotatex61t.sh abgelegt werden. Für das Script sind noch die Rechte mit dem Befehl chmod anzupassen. | Das Script kann beispielsweise unter /usr/local/bin/rotatex61t.sh abgelegt werden. Für das Script sind noch die Rechte mit dem Befehl chmod anzupassen. | ||
Zeile 122: | Zeile 126: | ||
root# chmod a+x /usr/local/bin/rotatex61t.sh | root# chmod a+x /usr/local/bin/rotatex61t.sh | ||
Über "Systemeinstellungen" --> "Tastatur" --> "Tastenkombinationen" kann die Rotationstaste mit diesem Script belegt werden. | Über "Systemeinstellungen" --> "Tastatur" --> "Tastenkombinationen" kann die zuvor konfigurierte Rotationstaste (Hardwarebutton) mit diesem Script belegt werden. | ||
===Schnellstarter=== | ===Schnellstarter=== | ||
Die gewünschten Schnellstarter sind ähnlich wie das Script aufgebaut. Hier die Datei | Die gewünschten Schnellstarter sind ähnlich wie das Script aufgebaut. Hier die Datei '''tabletright''' als Anschauung: | ||
/usr/bin/xrandr -o right | /usr/bin/xrandr -o right | ||
Zeile 134: | Zeile 138: | ||
echo 3 > /home/frank/bin/rotatex61t/.rotate-status | echo 3 > /home/frank/bin/rotatex61t/.rotate-status | ||
Man sieht also, dass diese einzelne Datei im Prinzip das Gleiche macht, wie der Abschnitt "0)" in der zweiten case-Verzweigung des Rotation-Scripts. Ähnliche Dateien werden nun für jede einzelne Bildschirmausrichtung nach dem Muster des Rotations-Scripts angelegt. Diese werden ebenfalls | Man sieht also, dass diese einzelne Datei im Prinzip das Gleiche macht, wie der Abschnitt '''"0)"''' in der zweiten case-Verzweigung des Rotation-Scripts. Ähnliche Dateien werden nun für jede einzelne Bildschirmausrichtung nach dem Muster des Rotations-Scripts angelegt. Diese werden ebenfalls unterhalb von /usr/local/bin abgelegt und die Rechte angepasst. | ||
Als Abschluss habe ich mir noch vier Icons | Als Abschluss habe ich mir noch vier Icons erstellt, die man für die Schnellstarter verwenden kann. Der rote Buchstabe steht dabei für '''right''', '''left''', '''none''' bzw. '''inverted'''. | ||
[[Bild:Tablet-right.png]] | [[Bild:Tablet-right.png]] | ||
Zeile 144: | Zeile 148: | ||
Mittels des Programms '''"alacarte"''' können in der Sektion '''"Zubehör"''' vier neue Einträge erstellt werden: | |||
"Neuer Eintrag" --> "Name: Rotate Inverted" --> "Befehl: Ablageort der Schnellstarte-Datei" --> Kommentar nach belieben. | "Neuer Eintrag" --> "Name: Rotate Inverted" --> "Befehl: Ablageort der Schnellstarte-Datei" --> Kommentar nach belieben. | ||
Diese vier Schnellstarter können dann noch zu denn Favoriten zugefügt werden, so dass diese schnell erreichbar sind. Einer der Hardware-Button fungiert | Diese vier Schnellstarter können dann noch zu denn Favoriten zugefügt werden, so dass diese schnell erreichbar sind. Einer der Hardware-Button fungiert wie oben beschrieben als Super-Taste, so dass mit einem Tastendruck die Gnome-Shell geöffnet werden kann. | ||
Sollte gewünscht werden, dass das Tablet auch im Tablet-Modus herunter gefahren wird, benötigt man noch eine weiter Zeile in der Datei /etc/rc.local, welche den Status-File auf "0" setzt: | Sollte gewünscht werden, dass das Tablet auch im Tablet-Modus bzw. im gedrehten Zustand herunter gefahren wird, benötigt man noch eine weiter Zeile in der Datei /etc/rc.local, welche den Status-File auf "0" setzt, um nach einem Neustart wieder den Ursprungszustand herzustellen: | ||
#rc.local (Auszug) | #rc.local (Auszug) |
Version vom 30. Mai 2012, 21:46 Uhr
Einleitung
Die gerätespezifischen Funktionen der X-Tablets funktionieren unter Linux zumeist nicht gleich nach der Installation des Grundsystems oder sie funktionieren nur zum Teil. Dieser Beitrag zeigt Wege auf, wie die Tabletfunktionen unter verschiedenen Linux-Distibutionen eingerichtet werden können.
Debian
Grundinstallation
Die folgende Installationsanleitung bezieht sich auf ein X61t mit Debian Testing. Sie ist jedoch in Grundzügen auch auf andere Tablets der X-Serie anwendbar. Auf bekannte Besonderheiten bzgl. andere Modelle der X-Serie wird weiter unten eingegangen. Als Installationmedium kann ein Image von www.debian.org verwendet werden. Hierzu wird empfohlen erst ein Grundsystem ohne X (also ohne grafische Oberfläche) zu installieren. Nach einer Anpassung der Dateien /etc/fstab (falls erforderlich) und /etc/apt/sources.list kann nun der bevorzugte Desktop-Manager installiert werden. Für die hier aufgezeigte beispielhafte Installation von Debian Testing wurde Gnome 3 verwendet. Es sind jedoch auch andere Desktop Environments denkbar. Dabei ist dann jedoch zu beachten, dass bspw. bei der weiter unten aufgezeigte Möglichkeit mit der Ansteuerung mittels Schnellstartern eventuell etwas andere Wege in Bezug auf die Darstellung am Desktop gewählt werden müssen.
Erster Reboot unter X
Nach dem ersten Neustart funktioniert bereits die Eingabe mittels Stift. Bis hierhin wurden noch keine Veränderungen am System vorgenommen. Die Bildschirmrotation funktioniert noch nicht, die Sondertasten unterhalb des Bildschirms (im folgenden Hardwarebutton genannt) weisen noch keine Funktion auf.
Anforderungen und Ziele
Das X-Tablet soll die folgenden Anforderungen erfüllen können:
- Rotations-Button - Es soll eine Bildschirmrotation von 90° gegenüber der vorherigen Einstellung über einen Knopfdruck auf den Rotationsbutton (Hardwarebutton) ausgeführt werden. Des Weiteren soll sich die Stiftausrichtung automatisch so verändern, dass die Ausrichtung des Stiftes der Ausrichtung des Bildschirms folgt.
- Schnellstarter - Es sollen Schnellstarter vorhanden sein, mit der eine beliebige Bildschirmausrichtung unter Umgehung des Rotationsbuttons sofort anwählbar ist. Auch hier soll sich der Stift der Bildschirmausrichtung anpassen.
- Super-Taste - Unter Gnome 3 ist der Super-Taste eine elementare Funktion zugeordnet. Ein Hardware-Button soll diese Funktion übernehmen.
- Hoch / Runter / Rechts / Links-Tasten - Die Tablets der Serie X6xt verfügen an der rechten Bildschirmunterkante über eine gemeinsame Taste, die die Funktionen Hoch, Runter, Rechts und Links ausführen kann. Die Funktionen Hoch und Runter sind im Tablet-Modus durchaus sinnvoll, die Funktionen Rechts und Links sind zum Beispiel beim surfen eher unwichtig und sollen durch die Tastenbelegungen Vor und Zurück ersetzt werden.
- Mitdrehen der Hoch / Runter / Vor / Zurück - Tasten - Die oben genannten Tasten sollen sich bei der Bildschirm-Rotation mitdrehen und der Bildschirmausrichtung folgen. Hält der Nutzer bspw. sein Tablet hochkant, soll Zurück zu Hoch werden, Vor zu Runter, Runter zu Zurück und Hoch zu Vor. Es soll also eine nach der jeweiligen Ausrichtung eine logische Anordnung der Tasten gegeben sein.
- Automatische Bildschirm-Rotation - Auf diesen Punkt wird hier nicht eingegangen.
Hardware-Buttons konfigurieren
Eine Möglichkeit den Scancode herauszufinden bietet das Programm evtest. evtest erfordert root-Rechte. Führen Sie also die folgenden Befehle als root aus. Das Programm evtest befindet sich in den Main-Repos und kann über einen Paket-Manager installiert werden. Als erstes wird herausgefunden, welches Device enötigt wird.
root# egrep -e ".*keyboard.*/dev/input/event[0-9]{1,2}.*" /var/log/Xorg.0.log
Daraufhin erhält man eine Ausgabe wie:
[ 5.543] (**) AT Translated Set 2 keyboard: Device: "/dev/input/event0"
Als nächstes startet man evtest mit folgendem Aufruf:
root# evtest /dev/input/event0
Daraufhin erhält man eine ziemlich lange Liste. Die oben aufgeführten Codes kann man sich ansehen, diese werden zum Teil später noch benötigt. Wichtig sind jedoch die, die durch einen Tastendruck ausgelesen werden können. Ein solcher Abschnitt sieht etwa so aus:
Event: time 1326493063.385652, type 4 (Misc), code 4 (ScanCode), value 68 Event: time 1326493063.385661, type 1 (Key), code 125 (Leftmeta), value 0 Event: time 1326493063.385664, -------------- Report Sync ------------
Die wichtigen Werte habe sind in diesem Beispiel value 68 und code 125. Die Scancodes der Hardware-Buttons sollten nun der Reihe nach ausgelesen und notiert werden. Mit den gewonnen Werten kann man schon ein wenig arbeiten. Um beispielsweise die mittlere der drei Hardware-Buttons mit dem Keysym der Supertaste zu hinterlegen, gibt man als root den folgenden Befehl ein:
root# setkeycodes 68 125
So würde also der Befehl aussehen, der zu der Tastenbelegung aus dem obigen Beispiel führt. Die erste Zahl steht also für die gewünschte Taste, die zweite für das damit verbundene Zeichen. Hierbei kann (fast) noch nichts schief gehen. Die Änderung der Tastenbelegung verschwindet nach einem Neustart. Es können so also testweise alle Tasten mit neuen Keycodes hinterlegt und vor allem getestet werden.
Nachdem die nötigen Belegungen heraus gefunden und getestet wurden, können diese in die Datei /etc/rc.local eingetragen werden, damit sie nach einem Neustart immer wirksam werden. Hier ein beispielhafter Auszug:
#rc.local # Button Left setkeycodes 6e 158 # Button Right setkeycodes 6d 159
Damit können die Tasten schon die vorgesehen Aktionen ausführen.
Rotationsscript
Was soll das Rotationsscript können?
- Bildschirm der Reihe nach von none über right nach inverted und weiter zu left und wieder nach none drehen.
- Stift mitdrehen, dies ist nötig, da sonst die Ausrichtung des Stiftes nicht mit der Bildschirmausrichtung übereinstimmt.
- Belegung der Hoch / Runter / Rechts (Vor) / Links (Zurück)-Buttons nach der Bildschirmausrichtung ändern.
- Bildschirmausrichtung in einen status-File schreiben
Zusätzlich soll ja auch noch die Bildschirmdrehung per Schnellstarter möglich sein, so dass es nötig ist, die aktuelle Bildschirmausrichtung jederzeit abfragen zu können. Es muss also noch eine Status-Datei angelegt werden, in die der aktuelle Rotations-Status hineingeschrieben wird und abrufbar ist.
Die obigen Punkte erreicht man über die folgenden Befehle:
- xrandr (Bildschirm-Drehung)
- xsetwacom set "Serial Wacom Tablet stylus" Rotate (Änderung der Stiftausrichtung)
- setkeycodes (Änderung der Tastenbelegung)
- echo (Schreiben des Status-Files)
Wie oben bereits dargestellt benötigt man für den Befehl setkeycodes root-Rechte, was eine Änderung der Datei /etc/sudoers mit sich bringt, damit das Script auch von nicht-priviligierten Nutzern ausgeführt werden kann. Dazu legt man eine Gruppe rotation an und erlaubt dieser Gruppe, den Befehl setkeycodes auszuführen. Die Bearbeitung der Datei /etc/sudoers ist hinlänglich dokumentiert, weshlab hier nicht im Detail darauf eingegangen wird.
Der Status-File, der zum Auslesen der aktuellen Bildschirmausrichtung benötigt wird, kann bespielsweise im /home-Verzeichnis oder in /tmp angelegt werden. Nicht-priviligierte Nutzer müssen jedoch Schreibrechte für diese Datei haben.
touch /Pfad/zum/anzulegenden/Status-File
Hier das Rotations-Script:
#!/bin/bash # name: rotatex61t.sh # from: Frank Zimmermann # date: 2011-12-21 # version: 0.0.1 STATUS_FILE=/home/frank/bin/rotatex61t/.rotate-status CONDITION=`cat $STATUS_FILE` if [ -n "$1" ] then case "$1" in 3|right) N=3; T=cw ;; 1|left) N=1; T=ccw ;; 2|inverted) N=2; T=half ;; 0|normal) N=0; T=none ;; esac /usr/bin/xrandr -o $N && xsetwacom set "Serial Wacom Tablet stylus" Rotate $T && echo $N > $STATUS_FILE else case "$CONDITION" in 0) `xrandr -o 3` && xsetwacom set "Serial Wacom Tablet stylus" Rotate cw && `sudo setkeycodes 6d 103 6e 108 71 158 6f 159` && echo 3 > $STATUS_FILE ;; 3) `xrandr -o 2` && xsetwacom set "Serial Wacom Tablet stylus" Rotate half && `sudo setkeycodes 6d 158 6f 103 6e 159 71 108` && echo 2 > $STATUS_FILE ;; 2) `xrandr -o 1` && xsetwacom set "Serial Wacom Tablet stylus" Rotate ccw && `sudo setkeycodes 6e 103 71 159 6d 108 6f 158` && echo 1 > $STATUS_FILE ;; 1) `xrandr -o 0` && xsetwacom set "Serial Wacom Tablet stylus" Rotate none && `sudo setkeycodes 71 103 6d 159 6f 108 6e 158` && echo 0 > $STATUS_FILE ;; esac fi exit 0
Der obere Bereich (bis else) ermöglicht die direkte Eingabe in ein Terminal (wird während der täglichen Arbeit mit dem Tablet aber nicht benötigt), der untere Bereich liest den Status-File ein und führt dann die entsprechenden Befehle aus und schreibt das Ergebnis wieder in den Status-File.
Das Script kann beispielsweise unter /usr/local/bin/rotatex61t.sh abgelegt werden. Für das Script sind noch die Rechte mit dem Befehl chmod anzupassen.
Beispiel:
root# chmod a+x /usr/local/bin/rotatex61t.sh
Über "Systemeinstellungen" --> "Tastatur" --> "Tastenkombinationen" kann die zuvor konfigurierte Rotationstaste (Hardwarebutton) mit diesem Script belegt werden.
Schnellstarter
Die gewünschten Schnellstarter sind ähnlich wie das Script aufgebaut. Hier die Datei tabletright als Anschauung:
/usr/bin/xrandr -o right xsetwacom set "Serial Wacom Tablet stylus" Rotate Cw xsetwacom set "Serial Wacom Tablet eraser" Rotate Cw sudo setkeycodes 6d 103 6f 159 6e 108 71 158 echo 3 > /home/frank/bin/rotatex61t/.rotate-status
Man sieht also, dass diese einzelne Datei im Prinzip das Gleiche macht, wie der Abschnitt "0)" in der zweiten case-Verzweigung des Rotation-Scripts. Ähnliche Dateien werden nun für jede einzelne Bildschirmausrichtung nach dem Muster des Rotations-Scripts angelegt. Diese werden ebenfalls unterhalb von /usr/local/bin abgelegt und die Rechte angepasst.
Als Abschluss habe ich mir noch vier Icons erstellt, die man für die Schnellstarter verwenden kann. Der rote Buchstabe steht dabei für right, left, none bzw. inverted.
Mittels des Programms "alacarte" können in der Sektion "Zubehör" vier neue Einträge erstellt werden:
"Neuer Eintrag" --> "Name: Rotate Inverted" --> "Befehl: Ablageort der Schnellstarte-Datei" --> Kommentar nach belieben.
Diese vier Schnellstarter können dann noch zu denn Favoriten zugefügt werden, so dass diese schnell erreichbar sind. Einer der Hardware-Button fungiert wie oben beschrieben als Super-Taste, so dass mit einem Tastendruck die Gnome-Shell geöffnet werden kann.
Sollte gewünscht werden, dass das Tablet auch im Tablet-Modus bzw. im gedrehten Zustand herunter gefahren wird, benötigt man noch eine weiter Zeile in der Datei /etc/rc.local, welche den Status-File auf "0" setzt, um nach einem Neustart wieder den Ursprungszustand herzustellen:
#rc.local (Auszug) echo 0 > /Pfad/zum/Status-File
In der Datei /usr/share/X11/xorg.conf.d/50-wacom.conf können zahlreiche Veränderungen zum Verhalten des Stiftes abgeändert werden. Nähere Informationen zum Umfang und den Möglichkeiten der Änderungen liefert
man wacom
Um die Änderungen wirksam zu machen muss der X-server mit
root# /etc/init.d/gdm3 restart
neu gestartet werden.
Vorsicht! Die vor der Editierung funktionierende Datei ist unbedingt zu sichern, so dass bei bei einer fehlerhaften Editierung der Ursprungszustand wieder hergestellt werden kann! Dies erreicht man bspw. dadurch, dass vorherige Einstellungen nicht aus der Datei gelöscht, sondern durch voranstellen eines Rautezeichens (#) auskommentiert werden. Sollte der X-Server nicht korrekt starten ist die betreffende Datei mit einem Editor auf der Konsole zu starten und wieder abzuändern.
Besonderheiten X41 Tablet
Die obige Installationsanleitung ist in den Grundzügen auch für die älteren Modelle X41t gültig. Da bei diesen Modellen die Hardware-Buttons jedoch etwas anders ausgebildet sind, kann bei dem oben gezeigten Rotationsscript der Befehl
sudo setkeycodes
sowie die damit zusammenhängenden Änderungen entfallen. Das selbe gilt bei den Scripten "tabright" usw.
Besonderheiten X201 Tablet Multitouch
Erstaunlicherweise funktioniert nach der Grundinstallation neben der Stifteingabe auch bereits die Eingabe mittels Finger. Neben der oben bereits aufgeführten Datei /usr/share/X11/xorg.conf.d/50-wacom.conf existiert auch eine /usr/share/X11/xorg.conf.d/50-multitouch.conf. Die Unterstützung einer wirklichen Multitouch-Bedienung beschränkt sich jedoch auf nur wenige Programme. So ist eine Multitouch-Bedienung bspw. bei dem Bildbetrachter eog möglich. Hier kann mittles der Bedienung mit zwei Fingern in das Bild hinein- bzw. herausgezoomt werden.
Da die Ausbildung der Hardware-Buttons von der des X61t abweicht, kann bei dem Rotations-Script der Befehl
sudo setkeycodes
sowie die damit zusammenhängenden Änderungen entfallen. Das selbe gilt bei den Scripten "tabright" usw.
Manchmal kann es Sinn machen, die Bedienung mittels Finger zeitweise auszuschalten. Dies erreicht man mit dem Befehl
xsetwacom set "Serial Wacom Tablet touch" Touch off
bzw. kann es mit dem Befehl
xsetwacom set "Serial Wacom Tablet touch" Touch on
wieder einschalten. Da diese Funktion sicherlich hauptsächlich im Tablet-Modus verwendet wird, sollte hierfür ein Schnellstarter / eine Schaltfläche angelegt werden.
Nützliche Programme
Im Folgenden werden einige nützliche Programme für die Verwenundung auf einem X-Tablet vorgestellt. Da diese Programm oftmals hinreichend auf anderen Seiten erklärt und dokumentiert sind, soll hier nur kurz das Anwendungsgebiet des jeweiligen Programmes erklärt werden, für weiterführende Informationen folgen Sie bitte dem Link.
Die unten genannten Programm sind in den Menüs oftmals auf verschiende Untermenüs wie Barrierefreiheit, Sonstiges oder Zubehör verteilt. Deswegen kann es sinnvoll sein, ein eigenes Menü "Tablet" anzulegen und mittels des Programms alacarte die Tabletanwendungen in dieses Untermenü zu verschieben.
- CellWriter (Handschrift-Erkennung): CellWriter ist in den Quellen aller gängigen Distributionen enthalten. Es dient zur Handschriftenerkennung und Steuerung mittels Handschirft. CellWriter im ubuntuusers-wiki
- Gnome-Barrierefreiheit (Bildschirmtastatur): Die Gnome-eigene Bildschirmtastatur kann über die Schaltfläche "Barrierefreiheit" --> "Bildschirmtastatur" aktiviert werden.
- Florence (Bildschirmtastatur): Florence ist ebenfalls eine Bildschirmtastatur und ebenfalls in den Quellen aller gängigen Distributionen enthalten.
- Xournal (Notizen erstellen): Xournal ist ein Programm zur Erstellung von Notizen bspw. auf pdf-Dokumenten. Mit diesem Programm kann man pdf-Dateinen bspw. korrigieren oder kommentieren. Xournal im ubuntuusers-wiki
- Gromit (Notizen auf dem Bildschirm anfertigen): Gromit eignet sich dazu, Notizen direkt auf dem Bildschirm anzufertigen. Dies ist vor allem bei Präsentationen nützlich. Ebenso ist es denkbar mit Gromit einen bestimmten Ablauf darzustellen und diesen Screenshot dann abzuspeichern (bspw. dioe Einrichtung eines Emailkontos o.ä.). Gromit im ubuntuusers-wiki
- Easystroke (Gestenerkennung): Easystroke eignet sich zur Gestensteuerung. Dabei können den verschiedenen Gesten sowohl Befehle als auch Tastenkommandos zugewiesen werden. Easystroke ist nicht in allen gängigen Quellen enthalten, weshalb das Programm teils manuell nachinstalliert werden muss. Easystroke im ubuntuusers-wiki, Projektseite auf SourceForge
- MyPaint (Zeichenprogramm): MyPaint wurde speziell für den Einsatz auf Tablets entwickelt. Mittels MyPaint lassen sich Zeichnungen anfertigen. MyPaint auf ubuntuusers-wiki
- Grab and Drag (Firefox-Add-On zur Bedienung mit Stift oder Finger): Gestensteuerung von Firefox / Iceweasel. Drag und Grab auf addons.mozilla.org