Разработка

Как назначить "Копировать" и "Вставить" на боковые кнопки мыши в Linux (с поддержкой терминала)

Как назначить "Копировать" и "Вставить" на боковые кнопки мыши в Linux (с поддержкой терминала)

Многие современные мыши оснащены дополнительными боковыми кнопками. ��о умолчанию они часто не задействованы в 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!


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

🚀 Нужна помощь с сайтом на 1С-Битрикс или Аспро?

Я работаю удалённо по всей России и СНГ. Узнайте цены и условия для вашего города:

Все регионы →