将Caps Lock LED用作HDD LED(或自定义)指示灯


23

我的Caps Lock键重新映射到Esc,所以现在键盘上的LED永不亮。我想将其用于有用的事情,例如HDD或LAN活动。

特别是我正在使用带有自定义盒子和散热器的计算机(内置在我的抽屉中,因此我不必聆听HDD且它不会占用太多空间),否则LED不可见。

如果有一个用于控制键盘LED的库,如果还没有解决方案,我可以自己编写一些代码。

我正在使用Gentoo〜amd64。

编辑:好的,不用担心HDD LED。这只是一个例子。

我希望Caps Lock生日那天LED灯亮起。或者当我有电子邮件时。或者当我说“ Caps LockLED,请点亮!”。

我绝对不想使用额外的电线。实际上,如果这也可以在无线键盘上运行,那就太好了。


4
我喜欢这个主意!希望有人也可以为Windows解答?
Iszi 2011年

1
您可以将HDD LED要求编辑回您的问题。解决方案的闪烁速度可能不如普通HDD快,但在我的键盘上效果很好。这非常有用,因为我看不到硬盘指示灯。
Manwe 2012年

Answers:


18

可以在VT 控制台上更改led指示器setleds。因此,如果您使用的是VT,则只需输入

setleds

您将获得当前的领导地位。如果您不想启用numlock,只需将其点亮即可键入:

setleds -L +num 

X中它变得更加棘手,这是“最简单”的尝试方法。请注意,X通常以root身份运行,因此您必须检查X-windows tty的权限或以root特权运行它。通常X是tty7。/dev/console应该可以在系统控制台上正常工作,并且应该影响所有VT。

sudo su -c 'setleds -L +num < /dev/tty7'

我认为这也会起作用:

sudo su -c 'setleds -L +num < /dev/console'

这是灯光选项列表

 [{+|-}num] [{+|-}caps] [{+|-}scroll]

如果您的setleds系统中没有,我想您可以从这个emerge包中获得它sys-apps/kbd

如果您是喜欢编码的人,那么这里有一个示例代码链接,用于更改X中的led。我没有对此进行测试,只是通过查看代码就可以了。

这是一个shell脚本,可以执行您最初想要的操作。将盖子或其他指示灯作为硬盘指示器。

#!/bin/bash

# Check interval seconds
CHECKINTERVAL=0.1

# console
CONSOLE=/dev/console

#indicator to use [caps, num, scroll]
INDICATOR=caps

getVmstat() {
  cat /proc/vmstat|egrep "pgpgin|pgpgout"  
}
#turn led on
function led_on()
{
    setleds -L +${INDICATOR} < ${CONSOLE}
}
#turn led off
function led_off()
{
    setleds -L -${INDICATOR} < ${CONSOLE}
}
# initialise variables
NEW=$(getVmstat)
OLD=$(getVmstat)
## 
while [ 1 ] ; do
  sleep $CHECKINTERVAL # slowdown a bit
  # get status 
  NEW=$(getVmstat)
  #compare state
  if [ "$NEW" = "$OLD" ]; then  
    led_off ## no change, led off
  else
    led_on  ## change, led on
  fi
  OLD=$NEW  
done

1
感谢您提供的很好的答案,该解决方案对我而言非常有效,并且是一个很好的示例,我可以轻松地将其更改为所需的内容。已sys-apps/kbd安装,因此开箱即用。您应该得到我能提供的所有赏金:)
Attila O.

5

检查Gmail-收到电子邮件时闪烁LED并显示电子邮件数量

#!/bin/bash
echo "Checking for new email";
mails="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - \
   https://name1:password1@mail.google.com/mail/feed/atom \
   --no-check-certificate | grep 'fullcount' \
   | sed -e 's/.*<fullcount>//;s/<\/fullcount>.*//' 2>/dev/null)"

echo $mails;

#blink LEDs
if [ "$mails" -gt "0" ];
then
    blink -s -r 5;
fi

#speak announcements

