Hallo zusammen,
in der letzten Zeit habe ich ein wenig an meinem X61t mit Debian Testing rumgebastelt. Ich möchte ich gerne die von mir beschrittenen wege in Bezug auf die Tabletfunktionen darstellen. Wer weiß, vielleicht kann das einmal jemand gebrauchen.
1. Ausgangssituation / Gundistallation
Als Installationmedium habe ich ein Image von http://www.debian.org verwendet. Ich bin seit einiger zeit dazu über gegangen nur noch ein Grundsystem ohne X zu installieren und mir X dann nachzuinstallieren. Nach der Installation des Grundsystem nehme ich erst die bei mir notwendigen Änderungen in der /etc/fstab und in der /etc/apt/sources.list vor und installiere dann Gnome. Das ist wenig aufregend und hinreichend beschrieben bzw. bekannt.
2. Erster Reboot unter X
Nach dem ersten Reboot funktionierte bereits der Stift. Bis hierhin habe ich noch keine Veränderungen am System vorgenommen.
3. Meine Anforderungen und Gedanken
So....die erste wichtige Frage, die man sich stellen sollte ist: was will ich überhaupt. Meine persönlichen Ideen waren, dass ich eine Rotation über den Rotationbutton haben wollte (das ist ja ganz klar), des weiteren wollte ich Schnellstarter haben, mit denen ich jede beliebige Rotation sofort anwählen konnte. Des weiteren sollte, unter Gnome 3 recht praktisch, eine der Tablet-Hardware-Buttons die Funktion der Super-Taste haben (auch nicht aussergewöhnliches). Mit den Hoch / Runter / rechts / links-Buttons hatte ich jedoch etwas anderes vor. Hoch / Runter ist beim Surfen durchaus sinnvoll und sollte erhalten bleiben. Rechts / Links ist jedoch eher nutzlos (da mögen andere anders denken) und sollten durch Vor und Zurück ersetzt werden. Ausserdem sollten sich Hoch / Runter / Vor / Zurück mit der Bildschirmausrichtung "mitdrehen". Das heisst also: Ist die untere Bildschirmkante bei den Hardware-Buttons, sollte Hoch für Hoch stehen, Runter für Runter usw., ist der Bildschirm jedoch nach rechts gekippt, wird "Vor" zu "Hoch", "Zurück" zu "Runter", "Hoch" zu "Zurück" und "Runter" zu "Vor" (ich hoffen Ihr versteht, was ich meine). Diese Veränderung sollte bei jeder Änderung der Ausrichtung automatisiert erfolgen. Eine komplett automatische Rotation benötige ich nicht, diese wird hier also nicht berücksichtigt.
4. Das System mit den Hardware-Buttons bekannt machen (scancode --> keycode --> keysym)
Ich denke die meisten nutzen dafür am liebsten Hilfsmittel wie xev. Ich persönlich arbeite lieber mit evtest, aber das ist Geschmackssache. Ich gehe hier also nur auf die Verwendung von evtest ein. Das Paket ist in den Standardquellen vorhanden.
evtest erfordert root-Rechte. Als erstes finden wir heraus, welches Device wir brauchen:
Daraufhin erhält man eine Ausgabe wie:
Als nächstes startet man evtest mit folgendem Aufruf:
Daraufhin erhält man eine ziemlich lange Liste. Die oben aufgeführten Codes kann man sich mal ansehen, wichtig für uns sind jedoch die, die wir durch den Tastendruck im unteren Bereich herauslesen. Ein solcher Abschnitt sieht etwa so aus:
Die wichtigen Werte habe ich fett hinterlegt. Ich habe mir also nun der Reihe nach den Keycode der verschiedenen Tasten herausgeschrieben. 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:
Das wäre quasi die Taste aus dem obigen Beispiel. Hierbei kann (fast) noch nichts schief gehen. Die Änderung der Tastenbelegung verschwindet nach einem reboot. Ihr könnt also ruhig probieren, ohne, dass was schief geht. Übrigens, kleine Geschichte am Rande: Ich bin bei dieser Aktion einmal in der Spalte verrutscht und habe irrtümlich meine Entertaste mit dem Keysym der Super-Taste belegt. das ist natürlich blöd, weil ich zu diesem Zeitpunkt keine weitere Entertaste belegt hatte, aber natürlich auch keine andere taste mit Enter belegen konnte, weil ich Enter ja nicht bedienen konnte. Da half nur ein reboot.
Nachdem ich die nötigen Belegungen heraus gefunden und getestet hatte, habe ich diese in die /etc/rc.local eingetragen, um sie auch nach einem Neustart gleich zu haben. Hier ein Auszug:
Damit sollten die Tasten schonmal das tun, was sie sollen.
5. Mein Rotationsscript
Was soll das Rotationsscript können?
Die obigen Punkte erreicht man über die folgenden Befehle:
Den "Status-File" habe ich in meinem persönlichen Home-Verzeichnis abgelegt, ich nutze das Tablet allein. Er kann natürlich auch in /tmp abgelegt werden.
Hier nun das Script:
Der obere Bereich (bis else) ermöglicht die direkte Eingabe in ein Terminal (wird aber für gewöhnlich nicht gemacht), der untere Bereich liest den Status-File ein und führt dann die Befehle aus und schreibt das Ergebnis wieder in den Status-File.
Das Script habe ich unter /usr/local/bin/rotateX61.sh abgelegt. Hier sind noch die Rechte anzupassen.
Über die Tastenkombinationen habe ich die Rotationstaste mit diesem Script belegt. Das funktioniert also schonmal.
6. Schnellstarter
Die von mir gewünschten Schnellstarter sind ähnlich wie das Script aufgebaut. Hier mal die Datei "tabletright" als Anschauung:
Man sieht also, dass diese einzelne Datei im Prinzip das gleich macht, die der Abschnitt "0)" in der zweiten case-Verzweigung. Ich habe noch für jede weitere mögliche Ausrichtung eine entsprechende Datei angelegt. Diese werden ebenfalls in /usr/local/bin abgelegt und die Rechte angepasst.
Als Abschluss habe ich mir noch vier Icons gebastelt, die ich für die Schnellstarter verwenden kann.
![tablet-inverted.png tablet-inverted.png](https://thinkpad-forum.de/data/attachments/32/32800-f7a210613031da1c3930c507f63730b4.jpg?hash=96IQYTAx2h)
![tablet-left.png tablet-left.png](https://thinkpad-forum.de/data/attachments/32/32801-202db4c56b2b6a2bae58149dd47eb479.jpg?hash=IC20xWsrai)
![tablet-normal.png tablet-normal.png](https://thinkpad-forum.de/data/attachments/32/32803-3e292e99baa5ba85ca0a7b485b270c9e.jpg?hash=Pikumbqluo)
![tablet-right.png tablet-right.png](https://thinkpad-forum.de/data/attachments/32/32805-2442d80ba639cc73075b9adb7430286a.jpg?hash=JELYC6Y5zH)
Über "alacarte" habe ich mir in der Sektion "Zubehör" vier neue Einträge erstellt:
"Neuer Eintrag" --> "Name: Rotate Inverted" --> "Befehl: Ablageort der Schnellstarte-Datei" --> Kommentar nach belieben.
Diese vier Schnellstarter habe ich mir dann noch zu meinen Favoriten zugefügt, über den mittleren Hardware-Button kann ich bekanntlich die Supertaste bedienen. So komme ich schnell zu den Schnellstartern.
Wie gesagt, Auto-Rotation benötige ich nicht bzw. ich möchte gerne selber in der Hand haben, welche Ausrichtung ich gerade benötige. Soweit läuft alles ganz hervorragend, ich hoffe, dass ich in meinem kleinen How-To nichts vergessen habe.
Grüße
Frank
in der letzten Zeit habe ich ein wenig an meinem X61t mit Debian Testing rumgebastelt. Ich möchte ich gerne die von mir beschrittenen wege in Bezug auf die Tabletfunktionen darstellen. Wer weiß, vielleicht kann das einmal jemand gebrauchen.
1. Ausgangssituation / Gundistallation
Als Installationmedium habe ich ein Image von http://www.debian.org verwendet. Ich bin seit einiger zeit dazu über gegangen nur noch ein Grundsystem ohne X zu installieren und mir X dann nachzuinstallieren. Nach der Installation des Grundsystem nehme ich erst die bei mir notwendigen Änderungen in der /etc/fstab und in der /etc/apt/sources.list vor und installiere dann Gnome. Das ist wenig aufregend und hinreichend beschrieben bzw. bekannt.
2. Erster Reboot unter X
Nach dem ersten Reboot funktionierte bereits der Stift. Bis hierhin habe ich noch keine Veränderungen am System vorgenommen.
3. Meine Anforderungen und Gedanken
So....die erste wichtige Frage, die man sich stellen sollte ist: was will ich überhaupt. Meine persönlichen Ideen waren, dass ich eine Rotation über den Rotationbutton haben wollte (das ist ja ganz klar), des weiteren wollte ich Schnellstarter haben, mit denen ich jede beliebige Rotation sofort anwählen konnte. Des weiteren sollte, unter Gnome 3 recht praktisch, eine der Tablet-Hardware-Buttons die Funktion der Super-Taste haben (auch nicht aussergewöhnliches). Mit den Hoch / Runter / rechts / links-Buttons hatte ich jedoch etwas anderes vor. Hoch / Runter ist beim Surfen durchaus sinnvoll und sollte erhalten bleiben. Rechts / Links ist jedoch eher nutzlos (da mögen andere anders denken) und sollten durch Vor und Zurück ersetzt werden. Ausserdem sollten sich Hoch / Runter / Vor / Zurück mit der Bildschirmausrichtung "mitdrehen". Das heisst also: Ist die untere Bildschirmkante bei den Hardware-Buttons, sollte Hoch für Hoch stehen, Runter für Runter usw., ist der Bildschirm jedoch nach rechts gekippt, wird "Vor" zu "Hoch", "Zurück" zu "Runter", "Hoch" zu "Zurück" und "Runter" zu "Vor" (ich hoffen Ihr versteht, was ich meine). Diese Veränderung sollte bei jeder Änderung der Ausrichtung automatisiert erfolgen. Eine komplett automatische Rotation benötige ich nicht, diese wird hier also nicht berücksichtigt.
4. Das System mit den Hardware-Buttons bekannt machen (scancode --> keycode --> keysym)
Ich denke die meisten nutzen dafür am liebsten Hilfsmittel wie xev. Ich persönlich arbeite lieber mit evtest, aber das ist Geschmackssache. Ich gehe hier also nur auf die Verwendung von evtest ein. Das Paket ist in den Standardquellen vorhanden.
evtest erfordert root-Rechte. Als erstes finden wir heraus, welches Device wir brauchen:
Code:
root# egrep -e ".*keyboard.*/dev/input/event[0-9]{1,2}.*" /var/log/Xorg.0.log
Daraufhin erhält man eine Ausgabe wie:
Code:
[ 5.543] (**) AT Translated Set 2 keyboard: Device: "/dev/input/event0"
Als nächstes startet man evtest mit folgendem Aufruf:
Code:
root# evtest /dev/input/event0
Daraufhin erhält man eine ziemlich lange Liste. Die oben aufgeführten Codes kann man sich mal ansehen, wichtig für uns sind jedoch die, die wir durch den Tastendruck im unteren Bereich herauslesen. Ein solcher Abschnitt sieht etwa so aus:
Code:
Event: time 1326493063.385652, type 4 (Misc), code 4 (ScanCode), [B]value 68[/B]
Event: time 1326493063.385661, type 1 (Key), [B]code 125[/B] (Leftmeta), value 0
Event: time 1326493063.385664, -------------- Report Sync ------------
Die wichtigen Werte habe ich fett hinterlegt. Ich habe mir also nun der Reihe nach den Keycode der verschiedenen Tasten herausgeschrieben. 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:
Code:
root# setkeycodes 68 125
Das wäre quasi die Taste aus dem obigen Beispiel. Hierbei kann (fast) noch nichts schief gehen. Die Änderung der Tastenbelegung verschwindet nach einem reboot. Ihr könnt also ruhig probieren, ohne, dass was schief geht. Übrigens, kleine Geschichte am Rande: Ich bin bei dieser Aktion einmal in der Spalte verrutscht und habe irrtümlich meine Entertaste mit dem Keysym der Super-Taste belegt. das ist natürlich blöd, weil ich zu diesem Zeitpunkt keine weitere Entertaste belegt hatte, aber natürlich auch keine andere taste mit Enter belegen konnte, weil ich Enter ja nicht bedienen konnte. Da half nur ein reboot.
Nachdem ich die nötigen Belegungen heraus gefunden und getestet hatte, habe ich diese in die /etc/rc.local eingetragen, um sie auch nach einem Neustart gleich zu haben. Hier ein Auszug:
Code:
#rc.local
# Button Left
setkeycodes 6e 158
# Button Right
setkeycodes 6d 159
Damit sollten die Tasten schonmal das tun, was sie sollen.
5. Mein 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"
- Belegung der Hoch / Runter / Rechts (Vor) / Links (Zurück)-Buttons nach der Bildschirmausrichtung ändern.
- Bildschirmausrichtung in einen status-File schreiben
Die obigen Punkte erreicht man über die folgenden Befehle:
- xrandr
- xsetwacom set "Serial Wacom Tablet stylus" Rotate
- setkeycodes
- echo
Den "Status-File" habe ich in meinem persönlichen Home-Verzeichnis abgelegt, ich nutze das Tablet allein. Er kann natürlich auch in /tmp abgelegt werden.
Hier nun das Script:
Code:
#!/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 aber für gewöhnlich nicht gemacht), der untere Bereich liest den Status-File ein und führt dann die Befehle aus und schreibt das Ergebnis wieder in den Status-File.
Das Script habe ich unter /usr/local/bin/rotateX61.sh abgelegt. Hier sind noch die Rechte anzupassen.
Über die Tastenkombinationen habe ich die Rotationstaste mit diesem Script belegt. Das funktioniert also schonmal.
6. Schnellstarter
Die von mir gewünschten Schnellstarter sind ähnlich wie das Script aufgebaut. Hier mal die Datei "tabletright" als Anschauung:
Code:
/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 gleich macht, die der Abschnitt "0)" in der zweiten case-Verzweigung. Ich habe noch für jede weitere mögliche Ausrichtung eine entsprechende Datei angelegt. Diese werden ebenfalls in /usr/local/bin abgelegt und die Rechte angepasst.
Als Abschluss habe ich mir noch vier Icons gebastelt, die ich für die Schnellstarter verwenden kann.
![tablet-inverted.png tablet-inverted.png](https://thinkpad-forum.de/data/attachments/32/32800-f7a210613031da1c3930c507f63730b4.jpg?hash=96IQYTAx2h)
![tablet-left.png tablet-left.png](https://thinkpad-forum.de/data/attachments/32/32801-202db4c56b2b6a2bae58149dd47eb479.jpg?hash=IC20xWsrai)
![tablet-normal.png tablet-normal.png](https://thinkpad-forum.de/data/attachments/32/32803-3e292e99baa5ba85ca0a7b485b270c9e.jpg?hash=Pikumbqluo)
![tablet-right.png tablet-right.png](https://thinkpad-forum.de/data/attachments/32/32805-2442d80ba639cc73075b9adb7430286a.jpg?hash=JELYC6Y5zH)
Über "alacarte" habe ich mir in der Sektion "Zubehör" vier neue Einträge erstellt:
"Neuer Eintrag" --> "Name: Rotate Inverted" --> "Befehl: Ablageort der Schnellstarte-Datei" --> Kommentar nach belieben.
Diese vier Schnellstarter habe ich mir dann noch zu meinen Favoriten zugefügt, über den mittleren Hardware-Button kann ich bekanntlich die Supertaste bedienen. So komme ich schnell zu den Schnellstartern.
Wie gesagt, Auto-Rotation benötige ich nicht bzw. ich möchte gerne selber in der Hand haben, welche Ausrichtung ich gerade benötige. Soweit läuft alles ganz hervorragend, ich hoffe, dass ich in meinem kleinen How-To nichts vergessen habe.
Grüße
Frank
Zuletzt bearbeitet von einem Moderator: