Xbindkeys (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Xbindkeys. Дата последней синхронизации: 5 сентября 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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.