x220t Ubuntu 11.10 – 2

Jetzt habe es hingekriegt, dass sich der Bildschirm in Abhängigkeit der Bildschirmposition dreht.

Voraussetzung ist, dass das Rotationsscript von hier x220t Ubuntu 11.10 bereits funtkioniert.

Dann muss man noch folgendes Modul installieren:

sudo apt-get install tp-smapi-dkms

Dies beinhaltet das Modul HDAPS, welches in Verbindung mit HDAPSD Daemon hauptsächlich zum Schutz der Festplatte gedacht ist. Mehr zulesen gibt es hier http://wiki.ubuntuusers.de/festplattenschutz

Dann schreiben wir noch den Modulnamen in folgende Datei, damit das HDAPS Modul bei jedem Neustart geladen wird. Also wieder den Editor nano öffnen und unten hdaps ranhängen.

sudo nano /etc/modules

Dann mein Script:

sudo touch ~/scripte/tabletHdaps
sudo chmod +x ~/scripte/tabletHdaps
sudo nano ~/scripte/tabletHdaps

#!/bin/bash
 
#tolerance, wann gedreht werden soll
tol=20
#wichtig um die art der rotation zu erfahren
rightRotate=660
leftRotate=360
normalRotate=360
invertedRotate=660
 
#zum merken, wohin wir alles rotiert haben
rotation=""
 
#in welchem modus sind wir denn?
file="/sys/devices/platform/thinkpad_acpi/hotkey_tablet_mode"
 
rotate() {
	#obere grenze
	down=$(($2-$tol));
	#untere grenze
	up=$(($2+$tol));
 
	#sind wir in der grenze?
	if [[ $1 -gt $down && $1 -le $up ]]; then
		#sind wir nicht vllt schon da rotiert?
		if [ "$rotation" != "$3" ]; then
			#rotation merken
			rotation="$3"
			#rotieren
			xrotate $3
		fi
	fi
}
 
while [ true ] 
do
	#in welchem Modus sind wir gerade?
	mode=`cat $file`
	if [ $mode == "1" ]; then
		#derzeitige position holen
		values=`cat /sys/devices/platform/hdaps/position`
		#trennen nach x und y
		xvalue=${values:1:3}
		tmp=${values:5}
		yvalue=${tmp:0:3}
		#drehen, wenn notwendig
		rotate $xvalue $rightRotate "right"
		rotate $xvalue $leftRotate "left"
		rotate $yvalue $normalRotate "normal"
		rotate $yvalue $invertedRotate "inverted"
	fi
	#angenehmer, damit nicht zu oft rotiert wird, wenn man z.B. von rechts ueber inverted nach links dreht
	sleep 1
done

Dieses Script liest die aktuelle Lage des Laptops aus und entscheidet dann daran in welche Lage rotiert werden soll.
Rotiert wird hier aber nur, wenn man bereits im Tablet-Modus ist.

Damit das Script gleich startet, machen wir wieder folgendes:

echo "$HOME/scripte/tabletHdaps &" >> ~/.profile

Hierbei gehe ich davon aus, dass das Script tabletHdaps heißt und unter ~/scripte/ liegt.

2 Kommentare
  1. Micha sagt:

    Hi,

    tausend Dank für die super nachzuvollziehende Anleitung bisher!!! Ich wollte nun auch die positionsabhängige Rotation einrichten. Installation von tp-smapi-dkms klappt reibungslos.

    „sudo echo „hdaps“ >> /etc/modules“ bringt eine Fehlermeldung („/etc/modules
    bash: /etc/modules: Permission denied“)

    Was meinst du?

    Ach ja, noch eine andere Sache, die vielleicht für den einen oder anderen nützlich sein kann. Dein Skript tabletRotate (http://www.yawc.de/2012/01/x220t-ubuntu-11-10/) wäre vielleicht eine gute Vorlage, um ein weiteres vereinfachtes Skirpt zu bauen (ich kann es aber leider nicht): Keine Abfrage der Rotationsart sondern (bei Druck auf Rotationstaste) immer von normal (oder inverted) auf rechts drehen und zurück, also quasi eine bimodale Rotation Hochformat vs. Querformat. Wäre das drin?

    Micha

  2. Sven sagt:

    Hi Micha,

    habe das gleich mal geändert, das habe ich da doof aufgeschrieben :)
    schreibe den Modulnamen mit nano (also sudo nano /etc/modules) direkt ans Ende der Datei, das sollte dann klappen.

    Wenn ich es richtig verstehe, auf Tastendruck ins Querformat und dann ins Ausgansformat zurueck, ja?
    Ich denke, das kriegt man hin, ich mach das die nächsten Tage mal, wenn ich ne sekunde zeit habe. danke für die idee :)

Hinterlasse eine Antwort

Deine Email-Adresse wird niemals veröffentlicht. Pflichtfelder sind mit * gekennzeichnet.