터치스크린이 아닌 노트북에서 가속도계 + 화면 회전?

터치스크린이 아닌 노트북에서 가속도계 + 화면 회전?

최근에 하드 드라이브 가속도계가 있는 비터치 스크린 HP 노트북을 구입했습니다. 테스트를 위해 데비안으로 업그레이드한 후 노트북을 +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 패키지와 함께 제공되며 터미널의 가속도계/현재 화면 방향의 현재 상태를 표시합니다.
모니터 센서가 방향을 올바르게 표시하면 Cinnamon 버그입니다. 하지만 저는 이것이 버그라고 90% 확신하며 iio-sensor-proxy개발자에게 보고해야 합니다.

추신: 누군가는 4.7 이전 커널에서는 센서 프록시가 잘 실행되지만 커널 4.8 이상에서는 몇 가지 문제가 있다고 언급했습니다. 테스트를 위해 이전 커널(예: 4.7)을 설치해 볼 수 있습니다.

모니터 센서가 방향을 올바르게 보고하고 이것이 Cinnamon 버그인 경우 해결 방법으로 Cinnamon 자동 화면 회전 기능을 비활성화하고 모니터 센서 데이터를 기반으로 올바른 회전을 수행하는 쉘 스크립트를 실행할 수 있습니다.

추신: Gnome은 자동 화면 회전을 완전히 비활성화하는 옵션을 제공합니다. Cinnamon에도 이 옵션이 있는지는 잘 모르겠습니다.

iio-sensor-proxy는 XFCE에 설치되어 있지만 XFCE 개발자는 아직 자동 화면 회전을 구현하지 않았으므로 이 스크립트를 적용하여 화면 회전을 자동화합니다.https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu

추신: 변환 행렬이 포함된 개선된 터치 스크린 버전: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).

Cinnamon의 내부 자동 회전을 비활성화하려면 settings set org.cinnamon.settings-daemon.plugins.orientation active falseOP의 설명에 제안된 대로 적용해야 합니다.

답변2

를 사용하여 dconf-editor키 값을 변경하세요.

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

도착하다 False.

이는 위에서 설명한 것과 동일한 명령줄 솔루션이지만 GUI 도구를 사용합니다 dconf-editor.

답변3

제가 뭔가 잘못 이해했다면 죄송합니다. 하지만 udev의 방향 행렬을 다음과 같이 설정하면 됩니다.

# /etc/udev/hwdb.d/61-sensor-local.hwdb
sensor:modalias:acpi:BOSC0200:BOSC0200:*:dmi:*svnAcer:pnTravelMateSpinB311RN-31:*
 ACCEL_MOUNT_MATRIX=0, -1, 0;-1, 0, 0; 0, 0, 1

그럼 난 달렸어

sudo systemd-hwdb update
sudo udevadm trigger

이제 이 방향이 나에게 적합합니다.

관련 정보