UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

134 lines (99 loc) 7.21 kB
## Contents * [1 Краткое вступление](#.D0.9A.D1.80.D0.B0.D1.82.D0.BA.D0.BE.D0.B5_.D0.B2.D1.81.D1.82.D1.83.D0.BF.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5) * [2 Для кого предназначено данное руководство?](#.D0.94.D0.BB.D1.8F_.D0.BA.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.B5.D0.B4.D0.BD.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.BE_.D0.B4.D0.B0.D0.BD.D0.BD.D0.BE.D0.B5_.D1.80.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.BE.3F) * [3 Установка необходимых инструментов](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BD.D0.B5.D0.BE.D0.B1.D1.85.D0.BE.D0.B4.D0.B8.D0.BC.D1.8B.D1.85_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.BE.D0.B2) * [4 Использование acpi_listen](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_acpi_listen) * [5 Настройка ACPID](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_ACPID) * [6 Устаревшее: пример скрипта](#.D0.A3.D1.81.D1.82.D0.B0.D1.80.D0.B5.D0.B2.D1.88.D0.B5.D0.B5:_.D0.BF.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.B0) ## Краткое вступление Многие руководства описывают процесс настройки мультимедийных клавиш с использованием таких программ как xev или keyTouch. Настоящая статья поясняет использование утилиты **acpi_listen** и создание вашего собственного скрипта для горячих клавиш. ## Для кого предназначено данное руководство? Данный метод предполагает, что сигналы с клавиатуры передаются через acpi. Если вам неизвестно, как это происходит в вашей системе, то полезно обратиться к статьям: * Using Multimedia Keys in Linux * Hotkeys * Extra Keyboard Keys - keyTouch ## Установка необходимых инструментов Скорее всего, все необходимое уже присутствует на вашей машине, но для уверенности лучше выполнить ``` $ sudo pacman -S acpi acpid acpitool ``` [Данная статья](/index.php/ACPI_modules "ACPI modules") рассказывает, какие модули вам необходимо загрузить (например, в `/etc/rc.conf` или через **modprobe**). ## Использование acpi_listen Из-под суперпользователя или же из-под обычного, но с достаточными привилегиями доступа к устройствам ввода, выполните: ``` # acpi_listen ``` Если при нажатии особой клавиши, например "Следующий" ("Next") или "Предыдущий" ("Previous") на экране появляются строки, похожие на: ``` hkey VALZ 00000000 00000b31 ``` значит все в порядке и можно продолжать. ## Настройка ACPID Демон ACPI реагирует на события ACPI в соответствии с содержимым файла `handler.sh`, который находится в `/etc/acpi/handler.sh` Вы можете либо редактировать его непосредственно, либо указать в нем другой скрипт (например `/etc/acpi/hotkeys.sh`) В файл `/etc/acpi/hotkeys.sh` нужно добавить следующие строки: ``` hkey) :case "$4" in ::00000b31) ::echo "PreviousButton pressed!" ::exailectl p ::;; :00000b32) ::echo "NextButton pressed!" ::exailectl n ::;; :00000b33) ::echo "Play/PauseButton pressed!" ::exailectl pp ::echo "executed.." ::;; :00000b30) ::echo "StopButton pressed!" ::exailectl s ::;; :*) ::echo "Hotkey Else: $4" ::;; :esac :;; ``` Значения "00000b31" и тому подобные представляют собой ответ, полученный от **acpi_listen**. "$4" представляет собой последнюю часть строки "hkey VALZ 00000000 00000b31" и различает мультимедийные клавиши. К тому же можно создать краткий shell-скрипт для управления медиа проигрывателем (на примере Exaile), который назовем exailectl. Так как ACPID запускается от суперпользователя, то вызов Exaile нужно выполнить командой: ``` $ sudo -u (имя пользователя) exaile ``` В противном случае acpi не сможет обнаружить нашу плеер, работающий на пользовательском уровне запуска, и воссоздаст другой процесс. ## Устаревшее: пример скрипта Так как keyTouch и другие программы для работы с клавиатурой у меня либо не заработали, либо работали не совсем хорошо, то перед редактированием `handler.sh` я создал свой скрипт, запускающийся в фоне и непосредственно реагирующий на вывод **acpi_listen**. Это не совсем правильный способ, так как его работа постоянно нагружала мой ноутбук. Но так или иначе я привожу данный скрипт, поэтому вы можете использовать или изменять его для себя, а также добавлять свои предложения по его улучшению. Он создан для ноутбука Toshiba Satellite A50 и управляет плеером Exaile, но его легко изменить для управления Amarok, Xine или даже приспособить для немультимедийных программ. ``` export STOP_MYHOTKEY=0 i=`acpi_listen -c 1` case "$i" in :"hkey VALZ 00000000 00000b31") ::#echo "PREVIOUS" ::exaile -p ::;; :"hkey VALZ 00000000 00000b32") ::#echo "NEXT" ::exaile -n ::;; :"hkey VALZ 00000000 00000b33") ::exaile -t ::;; :"hkey VALZ 00000000 00000b30") ::#echo "STOP" ::exaile -s ::;; :*) ::#echo "ELSE: $i" ::;; esac e=`echo $STOP_MYHOTKEY` if [ "$e" != "1" ] then :./myHotkey.sh & fi ``` Указание: скрипт необязательно запускать из-под суперпользователя, если вы можете получать ответ **acpi_listen** из-под обычного пользовательского аккаунта (снова подразумевается, что для него возможен доступ к устройствам ввода).