Используйте индикатор Caps Lock в качестве индикатора жесткого диска (или пользовательского)

23

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

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

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

Я на Gentoo ~ amd64.

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

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

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

Аттила О.
источник
4
Мне нравится эта идея! Надеюсь, кто-то может ответить и за Windows?
Изи
1
Вы можете отредактировать требования к светодиодному индикатору жесткого диска обратно к вашему вопросу Решения могут не мигать так быстро, как обычный светодиод жесткого диска, но на клавиатуре это работает довольно хорошо. И это очень полезно, потому что я не вижу своих жестких дисков.
Манве

Ответы:

18

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

setleds

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

setleds -L +num 

В X все сложнее, и это самый «простой» способ попробовать. Обратите внимание, что X обычно запускается с правами суперпользователя, поэтому вам нужно либо проверить разрешения на 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
Manwe
источник
1
Спасибо за этот хороший ответ, это решение отлично работает для меня и является хорошим примером, который я могу легко изменить на все, что мне нужно. А уже sys-apps/kbdустановили, так что сработало из коробки. Вы заслуживаете всю награду, которую я мог дать :)
Аттила О.
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
реактивный самолет
источник
1
Где можно найти blink?
Манве
1
blinkd - похоже, ребята из Debian удалили его из репозиториев, печально - bugs.debian.org/cgi-bin/bugreport.cgi?bug=461433
jet
4

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

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

Горацио
источник
В целом неплохая идея, но 1. Я мог бы просто использовать светодиодный индикатор клавиатуры, я не думаю, что мне нужен другой светодиод из старого корпуса, и 2. Я хочу, чтобы к моей клавиатуре был только один USB-кабель. Или еще лучше - подумайте о беспроводной клавиатуре.
Аттила О.
4
#turn on
xset led named "Scroll Lock"

#turn off
xset -led named "Scroll Lock

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

GCB
источник
1
Это работает только для Scroll Lock для меня.
lilydjwg
3

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

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

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

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

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

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

JdeBP
источник
2
LED HDD был просто примером. Основная идея заключается в том, что у меня есть неиспользуемый светодиод на клавиатуре, которым я хотел бы управлять. Пожалуйста, посмотрите на мои правки.
Аттила О.
3

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

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

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

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

Мавроматис Лозай
источник
2
Хотя я смог запустить AutoHotkey с Wine, по некоторым причинам он не загорелся мои светодиоды (хотя сообщения об ошибках не были зарегистрированы). Кроме того, даже если это сработает, необходимость проходить через вино каждую пару миллисекунд или постоянно выполнять винный процесс не очень оптимально, особенно по сравнению с другим решением, которое использует setleds. Тем не менее, это может быть решением для пользователей windoze, так что спасибо за публикацию.
Аттила О.
2

Начиная с Linux 4.7:

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

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

atomsymbol
источник
Это, безусловно, самый элегантный ответ, и я надеюсь, что он поднимется до вершины!
МРУ
Это работает очень хорошо, но недостатком является то, что он может перестать работать при отключении и
повторном
0

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

СЕЕ
источник