触摸屏输入不旋转:联想 Yoga 13 / Yoga 2 Pro

触摸屏输入不旋转:联想 Yoga 13 / Yoga 2 Pro

在圣诞节收到联想 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/。该网站建议更新输入包,但我还没有尝试过。

答案1

通过阅读以下有用信息,我找到了问题的直接答案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 10 1 0 -1 0 1 0 0 11 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 #!/bin/bash
    # 此脚本将屏幕和触摸屏输入旋转 180 度,禁用触摸板并启用虚拟键盘
    xrandr -o 反转
    xinput set-prop 'ELAN 触摸屏' '坐标变换矩阵' -1 0 1 0 -1 1 0 0 1
    xinput 禁用‘SynPS/2 Synaptics TouchPad’
    在船上 &

然后我使用以下命令使脚本可执行

chmod u+x rotate-inverted.sh

并将命令分配~/rotate-inverted.sh给键盘快捷键Ctrl++AltI
系统设置 -> 键盘

退出并重新登录后,我可以通过按该快捷方式来旋转键盘。

我对其他旋转位置做了同样的事情,使用命令xinput enable 'SynPS/2 TouchPad'killall onboard代替xinput disable 'SynPS/2 TouchPad'和。onboard &rotate-normal.sh

该主题中的其他一些人讨论了将此类脚本分配给
Yoga 上的额外按钮(例如锁定按钮),以及在改变 Yoga 的位置时自动执行它们;但我不确定如何做到这一点。

答案2

我又添加了几行,第二次运行脚本将使屏幕恢复正常并启用触摸板,使用 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

答案3

实用功能旋转专为与 ThinkPad Yogas 配合使用而设计,因此它可以处理触控笔信息等,并提供各种方向控制(通过按钮、屏幕旋转和加速度计)。可能值得一试。

答案4

自动旋转是适用于二合一笔记本电脑和其他带触摸屏设备的 Linux/X11 实用程序。无需 ROOT 权限!

命令 left right Portrait 和 lanscape 是 xrandr 和 xinput 的包装器,用于同步屏幕和数字化仪的旋转。实际上,它们将旋转所有 xinput 设备,包括触控笔、触摸板、触摸屏、鼠标...

带有轴传感器的笔记本电脑无需任何命令即可运行以检测方向。标志 --daemon 旨在作为服务在后台运行。

相关内容