Verwenden Sie die Feststelltaste als Festplatten-LED (oder benutzerdefinierte LED)


23

Ich habe meine Caps LockTaste neu zugeordnet Esc, daher habe ich jetzt eine LED auf meiner Tastatur, die niemals leuchtet . Ich würde es gerne für nützliche Zwecke wie Festplatten- oder LAN-Aktivitäten verwenden.

Insbesondere, wenn ich einen Computer mit einer benutzerdefinierten Box und Kühlkörpern verwende (in meine Schublade eingebaut, damit ich nicht auf die Festplatte hören muss und sie nicht viel Platz beansprucht) und die LEDs ansonsten nicht sichtbar sind.

Wenn es eine Bibliothek zur Steuerung der Tastatur-LEDs gibt, könnte ich selbst eine Codierung vornehmen, wenn es dafür noch keine Lösung gibt.

Ich bin bei Gentoo ~ amd64.

EDIT: Ok, vergiss die HDD LED. Es war nur ein Beispiel.

Ich möchte, dass die Caps LockLED aufleuchtet, wenn ich Geburtstag habe. Oder wenn ich Email habe. Oder wenn ich " Caps LockLED, bitte aufleuchten!" Sage.

Ich möchte auf keinen Fall einen zusätzlichen Draht verwenden. In der Tat wäre es schön, wenn dies auch auf drahtlosen Tastaturen funktionieren würde.


4
Ich mag diese Idee! Hoffentlich kann jemand auch für Windows antworten?
Iszi

1
Sie können die Festplatten-LED-Anforderung zurück auf Ihre Frage bearbeiten. Die Lösungen blinken möglicherweise nicht so schnell wie normale Festplatten, funktionieren aber auf meiner Tastatur recht gut. Und es ist ziemlich nützlich, weil ich meine Festplatten-LEDs nicht sehen kann.
Manwe

Antworten:


18

Nun, um die LED-Anzeige auf der VT- Konsole zu ändern , können Sie verwenden setleds. Also, wenn Sie in einem VT sind, können Sie einfach eingeben

setleds

und Sie erhalten Ihren aktuellen LED-Status. Wenn Sie Numlock nicht aktivieren möchten, können Sie Folgendes eingeben:

setleds -L +num 

In X wird es kniffliger, und dies ist die "einfachste" Möglichkeit, es auszuprobieren. Bitte beachten Sie, dass X normalerweise als root ausgeführt wird, sodass Sie entweder die Berechtigungen für X-windows tty überprüfen oder es mit root-Rechten ausführen müssen. Normalerweise ist X tty7. /dev/consolesollte als Systemkonsole funktionieren und dadurch sollten alle VTs betroffen sein.

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

Ich denke das wird auch funktionieren:

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

Hier ist eine Liste der Lichtoptionen

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

Wenn Sie nicht setledsin Ihrem System haben, ist meine Vermutung, dass Sie es aus diesem emerge-Paket erhalten können sys-apps/kbd.

Wenn Sie mehr von Person, die Sachen Code hier gefällt ist ein Link zu en Beispiel - Code zu ändern LEDs in X . Ich habe das nicht getestet, aber nur durch das Anschauen des Codes sah es ok aus.

Und hier ist ein Shell-Skript, um das zu tun, was Sie ursprünglich wollten. Caps oder andere LEDs als Festplattenanzeigen haben.

#!/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
Vielen Dank für diese nette Antwort, diese Lösung funktioniert perfekt für mich und ist ein gutes Beispiel dafür, dass ich leicht auf das wechseln kann, was ich brauche. A bereits sys-apps/kbdinstalliert haben, so hat es aus der Box geklappt. Sie verdienen alle Kopfgeld, die ich geben könnte :)
Attila O.

5

check Gmail - blinkt bei eingegangenen E-Mails und gibt die Anzahl der E-Mails an

#!/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
Wo können Sie finden blink?
Manwe

1
blinkd - sieht so aus, als hätten die Debian-Leute es aus den Repos entfernt, sad - bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433
jet

4

Sie können eine HDD-LED aus einem alten Gehäuse entfernen, die Kabel verlängern und die Kabel mit dem Tastaturkabel verbinden, am Gehäuse abzweigen und direkt in die HDD-LED-Brücke auf dem Mainboard stecken. Öffnen Sie die Tastatur und kleben Sie die HDD-LED neben der Capslock-LED an.

Software frei und hässlich? Prüfen.


Insgesamt keine schlechte Idee, aber 1. Ich könnte einfach die Tastatur-LED verwenden, ich glaube nicht, dass ich eine weitere LED aus einem alten Gehäuse benötige, und 2. Ich möchte, dass nur ein USB-Kabel meine Tastatur verbindet. Oder noch besser - denken Sie an eine drahtlose Tastatur.
Attila O.

