Tablet-Rotation - ein Quickie

silberstein

New member
Themenstarter
Registriert
2 Okt. 2010
Beiträge
173
Hier möchte ich eine einfache Anleitung und Gedächtnisstütze zur Verfügung stellen,
wie ich das Rotationsproblem gelöst habe - zunächst ohne die Tablet-Tasten zu verwenden.

Ich arbeite hier mit einem X61T unter Debian stable und MATE 1.14.

Als erstes habe ich mir einen Ordner auf dem Desktop abgelegt,
in dem alle entscheidenen Dateien liegen. Darunter die folgenden vier Skripte:

Code:
xrandr -o [B][COLOR=#0000ff]normal[/COLOR][/B]
xsetwacom set "Serial Wacom Tablet WACf008 stylus" Rotate none
xsetwacom set "Serial Wacom Tablet WACf008 eraser" Rotate none
xsetwacom set "Serial Wacom Tablet WACf008 touch" Rotate none
#dconf write /org/mate/desktop/font-rendering/rgba-order "'rgb'"

sudo setkeycodes 71 103 #Up
sudo setkeycodes 6f 108 #Down
sudo setkeycodes 6d 106 #Right
sudo setkeycodes 6e 105 #Left

#oder als Einzeiler
#sudo setkeycodes 71 103 6f 106 6d 108 6e 105
Code:
xrandr -o [COLOR=#0000ff][B]inverted[/B][/COLOR]
xsetwacom set "Serial Wacom Tablet WACf008 stylus" Rotate half
xsetwacom set "Serial Wacom Tablet WACf008 eraser" Rotate half
xsetwacom set "Serial Wacom Tablet WACf008 touch" Rotate half
#dconf write /org/mate/desktop/font-rendering/rgba-order "'bgr'"

sudo setkeycodes 6f 103 #Up
sudo setkeycodes 71 108 #Down
sudo setkeycodes 6e 106 #Right
sudo setkeycodes 6d 105 #Left

#oder als Einzeiler
#sudo setkeycodes 6f 103 71 106 6e 108 6d 105
Code:
xrandr -o [COLOR=#0000ff][B]left[/B][/COLOR]
xsetwacom set "Serial Wacom Tablet WACf008 stylus" Rotate ccw
xsetwacom set "Serial Wacom Tablet WACf008 eraser" Rotate ccw
xsetwacom set "Serial Wacom Tablet WACf008 touch" Rotate ccw
#dconf write /org/mate/desktop/font-rendering/rgba-order "'vrgb'"

sudo setkeycodes 6e 103 #Up
sudo setkeycodes 6d 108 #Down
sudo setkeycodes 71 106 #Right
sudo setkeycodes 6f 105 #Left

#oder als Einzeiler
#sudo setkeycodes 6e 103 71 106 6d 108 6f 105
Code:
xrandr -o [COLOR=#0000ff][B]right[/B][/COLOR]
xsetwacom set "Serial Wacom Tablet WACf008 stylus" Rotate cw
xsetwacom set "Serial Wacom Tablet WACf008 eraser" Rotate cw
xsetwacom set "Serial Wacom Tablet WACf008 touch" Rotate cw
#dconf write /org/mate/desktop/font-rendering/rgba-order "'vbgr'"

sudo setkeycodes 6d 103 #Up
sudo setkeycodes 6e 108 #Down
sudo setkeycodes 6f 106 #Right
sudo setkeycodes 71 105 #Left

#oder als Einzeiler
#sudo setkeycodes 6d 103 6e 106 6f 108 71 105

Die vier Dateien werden mit chmod a+x /pfad/zur/datei ausführbar gemacht.
Danach legt man sich Schnellstarter (Verknüpfungen) auf dem Desktop an.

Das könnte dann z.B. so aussehen:
attachment.php


Der Befehl xrandr ist für die Drehung der Anzeige verantwortlich.
Für das korrespondierende Mitdrehen der Wacom-Ebenen wird der Befehl xsetwacom benötigt.
Damit letzteres funktioniert, ist die korrekte Angabe der Eingabegeräte wichtig.
Zur Ausgabe der xsetwacom-Gerätenamen genügt in der Konsole die Eingabe

Code:
$ [B]xsetwacom list[/B]
Serial Wacom Tablet WACf008 stylus    id: 12    type: STYLUS    
Serial Wacom Tablet WACf008 eraser    id: 15    type: ERASER    
Serial Wacom Tablet WACf008 touch     id: 16    type: TOUCH
Mit setkeycodes werden hier die Pfeil-Tasten an die Drehung angepaßt,
sonst bliebe z.B. die Nach-Unten-Taste bei Drehung um 180° unverändert, obwohl sie nun nach oben weisen würde.
Wem das vorerst unwichtig oder ist, kann die Zeilen auskommentieren und die folgenden Hinweise überspringen.

Setkeycodes verlangt root-Rechte und wird nach dem Kennwort fragen.
Damit das nicht passiert, macht man z.B. folgendes:

Mit root-Rechten trägt man in die /etc/sudoes ein
Code:
# Gruppe Rotation soll eigenständig setkeycodes ohne Passwortabfrage ausführen dürfen
%rotation   ALL=NOPASSWD:/usr/bin/setkeycodes
Dafür muss man natürlich die Gruppe rotation anlegen und sich selbst zu dieser Gruppe hinzufügen.
https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/

An die scancode-Werte kommt man z.B. so:
Code:
$ sudo egrep -e ".*keyboard.*/dev/input/event[0-9]{1,2}.*" /var/log/Xorg.0.log 
(II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/[COLOR=#00ff00]event0[/COLOR])
(**) evdev: AT Translated Set 2 keyboard: Device: "/dev/input/[COLOR=#00ff00]event0[/COLOR]"
$ [B]sudo evtest /dev/input/[COLOR=#00ff00]event0[/COLOR][/B]
Wem der setkeycode-Ansatz zu aufwendig ist, kann die setkeycode- durch xmodmap-Befehle ersetzen.
https://thinkpad-forum.de/threads/5...ste-X60-tablet?p=501738&viewfull=1#post501738
https://wiki.ubuntuusers.de/Xmodmap/

Die dconf-Zeile ist bei mir nicht auskommentiert. Unter MATE führt sie zur Anpassung der Kantenglättung an die jeweilige Rotation. Ansonsten erhält man bei eingeschalteter Glättung ein störend unscharfes Schriftbild. Programme wie Firefox muss ich nach Rotation leider trotzdem neustarten, weil die sich von meiner dconf-Zeile unbeeindruckt zeigen. Unter XP habe ich die Kantenglättung ganz abgeschaltet, was aber bei mir unter Linux zu unerträglichen Ergebnissen führt. Wenn sich jemand mit Schriften und Kantenglättung unter Linux beschäftigt hat, kann mir vielleicht helfen, auf Kantenglättung zu verzichten.
 

Anhänge

  • Bildschirmfoto zu 2016-07-01 17-18-31.png
    Bildschirmfoto zu 2016-07-01 17-18-31.png
    234,9 KB · Aufrufe: 158
Zuletzt bearbeitet:
Meine Lösung ist glaube ich eleganter. Man drücke den Rotation button schnell hintereinander, um durchzuschalten. Die Rotation des Digitizers, des D-Pads und der Subpixel-Anordnung (unter Xfce) inklusive. Außerdem wird kein root benötigt.

Code:
#!/bin/bash
## Handle screen rotation on X tablets (bind me to rotate button)
## By haarp, released under the GPL-3
# keycodes d-pad (shared with keyboard!):
# 111=Up, 113=Left, 114=Right, 116=Down, 36=Enter
# FIXME: also rotate in xfce settings so window manager is aware of new dimensions
trap '' SIGUSR1

SLEEPTIME=1

rotations=(normal left inverted right)
rotations_subpixel=(rgb vrgb bgr vbgr)
rotations_wacom=(none ccw half cw)
rotations_dpad=("keycode 111=Up\nkeycode 113=Left\nkeycode 114=Right\nkeycode 116=Down"
		"keycode 111=Right\nkeycode 113=Up\nkeycode 114=Down\nkeycode 116=Left"
		"keycode 111=Down\nkeycode 113=Right\nkeycode 114=Left\nkeycode 116=Up"
		"keycode 111=Left\nkeycode 113=Down\nkeycode 114=Up\nkeycode 116=Right")

nextRotation(){
	do_sleep=1
	i=$(( ($i+1)%4 ))
	notify-send -i object-rotate-left "$(basename "$0")" "${rotations[$i]}"
}

if [[ $(pgrep -c "$(basename "$0")") -lt 2 ]]; then	# we are the main instance

	xrandrout=$(xrandr --verbose | head -n2 | tail -n1 | awk '{print $5}')
	while [[ ${rotations[$i]} != $xrandrout ]]; do
		i=$(( ($i+1)%4 ))		# find current index
	done

	nextRotation				# first rotation
	trap 'nextRotation' SIGUSR1

	while [[ $do_sleep == 1 ]]; do
		do_sleep=0
		sleep $SLEEPTIME & wait		# interruptible sleep
	done

	trap '' SIGUSR1

	xrandr -o ${rotations[$i]} &
	xfconf-query -c xsettings -p /Xft/RGBA -s ${rotations_subpixel[$i]} &
	xsetwacom list | awk -F'\t' '{print $1}' | while read line; do
		xsetwacom set "$line" Rotate ${rotations_wacom[$i]} &
	done
	echo -e "${rotations_dpad[$i]}" | xmodmap - &

else						# main instance already running
	pkill -SIGUSR1 "$(basename "$0")"	# tell it to rotate further
	
fi
 
Großes Dankeschön! Werde ich mir auf jeden Fall anschauen.

- - - Beitrag zusammengeführt - - -

Ok, ich hab xfce4 installiert und das Skript /usr/haarp läuft wunderbar.
Das Durchdrücken und die dazugehörigen Notifier-Anzeigen sind wirklich toll.

Das "bind script to rotate button"-Problem habe ich vorerst so gelöst:

$ sudo setkeycodes 6c 183 #Rotate-Button auf F13-Taste
Tastaturkürzel angelegt: F13 --> /usr/haarp

Funktioniert :thumbsup:

Gibt's noch eine andere Script-Key-Binding-Methode?
 
Zuletzt bearbeitet:
Ich möchte mich auch für das Script bedanken.
Läuft unter Fedora xfce, und macht die Tablet Einrichtung wunderbar einfach.
 
Da schließe ich mich an (und bedanke mich auch für den Push, sodass ich den Thread so einfach und zur rechten Zeit gefunden habe)! Ich persönlich hab das ganze noch weiter vereinfacht, da ich weder das Gerät nach links oder rechts drehen möchte, noch einen aktivierten Touchscreen habe.
Touchscreen (und auch das Touchpad) kann man übrigens wie folgt deaktivieren:
sudo nano /usr/share/X11/xorg.conf.d/40-libinput.conf
Und dann unter die Zeile
Code:
MatchIsTouchscreen "on"
die Zeile
Code:
Option    "Ignore"   "true"
setzen. Neustarten und schon sind keine Fingereingaben mehr möglich und einer entspannten Nutzung des Digitizers steht nichts mehr im Weg.

Bei mir schaut das am X230 Tablet wie folgt aus: Unter .local/share/... liegen jetzt zwei Skripte und zwar normal.sh und inverted sh. Deren Inhalt schaut wie folgt aus:
normal.sh
Code:
xrandr -o normal
xsetwacom set "Wacom ISDv4 E6 Pen stylus" Rotate none
xsetwacom set "Wacom ISDv4 E6 Pen eraser" Rotate none

inverted.sh
Code:
xrandr -o inverted
xsetwacom set "Wacom ISDv4 E6 Pen stylus" Rotate half
xsetwacom set "Wacom ISDv4 E6 Pen eraser" Rotate half

Danach lassen sich die Skripte über die Einstellungen von Xfce in der Kategorie "Keyboard" > "Shortcuts" sehr angenehm verknüpfen. Als Tasten habe ich für invertieren den Rotationsknopf am Bildschirm gewählt und für das Zurückdrehen den Knopf für den Taskmanager. Funktioniert sehr gut und ist sehr simpel nachzuahmen. Wie es bei anderen Desktops aussieht, weiß ich leider nicht.

Der korrekte Gerätename lässt sich via
Code:
xsetwacom --list
herausfinden.
 
  • ok1.de
  • IT Refresh - IT Teile & mehr
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben