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

Att*_* O. 24 linux keyboard gentoo

我的Caps Lock键被重新映射到Esc,所以现在我的键盘上有一个 LED 从来没有亮过。我想用它来做一些有用的事情,比如 HDD 或 LAN 活动。

尤其是我使用的是带有定制盒和散热器的计算机(内置在我的抽屉里,所以我不必听硬盘,它也不占用太多空间),否则 LED 是不可见的。

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

我在 Gentoo ~amd64 上。

编辑:好的,忘记 HDD LED。这只是一个例子。

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

我绝对不想使用额外的电线。事实上,如果这也适用于无线键盘,那就太好了。

Man*_*nwe 19

好吧,您可以使用更改 VT控制台上的 LED 指示灯setleds。所以如果你在 VT 你可以输入

setleds
Run Code Online (Sandbox Code Playgroud)

您将获得当前的 LED 状态。如果您不想启用 numlock,只需将其点亮,您可以输入:

setleds -L +num 
Run Code Online (Sandbox Code Playgroud)

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

sudo su -c 'setleds -L +num < /dev/tty7'
Run Code Online (Sandbox Code Playgroud)

我认为这也将起作用:

sudo su -c 'setleds -L +num < /dev/console'
Run Code Online (Sandbox Code Playgroud)

这是灯光选项列表

 [{+|-}num] [{+|-}caps] [{+|-}scroll]
Run Code Online (Sandbox Code Playgroud)

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

如果您更喜欢编写代码,这里有一个链接,指向在 X 中更改 LED 的示例代码。我没有对此进行测试,但仅通过查看代码就可以了。

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

#!/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
Run Code Online (Sandbox Code Playgroud)


jet*_*jet 6

检查 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
Run Code Online (Sandbox Code Playgroud)


gcb*_*gcb 5

#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock
Run Code Online (Sandbox Code Playgroud)

也适用于Caps Lock等。