if [ "$mails" -gt "0" ];
then
    espeak "$mails new emails in main account.";
fi

sleep 4;
blink;

exit

1
在哪里可以找到blink
Manwe 2012年

1
blinkd -看起来像Debian的家伙从回购删除它,伤心- bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433

4

您可以从旧机箱中卸下HDD指示灯,延伸电线并将其绑扎到键盘电线,在机箱上分支,然后直接插入主板上的HDD指示灯跳线。打开键盘,然后将HDD LED热粘在capslock LED旁边。

软件又丑陋?校验。


完全不是一个坏主意,但是1.我可以只使用键盘指示灯,我认为我不需要旧机箱中的另一个指示灯,并且2.我只希望一根USB电缆连接键盘。或更妙的是-考虑一下无线键盘。
Attila O.

4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

也适用于Caps Lock,等等。


1
这仅适用于Scroll Lock。
lilydjwg 2014年

3

这不是使用库解决的软件问题。

键盘LED由软件控制-特别是由键盘设备驱动程序生成,该命令生成命令发送到键盘微处理器,以响应I / O控制请求打开和关闭LED。

前面板上的硬盘活动指示灯由硬件控制。它们连接到主板,并且-简而言之-连接至PCI至ATA桥接芯片的输出。(例如,对于ICH10,此输出为SATALED#输出。)当通过SATA / PATA总线发送命令时,硬件会打开和关闭此输出。那些怀念SCSI的人会记住SCSI硬盘活动并没有影响“硬盘” LED,因为它是由ATA桥硬件驱动的。

它不是很实际-并且需要大量额外的软件和硬件-才能在SATALED#信号上输出,以引起由软件接收的硬件中断,然后由键盘设备驱动程序触发命令。这是一个相当愚蠢的设计。但是,相反的方法是,使光盘设备驱动程序生成的所有光盘I / O命令通过键盘设备驱动程序进行一次旁通,尽管它不需要一种新型的硬件设备来接收“前面板LED亮!” 中断。它需要链接两个不同的硬件子系统-光盘和键盘,以及大量的系统编程。这也将有效地将所有光盘I / O限制为键盘速度。

这是一个硬件问题,可以很简单地用更长的电线解决。

如果您的前面板隐藏在抽屉里或桌子下面,并且您想查看前面板LED,则只需制作一个自己的可拆卸前面板,然后使用更长的电线将其连接至主板。在eBay上进行的快速检查显示,存在一些计算机组件供应商,它们会向您出售长度不等且不超过1米的这种前面板电缆(带有LED和开关)。


2
HDD LED只是一个例子。主要思想是我想控制键盘上未使用的LED。请查看我的修改。
Attila O.

3

您可以使用AutoHotkey做到这一点。如果您想了解需要使用的代码,请检查线程。

阅读该线程和AutoHotkey上的文档后,您可以执行这些操作。

它还适用于USB和无线键盘。

您可以在Gentoo上将它与Wine一起使用。


2
尽管我可以用Wine运行AutoHotkey,但由于某种原因,它没有点亮我的LED(尽管未记录任何错误消息)。同样,即使可行,每隔几毫秒必须通过葡萄酒输送一次酒,或者一直运行葡萄酒过程也不是很理想,特别是与使用的其他解决方案相比setleds。不过,这可能是针对windoze用户的解决方案,因此感谢您的发布。
Attila O.

2

从Linux 4.7开始:

# echo ide-disk > /sys/class/leds/input17::capslock/trigger

它需要CONFIG_LEDS_TRIGGER_DISK=y在内核配置中。


到目前为止,这是最优雅的答案,我希望它会升到最高!
mpy

这确实很好,但缺点是当拔下键盘并重新插入时,它可能会停止工作
。– SpecialBomb


0

我曾经编写了一个小型C程序来控制 DELL XPS15上的CapsLock LED。它仅在一个系统上进行了测试,因此我不能保证它将对您有用。也许您必须对其进行调整,但这应该很简单。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.