Por que meu controle de brilho do Thinkpad pula etapas?

15

O problema: há 16 níveis de brilho no meu laptop, mas pressionando teclas de atalho Fn+Home , Fn+End ajusta o brilho 3 etapas por vez (por exemplo, de 0 a 3 ou de 15 a 12).

Acho importante notar que as teclas de atalho da tela de login funcionam bem . Mas depois do login, esse comportamento estranho aparece.

Além disso, se eu der foco a um menu (por exemplo, clique no menu Arquivo no firefox), as teclas de atalho funcionam bem .

xdotool key XF86MonBrightnessDown funciona bem, ajustando o brilho em um passo (verificado com cat /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness ).

Eu também instalei indicator-brightness - mostra 16 folhas (0-15).

Eu tentei definir acpi_backlight=vendor no grub (inspirado neste tópico: link com problema semelhante). Funcionou em que as teclas de atalho funcionaram bem. Mas problemas com notificação de OSD, xdotool e indicador de brilho surgiram. Então, acho que não é uma solução correta.

Parece que, após o login, algo interfere no esquema de processamento das teclas de atalho. Alguma idéia?

Editar (informações adicionais)

  • Fiz uma observação de que as teclas de atalho funcionam no nível do hardware - posso ajustar o brilho imediatamente depois de ligar meu laptop (por exemplo, na tela da BIOS).

  • Depois que $ killall gnome-settings-daemon teclas de atalho ajustam o brilho em um passo, mas nenhuma notificação é exibida. Em pouco tempo, gnome-settings-daemon recupera e triplica os retornos dos problemas.

  • acpi_listen fornece a seguinte saída (ambas as chaves sequencialmente):

    $ acpi_listen
    ibm/hotkey HKEY 00000080 00001010
    video LCD0 00000086 00000000
    ibm/hotkey HKEY 00000080 00001011
    video LCD0 00000087 00000000
    

    Neste ponto, pensei que (1) as teclas de atalho funcionam no nível do hardware; (2) ibm/hotkey cuida das teclas de atalho; (3) video cuida também. Assim, o problema da etapa tripla aparece.

    Eu tentei o vídeo da lista negra (esperava que isso levasse a um comportamento de etapa dupla), mas nada mudou.

Como solução alternativa, criei minhas próprias teclas de atalho no Gerenciador de configurações do CompizConfig - conforme descrito aqui , mas com --clearmodifiers argumento:

xdotool key --clearmodifiers XF86MonBrightnessUp
xdotool key --clearmodifiers XF86MonBrightnessDown

Agora, posso usar teclas de atalho iniciais ou novas para ajustes mais precisos.

Perguntas abertas

Já houve discussão para o caso com duplo passo: Lenovo ThinkPads, teclas de função de brilho fazem dois passos em vez de um, procurando solução alternativa :

the hardware just does it and then also sends out a signal saying the button's been pressed. Possibly you could unset the shortcut in System -> Preferences -> Keyboard Shortcuts for this action?

Mas estou ansioso para saber,

  1. Por que obtenho um problema de etapa triplo ?
  2. Como posso cancelar o processamento dessas teclas de atalho?

Eu ficaria muito grato se alguém explicasse isso.

    
por Andrey 09.08.2012 / 19:42

4 respostas

14

De onde vêm os 3 passos para um pressionamento de tecla?

Você obtém três etapas de brilho para um pressionamento de tecla porque:

  1. O driver de ACPI / vídeo padrão ajusta etapa 1
  2. O driver thinkpad_acpi diz ao BIOS para ajustar etapa 2 , mas ainda encaminha o evento keypress
  3. O daemon de energia do GNOME intercepta esse pressionamento de tecla e informa à ACPI para ajustar mais uma vez etapa 3

1. Desabilite o driver de vídeo de ajustar o brilho por si próprio

Isso elimina uma das três etapas (etapa 1) acima.

  • Abra o terminal
  • Digite sudo sh -c 'echo -n 0 > /sys/module/video/parameters/brightness_switch_enabled'
  • Teste, agora você deve ter o controle de brilho em etapas de dois
  • Para desabilitar isso automaticamente na inicialização, abra /etc/rc.local em seu editor favorito e antes da última linha ( exit 0 ), adicione:

    echo -n 0 > /sys/module/video/parameters/brightness_switch_enabled

