Как отключить функцию «вставка средней кнопки мыши» во всех программах?


43

Мне не нравится вставлять среднюю кнопку мыши, потому что я часто получаю некомпилируемый код в Eclipse. Как я могу отключить это (во всех программах)? Я управляю Fedora.


4
Средний щелчок, чтобы вставить выделение, является фундаментальной частью работы X11; см. http://www.jwz.org/doc/x-cut-and-paste.html .
ephemient

1
@ Жиль: во всех программах. :)
Дерехх

4
Я не видел ни одного тривиального способа сделать это без полного удара по средней кнопке мыши, взлома Х или прикручивания к обычному буферу обмена, поэтому мое «решение» - просто научиться правильно использовать среднюю кнопку мыши. Невероятно удобно иметь возможность выделять текстовый URL в любом месте и переходить по нему, щелкая средним щелчком мыши в окне моего браузера (FF).
jw013

4
@ephemient "Средний щелчок, чтобы вставить выделение, по сути, является частью работы X11" ... еще тогда, когда у нас были оптические мыши Sun, которым для получения сигнала требовалось около 1 фунта давления на среднюю кнопку. Сегодня средняя кнопка находится на спусковом крючке и, кроме того, используется в качестве колеса, этот «фундаментальный» должен идти (как довольно много «фундаментальных» вещей в X между прочим)
Дэвид Тонхофер

3
Я чувствую, что возможность отключать все, что вы хотите, является еще более фундаментальным аспектом Linux.
Уэйн Блосс

Ответы:


25

Это решение будет работать глобально и сохранять функциональность средней мыши.

устанавливать xbindkeys xsel xdotool

Поместите это в ~/.xbindkeysrc

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

Reload xbindkeys -p

Запустить xbindkeysпри запуске, pkill xbindkeysчтобы остановить.


7
Спасибо!!! Я не могу поверить, что единственное рабочее решение - 0 голосов ровно 2 года.
Retr0id

4
Наконец, решение, которое работало для меня на Ubuntu Mate 17.10. Спасибо!
Дмитрий Франк

5
@spiil Я попробовал это решение, и оно достигает желаемого эффекта. Я щелкнул средней кнопкой мыши в текстовом поле, и ничего не произошло, но щелчок средней кнопкой мыши по ссылке и щелчок средней кнопкой мыши, чтобы закрыть вкладку, работают в Chromium, Firefox и Waterfox (трех протестированных браузерах).
user7214865

4
Прокрутка средней кнопкой, нажатой и удерживающей, больше не работает с этим решением: /
Marc.2377

2
Ты легенда. Я использовал среднюю кнопку на трекболе для прокрутки, но функциональность вставки сделала мою жизнь несчастной. Теперь он снова в ярких цветах, спасибо!
redsPL

16

В Fedora 24 вы можете установить gnome-tweak-toolс помощью следующей команды:

$ sudo dnf install gnome-tweak-tool

Откройте gnome-tweak-toolи перейдите на вкладку «Клавиатура и мышь» и отключите «Нажатие средней кнопкой мыши».


4
Это также доступно в Ubuntu 16.04: sudo apt-get install gnome-tweak-tool
Тиранин

1
Это влияет только на несколько программ, таких как gedit, gnome-Terminal и некоторые другие. Смотрите также комментарий на askubuntu.com/questions/4507/… .
Kvothe

11

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

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

Вы можете переназначить кнопку мыши 2 на другой номер. Приложения определяют левую, среднюю и правую кнопки мыши как кнопки 1, 2 и 3 соответственно. Поместите этот код в сценарий, который выполняется при запуске сеанса X (как это сделать, зависит от среды рабочего стола).

echo 'pointer = 1 6 3 4 5' | xmodmap -

1
Не работает. pastebin.com/0DYYMDLS
балки

@balki Странно. Это, безусловно, работает для меня. Чтобы выяснить, почему это не работает для вас, задайте новый вопрос. Обязательно укажите, какая у вас версия X.org (или другого X-сервера), какой дистрибутив вы используете, и какие устройства ввода подключены.
Жиль "ТАК - перестань быть злым"

2
Бьюсь об заклад, OP не волнует, является ли он стандартным (я знаю, что нет). Не имеет значения Действия кнопки мыши должны быть более легко настраиваемыми.
23

7

