我最近购买了一个背光键盘,需要滚动锁定来切换灯光。我很快遇到了一些问题,可以通过一些简单的 bash 命令来解决 - 请参阅这线。
简而言之,我发现解决此问题的命令是:
xset led named "Scroll Lock"
启用 Scroll Lock(并打开灯),并且
xset -led named "Scroll Lock"
禁用 Scroll Lock 并关闭灯。
如果我想在收到 Scroll Lock 键事件且 (Scroll Lock) 功能关闭时发出前一个命令,而在其他情况下发出后者,可以使用哪些选项?那是,
if(ScrollLockIsEnabled)
systemCommand('xset -led named "Scroll Lock");
else
systemCommand('xset led named "Scroll Lock"`);
或者类似的。
我在想,至少,也许做某种 Bash 脚本来保存一个变量(如果可能的话),让我保留 Scroll Lock 的最后状态。然后我可以使用xbindkeys
(根据用户输入的关键事件发出命令)执行此脚本。
答案1
搜索类似问题后发现了这个。既然已经一年了,我还是回答一下吧。
正如问题中,如果您使用xset led named "Scroll Lock"
它,它将启用 LED 灯并xset -led named "Scroll Lock"
禁用键盘 LED 灯。如果您检查它xset --help
提到xset q
打印出当前状态信息。
以下是终端中标准输出的截断示例:
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000002
XKB indicators:
00: Caps Lock: off 01: Num Lock: on 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
Scroll lock: off
当且仅当 Scroll Lock 关闭时, 该字符串才会出现在输出中,因此我们可以使用 grep 来检查该字符串。xset q | grep "Scroll Lock: off"
对于我们的目的来说效果很好。然后,在 shell 脚本中,我们可以检查空字符串以查看它何时打开。
#!/bin/sh
result=$(xset q | grep "Scroll Lock: off")
if [ -z "$result" ]; then # Scroll Lock must be on
echo "Off"
xset -led named "Scroll Lock"
else
echo "On"
xset led named "Scroll Lock"
fi
然后,如果您愿意,只需在按下滚动锁定时使用窗口管理器或桌面环境配置来执行此脚本。
答案2
只需使用 bash,你就可以做到这一点,我在滚动锁背光键盘上使用它。必须以 root 身份运行
#!/usr/bin/env bash
if [[ $EUID -ne 0 ]]; then
echo "this program requires root user" 2>&1
exit 1
fi
dir1=$(find /sys/devices/ -name brightness | grep scrolllock)
while :
do
var1=`cat $dir1`
if [ $var1 == 0 ] ; then
echo 1 > $dir1
fi
sleep 5
done
我在 root crontab 中使用它
@reboot sh ~/sh/backlight.sh &
答案3
这是一个老问题,但这里有一个单行命令:
xset q | grep -q 'Scroll Lock: off' && xset led named 'Scroll Lock' || xset -led named 'Scroll Lock'
与 xbindkeys 或 sxhkd(现代)一起使用
我希望这对今天的人有所帮助,因为我知道这些键盘不再那么常见了。