2. Recompile o módulo thinkpad_acpi para resolver o problema de duplo pressionamento

  • Temos que parar thinkpad_acpi de ajustar o brilho via BIOS e tê-lo somente encaminhando a tecla para o GNOME, para que o GNOME faça a única etapa de ajuste
  • Este é um bug conhecido que foi corrigido no kernel 3.4 +
  • Para corrigi-lo para o Ubuntu 12.04 / Precise, teremos o patch de sua versão de thinkpad_acpi e recompilá-lo:

    1. Instale os cabeçalhos do kernel: sudo apt-get install linux-headers-$(uname -r)
    2. Instalar ferramentas de compilação sudo apt-get install build-essential
    3. Crie um diretório temporário e altere para ele:
      mkdir ~/tpacpi-bright && cd ~/tpacpi-bright
    4. Baixe e corrija o arquivo de origem thinkpad_acpi.c do repositório git do Kernel do Ubuntu:

      wget -O- "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-precise.git;\
      a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD"\
      | sed -e 's/tp_features.bright_acpimode && acpi_video/acpi_video/g' \
      > thinkpad_acpi.c
    5. Na mesma pasta em que thinkpad_acpi.c foi baixado, você precisará de um "Makefile". Você pode baixá-lo diretamente deste Pastebin , usando:

      wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT

    OU cole o abaixo em um arquivo chamado Makefile ,:

    obj-m += thinkpad_acpi.o
    all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    1. Agora digite make para criar o módulo; você verá um arquivo thinkpad_acpi.ko na pasta quando terminar.
  • Teste o módulo corrigido depois de carregá-lo com:

    sudo rmmod thinkpad_acpi && sudo lsmod thinkpad_acpi.ko
  • Se o brilho agora estiver fixo e você tiver controle total, substitua o módulo de armazenamento pelo módulo corrigido:

    TPDIR=/lib/modules/$(uname -r)/kernel/drivers/platform/x86
    sudo mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock
    sudo mv ~/tpacpi-bright/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
    
  • Você pode limpar a pasta de construção com make clean ; guarde-o para futuros upgrades de kernel!

por ish 20.08.2012 / 07:57
2

Eu estava tendo exatamente o mesmo problema que você e meu sistema sempre começou com a tela desligada.

Eu gostaria de agradecer por me apontar na direção certa, acpi_backlight=vendor fez o truque para mim sem nenhum dos problemas que você teve. Eu estou usando um HP G7 1116sg com gráficos híbridos (Intel HD3000 (atualmente usando apenas a Intel por causa de problemas híbridos no Ubuntu. Eu digo isso apenas porque o X220 está listado como tendo o mesmo adaptador gráfico) / Radeon HD6870) e Ubuntu 12.04.

Só queria dizer que as mudanças no grub funcionaram para mim sem nenhum problema aparente.

Boa sorte em encontrar uma solução.

    
por DrA7 12.08.2012 / 16:40
0

Configurar o /sys/module/video/parameters/brightness_switch_enabled para 0 me torna incapaz de controlar o brilho no meu Thinkpad X230 através de teclas de atalho, tanto em tty quanto no xfce 4.10. Eu tive que dizer ao xfce4-power-manager para não alterar o brilho nos principais eventos. Você pode fazer isso configurando uma das duas chaves de configuração ocultas. O primeiro é:

xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/change-brightness-on-key-events -s false

E o segundo:

xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/show-brightness-popup -s false

Nota: ambas as configurações desativam a tela popup de brilho no meu sistema, mas pelo menos eu recupero todos os 16 níveis de brilho!

Você pode ler mais sobre esse problema em esta página e em a parte inferior desta página .

    
por jeremija 09.06.2013 / 17:43
0

No meu laptop Lenovo S205, tive esse problema em que o driver de vídeo e o gnome ajustavam o brilho.

Mas minha experiência de desabilitar a propriedade brightness_switch_enabled é que o gnome é lento e parece vigoroso ao atualizar a luz de fundo - por exemplo, se eu deixar as teclas pressionadas por alguns segundos e depois soltar, o gnome ainda demora 5- 10s para processar os eventos.

Então, prefiro deixar o driver de vídeo fazer os ajustes e impedir que o gnome os faça.

sudo chmod -x /usr/lib/gnome-settings-daemon/gsd-backlight-helper

Desativar o gsd-backlight-helper foi o truque para mim. Eu rastreei as internets e não parece haver uma opção visível ao usuário para fazer o mesmo.

Eu perdi o brilho do OSD, mas agora as alterações de brilho são processadas instantaneamente e, como bônus, ainda tenho controle de brilho no tty.

    
por Ivo Anjo 20.01.2014 / 13:15

Tags