Настройка клавиш fn linux

Обновлено: 05.07.2024


Эх. Давненько я ничего не писал. Надо исправляться :)
В этом посте хочу рассказать о том как настроить хоткеи типа Fn+F1 и т.д. на ноуте в ubuntu, но это так же справедливо для любого другого дистрибутива linux/bsd (уверен, хотя не проверял).

Подготовка и "комментарии"
В ubuntu все необходимые нам пакеты ставятся "из коробки", в других дистрибутивах, возможно, придется их поставить/скомпилировать самостоятельно. Скажу сразу, этот метод должен подойти для любого ноута и дистрибутива linux, т.ж., думаю, это будет работать и в *BSD системах.
И так. Ставим пакеты (названия пакетов взяты из ubuntu) acpid и acpi-support (так же не помешают acpi и acpitool ), если они еще не стоят. В ubuntu это делается так:Поясню коротко для чего какой пакет.
acpid - сам acpi-демон, который обрабатывает acpi-события;
acpi-support - этот пакет ставит в систему файлы обработчики событий, т.е. правила реагирования на acpi-события, и скрипты, которые вызываются файлами-обработчиками при наступлении какого-либо события;
acpi и acpitool - это дополнительне утилиты, которые показывают различную информацию полученную через acpi.
Не смотря на то, что стоит пакет acpi-support все же не все клавиши работают. У меня на ASUS'е (на Acer'е уже не помню) работают "из коробки" только:
Fn+F2 - wifi и bluetooth (мне не понравилось поведение и я перенастроил его, но об этом в след. посте);
Fn+F - яркость подсветки дисплея;
Fn+F7 - вкл/выкл подсветку дисплея;
Fn+F - управление громкостью;
Fn+ - стоп, плей/пауза, вперед, назад;
переключатель на передней панели - вкл/выкл wifi и bluetooth;
Power - кнопка вкл/выкл ноута;
LID - крышка ноута.
Но еще есть Fn+F и Fn+ , которые не работали из коробки, а это уже не порядок.
На этом подготовка закончена. Переходим к.

Отлов событий
Нужные пакеты уже стоят, а значит пора действовать. "Набиваем" в любимой консольке:и тыкаем Fn клавиши, а когда натыкаемся жмем Ctrl+C :) В этом примере я 2 раза нажал Fn+F4 (вызов браузера). Что означает вывод? А вот что:
первые два слова - тип события;
третье - номер события;
четвертое - порядковый номер нажатия на эту клавишу (это нам не нужно).
Все номера событий для ASUS M50Vc с комментариями.

Поиск файлов-обработчиков событий и разбор их работы
Идем в каталог /etc/acpi/events/ и грепаем. Например, для того чтобы узнать какой файл-обработчик события отвечает за нажатие клавиши Fn+F4 выполняем:Перед двоеточием (:) указано имя файла-обработчика, а после - найденная строка. Давай теперь посмотрим содержимое этого файла:Тут первая строка описывает событие, которое нужно отлавливать, а вторая говорит демону acpid какой скрипт нужно выполнить. Теперь глянем что это за скрипт:Как видим, данный скрипт проверяет наличие файла и если его нет завершает свою работу иначе читает его (там переменные с кодами клавиш), вызывает утилиту acpi_fakekey (из пакета acpid) и передает ей в качестве параметра код клавиши 150 ($KEY_WWW). Утилита acpi_fakekey эмулирует нажатие клавиши на клавиатуре, код которой ей передали.
Вот и все. Как видишь ничего сложного :)

Простейший пример настройки Fn-клавиш
Давай для примера сделаем так, чтобы при нажатии клавиши Fn+F4 у нас запускался гномовский калькулятор (нумерация добавлена для удобства ссылок на строки кода) :Что же мы тут наделали. Давай разбираться :) В первом шаге мы определяем какой файл-обработчик события отвечает за нажатие на клавишу Fn+F4, потом (шаг 2) заглядываем в этот файл-обработчик, чтобы узнать какой скрипт выполняется при нажатии Fn+F4. На шаге 3 мы изменяем скрипт, который выполняется при нажатии Fn+F4, а именно комментируем строку "acpi_fakekey $KEY_WWW" и под ней добавляем строку "acpi_fakekey $KEY_CALC", что заставляет клавишу Fn+F4 работать как кнопку вызова калькулятора (на некоторых мультимедиа клавах такие кнопки есть). Теперь нажми Fn+F4. Ничего не работает? Вот и у меня тоже, для этого я и выполнил команду из шага 4, чтобы убедиться, что калькулятор не запустился (вдруг в фоне повис). Дело в том, что надо перезапустить демона acpid, что мы и делаем в шаге 5. Ну а теперь снова жмем Fn+F4 и радуемся (шаг 6 показывает, что калькулятор запустился).

Заключение или я еще не прощаюсь ;)
В этом посте показано, как можно настраивать Fn-клавиши на ноуте. Хоть настройка и производилась в ubuntu на ASUS'е M50Vc, но я уверен, что описанный здесь подход подойдет для любого ноута и linux/bsd системы. Также в этом посте был показан простейший пример (пере)настройки Fn-клавиш.
В следующем посте расскажу как я настроил для себя клавиши Fn+F и переключатель на лицевой панели ноута; при этом сделал так, чтобы система запоминала состояние этих клавиш и после перезагрузки восстанавливала их, т.е., например, если тачпад был выключен, то и после перезагрузки он будет выключен.

Читайте также: