acelerômetro + rotação de tela em laptop sem tela sensível ao toque?

4

Eu tenho recentemente um laptop hp sem tela sensível ao toque com um acelerômetro de disco rígido. Depois de atualizá-lo para o teste Debian, notei que sempre que eu inclino meu laptop para cima depois de +45 graus, a tela roda de cabeça para baixo. O oposto acontece quando eu inclino meu laptop -45 graus. Para esclarecer, estou de frente para o meu laptop com a tela voltada para mim com o teclado paralelo ao chão. A tela também gira sempre que inclino meu laptop no sentido horário ou anti-horário.

Existe um arquivo onde eu possa editar para alterar a direção rotacional da tela?

O acelerômetro em /proc/bus/input/devices mostra isso:

    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   

EDITAR:

Descobri que watch -n 1 'cat /sys/devices/platform/lis3lv02d/position' é semelhante ao encontrado com o comando abaixo. Exceto que apenas exibe coordenadas como (18,18,1098) .

evtest /dev/input/event6 mostra isso:

    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:

Depois de alguns googling, eu encontrei este que me levou a algumas arquivos interessantes que têm pouca ou nenhuma ajuda sobre isso. : P

    
por MrWm 06.01.2017 / 03:27

2 respostas

3

A história toda que você mencionou é na verdade um tipo de bug no iio-sensor-proxy ou no seu código DE que faz uso das informações do proxy iio-sensor.

Não é o bios ou o kernel que faz a rotação, mas sim o casamento entre o iio-sensor-proxy e seu ambiente de desktop.

DE como o Gnome (e o Cinnamon como acontece) faz a rotação automática da tela com base nos dados fornecidos pelo iio-sensor-proxy no dbus.

Você pode tentar remover / eliminar o iio-sensor-proxy e a rotação da tela desaparecerá completamente.

Não está claro se isso é um bug do iio-sensor-proxy ou um bug do Cinnamon. Pode ser o iio-sensor-proxy que está lendo de forma errada os dados do seu acelerômetro ou pode ser o Canela que, mesmo que receba dados corretos pelo sensor-proxy, gira a tela incorretamente.

Você pode esclarecer esse problema executando monitor-sensor no terminal raiz. Este utilitário vem com o pacote iio-sensor-proxy e exibe no terminal o estado atual da orientação do acelerômetro / tela atual. Se a orientação é exibida corretamente pelo sensor do monitor, então é um erro do Cinnamon. Mas tenho 90% de certeza de que este é um erro iio-sensor-proxy e você deve reportar isso ao desenvolvedor.

PS: Também havia sido mencionado que o sensor-proxy estava funcionando bem com kernels até a versão 4.7, mas tinha alguns problemas com o kernel 4.8 e acima. Você poderia tentar instalar um kernel antigo (por exemplo, 4.7) para testes.

Se o monitor-sensor reportar corretamente a orientação e este é um bug do Cinnamon, como uma solução alternativa você pode desativar o recurso de rotação automática de tela do Cinnamon e executar uma espécie de script de shell que fará a rotação correta com base nos dados do monitor-sensor .

PS: O Gnome oferece a opção de desabilitar completamente a rotação automática da tela, não tenho certeza se o Cinnamon também tem essa opção.

No XFCE que o iio-sensor-proxy está instalado, mas os desenvolvedores do XFCE não estão realizando a rotação automática da tela (ainda), aplicamos esse script para ter a rotação automática da tela: link

PS: versão aprimorada para telas de toque com matriz de transformação: link

Atualização para referência futura / futuras "pesquisas no Google"

Como recomendado nos comentários, executando monitor-sensor em um terminal raiz e observando as mensagens fornecidas pelo iio-sensor-proxy, provou que o iio-sensor-proxy é entendido corretamente a orientação real da tela.
Como resultado, este parece ser um bug do Cinnamon que, apesar de obter informações corretas pelo iio-sensor-proxy, está girando a tela incorretamente.

Você pode desativar o recurso de rotação automática do Cinnamon e experimentar o script de rotação automática, conforme indicado acima ( link ).

Para desativar a autorrotação interna do Cinnamon, você precisa aplicar settings set org.cinnamon.settings-daemon.plugins.orientation active false , conforme informado no comentário do OP.

    
por 07.01.2017 / 03:36
3

Usando dconf-editor , altere o valor da chave para

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

para False .

Isto é idêntico à solução de linha de comando apresentada acima, mas usa a ferramenta de gui dconf-editor .

    
por 16.06.2017 / 23:18