Schlagwort: Rotation

Energiesparende halbautomatische Rotation unter Ubuntu 9.10

Nachdem nun der Touchscreen wie gewünscht funktioniert, kommt jetzt die Rotation an die Reihe.

Dieses Beispiel funktioniert für ein Lenovo X61 Tablet.


Tablet-PC Funktionalität unter Fedora 10 aktivieren für Lenovo X61t (Teil 2 – Sondertasten + Rotation)

Für Ubuntu gibt es hier eine neue Anleitung:Rotation unter Ubuntu

So im zweiten Teil kümmern wir uns um die Zusatztasten des Tablets. Dazu untersuchen wir zunächst die relevanten Keycodes. Dazu gibt es zwei Werkzeuge, eins für die Konsole und eins für den XServer.
Für die Konsole showkey und für den XSever xev
Auf meinem Tablet ließen sich so folgende Keycodes herausfinden:

1
2
3
4
5
6
7
8
9
10
Taste       Showkey         xev
Rotate      191         199
Werkzeugkasten  152         (160)
Escape      1           9
Oben        103         111
Rechts      106         114
Unten       108         116
Links       105         113
Enter       28          36
Reset       Unknown->code 0x67   no_event

Bei mir waren die xev-Codes alle um 8 größer als die von showkey. Dies ist aber wohl nicht immer der Fall.
Escape und Enter haben natürlich schon die Standardfunktionen, ebenso sind die Oben, Rechts, Unten und Links-Tasten bereits richtig belegt. Der Werkzeugkasten sperrt bei mir den Bildschirm, nur der Rotierknopf ist mit keiner Funktion belegt.
Diesem wollen wir nun Leben einhauchen.
Dazu müssen wir die Tastenbelegung des XServers editieren.

1
2
3
4
cp /etc/X11/Xmodmap    /etc/X11/Xmodmap.ORIGINAL
echo "! Custom Xmodmap for X61 Tablet PC" > /etc/X11/Xmodmap
xmodmap -pke >> /etc/X11/Xmodmap
nano /etc/X11/Xmodmap

Dort suchen wir nun nach dem oben gefundenen Keycode und schreiben hinter das Istgleich XF86User1KB.
Damit führt der Xserver dann beim Drücken der Taste die Aktion XF86User1KB aus. Jetzt müssen wir also nur noch eine Rotationsfunktion einbinden die wir dann mit der Aktion verknüpfen und dann funktioniert das ganze schon hoffentlich. Da ich nicht der erste bin der ein Tablet gekauft hat, gibt es bereits ein Python Script welches die Rotation sehr gut erledigt. (Lukes Homepage) Es ist zwar für ein X60 Tablet geschrieben aber man wird es schon so umbiegen können, dass es auch auf einem X61 Tablet läuft.
Mit folgenden Anweisungen sollte das Script installiert sein:

1
2
3
4
5
6
7
8
mkdir -p /usr/local/src/X61_XF86
pushd /usr/local/src/X61_XF86
wget http://luke.no-ip.org/x60tablet/examples/rotate
chmod ugo+x rotate
pushd /usr/local/bin
ln -s /usr/local/src/X61_XF86/rotate
popd
popd

Als nächstes müssen wir noch Berechtigungen setzen, so ist es erforderlich sudo zu verwenden wenn man den Bildschirm rotiert oder die globale Tastaturbelegung ändern möchte.
Dazu müssen wir einmal eine Gruppe der Tabletbenutzer anlegen. Gruppen werden in der Datei /etc/group eingerichtet.

1
nano /etc/group

Wir fügen in eine zusätzliche Zeile einfach folgendes ein:

1
tabletgroup:x:501:root,<strong>Tabletnutzernamen</strong>

Wobei die Nutzernamen jeweils durch Komma getrennt einzutragen sind, bei mir wäre es zum Beispiel tabletgroup:x:501:root,arsenal.
Jetzt müssen wir der Gruppe noch die Rechte zuweisen die sie haben soll: sudo benutzen für Rotation und Tastenbelegungändern. Dabei wollen wir natürlich nicht jedemal unser Passwort eingeben um dieses Ziel zu erreichen. Die Berechtigungen für sudu sind in der Datei /etc/sudoers zu finden. Also bedienen wir uns wieder unseres allseitsbeliebten Konsoleneditor als root:

1
nano /etc/sudoers

Wir fügen dort am Ende hinzu:

1
2
##Allow users to do tablet screen rotations if in this group
%tabletgroup    ALL=(ALL)       NOPASSWD:/usr/bin/setkeycodes,/usr/local/bin/rotate

Zudem suchen wir nach der Zeile:

1
Defaults    requiretty

und kommentieren diese durch voranstellen eines # aus.

Jetzt müssen wir noch die XF86User1KB mit dem rotate-Script in Verbindung bringen.
Dazu benötigt man wohl den gconf-editor (zumindest für Gnome) um das ganze etwas komfortabel zu gestalten. (Dank an Codejacked.com für den Guide)
Wir starten ihn aus dem Menü Anwendungen -> Systemwerkzeuge -> Konfigurationseditor oder über ein Terminal mit der Eingabe von gconf-editor.
Wir wechseln dann in der Liste zu apps/metacity/keybinding-commands.
Nun können wir rechts bei command_1 oder einem anderen freien Befehl folgendes eingeben:

1
sudo /usr/local/src/X61_XF86/rotate

Danach wechseln wir zu /apps/metacity/global_keybindings/run_command_1 und fügen dort XF86User1KB ein und „schon“ sollte die Rotation beim drücken des Knopfes ausgeführt werden.

Beim Testen ist mir jedoch aufgefallen, dass das Script nicht ganz funktioniert sondern aus der Funktion mit einem Fehler herausspringt, es versucht einfach für jedes Wacomgerät die Rotation zu verändern. Dummerweise ist jedoch ein recht seltsames Gerät gelistet, namens „ThinkPad Extra Buttons“, es kann jedoch nicht vom Wacomtreiber angesteuert werden. Daher muss im Script ausgeschlosssen werden, dass versucht wird die Rotation von dem Gerät zu ändern, dargestellt im folgenden Screenshot:
rotatescript
Ein Download ist auch verfügbar: rotate
Einfach als root folgendes ausführen:

1
2
3
4
5
6
7
8
mkdir -p /usr/local/src/X61_XF86
pushd /usr/local/src/X61_XF86
wget http://www.arsenal-of-wisdom.org/wp-content/uploads/2009/01/rotate
chmod ugo+x rotate
pushd /usr/local/bin
ln -s /usr/local/src/X61_XF86/rotate
popd
popd

Damit verhält sich unser Tablet schon recht zufriedenstellend unter Linux. Als nächtes werde ich versuchen die automatische Orientierung des Bildschirms zu aktivieren.

Dieser Artikel entstand haupsächlich aus Informationen die ich auf folgenden Seiten erhalten habe:
Installing Fedora 8 on an X61 Tablet
Lukes X60 tablet Seite