shell脚本实现键盘LED灯闪烁

2025-05-15 13:01:07

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

2、xinu@slam:~$ setleds KDGK幞洼踉残BLED: Inappropriate ioctl for device Error reading current flags setting. Maybe you are not on the console?

3、查了一会资料,发现在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命令会有如下提示:

4、xinu@slam:~$ setleds Current default flags: NumLock of熠硒勘唏f CapsLock off ScrollLock off Current flags: NumLock off CapsLock off ScrollLock off Current leds: NumLock off CapsLock off ScrollLock off

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

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

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

8、1.控制单个灯

9、Number Lock亮:setleds +numNumber Lock灭:setleds -numCaps Lock亮:setleds +capsCaps Lo艘早祓胂ck灭:setleds -capsScroll Lock亮:setleds +scrollScroll Lock灭:setleds -scroll

10、2.控制组合灯

11、任意两灯:setleds +num -capssetleds -num +scroll……

12、全三灯:setleds +num +caps +scrollsetleds +num -caps -scroll……

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

14、#!/bin/shwhile [ true ]; do setleds +num +caps +scroll sleep 1 setleds -num -caps -scroll sleep 1done

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

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

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

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