web-dev-qa-db-ja.com

タッチスクリーン以外のラップトップでの加速度計+画面の回転?

最近、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

8
MrWm

あなたが言及するすべての話は、実際には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を適用する必要があります。

7
George Vasiliou

dconf-editorを使用して、キー値を変更します

/org/cinnamon/settings-daemon/plugins/orientation/active

Falseに。

これは上記のコマンドラインソリューションと同じですが、GUIツールdconf-editorを使用します。

6
ransur0t