web-dev-qa-db-fra.com

L’entrée sur l’écran tactile ne tourne pas: Lenovo Yoga 13 / Yoga 2 Pro

Après avoir reçu un Lenovo Yoga 13 pour Noël, je suis satisfait de ses performances avec Ubuntu. Il est facile de changer l’orientation de l’affichage dans le menu Paramètres d’affichage ou en le saisissant, par exemple. xrandr -o inverted dans le terminal. Cependant, cela ne fait pas pivoter l’entrée de l’écran tactile (ou, ce qui est moins important, le pavé tactile).

J'ai cherché des solutions à ce problème et trouvé deux sources prometteuses.
(1) http://cc.oulu.fi/~rantalai/synaptics/ . L'installation du package ici et l'exécution des commandes recommandées ont fait pivoter l'affichage et l'entrée du pavé tactile (mais pas celle de l'écran tactile).
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/ . Ce site Web recommandait de mettre à jour un paquet d’entrée, ce que je n’ai pas essayé.

8
user28549

J'ai trouvé une réponse simple à ma question en lisant les informations utiles de buntu Wiki: X - Transformation de coordonnées en entrée .

Ces commandes peuvent être utilisées pour aligner les rotations des périphériques d’entrée et de l’affichage:

  1. La première commande fait pivoter l’affichage, où il peut être à gauche, à droite, normal ou inversé:
    xrandr -o <orientation>

  2. remappez le périphérique d'entrée:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

La deuxième commande remappe le périphérique d'entrée (c'est-à-dire le pavé tactile ou l'écran tactile) où <matrix-elements-rowwise> est 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 ou -1 0 1 0 -1 1 0 0 1; correspondant aux orientations ci-dessus.

Les noms du pavé tactile et de l'écran tactile peuvent être trouvés avec xinput list et peuvent être entièrement désactivés avec xinput disable <device-name>. Par la suite, xinput enable <device-name> réactivera le périphérique d'entrée.

Dans mon cas, et probablement pour ceux qui possèdent un Yoga 13 (également sur Yoga 2 Pro), l'écran tactile s'appelle ELAN Touchscreen et le pavé tactile SynPS/2 Synaptics TouchPad.

Ainsi, j'ai placé un court script dans mon répertoire personnel appelé rotate-inverted.sh avec le contenu suivant:

 #!/bin/bash 
 # Ce script fait pivoter l'écran et l'entrée de l'écran tactile de 180 degrés, désactive le pavé tactile et active le clavier virtuel 
 xrandr -o inversé 
 xinput set-prop 'Matrice de transformation de coordonnées' ELAN Touchscreen '-1 0 1 0 -1 1 0 0 1 
 xinput désactiver' SynPS/2 Synaptics TouchPad '
 à bord & 

Puis j'ai rendu le script exécutable avec

chmod u+x rotate-inverted.sh

et assigné la commande ~/rotate-inverted.sh au raccourci clavier Ctrl+Alt+I dans
Paramètres système -> Clavier .

Après m'être déconnecté et reconnecté, j'ai été en mesure de faire pivoter le clavier en appuyant sur ce raccourci.

J'ai fait le même type de chose pour les autres positions de rotation, en utilisant les commandes xinput enable 'SynPS/2 TouchPad' et killall onboard au lieu de xinput disable 'SynPS/2 TouchPad' et onboard & pour rotate-normal.sh.

D'autres sur ce fil ont discuté de l'attribution de tels scripts aux boutons supplémentaires sur le
Yoga - comme le bouton de verrouillage - ainsi que de les exécuter automatiquement lors du changement de position du yoga; mais je ne savais pas comment faire cela.

8
user28549

J'ai ajouté quelques lignes supplémentaires, la deuxième exécution du script ramène l'écran à la normale et active le pavé tactile testé avec Ideapad 2 Pro. En passant, j'ai mis le lanceur pour le script sur le panneau latéral HowTo: nouveau lanceur .

L'accéléromètre n'est pas encore pris en charge dans le noyau, mais peut-être que quelque chose va arriver dans la prochaine version.

créer le 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

et lui donner les droits exécutables:

Sudo chmod +x /usr/local/bin/rotate-screen.sh
3
user267578

L'utilitaire spin est conçu pour fonctionner avec les ThinkPad Yogas, il gère donc les informations du stylet, etc., et offre toutes sortes de contrôles d'orientation (par bouton, rotation de l'écran et accéléromètre). Cela vaut peut-être la peine d'essayer.

1
d3pd