![更改 Gnome shell 中自动屏幕旋转的工作方式](https://linux22.com/image/110350/%E6%9B%B4%E6%94%B9%20Gnome%20shell%20%E4%B8%AD%E8%87%AA%E5%8A%A8%E5%B1%8F%E5%B9%95%E6%97%8B%E8%BD%AC%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F.png)
我最近购买了一台 Lenovo Yoga 3 11" 可转换笔记本电脑。它与 Ubuntu Gnome LTS 16.04.2 开箱即用,可以很好地配合使用 - WiFi、蓝牙,甚至暂停和恢复工作,到目前为止没有任何问题。
我注意到 Gnome 3 甚至允许屏幕根据内置旋转传感器自动旋转。 Yoga 3 11" 确实提供了旋转传感器,iio-sensor-proxy
Ubuntu Gnome 中已经默认安装了该传感器。碰巧的是,所报告的方向iio-sensor-proxy
似乎偏离了 90°。
Dell 13 7000 15.04 (Gnome) 上的自动旋转屏幕有一个处理屏幕旋转的自定义 shell 脚本的解决方案。我不想使用这个解决方案,因为它禁用了 Gnome Shell 中的“禁用屏幕旋转”按钮。
我已经做了一些研究,发现这iio-sensor-proxy
应该会udev
触发一个事件,然后 Gnome 3 使用该事件通过xrandr
.然而,我无法找到一种方法来告诉udev
Gnome 3 或 Gnome 3 加速度计安装的方向与显示器不同,这需要在两者之间转换方向。
那么,问题是:如何才能做到这一点?方向重新映射应该可以在 或 Gnome 3 中实现iio-sensor-proxy
,udev
而且我实际上不太关心它是在哪里完成的。我似乎没有找到任何可以轻松更改以实现我需要的配置文件。
作为目前的解决方法,我使用上面链接的“询问 ubuntu 问题”中的脚本,并进行修改以解决显示/加速计未对齐问题。为此,我必须禁用 Gnome 3 中的自动屏幕旋转。虽然此解决方案还允许onboard
根据当前方向自动启动和终止(屏幕键盘),但它有点违背了 Gnome 3 屏幕旋转设置的目的。
答案1
有关理论,请参阅 Krzysztof Stasiak 的答案。
实际上,我的机器(一台混合一上网本 2s)默认情况下屏幕逆时针旋转 90 度。
据我了解,默认情况下 - 每台没有覆盖的机器都有一个 ACCEL_MOUNT_MATRIX=1, 0, 0; 的矩阵; 0, 1, 0; 0, 0, 1
将以下内容放入 /etc/udev/hwdb.d/60-sensor.hwdb 修复了我的情况:
sensor:modalias:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
答案2
从GitLab iio-传感器-代理站点 当加速度计的安装方式与屏幕不同时,我们需要修改加速度计的读数,以确保计算出的方向与屏幕方向相符。
iio-sensor-proxy
从设备的ACCEL_MOUNT_MATRIX
udev 属性中读取此信息。60-sensor.hwdb
详情请参阅。