Utiliser la LED de verrouillage des majuscules comme indicateur LED HDD (ou personnalisé)

23

J'ai Caps Lockremappé ma clé Esc, alors j'ai maintenant une LED sur mon clavier qui n'est jamais allumée. Je voudrais l'utiliser pour quelque chose d'utile, comme une activité HDD ou LAN.

Surtout que j'utilise un ordinateur avec une boîte et des dissipateurs thermiques personnalisés (intégrés dans mon tiroir, donc je n'ai pas à écouter le disque dur et il ne prend pas beaucoup de place), et les LED ne sont pas visibles autrement.

S'il y a une bibliothèque pour contrôler les voyants du clavier, je pourrais faire un peu de codage moi-même, s'il n'y a pas déjà de solution pour cela.

Je suis sur Gentoo ~ amd64.

EDIT: Ok, oubliez la LED HDD. C'était juste un exemple.

Je veux que la Caps LockLED s'allume quand c'est mon anniversaire. Ou quand j'ai un e-mail. Ou quand je dis " Caps LockLED, allumez-vous!".

Je ne veux absolument pas utiliser de fil supplémentaire. En fait, ce serait bien si cela fonctionnait également sur les claviers sans fil.

Attila O.
la source
4
J'aime cette idée! Espérons que quelqu'un puisse également répondre pour Windows?
Iszi
1
Vous pouvez modifier l'exigence LED HDD pour revenir à votre question. Les solutions ne clignotent peut-être pas aussi rapidement que les voyants HDD normaux, mais cela fonctionne très bien sur mon clavier. Et c'est assez utile, car je ne vois pas mes voyants de disque dur.
Manwe

Réponses:

18

Eh bien, pour changer l'indicateur LED sur la console VT, vous pouvez utiliser setleds. Donc, si vous êtes dans un VT, vous pouvez simplement taper

setleds

et vous obtiendrez votre statut actuel de led. Si vous ne souhaitez pas activer le verrouillage numérique, allumez-le simplement, vous pouvez taper:

setleds -L +num 

Il est plus délicat en X et c'est la façon la plus "simple" de l'essayer. Veuillez noter que X est généralement exécuté en tant que root, vous devrez donc vérifier les autorisations sur X-windows tty ou l'exécuter avec les privilèges root. Habituellement, X est tty7. /dev/consoledevrait fonctionner étant la console système et que tous les TT devraient être affectés.

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

Je pense que cela fonctionnera également:

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

voici la liste des options d'éclairage

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

Si vous n'avez pas setledsdans votre système, je suppose que vous pouvez l'obtenir à partir de ce package emerge sys-apps/kbd.

Si vous êtes plus de personne qui aime des trucs de code est ici un lien vers en exemple le code à diodes électroluminescentes de changement dans X . Je n'ai pas testé cela, mais juste en regardant le code, ça avait l'air correct.

Et voici un script shell pour faire ce que vous vouliez à l'origine. Pour avoir des bouchons ou autres leds comme indicateurs de disque dur.

#!/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
la source
1
Merci pour cette belle réponse, cette solution fonctionne parfaitement pour moi, et est un bon exemple que je peux facilement changer en tout ce dont j'ai besoin. A déjà sys-apps/kbdinstallé, donc cela a fonctionné hors de la boîte. Vous méritez toutes les récompenses que je pourrais donner :)
Attila O.
5

vérifier Gmail - clignote LED lorsque les e-mails reçus et indique le nombre d'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
jet
la source
1
Où pouvez-vous trouver blink?
Manwe
1
blinkd - on dirait que les gars de Debian l'ont supprimé de repos, sad - bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433
jet
4

Vous pouvez retirer une LED de disque dur d'un ancien boîtier, étendre les fils et attacher les fils au fil du clavier, dériver le boîtier et brancher directement dans le cavalier de LED du disque dur sur la carte mère. Ouvrez le clavier et collez à chaud la LED HDD à côté de la LED capslock.

Logiciel gratuit et moche? Vérifier.

horatio
la source
Ce n'est pas une mauvaise idée, mais 1. Je pourrais simplement utiliser la led du clavier, je ne pense pas avoir besoin d'une autre led d'un ancien boîtier, et 2. Je veux qu'il n'y ait qu'un seul câble USB connectant mon clavier. Ou mieux encore - pensez au clavier sans fil.
Attila O.
4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

fonctionne également avec Caps Lock, etc.

