Utilice el LED de bloqueo de mayúsculas como indicador LED de HDD (o personalizado)

23

Tengo mi Caps Lockllave reasignada Esc, así que ahora tengo un LED en mi teclado que nunca está encendido. Me gustaría usarlo para algo útil, como HDD o actividad LAN.

Especialmente porque estoy usando una computadora con una caja y disipadores de calor personalizados (integrados en mi cajón para que no tenga que escuchar el HDD y no ocupe mucho espacio), y los LED no son visibles de lo contrario.

Si hay una biblioteca para controlar los LED del teclado, podría codificar yo mismo, si aún no hay una solución para esto.

Estoy en Gentoo ~ amd64.

EDITAR: Ok, olvídate del LED HDD. Fue solo un ejemplo.

Quiero que el Caps LockLED se ilumine cuando sea mi cumpleaños. O cuando tengo correo electrónico. O cuando digo " Caps LockLED, enciéndelo".

Absolutamente no quiero usar un cable extra. De hecho, sería bueno que esto también funcionara en teclados inalámbricos.

Atila O.
fuente
44
¡Me gusta esta idea! ¿Ojalá alguien pueda responder para Windows también?
Iszi
1
Puede editar el requisito del LED del HDD nuevamente a su pregunta. Es posible que las soluciones no parpadeen tan rápido como el disco duro normal, pero funciona bastante bien en mi teclado. Y es bastante útil, porque no puedo ver mis leds de disco duro.
Manwe

Respuestas:

18

Bueno, para cambiar el indicador LED en la consola VT puedes usar setleds. Entonces, si estás en una TV, puedes escribir

setleds

y obtendrás tu estado led actual. Si no desea habilitar el bloqueo numérico, solo enciéndalo y escriba:

setleds -L +num 

Se vuelve más complicado en X y esta es la forma "más simple" de probarlo. Tenga en cuenta que X generalmente se ejecuta como root, por lo que deberá verificar los permisos en X-windows tty o ejecutarlo con privilegios de root. Por lo general, X es tty7. /dev/consoledebería funcionar siendo la consola del sistema y por eso todos los VT deberían verse afectados.

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

Creo que esto también funcionará:

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

Aquí hay una lista de opciones de luz

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

Si no tiene setledsen su sistema, supongo que puede obtenerlo de este paquete emergente sys-apps/kbd.

Si son más de persona que le gusta las cosas código aquí hay un enlace a ES Ejemplo de código para leds cambio en x . No probé esto, pero solo mirando el código se veía bien.

Y aquí hay un script de shell para hacer lo que originalmente quería. Tener tapas u otros 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
fuente
1
Gracias por esta buena respuesta, esta solución funciona perfectamente para mí y es un buen ejemplo que puedo cambiar fácilmente a lo que necesite. A ya se sys-apps/kbdinstaló, por lo que funcionó de la caja. Te mereces toda la recompensa que podría darte :)
Attila O.
5

verifique Gmail: parpadea los LED cuando se reciben correos electrónicos y dice la cantidad de correos electrónicos

#!/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
chorro
fuente
1
¿Dónde se puede encontrar blink?
Manwe
1
blinkd - parece que los chicos de Debian lo eliminaron de repos, triste - bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433
jet
4

Puede quitar un LED de HDD de una caja vieja, extender los cables y atar los cables al cable del teclado, ramificar en la caja y enchufar directamente al puente del LED de HDD en la placa base. Abra el teclado y pegue en caliente el LED HDD junto al LED de bloqueo de mayúsculas.

¿Software libre y feo? Comprobar.

horacio
fuente
No es una mala idea del todo, pero 1. Podría usar el teclado del teclado, no creo que necesite otro led de una carcasa vieja, y 2. Quiero que solo haya un cable USB que conecte mi teclado. O mejor aún: piense en el teclado inalámbrico.
Atila O.
4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

también trabaja con Caps Lock, etc.

gcb
fuente
1
Esto solo funciona para Scroll Lock para mí.
lilydjwg
3

Este no es un problema de software para resolver con una biblioteca.

Los LED del teclado están controlados por software, en particular por el controlador del dispositivo del teclado que genera comandos para enviar al microprocesador del teclado que enciende y apaga los LED, en respuesta a las solicitudes de control de E / S.

Las luces de actividad del disco duro en su panel frontal están controladas por hardware. Están conectados a la placa base y, para abreviar, se conectan a una salida del chip de puente PCI a ATA. (Para el ICH10, por ejemplo, esta salida es la SATALED#salida). El hardware activa y desactiva esta salida a medida que se envían comandos a través del bus SATA / PATA. Aquellos que recuerdan la vida con SCSI recordarán que la actividad del disco duro SCSI no afectó el LED del "disco duro", ya que es controlado por el hardware del puente ATA.

No es realmente práctico, y requeriría una cantidad considerable de software y hardware adicionales, para que la salida de la SATALED#señal provoque interrupciones de hardware que recibe el software, que luego activa comandos por el controlador del dispositivo del teclado. Es un diseño bastante descabellado. Pero el enfoque inverso, de hacer que todos los comandos de E / S de disco generados por el controlador del dispositivo de disco hagan un viaje lateral a través del controlador del dispositivo de teclado es casi tan malo, aunque no requiere un nuevo tipo de dispositivo de hardware que reciba " ¡El LED del panel frontal está encendido! " interrumpe Requiere que se unan dos subsistemas de hardware distintos: disco y teclado, y una buena cantidad de programación de sistemas. También limitaría efectivamente todas las E / S de disco a la velocidad del teclado.

Este es un problema de hardware para resolver, de manera muy simple, con un cable más largo.

Si su panel frontal está oculto en un cajón o debajo de una mesa, y desea ver los LED del panel frontal, simplemente haga un panel frontal desmontable y conéctelo a la placa base con cables más largos. Una revisión rápida en eBay revela que existen proveedores de componentes de computadora que le venderán dichos cables del panel frontal (con los LED y los interruptores conectados) de diferentes longitudes, hasta al menos 1 metro.

JdeBP
fuente
2
El LED HDD fue solo un ejemplo. La idea principal es que tengo un LED no utilizado en mi teclado que me gustaría controlar. Por favor mira mis ediciones.
Atila O.
3

Puede hacerlo usando AutoHotkey . Consulte este hilo si desea obtener información sobre los códigos que necesita usar.

Después de leer ese hilo y la documentación en AutoHotkey, puede hacer esas cosas.

También funciona con USB y teclados inalámbricos también.

Puedes usarlo con Wine en Gentoo.

Mavromatis Lozay
fuente
2
Si bien pude ejecutar AutoHotkey con Wine, por alguna razón no iluminó mis LED (aunque no se registraron mensajes de error). Además, incluso si funcionara, tener que canalizar el vino cada dos milisegundos o tener un proceso de vino en funcionamiento todo el tiempo no es muy óptimo, especialmente en comparación con la otra solución que utiliza setleds. Aún así, esta podría ser una solución para los usuarios de ventanas, así que gracias por publicar.
Atila O.
2

Desde Linux 4.7:

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

Se requiere CONFIG_LEDS_TRIGGER_DISK=yen la configuración del kernel.

símbolo de los átomos
fuente
Esta es, con mucho, la respuesta más elegante y espero que llegue a la cima.
mpy
Esto funciona muy bien, pero la desventaja es que puede dejar de funcionar al desconectar y volver a enchufar el teclado.
SpecialBomb