问题
如何确保戴尔笔记本电脑上的键盘背光在启动时打开(最大)?
基本原理
有时我会在白天不经意间按组合键关闭键盘背光,然后当我醒来时,通常是在半夜,我不想通过开灯吵醒我的妻子。因此,我寻求一种解决方案,无论我启动计算机时如何读取背光的最大可能值并进行设置。我总是在晚上将其关闭,因此该解决方案不必考虑睡眠或休眠模式。
研究
键盘背光的最大值存储在:
/sys/class/leds/dell\:\:kbd_backlight/max_brightness
当前设置值的实际值存储在:
/sys/class/leds/dell\:\:kbd_backlight/brightness
答案1
不管最大值很可能是恒定的,我不知道为什么或如何,但在上次启动时我的最大值为 3。现在我有 2。我同时感到困惑和困惑。
我不想寻找原因,例如BIOS设置,让我们在启动时读取最大值并设置它。不管白天我是否不小心关闭了背光。
我想出了一种直接的方法:
sudo crontab -e
并通过一个命令读取和设置最大值:
@reboot /bin/cat /sys/class/leds/dell\:\:kbd_backlight/max_brightness > /sys/class/leds/dell\:\:kbd_backlight/brightness
答案2
我做了一些更具延展性(即可配置)的事情:我创建了一个在启动时自动启动的初始化脚本,除非运行级别为0
(系统正在进入暂停/断电模式)或6
(系统正在进入重新启动/重新启动模式) 。
当它启动时,该脚本检查本地时间是否在17:00:00
和之间07:59:59
:如果是,则打开键盘背光;如果是,则打开键盘背光。如果不是,则会关闭背光。
以下是创建此类脚本所需的步骤。
第 1 步 - 创建初始化脚本
打开 shell 终端模拟窗口(例如按CtrlAltT),然后使用图形文本编辑器(例如 Gedit 或 Mousepad)创建 init 脚本。我使用的是 Gedit,所以我在终端执行的命令是这样的:
sudo gedit /etc/init.d/keyboard-backlight-brightness
复制下面的源代码并将其粘贴到文本编辑器的窗口中:
#!/bin/bash
### BEGIN INIT INFO
# Provides: keyboard-backlight-brightness
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop: 0 6
# Short-Description: Sets keyboard backlight brightness at boot time
# Description: Script that sets the keyboard's LED (backlight) brightness at boot time
### END INIT INFO
case "$1" in
start)
# If the current runlevel is one of those in 'Default-Start', then
# sets keyboard backlight to 24 (from a set of 0, 12, 24, 36,..., 255) if local time
# is between 17:00:00 and 07:59:59, otherwise set it to 0 (e.g. 'off').
if [[ `date +%-H` > 16 || `date +%-H` < 8 ]]
then
echo -n "Setting keyboard backlight brightness to 24..."
echo 24 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
else
echo -n "Setting keyboard backlight brightness to 0..."
echo 0 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
fi
;;
stop)
# If the current runlevel is one of those in 'Default-Stop', then
# sets keyboard backlight to 0 (i.e. 'off').
echo -n "Setting keyboard backlight brightness to 0..."
echo 0 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: keyboard-backlight-brightness start|stop|restart|reload"
exit 1
esac
exit 0
就我的电脑(2009 年中的 13 英寸 Apple Macbook Pro)而言,其键盘brightness
文件位于/sys/class/leds/smc\:\:kbd_backlight/brightness
,但我更改了此答案中的代码,以便它们全部显示您的/sys/class/leds/dell\:\:kbd_backlight/brightness
文件。
您可以将其24
(亮度强度级别)更改为1
和之间您想要的任何值255
,并且您还可以设置不同的本地时间范围。例如,要在 18:00:00 到 05:59:59 之间打开背光,请使用以下代码:
if [[ `date +%-H` > 17 || `date +%-H` < 6 ]]
如果您确实希望键盘背光保持打开并处于全功率状态,无论白天(或晚上)的时间如何,您都可以使用以下代码:
#!/bin/bash
### BEGIN INIT INFO
# Provides: keyboard-backlight-brightness
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop: 0 6
# Short-Description: Sets keyboard backlight brightness at boot time
# Description: Script that sets the keyboard's LED (backlight) brightness at boot time
### END INIT INFO
case "$1" in
start)
# If the current runlevel is one of those in 'Default-Start', then
# sets keyboard backlight to 255 (from a set of 0, 12, 24, 36,..., 255).
echo -n "Setting keyboard backlight brightness to 255..."
echo 255 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
;;
stop)
# If the current runlevel is one of those in 'Default-Stop', then
# sets keyboard backlight to 0 (i.e. 'off').
echo -n "Setting keyboard backlight brightness to 0..."
echo 0 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: keyboard-backlight-brightness start|stop|restart|reload"
exit 1
esac
exit 0
在代码中进行所需的调整后,保存文件并退出文本编辑器。
第 2 步 - 配置初始化脚本的权限
你只需要执行:
sudo chmod 755 /etc/init.d/keyboard-backlight-brightness
...并且 init 脚本将允许rwx
root 用户进行(读、写和执行)访问,并rx
允许其他人进行(读和执行)访问。
第 3 步 - 创建初始化脚本到相应系统 V 运行级别的链接
你只需要执行:
sudo update-rc.d keyboard-backlight-brightness defaults
...并且初始化脚本将链接到相应的运行级别,它必须在启动时执行。
第 4 步 - 启动初始化脚本
赶紧跑:
sudo service keyboard-backlight-brightness start
...服务将启动。
如果您决定在代码中保留本地时间范围选项,那么当您启动脚本时,如果您的本地时间恰好在脚本中指定的范围内,键盘背光就会亮起,否则背光将会亮起。关掉。
您可能需要重新启动系统,只是为了确保脚本确实在启动时启动(并工作):
sudo telinit 6
或者
sudo shutdown -r now
或者
sudo reboot
或者
sudo init 6
如果初始化脚本无法正常工作或根本无法工作
在我升级 Linux 发行版后,我就遇到了这种情况:它替换init
为systemd
.在这种情况下,您需要:
停止初始化脚本:
sudo service keyboard-backlight-brightness stop
然后从 init 系统中删除该脚本:
sudo update-rc.d -f keyboard-backlight-brightness remove
然后删除init脚本文件:
sudo rm -f /etc/init.d/keyboard-backlight-brightness
完成上述 3 个步骤后,让我们创建一个 systemd 脚本和服务。
第 1 步 - 创建自定义嵌套 SH 脚本
在终端,运行以下命令:
sudo gedit /usr/bin/keyboard-backlight-brightness.sh
...然后将下面的代码粘贴到新文件中(请注意,这是不是A巴什脚本,但相反,它必须一个嘘脚本):
#!/bin/sh
# Sets keyboard backlight brightness to 24 (from a set of
# 0, 12, 24, 36,..., 255) if local time is between
# 17:00:00 and 07:59:59, otherwise sets it to 0 (e.g. 'off').
if [ $(date +%-H) -gt 16 -o $(date +%-H) -lt 8 ]
then
echo -n "Setting keyboard backlight brightness to 24..."
echo 24 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
else
echo -n "Setting keyboard backlight brightness to 0..."
echo 0 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
fi
exit 0
或者,如果您确实想要连续的全功率键盘背光,请改用以下代码:
#!/bin/sh
# Sets keyboard backlight brightness to 255 (i.e. 100%).
echo -n "Setting keyboard backlight brightness to 255..."
echo 255 | tee /sys/class/leds/dell\:\:kbd_backlight/brightness
exit 0
粘贴完代码后,保存文件并退出文本编辑器,然后更改该文件的权限:
sudo chmod 755 /usr/bin/keyboard-backlight-brightness.sh
现在您创建了一个嘘脚本keyboard-backlight-brightness.sh
内/usr/bin
,是时候将其嵌套在必须首先创建的 systemd 服务脚本中了。
第 2 步 - 创建系统脚本,然后将 SH 脚本嵌套在其中
在终端,运行以下命令:
sudo gedit /etc/systemd/system/keyboard-backlight-brightness.service
...然后将此代码粘贴到新文件中:
[Unit]
Description=Sets keyboard backlight brightness at boot time
[Service]
ExecStart=/usr/bin/keyboard-backlight-brightness.sh
[Install]
WantedBy=multi-user.target graphical.target rescue.target
(请注意,该keyboard-backlight-brightness.sh
脚本是通过参数嵌套的ExecStart
。此外,选项 atWantedBy
会导致 systemd 脚本始终执行 - 除非系统重新启动或关闭计算机时)
粘贴完代码后,保存文件并退出文本编辑器,然后更改该文件的权限:
sudo chmod 755 /etc/systemd/system/keyboard-backlight-brightness.service
第 3 步 - 重新加载系统配置,然后启用新的系统服务脚本
在终端上运行以下命令,以便将新的 systemd 服务脚本合并到 systemd 环境中:
sudo systemctl daemon-reload
...然后运行以下命令,以便keyboard-backlight-brightness.service
在启动时加载此类新服务:
sudo systemctl enable keyboard-backlight-brightness.service
第 4 步 - 启动系统服务脚本
赶紧跑:
sudo systemctl start keyboard-backlight-brightness.service
...服务将启动。
如果你决定在代码中保留本地时间范围选项,那么当你启动systemd服务脚本时,如果你的本地时间恰好在脚本中指定的范围内,键盘背光就会亮起,否则这样的背光将被关闭。
您可能需要重新启动系统,只是为了确保脚本确实在启动时启动(并工作):
sudo telinit 6
或者
sudo shutdown -r now
或者
sudo reboot
或者
sudo init 6