
Adquiri recentemente um notebook conversível Lenovo Yoga 3 de 11 ". Ele funciona bem pronto para uso com Ubuntu Gnome LTS 16.04.2 - WiFi, Bluetooth, até suspende e retoma o trabalho sem problemas até o momento.
Percebi que o Gnome 3 ainda permite que a tela gire automaticamente com base nos sensores de rotação integrados. O Yoga 3 11" oferece sensores de rotação iio-sensor-proxy
que já estão instalados por padrão no Ubuntu Gnome. Acontece que a orientação relatada por iio-sensor-proxy
parece estar errada em 90°.
Tela de rotação automática no Dell 13 7000 com 15.04 (Gnome)tem uma solução em termos de um script de shell personalizado que controla a rotação da tela. Prefiro não usar esta solução, pois ela desativa o botão "desativar rotação da tela" no Gnome Shell.
Eu já fiz algumas pesquisas e descobri que isso iio-sensor-proxy
deveria causar udev
o acionamento de um evento que é então usado pelo Gnome 3 para definir a orientação da tela via xrandr
. No entanto, não consigo encontrar uma maneira de dizer udev
ao Gnome 3 que o acelerômetro está montado em uma orientação diferente da tela, o que exige que as direções sejam traduzidas entre elas.
Então, a questão é: como isso pode ser feito? O remapeamento de orientação deve ser possível no iio-sensor-proxy
, udev
ou no Gnome 3, e na verdade não me importo muito onde isso é feito. Parece que não encontro nenhum arquivo de configuração que possa alterar facilmente para conseguir o que preciso.
Como solução alternativa, por enquanto estou usando o script da pergunta Ask ubuntu vinculada acima, com modificações para explicar o problema de exibição/acelerômetro desalinhado. Para que isso funcione, tenho que desabilitar a rotação automática da tela no Gnome 3. Embora esta solução também permita iniciar e matar automaticamente onboard
(teclado na tela) dependendo da orientação atual, ela meio que anula o propósito da configuração de rotação da tela do Gnome 3 .
Responder1
Veja a resposta de Krzysztof Stasiak para a teoria.
Na prática, minha máquina - um netbook 2s one mix one - por padrão tem uma tela girada 90 graus no sentido anti-horário.
Pelo que entendi, por padrão - toda máquina que não possui substituições possui uma matriz de ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
Colocar o seguinte em /etc/udev/hwdb.d/60-sensor.hwdb corrigiu meu caso:
sensor:modalias:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
Responder2
DeSite GitLab iio-sensor-proxy Quando o acelerômetro não está montado da mesma forma que a tela, precisamos modificar as leituras do acelerômetro para garantir que a orientação computada corresponda à da tela.
iio-sensor-proxy
lê essas informações da ACCEL_MOUNT_MATRIX
propriedade udev do dispositivo. Veja 60-sensor.hwdb
para detalhes.