web-dev-qa-db-fra.com

Comment surveiller les changements de luminosité sur le bureau comme sur l'ordinateur portable?

Sur un ordinateur portable, vous avez généralement des touches de travail pour changer le rétro-éclairage et vous voyez les notifications OSD lors de leur modification.

Comment corriger cela pour les ordinateurs de bureau "normaux"? Comment faire avancer certaines parties?

2
Robert Siemer

Même sur de nombreux ordinateurs portables, mais surtout sur un ordinateur de bureau, vous devriez obtenir les événements du clavier pour les changements de luminosité sur X11.

Si vous ne disposez pas d'un clavier sophistiqué avec des touches pour cela, choisissez vos propres raccourcis. Configurez XKB pour signaler le symbole de clavier que vous souhaitez pour cela.

Il existe des noms de clés "officiels" pour augmenter/diminuer la luminosité du moniteur dans X. Et le démon d'unité de paramètres d'unité ou de démon de paramètres de gnome a une prise passive sur eux. Malheureusement, je n'ai pas trouvé de moyen raisonnable de faire en sorte que ces programmes laissent ces clés seules.

le démon de réglage d'unité/gnome est à l'origine de ces fantastiques messages OSD. Ils déclenchent également le changement de la luminosité du rétroéclairage via dbus (?). Leur propre gsd-backlight-helper est exécuté de cette façon pour réellement changer le rétro-éclairage.

Ce binaire d'aide au rétroéclairage sort pour rechercher des périphériques dans/sys qui appartiennent à la classe de rétroéclairage normalisée. Il recherche d'abord les appareils de type "firmware", puis "plateforme" puis "raw". Il s'agit de la méthode recommandée selon les spécifications de la classe de rétroéclairage.

Sur les systèmes de bureau, les moniteurs peuvent souvent gérer le contrôle DDC/CI, ce qui est une gestion entièrement différente et n'est pas configuré sur Ubuntu. Il n'existe aucun pilote de noyau qui mappe ce type de contrôle à un périphérique de la classe de rétroéclairage. Il existe au moins un outil abandonné ddccontrol qui s'interface via DDC/CI. Il peut le faire avec deux types d'accès. L'un est via les registres PCI ou la mémoire de la carte VGA ou quelque chose. L'autre route pavée et meilleure se fait via les interfaces de bus I2C. Pour cela, vous devez charger le module i2c-dev, qui pilote le/dev/i2c-? dispositifs. Certains de ces appareils reflètent les vrais bus I2C existants dans les connexions VGA, DVI et HDMI. DisplayPort émule I2C, donc cela fonctionne aussi. La bonne nouvelle est que le support du noyau est assez complet ici, car DDC (sans CI) est également utilisé pour lire l'identification et les spécifications du moniteur (EDID).

Si vous avez un accès root, il devrait être possible de remplacer gsd-backlight-helper (ou usd-backlight-helper) par un script pilotant ddccontrol.

Sans accès root sur la machine, il est probablement plus facile de (re) configurer le clavier pour rapporter certains autres keysym où rien n'écoute (il y a des tonnes de keysymes pour les touches multimédias, il suffit d'en saisir). Ensuite, informez votre gestionnaire de fenêtres ou utilisez xbindkeys pour lancer ddccontrol directement et/ou lancez un script qui génère également des notifications OSD si vous le souhaitez.

ddccontrol a quelques inconvénients: il n'est pas maintenu comme il semble et le démarrage (sur mon système) prend tellement de temps sans raison apparente. Je pensais à pirater un script ensemble qui fait DDC/CI lui-même. Le plus grand défi ici est de savoir de quoi parler dans le bus. Je suppose que le code source est un bon moyen de le savoir.

2
Robert Siemer