ThinkPad Yoga 260 – Teil 4: Ubuntu 15.10 – Tablet Modus und Notizen mit dem Stylus

Die folgenden Ausführungen beziehen sich auf:

  • Lenovo ThinkPad YOGA 260 mit BIOS Version 1.14
  • Ubuntu 15.10 mit Kernel 4.4.0-040400

1. Tablet Mode

EDIT: Update

Um im Tablet Modus vernünftig mit dem Stift arbeiten zu können, kümmern wir uns zunächst darum, dass Ubuntu den Tablet-Modus überhaupt erkennt. Dafür legen wir zunächst im Verzeichnis „/etc/acpi/events/“ drei neue Dateien an:

1. „tabletModeYoga260“ mit folgendem Inhalt:

event=ibm/hotkey LEN0068:00 00000080 000060f0
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/tabletModeYoga260.sh

2. „openLidYoga260“ mit folgendem Inhalt:

event=button/lid LID open
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh open

3. „closeLidYoga260“ mit folgendem Inhalt:

event=button/lid LID close
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh close

Im Verzeichnis „/etc/“ legen wir

4. „thinkpad_state“ mit folgendem Inhalt an:

laptopMode

Im Verzeichnis „VOLLSTAENDIGER_PFAD_ZUM_SCRIPT“ kommen jetzt beide Scripte:

5. „thinkpadState.sh“ mit folgendem Inhalt:

