Event handlers: различия между версиями
Нет описания правки |
Stuw (обсуждение | вклад) (Fix link to wifi-toggle.sh (it was wifi-toggle on wikispaces). Fix page representation.) |
||
Строка 1: | Строка 1: | ||
==input-event-daemon== | ==input-event-daemon== | ||
https://github.com/gandro/input-event-daemon | https://github.com/gandro/input-event-daemon | ||
Программа позволяет повесить на любые системные события определённые действия. | Программа позволяет повесить на любые системные события определённые действия. | ||
Чтобы посмотреть, какое событие и на каком устройстве генерируется, нужно запустить демона в режиме монитора: | Чтобы посмотреть, какое событие и на каком устройстве генерируется, нужно запустить демона в режиме монитора: | ||
<pre> | <pre> | ||
Строка 7: | Строка 9: | ||
</pre> | </pre> | ||
Теперь при нажатии на разные кнопки, закрывании/открывании крышки, действиях с тачпадом и втыкании/вытыкании наушников будет появляться информация о событиях. | Теперь при нажатии на разные кнопки, закрывании/открывании крышки, действиях с тачпадом и втыкании/вытыкании наушников будет появляться информация о событиях. | ||
После этого в man'е нужно посмотреть, как выглядит конфиг и создать нужный на основе отловленных событий. | После этого в man'е нужно посмотреть, как выглядит конфиг и создать нужный на основе отловленных событий. | ||
Вот мой конфиг: | Вот мой конфиг: | ||
<pre> | <pre> | ||
Строка 25: | Строка 29: | ||
[Keys] | [Keys] | ||
POWER = wifi-toggle | POWER = wifi-toggle.sh | ||
CTRL+ALT+ESC = systemctl poweroff | CTRL+ALT+ESC = systemctl poweroff | ||
Строка 35: | Строка 39: | ||
</pre> | </pre> | ||
Реализовано: | Реализовано: | ||
* При закрытии/открытии крышки соответственно выключается/включается подсветка экрана. | |||
* Выключение внутреннего динамика при подключении наушников. | |||
* Включение/выключение wifi по нажатию на кнопку Power. Для этого нужно положить скрипт '''wifi-toggle.sh''', к примеру, в /usr/local/bin/. | |||
[ | [[File:wifi-toggle.sh]] | ||
* Выключение ноута по Ctrl+Alt+Esc. Если у вас не systemd, тогда замените просто на poweroff. | |||
Недостатки: | Недостатки: | ||
<span style="text-decoration: line-through;"> | * <span style="text-decoration: line-through;">при использовании комбинации из двух кнопок (например META+F1), событие генерится при отпускании второй кнопки. Поэтому, чтобы сделать авторепит, надо как-то исхитряться.</span> Правильное определение репита не нужно, есть другой софт. | ||
<span style="text-decoration: line-through;"> | * <span style="text-decoration: line-through;">при открытии крышки ноут не просыпается, поэтому после нажати кнопки на клавиатуре событие об открытии крышки не приходит. Скорее всего это касается всех обработчиков событий.</span> С некоторых пор не актуально, ибо на ядре 3.1.10 события генерируются всегда - проблем с определением открытия/закрытия крышки нет. | ||
==inputmon== | ==inputmon== | ||
'''В связи с тем, что input-event-daemon умеет всё то же самое и ещё больше, считаю, что данная прога более не актуальна.''' | '''В связи с тем, что input-event-daemon умеет всё то же самое и ещё больше, считаю, что данная прога более не актуальна.''' | ||
http://dl.dropbox.com/u/20806392/untitled.c | http://dl.dropbox.com/u/20806392/untitled.c | ||
Это исходник программы, которая следит за /dev/input/eventX и выполняет действие при изменении состояния в 0 и 1, например: | Это исходник программы, которая следит за /dev/input/eventX и выполняет действие при изменении состояния в 0 и 1, например: | ||
<pre> | <pre> | ||
Строка 53: | Строка 58: | ||
</pre> | </pre> | ||
Собственно, с использованием amixer, насколько я помню, и переключается выход с колонок на наушники. Чуть позже моуг посмотреть точные параметры запуска. | Собственно, с использованием amixer, насколько я помню, и переключается выход с колонок на наушники. Чуть позже моуг посмотреть точные параметры запуска. | ||
Сон по закрытию крышки, кстати, реализован так же, ибо всяческие gnome-settings-daemon и прочие удалены. | Сон по закрытию крышки, кстати, реализован так же, ибо всяческие gnome-settings-daemon и прочие удалены. | ||
Cобранный http://dl.dropbox.com/u/20806392/inputmon | Cобранный http://dl.dropbox.com/u/20806392/inputmon | ||
Вообще хорошо было бы улучшить программу, конфигурационные там файлы с действием для каждого значения, итд, но я не осилил. | Вообще хорошо было бы улучшить программу, конфигурационные там файлы с действием для каждого значения, итд, но я не осилил. |
Текущая версия от 08:28, 20 октября 2014
input-event-daemon
https://github.com/gandro/input-event-daemon
Программа позволяет повесить на любые системные события определённые действия.
Чтобы посмотреть, какое событие и на каком устройстве генерируется, нужно запустить демона в режиме монитора:
sudo input-event-daemon -m
Теперь при нажатии на разные кнопки, закрывании/открывании крышки, действиях с тачпадом и втыкании/вытыкании наушников будет появляться информация о событиях.
После этого в man'е нужно посмотреть, как выглядит конфиг и создать нужный на основе отловленных событий.
Вот мой конфиг:
# # /etc/input-event-daemon.conf # [Global] # Keyboard listen = /dev/input/event0 # Power Button listen = /dev/input/event2 # Lid Switch listen = /dev/input/event3 # Headset Jack listen = /dev/input/event7 [Keys] POWER = wifi-toggle.sh CTRL+ALT+ESC = systemctl poweroff [Switches] LID:1 = cat /sys/class/backlight/pwm-backlight/brightness > /tmp/.brightness_value; echo 0 > /sys/class/backlight/pwm-backlight/brightness LID:0 = cat /tmp/.brightness_value > /sys/class/backlight/pwm-backlight/brightness HEADPHONE_INSERT:1 = amixer sset "Int Spk" mute HEADPHONE_INSERT:0 = amixer sset "Int Spk" unmute
Реализовано:
- При закрытии/открытии крышки соответственно выключается/включается подсветка экрана.
- Выключение внутреннего динамика при подключении наушников.
- Включение/выключение wifi по нажатию на кнопку Power. Для этого нужно положить скрипт wifi-toggle.sh, к примеру, в /usr/local/bin/.
- Выключение ноута по Ctrl+Alt+Esc. Если у вас не systemd, тогда замените просто на poweroff.
Недостатки:
- при использовании комбинации из двух кнопок (например META+F1), событие генерится при отпускании второй кнопки. Поэтому, чтобы сделать авторепит, надо как-то исхитряться. Правильное определение репита не нужно, есть другой софт.
- при открытии крышки ноут не просыпается, поэтому после нажати кнопки на клавиатуре событие об открытии крышки не приходит. Скорее всего это касается всех обработчиков событий. С некоторых пор не актуально, ибо на ядре 3.1.10 события генерируются всегда - проблем с определением открытия/закрытия крышки нет.
inputmon
В связи с тем, что input-event-daemon умеет всё то же самое и ещё больше, считаю, что данная прога более не актуальна. http://dl.dropbox.com/u/20806392/untitled.c
Это исходник программы, которая следит за /dev/input/eventX и выполняет действие при изменении состояния в 0 и 1, например:
inputmon /dev/input/input0 "action0.sh" "action1.sh"
Собственно, с использованием amixer, насколько я помню, и переключается выход с колонок на наушники. Чуть позже моуг посмотреть точные параметры запуска.
Сон по закрытию крышки, кстати, реализован так же, ибо всяческие gnome-settings-daemon и прочие удалены.
Cобранный http://dl.dropbox.com/u/20806392/inputmon
Вообще хорошо было бы улучшить программу, конфигурационные там файлы с действием для каждого значения, итд, но я не осилил.