Переназначение клавиш в Linux (Ubuntu)

Современные клавиатуры и мыши имеют множество дополнительных клавиш, назначение которых иногда не очень полезно или не удобно расположено. Иногда драйвера неправильно определяют кнопки. Поэтому приходится переназначать клавиши. Этим мы и займемся.

Для простых комбинации можно использовать стандартные настройки Ubuntu. Заходим в Настройки->Клавиатура и задаем комбинацию клавиш и команду к ней, ну и имя данного хоткея чтобы потом не путаться.


Если же вам недостаточно данного функционала, перед вами стоит более продвинутая задача то будем использовать более тонкие настройки.

Первым делом нужно получить код кнопок для которых планируется переназначение. Для этого используем утилиту xev. После запуска утилиты из командной строки, появится окошко в котором нужно протестировать кнопку. При этом в терминале будет выводится информация, включая коды, для нажимаемых клавиш.


Нас интересует параметр keycode, или иногда, для клавиш мыши это имя может иметь вид “button 8”.

Для считывания клавиш также подойдет xbindkeys о котором пойдет речь дальше.

После получения кода можно использовать утилиту xbindkeys для переназначения эффекта от нажатия.

Если xbindkeys не установлен:

sudo apt-get install xbindkeys

Также для переназначения одной комбинации клавиш в другую вам понадобится xautomation:
sudo apt-get install xautomation

после установки, нужно сгенерировать  дефолтный файл конфигурации:
xbindkeys --defaults > $HOME/.xbindkeysrc

Для считывания кодов xbindkeys -k:


Редактируем файл конфигурации в котором задаем параметры переназначения: nano $HOME/.xbindkeysrc
Формат файла: если строка начинается с “#”, строка является комментарием. Кстати в сгенерированом по дефолту файле много примеров в виде комментариев. Первая строка в правиле это выполняемая команда при нажатии, команда задается в кавычках, вторая строка это коды клавишь для которых будет производится команда из первой строки. Можно иметь множество таких пар: команда + код клавиш.

Примеры правил переназначения:
1. Запустить Firefox при нажатии Control + b:
"firefox"
Control+b

2. Симулирование нажатия Control + C (Копирование) при нажатии дополнительной клавиши мыши. Используем утилиту xautomation, b:9 – код дополнительной клавиши на мыши
"xte  'keydown Control_L' 'key c' 'keyup Control_L'"
b:9

после изменения файла лучше всего перезапустить xbindkeys:
killall xbindkeys
xbindkeys