MrW*_*rWm 8 debian hard-disk sensors joystick
我最近有一台带硬盘加速计的非触摸屏惠普笔记本电脑。将其升级到 Debian 测试后,我注意到每当我将笔记本电脑向上倾斜超过 +45 度时,屏幕就会上下颠倒。当我将笔记本电脑倾斜 -45 度时,情况正好相反。澄清一下,我正对着我的笔记本电脑,屏幕对着我,键盘与地面平行。每当我顺时针或逆时针倾斜笔记本电脑时,屏幕也会旋转。
是否有可以编辑以更改屏幕旋转方向的文件?
中的加速度计/proc/bus/input/devices显示:
I: Bus=0019 Vendor=0000 Product=0000 Version=0000
N: Name="ST LIS3LV02DL Accelerometer"
P: Phys=lis3lv02d/input0
S: Sysfs=/devices/platform/lis3lv02d/input/input7
U: Uniq=
H: Handlers=event6 js0
B: PROP=0
B: EV=9
B: ABS=7
Run Code Online (Sandbox Code Playgroud)
编辑:
我发现这watch -n 1 'cat /sys/devices/platform/lis3lv02d/position'类似于使用以下命令找到的内容。除了它只显示坐标,如(18,18,1098).
evtest /dev/input/event6 显示这个:
william@wksp0:~/Downloads$ sudo evtest /dev/input/event6
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0
Input device name: "ST LIS3LV02DL Accelerometer"
Supported events:
Event type 0 (EV_SYN)
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 20
Min -2304
Max 2304
Fuzz 18
Flat 18
Event code 1 (ABS_Y)
Value -38
Min -2304
Max 2304
Fuzz 18
Flat 18
Event code 2 (ABS_Z)
Value 1105
Min -2304
Max 2304
Fuzz 18
Flat 18
Properties:
Testing ... (interrupt to exit)
Event: time 1483747056.088195, type 3 (EV_ABS), code 1 (ABS_Y), value -23
Event: time 1483747056.088195, -------------- SYN_REPORT ------------
Event: time 1483747056.124189, type 3 (EV_ABS), code 0 (ABS_X), value 20
Event: time 1483747056.124189, type 3 (EV_ABS), code 1 (ABS_Y), value -38
Event: time 1483747056.124189, type 3 (EV_ABS), code 2 (ABS_Z), value 1105
Event: time 1483747056.124189, -------------- SYN_REPORT ------------
Event: time 1483747056.210931, type 3 (EV_ABS), code 0 (ABS_X), value -18
Event: time 1483747056.210931, type 3 (EV_ABS), code 1 (ABS_Y), value -28
Event: time 1483747056.210931, type 3 (EV_ABS), code 2 (ABS_Z), value 1107...
Run Code Online (Sandbox Code Playgroud)
编辑2:
经过一些谷歌搜索后,我遇到了这个问题,这让我找到了一些有趣的文件,这些文件对此几乎没有帮助。:P
您提到的整个故事实际上是 iio-sensor-proxy 或使用 iio-sensor-proxy 信息的 DE 代码中的一种错误。
不是 bios 或内核进行轮换,而是 iio-sensor-proxy 和您的桌面环境之间的结合。
像 Gnome(和 Cinnamon)这样的 DE 会根据 dbus 中的 iio-sensor-proxy 提供的数据自动旋转屏幕。
您可以尝试删除/清除 iio-sensor-proxy,屏幕旋转将完全消失。
目前尚不清楚这是 iio-sensor-proxy 错误还是 Cinnamon 错误。可能是 iio-sensor-proxy 以错误的方式读取您的加速度计数据,或者可能是 Cinnamon,即使它通过传感器代理接收到正确的数据,也会错误地旋转屏幕。
您可以通过monitor-sensor在 root 终端中运行来澄清这个问题。此实用程序带有 iio-sensor-proxy 包,并在终端中显示加速度计的当前状态/当前屏幕方向。
如果监视器传感器正确显示方向,则它是 Cinnamon 错误。但我 90% 确定这是一个iio-sensor-proxy错误,您应该将其报告给开发人员。
PS:也有人提到,sensor-proxy 在 4.7 之前的内核上运行良好,但在 4.8 及更高版本的内核上存在一些问题。您可以尝试安装较旧的内核(即 4.7)进行测试。
如果监视器传感器正确报告方向并且这是 Cinnamon 错误,作为一种解决方法,您可以禁用 Cinnamon 自动屏幕旋转功能并运行一种 shell 脚本,该脚本将根据监视器传感器的数据进行正确的旋转。
PS:Gnome 提供了完全禁用自动屏幕旋转的选项,我不确定 Cinnamon 是否也有这个选项。
在 XFCE 中安装了 iio-sensor-proxy 但 XFCE 开发人员没有执行自动屏幕旋转(还)我们应用这个脚本来自动旋转屏幕:https : //linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu
PS:带有转换矩阵的触摸屏改进版本:https : //github.com/gevasiliou/PythonTests/blob/master/autorotate.sh
更新以供将来参考/未来的“谷歌搜索”
正如评论中所建议的,通过monitor-sensor在根终端中运行并观察 iio-sensor-proxy 提供的消息,证明 iio-sensor-proxy 正确理解了真实的屏幕方向。
结果,这似乎是一个 Cinnamon 错误,尽管它通过 iio-sensor-proxy 获得了正确的信息,但它错误地旋转了屏幕。
您可以禁用 Cinnamon 自动旋转功能并按照上面的建议尝试自动旋转脚本(https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu)。
要禁用 Cinnamon 内部自动旋转,您需要settings set org.cinnamon.settings-daemon.plugins.orientation active false按照 OP 评论中的建议进行应用。
小智 6
使用dconf-editor,更改键值
/org/cinnamon/settings-daemon/plugins/orientation/active
Run Code Online (Sandbox Code Playgroud)
到False。
这与上面介绍的命令行解决方案相同,但使用 gui 工具dconf-editor。