Что мониторы умеют DDC, думаю, знают все. Традиционно, он используется X-сервером для определения параметров изображения, и админами, с помощью ddcprobe, для изучения «что не так сделал X-сервер» (ddcprobe показывает поддерживаемые монитором режимы по мнению самого монитора).
Однако, ddc — это двусторонний протокол. Он не только говорит компьютеру о том, что умеет монитор, но и монитору, о том, что хочет от него компьютер.
Windows-пользователи мониторов Samsung знают их magic tune, который позволяет выставлять яркость/контраст из (неудобной) программы. Однако, существует более интересный метод работы с монитором: это утилита ddccontrol.
C помощью этой утилиты можно:
Итак, вот несколько примеров использования утилиты:
Для начала грузим нужный модуль:
Дальше, ищем мониторы. (Их может быть больше одной штуки, правда?):
На «VESA standart monitor» можно не обращать внимания, это полноценный монитор, который просто отсутсвует в базе данных ddccontrol (это означает всего лишь, что вам придётся самостоятельно искать нужные атрибуты в регистрах). Все примеры я буду показывать именно на этом, «неизвестном» мониторе.
Основной принцип работы по DDC — у монитора есть регистры (от 0 до 255) с известными допустимыми значениями. Смысл этих регистров у каждого монитора свой, но некий общий набор обычно совпадает.
(обратите внимание на префикс dev:).
А теперь немножко недокументированных возможностей:
Как подсказывают в комментариях, выключение и включение монитора:
Я уже давно думаю о встраивании этого функционала в видеоплеер (нажал фулскрин — включился movie), но руки не доходят…
PS У этой утилиты есть и гуёвая морда — gddccontrol
Однако, ddc — это двусторонний протокол. Он не только говорит компьютеру о том, что умеет монитор, но и монитору, о том, что хочет от него компьютер.
Windows-пользователи мониторов Samsung знают их magic tune, который позволяет выставлять яркость/контраст из (неудобной) программы. Однако, существует более интересный метод работы с монитором: это утилита ddccontrol.
C помощью этой утилиты можно:
- Изменять яркость, контрастность, гамму изображения. Причём, изменение яркости осуществляется изменением яркости подсветки! (разумеется, если монитор это физически умеет делать)
- Программно переключать пресеты (movie/text/user/game); это куда удобнее, чем тыкать соответствующую кнопку на самом мониторе
- Играться с недокументированными возможностями мониторов, например, вызывать заблокированные из меню языки и пункты настроек. На моём мониторе, например, мне удалось подвинуть картинку при работе по DVI (обычно этот пункт меню доступен только для VGA)
- Блокировать кнопки монитора (думаю, это не у всех моделей, но у самсунга точно можно). Блокируются все кнопки, кроме вкл/выкл, выключение/включение монитора эту блокировку сбрасывает.
- Включать и выключать монитор (полностью, без мигающей в standby лампочки)
Итак, вот несколько примеров использования утилиты:
Для начала грузим нужный модуль:
modprobe i2c-dev
Дальше, ищем мониторы. (Их может быть больше одной штуки, правда?):
ddccontrol -p
Найдены мониторы : - Устройство: dev:/dev/i2c-1 Поддерживается DDC/CI: Да Имя монитора: Samsung SyncMaster 215TW (DVI) Тип входа: Цифровой (Автоматический выбор) - Устройство: dev:/dev/i2c-2 Поддерживается DDC/CI: Да Имя монитора: VESA standard monitor Тип входа: Цифровой
На «VESA standart monitor» можно не обращать внимания, это полноценный монитор, который просто отсутсвует в базе данных ddccontrol (это означает всего лишь, что вам придётся самостоятельно искать нужные атрибуты в регистрах). Все примеры я буду показывать именно на этом, «неизвестном» мониторе.
Основной принцип работы по DDC — у монитора есть регистры (от 0 до 255) с известными допустимыми значениями. Смысл этих регистров у каждого монитора свой, но некий общий набор обычно совпадает.
ddccprobe -d dev:/dev/i2c-2
— выводит все регистры монитора c подсказкой, если монитор известен ddccprobe.(обратите внимание на префикс dev:).
ddccontrol -r 0xdc -w 2 dev:/dev/i2c-2
— выставление режима «интернет». -r 0xdc — регистр, куда писать, -w — команда писать и значение, которое писать. 0 — user mode, 5 — movie и т.д.ddccontrol -r 0xf5 -w 1 dev:/dev/i2c-2
— блокировка меню (-w 0 — разблокировка).А теперь немножко недокументированных возможностей:
ddccontrol -r 0xEE -w 55 dev:/dev/i2c-2
— сдвиг изображенияddccontrol -r 0xCC -w 0 dev:/dev/i2c-2
— включить язык в меню. 0 — китайский 1 — японский, 2 — английский… 9 — русский. Любопытно, но через само меню выставить китайский или японский невозможно…Как подсказывают в комментариях, выключение и включение монитора:
ddccontrol dev:/dev/i2c-2 -r 0xe1 -w 0
— выключитьddccontrol dev:/dev/i2c-2 -r 0xe1 -w 1
— включитьЯ уже давно думаю о встраивании этого функционала в видеоплеер (нажал фулскрин — включился movie), но руки не доходят…
PS У этой утилиты есть и гуёвая морда — gddccontrol