Как мне отключить вставку щелчка средней кнопкой мыши?

Есть ли способ отключить поведение вставки средней кнопки мыши, которое присутствует здесь по умолчанию в gnome?

У меня чувствительное колесико мыши, и всякий раз, когда я прокручиваю текст, иногда оно случайным образом вставляет что-то в текст. Я теряю довольно много доверия, когда отправляю файл кому-то другому, в который вклеены случайные фрагменты текста.

Я видел, как решение это происходит путем сопоставления средней кнопки мыши с несуществующей кнопкой мыши, но это подразумевает полное избавление от средней кнопки мыши (т.Е. никакого закрытия вкладок, автоматического открытия ссылок на новую вкладку и т.д.). Я бы хотел, чтобы моя средняя кнопка мыши оставалась активной, просто отключите вставку.

Это также происходит, когда я прокручиваю текст с помощью сенсорной панели (случайно нажимаю двумя пальцами, не двигаясь, бац).

Таким образом, проблема не будет устранена просто заменой на новую мышь (на самом деле я считаю, что это происходит чаще с моей сенсорной панелью, чем с моей мышью).

Я использую gnome-tweak-tool для отключения вставки средней кнопки в Ubuntu 16.04.

  1. Установите его

    sudo apt install gnome-tweak-tool
  2. Запустите его, выполнив поиск "инструмент настройки" в установленных приложениях или просто введите gnome-tweak-tool в терминале.

  3. >Перейдите в раздел "Клавиатура и мышь" - "Вставить средним щелчком мыши".
  4. Выключить.

    screenshot

Это оно.

Или используя только CLI

gsettings set org.gnome.desktop.interface gtk-enable-primary-paste false

Протестировано 16.04.

Я понимаю, что это не совсем тот ответ, который вам нужен, но вы можете отключить это в Firefox (например, если вы не возражаете против этой функции в другом месте, но все же хотите, чтобы средний щелчок в Firefox открывал ссылки в новых вкладках)

В разделе about:config установите

middlemouse.contentLoadURL falsemiddlemouse.paste false

Не то, что вы спросили, но поскольку этот вопрос связан с несколькими местами, я надеюсь, что кто-то найдет этот ответ полезным.

Джаред Робинсон дал простое решение это работает на моей машине:

Выполните следующую команду:

xmodmap -e "pointer = 1 25 3 4 5 6 7 8 9"

Чтобы сохранить это поведение, отредактируйте ~/.Xmodmap и добавьте

pointer = 1 25 3 4 5 6 7 8 9

В настоящее время это невозможно - хотя, как вы уже упоминали, есть способы отключить кнопку МЫШИ 3 - или переназначить ее - ни один из них не попадает в источник проблемы. Первичный выбор X11.

Хотя это не решение, надеюсь, это объяснение прояснит, ПОЧЕМУ. В Ubuntu работают две видеокарты. Один, с которым все знакомы, - это freedesktop.org буфер обмена (захватывает Ctrl+C команда) Второй - это менеджер буфера обмена, который использовался еще до того, как появилась Ubuntu - X11. X-сервер (X11) управляет тремя другими клипбордами: Первичный отбор, Вторичный отбор, и Буфер обмена. Когда вы выделяете текст указателем, он копируется в буфер на сервере XServer, основной объект выделения, и ожидает вставки с помощью кнопки мыши 3. Два других были разработаны для использования другими приложениями в качестве средства совместного использования общего буфера обмена между приложениями. В этом случае freedesktop.org менеджер буфера обмена в Ubuntu уже делает это за нас.

Несмотря на все мои исследования, я не могу найти способ отключить диспетчер выбора X11. Нет никаких флагов компиляции, приложений или значений конфигурации, которые могли бы отключить это. Существуют различные способы обойти это для каждого приложения (большинство из этих приложений являются приложениями командной строки), но ничего в глобальном масштабе.

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

Первая установка xsel (Инструмент для манипулирования выделением X) sudo apt-get install xsel

Код выглядит следующим образом:

while(true)do    echo -n | xsel -n -i    sleep 0.5done

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

Каким-то образом я оказался без каких-либо файлов xmodmap в моей установке Ubuntu, поэтому мне пришлось найти другой подход к этой проблеме.

Взгляните на xinput команда.

xinput list | grep -i mouse

в котором содержится информация о вашей мыши. Это показывает, что моя мышь - "Dell Premium USB Optical Mouse", а также что у меня есть "Эмуляция кнопок мыши Macintosh". Вооруженный этой информацией, я могу

