gpt4 book ai didi

linux - linux 中的自动调光键盘背光

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:58 25 4
gpt4 key购买 nike

我想在我的 Thinkpad X1 上实现键盘背光自动化,就像我在旧 XPS13 中使用的那样。在任何按键按下时,背光应打开,在一定空闲时间(此处为 30 秒)后,背光应关闭。我已经编写了这个基本的 bash 脚本,虽然它通过 xprintidle 每秒轮询一次,但它工作正常,并且它可能会耗尽一些电池:

#!/bin/bash

function switch {
echo $1 > /sys/devices/platform/thinkpad_acpi/leds/tpacpi\:\:kbd_backlight/brightness
}

while (true); do

sleep 1
last=`xprintidle`
status=`cat /sys/devices/platform/thinkpad_acpi/leds/tpacpi\:\:kbd_backlight/brightness`
[ $last -lt 20000 -a $status -lt 2 ] && switch 2 && continue
[ $last -ge 20000 -a $status -eq 2 ] && switch 1 && continue
[ $last -ge 30000 -a $status -ge 1 ] && switch 0 && continue

done

我想知道是否可以通过一些非轮询的方式来完成,例如通过 systemd 或 dbus。

提前致谢

最佳答案

我已经设法优化了脚本,因此当灯亮时它的轮询频率大大降低。我还包括了检测状态和切换背光的 dbus 方式。为了使用 qdbus,脚本必须以用户身份运行,因此需要对 /sys/devices/../kbd_backlight/brightness 的写入权限。

#!/bin/bash

idletime=30000 # in milliseconds

prepath=/sys/class/leds/tpacpi\:\:kbd_backlight
sudo chmod a+w $prepath/brightness

function switch {
echo $1 > $prepath/brightness
# ALTERNATIVE WITH QDBUS: WORKS BUT SHOWS NOISY OVERLAY ICON
#qdbus local.org_kde_powerdevil /org/kde/Solid/PowerManagement/Actions/KeyboardBrightnessControl setKeyboardBrightness $1
}

while (true); do

# BOTH THE FOLLOWING WORK FINE, BUT THE SECOND DONT WORK AS ROOT
#last=`xprintidle`
last=`qdbus org.kde.screensaver /ScreenSaver GetSessionIdleTime`

# BOTH THE FOLLOWING WORK FINE, BUT THE SECOND DONT WORK AS ROOT
status=`< $prepath/brightness`
#status=`qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/KeyboardBrightnessControl keyboardBrightness`

val=`< $prepath/brightness_hw_changed`

[ $last -lt $idletime -a $status -lt $val ] && switch $val && sleep ${idletime}e-3 && continue #SWITCH ON
[ $last -ge $idletime -a $status -ge $val ] && switch 0 #SWITCH OFF
sleep 1

done

编辑:现在脚本跟踪用户使用 fn 键选择的亮度

关于linux - linux 中的自动调光键盘背光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com