Xbindkeys (Русский)
Xbindkeys - программа, позволяющая назначать команды клавишам (в том числе мультимедийным) или сочетаниям клавиш. Она не зависит от окружения рабочего стола и оконного менеджера.
Установка
Установите пакет xbindkeys.
Настройка
Создайте пустой файл ~/.xbindkeysrc
или создайте образец файла (обратите внимание, что в нем настроены некоторые сочетания клавиш, такие как Ctrl+f
, которые вы можете изменить или удалить):
$ xbindkeys -d > ~/.xbindkeysrc
Теперь вы можете редактировать его вручную, либо воспользоваться для настройки графической утилитой.
xbindkeys -p
для перезагрузки настроенного файла.Управление звуком
Вот пример конфигурационного файла, который связывает комбинации клавиш Fn на ноутбуке с командами pactl, которые регулируют громкость звука. Обратите внимание, что символ решетки (#) используется для создания комментариев.
# Увеличить громкость звука "pactl set-sink-volume @DEFAULT_SINK@ +1000" XF86AudioRaiseVolume
# Уменьшить громкость звука "pactl set-sink-volume @DEFAULT_SINK@ -1000" XF86AudioLowerVolume
# Отключить звук "pactl set-sink-mute @DEFAULT_SINK@ toggle" XF86AudioMute
Для получения информации о дополнительных командах смотрите PulseAudio (Русский)#Регулировка звука клавиатурой или ALSA#Keyboard volume control.
Управление яркостью
Также можно определить сочетания клавиш, чтобы управлять яркостью экрана.
# Увеличить яркость "xbacklight -inc 10" XF86MonBrightnessUp
# Уменьшить яркость "xbacklight -dec 10" XF86MonBrightnessDown
Графический способ
Для графической настройке установите пакет xbindkeys_config-gtk2AUR и запустите:
$ xbindkeys_config
Определение кодов клавиш
Чтобы найти код клавиши, введите следующую команду:
$ xbindkeys -k
Появится пустое окно. Нажмите кнопку, которой вы хотите назначить команду и xbindkeys выведет удобный фрагмент, который можно вставить в ~/.xbindkeysrc
. Например, пока окно открыто, нажмите Alt+o
и вы получите следующий вывод (результат может отличаться):
"(Scheme function)" m:0x8 + c:32 Alt + o
Первая строка представляет собой команду. Вторая содержит состояние (0x8) и код клавиши (32), о котором сообщает xev
. Третья строка содержит значение клавиш, связанные с указанным кодом. Чтобы использовать этот вывод, скопируйте одну из двух последних строк в ~/.xbindkeysrc
и замените "(Scheme function)" на команду, которую вы хотите использовать.
xbindkeys -mk
, чтобы держать открытым приглашение для ввода нескольких нажатий клавиш. Для выхода нажмите q
.Для определения клавиш мыши, вы можете использовать xev. Для получения дополнительной информации смотрите [1].
Постоянные изменения
После того как вы закончите настройку сочетаний клавиш, откройте файл xprofile или xinitrc (в зависимости от вашего оконного менеджера) и поместите
xbindkeys
перед строкой, которая запускает ваш оконный менеджер или окружение рабочего стола.
Имитация мультимедийных клавиш
XF86Audio* и другие мультимедийные клавиши [2] довольно хорошо реализованы в основных DE. Для клавиатур без таких клавиш вы можете имитировать их с помощью других клавиш.
# Уменьшить громкость звука при нажатии Super-minus "pactl set-sink-volume 0 -1000" m:0x50 + c:20 Mod2+Mod4 + minus
Однако для самого выполнения этих клавиш вы можете использовать такие инструменты, как xdotool (из официальных репозиториев) и xmacroAUR (из AUR). К сожалению, поскольку вы уже удерживаете некоторую клавишу-модификатор (например, Super или Shift), X распознает ввод как Super-XF86AudioLowerVolume
, который ничего не выполняет ничего полезного. Ниже приведен скрипт, основанный на утилитах xmacro и xmodmap из пакета xorg-xmodmap [3].
#!/bin/sh echo 'KeyStrRelease Super_L KeyStrRelease minus'
Это работает для одного вызова клавиши XF86AudioLowerVolume (если вы используете сочетание Super+minus
), а не для нескольких при условие, что вы не отпускаете клавишу Super. Однако, если вы хотите, чтобы это работало, добавьте следующую строку в конец скрипта:
echo 'KeyStrPress Super_L' | xmacroplay :0
С помощью этого модифицированного скрипта, если вы нажмете комбинацию клавиш достаточно быстро, ваша клавиша Super_L останется 'включенной' до следующего раза, когда вы ее нажмете, что может привести к некоторым интересным побочным эффектам. Просто нажмите Super_L снова, чтобы переключить его состояние, или используйте оригинальный скрипт, если хотите, чтобы все 'просто работало', и смиритесь с одним нажатием на громкость вверх/вниз.
Эти инструкции совместимы с большим количеством XF86 мультимедиа клавиш (полезними из них будут XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioPlay, XF86AudioPrev, XF86AudioNext).
Решение проблем
Если по какой-либо причине горячая клавиша, которую вы уже настроили в ~/.xbindkeysrc
не работает, откройте терминал и введите следующее:
$ xbindkeys -n
Нажимая на не рабочую горячую клавишу, вы можете увидеть любую ошибку xbindkeys (например: mistyped command/keycode,...).
Если команда для сочетания клавиш работает через xdotool в командной строке, но не при ее нажатие (это особенно заметно в gnome), добавьте "+ Release" к этой комбинации:
"xdotool key --clearmodifiers XF86AudioPlay" Mod2 + F7 + Release
Это заставит клавишу F7 воспроизвести/приостановить аудио. Где команда "xdotool" работает в командной строке. Если удалить "+ Release", сочетание клавиш не будет работать с xbindkeys.