shell脚本实现键盘LED灯闪烁

2025-10-21 10:28:16

在我们的台机电脑键盘里,右上角有3个灯,分别是Number Lock、Caps Lock和Scroll Lock,本文将说明如何在Ubuntu操作系统下通过命令去操作这几个灯,并且通过一脚本实现其闪烁。

工具/原料

Ubuntu13.10操作系统

setleds命令

方法/步骤

很幸运,在Ubuntu13.10的Terminal下发现了setleds命令,直接运行该命令后有如下输出:

xinu@slam:~$ setleds KDGKBLED: Inappropriate ioctl for device Error reading current flags setting. Maybe you are not on the console?

查了一会资料,发现在Gnome界面下的Terminal执行该命令有问题,需要切换到TTY界面下(按CTRL+ALT+F1至F6),再切换回Gnome则按CTRL+ALT+F7组合键即可,该Bug已在http://askubuntu.com/questions/339028/caps-lock-indicator-not-synced,我们先不管,直接按CTRL+ALT+F1组合键切换至tty0,使用同样的帐号和密码登录,此时输入setleds命令会有如下提示:

xinu@slam:~$ setleds Current default flags: NumLock off CapsLock off ScrollLock off Current flags: NumLock off CapsLock off ScrollLock off Current leds: NumLock off CapsLock off ScrollLock off

而相应的帮助信息查看man setleds命令,其中主要的使用格式和参数如下:

setleds [-v] [-L] [-D] [-F] [{+|-}num] [{+|-}caps] [{+|-}scroll]

从上面资料可以看到其实际上只控制Number Lock、Caps Lock、Scroll Lock三个灯的状态,分别控制如下:

1.控制单个灯

Number Lock亮:setleds +num 

Number Lock灭:setleds -num 

Caps Lock亮:setleds +caps 

Caps Lock灭:setleds -caps 

Scroll Lock亮:setleds +scroll 

Scroll Lock灭:setleds -scroll

2.控制组合灯

任意两灯: 

setleds +num -caps 

setleds -num +scroll 

…… 

全三灯: 

setleds +num +caps +scroll 

setleds +num -caps -scroll 

……

有了上面的基础,我们再使用Shell的while循环和sleep命令,最终有了setleds_flash.sh脚本,其内容如下:

#!/bin/sh 

while [ true ];do

    setleds +num +caps +scroll

    sleep 1

    setleds -num -caps -scroll

    sleep 1 

done

最后执行bash -e setleds_flash.sh命令即可执行上述脚本,接下来就注意PC键盘右上角三个灯吧,每隔一秒钟亮灭一次。 

注意:需切换到tty界面运行;还有使用CTRL+C中断脚本执行后,我的Caps Lock键不会跟随Caps Lock键的敲击而改变需将其亮状态使用setleds -caps切换为灭后才能正常响应,这是个待处理问题,看来setleds控制的Bugs还不少。

至此,我们演示了Shell脚本操作PC键盘灯(硬件)的亮灭,是不是有点小成就感啊,别骄啊,后面还有其他的方式来实现该效果。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