タッチスクリーンではなくノートパソコンで加速度計+画面を回転させる?

タッチスクリーンではなくノートパソコンで加速度計+画面を回転させる?

最近、ハードドライブ加速度計付きの非タッチスクリーン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...

編集2:

いくつかのグーグルの終わりに見つけたこれこれにより、私にはほとんど役に立たないいくつかの興味深い文書がありました。 :血

ベストアンサー1

あなたが言及した完全な物語は、実際に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パッケージに付属しており、端末の加速度計/現在の画面方向の現在の状態を表示します。
モニターセンサーが方向を正しく表示すると、シナモンのバグです。しかし、私はこれがバグだと90%確信しており、iio-sensor-proxy開発者に報告する必要があります。

PS:誰かが4.7より前のカーネルではセンサープロキシがうまく動作しますが、カーネル4.8以降ではいくつかの問題があると述べました。テスト用に古いカーネル(例:4.7)をインストールしてみることができます。

モニターセンサーが方向を正しく報告し、これがシナモンのバグである場合は、回避策としてシナモン自動画面回転機能を無効にし、モニターセンサーデータに基づいて正しい回転を実行するシェルスクリプトを実行できます。

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が実際の画面の向きを正しく理解していることを証明してください。
したがって、これはiio-sensor-proxyを介して正しい情報を取得したにもかかわらず、画面を誤って回転させるCinnamonのバグのようです。

Cinnamon自動回転機能を無効にし、上記の自動回転スクリプトを試すことができます(https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu)。

シナモンの内部自動回転を無効にするには、settings set org.cinnamon.settings-daemon.plugins.orientation active falseOPの説明で提案されているように適用する必要があります。

おすすめ記事