L'ingresso touchscreen non ruota: Lenovo Yoga 13 / Yoga 2 Pro


8

Dopo aver ricevuto un Lenovo Yoga 13 per Natale, sono stato soddisfatto delle sue prestazioni con Ubuntu. È facile cambiare l'orientamento del display nel menu Impostazioni display o digitando, ad es. xrandr -o invertedNel terminale. Tuttavia, ciò non ruota l'input del touchscreen (o, cosa meno importante, il touchpad).

Ho cercato soluzioni a questo problema e ho trovato due fonti promettenti.
(1) http://cc.oulu.fi/~rantalai/synaptics/ . L'installazione del pacchetto qui e l'esecuzione dei comandi consigliati hanno ruotato l'input del display e del touchpad (ma non quello del touchscreen).
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/ . Questo sito web ha raccomandato l'aggiornamento di un pacchetto di input, che non ho provato.


Il problema (e la soluzione) è lo stesso su Yoga 2 Pro
rubo77,

Forse puoi aggiungere la rotazione automatica anche con questo script: krizka.net/projects/autorotate
rubo77

Risposte:


8

Ho trovato una risposta semplice alla mia domanda leggendo le informazioni utili su Ubuntu Wiki: X - Input Coordinate Transformation .

Questi comandi possono essere utilizzati per allineare le rotazioni dei dispositivi di input e del display:

  1. Il primo comando ruota il display, dove può essere lasciato, a destra, normale o invertito:
    xrandr -o <orientation>

  2. rimappare il dispositivo di input:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

Il secondo comando riassocia il dispositivo di input (cioè, il touchpad o il touch screen) dove <matrix-elements-rowwise>è 0 -1 1 1 0 0 0 0 1, 0 1 0 -1 0 1 0 0 1, 1 0 0 0 1 0 0 0 1, o -1 0 1 0 -1 1 0 0 1; corrispondente agli orientamenti sopra.

I nomi del touchpad e del touchscreen possono essere trovati con xinput listed entrambi possono essere disabilitati interamente con xinput disable <device-name>. Successivamente, xinput enable <device-name>riattiverà il dispositivo di input.

Nel mio caso, e probabilmente per gli altri con Yoga 13 (anche su Yoga 2 Pro), viene chiamato il touchscreen ELAN Touchscreene il touchpad SynPS/2 Synaptics TouchPad.

Pertanto, ho inserito un breve script nella mia home directory chiamato rotate-inverted.shcon il seguente contenuto:

    #! / Bin / bash
    # Questo script ruota lo schermo e l'input del touchscreen di 180 gradi, disabilita il touchpad e abilita la tastiera virtuale
    xrandr -o invertito
    xinput set-prop 'ELAN Touchscreen' 'Matrice di trasformazione delle coordinate' -1 0 1 0 -1 1 0 0 1
    xinput disabilita 'SynPS / 2 Synaptics TouchPad'
    a bordo &

Poi ho reso lo script eseguibile con

chmod u+x rotate-inverted.sh

e assegnato il comando ~/rotate-inverted.shalla scorciatoia da tastiera Ctrl+ Alt+ Iin
Impostazioni di sistema -> Tastiera .

Dopo essermi disconnesso e riconnesso, sono stato in grado di ruotare la tastiera premendo quel tasto di scelta rapida.

Ho fatto lo stesso tipo di cose per le altre posizioni di rotazione, usando i comandi xinput enable 'SynPS/2 TouchPad'e killall onboardinvece di xinput disable 'SynPS/2 TouchPad'e onboard &per rotate-normal.sh.

Alcuni altri in questo thread hanno discusso dell'assegnazione di tali script ai pulsanti extra sullo
Yoga - come il pulsante di blocco - nonché di eseguirli automaticamente quando si cambia la posizione dello Yoga; ma non ero sicuro di come farlo.


Grazie per il tuo lavoro dettagliato. Mi chiedevo se ti fossero mai imbattute in ricerche che hanno parlato di come ottenere immediatamente questo riorientamento (usando l'accelerometro, suppongo)?
A.Wan

Funziona perfettamente anche sul mio Yoga 2 Pro! Lo script avanzato di seguito dall'utente267578 funziona perfettamente! Lo aggiungerò sulla mia guida per installare Ubuntu su Lenovo Yoga 2 Pro
rubo77,

Forse scopri come usare la chiave corretta per mappare il tuo script qui ?
rubo77,

4

Ho aggiunto un altro paio di righe, la seconda esecuzione dello script tornerà allo schermo normale e abiliterà il touchpad, testato con Ideapad 2 Pro. A proposito, ho messo il launcher per lo script nel pannello laterale HowTo: new launcher .

Accelerometer non è ancora supportato nel kernel, ma forse qualcosa arriverà nella prossima versione.

crea lo script /usr/local/bin/rotate-screen.sh

#!/bin/bash
# This script rotates the screen and touchscreen input 180 degrees, disables the touchpad, and enables the virtual keyboard
# And rotates screen back if the touchpad was disabled

isEnabled=$(xinput --list-props 'SynPS/2 Synaptics TouchPad' | awk '/Device Enabled/{print $NF}')

if [ $isEnabled == 1 ] 
then
    echo "Screen is turned upside down"
    xrandr -o inverted
    xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
    xinput disable 'SynPS/2 Synaptics TouchPad'
    # Remove hashtag below if you want pop-up the virtual keyboard  
    # onboard &
else
    echo "Screen is turned back to normal"
    xrandr -o normal
    xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
    xinput enable 'SynPS/2 Synaptics TouchPad'
    # killall onboard 
fi

e assegnargli diritti di esecuzione:

sudo chmod +x /usr/local/bin/rotate-screen.sh

1
ottimo lavoro, ho migliorato la tua sceneggiatura qui: gist.github.com/rubo77/daa262e0229f6e398766
rubo77

Grazie! Funziona alla grande. Ho creato un launcher per renderlo ancora più facile da usare.
Guillaume Sorel,

1

L'utility spin è progettata per funzionare con ThinkPad Yogas, quindi gestisce le informazioni sullo stilo e così via e offre tutti i tipi di controllo dell'orientamento (tramite pulsante, rotazione dello schermo e accelerometro). Potrebbe valere la pena provare.


0

Una soluzione senza xrandr(che non funziona su Wayland)

Una soluzione su Ubuntu 19.04 con wayland è quella di impostare la rotate-monitorchiave per alcuni tasti usando gsettingso dconf-editor.

Ad esempio, il comando seguente farà Ctrl+F8ruotare lo schermo in senso antiorario:

$ gsettings set org.gnome.mutter.keybindings rotate-monitor "['XF86RotateWindows', '<Control>F8']"

Ciò non consente all'utente di specificare l'orientamento del target, ma solo di ruotare lo schermo fino al raggiungimento dell'orientamento desiderato.

(originale pubblicato qui: https://unix.stackexchange.com/a/465395/20661 )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.