xinput get-button-map "Dell Premium USB Optical Mouse"

что дает мне список, который выглядит следующим образом

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Вот полезные, необходимые знания. У моей мыши, теоретически, 18 кнопок. Действие каждой кнопки по умолчанию имеет то же имя, что и номер кнопки. Другими словами, кнопка 1 выполняет действие 1, кнопка 4 выполняет действие 4 и т.д. Действие 0 означает "выключено".

То позиция в списке показана функция, назначенная этой кнопке. Так что, если моя карта кнопок читается

1 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

это означало бы, что кнопка 1 (позиция 1) выполняет действие 1 (обычная левая кнопка), кнопка 2 (позиция 2) выполняет действие 3 (средняя кнопка), а кнопка 3 (позиция 3) выполняет действие 2 (правая кнопка).

Чтобы сделать левую мышь, все, что вам нужно, - это карта кнопок, которая начинается

3 2 1 4 5 .....

Или, в вашем случае, похоже, что вы хотите, чтобы средняя кнопка выполняла то же самое, что и кнопка 1 (левая кнопка), поэтому ваша карта должна запуститься

1 1 3 ....

Я бы сбросил свои сопоставления кнопок мыши таким образом:

xinput set-button-map "Dell Premium USB Optical Mouse" 1 1 3 5 6 6 7 8 9 10 11 12 13 14 15 16 17 18

В вашем случае у вас может быть разное количество сопоставленных кнопок и уже определена какая-то специальная карта кнопок. Скорее всего, у вашей мыши тоже есть другое имя. Во-первых, получите "имя" вашей мыши. Затем используйте получить-кнопка-карта операция по поиску вашей базовой карты кнопок. наконец, используйте установить-кнопка-карта опция, изменение кнопки 2 для выполнения действия 1.

Это не постоянное изменение. Я добавил необходимый код в свой .bashrc таким образом, он выполняется каждый раз, когда я вхожу в систему или открываю терминал.

Надеюсь, это поможет.

Для решения этой проблемы, пожалуйста, ознакомьтесь с это руководство я написал:

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

Теперь некоторые могут спросить, зачем кому-то понадобилось его отключать? Есть несколько причин:

  • Средняя кнопка мыши на самом деле вставляет не так называемый буфер обмена XA_CLIPBOARD, а буфер обмена XA_PRIMARY. Это, вероятно, противоречит здравому смыслу для многих (возможно, пользователей, работающих в Windows), и поэтому некоторые могут счесть более удобным для пользователя отключить "непоследовательное" или неожиданное поведение.
  • Некоторые могут случайно вставить текст, используя среднюю кнопку мыши, и хотят избежать этого.

Немного информации о буфере обмена XA_CLIPBOARD и XA_PRIMARY: Буфер обмена XA_PRIMARY используется в основном для хранения выделений. Всякий раз, когда вы выделяете какой-либо текст, например, в текстовом редакторе GNOME (gedit), этот текст копируется в буфер обмена XA_PRIMARY. Этот текст является нет вставляется при использовании пункта меню "Редактировать -вставить", только при нажатии средней кнопки мыши. Буфер обмена XA_CLIPBOARD в основном используется, когда используется общая функция копирования/вставки (с помощью сочетаний клавиш, таких как CTRL +C и CTRL+V, или с помощью пунктов меню "Редактировать -Копировать" и "Редактировать -Вставить").

Возможно, патч такого рода (или более радикальные изменения в буфере обмена X и / или в том, как его используют библиотеки / приложения) может когда-нибудь стать стандартом в Linux. Я понимаю, что мнения по этому поводу сильно расходятся. Однако для людей, которые стремятся свести к минимуму вероятность случайной вставки какого-либо случайного текста, патч может быть весьма полезен. Например, с помощью исправления вы не сможете случайно вставить (по крайней мере, с помощью средней кнопки мыши) текст в редактируемый документ, или на веб-страницу, или в мгновенное сообщение и т.д.

Руководство предназначено для дистрибутивов Debian или Linux на основе Debian, таких как Ubuntu и Mint.

