mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-10 01:17:44 +03:00
Add support for saving/restoring keyboard backlights
Piggy-backing on the display backlight code, this saves and restores keyboard backlights on supported devices. The detection code matches that of UPower: http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173 https://bugs.freedesktop.org/show_bug.cgi?id=70367 [tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"]
This commit is contained in:
parent
f6f2ad9b9c
commit
1a0464230c
@ -51,9 +51,11 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
|
||||
|
||||
# Pull in backlight save/restore for all firmware backlight devices
|
||||
# Pull in backlight save/restore for all firmware backlight devices,
|
||||
# and keyboard backlights
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
||||
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
||||
|
||||
# Asynchronously mount file systems implemented by these modules as
|
||||
# soon as they are loaded.
|
||||
|
@ -56,9 +56,11 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
errno = 0;
|
||||
device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
|
||||
if (!device)
|
||||
device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
|
||||
if (!device) {
|
||||
if (errno != 0) {
|
||||
log_error("Failed to get backlight device: %m");
|
||||
log_error("Failed to get backlight device '%s': %m", argv[2]);
|
||||
r = -errno;
|
||||
} else
|
||||
r = log_oom();
|
||||
@ -66,7 +68,8 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) {
|
||||
if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
|
||||
!streq_ptr(udev_device_get_subsystem(device), "leds")) {
|
||||
log_error("Not a backlight device: %s", argv[2]);
|
||||
r = -ENODEV;
|
||||
goto finish;
|
||||
|
Loading…
Reference in New Issue
Block a user