LINUX.ORG.RU

[Альтруистам] Мигатель NumLock'ом


0

1

Для уведомлений (новые письма, новые сообщения в im,...) хочу использовать мигающий numlock-светодиод. Решил сделать для этого демон, который всегда висит в памяти и по требованию (см. п.2 ниже) начинает или кончает мигать led'ом. Я в кодинге вообще ничего не понимаю, не программист. Поэтому, кому не сложно, дайте подсказки/наброски по следующим пунктам. Писать буду на Си.

1. Как, собственно, мигать светодиодом? Какие функции использовать для {в,вы,пере}ключения светодиода и с какими параметрами? Желательно, чтобы не зависеть от иксов, но можно и с ними. Желательно совместимость (не привязка к конкретному ядру и оборудованию, ибо всё может меняться). Гуглиться это плохо: я нашёл какой-то образец модуля ядра под это, но там я ничего не понял. Пробовал копать исходники разных управлятелей клавиатурных ледов — тоже запутался в трёх соснах :(

2. Про демоны я вроде что-то уловил из статеек в интернете. Интересует только одно: как им управлять? Желательно, чтобы я просто давал команды типа `daemon -start` и `daemon -stop` для вкл/выкл мигания. Ещё что-то слышал о fifo: создать какой-то файл и в него направлять команды, но тут тоже прошу помощи.


Ответ на: комментарий от anonymous

Попытка не пытка. Подождём-с.

Я же не прошу написать мне программу. Я лишь прошу помощи в некоторых вопросах. Для этого, наверное, форум и нужен.

toady2
() автор топика

[code=bash] [~] >> cat bin/blinkled #!/bin/bash # # Мигать диодом указанное число раз с заданным интервалом

for (( i = 0; i < $1; i++ )); do    xset led 3    sleep $2    xset -led 3    sleep $2 done [/code]

anonymous
()
[~] >> cat bin/blinkled 
#!/bin/bash
#
# Мигать диодом указанное число раз с заданным интервалом

for (( i = 0; i < $1; i++ )); do
	xset led 3
	sleep $2
	xset -led 3
	sleep $2
done
anonymous
()

Уже есть такое, погугли. По крайней мере про почту и IMAP, я таким баловался лет 8 назад.

true_admin ★★★★★
()

Для уведомлений (новые письма, новые сообщения в im,...) хочу использовать мигающий numlock-светодиод. [...] Как, собственно, мигать светодиодом?

echo c > /proc/sysrq-trigger
mv ★★★★★
()
Ответ на: комментарий от adriano32

Спасибо. Остался второй вопрос.

toady2
() автор топика
Ответ на: комментарий от anonymous

/proc же депрекейтед надо через /sys

расслабься, он слоуп^W лиспер.

Rastafarra ★★★★
()

Вроде набросал. Надо мной посмеются за такой код, но я лучше не умею :(

http://paste.org.ru/?3sn71h

Вроде работает. Про управление демоном мне ничего не ответили и я не нашёл ничего лучшего, как управлять через сигналы. Только вот плохо: включить/выключить мигание можно только из под рута (для kill/killall). Хочется, чтобы любой пользователь мог это делать.

toady2
() автор топика

Лол, помню как одной из первых моих программ под дос на асме была именно мигалка светодиодами :)

buddhist ★★★★★
()

Касательно демонов есть blinkd, имхо это самый просто и удобный способ помигать диодами, плюс в том что он есть во многих дистрах, ничего самому компилить не придется. Хотя тут уже вариантов накидали, есть из чего выбрать.

cvb
()
Ответ на: комментарий от toady2

А, дошло, кажись. Нужно в моей программе при демонизации сохранить pid, например, в /var/run/blink-numlock.pid. А отправлять сигналы нужно не через внешнюю программу kill(all), а через сам blink-numlock: при запуске с параметром -start она выполняет функцию kill с SIGUSR1-ситгналомм на сохранённый pid. Затем blink-numlock'у дать в качестве владельца root, а также поставить suid флаг. Так?

toady2
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.