Die folgende Anleitung benutzt nicht die Lageerkennung des Tablets. Wer dies mitbenutzen möchte, sollte sich nach der Anleitung unter http://luke.no-ip.org/x60tablet/ richten. Das einzige, was sich beim X61t gegenüber der Anleitung ändert, sind die Scripte, die beim Auf- und Zuklappen ausgeführt werden, diese müssen swivel-up und swivel-down heißen.
Zunächst sollte man folgende Option in der xorg.conf in der “Device”-Section hinzufügen. Damit kann man Probleme bei der Bilddarstellung nach dem Drehen des Bildschirms beseitigen. Je nach verbautem Grafikchip kann man diese Option evtl. auch weglassen:
Option "DRI" "false"
Im nächsten Schritt muss folgendes in die Datei /etc/rc.local vor dem Eintrag exit 0 hinzugefügt werden:
setkeycodes 6f 108
setkeycodes 71 103
setkeycodes 6e 105
setkeycodes 6d 106
Danach die Datei /usr/local/bin/rotate mit dem folgenden Inhalt erstellen
def runCmd(cmd):
f = os.popen(cmd)
l = f.readlines()
f.close()
return l
def getCurrentRotation():
#setEnv()
try:
rrv = randrVersion()
if rrv < '1.2':
l = [s for s in runCmd(xrandr) if re.match('Current rotation', s)]
r = re.sub(’Current rotation - ‘, ”, l[0])
return r.strip()
elif rrv >= ‘1.2′:
l = runCmd(xrandr) #”%s | grep ‘LVDS connected’ | gawk ‘{print $4}’ | sed -e ’s/(//’” % xrandr)
l = [x for x in l if re.search(r'(LVDS|default) connected', x)][0]
l = l.split(’ ‘)[3]
l = re.sub(r’\(’, ”, l)
return l.strip()
except:
sys.stderr.write(”Can not determine current rotation, bailing out :(”)
sys.exit(-1)
def setRotation(o, devices):
#setEnv()
runCmd(”%s –output LVDS –rotate %s” % (xrandr, o))
wacomRots = {’normal’: ‘0′, ‘left’: ‘2′, ‘right’: ‘1′, ‘inverted’: ‘3′}
for d in devices:
runCmd(”%s set %s Rotate %s” % (xsetwacom, d, wacomRots[o]))
setKeymap(o)
def setEnv():
if os.environ.has_key(’DISPLAY’):
return # DISPLAY is already set, don’t mess with it.
if os.system(’pidof kdm > /dev/null’) == 0:
kdmsts = ‘/var/lib/kdm/kdmsts’
if os.access(kdmsts, os.R_OK):
kdmdata = open(kdmsts).readlines()
userline = [s for s in kdmdata if re.match(r':0=', s)][0]
user = re.sub(r’:0=’, ”, userline).strip()
os.environ['DISPLAY'] = ‘:0.0′
os.environ['XAUTHORITY'] = ‘/home/%s/.Xauthority’ % user
elif os.system(’pidof gdm > /dev/null’) == 0:
os.environ['DISPLAY'] = ‘:0.0′
os.environ['XAUTHORITY'] = ‘/var/lib/gdm/:0.Xauth’
def setKeymap(o):
for sc in scanCodes.keys():
os.system(’sudo setkeycodes %x %d’ % (scanCodes[sc], keyCodes[o][sc]))
def randrVersion():
#setEnv()
xrv = runCmd(’%s -v’ % xrandr)[0]
xrv = re.sub(r’.*version ‘, ”, xrv)
return xrv.strip()
def listDevices():
#setEnv()
dev = runCmd(”%s list dev | awk {’print $1′}” % xsetwacom)
dev = map(lambda s: s.strip(), dev)
return dev
main()
Die Rechte der Datei müssen auf 755 gesetzt werden.
Nun visudo ausführen und an das Ende der Datei folgendes hinzufügen:
%admin ALL=NOPASSWD: /usr/bin/setkeycodes
Damit kann aus dem oben angelegten Skript der Befehl setkeycodes aufgerufen werden, ohne dass man Root-Rechte benötigt.
Ob die Drehung funktioniert, kann man mit den Befehlen “rotate tablet” und “rotate laptop” ausprobieren.
Als nächstes wird die automatische Drehung in Angriff genommen:
Hierzu muss das Verzeichnis /etc/autorotate und darin die Datei /etc/autorotate/lastrotation mit dem Inhalt
laptop
erstellt werden. Die Berechtigungen der Datei sollten auf 666 gesetzt werden.
Als nächstes wird die Datei /usr/local/bin/autorotate mit dem Inhalt
#!/bin/sh
/usr/local/bin/rotate `cat /etc/autorotate/lastrotation`
und den Berechtigungen 755 erstellt.
Danach die Datei /usr/local/bin/setrotation mit dem Inhalt
#!/bin/sh
echo $1 > /etc/autorotate/lastrotation
/usr/local/bin/autorotate
und den Berechtigungen 755 erstellen.
Zuguterletzt müssen noch die Scripte erstellt werden, die ausgeführt werden, wenn der Tablet zu- bzw. wieder aufgeklappt wird:
/etc/acpi/events/swivel-up:
# called when tablet screen swivels up (into laptop mode)
event=ibm/hotkey HKEY 00000080 0000500a
action=/usr/local/bin/setrotation laptop
/etc/acpi/events/swivel-down:
# called when tablet screen swivels down (into tablet mode)
event=ibm/hotkey HKEY 00000080 00005009
action=/usr/local/bin/setrotation tablet
Nach einem Systemneustart sollte die automatische Drehung funktionieren. Die Standardorientierung im TabletMode kann in der Datei /usr/local/bin/rotate geändert werden. Dazu ändert man das Attribut bei tabletMode:
tabletMode = "right/normal/inverted/left"
Quellen:
http://luke.no-ip.org/x60tablet/
http://ubuntuforums.org/showthread.php?t=604896