shell脚本实现键盘LED灯闪烁

很幸运,在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键盘灯(硬件)的亮灭,是不是有点小成就感啊,别骄啊,后面还有其他的方式来实现该效果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stxinu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值