Сенсорный ввод не вращается: Lenovo Yoga 13 / Yoga 2 Pro

После получения Lenovo Yoga 13 на Рождество я был доволен его работой с Ubuntu. Изменить ориентацию дисплея легко в меню настроек дисплея или набрав, например, xrandr -o inverted в терминале. Однако такое не приводит к повороту ввода сенсорного экрана (или, что не менее важно, сенсорной панели).

Я искал решения этой проблемы и нашел два многообещающих источника.
(1) http://cc.oulu.fi/~rantalai/synaptics/. При установке пакета и выполнении рекомендованных команд повернут дисплей и сенсорный ввод (но не сенсорный экран).
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/. Этот сайт рекомендовал обновить пакет ввода, который я не пробовал.

5 ответов

Я нашел простой ответ на свой вопрос, прочитав полезную информацию в Ubuntu Wiki: X - Входное преобразование координат.

Эти команды могут использоваться для выравнивания вращений устройств ввода и дисплея:

  1. Первая команда поворачивает дисплей, где может быть слева, справа, нормально или инвертировано:
    xrandr -o <orientation>

  2. переназначить устройство ввода:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

Вторая команда переназначает устройство ввода (то есть сенсорную панель или сенсорный экран), где <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, или же -1 0 1 0 -1 1 0 0 1; в соответствии с ориентацией выше.

Названия тачпада и тачскрина можно найти с помощью xinput list и либо может быть отключен полностью с xinput disable <device-name>, Впоследствии, xinput enable <device-name> снова включит устройство ввода.

В моем случае, и, вероятно, для других с Yoga 13 (также на Yoga 2 Pro), сенсорный экран называется ELAN Touchscreen и тачпад SynPS/2 Synaptics TouchPad,

Таким образом, я поместил короткий скрипт в мой домашний каталог rotate-inverted.sh со следующим содержанием:

    #! / Bin/ Баш
    # Этот скрипт поворачивает экран и ввод сенсорного экрана на 180 градусов, отключает сенсорную панель и включает виртуальную клавиатуру
    xrandr -o инвертированный
    xinput set-prop 'ELAN Touchscreen' 'Матрица преобразования координат' -1 0 1 0 -1 1 0 0 1
    xinput отключить "SynPS/2 Synaptics TouchPad"
    на борту &

Затем я сделал скрипт исполняемым с

chmod u+x rotate-inverted.sh

и назначил команду ~/rotate-inverted.sh на сочетание клавиш Ctrl+Alt+I в
Системные настройки -> Клавиатура.

После того, как я вышел из системы и снова вошел в нее, я смог повернуть клавиатуру, нажав эту комбинацию клавиш.

Я сделал то же самое для других позиций вращения, используя команды xinput enable 'SynPS/2 TouchPad' а также killall onboard вместо xinput disable 'SynPS/2 TouchPad' а также onboard & за rotate-normal.sh,

Некоторые другие в этой теме обсуждали назначение таких скриптов дополнительным кнопкам на
Йога - например, кнопка блокировки - а также автоматическое выполнение их при изменении положения Йоги; но я не был уверен, как это сделать.

Я добавил еще пару строк, второй запуск скрипта вернет экран в нормальное состояние и включит сенсорную панель, протестированную в Ideapad 2 Pro. Кстати, я поставил лаунчер для скрипта на боковой панели HowTo: новый лаунчер.

Акселерометр пока не поддерживается ядром, но, возможно, что-то выйдет в следующем выпуске.

создать сценарий /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

и дать ему исполняемые права:

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

Утилита Spin предназначена для работы с ThinkPad Yogas, поэтому она обрабатывает информацию о стилусе и т. Д. И предлагает все виды управления ориентацией (с помощью кнопок, поворота экрана и акселерометра). Возможно, стоит попробовать.

Решения без xrandr (который не работает на Wayland)

Решение на Ubuntu 19.04 с Wayland - установить rotate-monitor ключ к некоторому связыванию клавиш, используя gsettings или dconf-editor,

Например, следующая команда вызовет Ctrl+F8 повернуть экран против часовой стрелки:

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

Это не позволяет пользователю указывать целевую ориентацию, а только поворачивать экран, пока не будет достигнута желаемая ориентация.

(оригинал размещен здесь: /questions/277128/ubuntu-1404-hostapd-80211a-iwlwifi-net-ap/277132#277132)

autorotate — это утилита Linux/X11 для ноутбуков 2-в-1 и других устройств с сенсорным экраном. Никаких прав ROOT не требуется!

Команда левый правый портрет и ланскейп являются обертками над xrandr и xinput для синхронизации поворота экрана и дигитайзера. На самом деле они будут вращать все устройства xinput, включая стилус, сенсорную панель, сенсорный экран, мышь...

Ноутбуки с датчиком оси могут работать без каких-либо команд для определения ориентации. Флаг --daemon предназначен для работы в фоновом режиме в качестве службы.

Другие вопросы по тегам