Como monitorar alterações de brilho na área de trabalho, como no laptop?

2

Em um laptop, você geralmente tem teclas de trabalho para alterar a luz de fundo e vê as notificações do OSD ao alterá-las.

Como consertar isso em desktops "normais"? Como conseguir partes disso?

    
por Robert Siemer 16.11.2014 / 00:50

1 resposta

2

Mesmo em muitos laptops, mas especialmente em um desktop, você deve obter os eventos de teclado para as alterações de brilho no X11.

Se você não tiver um teclado sofisticado com teclas para isso, decida seus próprios atalhos. Configure o XKB para relatar o símbolo do teclado que você deseja para isso.

Existem keyyms “oficiais” para o brilho do monitor up / down em X. E o unity-settings-daemon ou o gnome-settings-daemon têm um controle passivo sobre eles. Infelizmente, não encontrei uma maneira razoável de fazer esses programas deixarem essas chaves em paz.

unit- / gnome-setting-daemon é a origem dessas mensagens extravagantes de OSD. Eles também acionam a mudança do brilho da luz de fundo via dbus (?). O próprio gsd-backlight-helper é executado dessa maneira para realmente alterar a luz de fundo.

Isso ... - o binário backlight-helper sai para procurar dispositivos em / sys que pertençam à classe de luz de fundo padronizada. Procura primeiro por dispositivos do tipo “firmware”, depois “plataforma” e depois “raw”. Esta é a maneira recomendada de acordo com as especificações da classe de luz de fundo.

Em sistemas desktop, os monitores podem lidar com o controle DDC / CI, que é um tratamento totalmente diferente e não é configurado no Ubuntu. Não há drivers de kernel que mapeiam esse tipo de controle para um dispositivo na classe de luz de fundo. Pelo menos existe uma ferramenta abandonada ddccontrol que faz interface via DDC / CI. Isso pode ser feito com dois tipos de acesso. Um é através de registros PCI ou memória da placa VGA ou algo assim. A outra e melhor rota pavimentada é via interfaces de barramento I2C. Para isso você tem que carregar o módulo i2c-dev, que comanda o / dev / i2c-? dispositivos. Alguns desses dispositivos refletem os verdadeiros barramentos I2C existentes nas conexões VGA, DVI e HDMI. DisplayPort emula I2C, então funciona também. A boa notícia é que o suporte do kernel é bastante completo aqui, porque o DDC (sem CI) também é usado para ler a identificação e as especificações do monitor (EDID).

Se você tiver acesso root, deverá ser viável substituir o gsd-backlight-helper (ou usd-backlight-helper) por um script que esteja rodando ddccontrol .

Sem acesso root na máquina, é provavelmente mais fácil (re) configurar o teclado para reportar algum outro keysym onde nada está escutando (existem toneladas de keysyms para teclas multimídia, apenas pegue alguns). Em seguida, informe ao seu gerenciador de janelas ou use xbindkeys para iniciar o ddccontrol diretamente e / ou execute um script que também gere algumas notificações do OSD, se desejado.

ddccontrol tem algumas desvantagens: não é mantido como parece e leva muito tempo para iniciar (no meu sistema) sem motivo aparente. Eu estava pensando em hackear um script juntos que faz o próprio DDC / CI. O maior desafio aqui é descobrir o que falar no ônibus. Eu acho que o código-fonte é uma boa maneira de descobrir.

    
por Robert Siemer 16.11.2014 / 00:50