触摸屏输入无法旋转: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/。该网站建议更新输入包,但我没有尝试过。


Yoga 2 Pro的问题(和解决方案)相同
rubo77

也许您也可以使用以下脚本添加自动旋转:krizka.net/projects/autorotate
rubo77

Answers:


8

通过阅读Ubuntu Wiki上的有用信息,我找到了一个简单的答案:X-Input Coordinate Transformation

这些命令可用于对齐输入设备和显示器的旋转:

  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
    #此脚本将屏幕和触摸屏输入旋转180度,禁用触摸板,并启用虚拟键盘
    xrandr -o倒置
    xinput set-prop'ELAN触摸屏''坐标转换矩阵'-1 0 1 0 -1 1 0 0 1
    xinput禁用'SynPS / 2 Synaptics触摸板'
    在船上 &

然后我使脚本可执行

chmod u+x rotate-inverted.sh

然后在系统设置->键盘中将该命令分配~/rotate-inverted.sh给键盘快捷键Ctrl+ Alt+ 。I

注销并重新登录后,可以按该快捷方式旋转键盘。

我使用命令xinput enable 'SynPS/2 TouchPad'killall onboard代替xinput disable 'SynPS/2 TouchPad'and onboard &for ,对其他旋转位置执行了相同类型的操作rotate-normal.sh

此线程上的其他一些人讨论了将此类脚本分配给
Yoga 上的其他按钮(例如锁定按钮),以及在更改Yoga的位置时自动执行这些脚本。但是我不确定该怎么做。


感谢您的详尽工作。我想知道您是否碰到过任何有关如何使这种重新定向立即发生的研究(我想是使用加速度计)?
A.Wan 2014年

这在我的Yoga 2 Pro上也很完美!user267578下面的增强脚本可以完美工作!我将其添加到我的指南中,以在Lenovo Yoga 2 Pro上安装Ubuntu
2014年

也许您发现了如何使用正确的Key在此处映射脚本?
rubo77 2014年

4

我增加了几行,脚本的第二次运行将使屏幕恢复正常并启用通过Ideapad 2 Pro测试的触摸板。顺便说一句,我确实将脚本的启动器放在侧面板HowTo:new launcher上

内核尚不支持Accelerometer,但下一个发行版中可能会出现一些问题。

创建脚本 /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

1
很棒的工作,我在这里增强了您的脚本:gist.github.com/rubo77/daa262e0229f6e398766
rubo77

谢谢!效果很好。我创建了一个启动器,使其更易于使用。
Guillaume Sorel

1

实用程序旋转功能旨在与ThinkPad Yoga配合使用,因此它可以处理手写笔信息等,并提供各种方向控制(通过按钮,屏幕旋转和加速度计进行控制)。可能值得尝试。


0

没有解决方案xrandr(在Wayland上不起作用)

在使用Wayland的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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.