#!/bin/bash
if [ $1 = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
elif [ $1 = "close" ]
then
	echo "closing" > /etc/thinkpad_state
fi

6 „tabletModeYoga260.sh“  mit folgendem Inhalt (meine Version, die im TabletModus sowohl Touchpad als auch Trackpoint ausschaltet (den Touchscreen aber an lässt), den Bildschirminhalt um 90 Grad nach links dreht und die Touchscreen-Eingaben entsprechend anpasst. Außerdem wird die Touchtastatur „onboard“ gestartet):

# tabletMode script for ThinkPad Yoga 260
#
# Version 0.7
# by SaGrLand with special thanks to djahma
#
# Best to use with acpi hindge event "ibm/hotkey LEN0068:00 00000080 000060f0"
# Events "button/lid LID close" and "button/lid LID open" must be handled (they trigger hindge event too)
# In tabletMode touchpad and trackpoint are disabled, screen and touchscreen are rotated 90 degrees counterclockwise, and onboard keyboard is started.
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

#!/bin/bash

# get currentState 
read -r currentState < /etc/thinkpad_state

# get correct XAUTHORITY and DISPLAY (acpid started by root)
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

# get touchpad state (maybe use trackpoint state if your touchpad is disabled by default)
touchpad=$(xinput list-props "ETPS/2 Elantech Touchpad" | grep "Device Enabled" | awk -F ":" '{print $2}')

if [ $currentState = "laptopMode" ]
then
	# disable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 0
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 0

	# disable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 0
	
	# rotate screen and touchscreen to the left
	xrandr -o left
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate ccw

	# start onboard keyboard
	sudo -b -u #1000 onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-default.png "TabletMode" "ON"
	echo "tabletMode" > /etc/thinkpad_state

elif [ $currentState = "tabletMode" ]
then
	# enable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 1
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 1

	# enable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 1

	# rotate screen and touchscreen to the right
	xrandr -o normal
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate none

	# stop onboard keyboard
	killall onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-unreadable.png "TabletMode" "OFF"
	echo "laptopMode" > /etc/thinkpad_state
fi

7. Nicht vergessen, die Dateien 5 und 6 mit „chmod +x“ noch ausführbar zu machen.

8. Systemd das Behandeln des LidSwitchEvents abgewöhnen: Dafür die Datei „/etc/systemd/logind.conf“ öffnen, die Zeile „#handleLidSwitch=“ suchen und wie folgt ändern:

#HandleLidSwitch=ignore

9. Den logind-Dienst neu starten:

sudo systemctl restart systemd-logind

10. Dann noch zur Sicherheit systemd mitteilen, das es acpid beim nächsten Neustart starten soll:

sudo systemctl enable acpid

11. Damit die Scripte ohne Neustart funktionieren, starten wir auch acpid einfach nochmal neu:

sudo systemctl restart acpid

12. Update: Direkt nach dem (Neu)Start des Yoga, steht jetzt thinkpad_state immer auf closing oder opening. Wir müssen also beim Anmelden thinkpad_state noch auf laptopMode setzen (außer des Yoga ist angdockt und daher der Displaydeckel geschlossen. Dafür können wir einfach thinkpad_state mit „sudo chown BENUTZERNAME:BENUTZERNAME /etc/thinkpad_state“ für den aktuellen Benutzer beschreibbar machen. In die beim Anmelden ausgführten Datei „/home/BENUTZERNAME/.xsessionrc“ muss dann nur noch der folgende Code eingetragen werden:

#!/bin/bash
lidState=$(cat /proc/acpi/button/lid/LID/state | sed 's/^state: *//g')

if [ $lidState = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
fi

Eigentlich müsste man hier auch noch thinkpad_state abfragen, falls man das Yoga im Tabletmodus ausgeschaltete hat…

2. Stylus und Xournal

Kümmern wir uns als nächstes um den Stift. Ich habe mich für Xournal als Schreibprogramm entschieden, weil damit auch problemlos PDFs annotiert werden können. Hier lässt sich unter „Option->Pen und Touch“ nicht nur die Druckstärkeerkennung einschalten, sondern auch „Touchscreen as Hand Tool“. So kann man mit den Fingern über die Nutzung des Touchscreen etwa scrollen und mit dem Stift schreiben/malen (sonst würde standardmäßig auch der Finger auf dem Touchscreen ein Schreib/Malevent auslösen). Damit das funktioniert, muss aber noch das richtige XInput-Device für den Touch ausgewählt werden. Einfach unter „Option->Pen und Touch: Designate as Touchscreen…“ den Eintrag „Wacom … Finger Touch“ auswählen. Vor dem Beenden nicht vergessen, über „Option->Einstellungen speichern“ die Änderungen zu sichern, sonst darf man sich bei jedem neuen Programmaufruf durch die Einstellungen hangeln.

So weit, so gut. Allerdings gibt es in Xournal Version 0.4.8 einen nervigen Bug: ein übereifrige Internationalisierung macht es unmöglich, dass Xournal beim nächsten Start das gespeicherte Touchscreen Device richtig zuordnet. Mit dem Finger wird daher wieder munter gemalt… Bis es einen Patch gibt, hilft es, einfach nach dem Speichern die Config-Datei „~/.xournal/config“ per Hand zu ändern. Einfach ein fälschlicherweise durch einen Punkt ersetztes Komma vor Ltd beim Touchscreen Device wieder einfügen. So sieht die entsprechende Zeile richtig aus:

touchscreen_device_name=Wacom Co.,Ltd. Pen and multitouch sensor Finger touch

Über „Optionen->Belegung Taste 2“ kann die Funktion der oberen Taste in der Mitte des Stiftes eingestellt werden. Es existiert zwar ein Punkt „Optionen->Belegung Taste 3“, dieser hat bei mir allerdings keine Auswirkungen auf die untere Taste in der Stiftmitte (das scheint an Xournal zu liegen, denn bei MyPaint werden beide Button mit unterschiedlichen Funktionen erkannt).

16 Gedanken zu „ThinkPad Yoga 260 – Teil 4: Ubuntu 15.10 – Tablet Modus und Notizen mit dem Stylus“

  1. hallo sg

    danke für das tutorial, wirklich schön nachvollziehbar geschrieben. als halb versierter linuxler stehe ich bei punkt 12 an. konkret kann ich die folgenden 2 schritte nicht nachvollziehen:

    dudo chown BENUTZERNAME:BENUTZERNAME /etc/thinkpad_state
    -> was tue ich da genau?

    /home/BENUTZERNAME/.xsessionrc
    -> dieses file finde ich nicht (benutze kubuntu 15.10)

    wenn du zeit und lust hast, meinen frage zu beantworten freue ich mich!

    beste grüsse
    tb

    1. Hallo,
      1. zunächst hat sich da ein Fehler beim Schreiben eingeschlichen: es muss „sudo“ nicht „dudo“ heißen. Mit „sudo“ (unter KDE glaube ich „kdesudo“) führst du den Befehl „chown“ als root (ähnlich wie der Administrator unter Windows) mit umfassenden Benutzerrechten aus. „chown“ steht für „change owner“ und ändert den Besitzer (Person:Zugehörige Gruppe) der Datei „thinkpad_state“ auf den „normalen“ Benutzer. Wenn du den Befehl nicht ausführst, gehört die Datei weiter dem root und kann vom „normalen“ Nutzer nicht geschrieben/geändert werden.
      2. Ich musste die Datei .xsessionrc auch selber angelegt (z.B. ohne Inhalt einfach mit „touch /etc/BENUTZERNAME/.xsessionrc“). Allerdings kenne ich mich mit KDE und seinem Displaymanager nicht aus. Nach einer kurzen Google-Suche könnte die für Kubuntu korrekte Datei die folgende sein: „/etc/kde4/kdm/Xsetup“

  2. Hallo, mit dem Bootparameter kann man keine verschlüsselte Installation von Ubuntu durchführen, oder? Ich komme nach der Installation nicht in das „Please unlock disk sda3_crypt“-Feld; die Passworteingabe ist stattdessen oben links am Bildschirmrand ersichtlich.

    Darüber hinaus: Was ist ab Ubuntu 16.04. treiber/firmwareseitig anders am Yoga 260? Wird es auch eines Tages möglich sein den Gyroskop-Sensor zu nutzen um automatisch den Bildschirminhalt zu rotieren?

  3. Danke für die Info. Ich habe gestern Ubuntu 16.04. installiert und frage mich, ob deine Skripte hier und weiteres für Ubuntu 16.04. genauso gültig ist oder sich etwas ändert/wegfällt.

    All dieser Aufwand muss ja irgendwann mal ein Ende haben und ist von normalen Nutzern mit geringer IT-Erfahrung nicht erwartbar. Aber ob das schon in Ubuntu 16.04. alles out-of-the-box funktioniert (was ich erhofft hatte, es aber nicht so ist) oder doch erst in 16.10….?

    Erkennt Ubuntu den Tablet-Modus nicht, weil das Yoga 260 ein besonders neues Gerät ist, dass anders funktioniert oder weil Canonical o.a. das nicht implementieren, obwohl es Tablet-Yogas schon seit einigen Jahren gibt?

    Nach deiner nächsten Antwort werd ich alles auf dieser Seite mal ausprobieren… Danke vorab!

  4. Danke für deine Ausführungen rund um das Yoga 260 und Linux! Ich besitze selber ein Yoga 460 und benutze aktuell auch noch Ubuntu 15.10.
    Ich versuche mich zwischendurch immer wieder daran, das automatische Drehen des Bildschirms zu aktivieren. Ich habe deswegen auch bereits vor ein paar Monaten rumtelefoniert… Zuerst die Lenovo Business Hotline, die mich dann auf einen Lenovo Fachbetrieb verwiesen hat. Niemand hatte auch nur eine leise Ahnung, welcher Beschleunigungs- bzw. Lagesensor verbaut ist. Ohne diese Info erweist sich die Suche nach einem Treiber ebenfalls zur Qual.

  5. Eine Anmerkung bzgl. Xournal und der Problematik mit der Speicherung in der „~/.xournal/config“ Datei. Ich hatte das Problem auch auf meinem Yoga 14. Das blöde ist, dass bei der oben beschriebenen Vorgehensweise nach der erneuten Speicherung der Konfiguration wieder der Fehler drin ist.
    Nach der Kommunikation mit den Entwicklern haben die den Bug gefixt. Dies ist jedoch zur Zeit nur in der aktuellen Entwicklerversion im git-Repository eingepflegt. Es macht also ggf. Sinn, sich das git-Repository
    https://sourceforge.net/p/xournal/code/ci/master/tarball
    herunterzuladen und Xournal von „Hand“ zu kompilieren und zu installieren. Die Vorgehensweise ist in der dem Archiv beiliegenden INSTALL-Datei gut beschrieben.

  6. Hallo, auch ich danke für die sehr schöne – eigentlich einfache Beschreibung. Stehe jetzt aber vor Punkt 5 und habe nicht den blassensten Schimmer, was der „VOLLSTAENDIGER_PFAD_ZUM_SCRIPT“ ist? Muss dieser Pfad auch in die erstellten Dateien abgeändert werden? Herzlichen Dank im Voraus! Grüße Milka

    1. Ein Beispiel:

      action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh close

      Wenn thinkpadState.sh als Datei in deinem Benutzerverzeichnes im Ordner Skripte liegt, dann müsste die Zeile wahrscheinlich wie folgt aussehen:

      action=/home/milka/Skripte/thinkpadState.sh close

      1. Hat super geklappt, vielen lieben Dank!

        Den Stift musste ich jeweils mit drehen, da sonst die Achsen vertauscht waren und er ~2cm neben dem Berührungspunkt tippte. Außerdem habe ich den Bildschirm nach rechts gedreht, damit der Stift oben ist und bequemer aus der Halterung gezogen werden kann.

        Vielen Dank für die Einleitung für Dummies, es hat Spaß gemacht das Script einzurichten, ich habe ein bisschen was gelernt und verstehe mein System nun besser.

        Viele Grüße Milka

  7. Bezüglich der mittleren Taste auf dem Stylus:
    Zumindest auf dem Yoga 460 schaltet die auf den „Eraser“ um. Xournal kann damit auch umgehen, dafür muss aber das Häkchen bei Option/Pen and Touch/Eraser Tip gesetzt werden. Dann kann die obere Taste für einen anderen Zweck genutzt werden

  8. Vielen Dank für Ihre Lösungen. Haben sie schon Erfahrung mit 16.04 gemacht? Die Scripte scheinen nicht mehr wirklich zu funktionieren, sie lösen nicht von selbst aus, von der Konsole gestartet funktioniert der Wechsel zurück auf Desktop nicht mehr :(

    Eine andere Frage: Gibt es eine Möglichkeit, die Bildschirmdrehung vom Gyroskop abhängig zu machen?

  9. Hallo, ich habe das Notebook schon länger nicht mehr. Daher kann ich leider weder zu Ubuntu 16.04 etwas sagen, noch dazu, ob es mittlerweile einen Treiber für das Gyroskop gibt.

  10. @Karl
    Evtl liest du das hier ja noch. Schau dir mal das Projekt an:
    https://github.com/wdbm/spin
    Du musst dort zwar auch den mode selber starten aber wenn du die Orientierung änderst, dann dreht sich das Bild von selbst.
    Bei mir auf dem X1 Yoga geht es unter Ubuntu 16.04, nur der Pen funktioniert nicht richtig.

    MfG Fabs

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert