Многие современные мыши оснащены дополнительными боковыми кнопками. ��о умолчанию они часто не задействованы в Linux. Это руководство покажет, как назначить на них привычные действия “Копировать” и “Вставить”, причем сделать это “умно”: в обычных программах будут использоваться стандартные Ctrl+C / Ctrl+V, а в терминале — Ctrl+Shift+C / Ctrl+Shift+V.
Шаг 1: Установка необходимых утилит
Нам понадобятся две небольшие, но мощные программы: `xdotool` для имитации нажатий клавиш и `xbindkeys` для перехвата событий от мыши и клавиатуры. Откройте терминал и установите их:
sudo apt update
sudo apt install xdotool xbindkeys -y
Эта команда подходит для Debian, Ubuntu и их производных (например, Zorin OS, Mint).
Шаг 2: Определение номеров кнопок мыши
Теперь нужно узнать, какие номера система присвоила вашим боковым кнопкам. Выполните в терминале следующую команду. Появится небольшое белое окно. Не закрывая его, наведите курсор на это окно и нажмите поочередно на боковые кнопки мыши.
xev | grep button
В терминале вы увидите строки, похожие на эти. Нас интересуют цифры после слова `button`.
state 0x10, button 8, same_screen YES
state 0x10, button 9, same_screen YES
В данном примере мы получили кнопки **8** и **9**. Запомните свои номера. �� этой инструкции мы будем использовать `9` для копирования и `8` для вставки.
Шаг 3: Создание “умного” скрипта
Чтобы различать, где вы нажимаете кнопку — в браузере или в терминале, — мы напишем небольшой скрипт. Он будет определять активное окно и отправлять правильную комбинацию клавиш.
Создайте файл `/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh` и поместите в него следующий код:
#!/bin/bash
# Получаем класс активного окна
ACTIVE_WINDOW_CLASS=$(xprop -id $(xdotool getactivewindow) WM_CLASS | awk -F '"' '{print $4}')
# Список названий классов терминалов (можно дополнить)
TERMINALS="gnome-terminal konsole xterm Termius"
# Проверяем, является ли активное окно терминалом
IS_TERMINAL=false
for term in $TERMINALS; do
if [ "$ACTIVE_WINDOW_CLASS" == "$term" ]; then
IS_TERMINAL=true
break
fi
done
# Выполняем действие в зависимости от команды и типа окна
case "$1" in
copy)
if [ "$IS_TERMINAL" = true ]; then
xdotool key --clearmodifiers ctrl+shift+c
else
xdotool key --clearmodifiers ctrl+c
fi
;;
paste)
if [ "$IS_TERMINAL" = true ]; then
xdotool key --clearmodifiers ctrl+shift+v
else
xdotool key --clearmodifiers ctrl+v
fi
;;
esac
Сделайте этот скрипт исполняемым:
chmod +x ~/mouse_copy_paste.sh
Шаг 4: Настройка xbindkeys
Теперь укажем `xbindkeys`, чтобы он вызывал наш скрипт при нажатии кнопок мыши. Создайте или отредактируйте файл конфигурации `~/.xbindkeysrc`:
# Привязать кнопку 9 к "Копировать"
"/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh copy"
b:9
# Привязать кнопку 8 ко "Вставить"
"/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh paste"
b:8
**Важно:** Замените `ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ` на ваше реальное имя пользователя. Также замените `b:9` и `b:8` на номера кнопок, которые вы определили на Шаге 2.
Шаг 5: Применение настроек
Чтобы изменения вступили в силу, нужно перезапустить `xbindkeys`. Сначала остановим его, если он был запущен, а затем запустим снова.
killall xbindkeys
xbindkeys
Команда `killall` может выдать сообщение "процесс не найден" — это нормально. Теперь ваши боковые кнопки мыши должны работать как задумано!
Шаг 6: Автозагрузка
Чтобы не запускать `xbindkeys` вручную после каждой перезагрузки компьютера, добавим его в автозагрузку. Создайте следующий файл:
# Путь: ~/.config/autostart/xbindkeys.desktop
[Desktop Entry]
Name=Xbindkeys
Exec=xbindkeys
Terminal=false
Type=Application
Теперь все готово. Наслаждайтесь более удобной работой с мышью в Linux!