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).