Debian

非觸摸屏筆記型電腦上的加速度計+螢幕旋轉?

  • March 27, 2022

我最近有一台帶硬碟加速度計的非觸摸屏惠普筆記型電腦。將其升級到 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   

編輯:

我發現這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...

編輯2:

經過一番Google搜尋後,我發現了一些有趣的文件,這些文件對此幾乎沒有幫助。:P

您提到的整個故事實際上是 iio-sensor-proxy 或您的 DE 程式碼中使用 iio-sensor-proxy 資訊的一種錯誤。

不是 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)進行測試。

如果 monitor-sensor 正確報告方向並且這是 Cinnamon 錯誤,作為一種解決方法,您可以禁用 Cinnamon 自動螢幕旋轉功能並執行一種 shell 腳本,該腳本將根據 monitor-sensor 的數據進行正確的旋轉。

PS:Gnome 提供了完全禁用自動螢幕旋轉的選項,我不確定 Cinnamon 是否也有這個選項。

在安裝了 iio-sensor-proxy 的 XFCE 中,但 XFCE 開發人員尚未執行自動螢幕旋轉(但)我們應用此腳本進行自動螢幕旋轉:https ://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu

PS:帶有變換矩陣的觸摸屏改進版:https ://github.com/gevasiliou/PythonTests/blob/master/autorotate.sh

更新以供將來參考/未來的“Google搜尋”

正如評論中所建議的那樣,通過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 評論中的建議進行應用。

引用自:https://unix.stackexchange.com/questions/335260