23

Моя клавиша Caps Lock переназначена на Esc, так что теперь у меня есть светодиод на клавиатуре, который никогда не горит. Я хотел бы использовать его для чего-то полезного, например, жесткого диска или локальной сети.

Тем более, что я использую компьютер с нестандартной коробкой и радиаторами (встроенными в мой ящик, поэтому мне не нужно слушать жесткий диск, и он не занимает много места), а светодиоды не видны в противном случае.

Если есть библиотека для управления светодиодами клавиатуры, я мог бы сам заняться кодированием, если для этого уже нет решения.

Я на Gentoo ~ amd64.

РЕДАКТИРОВАТЬ: Хорошо, забудьте о светодиодном жестком диске. Это был просто пример.

Я хочу, чтобы светодиод Caps Lock загорелся, когда у меня день рождения. Или когда у меня есть электронная почта. Или , когда я говорю "Caps Lock LED, пожалуйста , загораются!».

Я абсолютно не хочу использовать дополнительный провод. На самом деле было бы неплохо, если бы это работало и на беспроводных клавиатурах.

9 ответов9

18

Хорошо, чтобы изменить светодиодный индикатор на консоли VT вы можете использовать setleds . Так что, если вы находитесь в VT, вы можете просто набрать

setleds

и вы получите свой текущий светодиодный статус. Если вы не хотите включать numlock, просто включите его, набрав:

setleds -L +num 

В X все сложнее, и это самый "простой" способ попробовать. Обратите внимание, что X обычно запускается от имени пользователя root, поэтому вам нужно либо проверить разрешения на X-windows tty, либо запустить его с правами root. Обычно X это tty7. /dev/console должна работать как системная консоль, и этим должны быть затронуты все VT.

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

Я думаю, что это также будет работать:

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

вот список вариантов освещения

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

Если в вашей системе нет setleds , я предполагаю, что вы можете получить их из пакета emerge sys-apps/kbd .

Если вы больше любите кодировать вещи, вот ссылка на пример кода для изменения светодиода в X. Я не проверял это, но просто смотря код выглядел нормально.

А вот сценарий оболочки, чтобы сделать то, что вы изначально хотели. Иметь заглушки или другие светодиоды в качестве индикаторов 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
5

проверять Gmail - мигает светодиодами при получении электронных писем и сообщает количество писем

#!/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
4

Вы можете удалить светодиод жесткого диска из старого корпуса, удлинить провода и обвязать провода к проводу клавиатуры, разветвить корпус и подключить непосредственно к светодиодной перемычке жесткого диска на материнской плате. Откройте клавиатуру и приклейте светодиодный индикатор жесткого диска рядом со светодиодным индикатором крышки.

Программное обеспечение бесплатно и безобразно? Проверьте.

3

Вы можете сделать это с помощью AutoHotkey. Проверьте эту ветку, если вы хотите узнать о кодах, которые вам нужно использовать.

Прочитав эту ветку и документацию по AutoHotkey, вы можете сделать это.

Также он работает с USB и беспроводными клавиатурами тоже.

Вы можете использовать его с Wine на Gentoo.

3
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

также работает с Caps Lock и т. д.

3

Это не программная проблема, которую нужно решить с помощью библиотеки.

Светодиоды клавиатуры управляются программным обеспечением, в частности драйвером устройства клавиатуры, генерирующим команды для отправки на микропроцессор клавиатуры, который включает и выключает светодиоды в ответ на запросы управления вводом / выводом.

Индикаторы активности жесткого диска на передней панели управляются аппаратно. Они подключены к материнской плате и, если коротко, подключены к выходу мостовой микросхемы PCI-ATA. (Например, для ICH10 этот выход является выходом SATALED# .) Аппаратное обеспечение включает и выключает этот выход при отправке команд через шину SATA/PATA. Те, кто помнит жизнь с SCSI, помнят, что активность жесткого диска SCSI не влияла на индикатор "жесткого диска", так как он управляется аппаратным обеспечением моста ATA.

Это не очень практично - и потребует значительного количества дополнительного программного и аппаратного обеспечения - для вывода сигнала SATALED# чтобы вызвать аппаратные прерывания, которые получает программное обеспечение, которое затем запускает команды драйвером устройства клавиатуры. Это довольно сложный дизайн. Но обратный подход, заключающийся в том, что все команды ввода-вывода диска, генерируемые драйвером дискового устройства, совершают боковой обход через драйвер устройства клавиатуры, почти так же плохи, хотя и не требуют совершенно нового типа аппаратного устройства, которое получает ". Светодиод на передней панели горит!прерывает. Для этого требуются две различные аппаратные подсистемы - диск и клавиатура - и большое количество системного программирования. Это также будет эффективно ограничивать все дисковые операции ввода / вывода скоростью клавиатуры.

Это аппаратная проблема, которую очень просто решить, используя более длинный кусок провода.

Если ваша передняя панель спрятана в ящике или под столом, и вы хотите видеть светодиоды на передней панели, просто сделайте собственную переднюю панель и подключите ее к материнской плате с помощью более длинных проводов. Быстрая проверка на eBay показывает, что существуют поставщики компьютерных компонентов, которые будут продавать вам такие кабели лицевой панели (с подключенными светодиодами и переключателями) различной длины, не менее 1 метра.

2

Начиная с Linux 4.7:

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

Требуется CONFIG_LEDS_TRIGGER_DISK=y в конфигурации ядра.

1

http://members.optusnet.com.au/foonly/whirlpool/code/hddled.c

Это сделает светодиод HDD на Scroll Lock. Модификация для CAPS LOCK должна быть простой.

0

Однажды я написал небольшую C-программу для управления светодиодом CapsLock на моем DELL XPS15. Он протестирован только на одной Системе, поэтому я не могу гарантировать, что он будет работать для вас. Может быть, вам придется адаптировать его, но это должно быть довольно просто.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .