Итак, Интернет - действительно удивительная вещь! После долгих исследований и изучения многих ссылок на форумах мне удалось лучше понять проблему, выяснить, какая программа за это ответственна, и, наконец, отключить это поведение навсегда. Я думал, что запишу свои шаги, на случай, если другие люди столкнутся с той же проблемой.
Шаг 1. Мониторинг системы, чтобы узнать, включена ли подсветка клавиатуры
Прежде всего необходимо знать, что текущее состояние подсветки клавиатуры можно проверить, прочитав файл /sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness
. Итак, мы хотели бы получать уведомления о любых изменениях в этом файле и, в идеале, какой процесс вызвал это изменение.
Это можно сделать с помощью fanotify . Я использовал пример программы , представленной на странице руководства, и добавил несколько модификаций *, чтобы я мог отслеживать изменения в файле яркости. Оказывается, что процесс, ответственный за модификацию, был /usr/lib/upower/upowerd
, который является процессом демона для UPower .
Шаг 2. Узнайте, почему UPower включает подсветку (не работает)
Это была самая нечеткая часть расследования, и я до сих пор не могу понять, почему это происходит. Я нашел человека с очень похожей проблемой, но без решения, поэтому я начал искать , смогу ли я просто полностью отключить UPower (и каковы будут последствия), когда я нашел эту ссылку . Оказывается, у UPower есть файл конфигурации! Так-то лучше.
Шаг 3. Остановите UPower от включения подсветки клавиатуры
Наконец, я редактировал вышеупомянутый конфигурационный файл, расположенный по адресу /etc/dbus-1/system.d/org.freedesktop.UPower.conf
, и изменен <allow>
на <deny>
в следующей строке:
<allow send_destination="org.freedesktop.UPower"
send_interface="org.freedesktop.UPower.KbdBacklight"/>
Затем я перезапустил dbus sudo service dbus restart
(использовать systemctl restart dbus.service
в Ubuntu 16.04 и более поздних версиях) и приступил к блокировке экрана, чтобы проверить результат и ... Это сработало !! Ну, Сорта. Экран входа в систему не отображался, поэтому я не смог войти в систему и был вынужден перезапустить компьютер. Но тогда все работало отлично!
И это все! Мне все еще интересно, что было бы правильным способом сделать это. Если вы знаете, оставьте комментарий, пожалуйста!
* Например, пример программы был настроен только на мониторинг FAN_OPEN_PERM
и FAN_CLOSE_WRITE
события, но в этом случае это было FAN_MODIFY
событие.