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

8

После получения 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/ . Этот сайт рекомендовал обновить пакет ввода, который я не пробовал.

user28549
источник
Проблема (и решение) та же самая на Yoga 2 Pro
rubo77
Может быть, вы также можете добавить автоповорот
rubo77

Ответы:

8

Я нашел простой ответ на свой вопрос, прочитав полезную информацию в 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.

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

user28549
источник
Спасибо за вашу детальную работу. Мне было интересно, сталкивались ли вы с какими-либо исследованиями, в которых говорилось о том, как осуществить эту переориентацию немедленно (я полагаю, с использованием акселерометра)?
А.Ван
Это также прекрасно работает на моем Yoga 2 Pro! Усовершенствованный скрипт ниже user267578 отлично работает! Я добавлю его в Руководство по установке Ubuntu на Lenovo Yoga 2 Pro
rubo77
Может быть, вы узнаете, как использовать правильный ключ для сопоставления вашего сценария здесь ?
rubo77
4

Я добавил еще пару строк, второй запуск скрипта вернет экран в нормальное состояние и включит сенсорную панель, протестированную в 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
user267578
источник
1
отличная работа, я улучшил ваш сценарий здесь: gist.github.com/rubo77/daa262e0229f6e398766
rubo77
Спасибо! Работает отлично. Я создал лаунчер, чтобы сделать его еще проще в использовании.
Гийом Сорель
1

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

d3pd
источник
0

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

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

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

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

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

(оригинал размещен здесь: https://unix.stackexchange.com/a/465395/20661 )

rubo77
источник