La entrada de la pantalla táctil no gira: Lenovo Yoga 13 / Yoga 2 Pro

8

Después de recibir un Lenovo Yoga 13 para Navidad, estoy satisfecho con su rendimiento con Ubuntu. Es fácil cambiar la orientación de la pantalla en el menú Configuración de pantalla o escribiendo, por ejemplo, xrandr -o inverteden el terminal. Sin embargo, esto no gira la entrada de la pantalla táctil (o, lo que es menos importante, el panel táctil).

He buscado soluciones para este problema y he encontrado dos fuentes prometedoras.
(1) http://cc.oulu.fi/~rantalai/synaptics/ . La instalación del paquete aquí y la ejecución de los comandos recomendados giraron la pantalla y la entrada del panel táctil (pero no la de la pantalla táctil).
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/ . Este sitio web recomienda actualizar un paquete de entrada, que no he probado.

usuario28549
fuente
El problema (y la solución) es el mismo en el Yoga 2 Pro
rubo77
Quizás también pueda agregar rotación automática con este script: krizka.net/projects/autorotate
rubo77

Respuestas:

8

Encontré una respuesta directa a mi pregunta leyendo la información útil en Ubuntu Wiki: X - Transformación de coordenadas de entrada .

Estos comandos se pueden usar para alinear las rotaciones de los dispositivos de entrada y la pantalla:

  1. El primer comando gira la pantalla, donde se puede dejar, derecha, normal o invertida:
    xrandr -o <orientation>

  2. reasignar el dispositivo de entrada:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

El segundo comando vuelve a asignar el dispositivo de entrada (es decir, el panel táctil o el de la pantalla táctil), donde <matrix-elements-rowwise>es 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; correspondiente a las orientaciones anteriores.

Los nombres del panel táctil y la pantalla táctil se pueden encontrar xinput listy se pueden desactivar por completo con xinput disable <device-name>. Posteriormente, xinput enable <device-name>volverá a habilitar el dispositivo de entrada.

En mi caso, y probablemente para otros con un Yoga 13 (también en Yoga 2 Pro), se llama la pantalla táctil ELAN Touchscreeny el panel táctil SynPS/2 Synaptics TouchPad.

Por lo tanto, puse un script corto en mi directorio de inicio llamado rotate-inverted.shcon el siguiente contenido:

    #! / bin / bash
    # Este script gira la pantalla y la entrada de la pantalla táctil 180 grados, deshabilita el panel táctil y habilita el teclado virtual
    xrandr -o invertido
    xinput set-prop 'Pantalla táctil ELAN' 'Matriz de transformación coordinada' -1 0 1 0 -1 1 0 0 1
    xinput deshabilita 'SynPS / 2 Synaptics TouchPad'
    a bordo &

Luego hice el script ejecutable con

chmod u+x rotate-inverted.sh

y asignó el comando ~/rotate-inverted.shal atajo de teclado Ctrl+ Alt+ Ien
Configuración del sistema -> Teclado .

Después de cerrar sesión y volver a iniciar sesión, pude girar el teclado presionando ese acceso directo.

Hice el mismo tipo de cosas para las otras posiciones de rotación, usando los comandos xinput enable 'SynPS/2 TouchPad'y en killall onboardlugar de xinput disable 'SynPS/2 TouchPad'y onboard &para rotate-normal.sh.

Otros en este hilo han discutido la asignación de dichos scripts a los botones adicionales en el
Yoga, como el botón de bloqueo, así como la ejecución automática de ellos al cambiar la posición del Yoga; pero no estaba seguro de cómo hacer esto.

usuario28549
fuente
Gracias por tu trabajo detallado. Me preguntaba si había encontrado alguna investigación que hablara sobre cómo lograr que esta reorientación suceda de inmediato (usando el acelerómetro, supongo).
A.Wan
¡Esto también funciona perfecto en mi Yoga 2 Pro! ¡El script mejorado a continuación por user267578 funciona perfecto! Lo
agregaré
¿Quizás descubras cómo usar la clave correcta para mapear tu script aquí ?
rubo77
4

Agregué un par de líneas más, la segunda ejecución del script volverá a la pantalla normal y habilitará el panel táctil, probado con Ideapad 2 Pro. Por cierto, puse el iniciador para el script en el panel lateral Cómo : nuevo iniciador .

El acelerómetro aún no es compatible con el núcleo, pero tal vez haya algo en la próxima versión.

crear el guión /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

y darle derechos ejecutables:

sudo chmod +x /usr/local/bin/rotate-screen.sh
usuario267578
fuente
1
gran trabajo, mejoré
rubo77
¡Gracias! Funciona genial. He creado un lanzador para que sea aún más fácil de usar.
Guillaume Sorel
1

El giro de la utilidad está diseñado para funcionar con ThinkPad Yogas, por lo que maneja la información del lápiz y así sucesivamente, y ofrece todo tipo de control de orientación (por botón, rotación de pantalla y acelerómetro). Puede valer la pena intentarlo.

d3pd
fuente
0

A soluciones sin xrandr(que no funciona en wayland)

Una solución en Ubuntu 19.04 con wayland es establecer la rotate-monitorclave para algunas combinaciones de teclas usando gsettingso dconf-editor.

Por ejemplo, el siguiente comando hará Ctrl+F8girar la pantalla en sentido antihorario:

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

Esto no permite al usuario especificar la orientación del objetivo, sino solo girar la pantalla hasta alcanzar la orientación deseada.

(original publicado aquí: https://unix.stackexchange.com/a/465395/20661 )

rubo77
fuente