最近、HDD加速度計を備えた非タッチスクリーンHPラップトップを入手しました。 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...
EDIT2:
いくつかグーグルした後、私は this に出くわしました。 :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
を実行すると、この問題を明確にすることができます。このユーティリティは、iio-sensor-proxyパッケージに付属しており、加速度計の現在の状態/現在の画面の向きを端末に表示します。
モニターセンサーによって方向が正しく表示されている場合、シナモンのバグです。しかし、私はこれがiio-sensor-proxy
のバグであることを90%確信しています。開発者に報告する必要があります。
PS:sensor-proxyはバージョン4.7までのカーネルでうまく機能していたが、カーネル4.8以降では問題があったことも言及されていました。テスト用に古いカーネル(つまり4.7)をインストールしてみることができます。
モニターセンサーが方向を正しく報告し、これがシナモンのバグである場合、回避策として、シナモンの自動画面回転機能を無効にし、モニターセンサーのデータに基づいて正しい回転を行う一種のシェルスクリプトを実行できます。
PS:Gnomeには、自動画面回転を完全に無効にするオプションがあります。Cinnamonにもこのオプションがあるかどうかはわかりません。
XFCEでは、iio-sensor-proxyがインストールされていますが、XFCE開発者は自動画面回転を実行していません(まだ)。このスクリプトを適用して自動画面回転を実行します。 https://linuxappfinder.com/blog/auto_screen_rotation_in_ubunt
PS:変換マトリックスを備えたタッチスクリーンの改良版: https://github.com/gevasiliou/PythonTests/blob/master/autorotate.sh
今後の参照用に更新/今後の「Google検索」
コメントで助言されているように、ルート端末でmonitor-sensor
を実行し、iio-sensor-proxyによって提供されるメッセージを観察することにより、iio-sensor-proxyが実際の画面の向きを正しく理解していることが証明されました。
その結果、これはシナモンのバグのようです。iio-sensor-proxyによって正しい情報を取得しますが、画面が誤って回転しています。
Cinnamonの自動回転機能を無効にして、上記のアドバイスに従って自動回転スクリプトを試すことができます( https://linuxappfinder.com/blog/auto_screen_rotation_in_ubunt )。
Cinnamonの内部自動回転を無効にするには、OPのコメントでアドバイスされているようにsettings set org.cinnamon.settings-daemon.plugins.orientation active false
を適用する必要があります。
dconf-editor
を使用して、キー値を変更します
/org/cinnamon/settings-daemon/plugins/orientation/active
False
に。
これは上記のコマンドラインソリューションと同じですが、GUIツールdconf-editor
を使用します。