4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

funktioniert auch mit Caps Lockusw.


1
Dies funktioniert nur für Scroll Lock bei mir.
Lilydjwg

3

Dies ist kein Softwareproblem, das mit einer Bibliothek gelöst werden kann.

Die Tastatur-LEDs werden von der Software gesteuert - insbesondere vom Tastatur-Gerätetreiber, der Befehle generiert, die an den Tastatur-Mikroprozessor gesendet werden, um die LEDs als Reaktion auf E / A-Steuerungsanforderungen ein- und auszuschalten.

Die Aktivitätsanzeigen der Festplatte an der Vorderseite werden von der Hardware gesteuert. Sie sind mit dem Mainboard verbunden und - um es kurz zu machen - mit einem Ausgang des PCI-zu-ATA-Bridge-Chips verbunden. (Beim ICH10 ist dieser Ausgang beispielsweise der SATALED#Ausgang.) Hardware schaltet diesen Ausgang ein und aus, wenn Befehle über den SATA / PATA-Bus gesendet werden. Diejenigen, die sich an das Leben mit SCSI erinnern, werden sich daran erinnern, dass die SCSI-Festplattenaktivität die "Festplatten" -LED nicht beeinflusste, da sie von der ATA-Bridge-Hardware gesteuert wird.

Es ist nicht wirklich praktisch - und würde eine beträchtliche Menge zusätzlicher Software und Hardware erfordern -, damit die Ausgabe des SATALED#Signals Hardware-Interrupts verursacht, die von der Software empfangen werden und dann Befehle vom Tastaturgerätetreiber auslösen. Es ist ein ziemlich kniffliges Design. Der umgekehrte Ansatz, bei dem alle vom Disc-Gerätetreiber generierten Disc-E / A-Befehle einen Nebeneffekt durch den Tastatur-Gerätetreiber ausführen, ist jedoch fast genauso schlecht, auch wenn keine völlig neue Art von Hardware-Gerät erforderlich ist, die Daten empfängt. Die LED an der Vorderseite leuchtet! " unterbricht. Es erfordert die Verknüpfung von zwei unterschiedlichen Hardware-Subsystemen - Disc und Tastatur - und eine Menge Systemprogrammierung. Es würde auch effektiv alle Disc-E / A auf die Geschwindigkeit der Tastatur begrenzen.

Dies ist ein Hardwareproblem, das sehr einfach mit einem längeren Stück Draht zu lösen ist.

Wenn Ihre Frontplatte in einer Schublade oder unter einem Tisch versteckt ist und Sie die LEDs auf der Frontplatte sehen möchten, erstellen Sie einfach eine eigene abnehmbare Frontplatte und verbinden Sie sie mit längeren Kabeln mit dem Mainboard. Eine schnelle Überprüfung bei eBay zeigt, dass es Anbieter von Computerkomponenten gibt, die Ihnen solche Frontplattenkabel (mit angeschlossenen LEDs und Schaltern) mit unterschiedlichen Längen von bis zu mindestens 1 Meter verkaufen.


2
Die HDD-LED war nur ein Beispiel. Die Hauptidee ist, dass ich eine unbenutzte LED auf meiner Tastatur habe, die ich steuern möchte. Bitte schauen Sie sich meine Änderungen an.
Attila O.

3

Sie können dies mit AutoHotkey tun . Überprüfen Sie diesen Thread, wenn Sie mehr über die Codes erfahren möchten, die Sie verwenden müssen.

Nachdem Sie diesen Thread und die Dokumentation zu AutoHotkey gelesen haben, können Sie diese Dinge tun.

Es funktioniert auch mit USB- und Wireless-Tastaturen.

Sie können es mit Wine auf Gentoo verwenden.


2
Obwohl ich AutoHotkey mit Wine ausführen konnte, leuchteten meine LEDs aus irgendeinem Grund nicht auf (obwohl keine Fehlermeldungen protokolliert wurden). Auch wenn es funktionieren würde, alle paar Millisekunden durch den Wein pfeifen zu müssen oder einen Weinprozess zu haben, der die ganze Zeit läuft, ist nicht sehr optimal, besonders im Vergleich zu der anderen Lösung, die verwendet wird setleds. Trotzdem könnte dies eine Lösung für Windoze-Benutzer sein, also danke für das Posten.
Attila O.

2

Seit Linux 4.7:

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

Es erfordert CONFIG_LEDS_TRIGGER_DISK=yin der Kernel-Konfiguration.


Dies ist bei weitem die eleganteste Antwort und ich hoffe, dass es nach oben steigen wird!
mpy

Das funktioniert wirklich gut, aber der Nachteil ist, dass dies nicht mehr funktionieren kann, wenn die Tastatur abgezogen und wieder eingesteckt wird.
SpecialBomb


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.