Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
В последних ветках ядра исчезла поддержка /proc/acpi/event , что имело двоякий результат: 1) С одной стороны, acpid, который умеет получать данные не только по этому каналу, начал получать события от оставшихся устройств ввода, в результате чего заработали кнопки Power и Sleep на клавиатуре. 2) С другой стороны, исчезла какая-либо разница между нажатием на кнопку Power на клавиатуре и на корпусе, что сделало невозможным избирательное отключение или переназначение соответствующей клавиши на клавиатуре, которую на многих клавиатурах слишком легко нажать случайно. Анализ событий клавиатуры и кода acpid показал, что этот демон обрабатывал сообщения клавиатуры несколько упрощённо, что стирало разницу, которая состояла в дополнительном событии со скан-кодом клавиши, которое отсутствует у кнопки на корпусе. Я написал об этом разработчику acpid, и неделю назад получил ответ с вложенным исходником промежуточной версии, в которой он эту проблему благополучно решил – теперь все события клавиатуры (то есть для которых передаётся скан-код клавиши) помечаются на выходе acpid буквой K: # acpi_listen button/power PBTN 00000080 00000000 button/power PBTN 00000080 00000000 K button/sleep SBTN 00000080 00000000 K Сегодня наконец вышел релиз acpid-2.0.14, в который это включено. Я уже отметил пакет acpid-2.0.13 в репозитории как устаревший и надеюсь, что в скором времени он будет обновлён. |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Ну вот, и года не прошло, acpid-2.0.14 уже в репозиториях Арч. Теперь (если ядро 3.1 и выше, и/или /proc/acpi/events больше нет) можно делать примерно так: Пишем общий acpid-файл /etc/acpi/events/power сразу для всех кнопок Power и Sleep: # /etc/acpi/events/power # This is called when the user presses the power or sleep button event=button/(power|sleep) action=/etc/acpi/power.sh %e #!/bin/bash # выкидываем ненужные 3й и 4й параметры с цифрами, case "$1 $2 $5" in # остальные собираем в строчку для проверки 'button/power PBTN K') # кнопка Power на клавиатуре /usr/sbin/pm-suspend # пусть будет ждущий режим ;; 'button/power PBTN ') # кнопка Power на корпусе /sbin/poweroff # завершаем работу ;; 'button/sleep SBTN K') # кнопка Sleep на клавиатуре /usr/sbin/pm-hibernate # спящий режим ;; esac chmod 755 /etc/acpi/power.sh /etc/rc.d/acpid restart P.S. Разумеется, кнопки и действия можно менять на любые другие. |