Utilizzare il LED BLOC MAIUSC come indicatore LED HDD (o personalizzato)


23

Ho la mia Caps Lockchiave rimappata Esc, quindi ora ho un LED sulla tastiera che non è mai acceso. Vorrei usarlo per qualcosa di utile, come l'attività HDD o LAN.

Soprattutto che sto usando un computer con una scatola personalizzata e dissipatori di calore (integrati nel mio cassetto, quindi non devo ascoltare l'HDD e non occupa molto spazio), altrimenti i LED non sono visibili.

Se c'è una libreria per il controllo dei LED della tastiera, potrei fare un po 'di codifica da solo, se non c'è già una soluzione per questo.

Sono su Gentoo ~ amd64.

EDIT: Ok, dimentica il LED HDD. Era solo un esempio.

Voglio che il Caps LockLED si accenda quando è il mio compleanno. O quando ho email. O quando dico " Caps LockLED, per favore accendi!".

Non voglio assolutamente usare un filo in più. In effetti, sarebbe bello se questo funzionasse anche su tastiere wireless.


4
Mi piace questa idea! Spero che qualcuno possa rispondere anche per Windows?
Iszi,

1
È possibile modificare il requisito LED HDD di nuovo alla domanda. Le soluzioni potrebbero non lampeggiare velocemente come i normali led hdd, ma funzionano abbastanza bene sulla mia tastiera. Ed è abbastanza utile, perché non riesco a vedere i miei LED HDD.
Manwe,

Risposte:


18

Bene per cambiare l'indicatore led sulla console VT è possibile utilizzare setleds. Quindi se sei in un VT puoi semplicemente digitare

setleds

e otterrai lo stato attuale del tuo led. Se non si desidera abilitare il blocco numerico, basta accenderlo e digitare:

setleds -L +num 

Viene più complicato in X e questo è il modo "più semplice" per provarlo. Tieni presente che X viene generalmente eseguito come root, quindi dovrai controllare le autorizzazioni su X-windows tty o eseguirlo con i privilegi di root. Di solito X è tty7. /dev/consoledovrebbe funzionare come console di sistema e in tal modo tutti i VT dovrebbero essere interessati.

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

Penso che funzionerà anche:

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

ecco un elenco di opzioni di luce

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

Se non hai setledsnel tuo sistema, la mia ipotesi è che puoi ottenerlo da questo pacchetto emerge sys-apps/kbd.

Se siete più di persona a cui piace roba codice ecco un link per en esempio di codice a led variazione in X . Non l'ho provato, ma solo guardando il codice sembrava ok.

Ed ecco uno script di shell per fare ciò che originariamente volevi. Avere tappi o altri led come indicatori 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

1
Grazie per questa bella risposta, questa soluzione funziona perfettamente per me ed è un buon esempio che posso facilmente passare a qualunque cosa di cui abbia bisogno. A già sys-apps/kbdinstallato, quindi ha funzionato fuori dalla scatola. Ti meriti tutta la grazia che potrei dare :)
Attila O.

5

controlla Gmail: lampeggia i LED alla ricezione di e-mail e indica il numero di e-mail

#!/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
Dove puoi trovare blink?
Manwe,

1
blinkd - sembra che i ragazzi Debian lo abbiano rimosso dai repository
jet

4

È possibile rimuovere un LED HDD da una vecchia custodia, estendere i fili e avvolgere i fili sul filo della tastiera, diramare la custodia e collegarli direttamente al jumper LED dell'HDD sulla scheda madre. Apri la tastiera e incolla a caldo il LED HDD accanto al LED BLOC MAIUSC.

Software libero e brutto? Dai un'occhiata.


Non è una cattiva idea, ma 1. Potrei semplicemente usare il led della tastiera, non credo di aver bisogno di un altro led da una vecchia custodia e 2. Voglio che ci sia un solo cavo USB che colleghi la mia tastiera. O meglio ancora: pensa alla tastiera wireless.
Attila O.

4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

funziona anche con Caps Lock, ecc.


