Vì vậy, Web thực sự là một điều tuyệt vời! Sau nhiều nghiên cứu và đi sâu vào nhiều liên kết diễn đàn, tôi đã xoay sở để hiểu rõ hơn vấn đề, để tìm ra chương trình nào chịu trách nhiệm cho nó và cuối cùng, để vô hiệu hóa hành vi này mãi mãi. Tôi nghĩ tôi sẽ viết ra các bước của mình, trong trường hợp những người khác gặp phải vấn đề tương tự.
Bước 1. Giám sát hệ thống để biết nếu / khi đèn nền bàn phím được bật
Điều đầu tiên là phải biết rằng có thể kiểm tra trạng thái hiện tại của đèn nền bàn phím bằng cách đọc tệp /sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness
. Vì vậy, chúng tôi muốn được thông báo về bất kỳ thay đổi nào đối với tệp này và, lý tưởng nhất là quá trình nào đã dẫn đến thay đổi.
Điều này có thể được thực hiện bằng cách sử dụng fanotify . Tôi đã sử dụng chương trình ví dụ được cung cấp trong trang man và thêm một vài sửa đổi * để tôi có thể theo dõi các thay đổi đối với tệp độ sáng. Hóa ra quy trình chịu trách nhiệm sửa đổi là /usr/lib/upower/upowerd
quy trình daemon cho UPower .
Bước 2. Tìm hiểu tại sao UPower bật đèn nền (thất bại)
Đây là phần mạnh nhất của cuộc điều tra, và tôi vẫn không thể biết tại sao điều này xảy ra. Tôi tìm thấy một người với một rất vấn đề tương tự nhưng không có giải pháp, vì vậy tôi bắt đầu để xem nếu tôi có thể chỉ vô hiệu hóa hoàn toàn UPower (và những gì mà hậu quả sẽ là) khi tôi tìm thấy liên kết này . Hóa ra UPower có một tập tin cấu hình! Cái đó tốt hơn.
Bước 3. Dừng UPower bật đèn nền bàn phím
Cuối cùng, tôi đã chỉnh sửa tệp cấu hình đã nói ở trên, được đặt tại /etc/dbus-1/system.d/org.freedesktop.UPower.conf
và thay đổi <allow>
thành <deny>
dòng sau:
<allow send_destination="org.freedesktop.UPower"
send_interface="org.freedesktop.UPower.KbdBacklight"/>
Sau đó, tôi đã khởi động lại dbus bằng sudo service dbus restart
(sử dụng systemctl restart dbus.service
trên Ubuntu 16.04 trở lên) và tiến hành khóa màn hình của tôi để kiểm tra kết quả và ... Nó đã hoạt động !! Vâng, sắp xếp Màn hình đăng nhập sẽ không hiển thị, vì vậy tôi không thể đăng nhập lại và buộc phải khởi động lại. Nhưng sau đó mọi thứ đã làm việc tuyệt vời!
Và đó là nó! Tôi vẫn tò mò điều gì sẽ là cách đúng đắn để làm điều này. Nếu bạn biết, hãy để lại nhận xét, xin vui lòng!
* Ví dụ, chương trình ví dụ chỉ được thiết lập để theo dõi FAN_OPEN_PERM
và FAN_CLOSE_WRITE
các sự kiện, nhưng trong đó đây là một FAN_MODIFY
sự kiện.