Мышь с колесиком прокрутки поддерживает событие нажатия средней кнопки при нажатии на колесо прокрутки. Это отличная функция, но вы можете найти ее раздражающей. К счастью, это можно отключить.

Во-первых, вам нужно знать идентификатор мыши, например так:

$ xinput list | grep 'id='

который печатает что-то вроде

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜ PixArt Dell MS116 USB Optical Mouse       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
  Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
  Power Button                              id=6    [slave  keyboard (3)]
  Video Bus                                 id=7    [slave  keyboard (3)]
  Power Button                              id=8    [slave  keyboard (3)]
  Sleep Button                              id=9    [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=10   [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=11   [slave  keyboard (3)]
  Eee PC WMI hotkeys                        id=13   [slave  keyboard (3)]

Моя мышь Dell Usb напечатана здесь, для которой id = 12

Итак, я могу просмотреть отображение моей кнопки мыши как:

$ xinput get-button-map 12

какие отпечатки

1 2 3 4 5 6 7 8 9 10 11 12

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

Я могу отключить среднюю кнопку мыши, установив ее на 0:

$ xinput set-button-map 12 1 0 3

Или я могу превратить среднюю кнопку мыши в левую кнопку мыши, установив для нее значение 1:

$ xinput set-button-map 12 1 1 3

ссылка ссылка https://wiki.ubuntu.com/X/Config/Input

у меня работает (kubuntu 18.04 LTS)


Отлично работает на тачпад в Slackware 14.2 (KDE).
Повелитель огня

Это лучше, чем любой из вышеперечисленных, которые начинаются с «скачать XX». Единственная проблема, с которой я столкнулся, заключается в том, что для xinput set-button-map 12 1 0 3вас установлены все кнопки (от 1 до 12 для этого экзамена xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12)
слепец

3

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

Сначала установите sxhkd и xsel .

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

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

И это в основном все.

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


Это по-прежнему позволяет использовать среднюю мышь для прокрутки. Хорошее решение! Для меня файл был в~/.config/sxhkd/sxhkdrc
Атнас

1

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

РЕДАКТИРОВАТЬ: (если не считать, как говорит Жиль, отключение кнопки мыши 2. Но у некоторых программ есть и другие варианты использования кнопки мыши 2, поэтому я бы не рекомендовал это).


1

РЕДАКТИРОВАТЬ: Я только что обнаружил проблему с решением, которое я опубликовал: в некоторых программах ( gitkпо крайней мере, не уверен, насколько распространенным оно является) это помешает работе выбора текста. Попробуйте, но если у вас есть проблемы с выделением текста в программе, которую вы регулярно используете, то решение состоит в том, чтобы прекратить использовать это.

Установите xselи запустите следующий сценарий оболочки:

#!/bin/sh
while true; do
    xsel -fin </dev/null
done

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

Он работает так, что выполняет xselи копирует -iсодержимое ( ) /dev/null, без разветвления на background ( -n), и фактически удерживает эту пустую строку в буфере вместо того, чтобы просто очистить ее и выйти ( -f). Каждый раз, когда он выходит, он снова вызывает xselс теми же параметрами. Так как xselбудет работать до тех пор, пока другая программа «не освободит ее от обязанности», скопировав что-то еще, она не будет постоянно создавать новые процессы, вместо этого поддерживая работу одного процесса точно до тех пор, пока он не понадобится снова. (Если у вас не запущено несколько экземпляров скрипта, но делать это не нужно.)

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


Спасибо! Я использую KDE, и это единственное решение, которое работает для меня.
Алосо

@ Также, пожалуйста, просто имейте в виду предостережение наверху. Если вам когда-либо не удается выделить текст в программе, то это наиболее вероятный виновник.
flarn2006

Да, я заметил эту проблему в диалоге «Сохранить файл» Firefox. Теперь я включаю этот скрипт только во время программирования.
Алосо

@ Алосо Хорошо, тогда; рад, что это все еще
полезно

0

Это мой сценарий. Ваши могут нуждаться в настройке

#!/bin/bash 
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo


id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
        for(i=1; i<=NF; i++) {
                tmp=match($i, /id=[0-9]+/)
                if(tmp) {
                        print $i
                }
        }
}' $1 |  tr -d '[:alpha:]='
)

echo fixing $id:

xinput set-button-map $id  1 10 2 4 5 6 7 8 9 3

echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.