1
Questo funziona solo con Scroll Lock per me.
lilydjwg,

3

Questo non è un problema software da risolvere con una libreria.

I LED della tastiera sono controllati dal software, in particolare dal driver del dispositivo tastiera che genera comandi da inviare al microprocessore della tastiera che accendono e spengono i LED, in risposta alle richieste di controllo I / O.

Le spie di attività del disco rigido sul pannello frontale sono controllate dall'hardware. Sono collegati alla scheda madre e, per farla breve, sono collegati a un output del chip bridge da PCI ad ATA. (Per ICH10, ad esempio, questa uscita è l' SATALED#uscita.) L'hardware attiva e disattiva questa uscita quando i comandi vengono inviati sul bus SATA / PATA. Coloro che ricordano la vita con SCSI ricorderanno che l'attività del disco fisso SCSI non ha influito sul LED "hard disc", poiché è guidato dall'hardware del bridge ATA.

Non è davvero pratico - e richiederebbe una notevole quantità di software e hardware extra - perché l'output sul SATALED#segnale provochi interruzioni hardware che vengono ricevute dal software, che quindi innesca i comandi dal driver del dispositivo tastiera. È un design abbastanza snodato. Ma l'approccio opposto, di avere tutti i comandi I / O del disco generati dal driver del dispositivo del disco che fa un viaggio laterale attraverso il driver del dispositivo della tastiera, è quasi altrettanto cattivo, anche se non richiede un nuovo tipo di dispositivo hardware che riceve " Il LED del pannello frontale è acceso! " interrupt. Richiede due distinti sottosistemi hardware - disco e tastiera - da collegare e una buona quantità di programmazione dei sistemi. Limiterebbe efficacemente anche tutti gli I / O del disco alla velocità della tastiera.

Questo è un problema hardware da risolvere, molto semplicemente, con un pezzo di filo più lungo.

Se il pannello frontale è nascosto in un cassetto o sotto un tavolo e si desidera vedere i LED del pannello frontale, è sufficiente creare un pannello frontale rimovibile e collegarlo alla scheda madre con fili più lunghi. Un rapido controllo su eBay rivela l'esistenza di venditori di componenti per computer che venderanno tali cavi sul pannello frontale (con i LED e gli interruttori collegati) di varie lunghezze, fino ad almeno 1 metro.


2
Il LED dell'HDD era solo un esempio. L'idea principale è che ho un LED inutilizzato sulla tastiera che vorrei controllare. Per favore, guarda le mie modifiche.
Attila O.

3

Puoi farlo usando AutoHotkey . Controlla questa discussione se vuoi conoscere i codici che devi usare.

Dopo aver letto quella discussione e la documentazione su AutoHotkey puoi fare queste cose.

Funziona anche con tastiere USB e wireless.

Puoi usarlo con Wine su Gentoo.


2
Mentre sono stato in grado di eseguire AutoHotkey con Wine, per qualche motivo non ha illuminato i miei LED (anche se non sono stati registrati messaggi di errore). Inoltre, anche se funzionerebbe, dover passare attraverso il vino ogni paio di millisecondi o avere un processo del vino in esecuzione tutto il tempo non è molto ottimale, soprattutto rispetto all'altra soluzione che utilizza setleds. Tuttavia, questa potrebbe essere una soluzione per gli utenti di windoze, quindi grazie per la pubblicazione.
Attila O.

2

Da Linux 4.7:

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

Richiede CONFIG_LEDS_TRIGGER_DISK=ynella configurazione del kernel.


Questa è di gran lunga la risposta più elegante e spero che salga in cima!
mpy,

Funziona davvero bene, ma il rovescio della medaglia è che può smettere di funzionare quando si scollega e ricollega la tastiera.
SpecialBomb


0

Una volta ho scritto un piccolo programma C per controllare il LED CapsLock sul mio DELL XPS15. È testato solo su un sistema, quindi non posso garantire che funzionerà per te. Forse dovresti adattarlo, ma dovrebbe essere piuttosto semplice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.