Отже, Інтернет - це справді дивовижна річ! Провівши багато досліджень і занурившись у багато посилань на форумі, мені вдалося краще зрозуміти проблему, з’ясувати, яка програма відповідає за неї і, нарешті, назавжди відключити цю поведінку. Я думав записати свої кроки, якщо інші люди зіткнуться з тією ж проблемою.
Крок 1. Контролюйте систему, щоб дізнатися, чи / коли вмикається підсвітка клавіатури
Перше, що потрібно знати, що поточний стан підсвітки клавіатури можна перевірити, прочитавши файл /sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness
. Отже, ми хотіли б отримувати сповіщення про будь-які зміни цього файлу і в ідеалі, який процес викликав зміни.
Це можна зробити за допомогою фанотифікувати . Я використовував приклад програми, яка надається на сторінці man і додав кілька модифікацій *, щоб я міг відстежувати зміни у файлі яскравості. Виявляється, процес, відповідальний за модифікацію, був /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
подія.