Use o LED Caps Lock como indicador LED de HDD (ou personalizado)

23

Eu tenho minha tecla Caps Lock remapeada para Esc , então agora eu tenho um LED no meu teclado que nunca está ligado. Eu gostaria de usá-lo para algo útil, como HDD ou atividade de LAN.

Especialmente que estou usando um computador com uma caixa personalizada & dissipadores de calor (embutidos na minha gaveta, para que eu não tenha que ouvir o HDD e ele não ocupe muito espaço), e os LEDs não são visíveis de outra forma.

Se houver uma biblioteca para controlar os LEDs do teclado, eu mesmo poderia fazer alguns códigos, se já não houver uma solução para isso.

Estou no Gentoo ~ amd64.

EDIT: Ok, esqueça o LED do HDD. Foi apenas um exemplo.

Eu quero que o LED Caps Lock acenda quando for meu aniversário. Ou quando tenho email. Ou quando eu disser " Caps Lock , acenda-se!".

Eu absolutamente não quero usar um fio extra. Na verdade, seria bom se isso funcionasse também em teclados sem fio.

    
por Attila O. 29.11.2011 / 19:24

9 respostas

18

Bem, para alterar o indicador de led no VT console , você pode usar setleds . Então, se você estiver em um VT, basta digitar

setleds

e você receberá seu status atual de líderes. Se você não quiser ativar o numlock, apenas acenda, você pode digitar:

setleds -L +num 

É mais complicado em X e essa é a maneira "mais simples" de experimentá-lo. Por favor, note que o X geralmente é executado como root, assim você terá que verificar as permissões no X-windows tty ou executá-lo com privilégios de root. Geralmente X é tty7. /dev/console deve funcionar sendo o console do sistema e por isso todos os VTs devem ser afetados.

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

Acho que isso também funcionará:

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

aqui está a lista de opções de luz

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

Se você não tem setleds em seu sistema, meu palpite é que você pode obtê-lo deste pacote emerge sys-apps/kbd .

Se você é mais de pessoa que gosta de codificar as coisas aqui está um link para o exemplo código para alterar leds no X . Eu não testei isso, mas apenas olhando o código parecia ok.

E aqui está um script de shell para fazer o que você queria originalmente. Ter bonés ou outros leds como indicadores de 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
    
por 20.01.2012 / 16:19
5

verifique o Gmail - pisca os LEDs quando os e-mails são recebidos e diz o número de e-mails

#!/bin/bash
echo "Checking for new email";
mails="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - \
   https://name1:[email protected]/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
    
por 20.01.2012 / 19:19
4

Você pode remover um HDD de um gabinete antigo, estender os fios e amarrá-los ao fio do teclado, ramificar no gabinete e conectar diretamente no jumper do HDD na placa-mãe. Abra o teclado e cole o LED do HDD ao lado do LED de capslock.

Software gratuito e feio? Verifique.

    
por 29.11.2011 / 20:14
3

Este não é um problema de software para resolver com uma biblioteca.

Os LEDs do teclado são controlados por software - em particular pelo driver do dispositivo de teclado, gerando comandos para serem enviados ao microprocessador de teclado que liga e desliga os LEDs, em resposta a solicitações de controle de E / S.

As luzes de atividade do disco rígido no painel frontal são controladas por hardware. Eles estão conectados à placa-mãe e - para encurtar a história - cabem até uma saída do chip ponte PCI-para-ATA. (Para o ICH10, por exemplo, essa saída é a saída SATALED# .) O hardware liga e desliga essa saída conforme os comandos são enviados pelo barramento SATA / PATA. Aqueles que se lembram da vida com SCSI lembrarão que a atividade do disco rígido SCSI não afetou o LED do "disco rígido", já que ele é acionado pelo hardware ponte ATA.

Não é realmente prático - e exigiria uma quantidade considerável de software e hardware extras - para a saída no sinal SATALED# causar interrupções de hardware recebidas pelo software, que dispara comandos pelo driver de teclado. É um design bastante idiota. Mas a abordagem inversa, de ter todos os comandos de E / S de disco gerados pelo driver de dispositivo de disco fazendo uma viagem lateral pelo driver de dispositivo de teclado é quase tão ruim, embora não exija um novo tipo de dispositivo de hardware que receba " O LED do painel frontal está ligado! " interrompe. Ela requer que dois subsistemas de hardware distintos - disco e teclado - sejam vinculados e uma boa quantidade de programação de sistemas. Também limitaria efetivamente toda a E / S do disco à velocidade do teclado.

Este é um problema de hardware para resolver, muito simplesmente, com um pedaço de fio mais longo.

Se o painel frontal estiver escondido em uma gaveta ou sob uma mesa, e você quiser ver os LEDs do painel frontal, simplesmente faça um painel frontal destacável e conecte-o à placa principal com fios mais longos. Uma verificação rápida no eBay revela que existem fornecedores de componentes de computador que lhe venderão cabos de painel frontal (com os LEDs e interruptores conectados) de comprimentos variados, de até pelo menos 1 metro.

    
por 29.11.2011 / 20:54
3

Você pode fazer isso usando o AutoHotkey . Verifique o este tópico se quiser saber mais sobre os códigos que você precisa usar.

Depois de ler esse tópico e a documentação do AutoHotkey, você pode fazer essas coisas.

Também funciona com teclados USB e sem fio também.

Você pode usá-lo com o Wine no Gentoo.

    
por 19.01.2012 / 20:37
3
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

também funciona com Caps Lock , etc.

    
por 19.05.2014 / 01:35
2

Desde o Linux 4.7:

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

Requer CONFIG_LEDS_TRIGGER_DISK=y na configuração do kernel.

    
por 19.12.2016 / 17:30
1

link

Isso fará com que o LED do HDD no Scroll Lock. A modificação para o CAPS LOCK deve ser simples.

    
por 01.10.2015 / 08:18
0

Uma vez eu escrevi um pequeno programa C para controlar o LED CapsLock no DELL XPS15. Só é testado em um sistema, portanto não posso garantir que funcionará para você. Talvez você tenha que adaptá-lo, mas isso deve ser bem direto.

    
por 11.06.2018 / 09:56