Как сделать изменения яркости монитора на рабочем столе, как на ноутбуке?
На ноутбуке у вас обычно есть рабочие клавиши для изменения подсветки, и вы видите уведомления OSD при их изменении.
Как исправить это для "обычных" рабочих столов? Как получить часть этого происходит?
1 ответ
Даже на многих ноутбуках, но особенно на настольных компьютерах, вы должны получать события клавиатуры для изменений яркости на X11.
Если у вас нет необычной клавиатуры с клавишами для этого, определитесь с собственными сочетаниями клавиш. Сконфигурируйте XKB, чтобы сообщить символ клавиатуры, который вы хотите для этого.
Существуют "официальные" ключевые символы для увеличения / уменьшения яркости монитора в X. А у unity-settings-daemon или gnome-settings-daemon есть пассивный захват. К сожалению, я не нашел разумного способа заставить эти программы оставить эти ключи в покое.
Unity-/gnome-setting-daemon - источник этих причудливых сообщений OSD. Они также запускают изменение яркости подсветки через dbus(?). Их собственный gsd-backlight-helper выполняется таким образом, чтобы фактически изменить подсветку.
Этот...- двоичный файл backlight-helper отправляется на поиск устройств в / sys, которые принадлежат стандартизированному классу подсветки. Сначала он ищет устройства типа "firmware", затем "platform", а затем "raw". Это рекомендуемый способ в соответствии со спецификацией класса подсветки.
В настольных системах мониторы часто могут обрабатывать управление DDC/CI, что является совершенно другой обработкой и не настраивается в Ubuntu. Нет драйверов ядра, которые отображают этот вид управления на устройство в классе подсветки. По крайней мере, есть заброшенный инструмент ddccontrol
который взаимодействует через DDC/CI. Это можно сделать с двумя типами доступа. Один через регистры PCI или память VGA карты или что-то еще. Другой, лучше проложенный маршрут - через интерфейсы шины I2C. Для этого вам нужно загрузить модуль i2c-dev, который управляет /dev/i2c-? устройства. Некоторые из этих устройств отражают реально существующие шины I2C в соединениях VGA, DVI и HDMI. DisplayPort эмулирует I2C, поэтому он также работает. Хорошей новостью является то, что поддержка ядра здесь довольно полная, поскольку DDC (без CI) также используется для считывания идентификации и спецификаций монитора (EDID).
Если у вас есть доступ с правами root, целесообразно заменить gsd-backlight-helper (или usd-backlight-helper) на использование скрипта ddccontrol
,
Без корневого доступа на машине, вероятно, легче (пере) настроить клавиатуру, чтобы сообщать о некоторых других клавишах, где ничего не слышно (для клавиш мультимедиа существует множество клавиш, просто возьмите их). Тогда скажите своему оконному менеджеру или используйте xbindkeys
запускать ddccontrol
непосредственно и / или запустить скрипт, который также генерирует некоторые OSD-уведомления, если это необходимо.
ddccontrol
имеет некоторые недостатки: он не поддерживается, как кажется, и занимает много времени для запуска (в моей системе) без видимой причины. Я думал о совместном взломе сценария, который выполняет сам DDC/CI. Самая большая проблема здесь состоит в том, чтобы фактически узнать, что говорить по автобусу. Я думаю, что исходный код - хороший способ выяснить это.