非觸摸屏筆記型電腦上的加速度計+螢幕旋轉?
我最近有一台帶硬碟加速度計的非觸摸屏惠普筆記型電腦。將其升級到 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 評論中的建議進行應用。