Ниже приведены команды терминала с кратким описанием того, что они делают (строки, начинающиеся с #, являются комментариями, которые содержат эти описания). Вы должны запустить терминал и вводить команды одну за другой, внимательно прочитав описания.

# This is a small guide that explains how to patch GTK so that the middle mouse# button doesn't paste text anymore.# NOTE:# The below instructions are for GTK2. However, they should be easy to adapt# for GTK3 (at the time of writing, the patch works fine for GTK3 too).# First, update the system by first synchronizing the package index files, and# then upgrading the packages.sudo apt-get updatesudo apt-get upgrade# Get the build dependencies and essential packages needed in order to compile# code and create packages.sudo apt-get build-dep libgtk2.0-0sudo apt-get install build-essential# Create a temporary directory, in which we will store the GTK sources and# later on the packages.mkdir /tmp/gtkcd /tmp/gtk# Download the actual patch that will disable the 'middle mouse button paste'# functionality (it should be stored in the directory '/tmp/gtk', and will be,# if you indeed executed the command 'cd /tmp/gtk').wget http://subversion.assembla.com/svn/slipstream/patches/gtk_disable_middle_mouse_button_paste.patch# Retrieve the GTK sources.apt-get source libgtk2.0-0# You should adapt this line so that it changes to the correct directory (the# name of the directory that I used here will probably not match the name of# the directory that was created during 'apt-get source libgtk2.0-0', as it# contains a version number that often changes). You can find out what the# correct directory is by entering 'ls -d */' (without the quotes) and looking# at the names of the directories that it shows.cd gtk+2.0-2.20.1# Apply the patch that we downloaded earlier.patch -p1 < /tmp/gtk/gtk_disable_middle_mouse_button_paste.patch# The output of the previous command should be:#     patching file gtk/gtkselection.c# If it wasn't, then something went wrong. Maybe you mistyped something, maybe# the current directory isn't the correct directory, maybe the GTK sources# were changed and the patch doesn't work anymore, etc.# Build the package (you may have to be patient, this may or may not take a# while).dpkg-buildpackage -uc -us --source-option=--auto-commit# You should adapt this line so that it installs the correct package. The# package that we want to install is the package containing the GTK library,# thus _not_ the 'bin', 'udeb', 'common', 'dev', or 'doc' package. To find out# what the exact package is that you should install, try to find the package (a# file with a name ending in '.deb') which is closest to the example filename I# used here (the packages are stored in '/tmp/gtk', and you can list the# packages using the command 'ls /tmp/gtk/*.deb' (without the quotes)).sudo dpkg -i ../libgtk2.0-0_2.20.1-2_i386.deb# And lastly, to make sure that only the patched library is in use, you should# either log out and back in, or restart your computer.# And then, the 'middle mouse button paste' functionality should be disabled.# To test whether it is, try selecting some text in the GNOME Text Editor, or# in a GNOME Terminal, and then press the middle mouse button while the cursor# hovers over some place where you can normally type text. If indeed no text# appears, then it appears that the patch worked.# If however, the patch did not work, try to re-read this document, to see if# you made any mistake. And if you did, you may want to either start all over# again (should be fail-safe), or continue with the guide from the point where# you made a mistake.

Или, более непосредственно, вот нашивка чтобы отключить функцию "вставка средней кнопки мыши" в GTK:

diff -ur gtk+2.0-2.20.1/gtk/gtkselection.c gtk+2.0-2.20.1-patched/gtk/gtkselection.c--- gtk+2.0-2.20.1/gtk/gtkselection.c   2010-05-01 22:14:29.000000000 -0500+++ gtk+2.0-2.20.1-patched/gtk/gtkselection.c   2011-09-17 10:45:37.000000000 -0500@@ -1065,6 +1065,24 @@   display = gtk_widget_get_display (widget);   owner_window = gdk_selection_owner_get_for_display (display, selection);+  if (selection == gdk_atom_intern("PRIMARY", TRUE)) {+      GtkSelectionData selection_data;++      selection_data.selection = selection;+      selection_data.target = target;+      selection_data.type = gdk_atom_intern("STRING", TRUE);+      selection_data.format = 8;+      selection_data.data = (unsigned char *)"";+      selection_data.length = 0;+      selection_data.display = display;++      gtk_selection_retrieval_report(info, selection_data.type,+              selection_data.format, selection_data.data,+              selection_data.length, time_);++      return TRUE;+  }+    if (owner_window != NULL)     {       GtkWidget *owner_widget;

Единственный ответ, который сработал для меня, был дан на https://unix.stackexchange.com/a/277488/288916 Радивариг (Все заслуги принадлежат ему). Обратите внимание, что мне пришлось внести одно изменение, чтобы заставить его работать:

Установка xbindkeys:

sudo apt-get install xbindkeys xsel xdotool

Создайте файл конфигурации для xbindkeys ~/.xbindkeysrc с текстом:

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"b:2

Загрузите файл конфигурации с помощью

xbindkeys -p

Добавьте эту строку в ~./bashrc так что xbindkeys всегда загружается при запуске.

Это то, что работает для меня, но Радивариг предлагает вместо этого использовать строку

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"    b:2 + Release

Этот последний вариант не работает для меня, но если одна из версий не работает, я предлагаю попробовать другую.

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


Обратите внимание, что для существующих ответов с одобрением либо они не отвечают на вопрос, вместо этого рассказывая вам, как полностью отключить среднюю кнопку мыши, либо они дают решение, которое работает только в нескольких программах (tweak-solution только в gedit и gnome terminal и нескольких других), либо они просто говорят это это невозможно.


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

Я предлагаю использовать один из них, который в основном хорошо работает для меня:

использование xbindkeys: всякий раз, когда нажимается средняя кнопка, очищайте основной буфер обмена. По крайней мере, в моей системе он очищается до того, как произойдет вставка.Подробности: создайте xbindkeys-config:

xbindkeys --defaults > $HOME/.xbindkeysrc

Вставьте следующую новую горячую клавишу:

"xclip -i /dev/null"        b:2``

Перезагрузите xbindkeys (например, убейте все xbindkeys;xbindkeys). Сделано.

использование xdotool: Очистите буфер обмена при изменении фокуса окна (должно работать с большинством windowmanagers). Подробности: Выполните следующую команду:

xdotool search --onlyvisible . behave %@ focus exec xclip -i /dev/null

Обратите внимание, что с помощью этой команды вы все равно можете использовать основной буфер обмена в том же окне или нажать middlemouse на другое окно перед его фокусировкой (если у вас не активирован "фокус следует за мышью" или что-то еще).

Вот самое простое решение, которое я нашел, чтобы сохранить функциональность среднего клика без вставки чего-либо.

Первая установка sxhkd и xsel.

Затем настройте ./.config/.sxhkd/sxhkdrc вот так

~button2    echo -n | xsel -n -i~control + c    echo -n | xsel -n -i~control + x    echo -n | xsel -n -i

И это, по сути, все.

Теперь запустите sxhkd (или настройте его на запуск при запуске). Теперь средняя мышь больше не будет ничего вставлять, но в остальном будет работать как обычно. (Пока вы используете только ctrl + c и ctrl + x для копирования объектов, то есть, если вы копируете объекты с помощью мыши, они могут вставить один раз, прежде чем вернуться к нормальному состоянию.)

Для приложений Gnome вы можете использовать gnome-tweaks (новое название gnome-tweak-tool пакет) на вкладке "Клавиатура и мышь" есть опция "Вставить средним щелчком мыши" или прямое редактирование опции org.gnome.desktop.interface/gtk-enable-primary-paste Gnome.

Для приложений KDE кажется, что существует эквивалентное решение.

Для всего X (включая приложения, отличные от Gnome) вы можете установить XMousePasteBlock который затем должен быть запущен (достаточно пользователем, root не требуется), чтобы работать. Это полностью отключает вставку среднего щелчка без отключения других функций среднего щелчка.

Действительно раздражающее поведение по умолчанию. Как вы его отключили?

У меня такая же проблема, и лично я считаю это гигантским недостатком безопасности. Копирование паролей и ключей не является чем-то необычным, а случайная вставка их на случайные веб-сайты при попытке прокрутки или запоминания - это настоящий кошмар.

Если ваша мышь записывает средние щелчки, в то время как вы просто хотите прокрутить, я бы посоветовал вам попробовать другую модель мыши (возможно, с более сильным нажимом на колесико). После нескольких лет использования Linux меня никогда не беспокоила ваша проблема, на самом деле вставка среднего щелчка оказалась весьма полезной :slight_smile:

@umpirsky Я бы вряд ли назвал это идиотским; однако я согласен, что это может быть довольно раздражающим (особенно при простой прокрутке в графической программе)

О, так что я не одинок в этой проблеме. Сначала я испугался моих случайных текстов, вставленных на некоторые входные данные на веб-сайтах, только через некоторое время понял, что это вызвано системой, и сопоставил действие вставки со средним щелчком мыши и ofc. это случайно происходит на моей мыши при прокрутке. Надеюсь, что в будущем это будет удалено по умолчанию.

@umpirsky: Пока не нашел подходящего способа отключить его.

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

gnome-tweak-tools - кстати, отключение среднего щелчка похоже на отключение сочетаний клавиш, купите мышь получше.

Какой идиот подумал, что это должно быть по умолчанию? Он должен быть вынужден кодировать в течение 8 часов подряд, не имея возможности отключить эту глупость.