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

23

Como minha Caps Locktecla foi remapeada Esc, agora tenho um LED no teclado que nunca está aceso. Eu gostaria de usá-lo para algo útil, como atividade de disco rígido ou LAN.

Especialmente porque estou usando um computador com uma caixa personalizada e dissipadores de calor (embutidos na minha gaveta para não precisar ouvir o disco rígido e não ocupar muito espaço), e os LEDs não ficam visíveis de outra maneira.

Se houver uma biblioteca para controlar os LEDs do teclado, eu poderia fazer algumas codificações, se já não houver uma solução para isso.

Estou no Gentoo ~ amd64.

EDIT: Ok, esqueça o LED do disco rígido. Foi só um exemplo.

Quero que o Caps LockLED acenda quando for meu aniversário. Ou quando eu tiver e-mail. Ou quando digo " Caps LockLED, acenda!".

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

Attila O.
fonte
4
Eu gosto desta ideia! Espero que alguém possa responder pelo Windows também?
Iszi 29/11
1
Você pode editar o requisito do LED do HDD de volta à sua pergunta. As soluções podem não piscar tão rápido quanto o HDD normal, mas funcionam muito bem no meu teclado. E é bastante útil, porque não consigo ver meus leds de disco rígido.
Manwe

Respostas:

18

Bem, para mudar o indicador LED no console do VT, você pode usar setleds. Então, se você estiver em um VT, basta digitar

setleds

e você obterá seu status atual de led. Se você não deseja ativar o numlock, basta acendê-lo, digite:

setleds -L +num 

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

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

Eu acho que isso também vai 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 possui setledsem seu sistema, meu palpite é que você pode obtê-lo neste pacote emergente sys-apps/kbd.

Se você for mais de pessoa que gosta de coisas código aqui está um link para en exemplo código para leds mudança em 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ê originalmente queria. 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
Manwe
fonte
1
Obrigado por esta resposta agradável, esta solução funciona perfeitamente para mim e é um bom exemplo de que posso mudar facilmente para o que precisar. A já tem sys-apps/kbdinstalado, por isso funcionou fora da caixa. Você merece toda a recompensa que eu poderia dar :)
Attila O.
5

verificar Gmail - pisca os LEDs quando os e-mails são recebidos e informa 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
jato
fonte
1
Onde você pode encontrar blink?
Manwe
1
blinkd - parece que os caras do Debian o removeram dos repositórios, triste - bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433
jet
4

Você pode remover um led de disco rígido de um gabinete antigo, estender os fios e amarrar os fios no fio do teclado, ramificar no gabinete e conectar diretamente ao jumper de led do disco rígido na placa principal. Abra o teclado e cole a quente o LED do HDD ao lado do LED do capslock.

Software gratuito e feio? Verifica.

horatio
fonte
Não é uma péssima idéia, mas 1. Eu poderia apenas usar o led do teclado, acho que não preciso de outro led de um gabinete antigo e 2. Quero que haja apenas um cabo USB conectando o teclado. Ou melhor ainda - pense no teclado sem fio.
Attila O.
4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

também trabalha com Caps Locketc.

gcb
fonte
1
Isso só funciona para o Scroll Lock para mim.
Lilydjwg 7/11
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 de dispositivo do teclado, gerando comandos a serem enviados ao microprocessador do teclado que liga e desliga os LEDs, em resposta às 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 principal e - para encurtar a história - são conectados a uma saída do chip de ponte PCI para ATA. (Para o ICH10, por exemplo, esta saída é a SATALED#saída.) O hardware liga e desliga essa saída à medida que os comandos são enviados pelo barramento SATA / PATA. Aqueles que se lembram da vida com o SCSI lembrarão que a atividade do disco rígido do SCSI não afetou o LED do "disco rígido", pois é acionado pelo hardware da ponte ATA.

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

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

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

JdeBP
fonte
2
O LED do disco rígido foi apenas um exemplo. A idéia principal é que eu tenha um LED não utilizado no teclado que gostaria de controlar. Por favor, olhe minhas edições.
Attila O.
3

Você pode fazer isso usando a AutoHotkey . Marque esta discussão se quiser aprender sobre os códigos que precisa usar.

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

Também funciona com teclados USB e sem fio.

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

Mavromatis Lozay
fonte
2
Embora eu tenha conseguido executar o AutoHotkey com o Wine, por algum motivo, ele não acendeu meus LEDs (embora nenhuma mensagem de erro tenha sido registrada). Além disso, mesmo que funcionasse, ter que passar pelo vinho a cada dois milissegundos ou ter um processo de vinho em execução o tempo todo não é o ideal, especialmente em comparação com a outra solução usada setleds. Ainda assim, isso pode ser uma solução para usuários windoze, então obrigado por postar.
Attila O.
2

Desde o Linux 4.7:

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

Requer CONFIG_LEDS_TRIGGER_DISK=yna configuração do kernel.

atomsymbol
fonte
Esta é de longe a resposta mais elegante e espero que chegue ao topo!
Mpy
Isso funciona muito bem, mas a desvantagem é que isso pode parar de funcionar ao desconectar e reconectar o teclado.
SpecialBomb