Xbindkeys (Русский) - ArchWiki

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

Ссылки по теме

- Xmodmap (Русский)
- Sxhkd
- Xorg (Русский)#Автоматизация

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.

Categories:

- Keyboard configuration (Русский)
- X server (Русский)