gcb
la source
1
Cela ne fonctionne que pour Scroll Lock pour moi.
lilydjwg
3

Ce n'est pas un problème logiciel à résoudre avec une bibliothèque.

Les voyants du clavier sont contrôlés par un logiciel - en particulier par le pilote du périphérique clavier générant des commandes à envoyer au microprocesseur du clavier qui allument et éteignent les voyants, en réponse aux demandes de contrôle d'E / S.

Les voyants d'activité du disque dur sur votre panneau avant sont contrôlés par le matériel. Ils sont connectés à la carte mère et, pour faire court, sont câblés à une sortie de la puce de pont PCI-ATA. (Pour l'ICH10, par exemple, cette sortie est la SATALED#sortie.) Le matériel active et désactive cette sortie lorsque des commandes sont envoyées via le bus SATA / PATA. Ceux qui se souviennent de la vie avec SCSI se souviendront que l'activité du disque dur SCSI n'a pas affecté le voyant "disque dur", car il est piloté par le matériel du pont ATA.

Ce n'est pas vraiment pratique - et nécessiterait une quantité considérable de logiciels et de matériel supplémentaires - pour que la sortie du SATALED#signal provoque des interruptions matérielles reçues par le logiciel, qui déclenche ensuite des commandes par le pilote de périphérique du clavier. C'est un design assez épinglé. Mais l'approche inverse, selon laquelle toutes les commandes d'E / S de disque générées par le pilote de périphérique de disque font un détour par le pilote de périphérique de clavier, est presque aussi mauvaise, bien qu'elle ne nécessite pas un tout nouveau type de périphérique matériel qui reçoive " La LED du panneau avant est allumée! " interrompt. Il nécessite la liaison de deux sous-systèmes matériels distincts - disque et clavier - et une bonne quantité de programmation système. Cela limiterait également efficacement toutes les E / S de disque à la vitesse du clavier.

Il s'agit d'un problème matériel à résoudre, très simplement, avec un morceau de fil plus long.

Si votre panneau avant est caché dans un tiroir ou sous une table et que vous souhaitez voir les LED du panneau avant, créez simplement votre propre panneau avant amovible et connectez-le à la carte mère avec des fils plus longs. Une vérification rapide sur eBay révèle qu'il existe des fournisseurs de composants informatiques qui vous vendront de tels câbles de panneau avant (avec les LED et les commutateurs attachés) de longueurs variables, jusqu'à au moins 1 mètre.

JdeBP
la source
2
La LED HDD n'était qu'un exemple. L'idée principale est que j'ai une LED inutilisée sur mon clavier que j'aimerais contrôler. Veuillez regarder mes modifications.
Attila O.
3

Vous pouvez le faire en utilisant AutoHotkey . Vérifiez ce fil si vous voulez en savoir plus sur les codes que vous devez utiliser.

Après avoir lu ce fil et la documentation sur AutoHotkey, vous pouvez faire ces choses.

Il fonctionne également avec les claviers USB et sans fil.

Vous pouvez l'utiliser avec Wine sur Gentoo.

Mavromatis Lozay
la source
2
Bien que j'ai pu exécuter AutoHotkey avec Wine, pour une raison quelconque, il n'a pas allumé mes voyants (bien qu'aucun message d'erreur n'ait été enregistré). De plus, même si cela fonctionnait, devoir acheminer du vin toutes les deux ou trois millisecondes ou avoir un processus de vin en cours d'exécution n'est pas très optimal, surtout par rapport à l'autre solution qui utilise setleds. Pourtant, cela pourrait être une solution pour les utilisateurs de windoze, donc merci pour la publication.
Attila O.
2

Depuis Linux 4.7:

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

Il nécessite CONFIG_LEDS_TRIGGER_DISK=ydans la configuration du noyau.

atomesymbole
la source
C'est de loin la réponse la plus élégante et j'espère qu'elle atteindra le sommet!
mpy
Cela fonctionne vraiment bien, mais l'inconvénient est que cela peut cesser de fonctionner lorsque vous débranchez et rebranchez le clavier.
SpecialBomb
0

J'ai écrit une fois un petit programme C pour contrôler la LED CapsLock sur mon DELL XPS15. Il n'est testé que sur un seul système, donc je ne peux pas garantir qu'il fonctionnera pour vous. Il faudrait peut-être l'adapter, mais cela devrait être assez simple.

cee
la source