更改 Gnome shell 中自动屏幕旋转的工作方式

更改 Gnome shell 中自动屏幕旋转的工作方式

我最近购买了一台 Lenovo Yoga 3 11" 可转换笔记本电脑。它与 Ubuntu Gnome LTS 16.04.2 开箱即用,可以很好地配合使用 - WiFi、蓝牙,甚至暂停和恢复工作,到目前为止没有任何问题。

我注意到 Gnome 3 甚至允许屏幕根据内置旋转传感器自动旋转。 Yoga 3 11" 确实提供了旋转传感器,iio-sensor-proxyUbuntu Gnome 中已经默认安装了该传感器。碰巧的是,所报告的方向iio-sensor-proxy似乎偏离了 90°。

Dell 13 7000 15.04 (Gnome) 上的自动旋转屏幕有一个处理屏幕旋转的自定义 shell 脚本的解决方案。我不想使用这个解决方案,因为它禁用了 Gnome Shell 中的“禁用屏幕旋转”按钮。

我已经做了一些研究,发现这iio-sensor-proxy应该会udev触发一个事件,然后 Gnome 3 使用该事件通过xrandr.然而,我无法找到一种方法来告诉udevGnome 3 或 Gnome 3 加速度计安装的方向与显示器不同,这需要在两者之间转换方向。

那么,问题是:如何才能做到这一点?方向重新映射应该可以在 或 Gnome 3 中实现iio-sensor-proxyudev而且我实际上不太关心它是在哪里完成的。我似乎没有找到任何可以轻松更改以实现我需要的配置文件。

作为目前的解决方法,我使用上面链接的“询问 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_MATRIXudev 属性中读取此信息。60-sensor.hwdb详情请参阅。

相关内容