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

8
задан 25 June 2014 в 19:36

4 ответа

Я нашел простой ответ на свой вопрос, прочитав полезную информацию в 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/bash
    # This script rotates the screen and touchscreen input 180 degrees, disables the touchpad, and enables the virtual keyboard
    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'
    onboard &

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

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.

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

0
ответ дан 25 June 2014 в 19:36

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

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

создать скрипт /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
0
ответ дан 25 June 2014 в 19:36

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

0
ответ дан 25 June 2014 в 19:36

Решения без xrandr (который не работает над Уэйлендом),

Решение на Ubuntu 19.04 с Уэйлендом состоит в том, чтобы установить 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)

0
ответ дан 23 November 2019 в 05:34

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

Похожие вопросы: